aboutsummaryrefslogtreecommitdiffstats
path: root/vendor
diff options
context:
space:
mode:
Diffstat (limited to 'vendor')
-rwxr-xr-xvendor/bin/naturalselection2
-rwxr-xr-xvendor/bin/sabredav2
-rw-r--r--vendor/brick/math/CHANGELOG.md18
-rw-r--r--vendor/brick/math/composer.json13
-rw-r--r--vendor/brick/math/src/BigDecimal.php54
-rw-r--r--vendor/brick/math/src/BigInteger.php48
-rw-r--r--vendor/brick/math/src/BigNumber.php235
-rw-r--r--vendor/brick/math/src/BigRational.php46
-rw-r--r--vendor/brick/math/src/Exception/NumberFormatException.php10
-rw-r--r--vendor/brick/math/src/Internal/Calculator.php44
-rw-r--r--vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php10
-rw-r--r--vendor/brick/math/src/Internal/Calculator/NativeCalculator.php27
-rw-r--r--vendor/brick/math/src/RoundingMode.php31
-rw-r--r--vendor/chillerlan/php-qrcode/.github/FUNDING.yml2
-rw-r--r--vendor/chillerlan/php-qrcode/.github/workflows/tests.yml82
-rw-r--r--vendor/chillerlan/php-qrcode/.gitignore5
-rw-r--r--vendor/chillerlan/php-qrcode/.phan/config.php55
-rw-r--r--vendor/chillerlan/php-qrcode/.phan/stubs/imagick.php6744
-rw-r--r--vendor/chillerlan/php-qrcode/.scrutinizer.yml16
-rw-r--r--vendor/chillerlan/php-qrcode/README.md239
-rw-r--r--vendor/chillerlan/php-qrcode/composer.json19
-rw-r--r--vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php38
-rw-r--r--vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php81
-rw-r--r--vendor/chillerlan/php-qrcode/examples/QRImageWithText.php100
-rw-r--r--vendor/chillerlan/php-qrcode/examples/custom_output.php38
-rw-r--r--vendor/chillerlan/php-qrcode/examples/example_image.pngbin2279 -> 0 bytes
-rw-r--r--vendor/chillerlan/php-qrcode/examples/example_svg.pngbin15925 -> 0 bytes
-rw-r--r--vendor/chillerlan/php-qrcode/examples/fpdf.php47
-rw-r--r--vendor/chillerlan/php-qrcode/examples/html.php102
-rw-r--r--vendor/chillerlan/php-qrcode/examples/image.php63
-rw-r--r--vendor/chillerlan/php-qrcode/examples/imageWithLogo.php45
-rw-r--r--vendor/chillerlan/php-qrcode/examples/imageWithText.php33
-rw-r--r--vendor/chillerlan/php-qrcode/examples/imagick.php59
-rw-r--r--vendor/chillerlan/php-qrcode/examples/octocat.pngbin2468 -> 0 bytes
-rw-r--r--vendor/chillerlan/php-qrcode/examples/svg.php78
-rw-r--r--vendor/chillerlan/php-qrcode/examples/text.php68
-rw-r--r--vendor/chillerlan/php-qrcode/phpdoc.xml20
-rw-r--r--vendor/chillerlan/php-qrcode/phpunit.xml26
-rw-r--r--vendor/chillerlan/php-qrcode/public/index.html163
-rw-r--r--vendor/chillerlan/php-qrcode/public/qrcode.php97
-rw-r--r--vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php18
-rw-r--r--vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php4
-rw-r--r--vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php12
-rwxr-xr-xvendor/chillerlan/php-qrcode/src/Data/QRMatrix.php87
-rw-r--r--vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php8
-rw-r--r--vendor/chillerlan/php-qrcode/src/Output/QRFpdf.php2
-rw-r--r--vendor/chillerlan/php-qrcode/src/Output/QRImage.php2
-rw-r--r--vendor/chillerlan/php-qrcode/src/Output/QRImagick.php2
-rw-r--r--vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php12
-rw-r--r--vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php5
-rw-r--r--vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php47
-rw-r--r--vendor/chillerlan/php-qrcode/src/Output/QRString.php4
-rwxr-xr-xvendor/chillerlan/php-qrcode/src/QRCode.php12
-rw-r--r--vendor/chillerlan/php-qrcode/src/QROptionsTrait.php4
-rw-r--r--vendor/chillerlan/php-settings-container/.github/FUNDING.yml2
-rw-r--r--vendor/chillerlan/php-settings-container/.github/workflows/tests.yml105
-rw-r--r--vendor/chillerlan/php-settings-container/.gitignore4
-rw-r--r--vendor/chillerlan/php-settings-container/.phan/config.php54
-rw-r--r--vendor/chillerlan/php-settings-container/.scrutinizer.yml14
-rw-r--r--vendor/chillerlan/php-settings-container/README.md99
-rw-r--r--vendor/chillerlan/php-settings-container/composer.json20
-rw-r--r--vendor/chillerlan/php-settings-container/docs/Readme.md13
-rw-r--r--vendor/chillerlan/php-settings-container/examples/advanced.php51
-rw-r--r--vendor/chillerlan/php-settings-container/examples/simple.php29
-rw-r--r--vendor/chillerlan/php-settings-container/phpdoc.xml20
-rw-r--r--vendor/chillerlan/php-settings-container/phpunit.xml26
-rw-r--r--vendor/chillerlan/php-settings-container/rules-magic-access.neon4
-rw-r--r--vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php114
-rw-r--r--vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php34
-rw-r--r--vendor/composer/InstalledVersions.php11
-rw-r--r--vendor/composer/autoload_classmap.php370
-rw-r--r--vendor/composer/autoload_files.php4
-rw-r--r--vendor/composer/autoload_psr4.php4
-rw-r--r--vendor/composer/autoload_static.php390
-rw-r--r--vendor/composer/installed.json652
-rw-r--r--vendor/composer/installed.php163
-rw-r--r--vendor/ezyang/htmlpurifier/VERSION2
-rw-r--r--vendor/ezyang/htmlpurifier/composer.json2
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php3
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier.php6
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php1
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php14
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ratio.php46
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php18
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php29
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php3
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php2
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema.ser2
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveBlanks.txt10
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php4
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php17
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php28
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php16
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php3
-rw-r--r--vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Tag.php2
-rw-r--r--vendor/paragonie/constant_time_encoding/README.md12
-rw-r--r--vendor/paragonie/constant_time_encoding/composer.json6
-rw-r--r--vendor/paragonie/constant_time_encoding/src/Base32.php56
-rw-r--r--vendor/paragonie/constant_time_encoding/src/Base64.php43
-rw-r--r--vendor/paragonie/constant_time_encoding/src/Binary.php9
-rw-r--r--vendor/paragonie/constant_time_encoding/src/Encoding.php108
-rw-r--r--vendor/paragonie/constant_time_encoding/src/Hex.php13
-rw-r--r--vendor/paragonie/constant_time_encoding/src/RFC4648.php62
-rw-r--r--vendor/phpseclib/phpseclib/BACKERS.md4
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php1
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php11
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/File/X509.php7
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php11
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php21
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php275
-rw-r--r--vendor/psr/clock/CHANGELOG.md11
-rw-r--r--vendor/psr/clock/LICENSE19
-rw-r--r--vendor/psr/clock/README.md61
-rw-r--r--vendor/psr/clock/composer.json21
-rw-r--r--vendor/psr/clock/src/ClockInterface.php13
-rw-r--r--vendor/psr/log/composer.json2
-rw-r--r--vendor/psr/log/src/LoggerAwareInterface.php6
-rw-r--r--vendor/psr/log/src/LoggerAwareTrait.php6
-rw-r--r--vendor/psr/log/src/LoggerInterface.php47
-rw-r--r--vendor/psr/log/src/LoggerTrait.php64
-rw-r--r--vendor/psr/log/src/NullLogger.php8
-rw-r--r--vendor/ramsey/collection/LICENSE2
-rw-r--r--vendor/ramsey/collection/README.md22
-rw-r--r--vendor/ramsey/collection/SECURITY.md70
-rw-r--r--vendor/ramsey/collection/composer.json117
-rw-r--r--vendor/ramsey/collection/conventional-commits.json22
-rw-r--r--vendor/ramsey/collection/src/AbstractArray.php60
-rw-r--r--vendor/ramsey/collection/src/AbstractCollection.php223
-rw-r--r--vendor/ramsey/collection/src/AbstractSet.php10
-rw-r--r--vendor/ramsey/collection/src/ArrayInterface.php4
-rw-r--r--vendor/ramsey/collection/src/Collection.php15
-rw-r--r--vendor/ramsey/collection/src/CollectionInterface.php112
-rw-r--r--vendor/ramsey/collection/src/DoubleEndedQueue.php129
-rw-r--r--vendor/ramsey/collection/src/DoubleEndedQueueInterface.php41
-rw-r--r--vendor/ramsey/collection/src/Exception/CollectionException.php21
-rw-r--r--vendor/ramsey/collection/src/Exception/CollectionMismatchException.php4
-rw-r--r--vendor/ramsey/collection/src/Exception/InvalidArgumentException.php4
-rw-r--r--vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php26
-rw-r--r--vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php22
-rw-r--r--vendor/ramsey/collection/src/Exception/NoSuchElementException.php4
-rw-r--r--vendor/ramsey/collection/src/Exception/OutOfBoundsException.php4
-rw-r--r--vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php4
-rw-r--r--vendor/ramsey/collection/src/Exception/ValueExtractionException.php22
-rw-r--r--vendor/ramsey/collection/src/Map/AbstractMap.php109
-rw-r--r--vendor/ramsey/collection/src/Map/AbstractTypedMap.php23
-rw-r--r--vendor/ramsey/collection/src/Map/AssociativeArrayMap.php3
-rw-r--r--vendor/ramsey/collection/src/Map/MapInterface.php57
-rw-r--r--vendor/ramsey/collection/src/Map/NamedParameterMap.php22
-rw-r--r--vendor/ramsey/collection/src/Map/TypedMap.php39
-rw-r--r--vendor/ramsey/collection/src/Map/TypedMapInterface.php3
-rw-r--r--vendor/ramsey/collection/src/Queue.php101
-rw-r--r--vendor/ramsey/collection/src/QueueInterface.php21
-rw-r--r--vendor/ramsey/collection/src/Set.php16
-rw-r--r--vendor/ramsey/collection/src/Sort.php31
-rw-r--r--vendor/ramsey/collection/src/Tool/TypeTrait.php48
-rw-r--r--vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php57
-rw-r--r--vendor/ramsey/collection/src/Tool/ValueToStringTrait.php13
-rw-r--r--vendor/ramsey/uuid/composer.json2
-rw-r--r--vendor/ramsey/uuid/src/Math/BrickMathCalculator.php6
-rwxr-xr-xvendor/sabre/dav/bin/googlecode_upload.py248
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Backend/PDO.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Calendar.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Notifications/Node.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Plugin.php4
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php15
-rw-r--r--vendor/sabre/dav/lib/CalDAV/SharingPlugin.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php2
-rw-r--r--vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php2
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php4
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Backend/PDO.php2
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Plugin.php2
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php2
-rw-r--r--vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Auth/Backend/PDOBasicAuth.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Auth/Plugin.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Browser/Plugin.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Exception/Locked.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/INodeByPath.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Server.php6
-rw-r--r--vendor/sabre/dav/lib/DAV/Sharing/Plugin.php2
-rw-r--r--vendor/sabre/dav/lib/DAV/Tree.php14
-rw-r--r--vendor/sabre/dav/lib/DAV/Version.php2
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Plugin.php2
-rw-r--r--vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php2
-rw-r--r--vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php2
-rw-r--r--vendor/sabre/event/.github/workflows/ci.yml63
-rw-r--r--vendor/sabre/event/.php-cs-fixer.dist.php18
-rw-r--r--vendor/sabre/event/.php_cs.dist12
-rw-r--r--vendor/sabre/event/composer.json6
-rw-r--r--vendor/sabre/event/lib/EmitterInterface.php4
-rw-r--r--vendor/sabre/event/lib/EmitterTrait.php4
-rw-r--r--vendor/sabre/event/lib/Loop/Loop.php4
-rw-r--r--vendor/sabre/event/lib/Loop/functions.php2
-rw-r--r--vendor/sabre/event/lib/Promise.php26
-rw-r--r--vendor/sabre/event/lib/Promise/functions.php5
-rw-r--r--vendor/sabre/event/lib/Version.php2
-rw-r--r--vendor/sabre/event/lib/WildcardEmitterTrait.php4
-rw-r--r--vendor/sabre/event/lib/coroutine.php15
-rw-r--r--vendor/sabre/event/phpstan.neon2
-rw-r--r--vendor/sabre/http/.github/workflows/ci.yml17
-rw-r--r--vendor/sabre/http/.gitignore1
-rw-r--r--vendor/sabre/http/.php-cs-fixer.dist.php17
-rw-r--r--vendor/sabre/http/CHANGELOG.md31
-rw-r--r--vendor/sabre/http/composer.json6
-rw-r--r--vendor/sabre/http/lib/Auth/AWS.php16
-rw-r--r--vendor/sabre/http/lib/Auth/Digest.php6
-rw-r--r--vendor/sabre/http/lib/Client.php15
-rw-r--r--vendor/sabre/http/lib/Request.php1
-rw-r--r--vendor/sabre/http/lib/Response.php3
-rw-r--r--vendor/sabre/http/lib/Sapi.php24
-rw-r--r--vendor/sabre/http/lib/Version.php2
-rw-r--r--vendor/sabre/http/lib/functions.php17
-rw-r--r--vendor/sabre/uri/.php-cs-fixer.dist.php6
-rw-r--r--vendor/sabre/uri/composer.json14
-rw-r--r--vendor/sabre/uri/lib/Version.php2
-rw-r--r--vendor/sabre/uri/lib/functions.php95
-rw-r--r--vendor/sabre/vobject/composer.json4
-rw-r--r--vendor/sabre/vobject/lib/Component/VCalendar.php2
-rw-r--r--vendor/sabre/vobject/lib/DateTimeParser.php4
-rw-r--r--vendor/sabre/vobject/lib/Document.php8
-rw-r--r--vendor/sabre/vobject/lib/FreeBusyGenerator.php4
-rw-r--r--vendor/sabre/vobject/lib/ITip/Broker.php32
-rw-r--r--vendor/sabre/vobject/lib/Parser/MimeDir.php8
-rw-r--r--vendor/sabre/vobject/lib/Property.php24
-rw-r--r--vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php4
-rw-r--r--vendor/sabre/vobject/lib/Property/ICalendar/Recur.php10
-rw-r--r--vendor/sabre/vobject/lib/Recur/EventIterator.php2
-rw-r--r--vendor/sabre/vobject/lib/Recur/RRuleIterator.php89
-rw-r--r--vendor/sabre/vobject/lib/TimeZoneUtil.php4
-rw-r--r--vendor/sabre/vobject/lib/Version.php2
-rw-r--r--vendor/sabre/xml/.github/workflows/ci.yml18
-rw-r--r--vendor/sabre/xml/.php-cs-fixer.dist.php17
-rw-r--r--vendor/sabre/xml/composer.json6
-rw-r--r--vendor/sabre/xml/lib/Deserializer/functions.php11
-rw-r--r--vendor/sabre/xml/lib/Element/Base.php4
-rw-r--r--vendor/sabre/xml/lib/Element/Elements.php2
-rw-r--r--vendor/sabre/xml/lib/Element/KeyValue.php2
-rw-r--r--vendor/sabre/xml/lib/Element/Uri.php2
-rw-r--r--vendor/sabre/xml/lib/Element/XmlFragment.php2
-rw-r--r--vendor/sabre/xml/lib/LibXMLException.php6
-rw-r--r--vendor/sabre/xml/lib/ParseException.php2
-rw-r--r--vendor/sabre/xml/lib/Reader.php8
-rw-r--r--vendor/sabre/xml/lib/Serializer/functions.php7
-rw-r--r--vendor/sabre/xml/lib/Service.php38
-rw-r--r--vendor/sabre/xml/lib/Version.php2
-rw-r--r--vendor/sabre/xml/lib/Writer.php6
-rw-r--r--vendor/sabre/xml/lib/XmlDeserializable.php2
-rw-r--r--vendor/scssphp/scssphp/src/Block/DirectiveBlock.php3
-rw-r--r--vendor/scssphp/scssphp/src/Block/EachBlock.php3
-rw-r--r--vendor/scssphp/scssphp/src/Block/ElseifBlock.php3
-rw-r--r--vendor/scssphp/scssphp/src/Block/ForBlock.php5
-rw-r--r--vendor/scssphp/scssphp/src/Block/IfBlock.php3
-rw-r--r--vendor/scssphp/scssphp/src/Block/MediaBlock.php3
-rw-r--r--vendor/scssphp/scssphp/src/Compiler.php42
-rw-r--r--vendor/scssphp/scssphp/src/Parser.php98
-rw-r--r--vendor/scssphp/scssphp/src/Type.php3
-rw-r--r--vendor/scssphp/scssphp/src/Version.php2
-rw-r--r--vendor/simplepie/simplepie/.php-cs-fixer.dist.php2
-rw-r--r--vendor/simplepie/simplepie/CHANGELOG.md17
-rw-r--r--vendor/simplepie/simplepie/README.markdown16
-rw-r--r--vendor/simplepie/simplepie/autoloader.php2
-rw-r--r--vendor/simplepie/simplepie/composer.json1
-rwxr-xr-xvendor/simplepie/simplepie/library/SimplePie.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Author.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/File.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php1
-rwxr-xr-xvendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php2
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Caption.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Category.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Copyright.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Core.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Credit.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Enclosure.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Exception.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/File.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/IRI.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Item.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Locator.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Misc.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Parser.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Rating.php1
-rwxr-xr-xvendor/simplepie/simplepie/library/SimplePie/Registry.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Restriction.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Sanitize.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Source.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php1
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/gzdecode.php1
-rw-r--r--vendor/simplepie/simplepie/src/Author.php1
-rw-r--r--vendor/simplepie/simplepie/src/Cache.php1
-rw-r--r--vendor/simplepie/simplepie/src/Cache/Base.php1
-rw-r--r--vendor/simplepie/simplepie/src/Cache/BaseDataCache.php5
-rw-r--r--vendor/simplepie/simplepie/src/Cache/DB.php9
-rw-r--r--vendor/simplepie/simplepie/src/Cache/DataCache.php1
-rw-r--r--vendor/simplepie/simplepie/src/Cache/File.php1
-rw-r--r--vendor/simplepie/simplepie/src/Cache/Memcache.php1
-rw-r--r--vendor/simplepie/simplepie/src/Cache/Memcached.php1
-rw-r--r--vendor/simplepie/simplepie/src/Cache/MySQL.php9
-rw-r--r--vendor/simplepie/simplepie/src/Cache/Psr16.php3
-rw-r--r--vendor/simplepie/simplepie/src/Cache/Redis.php1
-rw-r--r--vendor/simplepie/simplepie/src/Caption.php1
-rw-r--r--vendor/simplepie/simplepie/src/Category.php1
-rw-r--r--vendor/simplepie/simplepie/src/Content/Type/Sniffer.php1
-rw-r--r--vendor/simplepie/simplepie/src/Copyright.php1
-rw-r--r--vendor/simplepie/simplepie/src/Credit.php1
-rw-r--r--vendor/simplepie/simplepie/src/Enclosure.php17
-rw-r--r--vendor/simplepie/simplepie/src/Exception.php1
-rw-r--r--vendor/simplepie/simplepie/src/File.php1
-rw-r--r--vendor/simplepie/simplepie/src/Gzdecode.php3
-rw-r--r--vendor/simplepie/simplepie/src/HTTP/Parser.php1
-rw-r--r--vendor/simplepie/simplepie/src/IRI.php1
-rw-r--r--vendor/simplepie/simplepie/src/Item.php7
-rw-r--r--vendor/simplepie/simplepie/src/Locator.php1
-rw-r--r--vendor/simplepie/simplepie/src/Misc.php1
-rw-r--r--vendor/simplepie/simplepie/src/Net/IPv6.php1
-rw-r--r--vendor/simplepie/simplepie/src/Parse/Date.php1
-rw-r--r--vendor/simplepie/simplepie/src/Parser.php12
-rw-r--r--vendor/simplepie/simplepie/src/Rating.php1
-rw-r--r--vendor/simplepie/simplepie/src/Registry.php5
-rw-r--r--vendor/simplepie/simplepie/src/RegistryAware.php1
-rw-r--r--vendor/simplepie/simplepie/src/Restriction.php1
-rw-r--r--vendor/simplepie/simplepie/src/Sanitize.php17
-rw-r--r--vendor/simplepie/simplepie/src/SimplePie.php28
-rw-r--r--vendor/simplepie/simplepie/src/Source.php7
-rw-r--r--vendor/simplepie/simplepie/src/XML/Declaration/Parser.php1
-rw-r--r--vendor/smarty/smarty/CHANGELOG.md151
-rw-r--r--vendor/smarty/smarty/CONTRIBUTING.md119
-rw-r--r--vendor/smarty/smarty/Makefile19
-rw-r--r--vendor/smarty/smarty/README.md2
-rw-r--r--vendor/smarty/smarty/SECURITY.md6
-rw-r--r--vendor/smarty/smarty/TODO.txt32
-rw-r--r--vendor/smarty/smarty/composer.json14
-rw-r--r--vendor/smarty/smarty/demo/index.php8
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.apc.php85
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php99
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php183
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php346
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php42
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.extendsall.php62
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.mysql.php101
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.mysqls.php77
-rw-r--r--vendor/smarty/smarty/demo/templates/index.tpl2
-rw-r--r--vendor/smarty/smarty/docs/api/basics.md93
-rw-r--r--vendor/smarty/smarty/docs/api/caching/basics.md184
-rw-r--r--vendor/smarty/smarty/docs/api/caching/custom-storage-layers.md36
-rw-r--r--vendor/smarty/smarty/docs/api/caching/multiple-caches-per-template.md137
-rw-r--r--vendor/smarty/smarty/docs/api/configuring.md225
-rw-r--r--vendor/smarty/smarty/docs/api/extending/block-tags.md59
-rw-r--r--vendor/smarty/smarty/docs/api/extending/extensions.md101
-rw-r--r--vendor/smarty/smarty/docs/api/extending/introduction.md10
-rw-r--r--vendor/smarty/smarty/docs/api/extending/modifiers.md27
-rw-r--r--vendor/smarty/smarty/docs/api/extending/tags.md84
-rw-r--r--vendor/smarty/smarty/docs/api/filters/output-filters.md35
-rw-r--r--vendor/smarty/smarty/docs/api/filters/postfilters.md33
-rw-r--r--vendor/smarty/smarty/docs/api/filters/prefilters.md26
-rw-r--r--vendor/smarty/smarty/docs/api/inheritance.md130
-rw-r--r--vendor/smarty/smarty/docs/api/rendering.md86
-rw-r--r--vendor/smarty/smarty/docs/api/resources.md322
-rw-r--r--vendor/smarty/smarty/docs/api/security.md119
-rw-r--r--vendor/smarty/smarty/docs/api/variables/assigning.md139
-rw-r--r--vendor/smarty/smarty/docs/api/variables/config-files.md88
-rw-r--r--vendor/smarty/smarty/docs/api/variables/objects.md106
-rw-r--r--vendor/smarty/smarty/docs/api/variables/static-class-methods.md39
-rw-r--r--vendor/smarty/smarty/docs/api/variables/streams.md16
-rw-r--r--vendor/smarty/smarty/docs/appendixes/tips.md3
-rw-r--r--vendor/smarty/smarty/docs/designers/chapter-debugging-console.md3
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md8
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md9
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-math.md28
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-functions.md40
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md88
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-tags.md39
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md3
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions.md (renamed from vendor/sabre/event/bin/.empty)0
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/index.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md7
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md4
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md6
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md1
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md6
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md4
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md32
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md8
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md86
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md10
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md27
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/index.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md4
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md4
-rw-r--r--vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/index.md138
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md21
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md26
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md4
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md9
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md11
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md26
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md27
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md9
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md32
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-raw.md8
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md35
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md32
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md14
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md9
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md25
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md2
-rw-r--r--vendor/smarty/smarty/docs/designers/language-variables/index.md4
-rw-r--r--vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md4
-rw-r--r--vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md7
-rw-r--r--vendor/smarty/smarty/docs/features.md37
-rw-r--r--vendor/smarty/smarty/docs/getting-started.md58
-rw-r--r--vendor/smarty/smarty/docs/img/smarty.svg22
-rw-r--r--vendor/smarty/smarty/docs/index.md35
-rw-r--r--vendor/smarty/smarty/docs/philosophy.md8
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features.md14
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md99
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md43
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md40
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md36
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md144
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md27
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md15
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md128
-rw-r--r--vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md32
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions.md64
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/add-extension.md0
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md49
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md49
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md46
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-append.md3
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md42
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md3
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md2
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md2
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md2
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md2
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-display.md4
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md2
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md23
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md23
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md40
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md40
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md4
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md5
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md2
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md2
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md5
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md4
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md3
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md4
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md2
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md32
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md32
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md47
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md46
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md59
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md2
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables.md63
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md18
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md21
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md8
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md3
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md10
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md30
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md3
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md4
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md4
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md13
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md2
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md8
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md28
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md8
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md10
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md8
-rw-r--r--vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md49
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching.md24
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md176
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching/caching-custom.md296
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching/caching-groups.md60
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md87
-rw-r--r--vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md153
-rw-r--r--vendor/smarty/smarty/docs/programmers/charset.md44
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins.md44
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md95
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md66
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md94
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md18
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md48
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md86
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md51
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md48
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md89
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md128
-rw-r--r--vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md36
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources.md19
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/resources-custom.md111
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/resources-extends.md36
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/resources-file.md160
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/resources-streams.md27
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/resources-string.md73
-rw-r--r--vendor/smarty/smarty/docs/programmers/resources/template-resources.md130
-rw-r--r--vendor/smarty/smarty/docs/programmers/smarty-constants.md26
-rw-r--r--vendor/smarty/smarty/docs/upgrading.md129
-rw-r--r--vendor/smarty/smarty/lexer/smarty_internal_configfilelexer.plex318
-rw-r--r--vendor/smarty/smarty/lexer/smarty_internal_configfileparser.y346
-rw-r--r--vendor/smarty/smarty/lexer/smarty_internal_templatelexer.plex687
-rw-r--r--vendor/smarty/smarty/lexer/smarty_internal_templateparser.y1269
-rw-r--r--vendor/smarty/smarty/libs/Autoloader.php111
-rw-r--r--vendor/smarty/smarty/libs/Smarty.class.php1443
-rw-r--r--vendor/smarty/smarty/libs/bootstrap.php16
-rw-r--r--vendor/smarty/smarty/libs/debug.tpl173
-rw-r--r--vendor/smarty/smarty/libs/functions.php51
-rw-r--r--vendor/smarty/smarty/libs/plugins/block.textformat.php121
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.counter.php62
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.cycle.php92
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.fetch.php204
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php286
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_image.php158
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_options.php230
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_radios.php266
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_select_date.php395
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_select_time.php354
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_table.php164
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.mailto.php142
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.math.php142
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.capitalize.php147
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.count.php36
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.date_format.php86
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php103
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.escape.php189
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.explode.php25
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.implode.php15
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.mb_wordwrap.php71
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.number_format.php26
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php55
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.replace.php37
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.spacify.php26
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.truncate.php62
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php28
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php32
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php26
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php26
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php31
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php32
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php87
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php30
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php30
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.json_encode.php11
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php29
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.nl2br.php23
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php20
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.round.php23
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.str_repeat.php23
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php24
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php30
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php28
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.strlen.php23
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.substr.php12
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php30
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php52
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php28
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php39
-rw-r--r--vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php89
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php26
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php35
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php49
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php87
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php51
-rw-r--r--vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php19
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php219
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php297
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php538
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_data.php68
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php90
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php235
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php52
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php96
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php189
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php24
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php31
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php117
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php89
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php105
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php79
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php96
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php25
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php40
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php70
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php158
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php164
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php343
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php236
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php207
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php347
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php157
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php37
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php62
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php73
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php31
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php124
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php228
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php78
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php161
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php85
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php161
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php72
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php91
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php130
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php34
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php462
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php68
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php49
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php100
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php203
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php211
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php739
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php1046
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php272
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php428
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php114
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php197
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php53
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php74
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php49
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php36
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php44
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php36
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php41
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php43
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php50
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php131
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php41
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php36
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php130
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php182
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php44
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php37
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php34
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php58
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php35
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php35
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php47
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php44
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php50
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php63
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php119
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php100
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php77
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php111
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php50
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php46
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php43
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php88
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php87
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php84
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php58
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php39
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php72
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php41
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php38
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php43
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php40
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php43
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php40
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php41
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php40
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php51
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php50
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php95
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php67
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php169
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php57
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php94
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php126
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php180
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php116
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php78
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php108
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php68
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php139
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php174
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php103
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php69
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php162
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php181
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php251
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php54
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php177
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php183
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php115
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php91
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php184
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php741
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php401
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php1749
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php1095
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php2926
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php605
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php67
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource.php260
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php104
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php94
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php49
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_security.php680
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php257
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php257
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php100
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php152
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php213
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php33
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_variable.php48
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php73
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smartyexception.php19
-rw-r--r--vendor/smarty/smarty/mkdocs.yml64
-rwxr-xr-xvendor/smarty/smarty/run-tests-for-all-php-versions.sh18
-rw-r--r--vendor/smarty/smarty/src/BlockHandler/Base.php19
-rw-r--r--vendor/smarty/smarty/src/BlockHandler/BlockHandlerInterface.php10
-rw-r--r--vendor/smarty/smarty/src/BlockHandler/BlockPluginWrapper.php19
-rw-r--r--vendor/smarty/smarty/src/BlockHandler/TextFormat.php110
-rw-r--r--vendor/smarty/smarty/src/Cacheresource/Base.php156
-rw-r--r--vendor/smarty/smarty/src/Cacheresource/Custom.php303
-rw-r--r--vendor/smarty/smarty/src/Cacheresource/File.php338
-rw-r--r--vendor/smarty/smarty/src/Cacheresource/KeyValueStore.php541
-rw-r--r--vendor/smarty/smarty/src/Compile/Base.php233
-rw-r--r--vendor/smarty/smarty/src/Compile/BlockCompiler.php228
-rw-r--r--vendor/smarty/smarty/src/Compile/CompilerInterface.php26
-rw-r--r--vendor/smarty/smarty/src/Compile/DefaultHandlerBlockCompiler.php29
-rw-r--r--vendor/smarty/smarty/src/Compile/DefaultHandlerFunctionCallCompiler.php47
-rw-r--r--vendor/smarty/smarty/src/Compile/FunctionCallCompiler.php79
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/BCPluginWrapper.php19
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/Base.php49
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/CatModifierCompiler.php25
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/CountCharactersModifierCompiler.php21
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/CountParagraphsModifierCompiler.php19
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/CountSentencesModifierCompiler.php19
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/CountWordsModifierCompiler.php20
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/DefaultModifierCompiler.php26
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/EmptyModifierCompiler.php19
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/EscapeModifierCompiler.php66
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/FromCharsetModifierCompiler.php21
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/IndentModifierCompiler.php24
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/IsArrayModifierCompiler.php19
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/IssetModifierCompiler.php25
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/JsonEncodeModifierCompiler.php14
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/LowerModifierCompiler.php19
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/ModifierCompilerInterface.php17
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/Nl2brModifierCompiler.php17
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/NoPrintModifierCompiler.php18
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/RawModifierCompiler.php21
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/RoundModifierCompiler.php18
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/StrRepeatModifierCompiler.php17
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/StringFormatModifierCompiler.php18
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/StripModifierCompiler.php24
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/StripTagsModifierCompiler.php22
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/StrlenModifierCompiler.php18
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/SubstrModifierCompiler.php15
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/ToCharsetModifierCompiler.php21
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/UnescapeModifierCompiler.php34
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/UpperModifierCompiler.php18
-rw-r--r--vendor/smarty/smarty/src/Compile/Modifier/WordWrapModifierCompiler.php27
-rw-r--r--vendor/smarty/smarty/src/Compile/ModifierCompiler.php95
-rw-r--r--vendor/smarty/smarty/src/Compile/ObjectMethodBlockCompiler.php44
-rw-r--r--vendor/smarty/smarty/src/Compile/ObjectMethodCallCompiler.php76
-rw-r--r--vendor/smarty/smarty/src/Compile/PrintExpressionCompiler.php96
-rw-r--r--vendor/smarty/smarty/src/Compile/SpecialVariableCompiler.php134
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Append.php58
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Assign.php95
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/BCPluginWrapper.php31
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Block.php92
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/BlockClose.php110
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/BreakTag.php123
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Call.php81
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Capture.php72
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/CaptureClose.php43
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ConfigLoad.php77
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ContinueTag.php27
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Debug.php45
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ElseIfTag.php86
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ElseTag.php29
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/EvalTag.php74
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ExtendsTag.php87
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ForClose.php51
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ForElse.php30
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ForTag.php101
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ForeachClose.php55
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ForeachElse.php35
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ForeachSection.php206
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/ForeachTag.php286
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/FunctionClose.php164
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/FunctionTag.php73
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/IfClose.php48
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/IfTag.php70
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/IncludeTag.php189
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Inheritance.php54
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Ldelim.php41
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Nocache.php36
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/NocacheClose.php37
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Rdelim.php36
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Section.php399
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/SectionClose.php48
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/SectionElse.php29
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/Setfilter.php40
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/SetfilterClose.php43
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/WhileClose.php45
-rw-r--r--vendor/smarty/smarty/src/Compile/Tag/WhileTag.php72
-rw-r--r--vendor/smarty/smarty/src/Compiler/BaseCompiler.php23
-rw-r--r--vendor/smarty/smarty/src/Compiler/CodeFrame.php126
-rw-r--r--vendor/smarty/smarty/src/Compiler/Configfile.php173
-rw-r--r--vendor/smarty/smarty/src/Compiler/Template.php1512
-rw-r--r--vendor/smarty/smarty/src/CompilerException.php73
-rw-r--r--vendor/smarty/smarty/src/Data.php521
-rw-r--r--vendor/smarty/smarty/src/Debug.php370
-rw-r--r--vendor/smarty/smarty/src/ErrorHandler.php97
-rw-r--r--vendor/smarty/smarty/src/Exception.php16
-rw-r--r--vendor/smarty/smarty/src/Extension/BCPluginsAdapter.php229
-rw-r--r--vendor/smarty/smarty/src/Extension/Base.php41
-rw-r--r--vendor/smarty/smarty/src/Extension/CallbackWrapper.php35
-rw-r--r--vendor/smarty/smarty/src/Extension/CoreExtension.php49
-rw-r--r--vendor/smarty/smarty/src/Extension/DefaultExtension.php757
-rw-r--r--vendor/smarty/smarty/src/Extension/ExtensionInterface.php83
-rw-r--r--vendor/smarty/smarty/src/Filter/FilterInterface.php9
-rw-r--r--vendor/smarty/smarty/src/Filter/FilterPluginWrapper.php15
-rw-r--r--vendor/smarty/smarty/src/Filter/Output/TrimWhitespace.php91
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php21
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/Base.php21
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/Count.php36
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/Counter.php61
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/Cycle.php90
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/Fetch.php203
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php10
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/HtmlBase.php107
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php189
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/HtmlImage.php149
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/HtmlOptions.php223
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/HtmlRadios.php174
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php381
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php334
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/HtmlTable.php161
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/Mailto.php141
-rw-r--r--vendor/smarty/smarty/src/FunctionHandler/Math.php140
-rw-r--r--vendor/smarty/smarty/src/Lexer/ConfigfileLexer.php707
-rw-r--r--vendor/smarty/smarty/src/Lexer/ConfigfileLexer.plex321
-rw-r--r--vendor/smarty/smarty/src/Lexer/TemplateLexer.php1083
-rw-r--r--vendor/smarty/smarty/src/Lexer/TemplateLexer.plex677
-rw-r--r--vendor/smarty/smarty/src/ParseTree/Base.php45
-rw-r--r--vendor/smarty/smarty/src/ParseTree/Code.php45
-rw-r--r--vendor/smarty/smarty/src/ParseTree/Dq.php97
-rw-r--r--vendor/smarty/smarty/src/ParseTree/DqContent.php44
-rw-r--r--vendor/smarty/smarty/src/ParseTree/Tag.php70
-rw-r--r--vendor/smarty/smarty/src/ParseTree/Template.php172
-rw-r--r--vendor/smarty/smarty/src/ParseTree/Text.php59
-rw-r--r--vendor/smarty/smarty/src/Parser/ConfigfileParser.php972
-rw-r--r--vendor/smarty/smarty/src/Parser/ConfigfileParser.y352
-rw-r--r--vendor/smarty/smarty/src/Parser/TemplateParser.php3171
-rw-r--r--vendor/smarty/smarty/src/Parser/TemplateParser.y1390
-rw-r--r--vendor/smarty/smarty/src/Resource/BasePlugin.php145
-rw-r--r--vendor/smarty/smarty/src/Resource/CustomPlugin.php105
-rw-r--r--vendor/smarty/smarty/src/Resource/ExtendsPlugin.php116
-rw-r--r--vendor/smarty/smarty/src/Resource/FilePlugin.php183
-rw-r--r--vendor/smarty/smarty/src/Resource/RecompiledPlugin.php50
-rw-r--r--vendor/smarty/smarty/src/Resource/StreamPlugin.php71
-rw-r--r--vendor/smarty/smarty/src/Resource/StringEval.php85
-rw-r--r--vendor/smarty/smarty/src/Resource/StringPlugin.php94
-rw-r--r--vendor/smarty/smarty/src/Runtime/Block.php92
-rw-r--r--vendor/smarty/smarty/src/Runtime/CaptureRuntime.php163
-rw-r--r--vendor/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php73
-rw-r--r--vendor/smarty/smarty/src/Runtime/ForeachRuntime.php160
-rw-r--r--vendor/smarty/smarty/src/Runtime/InheritanceRuntime.php243
-rw-r--r--vendor/smarty/smarty/src/Runtime/TplFunctionRuntime.php144
-rw-r--r--vendor/smarty/smarty/src/Security.php560
-rw-r--r--vendor/smarty/smarty/src/Smarty.php2239
-rw-r--r--vendor/smarty/smarty/src/Template.php732
-rw-r--r--vendor/smarty/smarty/src/Template/Cached.php428
-rw-r--r--vendor/smarty/smarty/src/Template/Compiled.php305
-rw-r--r--vendor/smarty/smarty/src/Template/Config.php36
-rw-r--r--vendor/smarty/smarty/src/Template/GeneratedPhpFile.php159
-rw-r--r--vendor/smarty/smarty/src/Template/Source.php285
-rw-r--r--vendor/smarty/smarty/src/TemplateBase.php425
-rw-r--r--vendor/smarty/smarty/src/TestInstall.php211
-rw-r--r--vendor/smarty/smarty/src/UndefinedVariable.php19
-rw-r--r--vendor/smarty/smarty/src/Variable.php118
-rw-r--r--vendor/smarty/smarty/src/debug.tpl174
-rw-r--r--vendor/smarty/smarty/src/functions.php253
-rw-r--r--vendor/spomky-labs/otphp/README.md1
-rw-r--r--vendor/spomky-labs/otphp/composer.json16
-rw-r--r--vendor/spomky-labs/otphp/src/Factory.php21
-rw-r--r--vendor/spomky-labs/otphp/src/HOTP.php8
-rw-r--r--vendor/spomky-labs/otphp/src/HOTPInterface.php5
-rw-r--r--vendor/spomky-labs/otphp/src/InternalClock.php19
-rw-r--r--vendor/spomky-labs/otphp/src/OTP.php16
-rw-r--r--vendor/spomky-labs/otphp/src/OTPInterface.php5
-rw-r--r--vendor/spomky-labs/otphp/src/ParameterTrait.php2
-rw-r--r--vendor/spomky-labs/otphp/src/TOTP.php92
-rw-r--r--vendor/spomky-labs/otphp/src/TOTPInterface.php14
-rw-r--r--vendor/spomky-labs/otphp/src/Url.php3
-rw-r--r--vendor/symfony/deprecation-contracts/CHANGELOG.md5
-rw-r--r--vendor/symfony/deprecation-contracts/LICENSE19
-rw-r--r--vendor/symfony/deprecation-contracts/README.md26
-rw-r--r--vendor/symfony/deprecation-contracts/composer.json35
-rw-r--r--vendor/symfony/deprecation-contracts/function.php27
-rw-r--r--vendor/symfony/polyfill-mbstring/LICENSE19
-rw-r--r--vendor/symfony/polyfill-mbstring/Mbstring.php1045
-rw-r--r--vendor/symfony/polyfill-mbstring/README.md13
-rw-r--r--vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php119
-rw-r--r--vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php1397
-rw-r--r--vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php5
-rw-r--r--vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php1489
-rw-r--r--vendor/symfony/polyfill-mbstring/bootstrap.php172
-rw-r--r--vendor/symfony/polyfill-mbstring/bootstrap80.php167
-rw-r--r--vendor/symfony/polyfill-mbstring/composer.json38
-rw-r--r--vendor/symfony/polyfill-php81/LICENSE19
-rw-r--r--vendor/symfony/polyfill-php81/Php81.php37
-rw-r--r--vendor/symfony/polyfill-php81/README.md18
-rw-r--r--vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php51
-rw-r--r--vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php20
-rw-r--r--vendor/symfony/polyfill-php81/bootstrap.php28
-rw-r--r--vendor/symfony/polyfill-php81/composer.json33
-rw-r--r--vendor/twbs/bootstrap-icons/.browserslistrc11
-rw-r--r--vendor/twbs/bootstrap-icons/.editorconfig11
-rw-r--r--vendor/twbs/bootstrap-icons/.eslintignore4
-rw-r--r--vendor/twbs/bootstrap-icons/.eslintrc.json34
-rw-r--r--vendor/twbs/bootstrap-icons/.fantasticonrc.js32
-rw-r--r--vendor/twbs/bootstrap-icons/.gitattributes2
-rw-r--r--vendor/twbs/bootstrap-icons/.github/ISSUE_TEMPLATE/bug_report.md16
-rw-r--r--vendor/twbs/bootstrap-icons/.github/ISSUE_TEMPLATE/icon-request.md10
-rw-r--r--vendor/twbs/bootstrap-icons/.github/codeql/codeql-config.yml3
-rw-r--r--vendor/twbs/bootstrap-icons/.github/dependabot.yml17
-rw-r--r--vendor/twbs/bootstrap-icons/.github/preview.pngbin0 -> 247622 bytes
-rw-r--r--vendor/twbs/bootstrap-icons/.github/release-drafter.yml33
-rw-r--r--vendor/twbs/bootstrap-icons/.github/workflows/codeql.yml44
-rw-r--r--vendor/twbs/bootstrap-icons/.github/workflows/deploy.yml63
-rw-r--r--vendor/twbs/bootstrap-icons/.github/workflows/lint.yml37
-rw-r--r--vendor/twbs/bootstrap-icons/.github/workflows/release-notes.yml23
-rw-r--r--vendor/twbs/bootstrap-icons/.github/workflows/test.yml51
-rw-r--r--vendor/twbs/bootstrap-icons/.gitignore12
-rw-r--r--vendor/twbs/bootstrap-icons/.stylelintrc.json15
-rw-r--r--vendor/twbs/bootstrap-icons/LICENSE21
-rw-r--r--vendor/twbs/bootstrap-icons/README.md100
-rw-r--r--vendor/twbs/bootstrap-icons/bootstrap-icons.svg1
-rw-r--r--vendor/twbs/bootstrap-icons/build/build-pages.mjs64
-rw-r--r--vendor/twbs/bootstrap-icons/build/build-svgs.mjs57
-rw-r--r--vendor/twbs/bootstrap-icons/build/bump-version.mjs100
-rw-r--r--vendor/twbs/bootstrap-icons/build/check-icons.mjs61
-rw-r--r--vendor/twbs/bootstrap-icons/build/font/css.hbs30
-rw-r--r--vendor/twbs/bootstrap-icons/build/font/scss.hbs43
-rw-r--r--vendor/twbs/bootstrap-icons/build/vnu-jar.mjs50
-rw-r--r--vendor/twbs/bootstrap-icons/composer.json21
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/js/application.js65
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/js/color-modes.js79
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/js/search.js63
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/scss/_ads.scss54
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/scss/_buttons.scss45
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/scss/_clipboard-js.scss35
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/scss/_footer.scss16
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/scss/_navbar.scss113
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/scss/_skippy.scss17
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/scss/_syntax.scss135
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/scss/_variables.scss15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/assets/scss/docs.scss237
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/404.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/_index.md227
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/0-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/0-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/0-square-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/0-square.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/1-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/1-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/1-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/1-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/123.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/2-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/2-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/2-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/2-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/3-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/3-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/3-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/3-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/4-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/4-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/4-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/4-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/5-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/5-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/5-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/5-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/6-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/6-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/6-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/6-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/7-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/7-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/7-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/7-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/8-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/8-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/8-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/8-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/9-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/9-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/9-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/9-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/activity.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/airplane-engines-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/airplane-engines.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/airplane-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/airplane.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/alarm-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/alarm.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/alexa.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/align-bottom.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/align-center.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/align-end.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/align-middle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/align-start.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/align-top.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/alipay.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/alphabet-uppercase.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/alphabet.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/alt.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/amazon.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/amd.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/android.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/android2.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/app-indicator.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/app.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/apple.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/archive-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/archive.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-down.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-left.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-right.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-up.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-down.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-up.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-clockwise.md16
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-counterclockwise.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-short.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-up.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-short.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-repeat.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-return-left.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-return-right.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-short.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-through-heart-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-through-heart.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-short.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrows-angle-contract.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrows-angle-expand.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrows-collapse-vertical.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrows-collapse.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrows-expand-vertical.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrows-expand.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrows-fullscreen.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrows-move.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrows-vertical.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/arrows.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/aspect-ratio-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/aspect-ratio.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/asterisk.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/at.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/award-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/award.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/back.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backpack-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backpack.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backpack2-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backpack2.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backpack3-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backpack3.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backpack4-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backpack4.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backspace-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backspace-reverse-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backspace-reverse.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/backspace.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-3d-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-3d.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-4k-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-4k.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-8k-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-8k.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-ad-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-ad.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-ar-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-ar.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-cc-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-cc.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-hd-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-hd.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-sd-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-sd.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-tm-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-tm.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-vo-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-vo.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-vr-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-vr.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-wc-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/badge-wc.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag-check-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag-check.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag-dash-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag-dash.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag-heart-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag-heart.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag-plus-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag-plus.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag-x-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag-x.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bag.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/balloon-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/balloon-heart-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/balloon-heart.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/balloon.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ban-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ban.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bandaid-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bandaid.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bank.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bank2.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-line-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-line.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-steps.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/basket-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/basket.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/basket2-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/basket2.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/basket3-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/basket3.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/battery-charging.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/battery-full.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/battery-half.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/battery.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/behance.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bell-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bell-slash-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bell-slash.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bell.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bezier.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bezier2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bicycle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bing.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/binoculars-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/binoculars.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/blockquote-left.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/blockquote-right.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bluetooth.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/body-text.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/book-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/book-half.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/book.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-check-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-check.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-dash-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-dash.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-heart-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-heart.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-plus-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-plus.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-star-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-star.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-x-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-x.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmark.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmarks-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookmarks.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bookshelf.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/boombox-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/boombox.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap-reboot.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border-all.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border-bottom.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border-center.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border-inner.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border-middle.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border-outer.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border-style.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border-top.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border-width.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/border.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bounding-box-circles.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bounding-box.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-left.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-right.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-left.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-right.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up-left.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up-right.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-seam-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box-seam.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box2-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box2-heart-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box2-heart.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/box2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/boxes.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/braces-asterisk.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/braces.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bricks.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/briefcase-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/briefcase.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-high-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-high.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-low-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-low.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/brightness-high-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/brightness-high.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/brightness-low-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/brightness-low.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/brilliance.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/broadcast-pin.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/broadcast.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/browser-chrome.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/browser-edge.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/browser-firefox.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/browser-safari.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/brush-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/brush.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bucket-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bucket.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bug-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bug.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-add.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-check.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-dash.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-down.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-exclamation.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-add.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-check.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-dash.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-down.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-exclamation.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-gear.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-lock.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-slash.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-up.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-x.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-gear.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-lock.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-slash.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-up.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building-x.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/building.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/buildings-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/buildings.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bullseye.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bus-front-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/bus-front.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/c-circle-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/c-circle.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/c-square-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/c-square.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cake-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cake.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cake2-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cake2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calculator-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calculator.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-check-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-check.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-date-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-date.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-day-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-day.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-event-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-event.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-heart-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-heart.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-minus-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-minus.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-month-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-month.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-plus-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-plus.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-range-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-range.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-week-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-week.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-x-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar-x.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-check-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-check.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-date-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-date.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-day-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-day.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-event-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-event.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-heart-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-heart.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-minus-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-minus.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-month-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-month.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-plus-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-plus.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-range-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-range.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-week-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-week.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-x-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-x.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-event-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-event.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-range-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-range.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-week-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-week.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar3.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-event.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-range.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-week.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/calendar4.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/camera-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/camera-reels-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/camera-reels.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-off-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-off.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/camera-video.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/camera.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/camera2.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/capslock-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/capslock.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/capsule-pill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/capsule.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/car-front-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/car-front.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/card-checklist.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/card-heading.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/card-image.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/card-list.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/card-text.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-square-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-square.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-down.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-square-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-square.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-left.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-square-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-square.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-right.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-square-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-square.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/caret-up.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart-check-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart-check.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart-dash-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart-dash.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart-plus-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart-plus.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart-x-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart-x.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart2.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart3.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cart4.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cash-coin.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cash-stack.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cash.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cassette-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cassette.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cast.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cc-circle-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cc-circle.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cc-square-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cc-square.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-dots-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-dots.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-heart-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-heart.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-dots-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-dots.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-heart-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-heart.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-quote-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-quote.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-text-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-text.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-left.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-quote-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-quote.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-dots-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-dots.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-heart-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-heart.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-quote-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-quote.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-text-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-text.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-right.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-dots-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-dots.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-heart-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-heart.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-quote-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-quote.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-text-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-text.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-square.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-text-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat-text.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chat.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/check-all.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/check-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/check-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/check-lg.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/check-square-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/check-square.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/check.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/check2-all.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/check2-circle.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/check2-square.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/check2.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-contract.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-down.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-expand.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-up.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-down.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-up.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-contract.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-down.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-up.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-down.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-expand.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-left.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-right.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/chevron-up.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/circle-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/circle-half.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/circle-square.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/circle.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-check-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-check.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-data-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-data.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-heart-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-heart.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-minus-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-minus.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-plus-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-plus.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-pulse.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-x-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-x.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-check-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-check.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-data-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-data.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-heart-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-heart.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-minus-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-minus.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-plus-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-plus.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-pulse-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-pulse.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-x-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-x.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clock-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clock-history.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clock.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-down-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-down.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-up-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-up.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-check-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-check.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-download-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-download.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-drizzle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-drizzle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog2-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog2.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-hail-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-hail.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze2-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze2.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-rain-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-rain.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-minus-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-minus.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-moon-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-moon.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-plus-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-plus.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-heavy-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-heavy.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-slash-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-slash.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sleet-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sleet.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-snow-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-snow.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sun-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sun.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-upload-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud-upload.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloud.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clouds-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/clouds.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloudy-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cloudy.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/code-slash.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/code-square.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/code.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/coin.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/collection-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/collection-play-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/collection-play.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/collection.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/columns-gap.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/columns.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/command.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/compass-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/compass.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cone-striped.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cone.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/controller.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cookie.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/copy.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cpu-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cpu.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-back-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-back.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-front-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-front.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/credit-card.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/crop.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/crosshair.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/crosshair2.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cup-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cup-hot-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cup-hot.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cup-straw.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cup.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/currency-bitcoin.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/currency-dollar.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/currency-euro.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/currency-exchange.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/currency-pound.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/currency-rupee.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/currency-yen.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cursor-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cursor-text.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/cursor.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle-dotted.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dash-lg.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dash-square-dotted.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dash-square-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dash-square.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dash.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-add.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-check.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-dash.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-down.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-exclamation.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-add.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-check.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-dash.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-down.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-exclamation.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-gear.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-lock.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-slash.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-up.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-x.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-gear.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-lock.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-slash.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-up.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database-x.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/database.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/device-hdd-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/device-hdd.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/device-ssd-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/device-ssd.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/diagram-2-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/diagram-2.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/diagram-3-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/diagram-3.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/diamond-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/diamond-half.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/diamond.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-1-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-1.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-2-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-2.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-3-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-3.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-4-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-4.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-5-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-5.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-6-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dice-6.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/disc-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/disc.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/discord.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/display-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/display.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/displayport-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/displayport.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/distribute-horizontal.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/distribute-vertical.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/door-closed-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/door-closed.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/door-open-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/door-open.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dot.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/download.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dpad-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dpad.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dribbble.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/dropbox.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/droplet-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/droplet-half.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/droplet.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/duffle-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/duffle.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ear-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ear.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/earbuds.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/easel-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/easel.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/easel2-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/easel2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/easel3-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/easel3.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/egg-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/egg-fried.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/egg.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/eject-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/eject.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-angry-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-angry.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-astonished-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-astonished.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-dizzy-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-dizzy.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-expressionless-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-expressionless.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-frown-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-frown.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grimace-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grimace.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grin-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grin.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-heart-eyes-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-heart-eyes.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-kiss-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-kiss.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-laughing-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-laughing.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-neutral-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-neutral.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-upside-down-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-upside-down.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-sunglasses-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-sunglasses.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-surprise-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-surprise.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-tear-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-tear.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-wink-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/emoji-wink.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-down-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-down.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-up-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-up.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-at-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-at.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-check-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-check.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-dash-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-dash.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-exclamation-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-exclamation.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-heart-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-heart.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-heart-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-heart.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-heart-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-heart.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-plus-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-plus.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-slash-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-slash.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-x-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope-x.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/envelope.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/eraser-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/eraser.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/escape.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ethernet.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ev-front-fill.md16
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ev-front.md16
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ev-station-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ev-station.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-diamond-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-diamond.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-lg.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-octagon-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-octagon.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-triangle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-triangle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclamation.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exclude.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/explicit-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/explicit.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/exposure.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/eye-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/eye-slash-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/eye-slash.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/eye.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/eyedropper.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/eyeglasses.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/facebook.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fan.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-btn-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-btn.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/feather.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/feather2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-down-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-down.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-up-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-up.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-bar-graph-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-bar-graph.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-binary-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-binary.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-break-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-break.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-check-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-check.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-code-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-code.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-diff-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-diff.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-down-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-down.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-up-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-up.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-bar-graph-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-bar-graph.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-binary-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-binary.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-break-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-break.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-check-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-check.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-code-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-code.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-diff-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-diff.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-easel-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-easel.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-excel-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-excel.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-font-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-font.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-image-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-image.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock2-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-medical-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-medical.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-minus-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-minus.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-music-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-music.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-pdf-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-pdf.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-person-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-person.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-play-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-play.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-plus-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-plus.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-post-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-post.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ppt-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ppt.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-richtext-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-richtext.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ruled-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ruled.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-slides-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-slides.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-spreadsheet-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-spreadsheet.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-text-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-text.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-word-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-word.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-x-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-x.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-zip-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-zip.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-easel-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-easel.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-excel-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-excel.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-font-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-font.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-image-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-image.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-lock-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-lock.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-lock2-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-lock2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-medical-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-medical.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-minus-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-minus.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-music-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-music.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-pdf-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-pdf.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-person-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-person.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-play-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-play.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-plus-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-plus.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-post-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-post.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-ppt-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-ppt.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-richtext-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-richtext.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-ruled-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-ruled.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-slides-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-slides.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-spreadsheet-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-spreadsheet.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-text-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-text.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-word-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-word.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-x-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-x.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-zip-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file-zip.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/file.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/files-alt.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/files.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-aac.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ai.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-bmp.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-cs.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-css.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-csv.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-doc.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-docx.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-exe.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-gif.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-heic.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-html.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-java.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-jpg.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-js.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-json.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-jsx.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-key.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-m4p.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-md.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mdx.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mov.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mp3.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mp4.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-otf.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-pdf.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-php.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-png.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ppt.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-pptx.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-psd.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-py.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-raw.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-rb.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sass.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-scss.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sh.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sql.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-svg.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-tiff.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-tsx.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ttf.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-txt.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-wav.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-woff.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xls.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xlsx.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xml.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filetype-yml.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/film.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filter-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filter-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filter-left.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filter-right.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filter-square-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filter-square.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/filter.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fingerprint.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fire.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/flag-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/flag.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/floppy-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/floppy.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/floppy2-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/floppy2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/flower1.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/flower2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/flower3.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/folder-check.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/folder-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/folder-minus.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/folder-plus.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/folder-symlink-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/folder-symlink.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/folder-x.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/folder.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/folder2-open.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/folder2.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fonts.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/forward-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/forward.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/front.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-diesel-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-diesel.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fullscreen-exit.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/fullscreen.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/funnel-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/funnel.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gear-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gear-wide-connected.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gear-wide.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gear.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gem.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gender-ambiguous.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gender-female.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gender-male.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gender-neuter.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gender-trans.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/geo-alt-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/geo-alt.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/geo-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/geo.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gift-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gift.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/git.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/github.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gitlab.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/globe-americas.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/globe-asia-australia.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/globe-central-south-asia.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/globe-europe-africa.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/globe.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/globe2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/google-play.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/google.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/gpu-card.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/graph-down-arrow.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/graph-down.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/graph-up-arrow.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/graph-up.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grid-1x2-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grid-1x2.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2-gap-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2-gap.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3-gap-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3-gap.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grid-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grid.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grip-horizontal.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/grip-vertical.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/h-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/h-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/h-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/h-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hammer.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-thumb-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-thumb.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hand-index.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-down-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-down.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-up-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-up.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/handbag-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/handbag.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hash.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hdd-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hdd-network-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hdd-network.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hdd-rack-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hdd-rack.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hdd-stack-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hdd-stack.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hdd.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hdmi-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hdmi.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/headphones.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/headset-vr.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/headset.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/heart-arrow.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/heart-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/heart-half.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/heart-pulse-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/heart-pulse.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/heart.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/heartbreak-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/heartbreak.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hearts.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/heptagon-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/heptagon-half.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/heptagon.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hexagon-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hexagon-half.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hexagon.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/highlighter.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/highlights.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hospital-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hospital.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-bottom.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-split.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-top.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hourglass.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-add-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-add.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-check-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-check.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-dash-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-dash.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-door-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-door.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-down-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-down.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-exclamation-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-exclamation.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-gear-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-gear.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-heart-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-heart.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-lock-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-lock.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-slash-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-slash.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-up-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-up.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-x-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house-x.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/house.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/houses-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/houses.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hr.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hurricane.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/hypnotize.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/image-alt.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/image-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/image.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/images.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/inbox-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/inbox.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/inboxes-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/inboxes.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/incognito.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/indent.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/infinity.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/info-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/info-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/info-lg.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/info-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/info-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/info.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/input-cursor-text.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/input-cursor.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/instagram.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/intersect.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-album.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-arrow-down.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-arrow-up.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-bookmark-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-bookmark.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-check.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-code.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-medical.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-minus.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-plus.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-richtext.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-text.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal-x.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journal.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/journals.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/joystick.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/justify-left.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/justify-right.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/justify.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/kanban-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/kanban.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/key-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/key.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/keyboard-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/keyboard.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ladder.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lamp-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lamp.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/laptop-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/laptop.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layer-backward.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layer-forward.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layers-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layers-half.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layers.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-inset-reverse.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-inset.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-reverse.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layout-split.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-sidebar-reverse.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-sidebar.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-window-reverse.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-window.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layout-three-columns.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/layout-wtf.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/life-preserver.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-off-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-off.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lightning-charge-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lightning-charge.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lightning-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lightning.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/line.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/link-45deg.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/link.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/linkedin.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/list-check.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/list-columns-reverse.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/list-columns.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/list-nested.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/list-ol.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/list-stars.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/list-task.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/list-ul.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/list.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lock-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lock.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/luggage-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/luggage.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lungs-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/lungs.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/magic.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/magnet-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/magnet.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mailbox-flag.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mailbox.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mailbox2-flag.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mailbox2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/map-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/map.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/markdown-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/markdown.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/marker-tip.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mask.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mastodon.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/medium.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/megaphone-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/megaphone.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/memory.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/menu-app-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/menu-app.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-wide-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-wide.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/menu-button.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/menu-down.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/menu-up.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/messenger.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/meta.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mic-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mic-mute-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mic-mute.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mic.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/microsoft-teams.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/microsoft.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/minecart-loaded.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/minecart.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/modem-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/modem.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/moisture.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/moon-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/moon-stars-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/moon-stars.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/moon.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mortarboard-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mortarboard.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/motherboard-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/motherboard.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mouse-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mouse.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mouse2-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mouse2.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mouse3-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/mouse3.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/music-note-beamed.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/music-note-list.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/music-note.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/music-player-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/music-player.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/newspaper.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/nintendo-switch.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/node-minus-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/node-minus.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/node-plus-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/node-plus.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/noise-reduction.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/nut-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/nut.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/nvidia.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/nvme-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/nvme.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/octagon-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/octagon-half.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/octagon.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/opencollective.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/optical-audio-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/optical-audio.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/option.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/outlet.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/p-circle-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/p-circle.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/p-square-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/p-square.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/paint-bucket.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/palette-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/palette.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/palette2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/paperclip.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/paragraph.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pass-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pass.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/passport-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/passport.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/patch-check-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/patch-check.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/patch-exclamation-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/patch-exclamation.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/patch-minus-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/patch-minus.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/patch-plus-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/patch-plus.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/patch-question-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/patch-question.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pause-btn-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pause-btn.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pause-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pause-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pause-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pause.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/paypal.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pc-display-horizontal.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pc-display.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pc-horizontal.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pc.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pci-card-network.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pci-card-sound.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pci-card.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/peace-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/peace.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pen-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pen.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pencil-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pencil-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pencil.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pentagon-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pentagon-half.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pentagon.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/people-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/people.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/percent.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-add.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-arms-up.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-badge-fill.md15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-badge.md16
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-bounding-box.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-check-fill.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-check.md15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-circle.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-dash-fill.md15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-dash.md15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-down.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-exclamation.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-add.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-check.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-dash.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-down.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-exclamation.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-gear.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-lock.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-slash.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-up.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-x.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-gear.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-heart.md15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-hearts.md15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-lines-fill.md15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-lock.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-plus-fill.md15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-plus.md15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-raised-hand.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-rolodex.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-slash.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-square.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-standing-dress.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-standing.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-up.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-vcard-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-vcard.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-video.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-video2.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-video3.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-walking.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-wheelchair.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-workspace.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-x-fill.md15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person-x.md15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/person.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/phone-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/phone-flip.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/phone-landscape-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/phone-landscape.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/phone-vibrate-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/phone-vibrate.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/phone.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pie-chart-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pie-chart.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/piggy-bank-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/piggy-bank.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pin-angle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pin-angle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pin-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pin-map-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pin-map.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pin.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pinterest.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pip-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/pip.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/play-btn-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/play-btn.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/play-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/play-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/play-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/play.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/playstation.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plug-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plug.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plugin.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle-dotted.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plus-lg.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plus-slash-minus.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plus-square-dotted.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plus-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plus-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/plus.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/postage-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/postage-heart-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/postage-heart.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/postage.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/postcard-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/postcard-heart-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/postcard-heart.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/postcard.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/power.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/prescription.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/prescription2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/printer-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/printer.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/projector-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/projector.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/puzzle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/puzzle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/qr-code-scan.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/qr-code.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/question-circle-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/question-circle.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/question-diamond-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/question-diamond.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/question-lg.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/question-octagon-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/question-octagon.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/question-square-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/question-square.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/question.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/quora.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/quote.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/r-circle-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/r-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/r-square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/r-square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/radar.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/radioactive.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rainbow.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/receipt-cutoff.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/receipt.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/reception-0.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/reception-1.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/reception-2.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/reception-3.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/reception-4.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/record-btn-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/record-btn.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/record-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/record-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/record-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/record.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/record2-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/record2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/recycle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/reddit.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/regex.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/repeat-1.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/repeat.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/reply-all-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/reply-all.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/reply-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/reply.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rewind-btn-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rewind-btn.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rewind-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rewind-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rewind-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rewind.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/robot.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rocket-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rocket-takeoff-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rocket-takeoff.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rocket.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/router-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/router.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rss-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rss.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/rulers.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/safe-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/safe.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/safe2-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/safe2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/save-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/save.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/save2-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/save2.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/scissors.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/scooter.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/screwdriver.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sd-card-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sd-card.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/search-heart-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/search-heart.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/search.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/segmented-nav.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-down-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-down.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-up-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-up.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-check-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-check.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-dash-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-dash.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-exclamation-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-exclamation.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-plus-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-plus.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-slash-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-slash.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-x-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send-x.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/send.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/server.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shadows.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/share-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/share.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-check.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-exclamation.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-check.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-exclamation.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-minus.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-plus.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-x.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-lock-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-lock.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-minus.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-plus.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-shaded.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-slash-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-slash.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield-x.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shield.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shift-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shift.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shop-window.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shop.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/shuffle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-dead-end-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-dead-end.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-do-not-enter-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-do-not-enter.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-side-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-side.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-t-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-t.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-y-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-y.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-left-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-left.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-right-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-right.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-left-turn-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-left-turn.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-parking-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-parking.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-right-turn-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-right-turn.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-railroad-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-railroad.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-lights-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-lights.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-left-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-left.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-right-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-right.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-left-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-left.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-right-fill.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-right.md12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-yield-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sign-yield.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/signal.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/signpost-2-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/signpost-2.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/signpost-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/signpost-split-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/signpost-split.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/signpost.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sim-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sim-slash-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sim-slash.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sim.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sina-weibo.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-btn-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-btn.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-btn-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-btn.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-end.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-btn-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-btn.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-btn-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-btn.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skip-start.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/skype.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/slack.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/slash-circle-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/slash-circle.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/slash-lg.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/slash-square-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/slash-square.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/slash.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sliders.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sliders2-vertical.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sliders2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/smartwatch.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/snapchat.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/snow.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/snow2.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/snow3.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-down-alt.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-down.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-up-alt.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-up.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-down-alt.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-down.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-down-alt.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-down.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-up-alt.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-up.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-up-alt.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sort-up.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/soundwave.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sourceforge.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/speaker-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/speaker.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/speedometer.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/speedometer2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/spellcheck.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/spotify.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/square-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/square-half.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/square.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stack-overflow.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stack.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/star-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/star-half.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/star.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stars.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/steam.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stickies-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stickies.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sticky-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sticky.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stop-btn-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stop-btn.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stop-circle-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stop-circle.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stop-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stop.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stoplights-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stoplights.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stopwatch-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stopwatch.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/strava.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/stripe.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/subscript.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/substack.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/subtract.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suit-club-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suit-club.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suit-diamond-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suit-diamond.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suit-heart-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suit-heart.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suit-spade-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suit-spade.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-lg-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-lg.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suitcase.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suitcase2-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/suitcase2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sun-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sun.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sunglasses.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sunrise-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sunrise.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sunset-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/sunset.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/superscript.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/symmetry-horizontal.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/symmetry-vertical.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/table.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tablet-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tablet-landscape-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tablet-landscape.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tablet.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tag-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tag.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tags-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tags.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/taxi-front-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/taxi-front.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telegram.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-forward-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-forward.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-inbound-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-inbound.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-minus-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-minus.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-outbound-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-outbound.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-plus-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-plus.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-x-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone-x.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/telephone.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tencent-qq.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/terminal-dash.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/terminal-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/terminal-plus.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/terminal-split.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/terminal-x.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/terminal.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/text-center.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/text-indent-left.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/text-indent-right.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/text-left.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/text-paragraph.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/text-right.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/text-wrap.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/textarea-resize.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/textarea-t.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/textarea.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-half.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-high.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-low.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-snow.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-sun.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/thermometer.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/threads-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/threads.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/three-dots-vertical.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/three-dots.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/thunderbolt-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/thunderbolt.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ticket-detailed-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ticket-detailed.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ticket-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ticket-perforated-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ticket-perforated.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ticket.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tiktok.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/toggle-off.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/toggle-on.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/toggle2-off.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/toggle2-on.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/toggles.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/toggles2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tools.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tornado.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/train-freight-front-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/train-freight-front.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/train-front-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/train-front.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/train-lightrail-front-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/train-lightrail-front.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/translate.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/transparency.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/trash-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/trash.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/trash2-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/trash2.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/trash3-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/trash3.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tree-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tree.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/trello.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/triangle-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/triangle-half.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/triangle.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/trophy-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/trophy.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tropical-storm.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/truck-flatbed.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/truck-front-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/truck-front.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/truck.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tsunami.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tv-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/tv.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/twitch.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/twitter-x.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/twitter.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/type-bold.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/type-h1.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/type-h2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/type-h3.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/type-h4.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/type-h5.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/type-h6.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/type-italic.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/type-strikethrough.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/type-underline.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/type.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ubuntu.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ui-checks-grid.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ui-checks.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ui-radios-grid.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/ui-radios.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/umbrella-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/umbrella.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/unindent.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/union.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/unity.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/universal-access-circle.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/universal-access.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/unlock-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/unlock.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/upc-scan.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/upc.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/upload.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-c-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-c.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-drive-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-drive.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-micro-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-micro.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-mini-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-mini.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-plug-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-plug.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb-symbol.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/usb.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/valentine.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/valentine2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/vector-pen.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/view-list.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/view-stacked.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/vignette.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/vimeo.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/vinyl-fill.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/vinyl.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/virus.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/virus2.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/voicemail.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/volume-down-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/volume-down.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/volume-mute-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/volume-mute.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/volume-off-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/volume-off.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/volume-up-fill.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/volume-up.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/vr.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wallet-fill.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wallet.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wallet2.md11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/watch.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/water.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/webcam-fill.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/webcam.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wechat.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/whatsapp.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wifi-1.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wifi-2.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wifi-off.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wifi.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wikipedia.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wind.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/window-dash.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/window-desktop.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/window-dock.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/window-fullscreen.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/window-plus.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/window-sidebar.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/window-split.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/window-stack.md10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/window-x.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/window.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/windows.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wordpress.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable-circle-fill.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable-circle.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/wrench.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/x-circle-fill.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/x-circle.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/x-diamond-fill.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/x-diamond.md13
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/x-lg.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/x-octagon-fill.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/x-octagon.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/x-square-fill.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/x-square.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/x.md14
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/xbox.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/yelp.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/yin-yang.md7
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/youtube.md9
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/zoom-in.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/icons/zoom-out.md8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/content/sprite.md5
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/_default/404.html16
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/_default/sprite.html25
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/alias.html11
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/icons/list.html0
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/icons/single.html154
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/ads.html1
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/analytics.html8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/favicons.html8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/footer.html58
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/head.html15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/home/hero.html51
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/icons.html30
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/bootstrap-white-fill.svg1
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/figma.svg8
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/github.svg1
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/opencollective.svg1
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/twitter.svg1
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/navbar.html119
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/scripts.html15
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/skippy.html3
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/social.html17
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/partials/stylesheet.html12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/robots.txt12
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/shortcodes/example.html25
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/shortcodes/md.html1
-rw-r--r--vendor/twbs/bootstrap-icons/docs/layouts/sitemap.xml10
-rw-r--r--vendor/twbs/bootstrap-icons/docs/static/CNAME1
-rw-r--r--vendor/twbs/bootstrap-icons/docs/static/assets/img/bootstrap-icons-social.pngbin0 -> 530227 bytes
-rw-r--r--vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/android-chrome-192x192.pngbin0 -> 8364 bytes
-rw-r--r--vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/android-chrome-512x512.pngbin0 -> 23832 bytes
-rw-r--r--vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/apple-touch-icon.pngbin0 -> 7488 bytes
-rw-r--r--vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/favicon-16x16.pngbin0 -> 523 bytes
-rw-r--r--vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/favicon-32x32.pngbin0 -> 1152 bytes
-rw-r--r--vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/manifest.json20
-rw-r--r--vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/safari-pinned-tab.svg1
-rw-r--r--vendor/twbs/bootstrap-icons/docs/static/assets/img/icons-hero.pngbin0 -> 29732 bytes
-rw-r--r--vendor/twbs/bootstrap-icons/docs/static/assets/img/icons-hero@2x.pngbin0 -> 94841 bytes
-rw-r--r--vendor/twbs/bootstrap-icons/font/bootstrap-icons.css2078
-rw-r--r--vendor/twbs/bootstrap-icons/font/bootstrap-icons.json2052
-rw-r--r--vendor/twbs/bootstrap-icons/font/bootstrap-icons.min.css5
-rw-r--r--vendor/twbs/bootstrap-icons/font/bootstrap-icons.scss2090
-rw-r--r--vendor/twbs/bootstrap-icons/font/fonts/bootstrap-icons.woffbin0 -> 176032 bytes
-rw-r--r--vendor/twbs/bootstrap-icons/font/fonts/bootstrap-icons.woff2bin0 -> 130396 bytes
-rw-r--r--vendor/twbs/bootstrap-icons/hugo.yml69
-rw-r--r--vendor/twbs/bootstrap-icons/icons/0-circle-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/0-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/0-square-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/0-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/1-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/1-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/1-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/1-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/123.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/2-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/2-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/2-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/2-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/3-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/3-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/3-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/3-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/4-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/4-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/4-square-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/4-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/5-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/5-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/5-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/5-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/6-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/6-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/6-square-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/6-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/7-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/7-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/7-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/7-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/8-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/8-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/8-square-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/8-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/9-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/9-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/9-square-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/9-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/activity.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/airplane-engines-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/airplane-engines.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/airplane-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/airplane.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/alarm-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/alarm.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/alexa.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/align-bottom.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/align-center.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/align-end.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/align-middle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/align-start.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/align-top.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/alipay.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/alphabet-uppercase.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/alphabet.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/alt.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/amazon.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/amd.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/android.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/android2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/app-indicator.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/app.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/apple.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/archive-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/archive.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-90deg-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-90deg-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-90deg-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-90deg-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-bar-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-bar-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-bar-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-bar-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-clockwise.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-counterclockwise.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-left-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-left-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-left-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-left-square.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-right-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-right-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-right-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-right-square.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-short.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-square.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-left-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-left-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-left-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-left-short.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-left-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-left-square.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-repeat.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-return-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-return-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-right-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-right-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-right-short.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-right-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-right-square.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-through-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-through-heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-left-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-left-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-left-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-left-square.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-right-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-right-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-right-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-right-square.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-short.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up-square.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrow-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrows-angle-contract.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrows-angle-expand.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrows-collapse-vertical.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrows-collapse.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrows-expand-vertical.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrows-expand.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrows-fullscreen.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrows-move.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrows-vertical.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/arrows.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/aspect-ratio-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/aspect-ratio.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/asterisk.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/at.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/award-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/award.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/back.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backpack-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backpack.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backpack2-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backpack2.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backpack3-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backpack3.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backpack4-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backpack4.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backspace-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backspace-reverse-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backspace-reverse.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/backspace.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-3d-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-3d.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-4k-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-4k.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-8k-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-8k.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-ad-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-ad.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-ar-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-ar.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-cc-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-cc.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-hd-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-hd.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-sd-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-sd.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-tm-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-tm.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-vo-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-vo.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-vr-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-vr.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-wc-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/badge-wc.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag-check-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag-dash-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag-heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag-plus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag-x-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bag.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/balloon-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/balloon-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/balloon-heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/balloon.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ban-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ban.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bandaid-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bandaid.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bank.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bank2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bar-chart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bar-chart-line-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bar-chart-line.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bar-chart-steps.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bar-chart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/basket-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/basket.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/basket2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/basket2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/basket3-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/basket3.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/battery-charging.svg6
-rw-r--r--vendor/twbs/bootstrap-icons/icons/battery-full.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/battery-half.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/battery.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/behance.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bell-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bell-slash-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bell-slash.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bell.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bezier.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bezier2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bicycle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bing.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/binoculars-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/binoculars.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/blockquote-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/blockquote-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bluetooth.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/body-text.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/book-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/book-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/book.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-check-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-dash-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-heart.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-plus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-star-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-star.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-x-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmark.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmarks-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookmarks.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bookshelf.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/boombox-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/boombox.svg6
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bootstrap-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bootstrap-reboot.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bootstrap.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border-all.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border-bottom.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border-center.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border-inner.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border-middle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border-outer.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border-style.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border-top.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border-width.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/border.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bounding-box-circles.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bounding-box.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-down-left.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-down-right.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-in-down-left.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-in-down-right.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-in-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-in-left.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-in-right.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-in-up-left.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-in-up-right.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-in-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-left.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-right.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-up-left.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-up-right.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-arrow-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-seam-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box-seam.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box2-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box2-heart.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/box2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/boxes.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/braces-asterisk.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/braces.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bricks.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/briefcase-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/briefcase.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/brightness-alt-high-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/brightness-alt-high.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/brightness-alt-low-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/brightness-alt-low.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/brightness-high-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/brightness-high.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/brightness-low-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/brightness-low.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/brilliance.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/broadcast-pin.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/broadcast.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/browser-chrome.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/browser-edge.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/browser-firefox.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/browser-safari.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/brush-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/brush.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bucket-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bucket.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bug-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bug.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-add.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-check.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-dash.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-down.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-exclamation.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-fill-add.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-fill-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-fill-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-fill-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-fill-exclamation.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-fill-gear.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-fill-lock.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-fill-slash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-fill-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-fill-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-gear.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-lock.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-slash.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-up.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/building.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/buildings-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/buildings.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bullseye.svg6
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bus-front-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/bus-front.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/c-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/c-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/c-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/c-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cake-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cake.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cake2-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cake2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calculator-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calculator.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-check-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-date-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-date.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-day-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-day.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-event-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-event.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-minus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-minus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-month-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-month.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-plus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-range-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-range.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-week-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-week.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-x-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-check-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-check.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-date-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-date.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-day-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-day.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-event-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-event.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-minus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-minus.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-month-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-month.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-plus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-range-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-range.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-week-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-week.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-x-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2-x.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar3-event-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar3-event.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar3-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar3-range-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar3-range.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar3-week-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar3-week.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar3.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar4-event.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar4-range.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar4-week.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/calendar4.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/camera-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/camera-reels-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/camera-reels.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/camera-video-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/camera-video-off-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/camera-video-off.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/camera-video.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/camera.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/camera2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/capslock-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/capslock.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/capsule-pill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/capsule.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/car-front-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/car-front.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/card-checklist.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/card-heading.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/card-image.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/card-list.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/card-text.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-down-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-down-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-down-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-left-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-left-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-left-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-right-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-right-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-right-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-up-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-up-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-up-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/caret-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart-check-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart-dash-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart-plus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart-x-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart3.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cart4.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cash-coin.svg6
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cash-stack.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cassette-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cassette.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cast.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cc-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cc-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cc-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cc-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-dots-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-dots.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-left-dots-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-left-dots.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-left-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-left-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-left-heart.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-left-quote-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-left-quote.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-left-text-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-left-text.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-quote-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-quote.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-right-dots-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-right-dots.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-right-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-right-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-right-heart.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-right-quote-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-right-quote.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-right-text-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-right-text.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-square-dots-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-square-dots.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-square-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-square-heart.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-square-quote-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-square-quote.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-square-text-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-square-text.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-square.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-text-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat-text.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chat.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/check-all.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/check-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/check-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/check-lg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/check-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/check-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/check.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/check2-all.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/check2-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/check2-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/check2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-bar-contract.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-bar-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-bar-expand.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-bar-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-bar-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-bar-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-compact-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-compact-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-compact-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-compact-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-contract.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-double-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-double-left.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-double-right.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-double-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-expand.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/chevron-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/circle-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/circle-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-check-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-check.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-data-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-data.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-heart-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-heart.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-minus-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-minus.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-plus-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-plus.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-pulse.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-x-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard-x.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-check-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-check.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-data-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-data.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-heart-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-heart.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-minus-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-minus.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-plus-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-plus.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-pulse-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-pulse.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-x-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2-x.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clipboard2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clock-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clock-history.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clock.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-arrow-down-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-arrow-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-arrow-up-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-arrow-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-check-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-download-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-download.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-drizzle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-drizzle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-fog-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-fog.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-fog2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-fog2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-hail-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-hail.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-haze-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-haze.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-haze2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-haze2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-lightning-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-lightning-rain-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-lightning-rain.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-lightning.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-minus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-minus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-moon-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-moon.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-plus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-rain-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-rain-heavy-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-rain-heavy.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-rain.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-slash-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-slash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-sleet-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-sleet.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-snow-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-snow.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-sun-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-sun.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-upload-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud-upload.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloud.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clouds-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/clouds.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloudy-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cloudy.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/code-slash.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/code-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/code.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/coin.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/collection-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/collection-play-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/collection-play.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/collection.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/columns-gap.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/columns.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/command.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/compass-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/compass.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cone-striped.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cone.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/controller.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cookie.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/copy.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cpu-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cpu.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/credit-card-2-back-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/credit-card-2-back.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/credit-card-2-front-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/credit-card-2-front.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/credit-card-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/credit-card.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/crop.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/crosshair.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/crosshair2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cup-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cup-hot-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cup-hot.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cup-straw.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cup.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/currency-bitcoin.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/currency-dollar.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/currency-euro.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/currency-exchange.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/currency-pound.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/currency-rupee.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/currency-yen.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cursor-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cursor-text.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/cursor.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dash-circle-dotted.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dash-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dash-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dash-lg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dash-square-dotted.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dash-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dash-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dash.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-add.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-exclamation.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-fill-add.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-fill-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-fill-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-fill-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-fill-exclamation.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-fill-gear.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-fill-lock.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-fill-slash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-fill-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-fill-x.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-fill.svg6
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-gear.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-lock.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-slash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/database.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/device-hdd-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/device-hdd.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/device-ssd-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/device-ssd.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/diagram-2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/diagram-2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/diagram-3-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/diagram-3.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/diamond-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/diamond-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/diamond.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-1-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-1.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-3-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-3.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-4-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-4.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-5-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-5.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-6-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dice-6.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/disc-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/disc.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/discord.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/display-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/display.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/displayport-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/displayport.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/distribute-horizontal.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/distribute-vertical.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/door-closed-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/door-closed.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/door-open-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/door-open.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dot.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/download.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dpad-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dpad.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dribbble.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/dropbox.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/droplet-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/droplet-half.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/droplet.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/duffle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/duffle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ear-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ear.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/earbuds.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/easel-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/easel.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/easel2-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/easel2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/easel3-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/easel3.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/egg-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/egg-fried.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/egg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/eject-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/eject.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-angry-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-angry.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-astonished-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-astonished.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-dizzy-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-dizzy.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-expressionless-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-expressionless.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-frown-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-frown.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-grimace-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-grimace.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-grin-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-grin.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-heart-eyes-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-heart-eyes.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-kiss-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-kiss.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-laughing-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-laughing.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-neutral-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-neutral.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-smile-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-smile-upside-down-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-smile-upside-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-smile.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-sunglasses-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-sunglasses.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-surprise-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-surprise.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-tear-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-tear.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-wink-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/emoji-wink.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-arrow-down-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-arrow-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-arrow-up-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-arrow-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-at-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-at.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-check-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-dash-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-exclamation-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-exclamation.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-heart-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-open-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-open-heart-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-open-heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-open.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-paper-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-paper-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-paper-heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-paper.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-plus-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-slash-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-slash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-x-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/envelope.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/eraser-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/eraser.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/escape.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ethernet.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ev-front-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ev-front.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ev-station-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ev-station.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation-diamond-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation-diamond.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation-lg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation-octagon-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation-octagon.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation-triangle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation-triangle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclamation.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exclude.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/explicit-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/explicit.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/exposure.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/eye-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/eye-slash-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/eye-slash.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/eye.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/eyedropper.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/eyeglasses.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/facebook.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fan.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fast-forward-btn-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fast-forward-btn.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fast-forward-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fast-forward-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fast-forward-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fast-forward.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/feather.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/feather2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-arrow-down-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-arrow-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-arrow-up-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-arrow-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-bar-graph-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-bar-graph.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-binary-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-binary.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-break-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-break.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-check-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-code-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-code.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-diff-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-diff.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-down-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-up-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-bar-graph-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-bar-graph.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-binary-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-binary.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-break-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-break.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-check-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-code-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-code.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-diff-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-diff.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-easel-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-easel.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-excel-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-excel.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-font-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-font.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-image-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-image.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-lock-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-lock.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-lock2-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-lock2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-medical-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-medical.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-minus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-minus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-music-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-music.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-pdf-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-pdf.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-person-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-person.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-play-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-play.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-plus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-post-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-post.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-ppt-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-ppt.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-richtext-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-richtext.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-ruled-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-ruled.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-slides-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-slides.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-spreadsheet-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-spreadsheet.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-text-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-text.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-word-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-word.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-x-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-zip-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark-zip.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-earmark.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-easel-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-easel.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-excel-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-excel.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-font-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-font.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-image-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-image.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-lock-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-lock.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-lock2-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-lock2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-medical-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-medical.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-minus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-minus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-music-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-music.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-pdf-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-pdf.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-person-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-person.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-play-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-play.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-plus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-post-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-post.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-ppt-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-ppt.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-richtext-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-richtext.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-ruled-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-ruled.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-slides-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-slides.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-spreadsheet-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-spreadsheet.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-text-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-text.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-word-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-word.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-x-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-zip-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file-zip.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/file.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/files-alt.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/files.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-aac.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-ai.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-bmp.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-cs.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-css.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-csv.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-doc.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-docx.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-exe.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-gif.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-heic.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-html.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-java.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-jpg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-js.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-json.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-jsx.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-key.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-m4p.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-md.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-mdx.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-mov.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-mp3.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-mp4.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-otf.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-pdf.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-php.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-png.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-ppt.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-pptx.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-psd.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-py.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-raw.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-rb.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-sass.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-scss.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-sh.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-sql.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-svg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-tiff.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-tsx.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-ttf.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-txt.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-wav.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-woff.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-xls.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-xlsx.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-xml.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filetype-yml.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/film.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filter-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filter-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filter-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filter-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filter-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filter-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/filter.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fingerprint.svg7
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fire.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/flag-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/flag.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/floppy-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/floppy.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/floppy2-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/floppy2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/flower1.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/flower2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/flower3.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/folder-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/folder-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/folder-minus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/folder-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/folder-symlink-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/folder-symlink.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/folder-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/folder.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/folder2-open.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/folder2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fonts.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/forward-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/forward.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/front.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fuel-pump-diesel-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fuel-pump-diesel.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fuel-pump-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fuel-pump.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fullscreen-exit.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/fullscreen.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/funnel-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/funnel.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gear-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gear-wide-connected.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gear-wide.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gear.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gem.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gender-ambiguous.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gender-female.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gender-male.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gender-neuter.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gender-trans.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/geo-alt-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/geo-alt.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/geo-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/geo.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gift-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gift.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/git.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/github.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gitlab.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/globe-americas.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/globe-asia-australia.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/globe-central-south-asia.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/globe-europe-africa.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/globe.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/globe2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/google-play.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/google.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/gpu-card.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/graph-down-arrow.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/graph-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/graph-up-arrow.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/graph-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grid-1x2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grid-1x2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grid-3x2-gap-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grid-3x2-gap.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grid-3x2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grid-3x3-gap-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grid-3x3-gap.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grid-3x3.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grid-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grid.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grip-horizontal.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/grip-vertical.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/h-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/h-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/h-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/h-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hammer.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hand-index-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hand-index-thumb-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hand-index-thumb.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hand-index.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hand-thumbs-down-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hand-thumbs-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hand-thumbs-up-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hand-thumbs-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/handbag-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/handbag.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hash.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hdd-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hdd-network-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hdd-network.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hdd-rack-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hdd-rack.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hdd-stack-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hdd-stack.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hdd.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hdmi-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hdmi.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/headphones.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/headset-vr.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/headset.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/heart-arrow.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/heart-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/heart-pulse-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/heart-pulse.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/heartbreak-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/heartbreak.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hearts.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/heptagon-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/heptagon-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/heptagon.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hexagon-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hexagon-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hexagon.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/highlighter.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/highlights.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hospital-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hospital.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hourglass-bottom.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hourglass-split.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hourglass-top.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hourglass.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-add-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-add.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-check-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-dash-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-door-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-door.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-down-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-exclamation-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-exclamation.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-gear-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-gear.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-heart-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-heart.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-lock-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-lock.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-slash-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-slash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-up-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-x-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/house.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/houses-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/houses.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hr.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hurricane.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/hypnotize.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/image-alt.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/image-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/image.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/images.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/inbox-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/inbox.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/inboxes-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/inboxes.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/incognito.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/indent.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/infinity.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/info-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/info-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/info-lg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/info-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/info-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/info.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/input-cursor-text.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/input-cursor.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/instagram.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/intersect.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-album.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-arrow-down.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-arrow-up.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-bookmark-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-bookmark.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-check.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-code.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-medical.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-minus.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-plus.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-richtext.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-text.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal-x.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journal.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/journals.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/joystick.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/justify-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/justify-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/justify.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/kanban-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/kanban.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/key-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/key.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/keyboard-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/keyboard.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ladder.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lamp-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lamp.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/laptop-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/laptop.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layer-backward.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layer-forward.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layers-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layers-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layers.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layout-sidebar-inset-reverse.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layout-sidebar-inset.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layout-sidebar-reverse.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layout-sidebar.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layout-split.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layout-text-sidebar-reverse.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layout-text-sidebar.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layout-text-window-reverse.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layout-text-window.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layout-three-columns.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/layout-wtf.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/life-preserver.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lightbulb-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lightbulb-off-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lightbulb-off.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lightbulb.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lightning-charge-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lightning-charge.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lightning-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lightning.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/line.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/link-45deg.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/link.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/linkedin.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/list-check.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/list-columns-reverse.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/list-columns.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/list-nested.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/list-ol.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/list-stars.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/list-task.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/list-ul.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/list.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lock-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lock.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/luggage-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/luggage.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lungs-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/lungs.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/magic.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/magnet-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/magnet.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mailbox-flag.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mailbox.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mailbox2-flag.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mailbox2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/map-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/map.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/markdown-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/markdown.svg6
-rw-r--r--vendor/twbs/bootstrap-icons/icons/marker-tip.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mask.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mastodon.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/medium.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/megaphone-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/megaphone.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/memory.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/menu-app-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/menu-app.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/menu-button-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/menu-button-wide-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/menu-button-wide.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/menu-button.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/menu-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/menu-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/messenger.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/meta.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mic-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mic-mute-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mic-mute.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mic.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/microsoft-teams.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/microsoft.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/minecart-loaded.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/minecart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/modem-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/modem.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/moisture.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/moon-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/moon-stars-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/moon-stars.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/moon.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mortarboard-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mortarboard.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/motherboard-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/motherboard.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mouse-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mouse.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mouse2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mouse2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mouse3-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/mouse3.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/music-note-beamed.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/music-note-list.svg6
-rw-r--r--vendor/twbs/bootstrap-icons/icons/music-note.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/music-player-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/music-player.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/newspaper.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/nintendo-switch.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/node-minus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/node-minus.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/node-plus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/node-plus.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/noise-reduction.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/nut-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/nut.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/nvidia.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/nvme-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/nvme.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/octagon-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/octagon-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/octagon.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/opencollective.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/optical-audio-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/optical-audio.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/option.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/outlet.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/p-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/p-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/p-square-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/p-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/paint-bucket.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/palette-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/palette.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/palette2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/paperclip.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/paragraph.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pass-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pass.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/passport-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/passport.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/patch-check-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/patch-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/patch-exclamation-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/patch-exclamation.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/patch-minus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/patch-minus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/patch-plus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/patch-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/patch-question-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/patch-question.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pause-btn-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pause-btn.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pause-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pause-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pause-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pause.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/paypal.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pc-display-horizontal.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pc-display.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pc-horizontal.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pc.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pci-card-network.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pci-card-sound.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pci-card.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/peace-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/peace.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pen-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pen.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pencil-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pencil-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pencil.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pentagon-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pentagon-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pentagon.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/people-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/people.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/percent.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-add.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-arms-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-badge-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-badge.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-bounding-box.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-check-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-dash-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-exclamation.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-fill-add.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-fill-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-fill-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-fill-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-fill-exclamation.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-fill-gear.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-fill-lock.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-fill-slash.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-fill-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-fill-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-gear.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-hearts.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-lines-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-lock.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-plus-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-raised-hand.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-rolodex.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-slash.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-standing-dress.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-standing.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-vcard-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-vcard.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-video.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-video2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-video3.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-walking.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-wheelchair.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-workspace.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-x-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/person.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/phone-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/phone-flip.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/phone-landscape-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/phone-landscape.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/phone-vibrate-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/phone-vibrate.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/phone.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pie-chart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pie-chart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/piggy-bank-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/piggy-bank.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pin-angle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pin-angle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pin-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pin-map-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pin-map.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pin.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pinterest.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pip-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/pip.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/play-btn-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/play-btn.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/play-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/play-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/play-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/play.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/playstation.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plug-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plug.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plugin.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plus-circle-dotted.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plus-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plus-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plus-lg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plus-slash-minus.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plus-square-dotted.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plus-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plus-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/plus.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/postage-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/postage-heart-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/postage-heart.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/postage.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/postcard-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/postcard-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/postcard-heart.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/postcard.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/power.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/prescription.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/prescription2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/printer-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/printer.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/projector-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/projector.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/puzzle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/puzzle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/qr-code-scan.svg7
-rw-r--r--vendor/twbs/bootstrap-icons/icons/qr-code.svg7
-rw-r--r--vendor/twbs/bootstrap-icons/icons/question-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/question-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/question-diamond-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/question-diamond.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/question-lg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/question-octagon-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/question-octagon.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/question-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/question-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/question.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/quora.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/quote.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/r-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/r-circle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/r-square-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/r-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/radar.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/radioactive.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rainbow.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/receipt-cutoff.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/receipt.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/reception-0.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/reception-1.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/reception-2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/reception-3.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/reception-4.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/record-btn-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/record-btn.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/record-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/record-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/record-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/record.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/record2-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/record2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/recycle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/reddit.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/regex.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/repeat-1.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/repeat.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/reply-all-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/reply-all.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/reply-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/reply.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rewind-btn-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rewind-btn.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rewind-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rewind-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rewind-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rewind.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/robot.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rocket-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rocket-takeoff-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rocket-takeoff.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rocket.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/router-fill.svg6
-rw-r--r--vendor/twbs/bootstrap-icons/icons/router.svg6
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rss-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rss.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/rulers.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/safe-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/safe.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/safe2-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/safe2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/save-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/save.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/save2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/save2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/scissors.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/scooter.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/screwdriver.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sd-card-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sd-card.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/search-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/search-heart.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/search.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/segmented-nav.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-arrow-down-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-arrow-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-arrow-up-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-arrow-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-check-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-dash-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-exclamation-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-exclamation.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-plus-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-slash-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-slash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-x-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/send.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/server.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shadows.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/share-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/share.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-check.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-exclamation.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-fill-check.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-fill-exclamation.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-fill-minus.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-fill-plus.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-fill-x.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-lock-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-lock.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-minus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-shaded.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-slash-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-slash.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shield.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shift-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shift.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shop-window.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shop.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/shuffle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-dead-end-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-dead-end.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-do-not-enter-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-do-not-enter.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-intersection-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-intersection-side-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-intersection-side.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-intersection-t-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-intersection-t.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-intersection-y-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-intersection-y.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-intersection.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-merge-left-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-merge-left.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-merge-right-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-merge-right.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-no-left-turn-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-no-left-turn.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-no-parking-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-no-parking.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-no-right-turn-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-no-right-turn.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-railroad-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-railroad.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-stop-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-stop-lights-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-stop-lights.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-stop.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-turn-left-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-turn-left.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-turn-right-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-turn-right.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-turn-slight-left-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-turn-slight-left.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-turn-slight-right-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-turn-slight-right.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-yield-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sign-yield.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/signal.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/signpost-2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/signpost-2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/signpost-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/signpost-split-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/signpost-split.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/signpost.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sim-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sim-slash-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sim-slash.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sim.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sina-weibo.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-backward-btn-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-backward-btn.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-backward-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-backward-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-backward-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-backward.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-end-btn-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-end-btn.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-end-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-end-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-end-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-end.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-forward-btn-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-forward-btn.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-forward-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-forward-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-forward-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-forward.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-start-btn-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-start-btn.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-start-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-start-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-start-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skip-start.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/skype.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/slack.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/slash-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/slash-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/slash-lg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/slash-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/slash-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/slash.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sliders.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sliders2-vertical.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sliders2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/smartwatch.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/snapchat.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/snow.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/snow2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/snow3.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-alpha-down-alt.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-alpha-down.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-alpha-up-alt.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-alpha-up.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-down-alt.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-numeric-down-alt.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-numeric-down.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-numeric-up-alt.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-numeric-up.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-up-alt.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sort-up.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/soundwave.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sourceforge.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/speaker-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/speaker.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/speedometer.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/speedometer2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/spellcheck.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/spotify.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/square-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/square.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stack-overflow.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stack.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/star-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/star-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/star.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stars.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/steam.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stickies-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stickies.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sticky-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sticky.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stop-btn-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stop-btn.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stop-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stop-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stop-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stop.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stoplights-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stoplights.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stopwatch-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stopwatch.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/strava.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/stripe.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/subscript.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/substack.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/subtract.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suit-club-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suit-club.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suit-diamond-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suit-diamond.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suit-heart-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suit-heart.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suit-spade-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suit-spade.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suitcase-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suitcase-lg-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suitcase-lg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suitcase.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suitcase2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/suitcase2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sun-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sun.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sunglasses.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sunrise-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sunrise.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sunset-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/sunset.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/superscript.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/symmetry-horizontal.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/symmetry-vertical.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/table.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tablet-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tablet-landscape-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tablet-landscape.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tablet.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tag-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tag.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tags-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tags.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/taxi-front-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/taxi-front.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telegram.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-forward-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-forward.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-inbound-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-inbound.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-minus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-minus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-outbound-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-outbound.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-plus-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-x-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/telephone.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tencent-qq.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/terminal-dash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/terminal-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/terminal-plus.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/terminal-split.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/terminal-x.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/terminal.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/text-center.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/text-indent-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/text-indent-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/text-left.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/text-paragraph.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/text-right.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/text-wrap.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/textarea-resize.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/textarea-t.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/textarea.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/thermometer-half.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/thermometer-high.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/thermometer-low.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/thermometer-snow.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/thermometer-sun.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/thermometer.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/threads-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/threads.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/three-dots-vertical.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/three-dots.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/thunderbolt-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/thunderbolt.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ticket-detailed-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ticket-detailed.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ticket-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ticket-perforated-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ticket-perforated.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ticket.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tiktok.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/toggle-off.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/toggle-on.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/toggle2-off.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/toggle2-on.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/toggles.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/toggles2.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tools.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tornado.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/train-freight-front-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/train-freight-front.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/train-front-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/train-front.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/train-lightrail-front-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/train-lightrail-front.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/translate.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/transparency.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/trash-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/trash.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/trash2-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/trash2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/trash3-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/trash3.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tree-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tree.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/trello.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/triangle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/triangle-half.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/triangle.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/trophy-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/trophy.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tropical-storm.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/truck-flatbed.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/truck-front-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/truck-front.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/truck.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tsunami.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tv-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/tv.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/twitch.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/twitter-x.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/twitter.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/type-bold.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/type-h1.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/type-h2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/type-h3.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/type-h4.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/type-h5.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/type-h6.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/type-italic.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/type-strikethrough.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/type-underline.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/type.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ubuntu.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ui-checks-grid.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ui-checks.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ui-radios-grid.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/ui-radios.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/umbrella-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/umbrella.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/unindent.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/union.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/unity.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/universal-access-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/universal-access.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/unlock-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/unlock.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/upc-scan.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/upc.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/upload.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-c-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-c.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-drive-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-drive.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-micro-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-micro.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-mini-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-mini.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-plug-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-plug.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb-symbol.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/usb.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/valentine.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/valentine2.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/vector-pen.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/view-list.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/view-stacked.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/vignette.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/vimeo.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/vinyl-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/vinyl.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/virus.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/virus2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/voicemail.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/volume-down-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/volume-down.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/volume-mute-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/volume-mute.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/volume-off-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/volume-off.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/volume-up-fill.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/volume-up.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/vr.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wallet-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wallet.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wallet2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/watch.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/water.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/webcam-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/webcam.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wechat.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/whatsapp.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wifi-1.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wifi-2.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wifi-off.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wifi.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wikipedia.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wind.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/window-dash.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/window-desktop.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/window-dock.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/window-fullscreen.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/window-plus.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/window-sidebar.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/window-split.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/window-stack.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/window-x.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/window.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/windows.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wordpress.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wrench-adjustable-circle-fill.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wrench-adjustable-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wrench-adjustable.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/wrench.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/x-circle-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/x-circle.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/x-diamond-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/x-diamond.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/x-lg.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/x-octagon-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/x-octagon.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/x-square-fill.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/x-square.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/x.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/xbox.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/yelp.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/yin-yang.svg4
-rw-r--r--vendor/twbs/bootstrap-icons/icons/youtube.svg3
-rw-r--r--vendor/twbs/bootstrap-icons/icons/zoom-in.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/icons/zoom-out.svg5
-rw-r--r--vendor/twbs/bootstrap-icons/package-lock.json7208
-rw-r--r--vendor/twbs/bootstrap-icons/package.json91
-rw-r--r--vendor/twbs/bootstrap-icons/svg-sprite.json46
-rw-r--r--vendor/twbs/bootstrap-icons/svgo.config.mjs73
-rw-r--r--vendor/voku/portable-ascii/.deepsource.toml4
-rw-r--r--vendor/voku/portable-ascii/CHANGELOG.md8
-rw-r--r--vendor/voku/portable-ascii/composer.json2
-rw-r--r--vendor/voku/portable-ascii/src/voku/helper/ASCII.php165
5143 files changed, 84480 insertions, 51216 deletions
diff --git a/vendor/bin/naturalselection b/vendor/bin/naturalselection
index d13c00bb3..fdb566282 100755
--- a/vendor/bin/naturalselection
+++ b/vendor/bin/naturalselection
@@ -34,4 +34,4 @@ if [ -n "$bashSource" ]; then
fi
fi
-"${dir}/naturalselection" "$@"
+exec "${dir}/naturalselection" "$@"
diff --git a/vendor/bin/sabredav b/vendor/bin/sabredav
index 6e915f637..1caef5d3c 100755
--- a/vendor/bin/sabredav
+++ b/vendor/bin/sabredav
@@ -34,4 +34,4 @@ if [ -n "$bashSource" ]; then
fi
fi
-"${dir}/sabredav" "$@"
+exec "${dir}/sabredav" "$@"
diff --git a/vendor/brick/math/CHANGELOG.md b/vendor/brick/math/CHANGELOG.md
index 17cea8d9f..680fa9ba2 100644
--- a/vendor/brick/math/CHANGELOG.md
+++ b/vendor/brick/math/CHANGELOG.md
@@ -2,6 +2,24 @@
All notable changes to this project will be documented in this file.
+## [0.12.1](https://github.com/brick/math/releases/tag/0.12.1) - 2023-11-29
+
+⚡️ **Performance improvements**
+
+- `BigNumber::of()` is now faster, thanks to [@SebastienDug](https://github.com/SebastienDug) in [#77](https://github.com/brick/math/pull/77).
+
+## [0.12.0](https://github.com/brick/math/releases/tag/0.12.0) - 2023-11-26
+
+💥 **Breaking changes**
+
+- Minimum PHP version is now 8.1
+- `RoundingMode` is now an `enum`; if you're type-hinting rounding modes, you need to type-hint against `RoundingMode` instead of `int` now
+- `BigNumber` classes do not implement the `Serializable` interface anymore (they use the [new custom object serialization mechanism](https://wiki.php.net/rfc/custom_object_serialization))
+- The following breaking changes only affect you if you're creating your own `BigNumber` subclasses:
+ - the return type of `BigNumber::of()` is now `static`
+ - `BigNumber` has a new abstract method `from()`
+ - all `public` and `protected` functions of `BigNumber` are now `final`
+
## [0.11.0](https://github.com/brick/math/releases/tag/0.11.0) - 2023-01-16
💥 **Breaking changes**
diff --git a/vendor/brick/math/composer.json b/vendor/brick/math/composer.json
index ed817bdd0..bd67343ad 100644
--- a/vendor/brick/math/composer.json
+++ b/vendor/brick/math/composer.json
@@ -5,21 +5,26 @@
"keywords": [
"Brick",
"Math",
+ "Mathematics",
"Arbitrary-precision",
"Arithmetic",
"BigInteger",
"BigDecimal",
"BigRational",
- "Bignum"
+ "BigNumber",
+ "Bignum",
+ "Decimal",
+ "Rational",
+ "Integer"
],
"license": "MIT",
"require": {
- "php": "^8.0"
+ "php": "^8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.0",
+ "phpunit/phpunit": "^10.1",
"php-coveralls/php-coveralls": "^2.2",
- "vimeo/psalm": "5.0.0"
+ "vimeo/psalm": "5.16.0"
},
"autoload": {
"psr-4": {
diff --git a/vendor/brick/math/src/BigDecimal.php b/vendor/brick/math/src/BigDecimal.php
index 02fc65612..31d22ab30 100644
--- a/vendor/brick/math/src/BigDecimal.php
+++ b/vendor/brick/math/src/BigDecimal.php
@@ -23,14 +23,14 @@ final class BigDecimal extends BigNumber
* No leading zero must be present.
* No leading minus sign must be present if the value is 0.
*/
- private string $value;
+ private readonly string $value;
/**
* The scale (number of digits after the decimal point) of this decimal number.
*
* This must be zero or more.
*/
- private int $scale;
+ private readonly int $scale;
/**
* Protected constructor. Use a factory method to obtain an instance.
@@ -45,15 +45,11 @@ final class BigDecimal extends BigNumber
}
/**
- * Creates a BigDecimal of the given value.
- *
- * @throws MathException If the value cannot be converted to a BigDecimal.
- *
* @psalm-pure
*/
- public static function of(BigNumber|int|float|string $value) : BigDecimal
+ protected static function from(BigNumber $number): static
{
- return parent::of($value)->toBigDecimal();
+ return $number->toBigDecimal();
}
/**
@@ -223,12 +219,12 @@ final class BigDecimal extends BigNumber
*
* @param BigNumber|int|float|string $that The divisor.
* @param int|null $scale The desired scale, or null to use the scale of this number.
- * @param int $roundingMode An optional rounding mode.
+ * @param RoundingMode $roundingMode An optional rounding mode, defaults to UNNECESSARY.
*
* @throws \InvalidArgumentException If the scale or rounding mode is invalid.
* @throws MathException If the number is invalid, is zero, or rounding was necessary.
*/
- public function dividedBy(BigNumber|int|float|string $that, ?int $scale = null, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ public function dividedBy(BigNumber|int|float|string $that, ?int $scale = null, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
{
$that = BigDecimal::of($that);
@@ -324,7 +320,7 @@ final class BigDecimal extends BigNumber
}
/**
- * Returns the quotient of the division of this number by this given one.
+ * Returns the quotient of the division of this number by the given one.
*
* The quotient has a scale of `0`.
*
@@ -349,7 +345,7 @@ final class BigDecimal extends BigNumber
}
/**
- * Returns the remainder of the division of this number by this given one.
+ * Returns the remainder of the division of this number by the given one.
*
* The remainder has a scale of `max($this->scale, $that->scale)`.
*
@@ -384,6 +380,8 @@ final class BigDecimal extends BigNumber
*
* @return BigDecimal[] An array containing the quotient and the remainder.
*
+ * @psalm-return array{BigDecimal, BigDecimal}
+ *
* @throws MathException If the divisor is not a valid decimal number, or is zero.
*/
public function quotientAndRemainder(BigNumber|int|float|string $that) : array
@@ -631,7 +629,7 @@ final class BigDecimal extends BigNumber
return self::newBigRational($numerator, $denominator, false);
}
- public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
{
if ($scale === $this->scale) {
return $this;
@@ -694,36 +692,6 @@ final class BigDecimal extends BigNumber
}
/**
- * This method is required by interface Serializable and SHOULD NOT be accessed directly.
- *
- * @internal
- */
- public function serialize() : string
- {
- return $this->value . ':' . $this->scale;
- }
-
- /**
- * This method is only here to implement interface Serializable and cannot be accessed directly.
- *
- * @internal
- * @psalm-suppress RedundantPropertyInitializationCheck
- *
- * @throws \LogicException
- */
- public function unserialize($value) : void
- {
- if (isset($this->value)) {
- throw new \LogicException('unserialize() is an internal function, it must not be called directly.');
- }
-
- [$value, $scale] = \explode(':', $value);
-
- $this->value = $value;
- $this->scale = (int) $scale;
- }
-
- /**
* Puts the internal values of the given decimal numbers on the same scale.
*
* @return array{string, string} The scaled integer values of $x and $y.
diff --git a/vendor/brick/math/src/BigInteger.php b/vendor/brick/math/src/BigInteger.php
index 435679331..73dcc89a2 100644
--- a/vendor/brick/math/src/BigInteger.php
+++ b/vendor/brick/math/src/BigInteger.php
@@ -27,7 +27,7 @@ final class BigInteger extends BigNumber
* No leading zeros must be present.
* No leading minus sign must be present if the number is zero.
*/
- private string $value;
+ private readonly string $value;
/**
* Protected constructor. Use a factory method to obtain an instance.
@@ -40,15 +40,11 @@ final class BigInteger extends BigNumber
}
/**
- * Creates a BigInteger of the given value.
- *
- * @throws MathException If the value cannot be converted to a BigInteger.
- *
* @psalm-pure
*/
- public static function of(BigNumber|int|float|string $value) : BigInteger
+ protected static function from(BigNumber $number): static
{
- return parent::of($value)->toBigInteger();
+ return $number->toBigInteger();
}
/**
@@ -225,9 +221,10 @@ final class BigInteger extends BigNumber
}
if ($randomBytesGenerator === null) {
- $randomBytesGenerator = 'random_bytes';
+ $randomBytesGenerator = random_bytes(...);
}
+ /** @var int<1, max> $byteLength */
$byteLength = \intdiv($numBits - 1, 8) + 1;
$extraBits = ($byteLength * 8 - $numBits);
@@ -429,12 +426,12 @@ final class BigInteger extends BigNumber
* Returns the result of the division of this number by the given one.
*
* @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
- * @param int $roundingMode An optional rounding mode.
+ * @param RoundingMode $roundingMode An optional rounding mode, defaults to UNNECESSARY.
*
* @throws MathException If the divisor is not a valid number, is not convertible to a BigInteger, is zero,
* or RoundingMode::UNNECESSARY is used and the remainder is not zero.
*/
- public function dividedBy(BigNumber|int|float|string $that, int $roundingMode = RoundingMode::UNNECESSARY) : BigInteger
+ public function dividedBy(BigNumber|int|float|string $that, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigInteger
{
$that = BigInteger::of($that);
@@ -534,6 +531,8 @@ final class BigInteger extends BigNumber
*
* @return BigInteger[] An array containing the quotient and the remainder.
*
+ * @psalm-return array{BigInteger, BigInteger}
+ *
* @throws DivisionByZeroException If the divisor is zero.
*/
public function quotientAndRemainder(BigNumber|int|float|string $that) : array
@@ -888,7 +887,7 @@ final class BigInteger extends BigNumber
return self::newBigRational($this, BigInteger::one(), false);
}
- public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
{
return $this->toBigDecimal()->toScale($scale, $roundingMode);
}
@@ -1049,31 +1048,4 @@ final class BigInteger extends BigNumber
$this->value = $data['value'];
}
-
- /**
- * This method is required by interface Serializable and SHOULD NOT be accessed directly.
- *
- * @internal
- */
- public function serialize() : string
- {
- return $this->value;
- }
-
- /**
- * This method is only here to implement interface Serializable and cannot be accessed directly.
- *
- * @internal
- * @psalm-suppress RedundantPropertyInitializationCheck
- *
- * @throws \LogicException
- */
- public function unserialize($value) : void
- {
- if (isset($this->value)) {
- throw new \LogicException('unserialize() is an internal function, it must not be called directly.');
- }
-
- $this->value = $value;
- }
}
diff --git a/vendor/brick/math/src/BigNumber.php b/vendor/brick/math/src/BigNumber.php
index 80146d207..5a0df7837 100644
--- a/vendor/brick/math/src/BigNumber.php
+++ b/vendor/brick/math/src/BigNumber.php
@@ -14,26 +14,29 @@ use Brick\Math\Exception\RoundingNecessaryException;
*
* @psalm-immutable
*/
-abstract class BigNumber implements \Serializable, \JsonSerializable
+abstract class BigNumber implements \JsonSerializable
{
/**
- * The regular expression used to parse integer, decimal and rational numbers.
+ * The regular expression used to parse integer or decimal numbers.
*/
- private const PARSE_REGEXP =
+ private const PARSE_REGEXP_NUMERICAL =
'/^' .
'(?<sign>[\-\+])?' .
- '(?:' .
- '(?:' .
- '(?<integral>[0-9]+)?' .
- '(?<point>\.)?' .
- '(?<fractional>[0-9]+)?' .
- '(?:[eE](?<exponent>[\-\+]?[0-9]+))?' .
- ')|(?:' .
- '(?<numerator>[0-9]+)' .
- '\/?' .
- '(?<denominator>[0-9]+)' .
- ')' .
- ')' .
+ '(?<integral>[0-9]+)?' .
+ '(?<point>\.)?' .
+ '(?<fractional>[0-9]+)?' .
+ '(?:[eE](?<exponent>[\-\+]?[0-9]+))?' .
+ '$/';
+
+ /**
+ * The regular expression used to parse rational numbers.
+ */
+ private const PARSE_REGEXP_RATIONAL =
+ '/^' .
+ '(?<sign>[\-\+])?' .
+ '(?<numerator>[0-9]+)' .
+ '\/?' .
+ '(?<denominator>[0-9]+)' .
'$/';
/**
@@ -53,7 +56,24 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
*
* @psalm-pure
*/
- public static function of(BigNumber|int|float|string $value) : BigNumber
+ final public static function of(BigNumber|int|float|string $value) : static
+ {
+ $value = self::_of($value);
+
+ if (static::class === BigNumber::class) {
+ // https://github.com/vimeo/psalm/issues/10309
+ assert($value instanceof static);
+
+ return $value;
+ }
+
+ return static::from($value);
+ }
+
+ /**
+ * @psalm-pure
+ */
+ private static function _of(BigNumber|int|float|string $value) : BigNumber
{
if ($value instanceof BigNumber) {
return $value;
@@ -63,34 +83,25 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
return new BigInteger((string) $value);
}
- $value = \is_float($value) ? self::floatToString($value) : $value;
-
- $throw = static function() use ($value) : void {
- throw new NumberFormatException(\sprintf(
- 'The given value "%s" does not represent a valid number.',
- $value
- ));
- };
-
- if (\preg_match(self::PARSE_REGEXP, $value, $matches) !== 1) {
- $throw();
+ if (is_float($value)) {
+ $value = (string) $value;
}
- $getMatch = static fn(string $value): ?string => (($matches[$value] ?? '') !== '') ? $matches[$value] : null;
+ if (str_contains($value, '/')) {
+ // Rational number
+ if (\preg_match(self::PARSE_REGEXP_RATIONAL, $value, $matches, PREG_UNMATCHED_AS_NULL) !== 1) {
+ throw NumberFormatException::invalidFormat($value);
+ }
- $sign = $getMatch('sign');
- $numerator = $getMatch('numerator');
- $denominator = $getMatch('denominator');
+ $sign = $matches['sign'];
+ $numerator = $matches['numerator'];
+ $denominator = $matches['denominator'];
- if ($numerator !== null) {
+ assert($numerator !== null);
assert($denominator !== null);
- if ($sign !== null) {
- $numerator = $sign . $numerator;
- }
-
- $numerator = self::cleanUp($numerator);
- $denominator = self::cleanUp($denominator);
+ $numerator = self::cleanUp($sign, $numerator);
+ $denominator = self::cleanUp(null, $denominator);
if ($denominator === '0') {
throw DivisionByZeroException::denominatorMustNotBeZero();
@@ -101,67 +112,62 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
new BigInteger($denominator),
false
);
- }
+ } else {
+ // Integer or decimal number
+ if (\preg_match(self::PARSE_REGEXP_NUMERICAL, $value, $matches, PREG_UNMATCHED_AS_NULL) !== 1) {
+ throw NumberFormatException::invalidFormat($value);
+ }
- $point = $getMatch('point');
- $integral = $getMatch('integral');
- $fractional = $getMatch('fractional');
- $exponent = $getMatch('exponent');
+ $sign = $matches['sign'];
+ $point = $matches['point'];
+ $integral = $matches['integral'];
+ $fractional = $matches['fractional'];
+ $exponent = $matches['exponent'];
- if ($integral === null && $fractional === null) {
- $throw();
- }
+ if ($integral === null && $fractional === null) {
+ throw NumberFormatException::invalidFormat($value);
+ }
- if ($integral === null) {
- $integral = '0';
- }
+ if ($integral === null) {
+ $integral = '0';
+ }
- if ($point !== null || $exponent !== null) {
- $fractional = ($fractional ?? '');
- $exponent = ($exponent !== null) ? (int) $exponent : 0;
+ if ($point !== null || $exponent !== null) {
+ $fractional = ($fractional ?? '');
+ $exponent = ($exponent !== null) ? (int)$exponent : 0;
- if ($exponent === PHP_INT_MIN || $exponent === PHP_INT_MAX) {
- throw new NumberFormatException('Exponent too large.');
- }
+ if ($exponent === PHP_INT_MIN || $exponent === PHP_INT_MAX) {
+ throw new NumberFormatException('Exponent too large.');
+ }
- $unscaledValue = self::cleanUp(($sign ?? ''). $integral . $fractional);
+ $unscaledValue = self::cleanUp($sign, $integral . $fractional);
- $scale = \strlen($fractional) - $exponent;
+ $scale = \strlen($fractional) - $exponent;
- if ($scale < 0) {
- if ($unscaledValue !== '0') {
- $unscaledValue .= \str_repeat('0', - $scale);
+ if ($scale < 0) {
+ if ($unscaledValue !== '0') {
+ $unscaledValue .= \str_repeat('0', -$scale);
+ }
+ $scale = 0;
}
- $scale = 0;
- }
- return new BigDecimal($unscaledValue, $scale);
- }
+ return new BigDecimal($unscaledValue, $scale);
+ }
- $integral = self::cleanUp(($sign ?? '') . $integral);
+ $integral = self::cleanUp($sign, $integral);
- return new BigInteger($integral);
+ return new BigInteger($integral);
+ }
}
/**
- * Safely converts float to string, avoiding locale-dependent issues.
+ * Overridden by subclasses to convert a BigNumber to an instance of the subclass.
*
- * @see https://github.com/brick/math/pull/20
+ * @throws MathException If the value cannot be converted.
*
* @psalm-pure
- * @psalm-suppress ImpureFunctionCall
*/
- private static function floatToString(float $float) : string
- {
- $currentLocale = \setlocale(LC_NUMERIC, '0');
- \setlocale(LC_NUMERIC, 'C');
-
- $result = (string) $float;
-
- \setlocale(LC_NUMERIC, $currentLocale);
-
- return $result;
- }
+ abstract protected static function from(BigNumber $number): static;
/**
* Proxy method to access BigInteger's protected constructor from sibling classes.
@@ -169,7 +175,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
* @internal
* @psalm-pure
*/
- protected function newBigInteger(string $value) : BigInteger
+ final protected function newBigInteger(string $value) : BigInteger
{
return new BigInteger($value);
}
@@ -180,7 +186,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
* @internal
* @psalm-pure
*/
- protected function newBigDecimal(string $value, int $scale = 0) : BigDecimal
+ final protected function newBigDecimal(string $value, int $scale = 0) : BigDecimal
{
return new BigDecimal($value, $scale);
}
@@ -191,7 +197,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
* @internal
* @psalm-pure
*/
- protected function newBigRational(BigInteger $numerator, BigInteger $denominator, bool $checkDenominator) : BigRational
+ final protected function newBigRational(BigInteger $numerator, BigInteger $denominator, bool $checkDenominator) : BigRational
{
return new BigRational($numerator, $denominator, $checkDenominator);
}
@@ -205,11 +211,9 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
* @throws \InvalidArgumentException If no values are given.
* @throws MathException If an argument is not valid.
*
- * @psalm-suppress LessSpecificReturnStatement
- * @psalm-suppress MoreSpecificReturnType
* @psalm-pure
*/
- public static function min(BigNumber|int|float|string ...$values) : static
+ final public static function min(BigNumber|int|float|string ...$values) : static
{
$min = null;
@@ -237,11 +241,9 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
* @throws \InvalidArgumentException If no values are given.
* @throws MathException If an argument is not valid.
*
- * @psalm-suppress LessSpecificReturnStatement
- * @psalm-suppress MoreSpecificReturnType
* @psalm-pure
*/
- public static function max(BigNumber|int|float|string ...$values) : static
+ final public static function max(BigNumber|int|float|string ...$values) : static
{
$max = null;
@@ -271,7 +273,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
*
* @psalm-pure
*/
- public static function sum(BigNumber|int|float|string ...$values) : static
+ final public static function sum(BigNumber|int|float|string ...$values) : static
{
/** @var static|null $sum */
$sum = null;
@@ -323,37 +325,28 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
}
/**
- * Removes optional leading zeros and + sign from the given number.
+ * Removes optional leading zeros and applies sign.
*
- * @param string $number The number, validated as a non-empty string of digits with optional leading sign.
+ * @param string|null $sign The sign, '+' or '-', optional. Null is allowed for convenience and treated as '+'.
+ * @param string $number The number, validated as a non-empty string of digits.
*
* @psalm-pure
*/
- private static function cleanUp(string $number) : string
+ private static function cleanUp(string|null $sign, string $number) : string
{
- $firstChar = $number[0];
-
- if ($firstChar === '+' || $firstChar === '-') {
- $number = \substr($number, 1);
- }
-
$number = \ltrim($number, '0');
if ($number === '') {
return '0';
}
- if ($firstChar === '-') {
- return '-' . $number;
- }
-
- return $number;
+ return $sign === '-' ? '-' . $number : $number;
}
/**
* Checks if this number is equal to the given one.
*/
- public function isEqualTo(BigNumber|int|float|string $that) : bool
+ final public function isEqualTo(BigNumber|int|float|string $that) : bool
{
return $this->compareTo($that) === 0;
}
@@ -361,7 +354,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Checks if this number is strictly lower than the given one.
*/
- public function isLessThan(BigNumber|int|float|string $that) : bool
+ final public function isLessThan(BigNumber|int|float|string $that) : bool
{
return $this->compareTo($that) < 0;
}
@@ -369,7 +362,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Checks if this number is lower than or equal to the given one.
*/
- public function isLessThanOrEqualTo(BigNumber|int|float|string $that) : bool
+ final public function isLessThanOrEqualTo(BigNumber|int|float|string $that) : bool
{
return $this->compareTo($that) <= 0;
}
@@ -377,7 +370,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Checks if this number is strictly greater than the given one.
*/
- public function isGreaterThan(BigNumber|int|float|string $that) : bool
+ final public function isGreaterThan(BigNumber|int|float|string $that) : bool
{
return $this->compareTo($that) > 0;
}
@@ -385,7 +378,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Checks if this number is greater than or equal to the given one.
*/
- public function isGreaterThanOrEqualTo(BigNumber|int|float|string $that) : bool
+ final public function isGreaterThanOrEqualTo(BigNumber|int|float|string $that) : bool
{
return $this->compareTo($that) >= 0;
}
@@ -393,7 +386,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Checks if this number equals zero.
*/
- public function isZero() : bool
+ final public function isZero() : bool
{
return $this->getSign() === 0;
}
@@ -401,7 +394,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Checks if this number is strictly negative.
*/
- public function isNegative() : bool
+ final public function isNegative() : bool
{
return $this->getSign() < 0;
}
@@ -409,7 +402,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Checks if this number is negative or zero.
*/
- public function isNegativeOrZero() : bool
+ final public function isNegativeOrZero() : bool
{
return $this->getSign() <= 0;
}
@@ -417,7 +410,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Checks if this number is strictly positive.
*/
- public function isPositive() : bool
+ final public function isPositive() : bool
{
return $this->getSign() > 0;
}
@@ -425,7 +418,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Checks if this number is positive or zero.
*/
- public function isPositiveOrZero() : bool
+ final public function isPositiveOrZero() : bool
{
return $this->getSign() >= 0;
}
@@ -433,6 +426,8 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Returns the sign of this number.
*
+ * @psalm-return -1|0|1
+ *
* @return int -1 if the number is negative, 0 if zero, 1 if positive.
*/
abstract public function getSign() : int;
@@ -440,7 +435,9 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Compares this number to the given one.
*
- * @return int [-1,0,1] If `$this` is lower than, equal to, or greater than `$that`.
+ * @psalm-return -1|0|1
+ *
+ * @return int -1 if `$this` is lower than, 0 if equal to, 1 if greater than `$that`.
*
* @throws MathException If the number is not valid.
*/
@@ -468,13 +465,13 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
/**
* Converts this number to a BigDecimal with the given scale, using rounding if necessary.
*
- * @param int $scale The scale of the resulting `BigDecimal`.
- * @param int $roundingMode A `RoundingMode` constant.
+ * @param int $scale The scale of the resulting `BigDecimal`.
+ * @param RoundingMode $roundingMode An optional rounding mode, defaults to UNNECESSARY.
*
* @throws RoundingNecessaryException If this number cannot be converted to the given scale without rounding.
* This only applies when RoundingMode::UNNECESSARY is used.
*/
- abstract public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal;
+ abstract public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal;
/**
* Returns the exact value of this number as a native integer.
@@ -505,7 +502,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable
*/
abstract public function __toString() : string;
- public function jsonSerialize() : string
+ final public function jsonSerialize() : string
{
return $this->__toString();
}
diff --git a/vendor/brick/math/src/BigRational.php b/vendor/brick/math/src/BigRational.php
index 31f2904fa..fc3060ede 100644
--- a/vendor/brick/math/src/BigRational.php
+++ b/vendor/brick/math/src/BigRational.php
@@ -21,12 +21,12 @@ final class BigRational extends BigNumber
/**
* The numerator.
*/
- private BigInteger $numerator;
+ private readonly BigInteger $numerator;
/**
* The denominator. Always strictly positive.
*/
- private BigInteger $denominator;
+ private readonly BigInteger $denominator;
/**
* Protected constructor. Use a factory method to obtain an instance.
@@ -55,15 +55,11 @@ final class BigRational extends BigNumber
}
/**
- * Creates a BigRational of the given value.
- *
- * @throws MathException If the value cannot be converted to a BigRational.
- *
* @psalm-pure
*/
- public static function of(BigNumber|int|float|string $value) : BigRational
+ protected static function from(BigNumber $number): static
{
- return parent::of($value)->toBigRational();
+ return $number->toBigRational();
}
/**
@@ -181,6 +177,8 @@ final class BigRational extends BigNumber
* Returns the quotient and remainder of the division of the numerator by the denominator.
*
* @return BigInteger[]
+ *
+ * @psalm-return array{BigInteger, BigInteger}
*/
public function quotientAndRemainder() : array
{
@@ -353,7 +351,7 @@ final class BigRational extends BigNumber
return $this;
}
- public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ public function toScale(int $scale, RoundingMode $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
{
return $this->numerator->toBigDecimal()->dividedBy($this->denominator, $scale, $roundingMode);
}
@@ -412,34 +410,4 @@ final class BigRational extends BigNumber
$this->numerator = $data['numerator'];
$this->denominator = $data['denominator'];
}
-
- /**
- * This method is required by interface Serializable and SHOULD NOT be accessed directly.
- *
- * @internal
- */
- public function serialize() : string
- {
- return $this->numerator . '/' . $this->denominator;
- }
-
- /**
- * This method is only here to implement interface Serializable and cannot be accessed directly.
- *
- * @internal
- * @psalm-suppress RedundantPropertyInitializationCheck
- *
- * @throws \LogicException
- */
- public function unserialize($value) : void
- {
- if (isset($this->numerator)) {
- throw new \LogicException('unserialize() is an internal function, it must not be called directly.');
- }
-
- [$numerator, $denominator] = \explode('/', $value);
-
- $this->numerator = BigInteger::of($numerator);
- $this->denominator = BigInteger::of($denominator);
- }
}
diff --git a/vendor/brick/math/src/Exception/NumberFormatException.php b/vendor/brick/math/src/Exception/NumberFormatException.php
index d9cf6ff5f..119cadbb4 100644
--- a/vendor/brick/math/src/Exception/NumberFormatException.php
+++ b/vendor/brick/math/src/Exception/NumberFormatException.php
@@ -9,6 +9,14 @@ namespace Brick\Math\Exception;
*/
class NumberFormatException extends MathException
{
+ public static function invalidFormat(string $value) : self
+ {
+ return new self(\sprintf(
+ 'The given value "%s" does not represent a valid number.',
+ $value,
+ ));
+ }
+
/**
* @param string $char The failing character.
*
@@ -28,6 +36,6 @@ class NumberFormatException extends MathException
$char = '"' . $char . '"';
}
- return new self(sprintf('Char %s is not a valid character in the given alphabet.', $char));
+ return new self(\sprintf('Char %s is not a valid character in the given alphabet.', $char));
}
}
diff --git a/vendor/brick/math/src/Internal/Calculator.php b/vendor/brick/math/src/Internal/Calculator.php
index b8cecda96..44dd66924 100644
--- a/vendor/brick/math/src/Internal/Calculator.php
+++ b/vendor/brick/math/src/Internal/Calculator.php
@@ -25,7 +25,7 @@ abstract class Calculator
/**
* The maximum exponent value allowed for the pow() method.
*/
- public const MAX_POWER = 1000000;
+ public const MAX_POWER = 1_000_000;
/**
* The alphabet for converting from and to base 2 to 36, lowercase.
@@ -128,7 +128,9 @@ abstract class Calculator
/**
* Compares two numbers.
*
- * @return int [-1, 0, 1] If the first number is less than, equal to, or greater than the second number.
+ * @psalm-return -1|0|1
+ *
+ * @return int -1 if the first number is less than, 0 if equal to, 1 if greater than the second number.
*/
final public function cmp(string $a, string $b) : int
{
@@ -428,16 +430,16 @@ abstract class Calculator
*
* Rounding is performed when the remainder of the division is not zero.
*
- * @param string $a The dividend.
- * @param string $b The divisor, must not be zero.
- * @param int $roundingMode The rounding mode.
+ * @param string $a The dividend.
+ * @param string $b The divisor, must not be zero.
+ * @param RoundingMode $roundingMode The rounding mode.
*
* @throws \InvalidArgumentException If the rounding mode is invalid.
* @throws RoundingNecessaryException If RoundingMode::UNNECESSARY is provided but rounding is necessary.
*
* @psalm-suppress ImpureFunctionCall
*/
- final public function divRound(string $a, string $b, int $roundingMode) : string
+ final public function divRound(string $a, string $b, RoundingMode $roundingMode) : string
{
[$quotient, $remainder] = $this->divQR($a, $b);
@@ -571,27 +573,17 @@ abstract class Calculator
$bBin = $this->twosComplement($bBin);
}
- switch ($operator) {
- case 'and':
- $value = $aBin & $bBin;
- $negative = ($aNeg and $bNeg);
- break;
-
- case 'or':
- $value = $aBin | $bBin;
- $negative = ($aNeg or $bNeg);
- break;
-
- case 'xor':
- $value = $aBin ^ $bBin;
- $negative = ($aNeg xor $bNeg);
- break;
+ $value = match ($operator) {
+ 'and' => $aBin & $bBin,
+ 'or' => $aBin | $bBin,
+ 'xor' => $aBin ^ $bBin,
+ };
- // @codeCoverageIgnoreStart
- default:
- throw new \InvalidArgumentException('Invalid bitwise operator.');
- // @codeCoverageIgnoreEnd
- }
+ $negative = match ($operator) {
+ 'and' => $aNeg and $bNeg,
+ 'or' => $aNeg or $bNeg,
+ 'xor' => $aNeg xor $bNeg,
+ };
if ($negative) {
$value = $this->twosComplement($value);
diff --git a/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php b/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php
index 5457a3c98..067085e21 100644
--- a/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php
+++ b/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php
@@ -35,10 +35,6 @@ class BcMathCalculator extends Calculator
return \bcdiv($a, $b, 0);
}
- /**
- * @psalm-suppress InvalidNullableReturnType
- * @psalm-suppress NullableReturnStatement
- */
public function divR(string $a, string $b) : string
{
return \bcmod($a, $b, 0);
@@ -49,8 +45,6 @@ class BcMathCalculator extends Calculator
$q = \bcdiv($a, $b, 0);
$r = \bcmod($a, $b, 0);
- assert($r !== null);
-
return [$q, $r];
}
@@ -64,10 +58,6 @@ class BcMathCalculator extends Calculator
return \bcpowmod($base, $exp, $mod, 0);
}
- /**
- * @psalm-suppress InvalidNullableReturnType
- * @psalm-suppress NullableReturnStatement
- */
public function sqrt(string $n) : string
{
return \bcsqrt($n, 0);
diff --git a/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php b/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php
index 7c679d24d..6acd06382 100644
--- a/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php
+++ b/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php
@@ -23,25 +23,18 @@ class NativeCalculator extends Calculator
* Example: 32-bit: max number 1,999,999,999 (9 digits + carry)
* 64-bit: max number 1,999,999,999,999,999,999 (18 digits + carry)
*/
- private int $maxDigits;
+ private readonly int $maxDigits;
/**
* @codeCoverageIgnore
*/
public function __construct()
{
- switch (PHP_INT_SIZE) {
- case 4:
- $this->maxDigits = 9;
- break;
-
- case 8:
- $this->maxDigits = 18;
- break;
-
- default:
- throw new \RuntimeException('The platform is not 32-bit or 64-bit as expected.');
- }
+ $this->maxDigits = match (PHP_INT_SIZE) {
+ 4 => 9,
+ 8 => 18,
+ default => throw new \RuntimeException('The platform is not 32-bit or 64-bit as expected.')
+ };
}
public function add(string $a, string $b) : string
@@ -161,10 +154,8 @@ class NativeCalculator extends Calculator
if (is_int($nb)) {
// the only division that may overflow is PHP_INT_MIN / -1,
// which cannot happen here as we've already handled a divisor of -1 above.
+ $q = intdiv($na, $nb);
$r = $na % $nb;
- $q = ($na - $r) / $nb;
-
- assert(is_int($q));
return [
(string) $q,
@@ -536,7 +527,7 @@ class NativeCalculator extends Calculator
/**
* Compares two non-signed large numbers.
*
- * @return int [-1, 0, 1]
+ * @psalm-return -1|0|1
*/
private function doCmp(string $a, string $b) : int
{
@@ -549,7 +540,7 @@ class NativeCalculator extends Calculator
return $cmp;
}
- return \strcmp($a, $b) <=> 0; // enforce [-1, 0, 1]
+ return \strcmp($a, $b) <=> 0; // enforce -1|0|1
}
/**
diff --git a/vendor/brick/math/src/RoundingMode.php b/vendor/brick/math/src/RoundingMode.php
index 06936d8db..e8ee6a8b4 100644
--- a/vendor/brick/math/src/RoundingMode.php
+++ b/vendor/brick/math/src/RoundingMode.php
@@ -13,24 +13,15 @@ namespace Brick\Math;
* regardless the digits' contribution to the value of the number. In other words, considered
* as a numerical value, the discarded fraction could have an absolute value greater than one.
*/
-final class RoundingMode
+enum RoundingMode
{
/**
- * Private constructor. This class is not instantiable.
- *
- * @codeCoverageIgnore
- */
- private function __construct()
- {
- }
-
- /**
* Asserts that the requested operation has an exact result, hence no rounding is necessary.
*
* If this rounding mode is specified on an operation that yields a result that
* cannot be represented at the requested scale, a RoundingNecessaryException is thrown.
*/
- public const UNNECESSARY = 0;
+ case UNNECESSARY;
/**
* Rounds away from zero.
@@ -38,7 +29,7 @@ final class RoundingMode
* Always increments the digit prior to a nonzero discarded fraction.
* Note that this rounding mode never decreases the magnitude of the calculated value.
*/
- public const UP = 1;
+ case UP;
/**
* Rounds towards zero.
@@ -46,7 +37,7 @@ final class RoundingMode
* Never increments the digit prior to a discarded fraction (i.e., truncates).
* Note that this rounding mode never increases the magnitude of the calculated value.
*/
- public const DOWN = 2;
+ case DOWN;
/**
* Rounds towards positive infinity.
@@ -54,7 +45,7 @@ final class RoundingMode
* If the result is positive, behaves as for UP; if negative, behaves as for DOWN.
* Note that this rounding mode never decreases the calculated value.
*/
- public const CEILING = 3;
+ case CEILING;
/**
* Rounds towards negative infinity.
@@ -62,7 +53,7 @@ final class RoundingMode
* If the result is positive, behave as for DOWN; if negative, behave as for UP.
* Note that this rounding mode never increases the calculated value.
*/
- public const FLOOR = 4;
+ case FLOOR;
/**
* Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round up.
@@ -70,28 +61,28 @@ final class RoundingMode
* Behaves as for UP if the discarded fraction is >= 0.5; otherwise, behaves as for DOWN.
* Note that this is the rounding mode commonly taught at school.
*/
- public const HALF_UP = 5;
+ case HALF_UP;
/**
* Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round down.
*
* Behaves as for UP if the discarded fraction is > 0.5; otherwise, behaves as for DOWN.
*/
- public const HALF_DOWN = 6;
+ case HALF_DOWN;
/**
* Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards positive infinity.
*
* If the result is positive, behaves as for HALF_UP; if negative, behaves as for HALF_DOWN.
*/
- public const HALF_CEILING = 7;
+ case HALF_CEILING;
/**
* Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards negative infinity.
*
* If the result is positive, behaves as for HALF_DOWN; if negative, behaves as for HALF_UP.
*/
- public const HALF_FLOOR = 8;
+ case HALF_FLOOR;
/**
* Rounds towards the "nearest neighbor" unless both neighbors are equidistant, in which case rounds towards the even neighbor.
@@ -103,5 +94,5 @@ final class RoundingMode
* cumulative error when applied repeatedly over a sequence of calculations.
* It is sometimes known as "Banker's rounding", and is chiefly used in the USA.
*/
- public const HALF_EVEN = 9;
+ case HALF_EVEN;
}
diff --git a/vendor/chillerlan/php-qrcode/.github/FUNDING.yml b/vendor/chillerlan/php-qrcode/.github/FUNDING.yml
deleted file mode 100644
index 16a077f52..000000000
--- a/vendor/chillerlan/php-qrcode/.github/FUNDING.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-ko_fi: codemasher
-custom: "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4"
diff --git a/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml b/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml
deleted file mode 100644
index 9b26bb201..000000000
--- a/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml
+++ /dev/null
@@ -1,82 +0,0 @@
-# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
-# https://github.com/sebastianbergmann/phpunit/blob/master/.github/workflows/ci.yml
-
-on:
- push:
- branches:
- - v4.3.x
- pull_request:
- branches:
- - v4.3.x
-
-name: "Continuous Integration"
-
-jobs:
-
- static-code-analysis:
- name: "Static Code Analysis"
-
- runs-on: ubuntu-latest
-
- env:
- PHAN_ALLOW_XDEBUG: 0
- PHAN_DISABLE_XDEBUG_WARN: 1
-
- steps:
- - name: "Checkout"
- uses: actions/checkout@v3
-
- - name: "Install PHP"
- uses: shivammathur/setup-php@v2
- with:
- php-version: "7.4"
- coverage: none
- tools: pecl
- extensions: ast, gd, imagick, json, mbstring
-
- - name: "Update dependencies with composer"
- run: composer update --no-interaction --no-ansi --no-progress --no-suggest
-
- - name: "Run phan"
- run: php vendor/bin/phan
-
- tests:
- name: "Unit Tests"
-
- runs-on: ${{ matrix.os }}
-
- strategy:
- fail-fast: false
- matrix:
- os:
- - ubuntu-latest
- - windows-latest
- php-version:
- - "7.4"
- - "8.0"
- - "8.1"
-
- steps:
-# - name: "Configure git to avoid issues with line endings"
-# if: matrix.os == 'windows-latest'
-# run: git config --global core.autocrlf false
-
- - name: "Checkout"
- uses: actions/checkout@v3
-
- - name: "Install PHP with extensions"
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php-version }}
- coverage: pcov
- tools: pecl
- extensions: gd, imagick, json, mbstring
-
- - name: "Install dependencies with composer"
- run: composer update --no-ansi --no-interaction --no-progress --no-suggest
-
- - name: "Run tests with phpunit"
- run: php vendor/bin/phpunit --configuration=phpunit.xml
-
- - name: "Send code coverage report to Codecov.io"
- uses: codecov/codecov-action@v3
diff --git a/vendor/chillerlan/php-qrcode/.gitignore b/vendor/chillerlan/php-qrcode/.gitignore
deleted file mode 100644
index 8f74009cd..000000000
--- a/vendor/chillerlan/php-qrcode/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-.build/*
-.idea/*
-docs/*
-vendor/*
-composer.lock
diff --git a/vendor/chillerlan/php-qrcode/.phan/config.php b/vendor/chillerlan/php-qrcode/.phan/config.php
deleted file mode 100644
index 442d5f7d5..000000000
--- a/vendor/chillerlan/php-qrcode/.phan/config.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/**
- * This configuration will be read and overlaid on top of the
- * default configuration. Command-line arguments will be applied
- * after this file is read.
- */
-return [
- // Supported values: `'5.6'`, `'7.0'`, `'7.1'`, `'7.2'`, `'7.3'`,
- // `'7.4'`, `null`.
- // If this is set to `null`,
- // then Phan assumes the PHP version which is closest to the minor version
- // of the php executable used to execute Phan.
- //
- // Note that the **only** effect of choosing `'5.6'` is to infer
- // that functions removed in php 7.0 exist.
- // (See `backward_compatibility_checks` for additional options)
- 'target_php_version' => '7.4',
-
- // A list of directories that should be parsed for class and
- // method information. After excluding the directories
- // defined in exclude_analysis_directory_list, the remaining
- // files will be statically analyzed for errors.
- //
- // Thus, both first-party and third-party code being used by
- // your application should be included in this list.
- 'directory_list' => [
- 'examples',
- 'src',
- 'tests',
- 'vendor',
- '.phan/stubs'
- ],
-
- // A regex used to match every file name that you want to
- // exclude from parsing. Actual value will exclude every
- // "test", "tests", "Test" and "Tests" folders found in
- // "vendor/" directory.
- 'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@',
-
- // A directory list that defines files that will be excluded
- // from static analysis, but whose class and method
- // information should be included.
- //
- // Generally, you'll want to include the directories for
- // third-party code (such as "vendor/") in this list.
- //
- // n.b.: If you'd like to parse but not analyze 3rd
- // party code, directories containing that code
- // should be added to both the `directory_list`
- // and `exclude_analysis_directory_list` arrays.
- 'exclude_analysis_directory_list' => [
- 'vendor/',
- '.phan/stubs'
- ],
-];
diff --git a/vendor/chillerlan/php-qrcode/.phan/stubs/imagick.php b/vendor/chillerlan/php-qrcode/.phan/stubs/imagick.php
deleted file mode 100644
index 508d2018f..000000000
--- a/vendor/chillerlan/php-qrcode/.phan/stubs/imagick.php
+++ /dev/null
@@ -1,6744 +0,0 @@
-<?php
-
-// Start of imagick v.3.4.3
-
-class ImagickException extends Exception {
-}
-
-class ImagickDrawException extends Exception {
-}
-
-class ImagickPixelIteratorException extends Exception {
-}
-
-class ImagickPixelException extends Exception {
-}
-
-/**
- * @method Imagick clone() (PECL imagick 2.0.0)<br/>Makes an exact copy of the Imagick object
- * @link https://php.net/manual/en/class.imagick.php
- */
-class Imagick implements Iterator, Countable {
- const COLOR_BLACK = 11;
- const COLOR_BLUE = 12;
- const COLOR_CYAN = 13;
- const COLOR_GREEN = 14;
- const COLOR_RED = 15;
- const COLOR_YELLOW = 16;
- const COLOR_MAGENTA = 17;
- const COLOR_OPACITY = 18;
- const COLOR_ALPHA = 19;
- const COLOR_FUZZ = 20;
- const IMAGICK_EXTNUM = 30403;
- const IMAGICK_EXTVER = "3.4.3";
- const QUANTUM_RANGE = 65535;
- const USE_ZEND_MM = 0;
- const COMPOSITE_DEFAULT = 40;
- const COMPOSITE_UNDEFINED = 0;
- const COMPOSITE_NO = 1;
- const COMPOSITE_ADD = 2;
- const COMPOSITE_ATOP = 3;
- const COMPOSITE_BLEND = 4;
- const COMPOSITE_BUMPMAP = 5;
- const COMPOSITE_CLEAR = 7;
- const COMPOSITE_COLORBURN = 8;
- const COMPOSITE_COLORDODGE = 9;
- const COMPOSITE_COLORIZE = 10;
- const COMPOSITE_COPYBLACK = 11;
- const COMPOSITE_COPYBLUE = 12;
- const COMPOSITE_COPY = 13;
- const COMPOSITE_COPYCYAN = 14;
- const COMPOSITE_COPYGREEN = 15;
- const COMPOSITE_COPYMAGENTA = 16;
- const COMPOSITE_COPYOPACITY = 17;
- const COMPOSITE_COPYRED = 18;
- const COMPOSITE_COPYYELLOW = 19;
- const COMPOSITE_DARKEN = 20;
- const COMPOSITE_DSTATOP = 21;
- const COMPOSITE_DST = 22;
- const COMPOSITE_DSTIN = 23;
- const COMPOSITE_DSTOUT = 24;
- const COMPOSITE_DSTOVER = 25;
- const COMPOSITE_DIFFERENCE = 26;
- const COMPOSITE_DISPLACE = 27;
- const COMPOSITE_DISSOLVE = 28;
- const COMPOSITE_EXCLUSION = 29;
- const COMPOSITE_HARDLIGHT = 30;
- const COMPOSITE_HUE = 31;
- const COMPOSITE_IN = 32;
- const COMPOSITE_LIGHTEN = 33;
- const COMPOSITE_LUMINIZE = 35;
- const COMPOSITE_MINUS = 36;
- const COMPOSITE_MODULATE = 37;
- const COMPOSITE_MULTIPLY = 38;
- const COMPOSITE_OUT = 39;
- const COMPOSITE_OVER = 40;
- const COMPOSITE_OVERLAY = 41;
- const COMPOSITE_PLUS = 42;
- const COMPOSITE_REPLACE = 43;
- const COMPOSITE_SATURATE = 44;
- const COMPOSITE_SCREEN = 45;
- const COMPOSITE_SOFTLIGHT = 46;
- const COMPOSITE_SRCATOP = 47;
- const COMPOSITE_SRC = 48;
- const COMPOSITE_SRCIN = 49;
- const COMPOSITE_SRCOUT = 50;
- const COMPOSITE_SRCOVER = 51;
- const COMPOSITE_SUBTRACT = 52;
- const COMPOSITE_THRESHOLD = 53;
- const COMPOSITE_XOR = 54;
- const COMPOSITE_CHANGEMASK = 6;
- const COMPOSITE_LINEARLIGHT = 34;
- const COMPOSITE_DIVIDE = 55;
- const COMPOSITE_DISTORT = 56;
- const COMPOSITE_BLUR = 57;
- const COMPOSITE_PEGTOPLIGHT = 58;
- const COMPOSITE_VIVIDLIGHT = 59;
- const COMPOSITE_PINLIGHT = 60;
- const COMPOSITE_LINEARDODGE = 61;
- const COMPOSITE_LINEARBURN = 62;
- const COMPOSITE_MATHEMATICS = 63;
- const COMPOSITE_MODULUSADD = 2;
- const COMPOSITE_MODULUSSUBTRACT = 52;
- const COMPOSITE_MINUSDST = 36;
- const COMPOSITE_DIVIDEDST = 55;
- const COMPOSITE_DIVIDESRC = 64;
- const COMPOSITE_MINUSSRC = 65;
- const COMPOSITE_DARKENINTENSITY = 66;
- const COMPOSITE_LIGHTENINTENSITY = 67;
- const MONTAGEMODE_FRAME = 1;
- const MONTAGEMODE_UNFRAME = 2;
- const MONTAGEMODE_CONCATENATE = 3;
- const STYLE_NORMAL = 1;
- const STYLE_ITALIC = 2;
- const STYLE_OBLIQUE = 3;
- const STYLE_ANY = 4;
- const FILTER_UNDEFINED = 0;
- const FILTER_POINT = 1;
- const FILTER_BOX = 2;
- const FILTER_TRIANGLE = 3;
- const FILTER_HERMITE = 4;
- const FILTER_HANNING = 5;
- const FILTER_HAMMING = 6;
- const FILTER_BLACKMAN = 7;
- const FILTER_GAUSSIAN = 8;
- const FILTER_QUADRATIC = 9;
- const FILTER_CUBIC = 10;
- const FILTER_CATROM = 11;
- const FILTER_MITCHELL = 12;
- const FILTER_LANCZOS = 22;
- const FILTER_BESSEL = 13;
- const FILTER_SINC = 14;
- const FILTER_KAISER = 16;
- const FILTER_WELSH = 17;
- const FILTER_PARZEN = 18;
- const FILTER_LAGRANGE = 21;
- const FILTER_SENTINEL = 31;
- const FILTER_BOHMAN = 19;
- const FILTER_BARTLETT = 20;
- const FILTER_JINC = 13;
- const FILTER_SINCFAST = 15;
- const FILTER_ROBIDOUX = 26;
- const FILTER_LANCZOSSHARP = 23;
- const FILTER_LANCZOS2 = 24;
- const FILTER_LANCZOS2SHARP = 25;
- const FILTER_ROBIDOUXSHARP = 27;
- const FILTER_COSINE = 28;
- const FILTER_SPLINE = 29;
- const FILTER_LANCZOSRADIUS = 30;
- const IMGTYPE_UNDEFINED = 0;
- const IMGTYPE_BILEVEL = 1;
- const IMGTYPE_GRAYSCALE = 2;
- const IMGTYPE_GRAYSCALEMATTE = 3;
- const IMGTYPE_PALETTE = 4;
- const IMGTYPE_PALETTEMATTE = 5;
- const IMGTYPE_TRUECOLOR = 6;
- const IMGTYPE_TRUECOLORMATTE = 7;
- const IMGTYPE_COLORSEPARATION = 8;
- const IMGTYPE_COLORSEPARATIONMATTE = 9;
- const IMGTYPE_OPTIMIZE = 10;
- const IMGTYPE_PALETTEBILEVELMATTE = 11;
- const RESOLUTION_UNDEFINED = 0;
- const RESOLUTION_PIXELSPERINCH = 1;
- const RESOLUTION_PIXELSPERCENTIMETER = 2;
- const COMPRESSION_UNDEFINED = 0;
- const COMPRESSION_NO = 1;
- const COMPRESSION_BZIP = 2;
- const COMPRESSION_FAX = 6;
- const COMPRESSION_GROUP4 = 7;
- const COMPRESSION_JPEG = 8;
- const COMPRESSION_JPEG2000 = 9;
- const COMPRESSION_LOSSLESSJPEG = 10;
- const COMPRESSION_LZW = 11;
- const COMPRESSION_RLE = 12;
- const COMPRESSION_ZIP = 13;
- const COMPRESSION_DXT1 = 3;
- const COMPRESSION_DXT3 = 4;
- const COMPRESSION_DXT5 = 5;
- const COMPRESSION_ZIPS = 14;
- const COMPRESSION_PIZ = 15;
- const COMPRESSION_PXR24 = 16;
- const COMPRESSION_B44 = 17;
- const COMPRESSION_B44A = 18;
- const COMPRESSION_LZMA = 19;
- const COMPRESSION_JBIG1 = 20;
- const COMPRESSION_JBIG2 = 21;
- const PAINT_POINT = 1;
- const PAINT_REPLACE = 2;
- const PAINT_FLOODFILL = 3;
- const PAINT_FILLTOBORDER = 4;
- const PAINT_RESET = 5;
- const GRAVITY_NORTHWEST = 1;
- const GRAVITY_NORTH = 2;
- const GRAVITY_NORTHEAST = 3;
- const GRAVITY_WEST = 4;
- const GRAVITY_CENTER = 5;
- const GRAVITY_EAST = 6;
- const GRAVITY_SOUTHWEST = 7;
- const GRAVITY_SOUTH = 8;
- const GRAVITY_SOUTHEAST = 9;
- const GRAVITY_FORGET = 0;
- const GRAVITY_STATIC = 10;
- const STRETCH_NORMAL = 1;
- const STRETCH_ULTRACONDENSED = 2;
- const STRETCH_EXTRACONDENSED = 3;
- const STRETCH_CONDENSED = 4;
- const STRETCH_SEMICONDENSED = 5;
- const STRETCH_SEMIEXPANDED = 6;
- const STRETCH_EXPANDED = 7;
- const STRETCH_EXTRAEXPANDED = 8;
- const STRETCH_ULTRAEXPANDED = 9;
- const STRETCH_ANY = 10;
- const ALIGN_UNDEFINED = 0;
- const ALIGN_LEFT = 1;
- const ALIGN_CENTER = 2;
- const ALIGN_RIGHT = 3;
- const DECORATION_NO = 1;
- const DECORATION_UNDERLINE = 2;
- const DECORATION_OVERLINE = 3;
- const DECORATION_LINETROUGH = 4;
- const DECORATION_LINETHROUGH = 4;
- const NOISE_UNIFORM = 1;
- const NOISE_GAUSSIAN = 2;
- const NOISE_MULTIPLICATIVEGAUSSIAN = 3;
- const NOISE_IMPULSE = 4;
- const NOISE_LAPLACIAN = 5;
- const NOISE_POISSON = 6;
- const NOISE_RANDOM = 7;
- const CHANNEL_UNDEFINED = 0;
- const CHANNEL_RED = 1;
- const CHANNEL_GRAY = 1;
- const CHANNEL_CYAN = 1;
- const CHANNEL_GREEN = 2;
- const CHANNEL_MAGENTA = 2;
- const CHANNEL_BLUE = 4;
- const CHANNEL_YELLOW = 4;
- const CHANNEL_ALPHA = 8;
- const CHANNEL_OPACITY = 8;
- const CHANNEL_MATTE = 8;
- const CHANNEL_BLACK = 32;
- const CHANNEL_INDEX = 32;
- const CHANNEL_ALL = 134217727;
- const CHANNEL_DEFAULT = 134217719;
- const CHANNEL_RGBA = 15;
- const CHANNEL_TRUEALPHA = 64;
- const CHANNEL_RGBS = 128;
- const CHANNEL_GRAY_CHANNELS = 128;
- const CHANNEL_SYNC = 256;
- const CHANNEL_COMPOSITES = 47;
- const METRIC_UNDEFINED = 0;
- const METRIC_ABSOLUTEERRORMETRIC = 1;
- const METRIC_MEANABSOLUTEERROR = 2;
- const METRIC_MEANERRORPERPIXELMETRIC = 3;
- const METRIC_MEANSQUAREERROR = 4;
- const METRIC_PEAKABSOLUTEERROR = 5;
- const METRIC_PEAKSIGNALTONOISERATIO = 6;
- const METRIC_ROOTMEANSQUAREDERROR = 7;
- const METRIC_NORMALIZEDCROSSCORRELATIONERRORMETRIC = 8;
- const METRIC_FUZZERROR = 9;
- const PIXEL_CHAR = 1;
- const PIXEL_DOUBLE = 2;
- const PIXEL_FLOAT = 3;
- const PIXEL_INTEGER = 4;
- const PIXEL_LONG = 5;
- const PIXEL_QUANTUM = 6;
- const PIXEL_SHORT = 7;
- const EVALUATE_UNDEFINED = 0;
- const EVALUATE_ADD = 1;
- const EVALUATE_AND = 2;
- const EVALUATE_DIVIDE = 3;
- const EVALUATE_LEFTSHIFT = 4;
- const EVALUATE_MAX = 5;
- const EVALUATE_MIN = 6;
- const EVALUATE_MULTIPLY = 7;
- const EVALUATE_OR = 8;
- const EVALUATE_RIGHTSHIFT = 9;
- const EVALUATE_SET = 10;
- const EVALUATE_SUBTRACT = 11;
- const EVALUATE_XOR = 12;
- const EVALUATE_POW = 13;
- const EVALUATE_LOG = 14;
- const EVALUATE_THRESHOLD = 15;
- const EVALUATE_THRESHOLDBLACK = 16;
- const EVALUATE_THRESHOLDWHITE = 17;
- const EVALUATE_GAUSSIANNOISE = 18;
- const EVALUATE_IMPULSENOISE = 19;
- const EVALUATE_LAPLACIANNOISE = 20;
- const EVALUATE_MULTIPLICATIVENOISE = 21;
- const EVALUATE_POISSONNOISE = 22;
- const EVALUATE_UNIFORMNOISE = 23;
- const EVALUATE_COSINE = 24;
- const EVALUATE_SINE = 25;
- const EVALUATE_ADDMODULUS = 26;
- const EVALUATE_MEAN = 27;
- const EVALUATE_ABS = 28;
- const EVALUATE_EXPONENTIAL = 29;
- const EVALUATE_MEDIAN = 30;
- const EVALUATE_SUM = 31;
- const COLORSPACE_UNDEFINED = 0;
- const COLORSPACE_RGB = 1;
- const COLORSPACE_GRAY = 2;
- const COLORSPACE_TRANSPARENT = 3;
- const COLORSPACE_OHTA = 4;
- const COLORSPACE_LAB = 5;
- const COLORSPACE_XYZ = 6;
- const COLORSPACE_YCBCR = 7;
- const COLORSPACE_YCC = 8;
- const COLORSPACE_YIQ = 9;
- const COLORSPACE_YPBPR = 10;
- const COLORSPACE_YUV = 11;
- const COLORSPACE_CMYK = 12;
- const COLORSPACE_SRGB = 13;
- const COLORSPACE_HSB = 14;
- const COLORSPACE_HSL = 15;
- const COLORSPACE_HWB = 16;
- const COLORSPACE_REC601LUMA = 17;
- const COLORSPACE_REC709LUMA = 19;
- const COLORSPACE_LOG = 21;
- const COLORSPACE_CMY = 22;
- const COLORSPACE_LUV = 23;
- const COLORSPACE_HCL = 24;
- const COLORSPACE_LCH = 25;
- const COLORSPACE_LMS = 26;
- const COLORSPACE_LCHAB = 27;
- const COLORSPACE_LCHUV = 28;
- const COLORSPACE_SCRGB = 29;
- const COLORSPACE_HSI = 30;
- const COLORSPACE_HSV = 31;
- const COLORSPACE_HCLP = 32;
- const COLORSPACE_YDBDR = 33;
- const COLORSPACE_REC601YCBCR = 18;
- const COLORSPACE_REC709YCBCR = 20;
- const VIRTUALPIXELMETHOD_UNDEFINED = 0;
- const VIRTUALPIXELMETHOD_BACKGROUND = 1;
- const VIRTUALPIXELMETHOD_CONSTANT = 2;
- const VIRTUALPIXELMETHOD_EDGE = 4;
- const VIRTUALPIXELMETHOD_MIRROR = 5;
- const VIRTUALPIXELMETHOD_TILE = 7;
- const VIRTUALPIXELMETHOD_TRANSPARENT = 8;
- const VIRTUALPIXELMETHOD_MASK = 9;
- const VIRTUALPIXELMETHOD_BLACK = 10;
- const VIRTUALPIXELMETHOD_GRAY = 11;
- const VIRTUALPIXELMETHOD_WHITE = 12;
- const VIRTUALPIXELMETHOD_HORIZONTALTILE = 13;
- const VIRTUALPIXELMETHOD_VERTICALTILE = 14;
- const VIRTUALPIXELMETHOD_HORIZONTALTILEEDGE = 15;
- const VIRTUALPIXELMETHOD_VERTICALTILEEDGE = 16;
- const VIRTUALPIXELMETHOD_CHECKERTILE = 17;
- const PREVIEW_UNDEFINED = 0;
- const PREVIEW_ROTATE = 1;
- const PREVIEW_SHEAR = 2;
- const PREVIEW_ROLL = 3;
- const PREVIEW_HUE = 4;
- const PREVIEW_SATURATION = 5;
- const PREVIEW_BRIGHTNESS = 6;
- const PREVIEW_GAMMA = 7;
- const PREVIEW_SPIFF = 8;
- const PREVIEW_DULL = 9;
- const PREVIEW_GRAYSCALE = 10;
- const PREVIEW_QUANTIZE = 11;
- const PREVIEW_DESPECKLE = 12;
- const PREVIEW_REDUCENOISE = 13;
- const PREVIEW_ADDNOISE = 14;
- const PREVIEW_SHARPEN = 15;
- const PREVIEW_BLUR = 16;
- const PREVIEW_THRESHOLD = 17;
- const PREVIEW_EDGEDETECT = 18;
- const PREVIEW_SPREAD = 19;
- const PREVIEW_SOLARIZE = 20;
- const PREVIEW_SHADE = 21;
- const PREVIEW_RAISE = 22;
- const PREVIEW_SEGMENT = 23;
- const PREVIEW_SWIRL = 24;
- const PREVIEW_IMPLODE = 25;
- const PREVIEW_WAVE = 26;
- const PREVIEW_OILPAINT = 27;
- const PREVIEW_CHARCOALDRAWING = 28;
- const PREVIEW_JPEG = 29;
- const RENDERINGINTENT_UNDEFINED = 0;
- const RENDERINGINTENT_SATURATION = 1;
- const RENDERINGINTENT_PERCEPTUAL = 2;
- const RENDERINGINTENT_ABSOLUTE = 3;
- const RENDERINGINTENT_RELATIVE = 4;
- const INTERLACE_UNDEFINED = 0;
- const INTERLACE_NO = 1;
- const INTERLACE_LINE = 2;
- const INTERLACE_PLANE = 3;
- const INTERLACE_PARTITION = 4;
- const INTERLACE_GIF = 5;
- const INTERLACE_JPEG = 6;
- const INTERLACE_PNG = 7;
- const FILLRULE_UNDEFINED = 0;
- const FILLRULE_EVENODD = 1;
- const FILLRULE_NONZERO = 2;
- const PATHUNITS_UNDEFINED = 0;
- const PATHUNITS_USERSPACE = 1;
- const PATHUNITS_USERSPACEONUSE = 2;
- const PATHUNITS_OBJECTBOUNDINGBOX = 3;
- const LINECAP_UNDEFINED = 0;
- const LINECAP_BUTT = 1;
- const LINECAP_ROUND = 2;
- const LINECAP_SQUARE = 3;
- const LINEJOIN_UNDEFINED = 0;
- const LINEJOIN_MITER = 1;
- const LINEJOIN_ROUND = 2;
- const LINEJOIN_BEVEL = 3;
- const RESOURCETYPE_UNDEFINED = 0;
- const RESOURCETYPE_AREA = 1;
- const RESOURCETYPE_DISK = 2;
- const RESOURCETYPE_FILE = 3;
- const RESOURCETYPE_MAP = 4;
- const RESOURCETYPE_MEMORY = 5;
- const RESOURCETYPE_TIME = 7;
- const RESOURCETYPE_THROTTLE = 8;
- const RESOURCETYPE_THREAD = 6;
- const DISPOSE_UNRECOGNIZED = 0;
- const DISPOSE_UNDEFINED = 0;
- const DISPOSE_NONE = 1;
- const DISPOSE_BACKGROUND = 2;
- const DISPOSE_PREVIOUS = 3;
- const INTERPOLATE_UNDEFINED = 0;
- const INTERPOLATE_AVERAGE = 1;
- const INTERPOLATE_BICUBIC = 2;
- const INTERPOLATE_BILINEAR = 3;
- const INTERPOLATE_FILTER = 4;
- const INTERPOLATE_INTEGER = 5;
- const INTERPOLATE_MESH = 6;
- const INTERPOLATE_NEARESTNEIGHBOR = 7;
- const INTERPOLATE_SPLINE = 8;
- const LAYERMETHOD_UNDEFINED = 0;
- const LAYERMETHOD_COALESCE = 1;
- const LAYERMETHOD_COMPAREANY = 2;
- const LAYERMETHOD_COMPARECLEAR = 3;
- const LAYERMETHOD_COMPAREOVERLAY = 4;
- const LAYERMETHOD_DISPOSE = 5;
- const LAYERMETHOD_OPTIMIZE = 6;
- const LAYERMETHOD_OPTIMIZEPLUS = 8;
- const LAYERMETHOD_OPTIMIZETRANS = 9;
- const LAYERMETHOD_COMPOSITE = 12;
- const LAYERMETHOD_OPTIMIZEIMAGE = 7;
- const LAYERMETHOD_REMOVEDUPS = 10;
- const LAYERMETHOD_REMOVEZERO = 11;
- const LAYERMETHOD_TRIMBOUNDS = 16;
- const ORIENTATION_UNDEFINED = 0;
- const ORIENTATION_TOPLEFT = 1;
- const ORIENTATION_TOPRIGHT = 2;
- const ORIENTATION_BOTTOMRIGHT = 3;
- const ORIENTATION_BOTTOMLEFT = 4;
- const ORIENTATION_LEFTTOP = 5;
- const ORIENTATION_RIGHTTOP = 6;
- const ORIENTATION_RIGHTBOTTOM = 7;
- const ORIENTATION_LEFTBOTTOM = 8;
- const DISTORTION_UNDEFINED = 0;
- const DISTORTION_AFFINE = 1;
- const DISTORTION_AFFINEPROJECTION = 2;
- const DISTORTION_ARC = 9;
- const DISTORTION_BILINEAR = 6;
- const DISTORTION_PERSPECTIVE = 4;
- const DISTORTION_PERSPECTIVEPROJECTION = 5;
- const DISTORTION_SCALEROTATETRANSLATE = 3;
- const DISTORTION_POLYNOMIAL = 8;
- const DISTORTION_POLAR = 10;
- const DISTORTION_DEPOLAR = 11;
- const DISTORTION_BARREL = 14;
- const DISTORTION_SHEPARDS = 16;
- const DISTORTION_SENTINEL = 18;
- const DISTORTION_BARRELINVERSE = 15;
- const DISTORTION_BILINEARFORWARD = 6;
- const DISTORTION_BILINEARREVERSE = 7;
- const DISTORTION_RESIZE = 17;
- const DISTORTION_CYLINDER2PLANE = 12;
- const DISTORTION_PLANE2CYLINDER = 13;
- const LAYERMETHOD_MERGE = 13;
- const LAYERMETHOD_FLATTEN = 14;
- const LAYERMETHOD_MOSAIC = 15;
- const ALPHACHANNEL_ACTIVATE = 1;
- const ALPHACHANNEL_RESET = 7;
- const ALPHACHANNEL_SET = 8;
- const ALPHACHANNEL_UNDEFINED = 0;
- const ALPHACHANNEL_COPY = 3;
- const ALPHACHANNEL_DEACTIVATE = 4;
- const ALPHACHANNEL_EXTRACT = 5;
- const ALPHACHANNEL_OPAQUE = 6;
- const ALPHACHANNEL_SHAPE = 9;
- const ALPHACHANNEL_TRANSPARENT = 10;
- const SPARSECOLORMETHOD_UNDEFINED = 0;
- const SPARSECOLORMETHOD_BARYCENTRIC = 1;
- const SPARSECOLORMETHOD_BILINEAR = 7;
- const SPARSECOLORMETHOD_POLYNOMIAL = 8;
- const SPARSECOLORMETHOD_SPEPARDS = 16;
- const SPARSECOLORMETHOD_VORONOI = 18;
- const SPARSECOLORMETHOD_INVERSE = 19;
- const DITHERMETHOD_UNDEFINED = 0;
- const DITHERMETHOD_NO = 1;
- const DITHERMETHOD_RIEMERSMA = 2;
- const DITHERMETHOD_FLOYDSTEINBERG = 3;
- const FUNCTION_UNDEFINED = 0;
- const FUNCTION_POLYNOMIAL = 1;
- const FUNCTION_SINUSOID = 2;
- const ALPHACHANNEL_BACKGROUND = 2;
- const FUNCTION_ARCSIN = 3;
- const FUNCTION_ARCTAN = 4;
- const ALPHACHANNEL_FLATTEN = 11;
- const ALPHACHANNEL_REMOVE = 12;
- const STATISTIC_GRADIENT = 1;
- const STATISTIC_MAXIMUM = 2;
- const STATISTIC_MEAN = 3;
- const STATISTIC_MEDIAN = 4;
- const STATISTIC_MINIMUM = 5;
- const STATISTIC_MODE = 6;
- const STATISTIC_NONPEAK = 7;
- const STATISTIC_STANDARD_DEVIATION = 8;
- const MORPHOLOGY_CONVOLVE = 1;
- const MORPHOLOGY_CORRELATE = 2;
- const MORPHOLOGY_ERODE = 3;
- const MORPHOLOGY_DILATE = 4;
- const MORPHOLOGY_ERODE_INTENSITY = 5;
- const MORPHOLOGY_DILATE_INTENSITY = 6;
- const MORPHOLOGY_DISTANCE = 7;
- const MORPHOLOGY_OPEN = 8;
- const MORPHOLOGY_CLOSE = 9;
- const MORPHOLOGY_OPEN_INTENSITY = 10;
- const MORPHOLOGY_CLOSE_INTENSITY = 11;
- const MORPHOLOGY_SMOOTH = 12;
- const MORPHOLOGY_EDGE_IN = 13;
- const MORPHOLOGY_EDGE_OUT = 14;
- const MORPHOLOGY_EDGE = 15;
- const MORPHOLOGY_TOP_HAT = 16;
- const MORPHOLOGY_BOTTOM_HAT = 17;
- const MORPHOLOGY_HIT_AND_MISS = 18;
- const MORPHOLOGY_THINNING = 19;
- const MORPHOLOGY_THICKEN = 20;
- const MORPHOLOGY_VORONOI = 21;
- const MORPHOLOGY_ITERATIVE = 22;
- const KERNEL_UNITY = 1;
- const KERNEL_GAUSSIAN = 2;
- const KERNEL_DIFFERENCE_OF_GAUSSIANS = 3;
- const KERNEL_LAPLACIAN_OF_GAUSSIANS = 4;
- const KERNEL_BLUR = 5;
- const KERNEL_COMET = 6;
- const KERNEL_LAPLACIAN = 7;
- const KERNEL_SOBEL = 8;
- const KERNEL_FREI_CHEN = 9;
- const KERNEL_ROBERTS = 10;
- const KERNEL_PREWITT = 11;
- const KERNEL_COMPASS = 12;
- const KERNEL_KIRSCH = 13;
- const KERNEL_DIAMOND = 14;
- const KERNEL_SQUARE = 15;
- const KERNEL_RECTANGLE = 16;
- const KERNEL_OCTAGON = 17;
- const KERNEL_DISK = 18;
- const KERNEL_PLUS = 19;
- const KERNEL_CROSS = 20;
- const KERNEL_RING = 21;
- const KERNEL_PEAKS = 22;
- const KERNEL_EDGES = 23;
- const KERNEL_CORNERS = 24;
- const KERNEL_DIAGONALS = 25;
- const KERNEL_LINE_ENDS = 26;
- const KERNEL_LINE_JUNCTIONS = 27;
- const KERNEL_RIDGES = 28;
- const KERNEL_CONVEX_HULL = 29;
- const KERNEL_THIN_SE = 30;
- const KERNEL_SKELETON = 31;
- const KERNEL_CHEBYSHEV = 32;
- const KERNEL_MANHATTAN = 33;
- const KERNEL_OCTAGONAL = 34;
- const KERNEL_EUCLIDEAN = 35;
- const KERNEL_USER_DEFINED = 36;
- const KERNEL_BINOMIAL = 37;
- const DIRECTION_LEFT_TO_RIGHT = 2;
- const DIRECTION_RIGHT_TO_LEFT = 1;
- const NORMALIZE_KERNEL_NONE = 0;
- const NORMALIZE_KERNEL_VALUE = 8192;
- const NORMALIZE_KERNEL_CORRELATE = 65536;
- const NORMALIZE_KERNEL_PERCENT = 4096;
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Removes repeated portions of images to optimize
- * @link https://php.net/manual/en/imagick.optimizeimagelayers.php
- * @return bool <b>TRUE</b> on success.
- */
- public function optimizeImageLayers () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the maximum bounding region between images
- * @link https://php.net/manual/en/imagick.compareimagelayers.php
- * @param int $method <p>
- * One of the layer method constants.
- * </p>
- * @return Imagick <b>TRUE</b> on success.
- */
- public function compareImageLayers ($method) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Quickly fetch attributes
- * @link https://php.net/manual/en/imagick.pingimageblob.php
- * @param string $image <p>
- * A string containing the image.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function pingImageBlob ($image) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Get basic image attributes in a lightweight manner
- * @link https://php.net/manual/en/imagick.pingimagefile.php
- * @param resource $filehandle <p>
- * An open filehandle to the image.
- * </p>
- * @param string $fileName [optional] <p>
- * Optional filename for this image.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function pingImageFile ($filehandle, $fileName = null) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creates a vertical mirror image
- * @link https://php.net/manual/en/imagick.transposeimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function transposeImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creates a horizontal mirror image
- * @link https://php.net/manual/en/imagick.transverseimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function transverseImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Remove edges from the image
- * @link https://php.net/manual/en/imagick.trimimage.php
- * @param float $fuzz <p>
- * By default target must match a particular pixel color exactly.
- * However, in many cases two colors may differ by a small amount.
- * The fuzz member of image defines how much tolerance is acceptable
- * to consider two colors as the same. This parameter represents the variation
- * on the quantum range.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function trimImage ($fuzz) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Applies wave filter to the image
- * @link https://php.net/manual/en/imagick.waveimage.php
- * @param float $amplitude <p>
- * The amplitude of the wave.
- * </p>
- * @param float $length <p>
- * The length of the wave.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function waveImage ($amplitude, $length) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds vignette filter to the image
- * @link https://php.net/manual/en/imagick.vignetteimage.php
- * @param float $blackPoint <p>
- * The black point.
- * </p>
- * @param float $whitePoint <p>
- * The white point
- * </p>
- * @param int $x <p>
- * X offset of the ellipse
- * </p>
- * @param int $y <p>
- * Y offset of the ellipse
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function vignetteImage ($blackPoint, $whitePoint, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Discards all but one of any pixel color
- * @link https://php.net/manual/en/imagick.uniqueimagecolors.php
- * @return bool <b>TRUE</b> on success.
- */
- public function uniqueImageColors () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Return if the image has a matte channel
- * @link https://php.net/manual/en/imagick.getimagematte.php
- * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
- */
- public function getImageMatte () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image matte channel
- * @link https://php.net/manual/en/imagick.setimagematte.php
- * @param bool $matte <p>
- * True activates the matte channel and false disables it.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageMatte ($matte) {}
-
- /**
- * Adaptively resize image with data dependent triangulation
- *
- * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.<br>
- * If false, the calculations should produce the same results as ImageMagick CLI does.<br>
- * <br>
- * <b>Note:</b> The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched.
- * In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @link https://php.net/manual/en/imagick.adaptiveresizeimage.php
- * @param int $columns The number of columns in the scaled image.
- * @param int $rows The number of rows in the scaled image.
- * @param bool $bestfit [optional] Whether to fit the image inside a bounding box.<br>
- * The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool TRUE on success
- * @throws ImagickException Throws ImagickException on error
- * @since 2.0.0
- */
- public function adaptiveResizeImage ($columns, $rows, $bestfit = false, $legacy = false) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Simulates a pencil sketch
- * @link https://php.net/manual/en/imagick.sketchimage.php
- * @param float $radius <p>
- * The radius of the Gaussian, in pixels, not counting the center pixel
- * </p>
- * @param float $sigma <p>
- * The standard deviation of the Gaussian, in pixels.
- * </p>
- * @param float $angle <p>
- * Apply the effect along this angle.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function sketchImage ($radius, $sigma, $angle) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creates a 3D effect
- * @link https://php.net/manual/en/imagick.shadeimage.php
- * @param bool $gray <p>
- * A value other than zero shades the intensity of each pixel.
- * </p>
- * @param float $azimuth <p>
- * Defines the light source direction.
- * </p>
- * @param float $elevation <p>
- * Defines the light source direction.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function shadeImage ($gray, $azimuth, $elevation) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the size offset
- * @link https://php.net/manual/en/imagick.getsizeoffset.php
- * @return int the size offset associated with the Imagick object.
- */
- public function getSizeOffset () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the size and offset of the Imagick object
- * @link https://php.net/manual/en/imagick.setsizeoffset.php
- * @param int $columns <p>
- * The width in pixels.
- * </p>
- * @param int $rows <p>
- * The height in pixels.
- * </p>
- * @param int $offset <p>
- * The image offset.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setSizeOffset ($columns, $rows, $offset) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds adaptive blur filter to image
- * @link https://php.net/manual/en/imagick.adaptiveblurimage.php
- * @param float $radius <p>
- * The radius of the Gaussian, in pixels, not counting the center pixel.
- * Provide a value of 0 and the radius will be chosen automagically.
- * </p>
- * @param float $sigma <p>
- * The standard deviation of the Gaussian, in pixels.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function adaptiveBlurImage ($radius, $sigma, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Enhances the contrast of a color image
- * @link https://php.net/manual/en/imagick.contraststretchimage.php
- * @param float $black_point <p>
- * The black point.
- * </p>
- * @param float $white_point <p>
- * The white point.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. <b>Imagick::CHANNEL_ALL</b>. Refer to this
- * list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function contrastStretchImage ($black_point, $white_point, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adaptively sharpen the image
- * @link https://php.net/manual/en/imagick.adaptivesharpenimage.php
- * @param float $radius <p>
- * The radius of the Gaussian, in pixels, not counting the center pixel. Use 0 for auto-select.
- * </p>
- * @param float $sigma <p>
- * The standard deviation of the Gaussian, in pixels.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function adaptiveSharpenImage ($radius, $sigma, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creates a high-contrast, two-color image
- * @link https://php.net/manual/en/imagick.randomthresholdimage.php
- * @param float $low <p>
- * The low point
- * </p>
- * @param float $high <p>
- * The high point
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function randomThresholdImage ($low, $high, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * @param $xRounding
- * @param $yRounding
- * @param $strokeWidth [optional]
- * @param $displace [optional]
- * @param $sizeCorrection [optional]
- */
- public function roundCornersImage ($xRounding, $yRounding, $strokeWidth, $displace, $sizeCorrection) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Rounds image corners
- * @link https://php.net/manual/en/imagick.roundcorners.php
- * @param float $x_rounding <p>
- * x rounding
- * </p>
- * @param float $y_rounding <p>
- * y rounding
- * </p>
- * @param float $stroke_width [optional] <p>
- * stroke width
- * </p>
- * @param float $displace [optional] <p>
- * image displace
- * </p>
- * @param float $size_correction [optional] <p>
- * size correction
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function roundCorners ($x_rounding, $y_rounding, $stroke_width = 10.0, $displace = 5.0, $size_correction = -6.0) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Set the iterator position
- * @link https://php.net/manual/en/imagick.setiteratorindex.php
- * @param int $index <p>
- * The position to set the iterator to
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setIteratorIndex ($index) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the index of the current active image
- * @link https://php.net/manual/en/imagick.getiteratorindex.php
- * @return int an integer containing the index of the image in the stack.
- */
- public function getIteratorIndex () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Convenience method for setting crop size and the image geometry
- * @link https://php.net/manual/en/imagick.transformimage.php
- * @param string $crop <p>
- * A crop geometry string. This geometry defines a subregion of the image to crop.
- * </p>
- * @param string $geometry <p>
- * An image geometry string. This geometry defines the final size of the image.
- * </p>
- * @return Imagick <b>TRUE</b> on success.
- */
- public function transformImage ($crop, $geometry) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image opacity level
- * @link https://php.net/manual/en/imagick.setimageopacity.php
- * @param float $opacity <p>
- * The level of transparency: 1.0 is fully opaque and 0.0 is fully
- * transparent.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageOpacity ($opacity) {}
-
- /**
- * (PECL imagick 2.2.2)<br/>
- * Performs an ordered dither
- * @link https://php.net/manual/en/imagick.orderedposterizeimage.php
- * @param string $threshold_map <p>
- * A string containing the name of the threshold dither map to use
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function orderedPosterizeImage ($threshold_map, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Simulates a Polaroid picture
- * @link https://php.net/manual/en/imagick.polaroidimage.php
- * @param ImagickDraw $properties <p>
- * The polaroid properties
- * </p>
- * @param float $angle <p>
- * The polaroid angle
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function polaroidImage (ImagickDraw $properties, $angle) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the named image property
- * @link https://php.net/manual/en/imagick.getimageproperty.php
- * @param string $name <p>
- * name of the property (for example Exif:DateTime)
- * </p>
- * @return string|false a string containing the image property, false if a
- * property with the given name does not exist.
- */
- public function getImageProperty ($name) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets an image property
- * @link https://php.net/manual/en/imagick.setimageproperty.php
- * @param string $name
- * @param string $value
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageProperty ($name, $value) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image interpolate pixel method
- * @link https://php.net/manual/en/imagick.setimageinterpolatemethod.php
- * @param int $method <p>
- * The method is one of the <b>Imagick::INTERPOLATE_*</b> constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageInterpolateMethod ($method) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the interpolation method
- * @link https://php.net/manual/en/imagick.getimageinterpolatemethod.php
- * @return int the interpolate method on success.
- */
- public function getImageInterpolateMethod () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Stretches with saturation the image intensity
- * @link https://php.net/manual/en/imagick.linearstretchimage.php
- * @param float $blackPoint <p>
- * The image black point
- * </p>
- * @param float $whitePoint <p>
- * The image white point
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function linearStretchImage ($blackPoint, $whitePoint) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the image length in bytes
- * @link https://php.net/manual/en/imagick.getimagelength.php
- * @return int an int containing the current image size.
- */
- public function getImageLength () {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Set image size
- * @link https://php.net/manual/en/imagick.extentimage.php
- * @param int $width <p>
- * The new width
- * </p>
- * @param int $height <p>
- * The new height
- * </p>
- * @param int $x <p>
- * X position for the new size
- * </p>
- * @param int $y <p>
- * Y position for the new size
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function extentImage ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image orientation
- * @link https://php.net/manual/en/imagick.getimageorientation.php
- * @return int an int on success.
- */
- public function getImageOrientation () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image orientation
- * @link https://php.net/manual/en/imagick.setimageorientation.php
- * @param int $orientation <p>
- * One of the orientation constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageOrientation ($orientation) {}
-
- /**
- * (PECL imagick 2.1.0)<br/>
- * Changes the color value of any pixel that matches target
- * @link https://php.net/manual/en/imagick.paintfloodfillimage.php
- * @param mixed $fill <p>
- * ImagickPixel object or a string containing the fill color
- * </p>
- * @param float $fuzz <p>
- * The amount of fuzz. For example, set fuzz to 10 and the color red at
- * intensities of 100 and 102 respectively are now interpreted as the
- * same color for the purposes of the floodfill.
- * </p>
- * @param mixed $bordercolor <p>
- * ImagickPixel object or a string containing the border color
- * </p>
- * @param int $x <p>
- * X start position of the floodfill
- * </p>
- * @param int $y <p>
- * Y start position of the floodfill
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function paintFloodfillImage ($fill, $fuzz, $bordercolor, $x, $y, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Replaces colors in the image from a color lookup table. Optional second parameter to replace colors in a specific channel. This method is available if Imagick has been compiled against ImageMagick version 6.3.6 or newer.
- * @link https://php.net/manual/en/imagick.clutimage.php
- * @param Imagick $lookup_table <p>
- * Imagick object containing the color lookup table
- * </p>
- * @param int $channel [optional] <p>
- * The Channeltype
- * constant. When not supplied, default channels are replaced.
- * </p>
- * @return bool <b>TRUE</b> on success.
- * @since 2.0.0
- */
- public function clutImage (Imagick $lookup_table, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the image properties
- * @link https://php.net/manual/en/imagick.getimageproperties.php
- * @param string $pattern [optional] <p>
- * The pattern for property names.
- * </p>
- * @param bool $only_names [optional] <p>
- * Whether to return only property names. If <b>FALSE</b> then also the values are returned
- * </p>
- * @return array an array containing the image properties or property names.
- */
- public function getImageProperties ($pattern = "*", $only_names = true) {}
-
- /**
- * (PECL imagick 2.2.0)<br/>
- * Returns the image profiles
- * @link https://php.net/manual/en/imagick.getimageprofiles.php
- * @param string $pattern [optional] <p>
- * The pattern for profile names.
- * </p>
- * @param bool $include_values [optional] <p>
- * Whether to return only profile names. If <b>FALSE</b> then only profile names will be returned.
- * </p>
- * @return array an array containing the image profiles or profile names.
- */
- public function getImageProfiles ($pattern = "*", $include_values = true) {}
-
- /**
- * (PECL imagick 2.0.1)<br/>
- * Distorts an image using various distortion methods
- * @link https://php.net/manual/en/imagick.distortimage.php
- * @param int $method <p>
- * The method of image distortion. See distortion constants
- * </p>
- * @param array $arguments <p>
- * The arguments for this distortion method
- * </p>
- * @param bool $bestfit <p>
- * Attempt to resize destination to fit distorted source
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function distortImage ($method, array $arguments, $bestfit) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Writes an image to a filehandle
- * @link https://php.net/manual/en/imagick.writeimagefile.php
- * @param resource $filehandle <p>
- * Filehandle where to write the image
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function writeImageFile ($filehandle) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Writes frames to a filehandle
- * @link https://php.net/manual/en/imagick.writeimagesfile.php
- * @param resource $filehandle <p>
- * Filehandle where to write the images
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function writeImagesFile ($filehandle) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Reset image page
- * @link https://php.net/manual/en/imagick.resetimagepage.php
- * @param string $page <p>
- * The page definition. For example 7168x5147+0+0
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function resetImagePage ($page) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Sets image clip mask
- * @link https://php.net/manual/en/imagick.setimageclipmask.php
- * @param Imagick $clip_mask <p>
- * The Imagick object containing the clip mask
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageClipMask (Imagick $clip_mask) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Gets image clip mask
- * @link https://php.net/manual/en/imagick.getimageclipmask.php
- * @return Imagick an Imagick object containing the clip mask.
- */
- public function getImageClipMask () {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Animates an image or images
- * @link https://php.net/manual/en/imagick.animateimages.php
- * @param string $x_server <p>
- * X server address
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function animateImages ($x_server) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Recolors image
- * @link https://php.net/manual/en/imagick.recolorimage.php
- * @param array $matrix <p>
- * The matrix containing the color values
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function recolorImage (array $matrix) {}
-
- /**
- * (PECL imagick 2.1.0)<br/>
- * Sets font
- * @link https://php.net/manual/en/imagick.setfont.php
- * @param string $font <p>
- * Font name or a filename
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setFont ($font) {}
-
- /**
- * (PECL imagick 2.1.0)<br/>
- * Gets font
- * @link https://php.net/manual/en/imagick.getfont.php
- * @return string|false the string containing the font name or <b>FALSE</b> if not font is set.
- */
- public function getFont () {}
-
- /**
- * (PECL imagick 2.1.0)<br/>
- * Sets point size
- * @link https://php.net/manual/en/imagick.setpointsize.php
- * @param float $point_size <p>
- * Point size
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setPointSize ($point_size) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Gets point size
- * @link https://php.net/manual/en/imagick.getpointsize.php
- * @return float a float containing the point size.
- */
- public function getPointSize () {}
-
- /**
- * (PECL imagick 2.1.0)<br/>
- * Merges image layers
- * @link https://php.net/manual/en/imagick.mergeimagelayers.php
- * @param int $layer_method <p>
- * One of the <b>Imagick::LAYERMETHOD_*</b> constants
- * </p>
- * @return Imagick Returns an Imagick object containing the merged image.
- * @throws ImagickException
- */
- public function mergeImageLayers ($layer_method) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Sets image alpha channel
- * @link https://php.net/manual/en/imagick.setimagealphachannel.php
- * @param int $mode <p>
- * One of the <b>Imagick::ALPHACHANNEL_*</b> constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageAlphaChannel ($mode) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Changes the color value of any pixel that matches target
- * @link https://php.net/manual/en/imagick.floodfillpaintimage.php
- * @param mixed $fill <p>
- * ImagickPixel object or a string containing the fill color
- * </p>
- * @param float $fuzz <p>
- * The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.
- * </p>
- * @param mixed $target <p>
- * ImagickPixel object or a string containing the target color to paint
- * </p>
- * @param int $x <p>
- * X start position of the floodfill
- * </p>
- * @param int $y <p>
- * Y start position of the floodfill
- * </p>
- * @param bool $invert <p>
- * If <b>TRUE</b> paints any pixel that does not match the target color.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function floodFillPaintImage ($fill, $fuzz, $target, $x, $y, $invert, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Changes the color value of any pixel that matches target
- * @link https://php.net/manual/en/imagick.opaquepaintimage.php
- * @param mixed $target <p>
- * ImagickPixel object or a string containing the color to change
- * </p>
- * @param mixed $fill <p>
- * The replacement color
- * </p>
- * @param float $fuzz <p>
- * The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.
- * </p>
- * @param bool $invert <p>
- * If <b>TRUE</b> paints any pixel that does not match the target color.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function opaquePaintImage ($target, $fill, $fuzz, $invert, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Paints pixels transparent
- * @link https://php.net/manual/en/imagick.transparentpaintimage.php
- * @param mixed $target <p>
- * The target color to paint
- * </p>
- * @param float $alpha <p>
- * The level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.
- * </p>
- * @param float $fuzz <p>
- * The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.
- * </p>
- * @param bool $invert <p>
- * If <b>TRUE</b> paints any pixel that does not match the target color.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function transparentPaintImage ($target, $alpha, $fuzz, $invert) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Animates an image or images
- * @link https://php.net/manual/en/imagick.liquidrescaleimage.php
- * @param int $width <p>
- * The width of the target size
- * </p>
- * @param int $height <p>
- * The height of the target size
- * </p>
- * @param float $delta_x <p>
- * How much the seam can traverse on x-axis.
- * Passing 0 causes the seams to be straight.
- * </p>
- * @param float $rigidity <p>
- * Introduces a bias for non-straight seams. This parameter is
- * typically 0.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function liquidRescaleImage ($width, $height, $delta_x, $rigidity) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Enciphers an image
- * @link https://php.net/manual/en/imagick.encipherimage.php
- * @param string $passphrase <p>
- * The passphrase
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function encipherImage ($passphrase) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Deciphers an image
- * @link https://php.net/manual/en/imagick.decipherimage.php
- * @param string $passphrase <p>
- * The passphrase
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function decipherImage ($passphrase) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Sets the gravity
- * @link https://php.net/manual/en/imagick.setgravity.php
- * @param int $gravity <p>
- * The gravity property. Refer to the list of
- * gravity constants.
- * </p>
- * @return bool No value is returned.
- */
- public function setGravity ($gravity) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Gets the gravity
- * @link https://php.net/manual/en/imagick.getgravity.php
- * @return int the gravity property. Refer to the list of
- * gravity constants.
- */
- public function getGravity () {}
-
- /**
- * (PECL imagick 2.2.1)<br/>
- * Gets channel range
- * @link https://php.net/manual/en/imagick.getimagechannelrange.php
- * @param int $channel <p>
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
- * </p>
- * @return array an array containing minima and maxima values of the channel(s).
- */
- public function getImageChannelRange ($channel) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Gets the image alpha channel
- * @link https://php.net/manual/en/imagick.getimagealphachannel.php
- * @return int a constant defining the current alpha channel value. Refer to this
- * list of alpha channel constants.
- */
- public function getImageAlphaChannel () {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Gets channel distortions
- * @link https://php.net/manual/en/imagick.getimagechanneldistortions.php
- * @param Imagick $reference <p>
- * Imagick object containing the reference image
- * </p>
- * @param int $metric <p>
- * Refer to this list of metric type constants.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
- * </p>
- * @return float a float describing the channel distortion.
- */
- public function getImageChannelDistortions (Imagick $reference, $metric, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Sets the image gravity
- * @link https://php.net/manual/en/imagick.setimagegravity.php
- * @param int $gravity <p>
- * The gravity property. Refer to the list of
- * gravity constants.
- * </p>
- * @return bool No value is returned.
- */
- public function setImageGravity ($gravity) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Gets the image gravity
- * @link https://php.net/manual/en/imagick.getimagegravity.php
- * @return int the images gravity property. Refer to the list of
- * gravity constants.
- */
- public function getImageGravity () {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Imports image pixels
- * @link https://php.net/manual/en/imagick.importimagepixels.php
- * @param int $x <p>
- * The image x position
- * </p>
- * @param int $y <p>
- * The image y position
- * </p>
- * @param int $width <p>
- * The image width
- * </p>
- * @param int $height <p>
- * The image height
- * </p>
- * @param string $map <p>
- * Map of pixel ordering as a string. This can be for example RGB.
- * The value can be any combination or order of R = red, G = green, B = blue, A = alpha (0 is transparent),
- * O = opacity (0 is opaque), C = cyan, Y = yellow, M = magenta, K = black, I = intensity (for grayscale), P = pad.
- * </p>
- * @param int $storage <p>
- * The pixel storage method.
- * Refer to this list of pixel constants.
- * </p>
- * @param array $pixels <p>
- * The array of pixels
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function importImagePixels ($x, $y, $width, $height, $map, $storage, array $pixels) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Removes skew from the image
- * @link https://php.net/manual/en/imagick.deskewimage.php
- * @param float $threshold <p>
- * Deskew threshold
- * </p>
- * @return bool
- */
- public function deskewImage ($threshold) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Segments an image
- * @link https://php.net/manual/en/imagick.segmentimage.php
- * @param int $COLORSPACE <p>
- * One of the COLORSPACE constants.
- * </p>
- * @param float $cluster_threshold <p>
- * A percentage describing minimum number of pixels
- * contained in hexedra before it is considered valid.
- * </p>
- * @param float $smooth_threshold <p>
- * Eliminates noise from the histogram.
- * </p>
- * @param bool $verbose [optional] <p>
- * Whether to output detailed information about recognised classes.
- * </p>
- * @return bool
- */
- public function segmentImage ($COLORSPACE, $cluster_threshold, $smooth_threshold, $verbose = false) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Interpolates colors
- * @link https://php.net/manual/en/imagick.sparsecolorimage.php
- * @param int $SPARSE_METHOD <p>
- * Refer to this list of sparse method constants
- * </p>
- * @param array $arguments <p>
- * An array containing the coordinates.
- * The array is in format array(1,1, 2,45)
- * </p>
- * @param int $channel [optional]
- * @return bool <b>TRUE</b> on success.
- */
- public function sparseColorImage ($SPARSE_METHOD, array $arguments, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Remaps image colors
- * @link https://php.net/manual/en/imagick.remapimage.php
- * @param Imagick $replacement <p>
- * An Imagick object containing the replacement colors
- * </p>
- * @param int $DITHER <p>
- * Refer to this list of dither method constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function remapImage (Imagick $replacement, $DITHER) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Exports raw image pixels
- * @link https://php.net/manual/en/imagick.exportimagepixels.php
- * @param int $x <p>
- * X-coordinate of the exported area
- * </p>
- * @param int $y <p>
- * Y-coordinate of the exported area
- * </p>
- * @param int $width <p>
- * Width of the exported aread
- * </p>
- * @param int $height <p>
- * Height of the exported area
- * </p>
- * @param string $map <p>
- * Ordering of the exported pixels. For example "RGB".
- * Valid characters for the map are R, G, B, A, O, C, Y, M, K, I and P.
- * </p>
- * @param int $STORAGE <p>
- * Refer to this list of pixel type constants
- * </p>
- * @return array an array containing the pixels values.
- */
- public function exportImagePixels ($x, $y, $width, $height, $map, $STORAGE) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * The getImageChannelKurtosis purpose
- * @link https://php.net/manual/en/imagick.getimagechannelkurtosis.php
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
- * </p>
- * @return array an array with kurtosis and skewness
- * members.
- */
- public function getImageChannelKurtosis ($channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Applies a function on the image
- * @link https://php.net/manual/en/imagick.functionimage.php
- * @param int $function <p>
- * Refer to this list of function constants
- * </p>
- * @param array $arguments <p>
- * Array of arguments to pass to this function.
- * </p>
- * @param int $channel [optional]
- * @return bool <b>TRUE</b> on success.
- */
- public function functionImage ($function, array $arguments, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * @param $COLORSPACE
- */
- public function transformImageColorspace ($COLORSPACE) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Replaces colors in the image
- * @link https://php.net/manual/en/imagick.haldclutimage.php
- * @param Imagick $clut <p>
- * Imagick object containing the Hald lookup image.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function haldClutImage (Imagick $clut, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * @param $CHANNEL [optional]
- */
- public function autoLevelImage ($CHANNEL) {}
-
- /**
- * @param $factor [optional]
- */
- public function blueShiftImage ($factor) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Get image artifact
- * @link https://php.net/manual/en/imagick.getimageartifact.php
- * @param string $artifact <p>
- * The name of the artifact
- * </p>
- * @return string the artifact value on success.
- */
- public function getImageArtifact ($artifact) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Set image artifact
- * @link https://php.net/manual/en/imagick.setimageartifact.php
- * @param string $artifact <p>
- * The name of the artifact
- * </p>
- * @param string $value <p>
- * The value of the artifact
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageArtifact ($artifact, $value) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Delete image artifact
- * @link https://php.net/manual/en/imagick.deleteimageartifact.php
- * @param string $artifact <p>
- * The name of the artifact to delete
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function deleteImageArtifact ($artifact) {}
-
- /**
- * (PECL imagick 0.9.10-0.9.9)<br/>
- * Gets the colorspace
- * @link https://php.net/manual/en/imagick.getcolorspace.php
- * @return int an integer which can be compared against COLORSPACE constants.
- */
- public function getColorspace () {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Set colorspace
- * @link https://php.net/manual/en/imagick.setcolorspace.php
- * @param int $COLORSPACE <p>
- * One of the COLORSPACE constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setColorspace ($COLORSPACE) {}
-
- /**
- * @param $CHANNEL [optional]
- */
- public function clampImage ($CHANNEL) {}
-
- /**
- * @param $stack
- * @param $offset
- */
- public function smushImages ($stack, $offset) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * The Imagick constructor
- * @link https://php.net/manual/en/imagick.construct.php
- * @param mixed $files <p>
- * The path to an image to load or an array of paths. Paths can include
- * wildcards for file names, or can be URLs.
- * </p>
- * @throws ImagickException Throws ImagickException on error.
- */
- public function __construct ($files = null) {}
-
- /**
- * @return string
- */
- public function __toString () {}
-
- public function count () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns a MagickPixelIterator
- * @link https://php.net/manual/en/imagick.getpixeliterator.php
- * @return ImagickPixelIterator an ImagickPixelIterator on success.
- */
- public function getPixelIterator () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Get an ImagickPixelIterator for an image section
- * @link https://php.net/manual/en/imagick.getpixelregioniterator.php
- * @param int $x <p>
- * The x-coordinate of the region.
- * </p>
- * @param int $y <p>
- * The y-coordinate of the region.
- * </p>
- * @param int $columns <p>
- * The width of the region.
- * </p>
- * @param int $rows <p>
- * The height of the region.
- * </p>
- * @return ImagickPixelIterator an ImagickPixelIterator for an image section.
- */
- public function getPixelRegionIterator ($x, $y, $columns, $rows) {}
-
- /**
- * (PECL imagick 0.9.0-0.9.9)<br/>
- * Reads image from filename
- * @link https://php.net/manual/en/imagick.readimage.php
- * @param string $filename
- * @return bool <b>TRUE</b> on success.
- * @throws ImagickException Throws ImagickException on error.
- */
- public function readImage ($filename) {}
-
- /**
- * @param $filenames
- * @throws ImagickException Throws ImagickException on error.
- */
- public function readImages ($filenames) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Reads image from a binary string
- * @link https://php.net/manual/en/imagick.readimageblob.php
- * @param string $image
- * @param string $filename [optional]
- * @return bool <b>TRUE</b> on success.
- * @throws ImagickException Throws ImagickException on error.
- */
- public function readImageBlob ($image, $filename = null) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the format of a particular image
- * @link https://php.net/manual/en/imagick.setimageformat.php
- * @param string $format <p>
- * String presentation of the image format. Format support
- * depends on the ImageMagick installation.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageFormat ($format) {}
-
- /**
- * Scales the size of an image to the given dimensions. Passing zero as either of the arguments will preserve dimension while scaling.<br>
- * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.<br>
- * If false, the calculations should produce the same results as ImageMagick CLI does.
- * @link https://php.net/manual/en/imagick.scaleimage.php
- * @param int $cols
- * @param int $rows
- * @param bool $bestfit [optional] The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool <b>TRUE</b> on success.
- * @throws ImagickException Throws ImagickException on error
- * @since 2.0.0
- */
- public function scaleImage ($cols, $rows, $bestfit = false, $legacy = false) {}
-
- /**
- * (PECL imagick 0.9.0-0.9.9)<br/>
- * Writes an image to the specified filename
- * @link https://php.net/manual/en/imagick.writeimage.php
- * @param string $filename [optional] <p>
- * Filename where to write the image. The extension of the filename
- * defines the type of the file.
- * Format can be forced regardless of file extension using format: prefix,
- * for example "jpg:test.png".
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function writeImage ($filename = null) {}
-
- /**
- * (PECL imagick 0.9.0-0.9.9)<br/>
- * Writes an image or image sequence
- * @link https://php.net/manual/en/imagick.writeimages.php
- * @param string $filename
- * @param bool $adjoin
- * @return bool <b>TRUE</b> on success.
- */
- public function writeImages ($filename, $adjoin) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds blur filter to image
- * @link https://php.net/manual/en/imagick.blurimage.php
- * @param float $radius <p>
- * Blur radius
- * </p>
- * @param float $sigma <p>
- * Standard deviation
- * </p>
- * @param int $channel [optional] <p>
- * The Channeltype
- * constant. When not supplied, all channels are blurred.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function blurImage ($radius, $sigma, $channel = null) {}
-
- /**
- * Changes the size of an image to the given dimensions and removes any associated profiles.<br>
- * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.<br>
- * If false, the calculations should produce the same results as ImageMagick CLI does.<br>
- * <br>
- * <b>Note:</b> The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @link https://php.net/manual/en/imagick.thumbnailimage.php
- * @param int $columns <p>
- * Image width
- * </p>
- * @param int $rows <p>
- * Image height
- * </p>
- * @param bool $bestfit [optional] <p>
- * Whether to force maximum values
- * </p>
- * The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @param bool $fill [optional]
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool <b>TRUE</b> on success.
- * @since 2.0.0
- */
- public function thumbnailImage ($columns, $rows, $bestfit = false, $fill = false, $legacy = false) {}
-
- /**
- * Creates a cropped thumbnail at the requested size.
- * If legacy is true, uses the incorrect behaviour that was present until Imagick 3.4.0.
- * If false it uses the correct behaviour.
- * @link https://php.net/manual/en/imagick.cropthumbnailimage.php
- * @param int $width The width of the thumbnail
- * @param int $height The Height of the thumbnail
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool TRUE on succes
- * @throws ImagickException Throws ImagickException on error
- * @since 2.0.0
- */
- public function cropThumbnailImage ($width, $height, $legacy = false) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the filename of a particular image in a sequence
- * @link https://php.net/manual/en/imagick.getimagefilename.php
- * @return string a string with the filename of the image.
- */
- public function getImageFilename () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the filename of a particular image
- * @link https://php.net/manual/en/imagick.setimagefilename.php
- * @param string $filename
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageFilename ($filename) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the format of a particular image in a sequence
- * @link https://php.net/manual/en/imagick.getimageformat.php
- * @return string a string containing the image format on success.
- */
- public function getImageFormat () {}
-
- /**
- * @link https://secure.php.net/manual/en/imagick.getimagemimetype.php
- * @return string Returns the image mime-type.
- */
- public function getImageMimeType () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Removes an image from the image list
- * @link https://php.net/manual/en/imagick.removeimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function removeImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Destroys the Imagick object
- * @link https://php.net/manual/en/imagick.destroy.php
- * @return bool <b>TRUE</b> on success.
- */
- public function destroy () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Clears all resources associated to Imagick object
- * @link https://php.net/manual/en/imagick.clear.php
- * @return bool <b>TRUE</b> on success.
- */
- public function clear () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the image length in bytes
- * @link https://php.net/manual/en/imagick.getimagesize.php
- * @return int an int containing the current image size.
- * @deprecated use {@see Imagick::getImageLength()} instead
- */
- public function getImageSize () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the image sequence as a blob
- * @link https://php.net/manual/en/imagick.getimageblob.php
- * @return string a string containing the image.
- */
- public function getImageBlob () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns all image sequences as a blob
- * @link https://php.net/manual/en/imagick.getimagesblob.php
- * @return string a string containing the images. On failure, throws ImagickException on failure
- * @throws ImagickException on failure
- */
- public function getImagesBlob () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the Imagick iterator to the first image
- * @link https://php.net/manual/en/imagick.setfirstiterator.php
- * @return bool <b>TRUE</b> on success.
- */
- public function setFirstIterator () {}
-
- /**
- * (PECL imagick 2.0.1)<br/>
- * Sets the Imagick iterator to the last image
- * @link https://php.net/manual/en/imagick.setlastiterator.php
- * @return bool <b>TRUE</b> on success.
- */
- public function setLastIterator () {}
-
- public function resetIterator () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Move to the previous image in the object
- * @link https://php.net/manual/en/imagick.previousimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function previousImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Moves to the next image
- * @link https://php.net/manual/en/imagick.nextimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function nextImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Checks if the object has a previous image
- * @link https://php.net/manual/en/imagick.haspreviousimage.php
- * @return bool <b>TRUE</b> if the object has more images when traversing the list in the
- * reverse direction, returns <b>FALSE</b> if there are none.
- */
- public function hasPreviousImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Checks if the object has more images
- * @link https://php.net/manual/en/imagick.hasnextimage.php
- * @return bool <b>TRUE</b> if the object has more images when traversing the list in the
- * forward direction, returns <b>FALSE</b> if there are none.
- */
- public function hasNextImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Set the iterator position
- * @link https://php.net/manual/en/imagick.setimageindex.php
- * @param int $index <p>
- * The position to set the iterator to
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageIndex ($index) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the index of the current active image
- * @link https://php.net/manual/en/imagick.getimageindex.php
- * @return int an integer containing the index of the image in the stack.
- */
- public function getImageIndex () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds a comment to your image
- * @link https://php.net/manual/en/imagick.commentimage.php
- * @param string $comment <p>
- * The comment to add
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function commentImage ($comment) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Extracts a region of the image
- * @link https://php.net/manual/en/imagick.cropimage.php
- * @param int $width <p>
- * The width of the crop
- * </p>
- * @param int $height <p>
- * The height of the crop
- * </p>
- * @param int $x <p>
- * The X coordinate of the cropped region's top left corner
- * </p>
- * @param int $y <p>
- * The Y coordinate of the cropped region's top left corner
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function cropImage ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds a label to an image
- * @link https://php.net/manual/en/imagick.labelimage.php
- * @param string $label <p>
- * The label to add
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function labelImage ($label) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the width and height as an associative array
- * @link https://php.net/manual/en/imagick.getimagegeometry.php
- * @return array an array with the width/height of the image.
- */
- public function getImageGeometry () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Renders the ImagickDraw object on the current image
- * @link https://php.net/manual/en/imagick.drawimage.php
- * @param ImagickDraw $draw <p>
- * The drawing operations to render on the image.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function drawImage (ImagickDraw $draw) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Sets the image compression quality
- * @link https://php.net/manual/en/imagick.setimagecompressionquality.php
- * @param int $quality <p>
- * The image compression quality as an integer
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageCompressionQuality ($quality) {}
-
- /**
- * (PECL imagick 2.2.2)<br/>
- * Gets the current image's compression quality
- * @link https://php.net/manual/en/imagick.getimagecompressionquality.php
- * @return int integer describing the images compression quality
- */
- public function getImageCompressionQuality () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Annotates an image with text
- * @link https://php.net/manual/en/imagick.annotateimage.php
- * @param ImagickDraw $draw_settings <p>
- * The ImagickDraw object that contains settings for drawing the text
- * </p>
- * @param float $x <p>
- * Horizontal offset in pixels to the left of text
- * </p>
- * @param float $y <p>
- * Vertical offset in pixels to the baseline of text
- * </p>
- * @param float $angle <p>
- * The angle at which to write the text
- * </p>
- * @param string $text <p>
- * The string to draw
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function annotateImage (ImagickDraw $draw_settings, $x, $y, $angle, $text) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Composite one image onto another
- * @link https://php.net/manual/en/imagick.compositeimage.php
- * @param Imagick $composite_object <p>
- * Imagick object which holds the composite image
- * </p>
- * @param int $composite Composite operator
- * @param int $x <p>
- * The column offset of the composited image
- * </p>
- * @param int $y <p>
- * The row offset of the composited image
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function compositeImage (Imagick $composite_object, $composite, $x, $y, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Control the brightness, saturation, and hue
- * @link https://php.net/manual/en/imagick.modulateimage.php
- * @param float $brightness
- * @param float $saturation
- * @param float $hue
- * @return bool <b>TRUE</b> on success.
- */
- public function modulateImage ($brightness, $saturation, $hue) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the number of unique colors in the image
- * @link https://php.net/manual/en/imagick.getimagecolors.php
- * @return int <b>TRUE</b> on success.
- */
- public function getImageColors () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creates a composite image
- * @link https://php.net/manual/en/imagick.montageimage.php
- * @param ImagickDraw $draw <p>
- * The font name, size, and color are obtained from this object.
- * </p>
- * @param string $tile_geometry <p>
- * The number of tiles per row and page (e.g. 6x4+0+0).
- * </p>
- * @param string $thumbnail_geometry <p>
- * Preferred image size and border size of each thumbnail
- * (e.g. 120x120+4+3>).
- * </p>
- * @param int $mode <p>
- * Thumbnail framing mode, see Montage Mode constants.
- * </p>
- * @param string $frame <p>
- * Surround the image with an ornamental border (e.g. 15x15+3+3). The
- * frame color is that of the thumbnail's matte color.
- * </p>
- * @return Imagick <b>TRUE</b> on success.
- */
- public function montageImage (ImagickDraw $draw, $tile_geometry, $thumbnail_geometry, $mode, $frame) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Identifies an image and fetches attributes
- * @link https://php.net/manual/en/imagick.identifyimage.php
- * @param bool $appendRawOutput [optional]
- * @return array Identifies an image and returns the attributes. Attributes include
- * the image width, height, size, and others.
- */
- public function identifyImage ($appendRawOutput = false) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Changes the value of individual pixels based on a threshold
- * @link https://php.net/manual/en/imagick.thresholdimage.php
- * @param float $threshold
- * @param int $channel [optional]
- * @return bool <b>TRUE</b> on success.
- */
- public function thresholdImage ($threshold, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Selects a threshold for each pixel based on a range of intensity
- * @link https://php.net/manual/en/imagick.adaptivethresholdimage.php
- * @param int $width <p>
- * Width of the local neighborhood.
- * </p>
- * @param int $height <p>
- * Height of the local neighborhood.
- * </p>
- * @param int $offset <p>
- * The mean offset
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function adaptiveThresholdImage ($width, $height, $offset) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Forces all pixels below the threshold into black
- * @link https://php.net/manual/en/imagick.blackthresholdimage.php
- * @param mixed $threshold <p>
- * The threshold below which everything turns black
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function blackThresholdImage ($threshold) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Force all pixels above the threshold into white
- * @link https://php.net/manual/en/imagick.whitethresholdimage.php
- * @param mixed $threshold
- * @return bool <b>TRUE</b> on success.
- */
- public function whiteThresholdImage ($threshold) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Append a set of images
- * @link https://php.net/manual/en/imagick.appendimages.php
- * @param bool $stack [optional] <p>
- * Whether to stack the images vertically.
- * By default (or if <b>FALSE</b> is specified) images are stacked left-to-right.
- * If <i>stack</i> is <b>TRUE</b>, images are stacked top-to-bottom.
- * </p>
- * @return Imagick Imagick instance on success.
- */
- public function appendImages ($stack = false) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Simulates a charcoal drawing
- * @link https://php.net/manual/en/imagick.charcoalimage.php
- * @param float $radius <p>
- * The radius of the Gaussian, in pixels, not counting the center pixel
- * </p>
- * @param float $sigma <p>
- * The standard deviation of the Gaussian, in pixels
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function charcoalImage ($radius, $sigma) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Enhances the contrast of a color image
- * @link https://php.net/manual/en/imagick.normalizeimage.php
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function normalizeImage ($channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Simulates an oil painting
- * @link https://php.net/manual/en/imagick.oilpaintimage.php
- * @param float $radius <p>
- * The radius of the circular neighborhood.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function oilPaintImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Reduces the image to a limited number of color level
- * @link https://php.net/manual/en/imagick.posterizeimage.php
- * @param int $levels
- * @param bool $dither
- * @return bool <b>TRUE</b> on success.
- */
- public function posterizeImage ($levels, $dither) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Radial blurs an image
- * @link https://php.net/manual/en/imagick.radialblurimage.php
- * @param float $angle
- * @param int $channel [optional]
- * @return bool <b>TRUE</b> on success.
- */
- public function radialBlurImage ($angle, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creates a simulated 3d button-like effect
- * @link https://php.net/manual/en/imagick.raiseimage.php
- * @param int $width
- * @param int $height
- * @param int $x
- * @param int $y
- * @param bool $raise
- * @return bool <b>TRUE</b> on success.
- */
- public function raiseImage ($width, $height, $x, $y, $raise) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Resample image to desired resolution
- * @link https://php.net/manual/en/imagick.resampleimage.php
- * @param float $x_resolution
- * @param float $y_resolution
- * @param int $filter
- * @param float $blur
- * @return bool <b>TRUE</b> on success.
- */
- public function resampleImage ($x_resolution, $y_resolution, $filter, $blur) {}
-
- /**
- * Scales an image to the desired dimensions with one of these filters:<br>
- * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.<br>
- * If false, the calculations should produce the same results as ImageMagick CLI does.<br>
- * <br>
- * <b>Note:</b> The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched.<br>
- * In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
- * @link https://php.net/manual/en/imagick.resizeimage.php
- * @param int $columns Width of the image
- * @param int $rows Height of the image
- * @param int $filter Refer to the list of filter constants.
- * @param float $blur The blur factor where > 1 is blurry, < 1 is sharp.
- * @param bool $bestfit [optional] Added since 2.1.0. Added optional fit parameter. This method now supports proportional scaling. Pass zero as either parameter for proportional scaling
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool TRUE on success
- * @since 2.0.0
- */
- public function resizeImage ($columns, $rows, $filter, $blur, $bestfit = false, $legacy = false) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Offsets an image
- * @link https://php.net/manual/en/imagick.rollimage.php
- * @param int $x <p>
- * The X offset.
- * </p>
- * @param int $y <p>
- * The Y offset.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function rollImage ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Rotates an image
- * @link https://php.net/manual/en/imagick.rotateimage.php
- * @param mixed $background <p>
- * The background color
- * </p>
- * @param float $degrees <p>
- * The number of degrees to rotate the image
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function rotateImage ($background, $degrees) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Scales an image with pixel sampling
- * @link https://php.net/manual/en/imagick.sampleimage.php
- * @param int $columns
- * @param int $rows
- * @return bool <b>TRUE</b> on success.
- */
- public function sampleImage ($columns, $rows) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Applies a solarizing effect to the image
- * @link https://php.net/manual/en/imagick.solarizeimage.php
- * @param int $threshold
- * @return bool <b>TRUE</b> on success.
- */
- public function solarizeImage ($threshold) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Simulates an image shadow
- * @link https://php.net/manual/en/imagick.shadowimage.php
- * @param float $opacity
- * @param float $sigma
- * @param int $x
- * @param int $y
- * @return bool <b>TRUE</b> on success.
- */
- public function shadowImage ($opacity, $sigma, $x, $y) {}
-
- /**
- * @param $key
- * @param $value
- */
- public function setImageAttribute ($key, $value) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image background color
- * @link https://php.net/manual/en/imagick.setimagebackgroundcolor.php
- * @param mixed $background
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageBackgroundColor ($background) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image composite operator
- * @link https://php.net/manual/en/imagick.setimagecompose.php
- * @param int $compose
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageCompose ($compose) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image compression
- * @link https://php.net/manual/en/imagick.setimagecompression.php
- * @param int $compression <p>
- * One of the <b>COMPRESSION</b> constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageCompression ($compression) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image delay
- * @link https://php.net/manual/en/imagick.setimagedelay.php
- * @param int $delay <p>
- * The amount of time expressed in 'ticks' that the image should be
- * displayed for. For animated GIFs there are 100 ticks per second, so a
- * value of 20 would be 20/100 of a second aka 1/5th of a second.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageDelay ($delay) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image depth
- * @link https://php.net/manual/en/imagick.setimagedepth.php
- * @param int $depth
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageDepth ($depth) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image gamma
- * @link https://php.net/manual/en/imagick.setimagegamma.php
- * @param float $gamma
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageGamma ($gamma) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image iterations
- * @link https://php.net/manual/en/imagick.setimageiterations.php
- * @param int $iterations <p>
- * The number of iterations the image should loop over. Set to '0' to loop
- * continuously.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageIterations ($iterations) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image matte color
- * @link https://php.net/manual/en/imagick.setimagemattecolor.php
- * @param mixed $matte
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageMatteColor ($matte) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the page geometry of the image
- * @link https://php.net/manual/en/imagick.setimagepage.php
- * @param int $width
- * @param int $height
- * @param int $x
- * @param int $y
- * @return bool <b>TRUE</b> on success.
- */
- public function setImagePage ($width, $height, $x, $y) {}
-
- /**
- * @param $filename
- */
- public function setImageProgressMonitor ($filename) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image resolution
- * @link https://php.net/manual/en/imagick.setimageresolution.php
- * @param float $x_resolution
- * @param float $y_resolution
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageResolution ($x_resolution, $y_resolution) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image scene
- * @link https://php.net/manual/en/imagick.setimagescene.php
- * @param int $scene
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageScene ($scene) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image ticks-per-second
- * @link https://php.net/manual/en/imagick.setimagetickspersecond.php
- * @param int $ticks_per_second <p>
- * The duration for which an image should be displayed expressed in ticks
- * per second.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageTicksPerSecond ($ticks_per_second) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image type
- * @link https://php.net/manual/en/imagick.setimagetype.php
- * @param int $image_type
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageType ($image_type) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image units of resolution
- * @link https://php.net/manual/en/imagick.setimageunits.php
- * @param int $units
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageUnits ($units) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sharpens an image
- * @link https://php.net/manual/en/imagick.sharpenimage.php
- * @param float $radius
- * @param float $sigma
- * @param int $channel [optional]
- * @return bool <b>TRUE</b> on success.
- */
- public function sharpenImage ($radius, $sigma, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Shaves pixels from the image edges
- * @link https://php.net/manual/en/imagick.shaveimage.php
- * @param int $columns
- * @param int $rows
- * @return bool <b>TRUE</b> on success.
- */
- public function shaveImage ($columns, $rows) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creating a parallelogram
- * @link https://php.net/manual/en/imagick.shearimage.php
- * @param mixed $background <p>
- * The background color
- * </p>
- * @param float $x_shear <p>
- * The number of degrees to shear on the x axis
- * </p>
- * @param float $y_shear <p>
- * The number of degrees to shear on the y axis
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function shearImage ($background, $x_shear, $y_shear) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Splices a solid color into the image
- * @link https://php.net/manual/en/imagick.spliceimage.php
- * @param int $width
- * @param int $height
- * @param int $x
- * @param int $y
- * @return bool <b>TRUE</b> on success.
- */
- public function spliceImage ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Fetch basic attributes about the image
- * @link https://php.net/manual/en/imagick.pingimage.php
- * @param string $filename <p>
- * The filename to read the information from.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function pingImage ($filename) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Reads image from open filehandle
- * @link https://php.net/manual/en/imagick.readimagefile.php
- * @param resource $filehandle
- * @param string $fileName [optional]
- * @return bool <b>TRUE</b> on success.
- */
- public function readImageFile ($filehandle, $fileName = null) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Displays an image
- * @link https://php.net/manual/en/imagick.displayimage.php
- * @param string $servername <p>
- * The X server name
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function displayImage ($servername) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Displays an image or image sequence
- * @link https://php.net/manual/en/imagick.displayimages.php
- * @param string $servername <p>
- * The X server name
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function displayImages ($servername) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Randomly displaces each pixel in a block
- * @link https://php.net/manual/en/imagick.spreadimage.php
- * @param float $radius
- * @return bool <b>TRUE</b> on success.
- */
- public function spreadImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Swirls the pixels about the center of the image
- * @link https://php.net/manual/en/imagick.swirlimage.php
- * @param float $degrees
- * @return bool <b>TRUE</b> on success.
- */
- public function swirlImage ($degrees) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Strips an image of all profiles and comments
- * @link https://php.net/manual/en/imagick.stripimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function stripImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns formats supported by Imagick
- * @link https://php.net/manual/en/imagick.queryformats.php
- * @param string $pattern [optional]
- * @return array an array containing the formats supported by Imagick.
- */
- public static function queryFormats ($pattern = "*") {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the configured fonts
- * @link https://php.net/manual/en/imagick.queryfonts.php
- * @param string $pattern [optional] <p>
- * The query pattern
- * </p>
- * @return array an array containing the configured fonts.
- */
- public static function queryFonts ($pattern = "*") {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns an array representing the font metrics
- * @link https://php.net/manual/en/imagick.queryfontmetrics.php
- * @param ImagickDraw $properties <p>
- * ImagickDraw object containing font properties
- * </p>
- * @param string $text <p>
- * The text
- * </p>
- * @param bool $multiline [optional] <p>
- * Multiline parameter. If left empty it is autodetected
- * </p>
- * @return array a multi-dimensional array representing the font metrics.
- */
- public function queryFontMetrics (ImagickDraw $properties, $text, $multiline = null) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Hides a digital watermark within the image
- * @link https://php.net/manual/en/imagick.steganoimage.php
- * @param Imagick $watermark_wand
- * @param int $offset
- * @return Imagick <b>TRUE</b> on success.
- */
- public function steganoImage (Imagick $watermark_wand, $offset) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds random noise to the image
- * @link https://php.net/manual/en/imagick.addnoiseimage.php
- * @param int $noise_type <p>
- * The type of the noise. Refer to this list of
- * noise constants.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function addNoiseImage ($noise_type, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Simulates motion blur
- * @link https://php.net/manual/en/imagick.motionblurimage.php
- * @param float $radius <p>
- * The radius of the Gaussian, in pixels, not counting the center pixel.
- * </p>
- * @param float $sigma <p>
- * The standard deviation of the Gaussian, in pixels.
- * </p>
- * @param float $angle <p>
- * Apply the effect along this angle.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * The channel argument affects only if Imagick is compiled against ImageMagick version
- * 6.4.4 or greater.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function motionBlurImage ($radius, $sigma, $angle, $channel = Imagick::CHANNEL_DEFAULT) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Forms a mosaic from images
- * @link https://php.net/manual/en/imagick.mosaicimages.php
- * @return Imagick <b>TRUE</b> on success.
- */
- public function mosaicImages () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Method morphs a set of images
- * @link https://php.net/manual/en/imagick.morphimages.php
- * @param int $number_frames <p>
- * The number of in-between images to generate.
- * </p>
- * @return Imagick This method returns a new Imagick object on success.
- * Throw an <b>ImagickException</b> on error.
- * @throws ImagickException on error
- */
- public function morphImages ($number_frames) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Scales an image proportionally to half its size
- * @link https://php.net/manual/en/imagick.minifyimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function minifyImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Transforms an image
- * @link https://php.net/manual/en/imagick.affinetransformimage.php
- * @param ImagickDraw $matrix <p>
- * The affine matrix
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function affineTransformImage (ImagickDraw $matrix) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Average a set of images
- * @link https://php.net/manual/en/imagick.averageimages.php
- * @return Imagick a new Imagick object on success.
- */
- public function averageImages () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Surrounds the image with a border
- * @link https://php.net/manual/en/imagick.borderimage.php
- * @param mixed $bordercolor <p>
- * ImagickPixel object or a string containing the border color
- * </p>
- * @param int $width <p>
- * Border width
- * </p>
- * @param int $height <p>
- * Border height
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function borderImage ($bordercolor, $width, $height) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Removes a region of an image and trims
- * @link https://php.net/manual/en/imagick.chopimage.php
- * @param int $width <p>
- * Width of the chopped area
- * </p>
- * @param int $height <p>
- * Height of the chopped area
- * </p>
- * @param int $x <p>
- * X origo of the chopped area
- * </p>
- * @param int $y <p>
- * Y origo of the chopped area
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function chopImage ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Clips along the first path from the 8BIM profile
- * @link https://php.net/manual/en/imagick.clipimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function clipImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Clips along the named paths from the 8BIM profile
- * @link https://php.net/manual/en/imagick.clippathimage.php
- * @param string $pathname <p>
- * The name of the path
- * </p>
- * @param bool $inside <p>
- * If <b>TRUE</b> later operations take effect inside clipping path.
- * Otherwise later operations take effect outside clipping path.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function clipPathImage ($pathname, $inside) {}
-
- /**
- * @param $pathname
- * @param $inside
- */
- public function clipImagePath ($pathname, $inside) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Composites a set of images
- * @link https://php.net/manual/en/imagick.coalesceimages.php
- * @return Imagick a new Imagick object on success.
- */
- public function coalesceImages () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Changes the color value of any pixel that matches target
- * @link https://php.net/manual/en/imagick.colorfloodfillimage.php
- * @param mixed $fill <p>
- * ImagickPixel object containing the fill color
- * </p>
- * @param float $fuzz <p>
- * The amount of fuzz. For example, set fuzz to 10 and the color red at
- * intensities of 100 and 102 respectively are now interpreted as the
- * same color for the purposes of the floodfill.
- * </p>
- * @param mixed $bordercolor <p>
- * ImagickPixel object containing the border color
- * </p>
- * @param int $x <p>
- * X start position of the floodfill
- * </p>
- * @param int $y <p>
- * Y start position of the floodfill
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function colorFloodfillImage ($fill, $fuzz, $bordercolor, $x, $y) {}
-
- /**
- * Blends the fill color with each pixel in the image. The 'opacity' color is a per channel strength factor for how strongly the color should be applied.<br>
- * If legacy is true, the behaviour of this function is incorrect, but consistent with how it behaved before Imagick version 3.4.0
- * @link https://php.net/manual/en/imagick.colorizeimage.php
- * @param mixed $colorize <p>
- * ImagickPixel object or a string containing the colorize color
- * </p>
- * @param mixed $opacity <p>
- * ImagickPixel object or an float containing the opacity value.
- * 1.0 is fully opaque and 0.0 is fully transparent.
- * </p>
- * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
- * @return bool <b>TRUE</b> on success.
- * @throws ImagickException Throws ImagickException on error
- * @since 2.0.0
- */
- public function colorizeImage ($colorize, $opacity, $legacy = false) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the difference in one or more images
- * @link https://php.net/manual/en/imagick.compareimagechannels.php
- * @param Imagick $image <p>
- * Imagick object containing the image to compare.
- * </p>
- * @param int $channelType <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @param int $metricType <p>
- * One of the metric type constants.
- * </p>
- * @return array Array consisting of new_wand and
- * distortion.
- */
- public function compareImageChannels (Imagick $image, $channelType, $metricType) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Compares an image to a reconstructed image
- * @link https://php.net/manual/en/imagick.compareimages.php
- * @param Imagick $compare <p>
- * An image to compare to.
- * </p>
- * @param int $metric <p>
- * Provide a valid metric type constant. Refer to this
- * list of metric constants.
- * </p>
- * @return array Array consisting of an Imagick object of the
- * reconstructed image and a float representing the difference.
- * @throws ImagickException Throws ImagickException on error.
- */
- public function compareImages (Imagick $compare, $metric) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Change the contrast of the image
- * @link https://php.net/manual/en/imagick.contrastimage.php
- * @param bool $sharpen <p>
- * The sharpen value
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function contrastImage ($sharpen) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Combines one or more images into a single image
- * @link https://php.net/manual/en/imagick.combineimages.php
- * @param int $channelType <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return Imagick <b>TRUE</b> on success.
- */
- public function combineImages ($channelType) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Applies a custom convolution kernel to the image
- * @link https://php.net/manual/en/imagick.convolveimage.php
- * @param array $kernel <p>
- * The convolution kernel
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function convolveImage (array $kernel, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Displaces an image's colormap
- * @link https://php.net/manual/en/imagick.cyclecolormapimage.php
- * @param int $displace <p>
- * The amount to displace the colormap.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function cycleColormapImage ($displace) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns certain pixel differences between images
- * @link https://php.net/manual/en/imagick.deconstructimages.php
- * @return Imagick a new Imagick object on success.
- */
- public function deconstructImages () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Reduces the speckle noise in an image
- * @link https://php.net/manual/en/imagick.despeckleimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function despeckleImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Enhance edges within the image
- * @link https://php.net/manual/en/imagick.edgeimage.php
- * @param float $radius <p>
- * The radius of the operation.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function edgeImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns a grayscale image with a three-dimensional effect
- * @link https://php.net/manual/en/imagick.embossimage.php
- * @param float $radius <p>
- * The radius of the effect
- * </p>
- * @param float $sigma <p>
- * The sigma of the effect
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function embossImage ($radius, $sigma) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Improves the quality of a noisy image
- * @link https://php.net/manual/en/imagick.enhanceimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function enhanceImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Equalizes the image histogram
- * @link https://php.net/manual/en/imagick.equalizeimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function equalizeImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Applies an expression to an image
- * @link https://php.net/manual/en/imagick.evaluateimage.php
- * @param int $op <p>
- * The evaluation operator
- * </p>
- * @param float $constant <p>
- * The value of the operator
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function evaluateImage ($op, $constant, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * Merges a sequence of images. This is useful for combining Photoshop layers into a single image.
- * This is replaced by:
- * <pre>
- * $im = $im->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN)
- * </pre>
- * @link https://php.net/manual/en/imagick.flattenimages.php
- * @return Imagick Returns an Imagick object containing the merged image.
- * @throws ImagickException Throws ImagickException on error.
- * @since 2.0.0
- */
- public function flattenImages () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creates a vertical mirror image
- * @link https://php.net/manual/en/imagick.flipimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function flipImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creates a horizontal mirror image
- * @link https://php.net/manual/en/imagick.flopimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function flopImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds a simulated three-dimensional border
- * @link https://php.net/manual/en/imagick.frameimage.php
- * @param mixed $matte_color <p>
- * ImagickPixel object or a string representing the matte color
- * </p>
- * @param int $width <p>
- * The width of the border
- * </p>
- * @param int $height <p>
- * The height of the border
- * </p>
- * @param int $inner_bevel <p>
- * The inner bevel width
- * </p>
- * @param int $outer_bevel <p>
- * The outer bevel width
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function frameImage ($matte_color, $width, $height, $inner_bevel, $outer_bevel) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Evaluate expression for each pixel in the image
- * @link https://php.net/manual/en/imagick.fximage.php
- * @param string $expression <p>
- * The expression.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return Imagick <b>TRUE</b> on success.
- */
- public function fxImage ($expression, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gamma-corrects an image
- * @link https://php.net/manual/en/imagick.gammaimage.php
- * @param float $gamma <p>
- * The amount of gamma-correction.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function gammaImage ($gamma, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Blurs an image
- * @link https://php.net/manual/en/imagick.gaussianblurimage.php
- * @param float $radius <p>
- * The radius of the Gaussian, in pixels, not counting the center pixel.
- * </p>
- * @param float $sigma <p>
- * The standard deviation of the Gaussian, in pixels.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function gaussianBlurImage ($radius, $sigma, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * @param $key
- */
- public function getImageAttribute ($key) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the image background color
- * @link https://php.net/manual/en/imagick.getimagebackgroundcolor.php
- * @return ImagickPixel an ImagickPixel set to the background color of the image.
- */
- public function getImageBackgroundColor () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the chromaticy blue primary point
- * @link https://php.net/manual/en/imagick.getimageblueprimary.php
- * @return array Array consisting of "x" and "y" coordinates of point.
- */
- public function getImageBluePrimary () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the image border color
- * @link https://php.net/manual/en/imagick.getimagebordercolor.php
- * @return ImagickPixel <b>TRUE</b> on success.
- */
- public function getImageBorderColor () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the depth for a particular image channel
- * @link https://php.net/manual/en/imagick.getimagechanneldepth.php
- * @param int $channel <p>
- * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
- * </p>
- * @return int <b>TRUE</b> on success.
- */
- public function getImageChannelDepth ($channel) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Compares image channels of an image to a reconstructed image
- * @link https://php.net/manual/en/imagick.getimagechanneldistortion.php
- * @param Imagick $reference <p>
- * Imagick object to compare to.
- * </p>
- * @param int $channel <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @param int $metric <p>
- * One of the metric type constants.
- * </p>
- * @return float <b>TRUE</b> on success.
- */
- public function getImageChannelDistortion (Imagick $reference, $channel, $metric) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the extrema for one or more image channels
- * @link https://php.net/manual/en/imagick.getimagechannelextrema.php
- * @param int $channel <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return array <b>TRUE</b> on success.
- */
- public function getImageChannelExtrema ($channel) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the mean and standard deviation
- * @link https://php.net/manual/en/imagick.getimagechannelmean.php
- * @param int $channel <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return array <b>TRUE</b> on success.
- */
- public function getImageChannelMean ($channel) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns statistics for each channel in the image
- * @link https://php.net/manual/en/imagick.getimagechannelstatistics.php
- * @return array <b>TRUE</b> on success.
- */
- public function getImageChannelStatistics () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the color of the specified colormap index
- * @link https://php.net/manual/en/imagick.getimagecolormapcolor.php
- * @param int $index <p>
- * The offset into the image colormap.
- * </p>
- * @return ImagickPixel <b>TRUE</b> on success.
- */
- public function getImageColormapColor ($index) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image colorspace
- * @link https://php.net/manual/en/imagick.getimagecolorspace.php
- * @return int <b>TRUE</b> on success.
- */
- public function getImageColorspace () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the composite operator associated with the image
- * @link https://php.net/manual/en/imagick.getimagecompose.php
- * @return int <b>TRUE</b> on success.
- */
- public function getImageCompose () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image delay
- * @link https://php.net/manual/en/imagick.getimagedelay.php
- * @return int the image delay.
- */
- public function getImageDelay () {}
-
- /**
- * (PECL imagick 0.9.1-0.9.9)<br/>
- * Gets the image depth
- * @link https://php.net/manual/en/imagick.getimagedepth.php
- * @return int The image depth.
- */
- public function getImageDepth () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Compares an image to a reconstructed image
- * @link https://php.net/manual/en/imagick.getimagedistortion.php
- * @param Imagick $reference <p>
- * Imagick object to compare to.
- * </p>
- * @param int $metric <p>
- * One of the metric type constants.
- * </p>
- * @return float the distortion metric used on the image (or the best guess
- * thereof).
- */
- public function getImageDistortion (Imagick $reference, $metric) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the extrema for the image
- * @link https://php.net/manual/en/imagick.getimageextrema.php
- * @return array an associative array with the keys "min" and "max".
- */
- public function getImageExtrema () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image disposal method
- * @link https://php.net/manual/en/imagick.getimagedispose.php
- * @return int the dispose method on success.
- */
- public function getImageDispose () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image gamma
- * @link https://php.net/manual/en/imagick.getimagegamma.php
- * @return float the image gamma on success.
- */
- public function getImageGamma () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the chromaticy green primary point
- * @link https://php.net/manual/en/imagick.getimagegreenprimary.php
- * @return array an array with the keys "x" and "y" on success, throws an ImagickException on failure.
- * @throws ImagickException on failure
- */
- public function getImageGreenPrimary () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the image height
- * @link https://php.net/manual/en/imagick.getimageheight.php
- * @return int the image height in pixels.
- */
- public function getImageHeight () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image histogram
- * @link https://php.net/manual/en/imagick.getimagehistogram.php
- * @return array the image histogram as an array of ImagickPixel objects.
- */
- public function getImageHistogram () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image interlace scheme
- * @link https://php.net/manual/en/imagick.getimageinterlacescheme.php
- * @return int the interlace scheme as an integer on success.
- * Trhow an <b>ImagickException</b> on error.
- * @throws ImagickException on error
- */
- public function getImageInterlaceScheme () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image iterations
- * @link https://php.net/manual/en/imagick.getimageiterations.php
- * @return int the image iterations as an integer.
- */
- public function getImageIterations () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the image matte color
- * @link https://php.net/manual/en/imagick.getimagemattecolor.php
- * @return ImagickPixel ImagickPixel object on success.
- */
- public function getImageMatteColor () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the page geometry
- * @link https://php.net/manual/en/imagick.getimagepage.php
- * @return array the page geometry associated with the image in an array with the
- * keys "width", "height", "x", and "y".
- */
- public function getImagePage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the color of the specified pixel
- * @link https://php.net/manual/en/imagick.getimagepixelcolor.php
- * @param int $x <p>
- * The x-coordinate of the pixel
- * </p>
- * @param int $y <p>
- * The y-coordinate of the pixel
- * </p>
- * @return ImagickPixel an ImagickPixel instance for the color at the coordinates given.
- */
- public function getImagePixelColor ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the named image profile
- * @link https://php.net/manual/en/imagick.getimageprofile.php
- * @param string $name <p>
- * The name of the profile to return.
- * </p>
- * @return string a string containing the image profile.
- */
- public function getImageProfile ($name) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the chromaticity red primary point
- * @link https://php.net/manual/en/imagick.getimageredprimary.php
- * @return array the chromaticity red primary point as an array with the keys "x"
- * and "y".
- * Throw an <b>ImagickException</b> on error.
- * @throws ImagickException on error
- */
- public function getImageRedPrimary () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image rendering intent
- * @link https://php.net/manual/en/imagick.getimagerenderingintent.php
- * @return int the image rendering intent.
- */
- public function getImageRenderingIntent () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image X and Y resolution
- * @link https://php.net/manual/en/imagick.getimageresolution.php
- * @return array the resolution as an array.
- */
- public function getImageResolution () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image scene
- * @link https://php.net/manual/en/imagick.getimagescene.php
- * @return int the image scene.
- */
- public function getImageScene () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Generates an SHA-256 message digest
- * @link https://php.net/manual/en/imagick.getimagesignature.php
- * @return string a string containing the SHA-256 hash of the file.
- */
- public function getImageSignature () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image ticks-per-second
- * @link https://php.net/manual/en/imagick.getimagetickspersecond.php
- * @return int the image ticks-per-second.
- */
- public function getImageTicksPerSecond () {}
-
- /**
- * (PECL imagick 0.9.10-0.9.9)<br/>
- * Gets the potential image type
- * @link https://php.net/manual/en/imagick.getimagetype.php
- * @return int the potential image type.
- * <b>imagick::IMGTYPE_UNDEFINED</b>
- * <b>imagick::IMGTYPE_BILEVEL</b>
- * <b>imagick::IMGTYPE_GRAYSCALE</b>
- * <b>imagick::IMGTYPE_GRAYSCALEMATTE</b>
- * <b>imagick::IMGTYPE_PALETTE</b>
- * <b>imagick::IMGTYPE_PALETTEMATTE</b>
- * <b>imagick::IMGTYPE_TRUECOLOR</b>
- * <b>imagick::IMGTYPE_TRUECOLORMATTE</b>
- * <b>imagick::IMGTYPE_COLORSEPARATION</b>
- * <b>imagick::IMGTYPE_COLORSEPARATIONMATTE</b>
- * <b>imagick::IMGTYPE_OPTIMIZE</b>
- */
- public function getImageType () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image units of resolution
- * @link https://php.net/manual/en/imagick.getimageunits.php
- * @return int the image units of resolution.
- */
- public function getImageUnits () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the virtual pixel method
- * @link https://php.net/manual/en/imagick.getimagevirtualpixelmethod.php
- * @return int the virtual pixel method on success.
- */
- public function getImageVirtualPixelMethod () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the chromaticity white point
- * @link https://php.net/manual/en/imagick.getimagewhitepoint.php
- * @return array the chromaticity white point as an associative array with the keys
- * "x" and "y".
- */
- public function getImageWhitePoint () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the image width
- * @link https://php.net/manual/en/imagick.getimagewidth.php
- * @return int the image width.
- */
- public function getImageWidth () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the number of images in the object
- * @link https://php.net/manual/en/imagick.getnumberimages.php
- * @return int the number of images associated with Imagick object.
- */
- public function getNumberImages () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the image total ink density
- * @link https://php.net/manual/en/imagick.getimagetotalinkdensity.php
- * @return float the image total ink density of the image.
- * Throw an <b>ImagickException</b> on error.
- * @throws ImagickException on error
- */
- public function getImageTotalInkDensity () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Extracts a region of the image
- * @link https://php.net/manual/en/imagick.getimageregion.php
- * @param int $width <p>
- * The width of the extracted region.
- * </p>
- * @param int $height <p>
- * The height of the extracted region.
- * </p>
- * @param int $x <p>
- * X-coordinate of the top-left corner of the extracted region.
- * </p>
- * @param int $y <p>
- * Y-coordinate of the top-left corner of the extracted region.
- * </p>
- * @return Imagick Extracts a region of the image and returns it as a new wand.
- */
- public function getImageRegion ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creates a new image as a copy
- * @link https://php.net/manual/en/imagick.implodeimage.php
- * @param float $radius <p>
- * The radius of the implode
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function implodeImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adjusts the levels of an image
- * @link https://php.net/manual/en/imagick.levelimage.php
- * @param float $blackPoint <p>
- * The image black point
- * </p>
- * @param float $gamma <p>
- * The gamma value
- * </p>
- * @param float $whitePoint <p>
- * The image white point
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function levelImage ($blackPoint, $gamma, $whitePoint, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Scales an image proportionally 2x
- * @link https://php.net/manual/en/imagick.magnifyimage.php
- * @return bool <b>TRUE</b> on success.
- */
- public function magnifyImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Replaces the colors of an image with the closest color from a reference image.
- * @link https://php.net/manual/en/imagick.mapimage.php
- * @param Imagick $map
- * @param bool $dither
- * @return bool <b>TRUE</b> on success.
- */
- public function mapImage (Imagick $map, $dither) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Changes the transparency value of a color
- * @link https://php.net/manual/en/imagick.mattefloodfillimage.php
- * @param float $alpha <p>
- * The level of transparency: 1.0 is fully opaque and 0.0 is fully
- * transparent.
- * </p>
- * @param float $fuzz <p>
- * The fuzz member of image defines how much tolerance is acceptable to
- * consider two colors as the same.
- * </p>
- * @param mixed $bordercolor <p>
- * An <b>ImagickPixel</b> object or string representing the border color.
- * </p>
- * @param int $x <p>
- * The starting x coordinate of the operation.
- * </p>
- * @param int $y <p>
- * The starting y coordinate of the operation.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function matteFloodfillImage ($alpha, $fuzz, $bordercolor, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Applies a digital filter
- * @link https://php.net/manual/en/imagick.medianfilterimage.php
- * @param float $radius <p>
- * The radius of the pixel neighborhood.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function medianFilterImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Negates the colors in the reference image
- * @link https://php.net/manual/en/imagick.negateimage.php
- * @param bool $gray <p>
- * Whether to only negate grayscale pixels within the image.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function negateImage ($gray, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Change any pixel that matches color
- * @link https://php.net/manual/en/imagick.paintopaqueimage.php
- * @param mixed $target <p>
- * Change this target color to the fill color within the image. An
- * ImagickPixel object or a string representing the target color.
- * </p>
- * @param mixed $fill <p>
- * An ImagickPixel object or a string representing the fill color.
- * </p>
- * @param float $fuzz <p>
- * The fuzz member of image defines how much tolerance is acceptable to
- * consider two colors as the same.
- * </p>
- * @param int $channel [optional] <p>
- * Provide any channel constant that is valid for your channel mode. To
- * apply to more than one channel, combine channeltype constants using
- * bitwise operators. Refer to this
- * list of channel constants.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function paintOpaqueImage ($target, $fill, $fuzz, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Changes any pixel that matches color with the color defined by fill
- * @link https://php.net/manual/en/imagick.painttransparentimage.php
- * @param mixed $target <p>
- * Change this target color to specified opacity value within the image.
- * </p>
- * @param float $alpha <p>
- * The level of transparency: 1.0 is fully opaque and 0.0 is fully
- * transparent.
- * </p>
- * @param float $fuzz <p>
- * The fuzz member of image defines how much tolerance is acceptable to
- * consider two colors as the same.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function paintTransparentImage ($target, $alpha, $fuzz) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Quickly pin-point appropriate parameters for image processing
- * @link https://php.net/manual/en/imagick.previewimages.php
- * @param int $preview <p>
- * Preview type. See Preview type constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function previewImages ($preview) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds or removes a profile from an image
- * @link https://php.net/manual/en/imagick.profileimage.php
- * @param string $name
- * @param string $profile
- * @return bool <b>TRUE</b> on success.
- */
- public function profileImage ($name, $profile) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Analyzes the colors within a reference image
- * @link https://php.net/manual/en/imagick.quantizeimage.php
- * @param int $numberColors
- * @param int $colorspace
- * @param int $treedepth
- * @param bool $dither
- * @param bool $measureError
- * @return bool <b>TRUE</b> on success.
- */
- public function quantizeImage ($numberColors, $colorspace, $treedepth, $dither, $measureError) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Analyzes the colors within a sequence of images
- * @link https://php.net/manual/en/imagick.quantizeimages.php
- * @param int $numberColors
- * @param int $colorspace
- * @param int $treedepth
- * @param bool $dither
- * @param bool $measureError
- * @return bool <b>TRUE</b> on success.
- */
- public function quantizeImages ($numberColors, $colorspace, $treedepth, $dither, $measureError) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Smooths the contours of an image
- * @link https://php.net/manual/en/imagick.reducenoiseimage.php
- * @param float $radius
- * @return bool <b>TRUE</b> on success.
- */
- public function reduceNoiseImage ($radius) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Removes the named image profile and returns it
- * @link https://php.net/manual/en/imagick.removeimageprofile.php
- * @param string $name
- * @return string a string containing the profile of the image.
- */
- public function removeImageProfile ($name) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Separates a channel from the image
- * @link https://php.net/manual/en/imagick.separateimagechannel.php
- * @param int $channel
- * @return bool <b>TRUE</b> on success.
- */
- public function separateImageChannel ($channel) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sepia tones an image
- * @link https://php.net/manual/en/imagick.sepiatoneimage.php
- * @param float $threshold
- * @return bool <b>TRUE</b> on success.
- */
- public function sepiaToneImage ($threshold) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image bias for any method that convolves an image
- * @link https://php.net/manual/en/imagick.setimagebias.php
- * @param float $bias
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageBias ($bias) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image chromaticity blue primary point
- * @link https://php.net/manual/en/imagick.setimageblueprimary.php
- * @param float $x
- * @param float $y
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageBluePrimary ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image border color
- * @link https://php.net/manual/en/imagick.setimagebordercolor.php
- * @param mixed $border <p>
- * The border color
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageBorderColor ($border) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the depth of a particular image channel
- * @link https://php.net/manual/en/imagick.setimagechanneldepth.php
- * @param int $channel
- * @param int $depth
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageChannelDepth ($channel, $depth) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the color of the specified colormap index
- * @link https://php.net/manual/en/imagick.setimagecolormapcolor.php
- * @param int $index
- * @param ImagickPixel $color
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageColormapColor ($index, ImagickPixel $color) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image colorspace
- * @link https://php.net/manual/en/imagick.setimagecolorspace.php
- * @param int $colorspace <p>
- * One of the COLORSPACE constants
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageColorspace ($colorspace) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image disposal method
- * @link https://php.net/manual/en/imagick.setimagedispose.php
- * @param int $dispose
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageDispose ($dispose) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image size
- * @link https://php.net/manual/en/imagick.setimageextent.php
- * @param int $columns
- * @param int $rows
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageExtent ($columns, $rows) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image chromaticity green primary point
- * @link https://php.net/manual/en/imagick.setimagegreenprimary.php
- * @param float $x
- * @param float $y
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageGreenPrimary ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image compression
- * @link https://php.net/manual/en/imagick.setimageinterlacescheme.php
- * @param int $interlace_scheme
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageInterlaceScheme ($interlace_scheme) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds a named profile to the Imagick object
- * @link https://php.net/manual/en/imagick.setimageprofile.php
- * @param string $name
- * @param string $profile
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageProfile ($name, $profile) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image chromaticity red primary point
- * @link https://php.net/manual/en/imagick.setimageredprimary.php
- * @param float $x
- * @param float $y
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageRedPrimary ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image rendering intent
- * @link https://php.net/manual/en/imagick.setimagerenderingintent.php
- * @param int $rendering_intent
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageRenderingIntent ($rendering_intent) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image virtual pixel method
- * @link https://php.net/manual/en/imagick.setimagevirtualpixelmethod.php
- * @param int $method
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageVirtualPixelMethod ($method) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image chromaticity white point
- * @link https://php.net/manual/en/imagick.setimagewhitepoint.php
- * @param float $x
- * @param float $y
- * @return bool <b>TRUE</b> on success.
- */
- public function setImageWhitePoint ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adjusts the contrast of an image
- * @link https://php.net/manual/en/imagick.sigmoidalcontrastimage.php
- * @param bool $sharpen
- * @param float $alpha
- * @param float $beta
- * @param int $channel [optional]
- * @return bool <b>TRUE</b> on success.
- */
- public function sigmoidalContrastImage ($sharpen, $alpha, $beta, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Composites two images
- * @link https://php.net/manual/en/imagick.stereoimage.php
- * @param Imagick $offset_wand
- * @return bool <b>TRUE</b> on success.
- */
- public function stereoImage (Imagick $offset_wand) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Repeatedly tiles the texture image
- * @link https://php.net/manual/en/imagick.textureimage.php
- * @param Imagick $texture_wand
- * @return bool <b>TRUE</b> on success.
- */
- public function textureImage (Imagick $texture_wand) {}
-
- /**
- * pplies a color vector to each pixel in the image. The 'opacity' color is a per channel strength factor for how strongly the color should be applied.
- * If legacy is true, the behaviour of this function is incorrect, but consistent with how it behaved before Imagick version 3.4.0
- * @link https://php.net/manual/en/imagick.tintimage.php
- * @param mixed $tint
- * @param mixed $opacity
- * @param bool $legacy [optional]
- * @return bool <b>TRUE</b> on success.
- * @throws ImagickException Throws ImagickException on error
- * @since 2.0.0
- */
- public function tintImage ($tint, $opacity, $legacy = false) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sharpens an image
- * @link https://php.net/manual/en/imagick.unsharpmaskimage.php
- * @param float $radius
- * @param float $sigma
- * @param float $amount
- * @param float $threshold
- * @param int $channel [optional]
- * @return bool <b>TRUE</b> on success.
- */
- public function unsharpMaskImage ($radius, $sigma, $amount, $threshold, $channel = Imagick::CHANNEL_ALL) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns a new Imagick object
- * @link https://php.net/manual/en/imagick.getimage.php
- * @return Imagick a new Imagick object with the current image sequence.
- */
- public function getImage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds new image to Imagick object image list
- * @link https://php.net/manual/en/imagick.addimage.php
- * @param Imagick $source <p>
- * The source Imagick object
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function addImage (Imagick $source) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Replaces image in the object
- * @link https://php.net/manual/en/imagick.setimage.php
- * @param Imagick $replace <p>
- * The replace Imagick object
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setImage (Imagick $replace) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creates a new image
- * @link https://php.net/manual/en/imagick.newimage.php
- * @param int $cols <p>
- * Columns in the new image
- * </p>
- * @param int $rows <p>
- * Rows in the new image
- * </p>
- * @param mixed $background <p>
- * The background color used for this image
- * </p>
- * @param string $format [optional] <p>
- * Image format. This parameter was added in Imagick version 2.0.1.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function newImage ($cols, $rows, $background, $format = null) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Creates a new image
- * @link https://php.net/manual/en/imagick.newpseudoimage.php
- * @param int $columns <p>
- * columns in the new image
- * </p>
- * @param int $rows <p>
- * rows in the new image
- * </p>
- * @param string $pseudoString <p>
- * string containing pseudo image definition.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function newPseudoImage ($columns, $rows, $pseudoString) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the object compression type
- * @link https://php.net/manual/en/imagick.getcompression.php
- * @return int the compression constant
- */
- public function getCompression () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the object compression quality
- * @link https://php.net/manual/en/imagick.getcompressionquality.php
- * @return int integer describing the compression quality
- */
- public function getCompressionQuality () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the ImageMagick API copyright as a string
- * @link https://php.net/manual/en/imagick.getcopyright.php
- * @return string a string containing the copyright notice of Imagemagick and
- * Magickwand C API.
- */
- public static function getCopyright () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * The filename associated with an image sequence
- * @link https://php.net/manual/en/imagick.getfilename.php
- * @return string a string on success.
- */
- public function getFilename () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the format of the Imagick object
- * @link https://php.net/manual/en/imagick.getformat.php
- * @return string the format of the image.
- */
- public function getFormat () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the ImageMagick home URL
- * @link https://php.net/manual/en/imagick.gethomeurl.php
- * @return string a link to the imagemagick homepage.
- */
- public static function getHomeURL () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the object interlace scheme
- * @link https://php.net/manual/en/imagick.getinterlacescheme.php
- * @return int Gets the wand interlace
- * scheme.
- */
- public function getInterlaceScheme () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns a value associated with the specified key
- * @link https://php.net/manual/en/imagick.getoption.php
- * @param string $key <p>
- * The name of the option
- * </p>
- * @return string a value associated with a wand and the specified key.
- */
- public function getOption ($key) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the ImageMagick package name
- * @link https://php.net/manual/en/imagick.getpackagename.php
- * @return string the ImageMagick package name as a string.
- */
- public static function getPackageName () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the page geometry
- * @link https://php.net/manual/en/imagick.getpage.php
- * @return array the page geometry associated with the Imagick object in
- * an associative array with the keys "width", "height", "x", and "y",
- * throwing ImagickException on error.
- * @throws ImagickException on error
- */
- public function getPage () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the quantum depth
- * @link https://php.net/manual/en/imagick.getquantumdepth.php
- * @return array the Imagick quantum depth as a string.
- */
- public static function getQuantumDepth () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the Imagick quantum range
- * @link https://php.net/manual/en/imagick.getquantumrange.php
- * @return array the Imagick quantum range as a string.
- */
- public static function getQuantumRange () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the ImageMagick release date
- * @link https://php.net/manual/en/imagick.getreleasedate.php
- * @return string the ImageMagick release date as a string.
- */
- public static function getReleaseDate () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the specified resource's memory usage
- * @link https://php.net/manual/en/imagick.getresource.php
- * @param int $type <p>
- * Refer to the list of resourcetype constants.
- * </p>
- * @return int the specified resource's memory usage in megabytes.
- */
- public static function getResource ($type) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the specified resource limit
- * @link https://php.net/manual/en/imagick.getresourcelimit.php
- * @param int $type <p>
- * Refer to the list of resourcetype constants.
- * </p>
- * @return int the specified resource limit in megabytes.
- */
- public static function getResourceLimit ($type) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the horizontal and vertical sampling factor
- * @link https://php.net/manual/en/imagick.getsamplingfactors.php
- * @return array an associative array with the horizontal and vertical sampling
- * factors of the image.
- */
- public function getSamplingFactors () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the size associated with the Imagick object
- * @link https://php.net/manual/en/imagick.getsize.php
- * @return array the size associated with the Imagick object as an array with the
- * keys "columns" and "rows".
- */
- public function getSize () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the ImageMagick API version
- * @link https://php.net/manual/en/imagick.getversion.php
- * @return array the ImageMagick API version as a string and as a number.
- */
- public static function getVersion () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the object's default background color
- * @link https://php.net/manual/en/imagick.setbackgroundcolor.php
- * @param mixed $background
- * @return bool <b>TRUE</b> on success.
- */
- public function setBackgroundColor ($background) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the object's default compression type
- * @link https://php.net/manual/en/imagick.setcompression.php
- * @param int $compression
- * @return bool <b>TRUE</b> on success.
- */
- public function setCompression ($compression) {}
-
- /**
- * (PECL imagick 0.9.10-0.9.9)<br/>
- * Sets the object's default compression quality
- * @link https://php.net/manual/en/imagick.setcompressionquality.php
- * @param int $quality
- * @return bool <b>TRUE</b> on success.
- */
- public function setCompressionQuality ($quality) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the filename before you read or write the image
- * @link https://php.net/manual/en/imagick.setfilename.php
- * @param string $filename
- * @return bool <b>TRUE</b> on success.
- */
- public function setFilename ($filename) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the format of the Imagick object
- * @link https://php.net/manual/en/imagick.setformat.php
- * @param string $format
- * @return bool <b>TRUE</b> on success.
- */
- public function setFormat ($format) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image compression
- * @link https://php.net/manual/en/imagick.setinterlacescheme.php
- * @param int $interlace_scheme
- * @return bool <b>TRUE</b> on success.
- */
- public function setInterlaceScheme ($interlace_scheme) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Set an option
- * @link https://php.net/manual/en/imagick.setoption.php
- * @param string $key
- * @param string $value
- * @return bool <b>TRUE</b> on success.
- */
- public function setOption ($key, $value) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the page geometry of the Imagick object
- * @link https://php.net/manual/en/imagick.setpage.php
- * @param int $width
- * @param int $height
- * @param int $x
- * @param int $y
- * @return bool <b>TRUE</b> on success.
- */
- public function setPage ($width, $height, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the limit for a particular resource in megabytes
- * @link https://php.net/manual/en/imagick.setresourcelimit.php
- * @param int $type <p>
- * Refer to the list of resourcetype constants.
- * </p>
- * @param int $limit <p>
- * The resource limit. The unit depends on the type of the resource being limited.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public static function setResourceLimit ($type, $limit) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image resolution
- * @link https://php.net/manual/en/imagick.setresolution.php
- * @param float $x_resolution <p>
- * The horizontal resolution.
- * </p>
- * @param float $y_resolution <p>
- * The vertical resolution.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setResolution ($x_resolution, $y_resolution) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image sampling factors
- * @link https://php.net/manual/en/imagick.setsamplingfactors.php
- * @param array $factors
- * @return bool <b>TRUE</b> on success.
- */
- public function setSamplingFactors (array $factors) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the size of the Imagick object
- * @link https://php.net/manual/en/imagick.setsize.php
- * @param int $columns
- * @param int $rows
- * @return bool <b>TRUE</b> on success.
- */
- public function setSize ($columns, $rows) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the image type attribute
- * @link https://php.net/manual/en/imagick.settype.php
- * @param int $image_type
- * @return bool <b>TRUE</b> on success.
- */
- public function setType ($image_type) {}
-
- public function key () {}
-
- public function next () {}
-
- public function rewind () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Checks if the current item is valid
- * @link https://php.net/manual/en/imagick.valid.php
- * @return bool <b>TRUE</b> on success.
- */
- public function valid () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns a reference to the current Imagick object
- * @link https://php.net/manual/en/imagick.current.php
- * @return Imagick self on success.
- */
- public function current () {}
-
- /**
- * Change the brightness and/or contrast of an image. It converts the brightness and contrast parameters into slope and intercept and calls a polynomical function to apply to the image.
- * @link https://php.net/manual/en/imagick.brightnesscontrastimage.php
- * @param string $brightness
- * @param string $contrast
- * @param int $CHANNEL [optional]
- * @return void
- * @since 3.3.0
- */
- public function brightnessContrastImage ($brightness, $contrast, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Applies a user supplied kernel to the image according to the given morphology method.
- * @link https://php.net/manual/en/imagick.morphology.php
- * @param int $morphologyMethod Which morphology method to use one of the \Imagick::MORPHOLOGY_* constants.
- * @param int $iterations The number of iteration to apply the morphology function. A value of -1 means loop until no change found. How this is applied may depend on the morphology method. Typically this is a value of 1.
- * @param ImagickKernel $ImagickKernel
- * @param int $CHANNEL [optional]
- * @return void
- * @since 3.3.0
- */
- public function morphology ($morphologyMethod, $iterations, ImagickKernel $ImagickKernel, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Applies a custom convolution kernel to the image.
- * @link https://php.net/manual/en/imagick.filter.php
- * @param ImagickKernel $ImagickKernel An instance of ImagickKernel that represents either a single kernel or a linked series of kernels.
- * @param int $CHANNEL [optional] Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- * @return void
- * @since 3.3.0
- */
- public function filter (ImagickKernel $ImagickKernel , $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Apply color transformation to an image. The method permits saturation changes, hue rotation, luminance to alpha, and various other effects. Although variable-sized transformation matrices can be used, typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA (or RGBA with offsets).
- * The matrix is similar to those used by Adobe Flash except offsets are in column 6 rather than 5 (in support of CMYKA images) and offsets are normalized (divide Flash offset by 255)
- * @link https://php.net/manual/en/imagick.colormatriximage.php
- * @param string $color_matrix
- * @return void
- * @since 3.3.0
- */
- public function colorMatrixImage ($color_matrix = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Deletes an image property.
- * @link https://php.net/manual/en/imagick.deleteimageproperty.php
- * @param string $name The name of the property to delete.
- * @return void
- * @since 3.3.0
- */
- public function deleteImageProperty ($name) { }
-
- /**
- * Implements the discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.
- * @link https://php.net/manual/en/imagick.forwardfouriertransformimage.php
- * @param bool $magnitude If true, return as magnitude / phase pair otherwise a real / imaginary image pair.
- * @return void
- * @since 3.3.0
- */
- public function forwardFourierTransformimage ($magnitude) { }
-
- /**
- * Gets the current image's compression type.
- * @link https://php.net/manual/en/imagick.getimagecompression.php
- * @return int
- * @since 3.3.0
- */
- public function getImageCompression () { }
-
- /**
- * Get the StringRegistry entry for the named key or false if not set.
- * @link https://php.net/manual/en/imagick.getregistry.php
- * @param string $key
- * @return string|false
- * @throws Exception Since version >=3.4.3. Throws an exception if the key does not exist, rather than terminating the program.
- * @since 3.3.0
- */
- public static function getRegistry ($key) { }
-
- /**
- * Returns the ImageMagick quantum range as an integer.
- * @link https://php.net/manual/en/imagick.getquantum.php
- * @return int
- * @since 3.3.0
- */
- public static function getQuantum () { }
-
- /**
- * Replaces any embedded formatting characters with the appropriate image property and returns the interpreted text. See https://www.imagemagick.org/script/escape.php for escape sequences.
- * @link https://php.net/manual/en/imagick.identifyformat.php
- * @see https://www.imagemagick.org/script/escape.php
- * @param string $embedText A string containing formatting sequences e.g. "Trim box: %@ number of unique colors: %k".
- * @return bool
- * @since 3.3.0
- */
- public function identifyFormat ($embedText) { }
-
- /**
- * Implements the inverse discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.
- * @link https://php.net/manual/en/imagick.inversefouriertransformimage.php
- * @param Imagick $complement The second image to combine with this one to form either the magnitude / phase or real / imaginary image pair.
- * @param bool $magnitude If true, combine as magnitude / phase pair otherwise a real / imaginary image pair.
- * @return void
- * @since 3.3.0
- */
- public function inverseFourierTransformImage ($complement, $magnitude) { }
-
- /**
- * List all the registry settings. Returns an array of all the key/value pairs in the registry
- * @link https://php.net/manual/en/imagick.listregistry.php
- * @return array An array containing the key/values from the registry.
- * @since 3.3.0
- */
- public static function listRegistry () { }
-
- /**
- * Rotational blurs an image.
- * @link https://php.net/manual/en/imagick.rotationalblurimage.php
- * @param string $angle
- * @param string $CHANNEL
- * @return void
- * @since 3.3.0
- */
- public function rotationalBlurImage ($angle, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Selectively blur an image within a contrast threshold. It is similar to the unsharpen mask that sharpens everything with contrast above a certain threshold.
- * @link https://php.net/manual/en/imagick.selectiveblurimage.php
- * @param float $radius
- * @param float $sigma
- * @param float $threshold
- * @param int $CHANNEL Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
- * @return void
- * @since 3.3.0
- */
- public function selectiveBlurImage ($radius, $sigma, $threshold, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
-
- /**
- * Set whether antialiasing should be used for operations. On by default.
- * @param bool $antialias
- * @return int
- * @since 3.3.0
- */
- public function setAntiAlias ($antialias) { }
-
- /**
- * @link https://php.net/manual/en/imagick.setimagebiasquantum.php
- * @param string $bias
- * @return void
- * @since 3.3.0
- */
- public function setImageBiasQuantum ($bias) { }
-
- /**
- * Set a callback that will be called during the processing of the Imagick image.
- * @link https://php.net/manual/en/imagick.setprogressmonitor.php
- * @param callable $callback The progress function to call. It should return true if image processing should continue, or false if it should be cancelled.
- * The offset parameter indicates the progress and the span parameter indicates the total amount of work needed to be done.
- * <pre> bool callback ( mixed $offset , mixed $span ) </pre>
- * <b>Caution</b>
- * The values passed to the callback function are not consistent. In particular the span parameter can increase during image processing. Because of this calculating the percentage complete of an image operation is not trivial.
- * @return void
- * @since 3.3.0
- */
- public function setProgressMonitor ($callback) { }
-
- /**
- * Sets the ImageMagick registry entry named key to value. This is most useful for setting "temporary-path" which controls where ImageMagick creates temporary images e.g. while processing PDFs.
- * @link https://php.net/manual/en/imagick.setregistry.php
- * @param string $key
- * @param string $value
- * @return void
- * @since 3.3.0
- */
- public static function setRegistry ($key, $value) { }
-
- /**
- * Replace each pixel with corresponding statistic from the neighborhood of the specified width and height.
- * @link https://php.net/manual/en/imagick.statisticimage.php
- * @param int $type
- * @param int $width
- * @param int $height
- * @param int $channel [optional]
- * @return void
- * @since 3.3.0
- */
- public function statisticImage ($type, $width, $height, $channel = Imagick::CHANNEL_DEFAULT ) { }
-
- /**
- * Searches for a subimage in the current image and returns a similarity image such that an exact match location is
- * completely white and if none of the pixels match, black, otherwise some gray level in-between.
- * You can also pass in the optional parameters bestMatch and similarity. After calling the function similarity will
- * be set to the 'score' of the similarity between the subimage and the matching position in the larger image,
- * bestMatch will contain an associative array with elements x, y, width, height that describe the matching region.
- *
- * @link https://php.net/manual/en/imagick.subimagematch.php
- * @param Imagick $imagick
- * @param array &$bestMatch [optional]
- * @param float &$similarity [optional] A new image that displays the amount of similarity at each pixel.
- * @param float $similarity_threshold [optional] Only used if compiled with ImageMagick (library) > 7
- * @param int $metric [optional] Only used if compiled with ImageMagick (library) > 7
- * @return Imagick
- * @since 3.3.0
- */
- public function subImageMatch (Imagick $imagick, array &$bestMatch, &$similarity, $similarity_threshold, $metric) { }
-
- /**
- * Is an alias of Imagick::subImageMatch
- *
- * @param Imagick $imagick
- * @param array $bestMatch [optional]
- * @param float $similarity [optional] A new image that displays the amount of similarity at each pixel.
- * @param float $similarity_threshold [optional]
- * @param int $metric [optional]
- * @return Imagick
- * @see Imagick::subImageMatch() This function is an alias of subImageMatch()
- * @since 3.4.0
- */
- public function similarityImage (Imagick $imagick, array &$bestMatch, &$similarity, $similarity_threshold, $metric) { }
-
- /**
- * Returns any ImageMagick configure options that match the specified pattern (e.g. "*" for all). Options include NAME, VERSION, LIB_VERSION, etc.
- * @return string
- * @since 3.4.0
- */
- public function getConfigureOptions () { }
-
- /**
- * GetFeatures() returns the ImageMagick features that have been compiled into the runtime.
- * @return string
- * @since 3.4.0
- */
- public function getFeatures () { }
-
- /**
- * @return int
- * @since 3.4.0
- */
- public function getHDRIEnabled () { }
-
- /**
- * Sets the image channel mask. Returns the previous set channel mask.
- * Only works with Imagick >=7
- * @param int $channel
- * @since 3.4.0
- */
- public function setImageChannelMask ($channel) {}
-
- /**
- * Merge multiple images of the same size together with the selected operator. https://www.imagemagick.org/Usage/layers/#evaluate-sequence
- * @param int $EVALUATE_CONSTANT
- * @return bool
- * @see https://www.imagemagick.org/Usage/layers/#evaluate-sequence
- * @since 3.4.0
- */
- public function evaluateImages ($EVALUATE_CONSTANT) { }
-
- /**
- * Extracts the 'mean' from the image and adjust the image to try make set its gamma appropriately.
- * @param int $channel [optional] Default value Imagick::CHANNEL_ALL
- * @return bool
- * @since 3.4.1
- */
- public function autoGammaImage ($channel = Imagick::CHANNEL_ALL) { }
-
- /**
- * Adjusts an image so that its orientation is suitable $ for viewing (i.e. top-left orientation).
- * @return bool
- * @since 3.4.1
- */
- public function autoOrient () { }
-
- /**
- * Composite one image onto another using the specified gravity.
- *
- * @param Imagick $imagick
- * @param int $COMPOSITE_CONSTANT
- * @param int $GRAVITY_CONSTANT
- * @return bool
- * @since 3.4.1
- */
- public function compositeImageGravity(Imagick $imagick, $COMPOSITE_CONSTANT, $GRAVITY_CONSTANT) { }
-
- /**
- * Attempts to increase the appearance of large-scale light-dark transitions.
- *
- * @param float $radius
- * @param float $strength
- * @return bool
- * @since 3.4.1
- */
- public function localContrastImage($radius, $strength) { }
-
- /**
- * Identifies the potential image type, returns one of the Imagick::IMGTYPE_* constants
- * @return int
- * @since 3.4.3
- */
- public function identifyImageType() { }
-
- /**
- * Sets the image to the specified alpha level. Will replace ImagickDraw::setOpacity()
- *
- * @param float $alpha
- * @return bool
- * @since 3.4.3
- */
- public function setImageAlpha($alpha) { }
-}
-
-/**
- * @method ImagickDraw clone() (PECL imagick 2.0.0)<br/>Makes an exact copy of the specified ImagickDraw object
- * @link https://php.net/manual/en/class.imagickdraw.php
- */
-class ImagickDraw {
-
- public function resetVectorGraphics () {}
-
- public function getTextKerning () {}
-
- /**
- * @param $kerning
- */
- public function setTextKerning ($kerning) {}
-
- public function getTextInterWordSpacing () {}
-
- /**
- * @param $spacing
- */
- public function setTextInterWordSpacing ($spacing) {}
-
- public function getTextInterLineSpacing () {}
-
- /**
- * @param $spacing
- */
- public function setTextInterLineSpacing ($spacing) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * The ImagickDraw constructor
- * @link https://php.net/manual/en/imagickdraw.construct.php
- */
- public function __construct () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the fill color to be used for drawing filled objects
- * @link https://php.net/manual/en/imagickdraw.setfillcolor.php
- * @param ImagickPixel $fill_pixel <p>
- * ImagickPixel to use to set the color
- * </p>
- * @return bool No value is returned.
- */
- public function setFillColor (ImagickPixel $fill_pixel) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the opacity to use when drawing using the fill color or fill texture
- * @link https://php.net/manual/en/imagickdraw.setfillalpha.php
- * @param float $opacity <p>
- * fill alpha
- * </p>
- * @return bool No value is returned.
- */
- public function setFillAlpha ($opacity) {}
-
- /**
- * @param $x_resolution
- * @param $y_resolution
- */
- public function setResolution ($x_resolution, $y_resolution) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the color used for stroking object outlines
- * @link https://php.net/manual/en/imagickdraw.setstrokecolor.php
- * @param ImagickPixel $stroke_pixel <p>
- * the stroke color
- * </p>
- * @return bool No value is returned.
- */
- public function setStrokeColor (ImagickPixel $stroke_pixel) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Specifies the opacity of stroked object outlines
- * @link https://php.net/manual/en/imagickdraw.setstrokealpha.php
- * @param float $opacity <p>
- * opacity
- * </p>
- * @return bool No value is returned.
- */
- public function setStrokeAlpha ($opacity) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the width of the stroke used to draw object outlines
- * @link https://php.net/manual/en/imagickdraw.setstrokewidth.php
- * @param float $stroke_width <p>
- * stroke width
- * </p>
- * @return bool No value is returned.
- */
- public function setStrokeWidth ($stroke_width) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Clears the ImagickDraw
- * @link https://php.net/manual/en/imagickdraw.clear.php
- * @return bool an ImagickDraw object.
- */
- public function clear () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a circle
- * @link https://php.net/manual/en/imagickdraw.circle.php
- * @param float $ox <p>
- * origin x coordinate
- * </p>
- * @param float $oy <p>
- * origin y coordinate
- * </p>
- * @param float $px <p>
- * perimeter x coordinate
- * </p>
- * @param float $py <p>
- * perimeter y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function circle ($ox, $oy, $px, $py) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws text on the image
- * @link https://php.net/manual/en/imagickdraw.annotation.php
- * @param float $x <p>
- * The x coordinate where text is drawn
- * </p>
- * @param float $y <p>
- * The y coordinate where text is drawn
- * </p>
- * @param string $text <p>
- * The text to draw on the image
- * </p>
- * @return bool No value is returned.
- */
- public function annotation ($x, $y, $text) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Controls whether text is antialiased
- * @link https://php.net/manual/en/imagickdraw.settextantialias.php
- * @param bool $antiAlias
- * @return bool No value is returned.
- */
- public function setTextAntialias ($antiAlias) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Specifies specifies the text code set
- * @link https://php.net/manual/en/imagickdraw.settextencoding.php
- * @param string $encoding <p>
- * the encoding name
- * </p>
- * @return bool No value is returned.
- */
- public function setTextEncoding ($encoding) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the fully-specified font to use when annotating with text
- * @link https://php.net/manual/en/imagickdraw.setfont.php
- * @param string $font_name
- * @return bool <b>TRUE</b> on success.
- */
- public function setFont ($font_name) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the font family to use when annotating with text
- * @link https://php.net/manual/en/imagickdraw.setfontfamily.php
- * @param string $font_family <p>
- * the font family
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setFontFamily ($font_family) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the font pointsize to use when annotating with text
- * @link https://php.net/manual/en/imagickdraw.setfontsize.php
- * @param float $pointsize <p>
- * the point size
- * </p>
- * @return bool No value is returned.
- */
- public function setFontSize ($pointsize) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the font style to use when annotating with text
- * @link https://php.net/manual/en/imagickdraw.setfontstyle.php
- * @param int $style <p>
- * STYLETYPE_ constant
- * </p>
- * @return bool No value is returned.
- */
- public function setFontStyle ($style) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the font weight
- * @link https://php.net/manual/en/imagickdraw.setfontweight.php
- * @param int $font_weight
- * @return bool
- */
- public function setFontWeight ($font_weight) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the font
- * @link https://php.net/manual/en/imagickdraw.getfont.php
- * @return string|false a string on success and false if no font is set.
- */
- public function getFont () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the font family
- * @link https://php.net/manual/en/imagickdraw.getfontfamily.php
- * @return string|false the font family currently selected or false if font family is not set.
- */
- public function getFontFamily () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the font pointsize
- * @link https://php.net/manual/en/imagickdraw.getfontsize.php
- * @return float the font size associated with the current ImagickDraw object.
- */
- public function getFontSize () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the font style
- * @link https://php.net/manual/en/imagickdraw.getfontstyle.php
- * @return int the font style constant (STYLE_) associated with the ImagickDraw object
- * or 0 if no style is set.
- */
- public function getFontStyle () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the font weight
- * @link https://php.net/manual/en/imagickdraw.getfontweight.php
- * @return int an int on success and 0 if no weight is set.
- */
- public function getFontWeight () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Frees all associated resources
- * @link https://php.net/manual/en/imagickdraw.destroy.php
- * @return bool No value is returned.
- */
- public function destroy () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a rectangle
- * @link https://php.net/manual/en/imagickdraw.rectangle.php
- * @param float $x1 <p>
- * x coordinate of the top left corner
- * </p>
- * @param float $y1 <p>
- * y coordinate of the top left corner
- * </p>
- * @param float $x2 <p>
- * x coordinate of the bottom right corner
- * </p>
- * @param float $y2 <p>
- * y coordinate of the bottom right corner
- * </p>
- * @return bool No value is returned.
- */
- public function rectangle ($x1, $y1, $x2, $y2) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a rounded rectangle
- * @link https://php.net/manual/en/imagickdraw.roundrectangle.php
- * @param float $x1 <p>
- * x coordinate of the top left corner
- * </p>
- * @param float $y1 <p>
- * y coordinate of the top left corner
- * </p>
- * @param float $x2 <p>
- * x coordinate of the bottom right
- * </p>
- * @param float $y2 <p>
- * y coordinate of the bottom right
- * </p>
- * @param float $rx <p>
- * x rounding
- * </p>
- * @param float $ry <p>
- * y rounding
- * </p>
- * @return bool No value is returned.
- */
- public function roundRectangle ($x1, $y1, $x2, $y2, $rx, $ry) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws an ellipse on the image
- * @link https://php.net/manual/en/imagickdraw.ellipse.php
- * @param float $ox
- * @param float $oy
- * @param float $rx
- * @param float $ry
- * @param float $start
- * @param float $end
- * @return bool No value is returned.
- */
- public function ellipse ($ox, $oy, $rx, $ry, $start, $end) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Skews the current coordinate system in the horizontal direction
- * @link https://php.net/manual/en/imagickdraw.skewx.php
- * @param float $degrees <p>
- * degrees to skew
- * </p>
- * @return bool No value is returned.
- */
- public function skewX ($degrees) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Skews the current coordinate system in the vertical direction
- * @link https://php.net/manual/en/imagickdraw.skewy.php
- * @param float $degrees <p>
- * degrees to skew
- * </p>
- * @return bool No value is returned.
- */
- public function skewY ($degrees) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Applies a translation to the current coordinate system
- * @link https://php.net/manual/en/imagickdraw.translate.php
- * @param float $x <p>
- * horizontal translation
- * </p>
- * @param float $y <p>
- * vertical translation
- * </p>
- * @return bool No value is returned.
- */
- public function translate ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a line
- * @link https://php.net/manual/en/imagickdraw.line.php
- * @param float $sx <p>
- * starting x coordinate
- * </p>
- * @param float $sy <p>
- * starting y coordinate
- * </p>
- * @param float $ex <p>
- * ending x coordinate
- * </p>
- * @param float $ey <p>
- * ending y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function line ($sx, $sy, $ex, $ey) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws an arc
- * @link https://php.net/manual/en/imagickdraw.arc.php
- * @param float $sx <p>
- * Starting x ordinate of bounding rectangle
- * </p>
- * @param float $sy <p>
- * starting y ordinate of bounding rectangle
- * </p>
- * @param float $ex <p>
- * ending x ordinate of bounding rectangle
- * </p>
- * @param float $ey <p>
- * ending y ordinate of bounding rectangle
- * </p>
- * @param float $sd <p>
- * starting degrees of rotation
- * </p>
- * @param float $ed <p>
- * ending degrees of rotation
- * </p>
- * @return bool No value is returned.
- */
- public function arc ($sx, $sy, $ex, $ey, $sd, $ed) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Paints on the image's opacity channel
- * @link https://php.net/manual/en/imagickdraw.matte.php
- * @param float $x <p>
- * x coordinate of the matte
- * </p>
- * @param float $y <p>
- * y coordinate of the matte
- * </p>
- * @param int $paintMethod <p>
- * PAINT_ constant
- * </p>
- * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
- */
- public function matte ($x, $y, $paintMethod) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a polygon
- * @link https://php.net/manual/en/imagickdraw.polygon.php
- * @param array $coordinates <p>
- * multidimensional array like array( array( 'x' => 3, 'y' => 4 ), array( 'x' => 2, 'y' => 6 ) );
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function polygon (array $coordinates) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a point
- * @link https://php.net/manual/en/imagickdraw.point.php
- * @param float $x <p>
- * point's x coordinate
- * </p>
- * @param float $y <p>
- * point's y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function point ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the text decoration
- * @link https://php.net/manual/en/imagickdraw.gettextdecoration.php
- * @return int one of the DECORATION_ constants
- * and 0 if no decoration is set.
- */
- public function getTextDecoration () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the code set used for text annotations
- * @link https://php.net/manual/en/imagickdraw.gettextencoding.php
- * @return string a string specifying the code set
- * or false if text encoding is not set.
- */
- public function getTextEncoding () {}
-
- public function getFontStretch () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the font stretch to use when annotating with text
- * @link https://php.net/manual/en/imagickdraw.setfontstretch.php
- * @param int $fontStretch <p>
- * STRETCH_ constant
- * </p>
- * @return bool No value is returned.
- */
- public function setFontStretch ($fontStretch) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Controls whether stroked outlines are antialiased
- * @link https://php.net/manual/en/imagickdraw.setstrokeantialias.php
- * @param bool $stroke_antialias <p>
- * the antialias setting
- * </p>
- * @return bool No value is returned.
- */
- public function setStrokeAntialias ($stroke_antialias) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Specifies a text alignment
- * @link https://php.net/manual/en/imagickdraw.settextalignment.php
- * @param int $alignment <p>
- * ALIGN_ constant
- * </p>
- * @return bool No value is returned.
- */
- public function setTextAlignment ($alignment) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Specifies a decoration
- * @link https://php.net/manual/en/imagickdraw.settextdecoration.php
- * @param int $decoration <p>
- * DECORATION_ constant
- * </p>
- * @return bool No value is returned.
- */
- public function setTextDecoration ($decoration) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Specifies the color of a background rectangle
- * @link https://php.net/manual/en/imagickdraw.settextundercolor.php
- * @param ImagickPixel $under_color <p>
- * the under color
- * </p>
- * @return bool No value is returned.
- */
- public function setTextUnderColor (ImagickPixel $under_color) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the overall canvas size
- * @link https://php.net/manual/en/imagickdraw.setviewbox.php
- * @param int $x1 <p>
- * left x coordinate
- * </p>
- * @param int $y1 <p>
- * left y coordinate
- * </p>
- * @param int $x2 <p>
- * right x coordinate
- * </p>
- * @param int $y2 <p>
- * right y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function setViewbox ($x1, $y1, $x2, $y2) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adjusts the current affine transformation matrix
- * @link https://php.net/manual/en/imagickdraw.affine.php
- * @param array $affine <p>
- * Affine matrix parameters
- * </p>
- * @return bool No value is returned.
- */
- public function affine (array $affine) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a bezier curve
- * @link https://php.net/manual/en/imagickdraw.bezier.php
- * @param array $coordinates <p>
- * Multidimensional array like array( array( 'x' => 1, 'y' => 2 ),
- * array( 'x' => 3, 'y' => 4 ) )
- * </p>
- * @return bool No value is returned.
- */
- public function bezier (array $coordinates) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Composites an image onto the current image
- * @link https://php.net/manual/en/imagickdraw.composite.php
- * @param int $compose <p>
- * composition operator. One of COMPOSITE_ constants
- * </p>
- * @param float $x <p>
- * x coordinate of the top left corner
- * </p>
- * @param float $y <p>
- * y coordinate of the top left corner
- * </p>
- * @param float $width <p>
- * width of the composition image
- * </p>
- * @param float $height <p>
- * height of the composition image
- * </p>
- * @param Imagick $compositeWand <p>
- * the Imagick object where composition image is taken from
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function composite ($compose, $x, $y, $width, $height, Imagick $compositeWand) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws color on image
- * @link https://php.net/manual/en/imagickdraw.color.php
- * @param float $x <p>
- * x coordinate of the paint
- * </p>
- * @param float $y <p>
- * y coordinate of the paint
- * </p>
- * @param int $paintMethod <p>
- * one of the PAINT_ constants
- * </p>
- * @return bool No value is returned.
- */
- public function color ($x, $y, $paintMethod) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds a comment
- * @link https://php.net/manual/en/imagickdraw.comment.php
- * @param string $comment <p>
- * The comment string to add to vector output stream
- * </p>
- * @return bool No value is returned.
- */
- public function comment ($comment) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Obtains the current clipping path ID
- * @link https://php.net/manual/en/imagickdraw.getclippath.php
- * @return string|false a string containing the clip path ID or false if no clip path exists.
- */
- public function getClipPath () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the current polygon fill rule
- * @link https://php.net/manual/en/imagickdraw.getcliprule.php
- * @return int one of the FILLRULE_ constants.
- */
- public function getClipRule () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the interpretation of clip path units
- * @link https://php.net/manual/en/imagickdraw.getclipunits.php
- * @return int an int on success.
- */
- public function getClipUnits () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the fill color
- * @link https://php.net/manual/en/imagickdraw.getfillcolor.php
- * @return ImagickPixel an ImagickPixel object.
- */
- public function getFillColor () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the opacity used when drawing
- * @link https://php.net/manual/en/imagickdraw.getfillopacity.php
- * @return float The opacity.
- */
- public function getFillOpacity () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the fill rule
- * @link https://php.net/manual/en/imagickdraw.getfillrule.php
- * @return int a FILLRULE_ constant
- */
- public function getFillRule () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the text placement gravity
- * @link https://php.net/manual/en/imagickdraw.getgravity.php
- * @return int a GRAVITY_ constant on success and 0 if no gravity is set.
- */
- public function getGravity () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the current stroke antialias setting
- * @link https://php.net/manual/en/imagickdraw.getstrokeantialias.php
- * @return bool <b>TRUE</b> if antialiasing is on and false if it is off.
- */
- public function getStrokeAntialias () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the color used for stroking object outlines
- * @link https://php.net/manual/en/imagickdraw.getstrokecolor.php
- * @return ImagickPixel an ImagickPixel object which describes the color.
- */
- public function getStrokeColor () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns an array representing the pattern of dashes and gaps used to stroke paths
- * @link https://php.net/manual/en/imagickdraw.getstrokedasharray.php
- * @return array an array on success and empty array if not set.
- */
- public function getStrokeDashArray () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the offset into the dash pattern to start the dash
- * @link https://php.net/manual/en/imagickdraw.getstrokedashoffset.php
- * @return float a float representing the offset and 0 if it's not set.
- */
- public function getStrokeDashOffset () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the shape to be used at the end of open subpaths when they are stroked
- * @link https://php.net/manual/en/imagickdraw.getstrokelinecap.php
- * @return int one of the LINECAP_ constants or 0 if stroke linecap is not set.
- */
- public function getStrokeLineCap () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the shape to be used at the corners of paths when they are stroked
- * @link https://php.net/manual/en/imagickdraw.getstrokelinejoin.php
- * @return int one of the LINEJOIN_ constants or 0 if stroke line join is not set.
- */
- public function getStrokeLineJoin () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the stroke miter limit
- * @link https://php.net/manual/en/imagickdraw.getstrokemiterlimit.php
- * @return int an int describing the miter limit
- * and 0 if no miter limit is set.
- */
- public function getStrokeMiterLimit () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the opacity of stroked object outlines
- * @link https://php.net/manual/en/imagickdraw.getstrokeopacity.php
- * @return float a float describing the opacity.
- */
- public function getStrokeOpacity () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the width of the stroke used to draw object outlines
- * @link https://php.net/manual/en/imagickdraw.getstrokewidth.php
- * @return float a float describing the stroke width.
- */
- public function getStrokeWidth () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the text alignment
- * @link https://php.net/manual/en/imagickdraw.gettextalignment.php
- * @return int one of the ALIGN_ constants and 0 if no align is set.
- */
- public function getTextAlignment () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the current text antialias setting
- * @link https://php.net/manual/en/imagickdraw.gettextantialias.php
- * @return bool <b>TRUE</b> if text is antialiased and false if not.
- */
- public function getTextAntialias () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns a string containing vector graphics
- * @link https://php.net/manual/en/imagickdraw.getvectorgraphics.php
- * @return string a string containing the vector graphics.
- */
- public function getVectorGraphics () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the text under color
- * @link https://php.net/manual/en/imagickdraw.gettextundercolor.php
- * @return ImagickPixel an ImagickPixel object describing the color.
- */
- public function getTextUnderColor () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adds a path element to the current path
- * @link https://php.net/manual/en/imagickdraw.pathclose.php
- * @return bool No value is returned.
- */
- public function pathClose () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a cubic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetoabsolute.php
- * @param float $x1 <p>
- * x coordinate of the first control point
- * </p>
- * @param float $y1 <p>
- * y coordinate of the first control point
- * </p>
- * @param float $x2 <p>
- * x coordinate of the second control point
- * </p>
- * @param float $y2 <p>
- * y coordinate of the first control point
- * </p>
- * @param float $x <p>
- * x coordinate of the curve end
- * </p>
- * @param float $y <p>
- * y coordinate of the curve end
- * </p>
- * @return bool No value is returned.
- */
- public function pathCurveToAbsolute ($x1, $y1, $x2, $y2, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a cubic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetorelative.php
- * @param float $x1 <p>
- * x coordinate of starting control point
- * </p>
- * @param float $y1 <p>
- * y coordinate of starting control point
- * </p>
- * @param float $x2 <p>
- * x coordinate of ending control point
- * </p>
- * @param float $y2 <p>
- * y coordinate of ending control point
- * </p>
- * @param float $x <p>
- * ending x coordinate
- * </p>
- * @param float $y <p>
- * ending y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathCurveToRelative ($x1, $y1, $x2, $y2, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a quadratic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbezierabsolute.php
- * @param float $x1 <p>
- * x coordinate of the control point
- * </p>
- * @param float $y1 <p>
- * y coordinate of the control point
- * </p>
- * @param float $x <p>
- * x coordinate of the end point
- * </p>
- * @param float $y <p>
- * y coordinate of the end point
- * </p>
- * @return bool No value is returned.
- */
- public function pathCurveToQuadraticBezierAbsolute ($x1, $y1, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a quadratic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbezierrelative.php
- * @param float $x1 <p>
- * starting x coordinate
- * </p>
- * @param float $y1 <p>
- * starting y coordinate
- * </p>
- * @param float $x <p>
- * ending x coordinate
- * </p>
- * @param float $y <p>
- * ending y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathCurveToQuadraticBezierRelative ($x1, $y1, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a quadratic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbeziersmoothabsolute.php
- * @param float $x <p>
- * ending x coordinate
- * </p>
- * @param float $y <p>
- * ending y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathCurveToQuadraticBezierSmoothAbsolute ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a quadratic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbeziersmoothrelative.php
- * @param float $x <p>
- * ending x coordinate
- * </p>
- * @param float $y <p>
- * ending y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathCurveToQuadraticBezierSmoothRelative ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a cubic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetosmoothabsolute.php
- * @param float $x2 <p>
- * x coordinate of the second control point
- * </p>
- * @param float $y2 <p>
- * y coordinate of the second control point
- * </p>
- * @param float $x <p>
- * x coordinate of the ending point
- * </p>
- * @param float $y <p>
- * y coordinate of the ending point
- * </p>
- * @return bool No value is returned.
- */
- public function pathCurveToSmoothAbsolute ($x2, $y2, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a cubic Bezier curve
- * @link https://php.net/manual/en/imagickdraw.pathcurvetosmoothrelative.php
- * @param float $x2 <p>
- * x coordinate of the second control point
- * </p>
- * @param float $y2 <p>
- * y coordinate of the second control point
- * </p>
- * @param float $x <p>
- * x coordinate of the ending point
- * </p>
- * @param float $y <p>
- * y coordinate of the ending point
- * </p>
- * @return bool No value is returned.
- */
- public function pathCurveToSmoothRelative ($x2, $y2, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws an elliptical arc
- * @link https://php.net/manual/en/imagickdraw.pathellipticarcabsolute.php
- * @param float $rx <p>
- * x radius
- * </p>
- * @param float $ry <p>
- * y radius
- * </p>
- * @param float $x_axis_rotation <p>
- * x axis rotation
- * </p>
- * @param bool $large_arc_flag <p>
- * large arc flag
- * </p>
- * @param bool $sweep_flag <p>
- * sweep flag
- * </p>
- * @param float $x <p>
- * x coordinate
- * </p>
- * @param float $y <p>
- * y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathEllipticArcAbsolute ($rx, $ry, $x_axis_rotation, $large_arc_flag, $sweep_flag, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws an elliptical arc
- * @link https://php.net/manual/en/imagickdraw.pathellipticarcrelative.php
- * @param float $rx <p>
- * x radius
- * </p>
- * @param float $ry <p>
- * y radius
- * </p>
- * @param float $x_axis_rotation <p>
- * x axis rotation
- * </p>
- * @param bool $large_arc_flag <p>
- * large arc flag
- * </p>
- * @param bool $sweep_flag <p>
- * sweep flag
- * </p>
- * @param float $x <p>
- * x coordinate
- * </p>
- * @param float $y <p>
- * y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathEllipticArcRelative ($rx, $ry, $x_axis_rotation, $large_arc_flag, $sweep_flag, $x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Terminates the current path
- * @link https://php.net/manual/en/imagickdraw.pathfinish.php
- * @return bool No value is returned.
- */
- public function pathFinish () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a line path
- * @link https://php.net/manual/en/imagickdraw.pathlinetoabsolute.php
- * @param float $x <p>
- * starting x coordinate
- * </p>
- * @param float $y <p>
- * ending x coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathLineToAbsolute ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a line path
- * @link https://php.net/manual/en/imagickdraw.pathlinetorelative.php
- * @param float $x <p>
- * starting x coordinate
- * </p>
- * @param float $y <p>
- * starting y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathLineToRelative ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a horizontal line path
- * @link https://php.net/manual/en/imagickdraw.pathlinetohorizontalabsolute.php
- * @param float $x <p>
- * x coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathLineToHorizontalAbsolute ($x) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a horizontal line
- * @link https://php.net/manual/en/imagickdraw.pathlinetohorizontalrelative.php
- * @param float $x <p>
- * x coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathLineToHorizontalRelative ($x) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a vertical line
- * @link https://php.net/manual/en/imagickdraw.pathlinetoverticalabsolute.php
- * @param float $y <p>
- * y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathLineToVerticalAbsolute ($y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a vertical line path
- * @link https://php.net/manual/en/imagickdraw.pathlinetoverticalrelative.php
- * @param float $y <p>
- * y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathLineToVerticalRelative ($y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Starts a new sub-path
- * @link https://php.net/manual/en/imagickdraw.pathmovetoabsolute.php
- * @param float $x <p>
- * x coordinate of the starting point
- * </p>
- * @param float $y <p>
- * y coordinate of the starting point
- * </p>
- * @return bool No value is returned.
- */
- public function pathMoveToAbsolute ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Starts a new sub-path
- * @link https://php.net/manual/en/imagickdraw.pathmovetorelative.php
- * @param float $x <p>
- * target x coordinate
- * </p>
- * @param float $y <p>
- * target y coordinate
- * </p>
- * @return bool No value is returned.
- */
- public function pathMoveToRelative ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Declares the start of a path drawing list
- * @link https://php.net/manual/en/imagickdraw.pathstart.php
- * @return bool No value is returned.
- */
- public function pathStart () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Draws a polyline
- * @link https://php.net/manual/en/imagickdraw.polyline.php
- * @param array $coordinates <p>
- * array of x and y coordinates: array( array( 'x' => 4, 'y' => 6 ), array( 'x' => 8, 'y' => 10 ) )
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function polyline (array $coordinates) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Terminates a clip path definition
- * @link https://php.net/manual/en/imagickdraw.popclippath.php
- * @return bool No value is returned.
- */
- public function popClipPath () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Terminates a definition list
- * @link https://php.net/manual/en/imagickdraw.popdefs.php
- * @return bool No value is returned.
- */
- public function popDefs () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Terminates a pattern definition
- * @link https://php.net/manual/en/imagickdraw.poppattern.php
- * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
- */
- public function popPattern () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Starts a clip path definition
- * @link https://php.net/manual/en/imagickdraw.pushclippath.php
- * @param string $clip_mask_id <p>
- * Clip mask Id
- * </p>
- * @return bool No value is returned.
- */
- public function pushClipPath ($clip_mask_id) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Indicates that following commands create named elements for early processing
- * @link https://php.net/manual/en/imagickdraw.pushdefs.php
- * @return bool No value is returned.
- */
- public function pushDefs () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Indicates that subsequent commands up to a ImagickDraw::opPattern() command comprise the definition of a named pattern
- * @link https://php.net/manual/en/imagickdraw.pushpattern.php
- * @param string $pattern_id <p>
- * the pattern Id
- * </p>
- * @param float $x <p>
- * x coordinate of the top-left corner
- * </p>
- * @param float $y <p>
- * y coordinate of the top-left corner
- * </p>
- * @param float $width <p>
- * width of the pattern
- * </p>
- * @param float $height <p>
- * height of the pattern
- * </p>
- * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
- */
- public function pushPattern ($pattern_id, $x, $y, $width, $height) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Renders all preceding drawing commands onto the image
- * @link https://php.net/manual/en/imagickdraw.render.php
- * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
- */
- public function render () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Applies the specified rotation to the current coordinate space
- * @link https://php.net/manual/en/imagickdraw.rotate.php
- * @param float $degrees <p>
- * degrees to rotate
- * </p>
- * @return bool No value is returned.
- */
- public function rotate ($degrees) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Adjusts the scaling factor
- * @link https://php.net/manual/en/imagickdraw.scale.php
- * @param float $x <p>
- * horizontal factor
- * </p>
- * @param float $y <p>
- * vertical factor
- * </p>
- * @return bool No value is returned.
- */
- public function scale ($x, $y) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Associates a named clipping path with the image
- * @link https://php.net/manual/en/imagickdraw.setclippath.php
- * @param string $clip_mask <p>
- * the clipping path name
- * </p>
- * @return bool No value is returned.
- */
- public function setClipPath ($clip_mask) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Set the polygon fill rule to be used by the clipping path
- * @link https://php.net/manual/en/imagickdraw.setcliprule.php
- * @param int $fill_rule <p>
- * FILLRULE_ constant
- * </p>
- * @return bool No value is returned.
- */
- public function setClipRule ($fill_rule) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the interpretation of clip path units
- * @link https://php.net/manual/en/imagickdraw.setclipunits.php
- * @param int $clip_units <p>
- * the number of clip units
- * </p>
- * @return bool No value is returned.
- */
- public function setClipUnits ($clip_units) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the opacity to use when drawing using the fill color or fill texture
- * @link https://php.net/manual/en/imagickdraw.setfillopacity.php
- * @param float $fillOpacity <p>
- * the fill opacity
- * </p>
- * @return bool No value is returned.
- */
- public function setFillOpacity ($fillOpacity) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the URL to use as a fill pattern for filling objects
- * @link https://php.net/manual/en/imagickdraw.setfillpatternurl.php
- * @param string $fill_url <p>
- * URL to use to obtain fill pattern.
- * </p>
- * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
- */
- public function setFillPatternURL ($fill_url) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the fill rule to use while drawing polygons
- * @link https://php.net/manual/en/imagickdraw.setfillrule.php
- * @param int $fill_rule <p>
- * FILLRULE_ constant
- * </p>
- * @return bool No value is returned.
- */
- public function setFillRule ($fill_rule) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the text placement gravity
- * @link https://php.net/manual/en/imagickdraw.setgravity.php
- * @param int $gravity <p>
- * GRAVITY_ constant
- * </p>
- * @return bool No value is returned.
- */
- public function setGravity ($gravity) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the pattern used for stroking object outlines
- * @link https://php.net/manual/en/imagickdraw.setstrokepatternurl.php
- * @param string $stroke_url <p>
- * stroke URL
- * </p>
- * @return bool imagick.imagickdraw.return.success;
- */
- public function setStrokePatternURL ($stroke_url) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Specifies the offset into the dash pattern to start the dash
- * @link https://php.net/manual/en/imagickdraw.setstrokedashoffset.php
- * @param float $dash_offset <p>
- * dash offset
- * </p>
- * @return bool No value is returned.
- */
- public function setStrokeDashOffset ($dash_offset) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Specifies the shape to be used at the end of open subpaths when they are stroked
- * @link https://php.net/manual/en/imagickdraw.setstrokelinecap.php
- * @param int $linecap <p>
- * LINECAP_ constant
- * </p>
- * @return bool No value is returned.
- */
- public function setStrokeLineCap ($linecap) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Specifies the shape to be used at the corners of paths when they are stroked
- * @link https://php.net/manual/en/imagickdraw.setstrokelinejoin.php
- * @param int $linejoin <p>
- * LINEJOIN_ constant
- * </p>
- * @return bool No value is returned.
- */
- public function setStrokeLineJoin ($linejoin) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Specifies the miter limit
- * @link https://php.net/manual/en/imagickdraw.setstrokemiterlimit.php
- * @param int $miterlimit <p>
- * the miter limit
- * </p>
- * @return bool No value is returned.
- */
- public function setStrokeMiterLimit ($miterlimit) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Specifies the opacity of stroked object outlines
- * @link https://php.net/manual/en/imagickdraw.setstrokeopacity.php
- * @param float $stroke_opacity <p>
- * stroke opacity. 1.0 is fully opaque
- * </p>
- * @return bool No value is returned.
- */
- public function setStrokeOpacity ($stroke_opacity) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the vector graphics
- * @link https://php.net/manual/en/imagickdraw.setvectorgraphics.php
- * @param string $xml <p>
- * xml containing the vector graphics
- * </p>
- * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
- */
- public function setVectorGraphics ($xml) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Destroys the current ImagickDraw in the stack, and returns to the previously pushed ImagickDraw
- * @link https://php.net/manual/en/imagickdraw.pop.php
- * @return bool <b>TRUE</b> on success and false on failure.
- */
- public function pop () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Clones the current ImagickDraw and pushes it to the stack
- * @link https://php.net/manual/en/imagickdraw.push.php
- * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
- */
- public function push () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Specifies the pattern of dashes and gaps used to stroke paths
- * @link https://php.net/manual/en/imagickdraw.setstrokedasharray.php
- * @param array $dashArray <p>
- * array of floats
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setStrokeDashArray (array $dashArray) {}
-
- /**
- * Sets the opacity to use when drawing using the fill or stroke color or texture. Fully opaque is 1.0.
- *
- * @param float $opacity
- * @return void
- * @since 3.4.1
- */
- public function setOpacity($opacity) { }
-
- /**
- * Returns the opacity used when drawing with the fill or stroke color or texture. Fully opaque is 1.0.
- *
- * @return float
- * @since 3.4.1
- */
- public function getOpacity() { }
-
- /**
- * Sets the image font resolution.
- *
- * @param float $x
- * @param float $y
- * @return bool
- * @since 3.4.1
- */
- public function setFontResolution($x, $y) { }
-
- /**
- * Gets the image X and Y resolution.
- *
- * @return array
- * @since 3.4.1
- */
- public function getFontResolution() { }
-
- /**
- * Returns the direction that will be used when annotating with text.
- * @return bool
- * @since 3.4.1
- */
- public function getTextDirection() { }
-
- /**
- * Sets the font style to use when annotating with text. The AnyStyle enumeration acts as a wild-card "don't care" option.
- *
- * @param int $direction
- * @return bool
- * @since 3.4.1
- */
- public function setTextDirection($direction) { }
-
- /**
- * Returns the border color used for drawing bordered objects.
- *
- * @return ImagickPixel
- * @since 3.4.1
- */
- public function getBorderColor() { }
-
- /**
- * Sets the border color to be used for drawing bordered objects.
- * @param ImagickPixel $color
- * @return bool
- * @since 3.4.1
- */
- public function setBorderColor(ImagickPixel $color) { }
-
- /**
- * Obtains the vertical and horizontal resolution.
- *
- * @return string|null
- * @since 3.4.1
- */
- public function getDensity() { }
-
- /**
- * Sets the vertical and horizontal resolution.
- * @param string $density_string
- * @return bool
- * @since 3.4.1
- */
- public function setDensity($density_string) { }
-}
-
-/**
- * @link https://php.net/manual/en/class.imagickpixeliterator.php
- */
-class ImagickPixelIterator implements Iterator {
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * The ImagickPixelIterator constructor
- * @link https://php.net/manual/en/imagickpixeliterator.construct.php
- * @param Imagick $wand
- */
- public function __construct (Imagick $wand) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns a new pixel iterator
- * @link https://php.net/manual/en/imagickpixeliterator.newpixeliterator.php
- * @param Imagick $wand
- * @return bool <b>TRUE</b> on success. Throwing ImagickPixelIteratorException.
- * @throws ImagickPixelIteratorException
- */
- public function newPixelIterator (Imagick $wand) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns a new pixel iterator
- * @link https://php.net/manual/en/imagickpixeliterator.newpixelregioniterator.php
- * @param Imagick $wand
- * @param int $x
- * @param int $y
- * @param int $columns
- * @param int $rows
- * @return bool a new ImagickPixelIterator on success; on failure, throws ImagickPixelIteratorException
- * @throws ImagickPixelIteratorException
- */
- public function newPixelRegionIterator (Imagick $wand, $x, $y, $columns, $rows) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the current pixel iterator row
- * @link https://php.net/manual/en/imagickpixeliterator.getiteratorrow.php
- * @return int the integer offset of the row, throwing ImagickPixelIteratorException on error.
- * @throws ImagickPixelIteratorException on error
- */
- public function getIteratorRow () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Set the pixel iterator row
- * @link https://php.net/manual/en/imagickpixeliterator.setiteratorrow.php
- * @param int $row
- * @return bool <b>TRUE</b> on success.
- */
- public function setIteratorRow ($row) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the pixel iterator to the first pixel row
- * @link https://php.net/manual/en/imagickpixeliterator.setiteratorfirstrow.php
- * @return bool <b>TRUE</b> on success.
- */
- public function setIteratorFirstRow () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the pixel iterator to the last pixel row
- * @link https://php.net/manual/en/imagickpixeliterator.setiteratorlastrow.php
- * @return bool <b>TRUE</b> on success.
- */
- public function setIteratorLastRow () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the previous row
- * @link https://php.net/manual/en/imagickpixeliterator.getpreviousiteratorrow.php
- * @return array the previous row as an array of ImagickPixelWand objects from the
- * ImagickPixelIterator, throwing ImagickPixelIteratorException on error.
- * @throws ImagickPixelIteratorException on error
- */
- public function getPreviousIteratorRow () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the current row of ImagickPixel objects
- * @link https://php.net/manual/en/imagickpixeliterator.getcurrentiteratorrow.php
- * @return array a row as an array of ImagickPixel objects that can themselves be iterated.
- */
- public function getCurrentIteratorRow () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the next row of the pixel iterator
- * @link https://php.net/manual/en/imagickpixeliterator.getnextiteratorrow.php
- * @return array the next row as an array of ImagickPixel objects, throwing
- * ImagickPixelIteratorException on error.
- * @throws ImagickPixelIteratorException on error
- */
- public function getNextIteratorRow () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Resets the pixel iterator
- * @link https://php.net/manual/en/imagickpixeliterator.resetiterator.php
- * @return bool <b>TRUE</b> on success.
- */
- public function resetIterator () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Syncs the pixel iterator
- * @link https://php.net/manual/en/imagickpixeliterator.synciterator.php
- * @return bool <b>TRUE</b> on success.
- */
- public function syncIterator () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Deallocates resources associated with a PixelIterator
- * @link https://php.net/manual/en/imagickpixeliterator.destroy.php
- * @return bool <b>TRUE</b> on success.
- */
- public function destroy () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Clear resources associated with a PixelIterator
- * @link https://php.net/manual/en/imagickpixeliterator.clear.php
- * @return bool <b>TRUE</b> on success.
- */
- public function clear () {}
-
- /**
- * @param Imagick $Imagick
- */
- public static function getpixeliterator (Imagick $Imagick) {}
-
- /**
- * @param Imagick $Imagick
- * @param $x
- * @param $y
- * @param $columns
- * @param $rows
- */
- public static function getpixelregioniterator (Imagick $Imagick, $x, $y, $columns, $rows) {}
-
- public function key () {}
-
- public function next () {}
-
- public function rewind () {}
-
- public function current () {}
-
- public function valid () {}
-
-}
-
-/**
- * @method clone()
- * @link https://php.net/manual/en/class.imagickpixel.php
- */
-class ImagickPixel {
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the normalized HSL color of the ImagickPixel object
- * @link https://php.net/manual/en/imagickpixel.gethsl.php
- * @return array the HSL value in an array with the keys "hue",
- * "saturation", and "luminosity". Throws ImagickPixelException on failure.
- * @throws ImagickPixelException on failure
- */
- public function getHSL () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the normalized HSL color
- * @link https://php.net/manual/en/imagickpixel.sethsl.php
- * @param float $hue <p>
- * The normalized value for hue, described as a fractional arc
- * (between 0 and 1) of the hue circle, where the zero value is
- * red.
- * </p>
- * @param float $saturation <p>
- * The normalized value for saturation, with 1 as full saturation.
- * </p>
- * @param float $luminosity <p>
- * The normalized value for luminosity, on a scale from black at
- * 0 to white at 1, with the full HS value at 0.5 luminosity.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setHSL ($hue, $saturation, $luminosity) {}
-
- public function getColorValueQuantum () {}
-
- /**
- * @param $color_value
- */
- public function setColorValueQuantum ($color_value) {}
-
- public function getIndex () {}
-
- /**
- * @param $index
- */
- public function setIndex ($index) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * The ImagickPixel constructor
- * @link https://php.net/manual/en/imagickpixel.construct.php
- * @param string $color [optional] <p>
- * The optional color string to use as the initial value of this object.
- * </p>
- */
- public function __construct ($color = null) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the color
- * @link https://php.net/manual/en/imagickpixel.setcolor.php
- * @param string $color <p>
- * The color definition to use in order to initialise the
- * ImagickPixel object.
- * </p>
- * @return bool <b>TRUE</b> if the specified color was set, <b>FALSE</b> otherwise.
- */
- public function setColor ($color) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Sets the normalized value of one of the channels
- * @link https://php.net/manual/en/imagickpixel.setcolorvalue.php
- * @param int $color <p>
- * One of the Imagick color constants e.g. \Imagick::COLOR_GREEN or \Imagick::COLOR_ALPHA.
- * </p>
- * @param float $value <p>
- * The value to set this channel to, ranging from 0 to 1.
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function setColorValue ($color, $value) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Gets the normalized value of the provided color channel
- * @link https://php.net/manual/en/imagickpixel.getcolorvalue.php
- * @param int $color <p>
- * The color to get the value of, specified as one of the Imagick color
- * constants. This can be one of the RGB colors, CMYK colors, alpha and
- * opacity e.g (Imagick::COLOR_BLUE, Imagick::COLOR_MAGENTA).
- * </p>
- * @return float The value of the channel, as a normalized floating-point number, throwing
- * ImagickPixelException on error.
- * @throws ImagickPixelException on error
- */
- public function getColorValue ($color) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Clears resources associated with this object
- * @link https://php.net/manual/en/imagickpixel.clear.php
- * @return bool <b>TRUE</b> on success.
- */
- public function clear () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Deallocates resources associated with this object
- * @link https://php.net/manual/en/imagickpixel.destroy.php
- * @return bool <b>TRUE</b> on success.
- */
- public function destroy () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Check the distance between this color and another
- * @link https://php.net/manual/en/imagickpixel.issimilar.php
- * @param ImagickPixel $color <p>
- * The ImagickPixel object to compare this object against.
- * </p>
- * @param float $fuzz <p>
- * The maximum distance within which to consider these colors as similar.
- * The theoretical maximum for this value is the square root of three
- * (1.732).
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function isSimilar (ImagickPixel $color, $fuzz) {}
-
- /**
- * (No version information available, might only be in SVN)<br/>
- * Check the distance between this color and another
- * @link https://php.net/manual/en/imagickpixel.ispixelsimilar.php
- * @param ImagickPixel $color <p>
- * The ImagickPixel object to compare this object against.
- * </p>
- * @param float $fuzz <p>
- * The maximum distance within which to consider these colors as similar.
- * The theoretical maximum for this value is the square root of three
- * (1.732).
- * </p>
- * @return bool <b>TRUE</b> on success.
- */
- public function isPixelSimilar (ImagickPixel $color, $fuzz) {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the color
- * @link https://php.net/manual/en/imagickpixel.getcolor.php
- * @param bool $normalized [optional] <p>
- * Normalize the color values
- * </p>
- * @return array An array of channel values, each normalized if <b>TRUE</b> is given as param. Throws
- * ImagickPixelException on error.
- * @throws ImagickPixelException on error.
- */
- public function getColor ($normalized = false) {}
-
- /**
- * (PECL imagick 2.1.0)<br/>
- * Returns the color as a string
- * @link https://php.net/manual/en/imagickpixel.getcolorasstring.php
- * @return string the color of the ImagickPixel object as a string.
- */
- public function getColorAsString () {}
-
- /**
- * (PECL imagick 2.0.0)<br/>
- * Returns the color count associated with this color
- * @link https://php.net/manual/en/imagickpixel.getcolorcount.php
- * @return int the color count as an integer on success, throws
- * ImagickPixelException on failure.
- * @throws ImagickPixelException on failure.
- */
- public function getColorCount () {}
-
- /**
- * @param $colorCount
- */
- public function setColorCount ($colorCount) {}
-
-
- /**
- * Returns true if the distance between two colors is less than the specified distance. The fuzz value should be in the range 0-QuantumRange.<br>
- * The maximum value represents the longest possible distance in the colorspace. e.g. from RGB(0, 0, 0) to RGB(255, 255, 255) for the RGB colorspace
- * @link https://php.net/manual/en/imagickpixel.ispixelsimilarquantum.php
- * @param string $pixel
- * @param string $fuzz
- * @return bool
- * @since 3.3.0
- */
- public function isPixelSimilarQuantum($color, $fuzz) { }
-
- /**
- * Returns the color of the pixel in an array as Quantum values. If ImageMagick was compiled as HDRI these will be floats, otherwise they will be integers.
- * @link https://php.net/manual/en/imagickpixel.getcolorquantum.php
- * @return mixed The quantum value of the color element. Float if ImageMagick was compiled with HDRI, otherwise an int.
- * @since 3.3.0
- */
- public function getColorQuantum() { }
-
- /**
- * Sets the color count associated with this color from another ImagickPixel object.
- *
- * @param ImagickPixel $srcPixel
- * @return bool
- * @since 3.4.1
- */
- public function setColorFromPixel(ImagickPixel $srcPixel) { }
-}
-// End of imagick v.3.2.0RC1
-
-// Start of Imagick v3.3.0RC1
-
-/**
- * @link https://php.net/manual/en/class.imagickkernel.php
- */
-class ImagickKernel {
- /**
- * Attach another kernel to this kernel to allow them to both be applied in a single morphology or filter function. Returns the new combined kernel.
- * @link https://php.net/manual/en/imagickkernel.addkernel.php
- * @param ImagickKernel $imagickKernel
- * @return void
- * @since 3.3.0
- */
- public function addKernel(ImagickKernel $imagickKernel) { }
-
- /**
- * Adds a given amount of the 'Unity' Convolution Kernel to the given pre-scaled and normalized Kernel. This in effect adds that amount of the original image into the resulting convolution kernel. The resulting effect is to convert the defined kernels into blended soft-blurs, unsharp kernels or into sharpening kernels.
- * @link https://php.net/manual/en/imagickkernel.addunitykernel.php
- * @return void
- * @since 3.3.0
- */
- public function addUnityKernel() { }
-
- /**
- * Create a kernel from a builtin in kernel. See https://www.imagemagick.org/Usage/morphology/#kernel for examples.<br>
- * Currently the 'rotation' symbols are not supported. Example: $diamondKernel = ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "2");
- * @link https://php.net/manual/en/imagickkernel.frombuiltin.php
- * @param string $kernelType The type of kernel to build e.g. \Imagick::KERNEL_DIAMOND
- * @param string $kernelString A string that describes the parameters e.g. "4,2.5"
- * @return void
- * @since 3.3.0
- */
- public static function fromBuiltin($kernelType, $kernelString) { }
-
- /**
- * Create a kernel from a builtin in kernel. See https://www.imagemagick.org/Usage/morphology/#kernel for examples.<br>
- * Currently the 'rotation' symbols are not supported. Example: $diamondKernel = ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "2");
- * @link https://php.net/manual/en/imagickkernel.frombuiltin.php
- * @see https://www.imagemagick.org/Usage/morphology/#kernel
- * @param array $matrix A matrix (i.e. 2d array) of values that define the kernel. Each element should be either a float value, or FALSE if that element shouldn't be used by the kernel.
- * @param array $origin [optional] Which element of the kernel should be used as the origin pixel. e.g. For a 3x3 matrix specifying the origin as [2, 2] would specify that the bottom right element should be the origin pixel.
- * @return ImagickKernel
- * @since 3.3.0
- */
- public static function fromMatrix($matrix, $origin) { }
-
- /**
- * Get the 2d matrix of values used in this kernel. The elements are either float for elements that are used or 'false' if the element should be skipped.
- * @link https://php.net/manual/en/imagickkernel.getmatrix.php
- * @return array A matrix (2d array) of the values that represent the kernel.
- * @since 3.3.0
- */
- public function getMatrix() { }
-
- /**
- * ScaleKernelInfo() scales the given kernel list by the given amount, with or without normalization of the sum of the kernel values (as per given flags).<br>
- * The exact behaviour of this function depends on the normalization type being used please see https://www.imagemagick.org/api/morphology.php#ScaleKernelInfo for details.<br>
- * Flag should be one of Imagick::NORMALIZE_KERNEL_VALUE, Imagick::NORMALIZE_KERNEL_CORRELATE, Imagick::NORMALIZE_KERNEL_PERCENT or not set.
- * @link https://php.net/manual/en/imagickkernel.scale.php
- * @see https://www.imagemagick.org/api/morphology.php#ScaleKernelInfo
- * @return void
- * @since 3.3.0
- */
- public function scale() { }
-
- /**
- * Separates a linked set of kernels and returns an array of ImagickKernels.
- * @link https://php.net/manual/en/imagickkernel.separate.php
- * @return void
- * @since 3.3.0
- */
- public function seperate() { }
-}
diff --git a/vendor/chillerlan/php-qrcode/.scrutinizer.yml b/vendor/chillerlan/php-qrcode/.scrutinizer.yml
deleted file mode 100644
index 2a7e7028b..000000000
--- a/vendor/chillerlan/php-qrcode/.scrutinizer.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-build:
- nodes:
- analysis:
- tests:
- override:
- - php-scrutinizer-run
- environment:
- php: 8.0.0
-
-filter:
- excluded_paths:
- - examples/*
- - tests/*
- - vendor/*
- - .github/*
- - .phan/*
diff --git a/vendor/chillerlan/php-qrcode/README.md b/vendor/chillerlan/php-qrcode/README.md
index f266e9bd5..3ad7bad88 100644
--- a/vendor/chillerlan/php-qrcode/README.md
+++ b/vendor/chillerlan/php-qrcode/README.md
@@ -7,26 +7,23 @@ namespaced, cleaned up, improved and other stuff.
[![PHP Version Support][php-badge]][php]
[![Packagist version][packagist-badge]][packagist]
-[![License][license-badge]][license]
-[![CodeCov][coverage-badge]][coverage]
-[![Scrunitizer CI][scrutinizer-badge]][scrutinizer]
-[![Packagist downloads][downloads-badge]][downloads]<br/>
[![Continuous Integration][gh-action-badge]][gh-action]
+[![CodeCov][coverage-badge]][coverage]
+[![Codacy][codacy-badge]][codacy]
+[![Packagist downloads][downloads-badge]][downloads]
[php-badge]: https://img.shields.io/packagist/php-v/chillerlan/php-qrcode?logo=php&color=8892BF
[php]: https://www.php.net/supported-versions.php
[packagist-badge]: https://img.shields.io/packagist/v/chillerlan/php-qrcode.svg?logo=packagist
[packagist]: https://packagist.org/packages/chillerlan/php-qrcode
-[license-badge]: https://img.shields.io/github/license/chillerlan/php-qrcode.svg
-[license]: https://github.com/chillerlan/php-qrcode/blob/main/LICENSE
-[coverage-badge]: https://img.shields.io/codecov/c/github/chillerlan/php-qrcode.svg?logo=codecov
-[coverage]: https://codecov.io/github/chillerlan/php-qrcode
-[scrutinizer-badge]: https://img.shields.io/scrutinizer/g/chillerlan/php-qrcode.svg?logo=scrutinizer
-[scrutinizer]: https://scrutinizer-ci.com/g/chillerlan/php-qrcode
-[downloads-badge]: https://img.shields.io/packagist/dt/chillerlan/php-qrcode.svg?logo=packagist
+[coverage-badge]: https://img.shields.io/codecov/c/github/chillerlan/php-qrcode/v4.3.x?logo=codecov
+[coverage]: https://app.codecov.io/gh/chillerlan/php-qrcode/tree/v4.3.x
+[codacy-badge]: https://img.shields.io/codacy/grade/edccfc4fe5a34b74b1c53ee03f097b8d/v4.3.x?logo=codacy
+[codacy]: https://app.codacy.com/gh/chillerlan/php-qrcode/dashboard?branch=v4.3.x
+[downloads-badge]: https://img.shields.io/packagist/dt/chillerlan/php-qrcode?logo=packagist
[downloads]: https://packagist.org/packages/chillerlan/php-qrcode/stats
-[gh-action-badge]: https://github.com/chillerlan/php-qrcode/workflows/Continuous%20Integration/badge.svg
-[gh-action]: https://github.com/chillerlan/php-qrcode/actions?query=workflow%3A%22Continuous+Integration%22+branch%3Av4.3.x
+[gh-action-badge]: https://img.shields.io/github/actions/workflow/status/chillerlan/php-qrcode/tests.yml?branch=v4.3.x&logo=github
+[gh-action]: https://github.com/chillerlan/php-qrcode/actions/workflows/tests.yml?query=branch%3Av4.3.x
# Documentation
@@ -48,7 +45,7 @@ via terminal: `composer require chillerlan/php-qrcode`
{
"require": {
"php": "^7.4 || ^8.0",
- "chillerlan/php-qrcode": "v4.3.x-dev"
+ "chillerlan/php-qrcode": "v4.3.x-dev#<commit_hash>"
}
}
```
@@ -62,7 +59,7 @@ For PHP version ...
In case you want to keep using `v4.3.x-dev`, specify the hash of a commit to avoid running into unforseen issues like so: `v4.3.x-dev#c115f7bc51d466ccb24c544e88329804aad8c2a0`
-PSA: [PHP 7.0 - 7.3 are EOL](https://www.php.net/supported-versions.php) and therefore the respective `QRCode` versions are also no longer supported!
+PSA: [PHP 7.0 - 7.4 are EOL](https://www.php.net/supported-versions.php) and therefore the respective `QRCode` versions are also no longer supported!
## Quickstart
We want to encode this URI for a mobile authenticator into a QRcode image:
@@ -252,40 +249,41 @@ $options = new QROptions;
// for HTML, SVG and ImageMagick
$options->moduleValues = [
// finder
- 1536 => '#A71111', // dark (true)
- 6 => '#FFBFBF', // light (false)
+ QRMatrix::M_FINDER_DARK => '#A71111', // dark (true)
+ QRMatrix::M_FINDER_DOT_DARK => '#A71111', // dark (true)
+ QRMatrix::M_FINDER => '#FFBFBF', // light (false)
// alignment
- 2560 => '#A70364',
- 10 => '#FFC9C9',
+ QRMatrix::M_ALIGNMENT_DARK => '#A70364',
+ QRMatrix::M_ALIGNMENT => '#FFC9C9',
// timing
- 3072 => '#98005D',
- 12 => '#FFB8E9',
+ QRMatrix::M_TIMING_DARK => '#98005D',
+ QRMatrix::M_TIMING => '#FFB8E9',
// format
- 3584 => '#003804',
- 14 => '#00FB12',
+ QRMatrix::M_FORMAT_DARK => '#003804',
+ QRMatrix::M_FORMAT => '#00FB12',
// version
- 4096 => '#650098',
- 16 => '#E0B8FF',
+ QRMatrix::M_VERSION_DARK => '#650098',
+ QRMatrix::M_VERSION => '#E0B8FF',
// data
- 1024 => '#4A6000',
- 4 => '#ECF9BE',
+ QRMatrix::M_DATA_DARK => '#4A6000',
+ QRMatrix::M_DATA => '#ECF9BE',
// darkmodule
- 512 => '#080063',
+ QRMatrix::M_DARKMODULE_DARK => '#080063',
// separator
- 8 => '#AFBFBF',
+ QRMatrix::M_SEPARATOR => '#AFBFBF',
// quietzone
- 18 => '#FFFFFF',
+ QRMatrix::M_QUIETZONE => '#FFFFFF',
];
// for the image output types
$options->moduleValues = [
- 512 => [0, 0, 0],
+ QRMatrix::M_DATA_DARK => [0, 0, 0],
// ...
];
// for string/text output
$options->moduleValues = [
- 512 => '#',
+ QRMatrix::M_DATA_DARK => '#',
// ...
];
```
@@ -294,106 +292,115 @@ $options->moduleValues = [
## Public API
### `QRCode` API
-#### Methods
-method | return | description
------- | ------ | -----------
-`__construct(QROptions $options = null)` | - | see [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php)
-`render(string $data, string $file = null)` | mixed, `QROutputInterface::dump()` | renders a QR Code for the given `$data` and `QROptions`, saves `$file` optional
-`getMatrix(string $data)` | `QRMatrix` | returns a `QRMatrix` object for the given `$data` and current `QROptions`
-`initDataInterface(string $data)` | `QRDataInterface` | returns a fresh `QRDataInterface` for the given `$data`
-`isNumber(string $string)` | bool | checks if a string qualifies for `Number`
-`isAlphaNum(string $string)` | bool | checks if a string qualifies for `AlphaNum`
-`isKanji(string $string)` | bool | checks if a string qualifies for `Kanji`
-`isByte(string $string)` | bool | checks if a string is non-empty
-
-#### Constants
-name | description
----- | -----------
-`VERSION_AUTO` | `QROptions::$version`
-`MASK_PATTERN_AUTO` | `QROptions::$maskPattern`
-`OUTPUT_MARKUP_SVG`, `OUTPUT_MARKUP_HTML` | `QROptions::$outputType` markup
-`OUTPUT_IMAGE_PNG`, `OUTPUT_IMAGE_JPG`, `OUTPUT_IMAGE_GIF` | `QROptions::$outputType` image
-`OUTPUT_STRING_JSON`, `OUTPUT_STRING_TEXT` | `QROptions::$outputType` string
-`OUTPUT_IMAGICK` | `QROptions::$outputType` ImageMagick
-`OUTPUT_FPDF` | `QROptions::$outputType` PDF, using [FPDF](https://github.com/setasign/fpdf)
-`OUTPUT_CUSTOM` | `QROptions::$outputType`, requires `QROptions::$outputInterface`
-`ECC_L`, `ECC_M`, `ECC_Q`, `ECC_H`, | ECC-Level: 7%, 15%, 25%, 30% in `QROptions::$eccLevel`
-`DATA_NUMBER`, `DATA_ALPHANUM`, `DATA_BYTE`, `DATA_KANJI` | `QRDataInterface::$datamode`
+#### Methods
+| method | return | description |
+|---------------------------------------------|------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
+| `__construct(QROptions $options = null)` | - | see [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php) |
+| `render(string $data, string $file = null)` | mixed, `QROutputInterface::dump()` | renders a QR Code for the given `$data` and `QROptions`, saves `$file` optional |
+| `getMatrix(string $data)` | `QRMatrix` | returns a `QRMatrix` object for the given `$data` and current `QROptions` |
+| `initDataInterface(string $data)` | `QRDataInterface` | returns a fresh `QRDataInterface` for the given `$data` |
+| `isNumber(string $string)` | bool | checks if a string qualifies for `Number` |
+| `isAlphaNum(string $string)` | bool | checks if a string qualifies for `AlphaNum` |
+| `isKanji(string $string)` | bool | checks if a string qualifies for `Kanji` |
+| `isByte(string $string)` | bool | checks if a string is non-empty |
+#### Constants
+| name | description |
+|------------------------------------------------------------|------------------------------------------------------------------------------|
+| `VERSION_AUTO` | `QROptions::$version` |
+| `MASK_PATTERN_AUTO` | `QROptions::$maskPattern` |
+| `OUTPUT_MARKUP_SVG`, `OUTPUT_MARKUP_HTML` | `QROptions::$outputType` markup |
+| `OUTPUT_IMAGE_PNG`, `OUTPUT_IMAGE_JPG`, `OUTPUT_IMAGE_GIF` | `QROptions::$outputType` image |
+| `OUTPUT_STRING_JSON`, `OUTPUT_STRING_TEXT` | `QROptions::$outputType` string |
+| `OUTPUT_IMAGICK` | `QROptions::$outputType` ImageMagick |
+| `OUTPUT_FPDF` | `QROptions::$outputType` PDF, using [FPDF](https://github.com/setasign/fpdf) |
+| `OUTPUT_CUSTOM` | `QROptions::$outputType`, requires `QROptions::$outputInterface` |
+| `ECC_L`, `ECC_M`, `ECC_Q`, `ECC_H`, | ECC-Level: 7%, 15%, 25%, 30% in `QROptions::$eccLevel` |
+| `DATA_NUMBER`, `DATA_ALPHANUM`, `DATA_BYTE`, `DATA_KANJI` | `QRDataInterface::$datamode` |
### `QRMatrix` API
#### Methods
-method | return | description
------- | ------ | -----------
-`__construct(int $version, int $eclevel)` | - | -
-`init(int $maskPattern, bool $test = null)` | `QRMatrix` |
-`matrix()` | array | the internal matrix representation as a 2 dimensional array
-`version()` | int | the current QR Code version
-`eccLevel()` | int | current ECC level
-`maskPattern()` | int | the used mask pattern
-`size()` | int | the absoulute size of the matrix, including quiet zone (if set). `$version * 4 + 17 + 2 * $quietzone`
-`get(int $x, int $y)` | int | returns the value of the module
-`set(int $x, int $y, bool $value, int $M_TYPE)` | `QRMatrix` | sets the `$M_TYPE` value for the module
-`check(int $x, int $y)` | bool | checks whether a module is true (dark) or false (light)
+| method | return | description |
+|-------------------------------------------------|------------|-------------------------------------------------------------------------------------------------------|
+| `__construct(int $version, int $eclevel)` | - | - |
+| `init(int $maskPattern, bool $test = null)` | `QRMatrix` | |
+| `matrix()` | array | the internal matrix representation as a 2 dimensional array |
+| `version()` | int | the current QR Code version |
+| `eccLevel()` | int | current ECC level |
+| `maskPattern()` | int | the used mask pattern |
+| `size()` | int | the absoulute size of the matrix, including quiet zone (if set). `$version * 4 + 17 + 2 * $quietzone` |
+| `get(int $x, int $y)` | int | returns the value of the module |
+| `set(int $x, int $y, bool $value, int $M_TYPE)` | `QRMatrix` | sets the `$M_TYPE` value for the module |
+| `check(int $x, int $y)` | bool | checks whether a module is true (dark) or false (light) |
#### Constants
-name | light (false) | dark (true) | description
----- | ------------- | ----------- | -----------
-`M_NULL` | 0 | - | module not set (should never appear. if so, there's an error)
-`M_DARKMODULE` | - | 512 | once per matrix at `$xy = [8, 4 * $version + 9]`
-`M_DATA` | 4 | 1024 | the actual encoded data
-`M_FINDER` | 6 | 1536 | the 7x7 finder patterns
-`M_SEPARATOR` | 8 | - | separator lines around the finder patterns
-`M_ALIGNMENT` | 10 | 2560 | the 5x5 alignment patterns
-`M_TIMING` | 12 | 3072 | the timing pattern lines
-`M_FORMAT` | 14 | 3584 | format information pattern
-`M_VERSION` | 16 | 4096 | version information pattern
-`M_QUIETZONE` | 18 | - | margin around the QR Code
-`M_LOGO` | 20 | - | space for a logo image (not used yet)
-`M_TEST` | 255 | 65280 | test value
+| name | description |
+|----------------------|---------------------------------------------------------------|
+| `M_NULL` | module not set (should never appear. if so, there's an error) |
+| `M_DARKMODULE` | once per matrix at `$xy = [8, 4 * $version + 9]` |
+| `M_DARKMODULE_LIGHT` | (reserved for reflectance reversal) |
+| `M_DATA` | the actual encoded data |
+| `M_DATA_DARK` | |
+| `M_FINDER` | the 7x7 finder patterns |
+| `M_FINDER_DARK` | |
+| `M_FINDER_DOT` | the 3x3 dot inside the finder patterns |
+| `M_FINDER_DOT_LIGHT` | (reserved for reflectance reversal) |
+| `M_SEPARATOR` | separator lines around the finder patterns |
+| `M_SEPARATOR_DARK` | (reserved for reflectance reversal) |
+| `M_ALIGNMENT` | the 5x5 alignment patterns |
+| `M_ALIGNMENT_DARK` | |
+| `M_TIMING` | the timing pattern lines |
+| `M_TIMING_DARK` | |
+| `M_FORMAT` | format information pattern |
+| `M_FORMAT_DARK` | |
+| `M_VERSION` | version information pattern |
+| `M_VERSION_DARK` | |
+| `M_QUIETZONE` | margin around the QR Code |
+| `M_QUIETZONE_DARK` | (reserved for reflectance reversal) |
+| `M_LOGO` | space for a logo image |
+| `M_LOGO_DARK` | (reserved for reflectance reversal) |
### `QROptions` API
#### Properties
-property | type | default | allowed | description
--------- | ---- | ------- | ------- | -----------
-`$version` | int | `QRCode::VERSION_AUTO` | 1...40 | the [QR Code version number](http://www.qrcode.com/en/about/version.html)
-`$versionMin` | int | 1 | 1...40 | Minimum QR version (if `$version = QRCode::VERSION_AUTO`)
-`$versionMax` | int | 40 | 1...40 | Maximum QR version (if `$version = QRCode::VERSION_AUTO`)
-`$eccLevel` | int | `QRCode::ECC_L` | `QRCode::ECC_X` | Error correct level, where X = L (7%), M (15%), Q (25%), H (30%)
-`$maskPattern` | int | `QRCode::MASK_PATTERN_AUTO` | 0...7 | Mask Pattern to use
-`$addQuietzone` | bool | `true` | - | Add a "quiet zone" (margin) according to the QR code spec
-`$quietzoneSize` | int | 4 | clamped to 0 ... `$matrixSize / 2` | Size of the quiet zone
-`$dataModeOverride` | string | `null` | `Number`, `AlphaNum`, `Kanji`, `Byte` | allows overriding the data type detection
-`$outputType` | string | `QRCode::OUTPUT_IMAGE_PNG` | `QRCode::OUTPUT_*` | built-in output type
-`$outputInterface` | string | `null` | * | FQCN of the custom `QROutputInterface` if `QROptions::$outputType` is set to `QRCode::OUTPUT_CUSTOM`
-`$cachefile` | string | `null` | * | optional cache file path
-`$eol` | string | `PHP_EOL` | * | newline string (HTML, SVG, TEXT)
-`$scale` | int | 5 | * | size of a QR code pixel (SVG, IMAGE_*), HTML -> via CSS
-`$cssClass` | string | `null` | * | a common css class
-`$svgOpacity` | float | 1.0 | 0...1 |
-`$svgDefs` | string | * | * | anything between [`<defs>`](https://developer.mozilla.org/docs/Web/SVG/Element/defs)
-`$svgViewBoxSize` | int | `null` | * | a positive integer which defines width/height of the [viewBox attribute](https://css-tricks.com/scale-svg/#article-header-id-3)
-`$textDark` | string | '🔴' | * | string substitute for dark
-`$textLight` | string | '⭕' | * | string substitute for light
-`$markupDark` | string | '#000' | * | markup substitute for dark (CSS value)
-`$markupLight` | string | '#fff' | * | markup substitute for light (CSS value)
-`$imageBase64` | bool | `true` | - | whether to return the image data as base64 or raw like from `file_get_contents()`
-`$imageTransparent` | bool | `true` | - | toggle transparency (no jpeg support)
-`$imageTransparencyBG` | array | `[255, 255, 255]` | `[R, G, B]` | the RGB values for the transparent color, see [`imagecolortransparent()`](http://php.net/manual/function.imagecolortransparent.php)
-`$pngCompression` | int | -1 | -1 ... 9 | `imagepng()` compression level, -1 = auto
-`$jpegQuality` | int | 85 | 0 - 100 | `imagejpeg()` quality
-`$imagickFormat` | string | 'png' | * | ImageMagick output type, see `Imagick::setType()`
-`$imagickBG` | string | `null` | * | ImageMagick background color, see `ImagickPixel::__construct()`
-`$moduleValues` | array | `null` | * | Module values map, see [[Custom output interface]] and `QROutputInterface::DEFAULT_MODULE_VALUES`
-
+| property | type | default | allowed | description |
+|------------------------|--------|-----------------------------|---------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|
+| `$version` | int | `QRCode::VERSION_AUTO` | 1...40 | the [QR Code version number](http://www.qrcode.com/en/about/version.html) |
+| `$versionMin` | int | 1 | 1...40 | Minimum QR version (if `$version = QRCode::VERSION_AUTO`) |
+| `$versionMax` | int | 40 | 1...40 | Maximum QR version (if `$version = QRCode::VERSION_AUTO`) |
+| `$eccLevel` | int | `QRCode::ECC_L` | `QRCode::ECC_X` | Error correct level, where X = L (7%), M (15%), Q (25%), H (30%) |
+| `$maskPattern` | int | `QRCode::MASK_PATTERN_AUTO` | 0...7 | Mask Pattern to use |
+| `$addQuietzone` | bool | `true` | - | Add a "quiet zone" (margin) according to the QR code spec |
+| `$quietzoneSize` | int | 4 | clamped to 0 ... `$matrixSize / 2` | Size of the quiet zone |
+| `$dataModeOverride` | string | `null` | `Number`, `AlphaNum`, `Kanji`, `Byte` | allows overriding the data type detection |
+| `$outputType` | string | `QRCode::OUTPUT_IMAGE_PNG` | `QRCode::OUTPUT_*` | built-in output type |
+| `$outputInterface` | string | `null` | * | FQCN of the custom `QROutputInterface` if `QROptions::$outputType` is set to `QRCode::OUTPUT_CUSTOM` |
+| `$cachefile` | string | `null` | * | optional cache file path |
+| `$eol` | string | `PHP_EOL` | * | newline string (HTML, SVG, TEXT) |
+| `$scale` | int | 5 | * | size of a QR code pixel (SVG, IMAGE_*), HTML -> via CSS |
+| `$cssClass` | string | `null` | * | a common css class |
+| `$svgOpacity` | float | 1.0 | 0...1 | |
+| `$svgDefs` | string | * | * | anything between [`<defs>`](https://developer.mozilla.org/docs/Web/SVG/Element/defs) |
+| `$svgViewBoxSize` | int | `null` | * | a positive integer which defines width/height of the [viewBox attribute](https://css-tricks.com/scale-svg/#article-header-id-3) |
+| `$textDark` | string | '██' | * | string substitute for dark |
+| `$textLight` | string | '░░' | * | string substitute for light |
+| `$markupDark` | string | '#000' | * | markup substitute for dark (CSS value) |
+| `$markupLight` | string | '#fff' | * | markup substitute for light (CSS value) |
+| `$imageBase64` | bool | `true` | - | whether to return the image data as base64 or raw like from `file_get_contents()` |
+| `$imageTransparent` | bool | `true` | - | toggle transparency (no jpeg support) |
+| `$imageTransparencyBG` | array | `[255, 255, 255]` | `[R, G, B]` | the RGB values for the transparent color, see [`imagecolortransparent()`](http://php.net/manual/function.imagecolortransparent.php) |
+| `$pngCompression` | int | -1 | -1 ... 9 | `imagepng()` compression level, -1 = auto |
+| `$jpegQuality` | int | 85 | 0 - 100 | `imagejpeg()` quality |
+| `$imagickFormat` | string | 'png' | * | ImageMagick output type, see `Imagick::setType()` |
+| `$imagickBG` | string | `null` | * | ImageMagick background color, see `ImagickPixel::__construct()` |
+| `$moduleValues` | array | `null` | * | Module values map, see [[Custom output interface]] and `QROutputInterface::DEFAULT_MODULE_VALUES` |
## Framework Integration
- Drupal:
- [Google Authenticator Login `ga_login`](https://www.drupal.org/project/ga_login)
- Symfony
- - [phpqrcode-bundle](https://github.com/jonasarts/phpqrcode-bundle)
+ - [phpqrcode-bundle](https://github.com/jonasarts/phpqrcode-bundle)
- WordPress:
- [`wp-two-factor-auth`](https://github.com/sjinks/wp-two-factor-auth)
- [`simple-2fa`](https://wordpress.org/plugins/simple-2fa/)
diff --git a/vendor/chillerlan/php-qrcode/composer.json b/vendor/chillerlan/php-qrcode/composer.json
index afe5bf68e..5453fc40f 100644
--- a/vendor/chillerlan/php-qrcode/composer.json
+++ b/vendor/chillerlan/php-qrcode/composer.json
@@ -1,6 +1,6 @@
{
"name": "chillerlan/php-qrcode",
- "description": "A QR code generator. PHP 7.4+",
+ "description": "A QR code generator with a user friendly API. PHP 7.4+",
"homepage": "https://github.com/chillerlan/php-qrcode",
"license": "MIT",
"minimum-stability": "stable",
@@ -26,16 +26,19 @@
"require": {
"php": "^7.4 || ^8.0",
"ext-mbstring": "*",
- "chillerlan/php-settings-container": "^2.1.4"
+ "chillerlan/php-settings-container": "^2.1.6 || ^3.2.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.5",
- "phan/phan": "^5.3",
- "setasign/fpdf": "^1.8.2"
+ "phan/phan": "^5.4.5",
+ "phpmd/phpmd": "^2.15",
+ "phpunit/phpunit": "^9.6",
+ "setasign/fpdf": "^1.8.2",
+ "squizlabs/php_codesniffer": "^3.11"
},
"suggest": {
"chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.",
- "setasign/fpdf": "Required to use the QR FPDF output."
+ "setasign/fpdf": "Required to use the QR FPDF output.",
+ "simple-icons/simple-icons": "SVG icons that you can use to embed as logos in the QR Code"
},
"autoload": {
"psr-4": {
@@ -44,9 +47,7 @@
},
"autoload-dev": {
"psr-4": {
- "chillerlan\\QRCodePublic\\": "public/",
- "chillerlan\\QRCodeTest\\": "tests/",
- "chillerlan\\QRCodeExamples\\": "examples/"
+ "chillerlan\\QRCodeTest\\": "tests/"
}
},
"scripts": {
diff --git a/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php b/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php
deleted file mode 100644
index 3664989b8..000000000
--- a/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/**
- * Class MyCustomOutput
- *
- * @filesource MyCustomOutput.php
- * @created 24.12.2017
- * @package chillerlan\QRCodeExamples
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\Output\QROutputAbstract;
-
-class MyCustomOutput extends QROutputAbstract{
-
- protected function setModuleValues():void{
- // TODO: Implement setModuleValues() method.
- }
-
- public function dump(string $file = null){
-
- $output = '';
-
- for($row = 0; $row < $this->moduleCount; $row++){
- for($col = 0; $col < $this->moduleCount; $col++){
- $output .= (int)$this->matrix->check($col, $row);
- }
-
- $output .= \PHP_EOL;
- }
-
- return $output;
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php b/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php
deleted file mode 100644
index 76aa5ced7..000000000
--- a/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/**
- * Class QRImageWithLogo
- *
- * @filesource QRImageWithLogo.php
- * @created 18.11.2020
- * @package chillerlan\QRCodeExamples
- * @author smiley <smiley@chillerlan.net>
- * @copyright 2020 smiley
- * @license MIT
- *
- * @noinspection PhpComposerExtensionStubsInspection
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\Output\{QRCodeOutputException, QRImage};
-
-use function imagecopyresampled, imagecreatefrompng, imagesx, imagesy, is_file, is_readable;
-
-/**
- * @property \chillerlan\QRCodeExamples\LogoOptions $options
- */
-class QRImageWithLogo extends QRImage{
-
- /**
- * @param string|null $file
- * @param string|null $logo
- *
- * @return string
- * @throws \chillerlan\QRCode\Output\QRCodeOutputException
- */
- public function dump(string $file = null, string $logo = null):string{
- // set returnResource to true to skip further processing for now
- $this->options->returnResource = true;
-
- // of course you could accept other formats too (such as resource or Imagick)
- // i'm not checking for the file type either for simplicity reasons (assuming PNG)
- if(!is_file($logo) || !is_readable($logo)){
- throw new QRCodeOutputException('invalid logo');
- }
-
- $this->matrix->setLogoSpace(
- $this->options->logoSpaceWidth,
- $this->options->logoSpaceHeight
- // not utilizing the position here
- );
-
- // there's no need to save the result of dump() into $this->image here
- parent::dump($file);
-
- $im = imagecreatefrompng($logo);
-
- // get logo image size
- $w = imagesx($im);
- $h = imagesy($im);
-
- // set new logo size, leave a border of 1 module (no proportional resize/centering)
- $lw = ($this->options->logoSpaceWidth - 2) * $this->options->scale;
- $lh = ($this->options->logoSpaceHeight - 2) * $this->options->scale;
-
- // get the qrcode size
- $ql = $this->matrix->size() * $this->options->scale;
-
- // scale the logo and copy it over. done!
- imagecopyresampled($this->image, $im, ($ql - $lw) / 2, ($ql - $lh) / 2, 0, 0, $lw, $lh, $w, $h);
-
- $imageData = $this->dumpImage();
-
- if($file !== null){
- $this->saveToFile($imageData, $file);
- }
-
- if($this->options->imageBase64){
- $imageData = 'data:image/'.$this->options->outputType.';base64,'.base64_encode($imageData);
- }
-
- return $imageData;
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php b/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php
deleted file mode 100644
index fe6b962a9..000000000
--- a/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/**
- * Class QRImageWithText
- *
- * example for additional text
- *
- * @link https://github.com/chillerlan/php-qrcode/issues/35
- *
- * @filesource QRImageWithText.php
- * @created 22.06.2019
- * @package chillerlan\QRCodeExamples
- * @author smiley <smiley@chillerlan.net>
- * @copyright 2019 smiley
- * @license MIT
- *
- * @noinspection PhpComposerExtensionStubsInspection
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\Output\QRImage;
-
-use function base64_encode, imagechar, imagecolorallocate, imagecolortransparent, imagecopymerge, imagecreatetruecolor,
- imagedestroy, imagefilledrectangle, imagefontwidth, in_array, round, str_split, strlen;
-
-class QRImageWithText extends QRImage{
-
- /**
- * @param string|null $file
- * @param string|null $text
- *
- * @return string
- */
- public function dump(string $file = null, string $text = null):string{
- // set returnResource to true to skip further processing for now
- $this->options->returnResource = true;
-
- // there's no need to save the result of dump() into $this->image here
- parent::dump($file);
-
- // render text output if a string is given
- if($text !== null){
- $this->addText($text);
- }
-
- $imageData = $this->dumpImage();
-
- if($file !== null){
- $this->saveToFile($imageData, $file);
- }
-
- if($this->options->imageBase64){
- $imageData = 'data:image/'.$this->options->outputType.';base64,'.base64_encode($imageData);
- }
-
- return $imageData;
- }
-
- /**
- * @param string $text
- */
- protected function addText(string $text):void{
- // save the qrcode image
- $qrcode = $this->image;
-
- // options things
- $textSize = 3; // see imagefontheight() and imagefontwidth()
- $textBG = [200, 200, 200];
- $textColor = [50, 50, 50];
-
- $bgWidth = $this->length;
- $bgHeight = $bgWidth + 20; // 20px extra space
-
- // create a new image with additional space
- $this->image = imagecreatetruecolor($bgWidth, $bgHeight);
- $background = imagecolorallocate($this->image, ...$textBG);
-
- // allow transparency
- if($this->options->imageTransparent && in_array($this->options->outputType, $this::TRANSPARENCY_TYPES, true)){
- imagecolortransparent($this->image, $background);
- }
-
- // fill the background
- imagefilledrectangle($this->image, 0, 0, $bgWidth, $bgHeight, $background);
-
- // copy over the qrcode
- imagecopymerge($this->image, $qrcode, 0, 0, 0, 0, $this->length, $this->length, 100);
- imagedestroy($qrcode);
-
- $fontColor = imagecolorallocate($this->image, ...$textColor);
- $w = imagefontwidth($textSize);
- $x = round(($bgWidth - strlen($text) * $w) / 2);
-
- // loop through the string and draw the letters
- foreach(str_split($text) as $i => $chr){
- imagechar($this->image, $textSize, (int)($i * $w + $x), $this->length, $chr, $fontColor);
- }
- }
-
-}
diff --git a/vendor/chillerlan/php-qrcode/examples/custom_output.php b/vendor/chillerlan/php-qrcode/examples/custom_output.php
deleted file mode 100644
index 71ea62682..000000000
--- a/vendor/chillerlan/php-qrcode/examples/custom_output.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/**
- *
- * @filesource custom_output.php
- * @created 24.12.2017
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-
-require_once __DIR__.'/../vendor/autoload.php';
-
-$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
-
-// invoke the QROutputInterface manually
-$options = new QROptions([
- 'version' => 5,
- 'eccLevel' => QRCode::ECC_L,
-]);
-
-$qrOutputInterface = new MyCustomOutput($options, (new QRCode($options))->getMatrix($data));
-
-var_dump($qrOutputInterface->dump());
-
-
-// or just
-$options = new QROptions([
- 'version' => 5,
- 'eccLevel' => QRCode::ECC_L,
- 'outputType' => QRCode::OUTPUT_CUSTOM,
- 'outputInterface' => MyCustomOutput::class,
-]);
-
-var_dump((new QRCode($options))->render($data));
diff --git a/vendor/chillerlan/php-qrcode/examples/example_image.png b/vendor/chillerlan/php-qrcode/examples/example_image.png
deleted file mode 100644
index b4a80f2ab..000000000
--- a/vendor/chillerlan/php-qrcode/examples/example_image.png
+++ /dev/null
Binary files differ
diff --git a/vendor/chillerlan/php-qrcode/examples/example_svg.png b/vendor/chillerlan/php-qrcode/examples/example_svg.png
deleted file mode 100644
index f1e7b32f7..000000000
--- a/vendor/chillerlan/php-qrcode/examples/example_svg.png
+++ /dev/null
Binary files differ
diff --git a/vendor/chillerlan/php-qrcode/examples/fpdf.php b/vendor/chillerlan/php-qrcode/examples/fpdf.php
deleted file mode 100644
index 9c690a7f7..000000000
--- a/vendor/chillerlan/php-qrcode/examples/fpdf.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-
-require_once __DIR__ . '/../vendor/autoload.php';
-
-$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
-
-$options = new QROptions([
- 'version' => 7,
- 'outputType' => QRCode::OUTPUT_FPDF,
- 'eccLevel' => QRCode::ECC_L,
- 'scale' => 5,
- 'imageBase64' => false,
- 'moduleValues' => [
- // finder
- 1536 => [0, 63, 255], // dark (true)
- 6 => [255, 255, 255], // light (false), white is the transparency color and is enabled by default
- // alignment
- 2560 => [255, 0, 255],
- 10 => [255, 255, 255],
- // timing
- 3072 => [255, 0, 0],
- 12 => [255, 255, 255],
- // format
- 3584 => [67, 191, 84],
- 14 => [255, 255, 255],
- // version
- 4096 => [62, 174, 190],
- 16 => [255, 255, 255],
- // data
- 1024 => [0, 0, 0],
- 4 => [255, 255, 255],
- // darkmodule
- 512 => [0, 0, 0],
- // separator
- 8 => [255, 255, 255],
- // quietzone
- 18 => [255, 255, 255],
- ],
-]);
-
-\header('Content-type: application/pdf');
-
-echo (new QRCode($options))->render($data);
diff --git a/vendor/chillerlan/php-qrcode/examples/html.php b/vendor/chillerlan/php-qrcode/examples/html.php
deleted file mode 100644
index aa5305d24..000000000
--- a/vendor/chillerlan/php-qrcode/examples/html.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-/**
- *
- * @filesource html.php
- * @created 21.12.2017
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-
-require_once '../vendor/autoload.php';
-
-header('Content-Type: text/html; charset=utf-8');
-
-?>
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8"/>
- <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
- <title>QRCode test</title>
- <style>
- body{
- margin: 5em;
- padding: 0;
- }
-
- div.qrcode{
- margin: 0;
- padding: 0;
- }
-
- /* rows */
- div.qrcode > div {
- margin: 0;
- padding: 0;
- height: 10px;
- }
-
- /* modules */
- div.qrcode > div > span {
- display: inline-block;
- width: 10px;
- height: 10px;
- }
-
- div.qrcode > div > span {
- background-color: #ccc;
- }
- </style>
-</head>
-<body>
- <div class="qrcode">
-<?php
-
- $data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
-
- $options = new QROptions([
- 'version' => 5,
- 'outputType' => QRCode::OUTPUT_MARKUP_HTML,
- 'eccLevel' => QRCode::ECC_L,
- 'moduleValues' => [
- // finder
- 1536 => '#A71111', // dark (true)
- 6 => '#FFBFBF', // light (false)
- // alignment
- 2560 => '#A70364',
- 10 => '#FFC9C9',
- // timing
- 3072 => '#98005D',
- 12 => '#FFB8E9',
- // format
- 3584 => '#003804',
- 14 => '#00FB12',
- // version
- 4096 => '#650098',
- 16 => '#E0B8FF',
- // data
- 1024 => '#4A6000',
- 4 => '#ECF9BE',
- // darkmodule
- 512 => '#080063',
- // separator
- 8 => '#AFBFBF',
- // quietzone
- 18 => '#FFFFFF',
- ],
- ]);
-
- echo (new QRCode($options))->render($data);
-
-?>
- </div>
-</body>
-</html>
-
-
-
diff --git a/vendor/chillerlan/php-qrcode/examples/image.php b/vendor/chillerlan/php-qrcode/examples/image.php
deleted file mode 100644
index 54426c68a..000000000
--- a/vendor/chillerlan/php-qrcode/examples/image.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-/**
- *
- * @filesource image.php
- * @created 24.12.2017
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-
-require_once __DIR__.'/../vendor/autoload.php';
-
-$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
-
-$options = new QROptions([
- 'version' => 10,
- 'outputType' => QRCode::OUTPUT_IMAGE_PNG,
- 'eccLevel' => QRCode::ECC_H,
- 'scale' => 5,
- 'imageBase64' => false,
- 'moduleValues' => [
- // finder
- 1536 => [0, 63, 255], // dark (true)
- 6 => [255, 255, 255], // light (false), white is the transparency color and is enabled by default
- 5632 => [241, 28, 163], // finder dot, dark (true)
- // alignment
- 2560 => [255, 0, 255],
- 10 => [255, 255, 255],
- // timing
- 3072 => [255, 0, 0],
- 12 => [255, 255, 255],
- // format
- 3584 => [67, 99, 84],
- 14 => [255, 255, 255],
- // version
- 4096 => [62, 174, 190],
- 16 => [255, 255, 255],
- // data
- 1024 => [0, 0, 0],
- 4 => [255, 255, 255],
- // darkmodule
- 512 => [0, 0, 0],
- // separator
- 8 => [255, 255, 255],
- // quietzone
- 18 => [255, 255, 255],
- // logo (requires a call to QRMatrix::setLogoSpace())
- 20 => [255, 255, 255],
- ],
-]);
-
-header('Content-type: image/png');
-
-echo (new QRCode($options))->render($data);
-
-
-
-
-
diff --git a/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php b/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php
deleted file mode 100644
index f93aa8dd1..000000000
--- a/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- *
- * @filesource imageWithLogo.php
- * @created 18.11.2020
- * @author smiley <smiley@chillerlan.net>
- * @copyright 2020 smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-
-require_once __DIR__.'/../vendor/autoload.php';
-
-$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
-/**
- * @property int $logoSpaceWidth
- * @property int $logoSpaceHeight
- *
- * @noinspection PhpIllegalPsrClassPathInspection
- */
-class LogoOptions extends QROptions{
- // size in QR modules, multiply with QROptions::$scale for pixel size
- protected int $logoSpaceWidth;
- protected int $logoSpaceHeight;
-}
-
-$options = new LogoOptions;
-
-$options->version = 7;
-$options->eccLevel = QRCode::ECC_H;
-$options->imageBase64 = false;
-$options->logoSpaceWidth = 13;
-$options->logoSpaceHeight = 13;
-$options->scale = 5;
-$options->imageTransparent = false;
-
-header('Content-type: image/png');
-
-$qrOutputInterface = new QRImageWithLogo($options, (new QRCode($options))->getMatrix($data));
-
-// dump the output, with an additional logo
-echo $qrOutputInterface->dump(null, __DIR__.'/octocat.png');
diff --git a/vendor/chillerlan/php-qrcode/examples/imageWithText.php b/vendor/chillerlan/php-qrcode/examples/imageWithText.php
deleted file mode 100644
index 050781cba..000000000
--- a/vendor/chillerlan/php-qrcode/examples/imageWithText.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * example for additional text
- * @link https://github.com/chillerlan/php-qrcode/issues/35
- *
- * @filesource imageWithText.php
- * @created 22.06.2019
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2019 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-
-require_once __DIR__.'/../vendor/autoload.php';
-
-$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
-
-$options = new QROptions([
- 'version' => 7,
- 'outputType' => QRCode::OUTPUT_IMAGE_PNG,
- 'scale' => 3,
- 'imageBase64' => false,
-]);
-
-header('Content-type: image/png');
-
-$qrOutputInterface = new QRImageWithText($options, (new QRCode($options))->getMatrix($data));
-
-// dump the output, with additional text
-echo $qrOutputInterface->dump(null, 'example text');
diff --git a/vendor/chillerlan/php-qrcode/examples/imagick.php b/vendor/chillerlan/php-qrcode/examples/imagick.php
deleted file mode 100644
index 6bec4d02e..000000000
--- a/vendor/chillerlan/php-qrcode/examples/imagick.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- *
- * @filesource image.php
- * @created 24.12.2017
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-
-require_once __DIR__.'/../vendor/autoload.php';
-
-$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
-
-$options = new QROptions([
- 'version' => 7,
- 'outputType' => QRCode::OUTPUT_IMAGICK,
- 'eccLevel' => QRCode::ECC_L,
- 'scale' => 5,
- 'moduleValues' => [
- // finder
- 1536 => '#A71111', // dark (true)
- 6 => '#FFBFBF', // light (false)
- // alignment
- 2560 => '#A70364',
- 10 => '#FFC9C9',
- // timing
- 3072 => '#98005D',
- 12 => '#FFB8E9',
- // format
- 3584 => '#003804',
- 14 => '#00FB12',
- // version
- 4096 => '#650098',
- 16 => '#E0B8FF',
- // data
- 1024 => '#4A6000',
- 4 => '#ECF9BE',
- // darkmodule
- 512 => '#080063',
- // separator
- 8 => '#DDDDDD',
- // quietzone
- 18 => '#DDDDDD',
- ],
-]);
-
-header('Content-type: image/png');
-
-echo (new QRCode($options))->render($data);
-
-
-
-
-
diff --git a/vendor/chillerlan/php-qrcode/examples/octocat.png b/vendor/chillerlan/php-qrcode/examples/octocat.png
deleted file mode 100644
index f9050b935..000000000
--- a/vendor/chillerlan/php-qrcode/examples/octocat.png
+++ /dev/null
Binary files differ
diff --git a/vendor/chillerlan/php-qrcode/examples/svg.php b/vendor/chillerlan/php-qrcode/examples/svg.php
deleted file mode 100644
index d171cbe07..000000000
--- a/vendor/chillerlan/php-qrcode/examples/svg.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/**
- *
- * @filesource svg.php
- * @created 21.12.2017
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-
-require_once __DIR__.'/../vendor/autoload.php';
-
-$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
-$gzip = true;
-
-$options = new QROptions([
- 'version' => 7,
- 'outputType' => QRCode::OUTPUT_MARKUP_SVG,
- 'imageBase64' => false,
- 'eccLevel' => QRCode::ECC_L,
- 'svgViewBoxSize' => 530,
- 'addQuietzone' => true,
- 'cssClass' => 'my-css-class',
- 'svgOpacity' => 1.0,
- 'svgDefs' => '
- <linearGradient id="g2">
- <stop offset="0%" stop-color="#39F" />
- <stop offset="100%" stop-color="#F3F" />
- </linearGradient>
- <linearGradient id="g1">
- <stop offset="0%" stop-color="#F3F" />
- <stop offset="100%" stop-color="#39F" />
- </linearGradient>
- <style>rect{shape-rendering:crispEdges}</style>',
- 'moduleValues' => [
- // finder
- 1536 => 'url(#g1)', // dark (true)
- 6 => '#fff', // light (false)
- // alignment
- 2560 => 'url(#g1)',
- 10 => '#fff',
- // timing
- 3072 => 'url(#g1)',
- 12 => '#fff',
- // format
- 3584 => 'url(#g1)',
- 14 => '#fff',
- // version
- 4096 => 'url(#g1)',
- 16 => '#fff',
- // data
- 1024 => 'url(#g2)',
- 4 => '#fff',
- // darkmodule
- 512 => 'url(#g1)',
- // separator
- 8 => '#fff',
- // quietzone
- 18 => '#fff',
- ],
-]);
-
-$qrcode = (new QRCode($options))->render($data);
-
-header('Content-type: image/svg+xml');
-
-if($gzip === true){
- header('Vary: Accept-Encoding');
- header('Content-Encoding: gzip');
- $qrcode = gzencode($qrcode ,9);
-}
-echo $qrcode;
-
-
diff --git a/vendor/chillerlan/php-qrcode/examples/text.php b/vendor/chillerlan/php-qrcode/examples/text.php
deleted file mode 100644
index 9bdf154f0..000000000
--- a/vendor/chillerlan/php-qrcode/examples/text.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/**
- *
- * @filesource text.php
- * @created 21.12.2017
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodeExamples;
-
-use chillerlan\QRCode\{QRCode, QROptions};
-
-require_once __DIR__.'/../vendor/autoload.php';
-
-$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
-
-$options = new QROptions([
- 'version' => 5,
- 'outputType' => QRCode::OUTPUT_STRING_TEXT,
- 'eccLevel' => QRCode::ECC_L,
-]);
-
-// <pre> to view it in a browser
-echo '<pre style="font-size: 75%; line-height: 1;">'.(new QRCode($options))->render($data).'</pre>';
-
-
-// custom values
-$options = new QROptions([
- 'version' => 5,
- 'outputType' => QRCode::OUTPUT_STRING_TEXT,
- 'eccLevel' => QRCode::ECC_L,
- 'moduleValues' => [
- // finder
- 1536 => 'A', // dark (true)
- 6 => 'a', // light (false)
- // alignment
- 2560 => 'B',
- 10 => 'b',
- // timing
- 3072 => 'C',
- 12 => 'c',
- // format
- 3584 => 'D',
- 14 => 'd',
- // version
- 4096 => 'E',
- 16 => 'e',
- // data
- 1024 => 'F',
- 4 => 'f',
- // darkmodule
- 512 => 'G',
- // separator
- 8 => 'h',
- // quietzone
- 18 => 'i',
- ],
-]);
-
-// <pre> to view it in a browser
-echo '<pre style="font-size: 75%; line-height: 1;">'.(new QRCode($options))->render($data).'</pre>';
-
-
-
-
-
diff --git a/vendor/chillerlan/php-qrcode/phpdoc.xml b/vendor/chillerlan/php-qrcode/phpdoc.xml
deleted file mode 100644
index d440f1d8a..000000000
--- a/vendor/chillerlan/php-qrcode/phpdoc.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<phpdoc>
- <parser>
- <target>docs</target>
- <encoding>utf8</encoding>
- <markers>
- <item>TODO</item>
- </markers>
- </parser>
- <transformer>
- <target>docs</target>
- </transformer>
- <files>
- <directory>src</directory>
- <directory>tests</directory>
- </files>
- <transformations>
- <template name="responsive-twig"/>
- </transformations>
-</phpdoc>
diff --git a/vendor/chillerlan/php-qrcode/phpunit.xml b/vendor/chillerlan/php-qrcode/phpunit.xml
deleted file mode 100644
index 1fea31626..000000000
--- a/vendor/chillerlan/php-qrcode/phpunit.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
- bootstrap="vendor/autoload.php"
- cacheResultFile=".build/phpunit.result.cache"
- colors="true"
- verbose="true"
->
- <coverage processUncoveredFiles="true">
- <include>
- <directory suffix=".php">./src</directory>
- </include>
- <report>
- <clover outputFile=".build/coverage/clover.xml"/>
- <xml outputDirectory=".build/coverage/coverage-xml"/>
- </report>
- </coverage>
- <testsuites>
- <testsuite name="php-qrcode test suite">
- <directory suffix=".php">./tests/</directory>
- </testsuite>
- </testsuites>
- <logging>
- <junit outputFile=".build/logs/junit.xml"/>
- </logging>
-</phpunit>
diff --git a/vendor/chillerlan/php-qrcode/public/index.html b/vendor/chillerlan/php-qrcode/public/index.html
deleted file mode 100644
index d7bf6c891..000000000
--- a/vendor/chillerlan/php-qrcode/public/index.html
+++ /dev/null
@@ -1,163 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" >
-<head >
- <meta charset="UTF-8" >
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title >QR Code Generator</title >
- <style >
- body{ font-size: 20px; line-height: 1.4em; font-family: "Trebuchet MS", sans-serif; color: #000;}
- input, textarea, select{font-family: Consolas, "Liberation Mono", Courier, monospace; font-size: 75%; line-height: 1.25em; border: 1px solid #aaa; }
- input:focus, textarea:focus, select:focus{ border: 1px solid #ccc; }
- label{ cursor: pointer; }
- #qrcode-settings, div#qrcode-output{ text-align: center; }
- div#qrcode-output > div {margin: 0;padding: 0;height: 3px;}
- div#qrcode-output > div > span {display: inline-block;width: 3px;height: 3px;}
- div#qrcode-output > div > span {background-color: lightgrey;}
- </style >
-</head >
-<body >
-
-<form id="qrcode-settings" >
-
- <label for="inputstring" >Input String</label ><br /><textarea name="inputstring" id="inputstring" cols="80" rows="3" autocomplete="off" spellcheck="false"></textarea ><br />
-
- <label for="version" >Version</label >
- <input id="version" name="version" class="options" type="number" min="1" max="40" value="5" placeholder="version" />
-
- <label for="maskpattern" >Mask Pattern</label >
- <input id="maskpattern" name="maskpattern" class="options" type="number" min="-1" max="7" value="-1" placeholder="mask pattern" />
-
- <label for="ecc" >ECC</label >
- <select class="options" id="ecc" name="ecc" >
- <option value="L" selected="selected" >L - 7%</option >
- <option value="M" >M - 15%</option >
- <option value="Q" >Q - 25%</option >
- <option value="H" >H - 30%</option >
- </select >
-
- <br />
-
- <label for="quietzone" >Quiet Zone
- <input id="quietzone" name="quietzone" class="options" type="checkbox" value="true" />
- </label >
-
- <label for="quietzonesize" >size</label >
- <input id="quietzonesize" name="quietzonesize" class="options" type="number" min="0" max="100" value="4" placeholder="quiet zone" />
-
- <br />
-
- <label for="output_type" >Output</label >
- <select class="options" id="output_type" name="output_type" >
- <option value="html" >Markup - HTML</option >
- <option value="svg" selected="selected" >Markup - SVG</option >
- <option value="png">Image - png</option >
- <option value="jpg" >Image - jpg</option >
- <option value="gif" >Image - gif</option >
- <option value="text" >String - text</option >
- <option value="json" >String - json</option >
- </select >
-
- <label for="scale" >scale</label >
- <input id="scale" name="scale" class="options" type="number" min="1" max="10" value="5" placeholder="scale" />
-
- <div>Finder</div>
- <label for="m_finder_light" >
- <input type="text" id="m_finder_light" name="m_finder_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
- <label for="m_finder_dark" >
- <input type="text" id="m_finder_dark" name="m_finder_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
-
- <div>Alignment</div>
- <label for="m_alignment_light" >
- <input type="text" id="m_alignment_light" name="m_alignment_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
- <label for="m_alignment_dark" >
- <input type="text" id="m_alignment_dark" name="m_alignment_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
-
- <div>Timing</div>
- <label for="m_timing_light" >
- <input type="text" id="m_timing_light" name="m_timing_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
- <label for="m_timing_dark" >
- <input type="text" id="m_timing_dark" name="m_timing_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
-
- <div>Format</div>
- <label for="m_format_light" >
- <input type="text" id="m_format_light" name="m_format_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
- <label for="m_format_dark" >
- <input type="text" id="m_format_dark" name="m_format_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
-
- <div>Version</div>
- <label for="m_version_light" >
- <input type="text" id="m_version_light" name="m_version_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
- <label for="m_version_dark" >
- <input type="text" id="m_version_dark" name="m_version_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
-
- <div>Data</div>
- <label for="m_data_light" >
- <input type="text" id="m_data_light" name="m_data_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
- <label for="m_data_dark" >
- <input type="text" id="m_data_dark" name="m_data_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
-
- <div>Dark Module</div>
- <label for="m_darkmodule_light" >
- <input disabled="disabled" type="text" id="m_darkmodule_light" class="options" value="" autocomplete="off" spellcheck="false" />
- </label >
- <label for="m_darkmodule_dark" >
- <input type="text" id="m_darkmodule_dark" name="m_darkmodule_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
-
- <div>Separator</div>
- <label for="m_separator_light" >
- <input type="text" id="m_separator_light" name="m_separator_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
- <label for="m_separator_dark" >
- <input disabled="disabled" type="text" id="m_separator_dark" class="options" value="" autocomplete="off" spellcheck="false" />
- </label >
-
- <div>Quiet Zone</div>
- <label for="m_quietzone_light" >
- <input type="text" id="m_quietzone_light" name="m_quietzone_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
- </label >
- <label for="m_quietzone_dark" >
- <input disabled="disabled" type="text" id="m_quietzone_dark" class="options" value="" autocomplete="off" spellcheck="false" />
- </label >
-
- <br />
- <button type="submit" >generate</button >
-</form >
-<div id="qrcode-output" ></div >
-
-<div><a href="https://play.google.com/store/apps/details?id=com.google.zxing.client.android" >ZXing Barcode Scanner</a ></div>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.3/prototype.js" ></script >
-<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.js" ></script >
-<script >
- ((form, output, url) => {
-
- $(form).observe('submit', ev => {
- Event.stop(ev);
-
- new Ajax.Request(url, {
- method: 'post',
- parameters: ev.target.serialize(true),
- onUninitialized: $(output).update(),
- onLoading: $(output).update('[portlandia_screaming.gif]'),
- onFailure: response => $(output).update(response.responseJSON.error),
- onSuccess: response => $(output).update(response.responseJSON.qrcode),
- });
-
- });
- })('qrcode-settings', 'qrcode-output', './qrcode.php');
-</script >
-
-</body >
-</html > \ No newline at end of file
diff --git a/vendor/chillerlan/php-qrcode/public/qrcode.php b/vendor/chillerlan/php-qrcode/public/qrcode.php
deleted file mode 100644
index 1f8427c7e..000000000
--- a/vendor/chillerlan/php-qrcode/public/qrcode.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/**
- * @filesource qrcode.php
- * @created 18.11.2017
- * @author Smiley <smiley@chillerlan.net>
- * @copyright 2017 Smiley
- * @license MIT
- */
-
-namespace chillerlan\QRCodePublic;
-
-use chillerlan\QRCode\QRCode;
-use chillerlan\QRCode\QROptions;
-
-require_once '../vendor/autoload.php';
-
-try{
-
- $moduleValues = [
- // finder
- 1536 => $_POST['m_finder_dark'],
- 6 => $_POST['m_finder_light'],
- // alignment
- 2560 => $_POST['m_alignment_dark'],
- 10 => $_POST['m_alignment_light'],
- // timing
- 3072 => $_POST['m_timing_dark'],
- 12 => $_POST['m_timing_light'],
- // format
- 3584 => $_POST['m_format_dark'],
- 14 => $_POST['m_format_light'],
- // version
- 4096 => $_POST['m_version_dark'],
- 16 => $_POST['m_version_light'],
- // data
- 1024 => $_POST['m_data_dark'],
- 4 => $_POST['m_data_light'],
- // darkmodule
- 512 => $_POST['m_darkmodule_dark'],
- // separator
- 8 => $_POST['m_separator_light'],
- // quietzone
- 18 => $_POST['m_quietzone_light'],
- ];
-
- $moduleValues = array_map(function($v){
- if(preg_match('/[a-f\d]{6}/i', $v) === 1){
- return in_array($_POST['output_type'], ['png', 'jpg', 'gif'])
- ? array_map('hexdec', str_split($v, 2))
- : '#'.$v ;
- }
- return null;
- }, $moduleValues);
-
-
- $ecc = in_array($_POST['ecc'], ['L', 'M', 'Q', 'H'], true) ? $_POST['ecc'] : 'L';
-
- $qro = new QROptions;
-
- $qro->version = (int)$_POST['version'];
- $qro->eccLevel = constant('chillerlan\\QRCode\\QRCode::ECC_'.$ecc);
- $qro->maskPattern = (int)$_POST['maskpattern'];
- $qro->addQuietzone = isset($_POST['quietzone']);
- $qro->quietzoneSize = (int)$_POST['quietzonesize'];
- $qro->moduleValues = $moduleValues;
- $qro->outputType = $_POST['output_type'];
- $qro->scale = (int)$_POST['scale'];
- $qro->imageTransparent = false;
-
- $qrcode = (new QRCode($qro))->render($_POST['inputstring']);
-
- if(in_array($_POST['output_type'], ['png', 'jpg', 'gif'])){
- $qrcode = '<img src="'.$qrcode.'" />';
- }
- elseif($_POST['output_type'] === 'text'){
- $qrcode = '<pre style="font-size: 75%; line-height: 1;">'.$qrcode.'</pre>';
- }
- elseif($_POST['output_type'] === 'json'){
- $qrcode = '<pre style="font-size: 75%; overflow-x: auto;">'.$qrcode.'</pre>';
- }
-
- send_response(['qrcode' => $qrcode]);
-}
-// Pokémon exception handler
-catch(\Exception $e){
- header('HTTP/1.1 500 Internal Server Error');
- send_response(['error' => $e->getMessage()]);
-}
-
-/**
- * @param array $response
- */
-function send_response(array $response){
- header('Content-type: application/json;charset=utf-8;');
- echo json_encode($response);
- exit;
-}
diff --git a/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php b/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php
index 7874cb53d..959892b9b 100644
--- a/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php
+++ b/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php
@@ -130,7 +130,7 @@ final class MaskPatternTester{
}
if(
- $val === $m[$y][$x + 1]
+ $val === $row[$x + 1]
&& $val === $m[$y + 1][$x]
&& $val === $m[$y + 1][$x + 1]
){
@@ -154,12 +154,12 @@ final class MaskPatternTester{
if(
$x + 6 < $size
&& $val
- && !$m[$y][$x + 1]
- && $m[$y][$x + 2]
- && $m[$y][$x + 3]
- && $m[$y][$x + 4]
- && !$m[$y][$x + 5]
- && $m[$y][$x + 6]
+ && !$row[$x + 1]
+ && $row[$x + 2]
+ && $row[$x + 3]
+ && $row[$x + 4]
+ && !$row[$x + 5]
+ && $row[$x + 6]
){
$penalties++;
}
@@ -189,8 +189,8 @@ final class MaskPatternTester{
protected function testLevel4(array $m, int $size):float{
$count = 0;
- foreach($m as $y => $row){
- foreach($row as $x => $val){
+ foreach($m as $row){
+ foreach($row as $val){
if($val){
$count++;
}
diff --git a/vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php b/vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php
index 72b67b7b9..5d5b3aaf2 100644
--- a/vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php
+++ b/vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php
@@ -70,7 +70,7 @@ abstract class QRDataAbstract implements QRDataInterface{
/**
* QRDataInterface constructor.
*/
- public function __construct(SettingsContainerInterface $options, string $data = null){
+ public function __construct(SettingsContainerInterface $options, ?string $data = null){
$this->options = $options;
if($data !== null){
@@ -100,7 +100,7 @@ abstract class QRDataAbstract implements QRDataInterface{
/**
* @inheritDoc
*/
- public function initMatrix(int $maskPattern, bool $test = null):QRMatrix{
+ public function initMatrix(int $maskPattern, ?bool $test = null):QRMatrix{
return (new QRMatrix($this->version, $this->options->eccLevel))
->init($maskPattern, $test)
->mapData($this->maskECC(), $maskPattern)
diff --git a/vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php b/vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php
index 93ad6221d..4e8aa9406 100644
--- a/vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php
+++ b/vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php
@@ -21,7 +21,7 @@ interface QRDataInterface{
/**
* @var int[]
*/
- const CHAR_MAP_NUMBER = [
+ public const CHAR_MAP_NUMBER = [
'0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5, '6' => 6, '7' => 7, '8' => 8, '9' => 9,
];
@@ -30,7 +30,7 @@ interface QRDataInterface{
*
* @var int[]
*/
- const CHAR_MAP_ALPHANUM = [
+ public const CHAR_MAP_ALPHANUM = [
'0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5, '6' => 6, '7' => 7,
'8' => 8, '9' => 9, 'A' => 10, 'B' => 11, 'C' => 12, 'D' => 13, 'E' => 14, 'F' => 15,
'G' => 16, 'H' => 17, 'I' => 18, 'J' => 19, 'K' => 20, 'L' => 21, 'M' => 22, 'N' => 23,
@@ -46,7 +46,7 @@ interface QRDataInterface{
*
* @var int [][][]
*/
- const MAX_LENGTH =[
+ public const MAX_LENGTH =[
// v => [NUMERIC => [L, M, Q, H ], ALPHANUM => [L, M, Q, H], BINARY => [L, M, Q, H ], KANJI => [L, M, Q, H ]] // modules
1 => [[ 41, 34, 27, 17], [ 25, 20, 16, 10], [ 17, 14, 11, 7], [ 10, 8, 7, 4]], // 21
2 => [[ 77, 63, 48, 34], [ 47, 38, 29, 20], [ 32, 26, 20, 14], [ 20, 16, 12, 8]], // 25
@@ -95,7 +95,7 @@ interface QRDataInterface{
*
* @var int [][]
*/
- const MAX_BITS = [
+ public const MAX_BITS = [
// version => [L, M, Q, H ]
1 => [ 152, 128, 104, 72],
2 => [ 272, 224, 176, 128],
@@ -144,7 +144,7 @@ interface QRDataInterface{
*
* @var int [][][]
*/
- const RSBLOCKS = [
+ public const RSBLOCKS = [
1 => [[ 1, 0, 26, 19], [ 1, 0, 26, 16], [ 1, 0, 26, 13], [ 1, 0, 26, 9]],
2 => [[ 1, 0, 44, 34], [ 1, 0, 44, 28], [ 1, 0, 44, 22], [ 1, 0, 44, 16]],
3 => [[ 1, 0, 70, 55], [ 1, 0, 70, 44], [ 2, 0, 35, 17], [ 2, 0, 35, 13]],
@@ -195,6 +195,6 @@ interface QRDataInterface{
/**
* returns a fresh matrix object with the data written for the given $maskPattern
*/
- public function initMatrix(int $maskPattern, bool $test = null):QRMatrix;
+ public function initMatrix(int $maskPattern, ?bool $test = null):QRMatrix;
}
diff --git a/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php b/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php
index 05c8b9069..3bdae926a 100755
--- a/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php
+++ b/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php
@@ -25,32 +25,71 @@ use function array_fill, array_key_exists, array_push, array_unshift, count, flo
*/
final class QRMatrix{
+ /*
+ * special values
+ */
+
+ /** @var int */
+ public const M_NULL = 0x00;
+ /** @var int */
+ public const M_LOGO = 0x14;
+ /** @var int */
+ public const M_LOGO_DARK = self::M_LOGO << 8;
+
+ /*
+ * light values
+ */
+
+ /** @var int */
+ public const M_DATA = 0x04;
+ /** @var int */
+ public const M_FINDER = 0x06;
+ /** @var int */
+ public const M_SEPARATOR = 0x08;
+ /** @var int */
+ public const M_ALIGNMENT = 0x0a;
/** @var int */
- public const M_NULL = 0x00;
+ public const M_TIMING = 0x0c;
/** @var int */
- public const M_DARKMODULE = 0x02;
+ public const M_FORMAT = 0x0e;
/** @var int */
- public const M_DATA = 0x04;
+ public const M_VERSION = 0x10;
/** @var int */
- public const M_FINDER = 0x06;
+ public const M_QUIETZONE = 0x12;
+
+ /*
+ * dark values
+ */
+
+ /** @var int */
+ public const M_DARKMODULE = self::M_DARKMODULE_LIGHT << 8;
+ /** @var int */
+ public const M_DATA_DARK = self::M_DATA << 8;
+ /** @var int */
+ public const M_FINDER_DARK = self::M_FINDER << 8;
/** @var int */
- public const M_SEPARATOR = 0x08;
+ public const M_ALIGNMENT_DARK = self::M_ALIGNMENT << 8;
/** @var int */
- public const M_ALIGNMENT = 0x0a;
+ public const M_TIMING_DARK = self::M_TIMING << 8;
/** @var int */
- public const M_TIMING = 0x0c;
+ public const M_FORMAT_DARK = self::M_FORMAT << 8;
/** @var int */
- public const M_FORMAT = 0x0e;
+ public const M_VERSION_DARK = self::M_VERSION << 8;
/** @var int */
- public const M_VERSION = 0x10;
+ public const M_FINDER_DOT = self::M_FINDER_DOT_LIGHT << 8;
+
+ /*
+ * values used for reversed reflectance
+ */
+
/** @var int */
- public const M_QUIETZONE = 0x12;
+ public const M_DARKMODULE_LIGHT = 0x02;
/** @var int */
- public const M_LOGO = 0x14;
+ public const M_FINDER_DOT_LIGHT = 0x16;
/** @var int */
- public const M_FINDER_DOT = 0x16;
+ public const M_SEPARATOR_DARK = self::M_SEPARATOR << 8;
/** @var int */
- public const M_TEST = 0xff;
+ public const M_QUIETZONE_DARK = self::M_QUIETZONE << 8;
/**
* ISO/IEC 18004:2000 Annex E, Table E.1 - Row/column coordinates of center module of Alignment Patterns
@@ -247,7 +286,7 @@ final class QRMatrix{
/**
* shortcut to initialize the matrix
*/
- public function init(int $maskPattern, bool $test = null):QRMatrix{
+ public function init(int $maskPattern, ?bool $test = null):QRMatrix{
return $this
->setFinderPattern()
->setSeparators()
@@ -350,7 +389,7 @@ final class QRMatrix{
* Sets the "dark module", that is always on the same position 1x1px away from the bottom left finder
*/
public function setDarkModule():QRMatrix{
- $this->set(8, 4 * $this->version + 9, true, $this::M_DARKMODULE);
+ $this->set(8, 4 * $this->version + 9, true, $this::M_DARKMODULE_LIGHT);
return $this;
}
@@ -364,8 +403,8 @@ final class QRMatrix{
$pos = [
[0, 0], // top left
- [$this->moduleCount - 7, 0], // bottom left
- [0, $this->moduleCount - 7], // top right
+ [$this->moduleCount - 7, 0], // top right
+ [0, $this->moduleCount - 7], // bottom left
];
foreach($pos as $c){
@@ -381,7 +420,7 @@ final class QRMatrix{
}
// 3*3 dot
else{
- $this->set($c[0] + $y, $c[1] + $x, true, $this::M_FINDER_DOT);
+ $this->set($c[0] + $y, $c[1] + $x, true, $this::M_FINDER_DOT_LIGHT);
}
}
}
@@ -477,7 +516,7 @@ final class QRMatrix{
*
* ISO/IEC 18004:2000 Section 8.10
*/
- public function setVersionNumber(bool $test = null):QRMatrix{
+ public function setVersionNumber(?bool $test = null):QRMatrix{
$bits = $this::versionPattern[$this->version] ?? false;
if($bits !== false){
@@ -501,7 +540,7 @@ final class QRMatrix{
*
* ISO/IEC 18004:2000 Section 8.9
*/
- public function setFormatInfo(int $maskPattern, bool $test = null):QRMatrix{
+ public function setFormatInfo(int $maskPattern, ?bool $test = null):QRMatrix{
$bits = $this::formatPattern[QRCode::ECC_MODES[$this->eclevel]][$maskPattern] ?? 0;
for($i = 0; $i < 15; $i++){
@@ -541,7 +580,7 @@ final class QRMatrix{
*
* @throws \chillerlan\QRCode\Data\QRCodeDataException
*/
- public function setQuietZone(int $size = null):QRMatrix{
+ public function setQuietZone(?int $size = null):QRMatrix{
if($this->matrix[$this->moduleCount - 1][$this->moduleCount - 1] === $this::M_NULL){
throw new QRCodeDataException('use only after writing data');
@@ -588,7 +627,7 @@ final class QRMatrix{
*
* @throws \chillerlan\QRCode\Data\QRCodeDataException
*/
- public function setLogoSpace(int $width, int $height, int $startX = null, int $startY = null):QRMatrix{
+ public function setLogoSpace(int $width, int $height, ?int $startX = null, ?int $startY = null):QRMatrix{
// for logos we operate in ECC H (30%) only
if($this->eclevel !== QRCode::ECC_H){
@@ -624,8 +663,8 @@ final class QRMatrix{
$startY = ($startY !== null ? $startY : ($length - $height) / 2) + $qz;
// clear the space
- foreach($this->matrix as $y => $row){
- foreach($row as $x => $val){
+ for($y = 0; $y < $this->moduleCount; $y++){
+ for($x = 0; $x < $this->moduleCount; $x++){
// out of bounds, skip
if($x < $start || $y < $start ||$x >= $end || $y >= $end){
continue;
diff --git a/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php b/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php
index c42e0831c..fa4046086 100644
--- a/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php
+++ b/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php
@@ -69,7 +69,7 @@ final class Polynomial{
/**
* Polynomial constructor.
*/
- public function __construct(array $num = null, int $shift = null){
+ public function __construct(?array $num = null, ?int $shift = null){
$this->setNum($num ?? [1], $shift);
}
@@ -86,7 +86,7 @@ final class Polynomial{
*
* @return \chillerlan\QRCode\Helpers\Polynomial
*/
- public function setNum(array $num, int $shift = null):Polynomial{
+ public function setNum(array $num, ?int $shift = null):Polynomial{
$offset = 0;
$numCount = count($num);
@@ -157,7 +157,7 @@ final class Polynomial{
throw new QRCodeException(sprintf('log(%s)', $n));
}
- return Polynomial::table[$n][1];
+ return self::table[$n][1];
}
/**
@@ -172,7 +172,7 @@ final class Polynomial{
$n -= 255;
}
- return Polynomial::table[$n][0];
+ return self::table[$n][0];
}
}
diff --git a/vendor/chillerlan/php-qrcode/src/Output/QRFpdf.php b/vendor/chillerlan/php-qrcode/src/Output/QRFpdf.php
index a15ae9ff3..b8e6694e8 100644
--- a/vendor/chillerlan/php-qrcode/src/Output/QRFpdf.php
+++ b/vendor/chillerlan/php-qrcode/src/Output/QRFpdf.php
@@ -68,7 +68,7 @@ class QRFpdf extends QROutputAbstract{
*
* @return string|\FPDF
*/
- public function dump(string $file = null){
+ public function dump(?string $file = null){
$file ??= $this->options->cachefile;
$fpdf = new FPDF('P', $this->options->fpdfMeasureUnit, [$this->length, $this->length]);
diff --git a/vendor/chillerlan/php-qrcode/src/Output/QRImage.php b/vendor/chillerlan/php-qrcode/src/Output/QRImage.php
index 8f533d341..c67c625b2 100644
--- a/vendor/chillerlan/php-qrcode/src/Output/QRImage.php
+++ b/vendor/chillerlan/php-qrcode/src/Output/QRImage.php
@@ -94,7 +94,7 @@ class QRImage extends QROutputAbstract{
*
* @phan-suppress PhanUndeclaredTypeReturnType, PhanTypeMismatchReturn
*/
- public function dump(string $file = null){
+ public function dump(?string $file = null){
$file ??= $this->options->cachefile;
$this->image = imagecreatetruecolor($this->length, $this->length);
diff --git a/vendor/chillerlan/php-qrcode/src/Output/QRImagick.php b/vendor/chillerlan/php-qrcode/src/Output/QRImagick.php
index 49516d30e..ec0f6d5b0 100644
--- a/vendor/chillerlan/php-qrcode/src/Output/QRImagick.php
+++ b/vendor/chillerlan/php-qrcode/src/Output/QRImagick.php
@@ -67,7 +67,7 @@ class QRImagick extends QROutputAbstract{
*
* @return string|\Imagick
*/
- public function dump(string $file = null){
+ public function dump(?string $file = null){
$file ??= $this->options->cachefile;
$this->imagick = new Imagick;
diff --git a/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php b/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php
index 06d6e88cb..1f7843182 100644
--- a/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php
+++ b/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php
@@ -53,7 +53,7 @@ class QRMarkup extends QROutputAbstract{
/**
* HTML output
*/
- protected function html(string $file = null):string{
+ protected function html(?string $file = null):string{
$html = empty($this->options->cssClass)
? '<div>'
@@ -74,9 +74,11 @@ class QRMarkup extends QROutputAbstract{
$html .= '</div>'.$this->options->eol;
if($file !== null){
- return '<!DOCTYPE html>'.
- '<head><meta charset="UTF-8"><title>QR Code</title></head>'.
- '<body>'.$this->options->eol.$html.'</body>';
+ /** @noinspection HtmlRequiredLangAttribute */
+ return sprintf(
+ '<!DOCTYPE html><html><head><meta charset="UTF-8"><title>QR Code</title></head><body>%s</body></html>',
+ $this->options->eol.$html
+ );
}
return $html;
@@ -87,7 +89,7 @@ class QRMarkup extends QROutputAbstract{
*
* @see https://github.com/codemasher/php-qrcode/pull/5
*/
- protected function svg(string $file = null):string{
+ protected function svg(?string $file = null):string{
$matrix = $this->matrix->matrix();
$svg = sprintf($this->svgHeader, $this->options->cssClass, $this->options->svgViewBoxSize ?? $this->moduleCount)
diff --git a/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php b/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php
index d4ed3d0c9..78e761093 100644
--- a/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php
+++ b/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php
@@ -12,7 +12,8 @@
namespace chillerlan\QRCode\Output;
-use chillerlan\QRCode\{Data\QRMatrix, QRCode};
+use chillerlan\QRCode\QRCode;
+use chillerlan\QRCode\Data\QRMatrix;
use chillerlan\Settings\SettingsContainerInterface;
use function call_user_func_array, dirname, file_put_contents, get_called_class, in_array, is_writable, sprintf;
@@ -112,7 +113,7 @@ abstract class QROutputAbstract implements QROutputInterface{
/**
* @inheritDoc
*/
- public function dump(string $file = null){
+ public function dump(?string $file = null){
$file ??= $this->options->cachefile;
// call the built-in output method with the optional file path as parameter
diff --git a/vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php b/vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php
index b07b8e7a5..7052701b9 100644
--- a/vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php
+++ b/vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php
@@ -19,29 +19,32 @@ use chillerlan\QRCode\Data\QRMatrix;
*/
interface QROutputInterface{
- const DEFAULT_MODULE_VALUES = [
+ public const DEFAULT_MODULE_VALUES = [
// light
- QRMatrix::M_NULL => false, // 0
- QRMatrix::M_DATA => false, // 4
- QRMatrix::M_FINDER => false, // 6
- QRMatrix::M_SEPARATOR => false, // 8
- QRMatrix::M_ALIGNMENT => false, // 10
- QRMatrix::M_TIMING => false, // 12
- QRMatrix::M_FORMAT => false, // 14
- QRMatrix::M_VERSION => false, // 16
- QRMatrix::M_QUIETZONE => false, // 18
- QRMatrix::M_LOGO => false, // 20
- QRMatrix::M_TEST => false, // 255
+ QRMatrix::M_NULL => false,
+ QRMatrix::M_DARKMODULE_LIGHT => false,
+ QRMatrix::M_DATA => false,
+ QRMatrix::M_FINDER => false,
+ QRMatrix::M_SEPARATOR => false,
+ QRMatrix::M_ALIGNMENT => false,
+ QRMatrix::M_TIMING => false,
+ QRMatrix::M_FORMAT => false,
+ QRMatrix::M_VERSION => false,
+ QRMatrix::M_QUIETZONE => false,
+ QRMatrix::M_LOGO => false,
+ QRMatrix::M_FINDER_DOT_LIGHT => false,
// dark
- QRMatrix::M_DARKMODULE << 8 => true, // 512
- QRMatrix::M_DATA << 8 => true, // 1024
- QRMatrix::M_FINDER << 8 => true, // 1536
- QRMatrix::M_ALIGNMENT << 8 => true, // 2560
- QRMatrix::M_TIMING << 8 => true, // 3072
- QRMatrix::M_FORMAT << 8 => true, // 3584
- QRMatrix::M_VERSION << 8 => true, // 4096
- QRMatrix::M_FINDER_DOT << 8 => true, // 5632
- QRMatrix::M_TEST << 8 => true, // 65280
+ QRMatrix::M_DARKMODULE => true,
+ QRMatrix::M_DATA_DARK => true,
+ QRMatrix::M_FINDER_DARK => true,
+ QRMatrix::M_SEPARATOR_DARK => true,
+ QRMatrix::M_ALIGNMENT_DARK => true,
+ QRMatrix::M_TIMING_DARK => true,
+ QRMatrix::M_FORMAT_DARK => true,
+ QRMatrix::M_VERSION_DARK => true,
+ QRMatrix::M_QUIETZONE_DARK => true,
+ QRMatrix::M_LOGO_DARK => true,
+ QRMatrix::M_FINDER_DOT => true,
];
/**
@@ -49,6 +52,6 @@ interface QROutputInterface{
*
* @return mixed
*/
- public function dump(string $file = null);
+ public function dump(?string $file = null);
}
diff --git a/vendor/chillerlan/php-qrcode/src/Output/QRString.php b/vendor/chillerlan/php-qrcode/src/Output/QRString.php
index 3ed5153e1..441ef99fd 100644
--- a/vendor/chillerlan/php-qrcode/src/Output/QRString.php
+++ b/vendor/chillerlan/php-qrcode/src/Output/QRString.php
@@ -50,7 +50,7 @@ class QRString extends QROutputAbstract{
/**
* string output
*/
- protected function text(string $file = null):string{
+ protected function text(?string $file = null):string{
$str = [];
foreach($this->matrix->matrix() as $row){
@@ -69,7 +69,7 @@ class QRString extends QROutputAbstract{
/**
* JSON output
*/
- protected function json(string $file = null):string{
+ protected function json(?string $file = null):string{
return json_encode($this->matrix->matrix());
}
diff --git a/vendor/chillerlan/php-qrcode/src/QRCode.php b/vendor/chillerlan/php-qrcode/src/QRCode.php
index 908030feb..1dad921e4 100755
--- a/vendor/chillerlan/php-qrcode/src/QRCode.php
+++ b/vendor/chillerlan/php-qrcode/src/QRCode.php
@@ -117,23 +117,23 @@ class QRCode{
* @var string[][]
*/
public const OUTPUT_MODES = [
- QRMarkup::class => [
+ QRMarkup::class => [
self::OUTPUT_MARKUP_SVG,
self::OUTPUT_MARKUP_HTML,
],
- QRImage::class => [
+ QRImage::class => [
self::OUTPUT_IMAGE_PNG,
self::OUTPUT_IMAGE_GIF,
self::OUTPUT_IMAGE_JPG,
],
- QRString::class => [
+ QRString::class => [
self::OUTPUT_STRING_JSON,
self::OUTPUT_STRING_TEXT,
],
QRImagick::class => [
self::OUTPUT_IMAGICK,
],
- QRFpdf::class => [
+ QRFpdf::class => [
self::OUTPUT_FPDF
]
];
@@ -167,7 +167,7 @@ class QRCode{
*
* Sets the options instance, determines the current mb-encoding and sets it to UTF-8
*/
- public function __construct(SettingsContainerInterface $options = null){
+ public function __construct(?SettingsContainerInterface $options = null){
$this->options = $options ?? new QROptions;
}
@@ -176,7 +176,7 @@ class QRCode{
*
* @return mixed
*/
- public function render(string $data, string $file = null){
+ public function render(string $data, ?string $file = null){
return $this->initOutputInterface($data)->dump($file);
}
diff --git a/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php b/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php
index 74c384b13..13dfba136 100644
--- a/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php
+++ b/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php
@@ -140,12 +140,12 @@ trait QROptionsTrait{
/**
* string substitute for dark
*/
- protected string $textDark = '🔴';
+ protected string $textDark = '██';
/**
* string substitute for light
*/
- protected string $textLight = '⭕';
+ protected string $textLight = '░░';
/**
* markup substitute for dark (CSS value)
diff --git a/vendor/chillerlan/php-settings-container/.github/FUNDING.yml b/vendor/chillerlan/php-settings-container/.github/FUNDING.yml
deleted file mode 100644
index 16a077f52..000000000
--- a/vendor/chillerlan/php-settings-container/.github/FUNDING.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-ko_fi: codemasher
-custom: "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4"
diff --git a/vendor/chillerlan/php-settings-container/.github/workflows/tests.yml b/vendor/chillerlan/php-settings-container/.github/workflows/tests.yml
deleted file mode 100644
index 8f108f0dd..000000000
--- a/vendor/chillerlan/php-settings-container/.github/workflows/tests.yml
+++ /dev/null
@@ -1,105 +0,0 @@
-# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
-# https://github.com/sebastianbergmann/phpunit/blob/master/.github/workflows/ci.yml
-
-on:
- push:
- branches:
- - main
- pull_request:
- branches:
- - main
-
-
-name: "CI"
-
-jobs:
-
- static-code-analysis:
- name: "Static Code Analysis"
-
- runs-on: ubuntu-latest
-
- env:
- PHAN_ALLOW_XDEBUG: 0
- PHAN_DISABLE_XDEBUG_WARN: 1
-
- steps:
- - name: "Checkout"
- uses: actions/checkout@v3
-
- - name: "Install PHP"
- uses: shivammathur/setup-php@v2
- with:
- php-version: "7.4"
- tools: pecl
- coverage: none
- extensions: ast, json
-
- - name: "Update dependencies with composer"
- run: composer update --no-interaction --no-ansi --no-progress --no-suggest
-
- - name: "Run phan"
- run: php vendor/bin/phan
-
- build-docs:
- name: "Build and publish Docs"
-
- runs-on: ubuntu-latest
-
- steps:
- - name: "Checkout sources"
- uses: actions/checkout@v3
-
- - name: "Install PHP"
- uses: shivammathur/setup-php@v2
- with:
- php-version: "8.1"
- coverage: none
- tools: phpDocumentor
- extensions: json
-
- - name: "Build Docs"
- run: phpdoc --config=phpdoc.xml
-
- - name: "Publish Docs to gh-pages"
- uses: JamesIves/github-pages-deploy-action@v4.3.4
- with:
- branch: gh-pages
- folder: docs
- clean: true
-
- tests:
- name: "Unit Tests"
-
- runs-on: ${{ matrix.os }}
-
- strategy:
- fail-fast: false
- matrix:
- os:
- - ubuntu-latest
- - windows-latest
- php-version:
- - "7.4"
- - "8.0"
- - "8.1"
-
- steps:
- - name: "Checkout"
- uses: actions/checkout@v3
-
- - name: "Install PHP with extensions"
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php-version }}
- coverage: pcov
- extensions: json
-
- - name: "Install dependencies with composer"
- run: composer update --no-ansi --no-interaction --no-progress --no-suggest
-
- - name: "Run tests with phpunit"
- run: php vendor/phpunit/phpunit/phpunit --configuration=phpunit.xml
-
- - name: "Send code coverage report to Codecov.io"
- uses: codecov/codecov-action@v3
diff --git a/vendor/chillerlan/php-settings-container/.gitignore b/vendor/chillerlan/php-settings-container/.gitignore
deleted file mode 100644
index 142dd453a..000000000
--- a/vendor/chillerlan/php-settings-container/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/.build
-/.idea
-/vendor
-composer.lock
diff --git a/vendor/chillerlan/php-settings-container/.phan/config.php b/vendor/chillerlan/php-settings-container/.phan/config.php
deleted file mode 100644
index 468bd9983..000000000
--- a/vendor/chillerlan/php-settings-container/.phan/config.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/**
- * This configuration will be read and overlaid on top of the
- * default configuration. Command-line arguments will be applied
- * after this file is read.
- */
-return [
- // Supported values: `'5.6'`, `'7.0'`, `'7.1'`, `'7.2'`, `'7.3'`,
- // `'7.4'`, `null`.
- // If this is set to `null`,
- // then Phan assumes the PHP version which is closest to the minor version
- // of the php executable used to execute Phan.
- //
- // Note that the **only** effect of choosing `'5.6'` is to infer
- // that functions removed in php 7.0 exist.
- // (See `backward_compatibility_checks` for additional options)
- 'target_php_version' => '7.4',
-
- // A list of directories that should be parsed for class and
- // method information. After excluding the directories
- // defined in exclude_analysis_directory_list, the remaining
- // files will be statically analyzed for errors.
- //
- // Thus, both first-party and third-party code being used by
- // your application should be included in this list.
- 'directory_list' => [
- 'examples',
- 'src',
- 'tests',
- 'vendor',
- ],
-
- // A regex used to match every file name that you want to
- // exclude from parsing. Actual value will exclude every
- // "test", "tests", "Test" and "Tests" folders found in
- // "vendor/" directory.
- 'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@',
-
- // A directory list that defines files that will be excluded
- // from static analysis, but whose class and method
- // information should be included.
- //
- // Generally, you'll want to include the directories for
- // third-party code (such as "vendor/") in this list.
- //
- // n.b.: If you'd like to parse but not analyze 3rd
- // party code, directories containing that code
- // should be added to both the `directory_list`
- // and `exclude_analysis_directory_list` arrays.
- 'exclude_analysis_directory_list' => [
- 'tests',
- 'vendor',
- ],
-];
diff --git a/vendor/chillerlan/php-settings-container/.scrutinizer.yml b/vendor/chillerlan/php-settings-container/.scrutinizer.yml
deleted file mode 100644
index daeb475f4..000000000
--- a/vendor/chillerlan/php-settings-container/.scrutinizer.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-build:
- nodes:
- analysis:
- tests:
- override:
- - php-scrutinizer-run
- environment:
- php: 8.0.0
-
-filter:
- excluded_paths:
- - examples/*
- - tests/*
- - vendor/*
diff --git a/vendor/chillerlan/php-settings-container/README.md b/vendor/chillerlan/php-settings-container/README.md
index 579696b6e..3fb122d14 100644
--- a/vendor/chillerlan/php-settings-container/README.md
+++ b/vendor/chillerlan/php-settings-container/README.md
@@ -1,15 +1,15 @@
# chillerlan/php-settings-container
-A container class for immutable settings objects. Not a DI container. PHP 7.4+
-- [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php) provides immutable properties with magic getter & setter and some fancy - decouple configuration logic from your application!
+A container class for settings objects - decouple configuration logic from your application! Not a DI container.
+- [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php) provides immutable properties with magic getter & setter and some fancy.
[![PHP Version Support][php-badge]][php]
[![version][packagist-badge]][packagist]
[![license][license-badge]][license]
+[![Continuous Integration][gh-action-badge]][gh-action]
[![Coverage][coverage-badge]][coverage]
-[![Scrunitizer][scrutinizer-badge]][scrutinizer]
+[![Codacy][codacy-badge]][codacy]
[![Packagist downloads][downloads-badge]][downloads]
-[![Continuous Integration][gh-action-badge]][gh-action]
[php-badge]: https://img.shields.io/packagist/php-v/chillerlan/php-settings-container?logo=php&color=8892BF
[php]: https://www.php.net/supported-versions.php
@@ -19,23 +19,23 @@ A container class for immutable settings objects. Not a DI container. PHP 7.4+
[license]: https://github.com/chillerlan/php-settings-container/blob/main/LICENSE
[coverage-badge]: https://img.shields.io/codecov/c/github/chillerlan/php-settings-container.svg?logo=codecov
[coverage]: https://codecov.io/github/chillerlan/php-settings-container
-[scrutinizer-badge]: https://img.shields.io/scrutinizer/g/chillerlan/php-settings-container.svg?logo=scrutinizer
-[scrutinizer]: https://scrutinizer-ci.com/g/chillerlan/php-settings-container
+[codacy-badge]: https://img.shields.io/codacy/grade/bd2467799e2943d2853ce3ebad5af490/main?logo=codacy
+[codacy]: https://www.codacy.com/gh/chillerlan/php-settings-container/dashboard?branch=main
[downloads-badge]: https://img.shields.io/packagist/dt/chillerlan/php-settings-container.svg?logo=packagist
[downloads]: https://packagist.org/packages/chillerlan/php-settings-container/stats
-[gh-action-badge]: https://github.com/chillerlan/php-settings-container/workflows/CI/badge.svg
-[gh-action]: https://github.com/chillerlan/php-settings-container/actions?query=workflow%3A%22CI%22
+[gh-action-badge]: https://img.shields.io/github/actions/workflow/status/chillerlan/php-settings-container/ci.yml?branch=main&logo=github
+[gh-action]: https://github.com/chillerlan/php-settings-container/actions/workflows/ci.yml?query=branch%3Amain
## Documentation
### Installation
**requires [composer](https://getcomposer.org)**
-*composer.json* (note: replace `dev-main` with a [version constraint](https://getcomposer.org/doc/articles/versions.md#writing-version-constraints), e.g. `^2.1` - see [releases](https://github.com/chillerlan/php-settings-container/releases) for valid versions)
+*composer.json* (note: replace `dev-main` with a [version constraint](https://getcomposer.org/doc/articles/versions.md#writing-version-constraints), e.g. `^3.0` - see [releases](https://github.com/chillerlan/php-settings-container/releases) for valid versions)
```json
{
"require": {
- "php": "^7.4 || ^8.0",
+ "php": "^8.1",
"chillerlan/php-settings-container": "dev-main"
}
}
@@ -45,31 +45,27 @@ Profit!
## Usage
-The `SettingsContainerInterface` (wrapped in`SettingsContainerAbstract` ) provides plug-in functionality for immutable object properties and adds some fancy, like loading/saving JSON, arrays etc.
+The `SettingsContainerInterface` (wrapped in`SettingsContainerAbstract`) provides plug-in functionality for immutable object properties and adds some fancy, like loading/saving JSON, arrays etc.
It takes an `iterable` as the only constructor argument and calls a method with the trait's name on invocation (`MyTrait::MyTrait()`) for each used trait.
+A PHPStan ruleset to exclude errors generated by accessing magic properties on `SettingsContainerInterface` can be found in `rules-magic-access.neon`.
+
+
### Simple usage
```php
class MyContainer extends SettingsContainerAbstract{
- protected $foo;
- protected $bar;
-}
-```
-Typed properties in PHP 7.4+:
-```php
-class MyContainer extends SettingsContainerAbstract{
protected string $foo;
protected string $bar;
}
```
```php
-// use it just like a \stdClass
+// use it just like a \stdClass (except the properties are fixed)
$container = new MyContainer;
$container->foo = 'what';
$container->bar = 'foo';
-// which is equivalent to
+// which is equivalent to
$container = new MyContainer(['bar' => 'foo', 'foo' => 'what']);
// ...or try
$container->fromJSON('{"foo": "what", "bar": "foo"}');
@@ -90,37 +86,48 @@ var_dump($container->nope); // -> null
### Advanced usage
```php
+// from library 1
trait SomeOptions{
- protected $foo;
- protected $what;
-
+ protected string $foo;
+ protected string $what;
+
// this method will be called in SettingsContainerAbstract::construct()
// after the properties have been set
- protected function SomeOptions(){
+ protected function SomeOptions():void{
// just some constructor stuff...
$this->foo = strtoupper($this->foo);
}
-
+
+ /*
+ * special prefixed magic setters & getters
+ */
+
// this method will be called from __set() when property $what is set
- protected function set_what(string $value){
+ protected function set_what(string $value):void{
$this->what = md5($value);
}
+
+ // this method is called on __get() for the property $what
+ protected function get_what():string{
+ return 'hash: '.$this->what;
+ }
}
+// from library 2
trait MoreOptions{
- protected $bar = 'whatever'; // provide default values
+ protected string $bar = 'whatever'; // provide default values
}
```
```php
$commonOptions = [
// SomeOptions
- 'foo' => 'whatever',
+ 'foo' => 'whatever',
// MoreOptions
'bar' => 'nothing',
];
-// now plug the several library options together to a single object
+// now plug the several library options together to a single object
$container = new class ($commonOptions) extends SettingsContainerAbstract{
use SomeOptions, MoreOptions;
};
@@ -129,27 +136,31 @@ var_dump($container->foo); // -> WHATEVER (constructor ran strtoupper on the val
var_dump($container->bar); // -> nothing
$container->what = 'some value';
-var_dump($container->what); // -> md5 hash of "some value"
+var_dump($container->what); // -> hash: 5946210c9e93ae37891dfe96c3e39614 (custom getter added "hash: ")
```
### API
#### [`SettingsContainerAbstract`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerAbstract.php)
-method | return | info
--------- | ---- | -----------
-`__construct(iterable $properties = null)` | - | calls `construct()` internally after the properties have been set
-(protected) `construct()` | void | calls a method with trait name as replacement constructor for each used trait
-`__get(string $property)` | mixed | calls `$this->{'get_'.$property}()` if such a method exists
-`__set(string $property, $value)` | void | calls `$this->{'set_'.$property}($value)` if such a method exists
-`__isset(string $property)` | bool |
-`__unset(string $property)` | void |
-`__toString()` | string | a JSON string
-`toArray()` | array |
-`fromIterable(iterable $properties)` | `SettingsContainerInterface` |
-`toJSON(int $jsonOptions = null)` | string | accepts [JSON options constants](http://php.net/manual/json.constants.php)
-`fromJSON(string $json)` | `SettingsContainerInterface` |
-`jsonSerialize()` | mixed | implements the [`JsonSerializable`](https://www.php.net/manual/en/jsonserializable.jsonserialize.php) interface
+| method | return | info |
+|--------------------------------------------|------------------------------|---------------------------------------------------------------------------------------------------------------------|
+| `__construct(iterable $properties = null)` | - | calls `construct()` internally after the properties have been set |
+| (protected) `construct()` | void | calls a method with trait name as replacement constructor for each used trait |
+| `__get(string $property)` | mixed | calls `$this->{'get_'.$property}()` if such a method exists |
+| `__set(string $property, $value)` | void | calls `$this->{'set_'.$property}($value)` if such a method exists |
+| `__isset(string $property)` | bool | |
+| `__unset(string $property)` | void | |
+| `__toString()` | string | a JSON string |
+| `toArray()` | array | |
+| `fromIterable(iterable $properties)` | `SettingsContainerInterface` | |
+| `toJSON(int $jsonOptions = null)` | string | accepts [JSON options constants](http://php.net/manual/json.constants.php) |
+| `fromJSON(string $json)` | `SettingsContainerInterface` | |
+| `jsonSerialize()` | mixed | implements the [`JsonSerializable`](https://www.php.net/manual/en/jsonserializable.jsonserialize.php) interface |
+| `serialize()` | string | implements the [`Serializable`](https://www.php.net/manual/en/serializable.serialize.php) interface |
+| `unserialize(string $data)` | void | implements the [`Serializable`](https://www.php.net/manual/en/serializable.unserialize.php) interface |
+| `__serialize()` | array | implements the [`Serializable`](https://www.php.net/manual/en/language.oop5.magic.php#object.serialize) interface |
+| `__unserialize(array $data)` | void | implements the [`Serializable`](https://www.php.net/manual/en/language.oop5.magic.php#object.unserialize) interface |
## Disclaimer
This might be either an utterly genius or completely stupid idea - you decide. However, i like it and it works.
diff --git a/vendor/chillerlan/php-settings-container/composer.json b/vendor/chillerlan/php-settings-container/composer.json
index 1d89b6c41..16b8e5ecb 100644
--- a/vendor/chillerlan/php-settings-container/composer.json
+++ b/vendor/chillerlan/php-settings-container/composer.json
@@ -1,12 +1,12 @@
{
"name": "chillerlan/php-settings-container",
- "description": "A container class for immutable settings objects. Not a DI container. PHP 7.4+",
+ "description": "A container class for immutable settings objects. Not a DI container.",
"homepage": "https://github.com/chillerlan/php-settings-container",
"license": "MIT",
"type": "library",
"minimum-stability": "stable",
"keywords": [
- "php7", "helper", "container", "settings", "configuration"
+ "helper", "container", "settings", "configuration"
],
"authors": [
{
@@ -20,27 +20,29 @@
"source": "https://github.com/chillerlan/php-settings-container"
},
"require": {
- "php": "^7.4 || ^8.0",
+ "php": "^8.1",
"ext-json": "*"
},
"require-dev": {
- "phan/phan": "^5.3",
- "phpunit/phpunit": "^9.5"
+ "phpmd/phpmd": "^2.15",
+ "phpstan/phpstan": "^1.11",
+ "phpstan/phpstan-deprecation-rules": "^1.2",
+ "phpunit/phpunit": "^10.5",
+ "squizlabs/php_codesniffer": "^3.10"
},
"autoload": {
"psr-4": {
- "chillerlan\\Settings\\": "src/"
+ "chillerlan\\Settings\\": "src"
}
},
"autoload-dev": {
"psr-4": {
- "chillerlan\\SettingsTest\\": "tests/",
- "chillerlan\\SettingsExamples\\": "examples/"
+ "chillerlan\\SettingsTest\\": "tests"
}
},
"scripts": {
"phpunit": "@php vendor/bin/phpunit",
- "phan": "@php vendor/bin/phan"
+ "phpstan": "@php vendor/bin/phpstan"
},
"config": {
"lock": false,
diff --git a/vendor/chillerlan/php-settings-container/docs/Readme.md b/vendor/chillerlan/php-settings-container/docs/Readme.md
deleted file mode 100644
index 7749a1e7f..000000000
--- a/vendor/chillerlan/php-settings-container/docs/Readme.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Auto generated API documentation
-
-The API documentation can be auto generated with [phpDocumentor](https://www.phpdoc.org/).
-There is an [online version available](https://chillerlan.github.io/php-settings-container/) via the [gh-pages branch](https://github.com/chillerlan/php-settings-container/tree/gh-pages) that is [automatically deployed](https://github.com/chillerlan/php-settings-container/deployments) on each push to main.
-
-Locally created docs will appear in this directory. If you'd like to create local docs, please follow these steps:
-
-- [download phpDocumentor](https://github.com/phpDocumentor/phpDocumentor/releases) v3+ as .phar archive
-- run it in the repository root directory:
- - on Windows `c:\path\to\php.exe c:\path\to\phpDocumentor.phar --config=phpdoc.xml`
- - on Linux just `php /path/to/phpDocumentor.phar --config=phpdoc.xml`
-- open [index.html](./index.html) in a browser
-- profit!
diff --git a/vendor/chillerlan/php-settings-container/examples/advanced.php b/vendor/chillerlan/php-settings-container/examples/advanced.php
deleted file mode 100644
index f11642c83..000000000
--- a/vendor/chillerlan/php-settings-container/examples/advanced.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * @created 28.08.2018
- * @author smiley <smiley@chillerlan.net>
- * @copyright 2018 smiley
- * @license MIT
- */
-
-namespace chillerlan\SettingsExamples;
-
-use chillerlan\Settings\SettingsContainerAbstract;
-
-require_once __DIR__.'/../vendor/autoload.php';
-
-// from library #1
-trait SomeOptions{
- protected string $foo = '';
-
- // this method will be called in SettingsContainerAbstract::__construct() after the properties have been set
- protected function SomeOptions(){
- // just some constructor stuff...
- $this->foo = strtoupper($this->foo);
- }
-}
-
-// from library #2
-trait MoreOptions{
- protected string $bar = 'whatever'; // provide default values
-}
-
-$commonOptions = [
- // SomeOptions
- 'foo' => 'whatever',
- // MoreOptions
- 'bar' => 'nothing',
-];
-
-// now plug the several library options together to a single object
-
-/**
- * @property string $foo
- * @property string $bar
- */
-class MySettings extends SettingsContainerAbstract{
- use SomeOptions, MoreOptions; // ...
-};
-
-$container = new MySettings($commonOptions);
-
-var_dump($container->foo); // -> WHATEVER (constructor ran strtoupper on the value)
-var_dump($container->bar); // -> nothing
diff --git a/vendor/chillerlan/php-settings-container/examples/simple.php b/vendor/chillerlan/php-settings-container/examples/simple.php
deleted file mode 100644
index acdbe4cb3..000000000
--- a/vendor/chillerlan/php-settings-container/examples/simple.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * @created 28.08.2018
- * @author smiley <smiley@chillerlan.net>
- * @copyright 2018 smiley
- * @license MIT
- */
-
-namespace chillerlan\SettingsExamples;
-
-use chillerlan\Settings\SettingsContainerAbstract;
-
-require_once __DIR__.'/../vendor/autoload.php';
-
-class MyContainer extends SettingsContainerAbstract{
- protected $foo;
- protected $bar;
-}
-
-/** @var \chillerlan\Settings\SettingsContainerInterface $container */
-$container = new MyContainer(['foo' => 'what']);
-$container->bar = 'foo';
-
-var_dump($container->toJSON()); // -> {"foo":"what","bar":"foo"}
-
-// non-existing properties will be ignored:
-$container->nope = 'what';
-
-var_dump($container->nope); // -> NULL
diff --git a/vendor/chillerlan/php-settings-container/phpdoc.xml b/vendor/chillerlan/php-settings-container/phpdoc.xml
deleted file mode 100644
index d440f1d8a..000000000
--- a/vendor/chillerlan/php-settings-container/phpdoc.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<phpdoc>
- <parser>
- <target>docs</target>
- <encoding>utf8</encoding>
- <markers>
- <item>TODO</item>
- </markers>
- </parser>
- <transformer>
- <target>docs</target>
- </transformer>
- <files>
- <directory>src</directory>
- <directory>tests</directory>
- </files>
- <transformations>
- <template name="responsive-twig"/>
- </transformations>
-</phpdoc>
diff --git a/vendor/chillerlan/php-settings-container/phpunit.xml b/vendor/chillerlan/php-settings-container/phpunit.xml
deleted file mode 100644
index 9271a1bb1..000000000
--- a/vendor/chillerlan/php-settings-container/phpunit.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
- bootstrap="vendor/autoload.php"
- cacheResultFile=".build/phpunit.result.cache"
- colors="true"
- verbose="true"
->
- <coverage processUncoveredFiles="true">
- <include>
- <directory suffix=".php">./src</directory>
- </include>
- <report>
- <clover outputFile=".build/coverage/clover.xml"/>
- <xml outputDirectory=".build/coverage/coverage-xml"/>
- </report>
- </coverage>
- <testsuites>
- <testsuite name="php-settings-container test suite">
- <directory suffix=".php">./tests/</directory>
- </testsuite>
- </testsuites>
- <logging>
- <junit outputFile=".build/logs/junit.xml"/>
- </logging>
-</phpunit>
diff --git a/vendor/chillerlan/php-settings-container/rules-magic-access.neon b/vendor/chillerlan/php-settings-container/rules-magic-access.neon
new file mode 100644
index 000000000..5a98d3a81
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/rules-magic-access.neon
@@ -0,0 +1,4 @@
+parameters:
+ ignoreErrors:
+ # yes, these are magic
+ - message: "#^Access to an undefined property chillerlan\\\\Settings\\\\SettingsContainerInterface\\:\\:\\$[\\w]+\\.$#"
diff --git a/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php b/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php
index 6b7a1ecc2..826faaf25 100644
--- a/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php
+++ b/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php
@@ -7,20 +7,23 @@
* @copyright 2018 Smiley
* @license MIT
*/
+declare(strict_types=1);
namespace chillerlan\Settings;
-use ReflectionClass, ReflectionProperty;
-
-use function get_object_vars, json_decode, json_encode, method_exists, property_exists;
+use InvalidArgumentException, JsonException, ReflectionClass, ReflectionProperty;
+use function array_keys, get_object_vars, is_object, json_decode, json_encode,
+ json_last_error_msg, method_exists, property_exists, serialize, unserialize;
use const JSON_THROW_ON_ERROR;
abstract class SettingsContainerAbstract implements SettingsContainerInterface{
/**
* SettingsContainerAbstract constructor.
+ *
+ * @phpstan-param array<string, mixed> $properties
*/
- public function __construct(iterable $properties = null){
+ public function __construct(iterable|null $properties = null){
if(!empty($properties)){
$this->fromIterable($properties);
@@ -49,7 +52,7 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
/**
* @inheritdoc
*/
- public function __get(string $property){
+ public function __get(string $property):mixed{
if(!property_exists($this, $property) || $this->isPrivate($property)){
return null;
@@ -67,7 +70,7 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
/**
* @inheritdoc
*/
- public function __set(string $property, $value):void{
+ public function __set(string $property, mixed $value):void{
if(!property_exists($this, $property) || $this->isPrivate($property)){
return;
@@ -120,13 +123,19 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
* @inheritdoc
*/
public function toArray():array{
- return get_object_vars($this);
+ $properties = [];
+
+ foreach(array_keys(get_object_vars($this)) as $key){
+ $properties[$key] = $this->__get($key);
+ }
+
+ return $properties;
}
/**
* @inheritdoc
*/
- public function fromIterable(iterable $properties):SettingsContainerInterface{
+ public function fromIterable(iterable $properties):static{
foreach($properties as $key => $value){
$this->__set($key, $value);
@@ -138,14 +147,21 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
/**
* @inheritdoc
*/
- public function toJSON(int $jsonOptions = null):string{
- return json_encode($this, $jsonOptions ?? 0);
+ public function toJSON(int|null $jsonOptions = null):string{
+ $json = json_encode($this, ($jsonOptions ?? 0));
+
+ if($json === false){
+ throw new JsonException(json_last_error_msg());
+ }
+
+ return $json;
}
/**
* @inheritdoc
*/
- public function fromJSON(string $json):SettingsContainerInterface{
+ public function fromJSON(string $json):static{
+ /** @phpstan-var array<string, mixed> $data */
$data = json_decode($json, true, 512, JSON_THROW_ON_ERROR);
return $this->fromIterable($data);
@@ -153,10 +169,84 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
/**
* @inheritdoc
+ * @return array<string, mixed>
*/
- #[\ReturnTypeWillChange]
public function jsonSerialize():array{
return $this->toArray();
}
+ /**
+ * Returns a serialized string representation of the object in its current state (except static/readonly properties)
+ *
+ * @inheritdoc
+ * @see \chillerlan\Settings\SettingsContainerInterface::toArray()
+ */
+ public function serialize():string{
+ return serialize($this);
+ }
+
+ /**
+ * Restores the data (except static/readonly properties) from the given serialized object to the current instance
+ *
+ * @inheritdoc
+ * @see \chillerlan\Settings\SettingsContainerInterface::fromIterable()
+ */
+ public function unserialize(string $data):void{
+ $obj = unserialize($data);
+
+ if($obj === false || !is_object($obj)){
+ throw new InvalidArgumentException('The given serialized string is invalid');
+ }
+
+ $reflection = new ReflectionClass($obj);
+
+ if(!$reflection->isInstance($this)){
+ throw new InvalidArgumentException('The unserialized object does not match the class of this container');
+ }
+
+ $properties = $reflection->getProperties(~(ReflectionProperty::IS_STATIC | ReflectionProperty::IS_READONLY));
+
+ foreach($properties as $reflectionProperty){
+ $this->{$reflectionProperty->name} = $reflectionProperty->getValue($obj);
+ }
+
+ }
+
+ /**
+ * Returns a serialized string representation of the object in its current state (except static/readonly properties)
+ *
+ * @inheritdoc
+ * @see \chillerlan\Settings\SettingsContainerInterface::toArray()
+ */
+ public function __serialize():array{
+
+ $properties = (new ReflectionClass($this))
+ ->getProperties(~(ReflectionProperty::IS_STATIC | ReflectionProperty::IS_READONLY))
+ ;
+
+ $data = [];
+
+ foreach($properties as $reflectionProperty){
+ $data[$reflectionProperty->name] = $reflectionProperty->getValue($this);
+ }
+
+ return $data;
+ }
+
+ /**
+ * Restores the data from the given array to the current instance
+ *
+ * @inheritdoc
+ * @see \chillerlan\Settings\SettingsContainerInterface::fromIterable()
+ *
+ * @param array<string, mixed> $data
+ */
+ public function __unserialize(array $data):void{
+
+ foreach($data as $key => $value){
+ $this->{$key} = $value;
+ }
+
+ }
+
}
diff --git a/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php b/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php
index ddacccd29..6f3cc1a4d 100644
--- a/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php
+++ b/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php
@@ -7,30 +7,28 @@
* @copyright 2018 Smiley
* @license MIT
*/
+declare(strict_types=1);
namespace chillerlan\Settings;
-use JsonSerializable;
+use JsonSerializable, Serializable;
/**
* a generic container with magic getter and setter
*/
-interface SettingsContainerInterface extends JsonSerializable{
+interface SettingsContainerInterface extends JsonSerializable, Serializable{
/**
* Retrieve the value of $property
*
* @return mixed|null
*/
- public function __get(string $property);
+ public function __get(string $property):mixed;
/**
* Set $property to $value while avoiding private and non-existing properties
- *
- * @param string $property
- * @param mixed $value
*/
- public function __set(string $property, $value):void;
+ public function __set(string $property, mixed $value):void;
/**
* Checks if $property is set (aka. not null), excluding private properties
@@ -43,32 +41,46 @@ interface SettingsContainerInterface extends JsonSerializable{
public function __unset(string $property):void;
/**
- * @see SettingsContainerInterface::toJSON()
+ * @see \chillerlan\Settings\SettingsContainerInterface::toJSON()
*/
public function __toString():string;
/**
* Returns an array representation of the settings object
+ *
+ * The values will be run through the magic __get(), which may also call custom getters.
+ *
+ * @return array<string, mixed>
*/
public function toArray():array;
/**
* Sets properties from a given iterable
+ *
+ * The values will be run through the magic __set(), which may also call custom setters.
+ *
+ * @phpstan-param array<string, mixed> $properties
*/
- public function fromIterable(iterable $properties):SettingsContainerInterface;
+ public function fromIterable(iterable $properties):static;
/**
* Returns a JSON representation of the settings object
+ *
* @see \json_encode()
+ * @see \chillerlan\Settings\SettingsContainerInterface::toArray()
+ *
+ * @throws \JsonException
*/
- public function toJSON(int $jsonOptions = null):string;
+ public function toJSON(int|null $jsonOptions = null):string;
/**
* Sets properties from a given JSON string
*
+ * @see \chillerlan\Settings\SettingsContainerInterface::fromIterable()
+ *
* @throws \Exception
* @throws \JsonException
*/
- public function fromJSON(string $json):SettingsContainerInterface;
+ public function fromJSON(string $json):static;
}
diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php
index 51e734a77..07b32ed6e 100644
--- a/vendor/composer/InstalledVersions.php
+++ b/vendor/composer/InstalledVersions.php
@@ -322,6 +322,7 @@ class InstalledVersions
}
$installed = array();
+ $copiedLocalDir = false;
if (self::$canGetVendors) {
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
@@ -330,9 +331,11 @@ class InstalledVersions
} elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
- $installed[] = self::$installedByVendor[$vendorDir] = $required;
- if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
- self::$installed = $installed[count($installed) - 1];
+ self::$installedByVendor[$vendorDir] = $required;
+ $installed[] = $required;
+ if (strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
+ self::$installed = $required;
+ $copiedLocalDir = true;
}
}
}
@@ -350,7 +353,7 @@ class InstalledVersions
}
}
- if (self::$installed !== array()) {
+ if (self::$installed !== array() && !$copiedLocalDir) {
$installed[] = self::$installed;
}
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 69ec2d8ca..06748feea 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -21,7 +21,6 @@ return array(
'Brick\\Math\\Internal\\Calculator\\GmpCalculator' => $vendorDir . '/brick/math/src/Internal/Calculator/GmpCalculator.php',
'Brick\\Math\\Internal\\Calculator\\NativeCalculator' => $vendorDir . '/brick/math/src/Internal/Calculator/NativeCalculator.php',
'Brick\\Math\\RoundingMode' => $vendorDir . '/brick/math/src/RoundingMode.php',
- 'CURLStringFile' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php',
'CommerceGuys\\Intl\\Calculator' => $vendorDir . '/commerceguys/intl/src/Calculator.php',
'CommerceGuys\\Intl\\Currency\\Currency' => $vendorDir . '/commerceguys/intl/src/Currency/Currency.php',
'CommerceGuys\\Intl\\Currency\\CurrencyRepository' => $vendorDir . '/commerceguys/intl/src/Currency/CurrencyRepository.php',
@@ -67,6 +66,7 @@ return array(
'HTMLPurifier_AttrDef_CSS_Multiple' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Multiple.php',
'HTMLPurifier_AttrDef_CSS_Number' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Number.php',
'HTMLPurifier_AttrDef_CSS_Percentage' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Percentage.php',
+ 'HTMLPurifier_AttrDef_CSS_Ratio' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ratio.php',
'HTMLPurifier_AttrDef_CSS_TextDecoration' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php',
'HTMLPurifier_AttrDef_CSS_URI' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/URI.php',
'HTMLPurifier_AttrDef_Clone' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Clone.php',
@@ -395,6 +395,7 @@ return array(
'OTPHP\\FactoryInterface' => $vendorDir . '/spomky-labs/otphp/src/FactoryInterface.php',
'OTPHP\\HOTP' => $vendorDir . '/spomky-labs/otphp/src/HOTP.php',
'OTPHP\\HOTPInterface' => $vendorDir . '/spomky-labs/otphp/src/HOTPInterface.php',
+ 'OTPHP\\InternalClock' => $vendorDir . '/spomky-labs/otphp/src/InternalClock.php',
'OTPHP\\OTP' => $vendorDir . '/spomky-labs/otphp/src/OTP.php',
'OTPHP\\OTPInterface' => $vendorDir . '/spomky-labs/otphp/src/OTPInterface.php',
'OTPHP\\ParameterTrait' => $vendorDir . '/spomky-labs/otphp/src/ParameterTrait.php',
@@ -412,6 +413,7 @@ return array(
'ParagonIE\\ConstantTime\\Encoding' => $vendorDir . '/paragonie/constant_time_encoding/src/Encoding.php',
'ParagonIE\\ConstantTime\\Hex' => $vendorDir . '/paragonie/constant_time_encoding/src/Hex.php',
'ParagonIE\\ConstantTime\\RFC4648' => $vendorDir . '/paragonie/constant_time_encoding/src/RFC4648.php',
+ 'Psr\\Clock\\ClockInterface' => $vendorDir . '/psr/clock/src/ClockInterface.php',
'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/src/AbstractLogger.php',
'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/src/InvalidArgumentException.php',
'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/src/LogLevel.php',
@@ -428,13 +430,13 @@ return array(
'Ramsey\\Collection\\CollectionInterface' => $vendorDir . '/ramsey/collection/src/CollectionInterface.php',
'Ramsey\\Collection\\DoubleEndedQueue' => $vendorDir . '/ramsey/collection/src/DoubleEndedQueue.php',
'Ramsey\\Collection\\DoubleEndedQueueInterface' => $vendorDir . '/ramsey/collection/src/DoubleEndedQueueInterface.php',
+ 'Ramsey\\Collection\\Exception\\CollectionException' => $vendorDir . '/ramsey/collection/src/Exception/CollectionException.php',
'Ramsey\\Collection\\Exception\\CollectionMismatchException' => $vendorDir . '/ramsey/collection/src/Exception/CollectionMismatchException.php',
'Ramsey\\Collection\\Exception\\InvalidArgumentException' => $vendorDir . '/ramsey/collection/src/Exception/InvalidArgumentException.php',
- 'Ramsey\\Collection\\Exception\\InvalidSortOrderException' => $vendorDir . '/ramsey/collection/src/Exception/InvalidSortOrderException.php',
+ 'Ramsey\\Collection\\Exception\\InvalidPropertyOrMethod' => $vendorDir . '/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php',
'Ramsey\\Collection\\Exception\\NoSuchElementException' => $vendorDir . '/ramsey/collection/src/Exception/NoSuchElementException.php',
'Ramsey\\Collection\\Exception\\OutOfBoundsException' => $vendorDir . '/ramsey/collection/src/Exception/OutOfBoundsException.php',
'Ramsey\\Collection\\Exception\\UnsupportedOperationException' => $vendorDir . '/ramsey/collection/src/Exception/UnsupportedOperationException.php',
- 'Ramsey\\Collection\\Exception\\ValueExtractionException' => $vendorDir . '/ramsey/collection/src/Exception/ValueExtractionException.php',
'Ramsey\\Collection\\GenericArray' => $vendorDir . '/ramsey/collection/src/GenericArray.php',
'Ramsey\\Collection\\Map\\AbstractMap' => $vendorDir . '/ramsey/collection/src/Map/AbstractMap.php',
'Ramsey\\Collection\\Map\\AbstractTypedMap' => $vendorDir . '/ramsey/collection/src/Map/AbstractTypedMap.php',
@@ -446,6 +448,7 @@ return array(
'Ramsey\\Collection\\Queue' => $vendorDir . '/ramsey/collection/src/Queue.php',
'Ramsey\\Collection\\QueueInterface' => $vendorDir . '/ramsey/collection/src/QueueInterface.php',
'Ramsey\\Collection\\Set' => $vendorDir . '/ramsey/collection/src/Set.php',
+ 'Ramsey\\Collection\\Sort' => $vendorDir . '/ramsey/collection/src/Sort.php',
'Ramsey\\Collection\\Tool\\TypeTrait' => $vendorDir . '/ramsey/collection/src/Tool/TypeTrait.php',
'Ramsey\\Collection\\Tool\\ValueExtractorTrait' => $vendorDir . '/ramsey/collection/src/Tool/ValueExtractorTrait.php',
'Ramsey\\Collection\\Tool\\ValueToStringTrait' => $vendorDir . '/ramsey/collection/src/Tool/ValueToStringTrait.php',
@@ -561,7 +564,6 @@ return array(
'Ramsey\\Uuid\\UuidInterface' => $vendorDir . '/ramsey/uuid/src/UuidInterface.php',
'Ramsey\\Uuid\\Validator\\GenericValidator' => $vendorDir . '/ramsey/uuid/src/Validator/GenericValidator.php',
'Ramsey\\Uuid\\Validator\\ValidatorInterface' => $vendorDir . '/ramsey/uuid/src/Validator/ValidatorInterface.php',
- 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php',
'Sabre\\CalDAV\\Backend\\AbstractBackend' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php',
'Sabre\\CalDAV\\Backend\\BackendInterface' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/BackendInterface.php',
'Sabre\\CalDAV\\Backend\\NotificationSupport' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php',
@@ -1038,173 +1040,168 @@ return array(
'SimplePie_Source' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Source.php',
'SimplePie_XML_Declaration_Parser' => $vendorDir . '/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php',
'SimplePie_gzdecode' => $vendorDir . '/simplepie/simplepie/library/SimplePie/gzdecode.php',
- 'Smarty' => $vendorDir . '/smarty/smarty/libs/Smarty.class.php',
- 'SmartyCompilerException' => $vendorDir . '/smarty/smarty/libs/sysplugins/smartycompilerexception.php',
- 'SmartyException' => $vendorDir . '/smarty/smarty/libs/sysplugins/smartyexception.php',
- 'Smarty_Autoloader' => $vendorDir . '/smarty/smarty/libs/Autoloader.php',
- 'Smarty_CacheResource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_cacheresource.php',
- 'Smarty_CacheResource_Custom' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php',
- 'Smarty_CacheResource_KeyValueStore' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php',
- 'Smarty_Data' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_data.php',
- 'Smarty_Internal_Block' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_block.php',
- 'Smarty_Internal_CacheResource_File' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php',
- 'Smarty_Internal_CompileBase' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php',
- 'Smarty_Internal_Compile_Append' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php',
- 'Smarty_Internal_Compile_Assign' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php',
- 'Smarty_Internal_Compile_Block' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php',
- 'Smarty_Internal_Compile_Block_Child' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php',
- 'Smarty_Internal_Compile_Block_Parent' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php',
- 'Smarty_Internal_Compile_Blockclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php',
- 'Smarty_Internal_Compile_Break' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php',
- 'Smarty_Internal_Compile_Call' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php',
- 'Smarty_Internal_Compile_Capture' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php',
- 'Smarty_Internal_Compile_CaptureClose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php',
- 'Smarty_Internal_Compile_Child' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php',
- 'Smarty_Internal_Compile_Config_Load' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php',
- 'Smarty_Internal_Compile_Continue' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php',
- 'Smarty_Internal_Compile_Debug' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php',
- 'Smarty_Internal_Compile_Else' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Elseif' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Eval' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php',
- 'Smarty_Internal_Compile_Extends' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php',
- 'Smarty_Internal_Compile_For' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Forclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Foreach' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Foreachclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Foreachelse' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Forelse' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Function' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php',
- 'Smarty_Internal_Compile_Functionclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php',
- 'Smarty_Internal_Compile_If' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Ifclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Include' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php',
- 'Smarty_Internal_Compile_Insert' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php',
- 'Smarty_Internal_Compile_Ldelim' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php',
- 'Smarty_Internal_Compile_Make_Nocache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php',
- 'Smarty_Internal_Compile_Nocache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php',
- 'Smarty_Internal_Compile_Nocacheclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php',
- 'Smarty_Internal_Compile_Parent' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php',
- 'Smarty_Internal_Compile_Private_Block_Plugin' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php',
- 'Smarty_Internal_Compile_Private_ForeachSection' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php',
- 'Smarty_Internal_Compile_Private_Function_Plugin' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php',
- 'Smarty_Internal_Compile_Private_Modifier' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php',
- 'Smarty_Internal_Compile_Private_Object_Block_Function' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php',
- 'Smarty_Internal_Compile_Private_Object_Function' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php',
- 'Smarty_Internal_Compile_Private_Print_Expression' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php',
- 'Smarty_Internal_Compile_Private_Registered_Block' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php',
- 'Smarty_Internal_Compile_Private_Registered_Function' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php',
- 'Smarty_Internal_Compile_Private_Special_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php',
- 'Smarty_Internal_Compile_Rdelim' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php',
- 'Smarty_Internal_Compile_Section' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Sectionclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Sectionelse' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Setfilter' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php',
- 'Smarty_Internal_Compile_Setfilterclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php',
- 'Smarty_Internal_Compile_Shared_Inheritance' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php',
- 'Smarty_Internal_Compile_While' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php',
- 'Smarty_Internal_Compile_Whileclose' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php',
- 'Smarty_Internal_Config_File_Compiler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php',
- 'Smarty_Internal_Configfilelexer' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php',
- 'Smarty_Internal_Configfileparser' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
- 'Smarty_Internal_Data' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_data.php',
- 'Smarty_Internal_Debug' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_debug.php',
- 'Smarty_Internal_ErrorHandler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php',
- 'Smarty_Internal_Extension_Handler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php',
- 'Smarty_Internal_Method_AddAutoloadFilters' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php',
- 'Smarty_Internal_Method_AddDefaultModifiers' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php',
- 'Smarty_Internal_Method_Append' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php',
- 'Smarty_Internal_Method_AppendByRef' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php',
- 'Smarty_Internal_Method_AssignByRef' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php',
- 'Smarty_Internal_Method_AssignGlobal' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php',
- 'Smarty_Internal_Method_ClearAllAssign' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php',
- 'Smarty_Internal_Method_ClearAllCache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php',
- 'Smarty_Internal_Method_ClearAssign' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php',
- 'Smarty_Internal_Method_ClearCache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php',
- 'Smarty_Internal_Method_ClearCompiledTemplate' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php',
- 'Smarty_Internal_Method_ClearConfig' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php',
- 'Smarty_Internal_Method_CompileAllConfig' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php',
- 'Smarty_Internal_Method_CompileAllTemplates' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php',
- 'Smarty_Internal_Method_ConfigLoad' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php',
- 'Smarty_Internal_Method_CreateData' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php',
- 'Smarty_Internal_Method_GetAutoloadFilters' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php',
- 'Smarty_Internal_Method_GetConfigVariable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php',
- 'Smarty_Internal_Method_GetConfigVars' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php',
- 'Smarty_Internal_Method_GetDebugTemplate' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php',
- 'Smarty_Internal_Method_GetDefaultModifiers' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php',
- 'Smarty_Internal_Method_GetGlobal' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php',
- 'Smarty_Internal_Method_GetRegisteredObject' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php',
- 'Smarty_Internal_Method_GetStreamVariable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php',
- 'Smarty_Internal_Method_GetTags' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php',
- 'Smarty_Internal_Method_GetTemplateVars' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php',
- 'Smarty_Internal_Method_Literals' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php',
- 'Smarty_Internal_Method_LoadFilter' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php',
- 'Smarty_Internal_Method_LoadPlugin' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php',
- 'Smarty_Internal_Method_MustCompile' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php',
- 'Smarty_Internal_Method_RegisterCacheResource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php',
- 'Smarty_Internal_Method_RegisterClass' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php',
- 'Smarty_Internal_Method_RegisterDefaultConfigHandler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php',
- 'Smarty_Internal_Method_RegisterDefaultPluginHandler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php',
- 'Smarty_Internal_Method_RegisterDefaultTemplateHandler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php',
- 'Smarty_Internal_Method_RegisterFilter' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php',
- 'Smarty_Internal_Method_RegisterObject' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php',
- 'Smarty_Internal_Method_RegisterPlugin' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php',
- 'Smarty_Internal_Method_RegisterResource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php',
- 'Smarty_Internal_Method_SetAutoloadFilters' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php',
- 'Smarty_Internal_Method_SetDebugTemplate' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php',
- 'Smarty_Internal_Method_SetDefaultModifiers' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php',
- 'Smarty_Internal_Method_UnloadFilter' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php',
- 'Smarty_Internal_Method_UnregisterCacheResource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php',
- 'Smarty_Internal_Method_UnregisterFilter' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php',
- 'Smarty_Internal_Method_UnregisterObject' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php',
- 'Smarty_Internal_Method_UnregisterPlugin' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php',
- 'Smarty_Internal_Method_UnregisterResource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php',
- 'Smarty_Internal_Nocache_Insert' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php',
- 'Smarty_Internal_ParseTree' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php',
- 'Smarty_Internal_ParseTree_Code' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php',
- 'Smarty_Internal_ParseTree_Dq' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php',
- 'Smarty_Internal_ParseTree_DqContent' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php',
- 'Smarty_Internal_ParseTree_Tag' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php',
- 'Smarty_Internal_ParseTree_Template' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php',
- 'Smarty_Internal_ParseTree_Text' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php',
- 'Smarty_Internal_Resource_Eval' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php',
- 'Smarty_Internal_Resource_Extends' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php',
- 'Smarty_Internal_Resource_File' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php',
- 'Smarty_Internal_Resource_Php' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php',
- 'Smarty_Internal_Resource_Stream' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php',
- 'Smarty_Internal_Resource_String' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php',
- 'Smarty_Internal_Runtime_CacheModify' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php',
- 'Smarty_Internal_Runtime_CacheResourceFile' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php',
- 'Smarty_Internal_Runtime_Capture' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php',
- 'Smarty_Internal_Runtime_CodeFrame' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php',
- 'Smarty_Internal_Runtime_FilterHandler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php',
- 'Smarty_Internal_Runtime_Foreach' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php',
- 'Smarty_Internal_Runtime_GetIncludePath' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php',
- 'Smarty_Internal_Runtime_Inheritance' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php',
- 'Smarty_Internal_Runtime_Make_Nocache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php',
- 'Smarty_Internal_Runtime_TplFunction' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php',
- 'Smarty_Internal_Runtime_UpdateCache' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php',
- 'Smarty_Internal_Runtime_UpdateScope' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php',
- 'Smarty_Internal_Runtime_WriteFile' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php',
- 'Smarty_Internal_SmartyTemplateCompiler' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php',
- 'Smarty_Internal_Template' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_template.php',
- 'Smarty_Internal_TemplateBase' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php',
- 'Smarty_Internal_TemplateCompilerBase' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php',
- 'Smarty_Internal_Templatelexer' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php',
- 'Smarty_Internal_Templateparser' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
- 'Smarty_Internal_TestInstall' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php',
- 'Smarty_Internal_Undefined' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php',
- 'Smarty_Resource' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_resource.php',
- 'Smarty_Resource_Custom' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_resource_custom.php',
- 'Smarty_Resource_Recompiled' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php',
- 'Smarty_Resource_Uncompiled' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php',
- 'Smarty_Security' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_security.php',
- 'Smarty_Template_Cached' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_cached.php',
- 'Smarty_Template_Compiled' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_compiled.php',
- 'Smarty_Template_Config' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_config.php',
- 'Smarty_Template_Resource_Base' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php',
- 'Smarty_Template_Source' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_source.php',
- 'Smarty_Undefined_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php',
- 'Smarty_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_variable.php',
+ 'Smarty\\BlockHandler\\Base' => $vendorDir . '/smarty/smarty/src/BlockHandler/Base.php',
+ 'Smarty\\BlockHandler\\BlockHandlerInterface' => $vendorDir . '/smarty/smarty/src/BlockHandler/BlockHandlerInterface.php',
+ 'Smarty\\BlockHandler\\BlockPluginWrapper' => $vendorDir . '/smarty/smarty/src/BlockHandler/BlockPluginWrapper.php',
+ 'Smarty\\BlockHandler\\TextFormat' => $vendorDir . '/smarty/smarty/src/BlockHandler/TextFormat.php',
+ 'Smarty\\Cacheresource\\Base' => $vendorDir . '/smarty/smarty/src/Cacheresource/Base.php',
+ 'Smarty\\Cacheresource\\Custom' => $vendorDir . '/smarty/smarty/src/Cacheresource/Custom.php',
+ 'Smarty\\Cacheresource\\File' => $vendorDir . '/smarty/smarty/src/Cacheresource/File.php',
+ 'Smarty\\Cacheresource\\KeyValueStore' => $vendorDir . '/smarty/smarty/src/Cacheresource/KeyValueStore.php',
+ 'Smarty\\Compile\\Base' => $vendorDir . '/smarty/smarty/src/Compile/Base.php',
+ 'Smarty\\Compile\\BlockCompiler' => $vendorDir . '/smarty/smarty/src/Compile/BlockCompiler.php',
+ 'Smarty\\Compile\\CompilerInterface' => $vendorDir . '/smarty/smarty/src/Compile/CompilerInterface.php',
+ 'Smarty\\Compile\\DefaultHandlerBlockCompiler' => $vendorDir . '/smarty/smarty/src/Compile/DefaultHandlerBlockCompiler.php',
+ 'Smarty\\Compile\\DefaultHandlerFunctionCallCompiler' => $vendorDir . '/smarty/smarty/src/Compile/DefaultHandlerFunctionCallCompiler.php',
+ 'Smarty\\Compile\\FunctionCallCompiler' => $vendorDir . '/smarty/smarty/src/Compile/FunctionCallCompiler.php',
+ 'Smarty\\Compile\\ModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/ModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\BCPluginWrapper' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/BCPluginWrapper.php',
+ 'Smarty\\Compile\\Modifier\\Base' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/Base.php',
+ 'Smarty\\Compile\\Modifier\\CatModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/CatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountCharactersModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/CountCharactersModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountParagraphsModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/CountParagraphsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountSentencesModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/CountSentencesModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountWordsModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/CountWordsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\DefaultModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/DefaultModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\EmptyModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/EmptyModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\EscapeModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/EscapeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\FromCharsetModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/FromCharsetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IndentModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/IndentModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IsArrayModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/IsArrayModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IssetModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/IssetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\JsonEncodeModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/JsonEncodeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\LowerModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/LowerModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\ModifierCompilerInterface' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/ModifierCompilerInterface.php',
+ 'Smarty\\Compile\\Modifier\\Nl2brModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/Nl2brModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\NoPrintModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/NoPrintModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\RawModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/RawModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\RoundModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/RoundModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StrRepeatModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/StrRepeatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StringFormatModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/StringFormatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StripModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/StripModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StripTagsModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/StripTagsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StrlenModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/StrlenModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\SubstrModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/SubstrModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\ToCharsetModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/ToCharsetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\UnescapeModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/UnescapeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\UpperModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/UpperModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\WordWrapModifierCompiler' => $vendorDir . '/smarty/smarty/src/Compile/Modifier/WordWrapModifierCompiler.php',
+ 'Smarty\\Compile\\ObjectMethodBlockCompiler' => $vendorDir . '/smarty/smarty/src/Compile/ObjectMethodBlockCompiler.php',
+ 'Smarty\\Compile\\ObjectMethodCallCompiler' => $vendorDir . '/smarty/smarty/src/Compile/ObjectMethodCallCompiler.php',
+ 'Smarty\\Compile\\PrintExpressionCompiler' => $vendorDir . '/smarty/smarty/src/Compile/PrintExpressionCompiler.php',
+ 'Smarty\\Compile\\SpecialVariableCompiler' => $vendorDir . '/smarty/smarty/src/Compile/SpecialVariableCompiler.php',
+ 'Smarty\\Compile\\Tag\\Append' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Append.php',
+ 'Smarty\\Compile\\Tag\\Assign' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Assign.php',
+ 'Smarty\\Compile\\Tag\\BCPluginWrapper' => $vendorDir . '/smarty/smarty/src/Compile/Tag/BCPluginWrapper.php',
+ 'Smarty\\Compile\\Tag\\Block' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Block.php',
+ 'Smarty\\Compile\\Tag\\BlockClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/BlockClose.php',
+ 'Smarty\\Compile\\Tag\\BreakTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/BreakTag.php',
+ 'Smarty\\Compile\\Tag\\Call' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Call.php',
+ 'Smarty\\Compile\\Tag\\Capture' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Capture.php',
+ 'Smarty\\Compile\\Tag\\CaptureClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/CaptureClose.php',
+ 'Smarty\\Compile\\Tag\\ConfigLoad' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ConfigLoad.php',
+ 'Smarty\\Compile\\Tag\\ContinueTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ContinueTag.php',
+ 'Smarty\\Compile\\Tag\\Debug' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Debug.php',
+ 'Smarty\\Compile\\Tag\\ElseIfTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ElseIfTag.php',
+ 'Smarty\\Compile\\Tag\\ElseTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ElseTag.php',
+ 'Smarty\\Compile\\Tag\\EvalTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/EvalTag.php',
+ 'Smarty\\Compile\\Tag\\ExtendsTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ExtendsTag.php',
+ 'Smarty\\Compile\\Tag\\ForClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForClose.php',
+ 'Smarty\\Compile\\Tag\\ForElse' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForElse.php',
+ 'Smarty\\Compile\\Tag\\ForTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForTag.php',
+ 'Smarty\\Compile\\Tag\\ForeachClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForeachClose.php',
+ 'Smarty\\Compile\\Tag\\ForeachElse' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForeachElse.php',
+ 'Smarty\\Compile\\Tag\\ForeachSection' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForeachSection.php',
+ 'Smarty\\Compile\\Tag\\ForeachTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/ForeachTag.php',
+ 'Smarty\\Compile\\Tag\\FunctionClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/FunctionClose.php',
+ 'Smarty\\Compile\\Tag\\FunctionTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/FunctionTag.php',
+ 'Smarty\\Compile\\Tag\\IfClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/IfClose.php',
+ 'Smarty\\Compile\\Tag\\IfTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/IfTag.php',
+ 'Smarty\\Compile\\Tag\\IncludeTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/IncludeTag.php',
+ 'Smarty\\Compile\\Tag\\Inheritance' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Inheritance.php',
+ 'Smarty\\Compile\\Tag\\Ldelim' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Ldelim.php',
+ 'Smarty\\Compile\\Tag\\Nocache' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Nocache.php',
+ 'Smarty\\Compile\\Tag\\NocacheClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/NocacheClose.php',
+ 'Smarty\\Compile\\Tag\\Rdelim' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Rdelim.php',
+ 'Smarty\\Compile\\Tag\\Section' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Section.php',
+ 'Smarty\\Compile\\Tag\\SectionClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/SectionClose.php',
+ 'Smarty\\Compile\\Tag\\SectionElse' => $vendorDir . '/smarty/smarty/src/Compile/Tag/SectionElse.php',
+ 'Smarty\\Compile\\Tag\\Setfilter' => $vendorDir . '/smarty/smarty/src/Compile/Tag/Setfilter.php',
+ 'Smarty\\Compile\\Tag\\SetfilterClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/SetfilterClose.php',
+ 'Smarty\\Compile\\Tag\\WhileClose' => $vendorDir . '/smarty/smarty/src/Compile/Tag/WhileClose.php',
+ 'Smarty\\Compile\\Tag\\WhileTag' => $vendorDir . '/smarty/smarty/src/Compile/Tag/WhileTag.php',
+ 'Smarty\\CompilerException' => $vendorDir . '/smarty/smarty/src/CompilerException.php',
+ 'Smarty\\Compiler\\BaseCompiler' => $vendorDir . '/smarty/smarty/src/Compiler/BaseCompiler.php',
+ 'Smarty\\Compiler\\CodeFrame' => $vendorDir . '/smarty/smarty/src/Compiler/CodeFrame.php',
+ 'Smarty\\Compiler\\Configfile' => $vendorDir . '/smarty/smarty/src/Compiler/Configfile.php',
+ 'Smarty\\Compiler\\Template' => $vendorDir . '/smarty/smarty/src/Compiler/Template.php',
+ 'Smarty\\Data' => $vendorDir . '/smarty/smarty/src/Data.php',
+ 'Smarty\\Debug' => $vendorDir . '/smarty/smarty/src/Debug.php',
+ 'Smarty\\ErrorHandler' => $vendorDir . '/smarty/smarty/src/ErrorHandler.php',
+ 'Smarty\\Exception' => $vendorDir . '/smarty/smarty/src/Exception.php',
+ 'Smarty\\Extension\\BCPluginsAdapter' => $vendorDir . '/smarty/smarty/src/Extension/BCPluginsAdapter.php',
+ 'Smarty\\Extension\\Base' => $vendorDir . '/smarty/smarty/src/Extension/Base.php',
+ 'Smarty\\Extension\\CallbackWrapper' => $vendorDir . '/smarty/smarty/src/Extension/CallbackWrapper.php',
+ 'Smarty\\Extension\\CoreExtension' => $vendorDir . '/smarty/smarty/src/Extension/CoreExtension.php',
+ 'Smarty\\Extension\\DefaultExtension' => $vendorDir . '/smarty/smarty/src/Extension/DefaultExtension.php',
+ 'Smarty\\Extension\\ExtensionInterface' => $vendorDir . '/smarty/smarty/src/Extension/ExtensionInterface.php',
+ 'Smarty\\Filter\\FilterInterface' => $vendorDir . '/smarty/smarty/src/Filter/FilterInterface.php',
+ 'Smarty\\Filter\\FilterPluginWrapper' => $vendorDir . '/smarty/smarty/src/Filter/FilterPluginWrapper.php',
+ 'Smarty\\Filter\\Output\\TrimWhitespace' => $vendorDir . '/smarty/smarty/src/Filter/Output/TrimWhitespace.php',
+ 'Smarty\\FunctionHandler\\BCPluginWrapper' => $vendorDir . '/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php',
+ 'Smarty\\FunctionHandler\\Base' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Base.php',
+ 'Smarty\\FunctionHandler\\Count' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Count.php',
+ 'Smarty\\FunctionHandler\\Counter' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Counter.php',
+ 'Smarty\\FunctionHandler\\Cycle' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Cycle.php',
+ 'Smarty\\FunctionHandler\\Fetch' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Fetch.php',
+ 'Smarty\\FunctionHandler\\FunctionHandlerInterface' => $vendorDir . '/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php',
+ 'Smarty\\FunctionHandler\\HtmlBase' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlBase.php',
+ 'Smarty\\FunctionHandler\\HtmlCheckboxes' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php',
+ 'Smarty\\FunctionHandler\\HtmlImage' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlImage.php',
+ 'Smarty\\FunctionHandler\\HtmlOptions' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlOptions.php',
+ 'Smarty\\FunctionHandler\\HtmlRadios' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlRadios.php',
+ 'Smarty\\FunctionHandler\\HtmlSelectDate' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php',
+ 'Smarty\\FunctionHandler\\HtmlSelectTime' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php',
+ 'Smarty\\FunctionHandler\\HtmlTable' => $vendorDir . '/smarty/smarty/src/FunctionHandler/HtmlTable.php',
+ 'Smarty\\FunctionHandler\\Mailto' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Mailto.php',
+ 'Smarty\\FunctionHandler\\Math' => $vendorDir . '/smarty/smarty/src/FunctionHandler/Math.php',
+ 'Smarty\\Lexer\\ConfigfileLexer' => $vendorDir . '/smarty/smarty/src/Lexer/ConfigfileLexer.php',
+ 'Smarty\\Lexer\\TemplateLexer' => $vendorDir . '/smarty/smarty/src/Lexer/TemplateLexer.php',
+ 'Smarty\\ParseTree\\Base' => $vendorDir . '/smarty/smarty/src/ParseTree/Base.php',
+ 'Smarty\\ParseTree\\Code' => $vendorDir . '/smarty/smarty/src/ParseTree/Code.php',
+ 'Smarty\\ParseTree\\Dq' => $vendorDir . '/smarty/smarty/src/ParseTree/Dq.php',
+ 'Smarty\\ParseTree\\DqContent' => $vendorDir . '/smarty/smarty/src/ParseTree/DqContent.php',
+ 'Smarty\\ParseTree\\Tag' => $vendorDir . '/smarty/smarty/src/ParseTree/Tag.php',
+ 'Smarty\\ParseTree\\Template' => $vendorDir . '/smarty/smarty/src/ParseTree/Template.php',
+ 'Smarty\\ParseTree\\Text' => $vendorDir . '/smarty/smarty/src/ParseTree/Text.php',
+ 'Smarty\\Parser\\ConfigfileParser' => $vendorDir . '/smarty/smarty/src/Parser/ConfigfileParser.php',
+ 'Smarty\\Parser\\TemplateParser' => $vendorDir . '/smarty/smarty/src/Parser/TemplateParser.php',
+ 'Smarty\\Resource\\BasePlugin' => $vendorDir . '/smarty/smarty/src/Resource/BasePlugin.php',
+ 'Smarty\\Resource\\CustomPlugin' => $vendorDir . '/smarty/smarty/src/Resource/CustomPlugin.php',
+ 'Smarty\\Resource\\ExtendsPlugin' => $vendorDir . '/smarty/smarty/src/Resource/ExtendsPlugin.php',
+ 'Smarty\\Resource\\FilePlugin' => $vendorDir . '/smarty/smarty/src/Resource/FilePlugin.php',
+ 'Smarty\\Resource\\RecompiledPlugin' => $vendorDir . '/smarty/smarty/src/Resource/RecompiledPlugin.php',
+ 'Smarty\\Resource\\StreamPlugin' => $vendorDir . '/smarty/smarty/src/Resource/StreamPlugin.php',
+ 'Smarty\\Resource\\StringEval' => $vendorDir . '/smarty/smarty/src/Resource/StringEval.php',
+ 'Smarty\\Resource\\StringPlugin' => $vendorDir . '/smarty/smarty/src/Resource/StringPlugin.php',
+ 'Smarty\\Runtime\\Block' => $vendorDir . '/smarty/smarty/src/Runtime/Block.php',
+ 'Smarty\\Runtime\\CaptureRuntime' => $vendorDir . '/smarty/smarty/src/Runtime/CaptureRuntime.php',
+ 'Smarty\\Runtime\\DefaultPluginHandlerRuntime' => $vendorDir . '/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php',
+ 'Smarty\\Runtime\\ForeachRuntime' => $vendorDir . '/smarty/smarty/src/Runtime/ForeachRuntime.php',
+ 'Smarty\\Runtime\\InheritanceRuntime' => $vendorDir . '/smarty/smarty/src/Runtime/InheritanceRuntime.php',
+ 'Smarty\\Runtime\\TplFunctionRuntime' => $vendorDir . '/smarty/smarty/src/Runtime/TplFunctionRuntime.php',
+ 'Smarty\\Security' => $vendorDir . '/smarty/smarty/src/Security.php',
+ 'Smarty\\Smarty' => $vendorDir . '/smarty/smarty/src/Smarty.php',
+ 'Smarty\\Template' => $vendorDir . '/smarty/smarty/src/Template.php',
+ 'Smarty\\TemplateBase' => $vendorDir . '/smarty/smarty/src/TemplateBase.php',
+ 'Smarty\\Template\\Cached' => $vendorDir . '/smarty/smarty/src/Template/Cached.php',
+ 'Smarty\\Template\\Compiled' => $vendorDir . '/smarty/smarty/src/Template/Compiled.php',
+ 'Smarty\\Template\\Config' => $vendorDir . '/smarty/smarty/src/Template/Config.php',
+ 'Smarty\\Template\\GeneratedPhpFile' => $vendorDir . '/smarty/smarty/src/Template/GeneratedPhpFile.php',
+ 'Smarty\\Template\\Source' => $vendorDir . '/smarty/smarty/src/Template/Source.php',
+ 'Smarty\\TestInstall' => $vendorDir . '/smarty/smarty/src/TestInstall.php',
+ 'Smarty\\UndefinedVariable' => $vendorDir . '/smarty/smarty/src/UndefinedVariable.php',
+ 'Smarty\\Variable' => $vendorDir . '/smarty/smarty/src/Variable.php',
'StephenHill\\BCMathService' => $vendorDir . '/stephenhill/base58/src/BCMathService.php',
'StephenHill\\Base58' => $vendorDir . '/stephenhill/base58/src/Base58.php',
'StephenHill\\Benchmarks\\Base16Event' => $vendorDir . '/stephenhill/base58/benchmarks/Base16Event.php',
@@ -1213,9 +1210,7 @@ return array(
'StephenHill\\Benchmarks\\Base64Event' => $vendorDir . '/stephenhill/base58/benchmarks/Base64Event.php',
'StephenHill\\GMPService' => $vendorDir . '/stephenhill/base58/src/GMPService.php',
'StephenHill\\ServiceInterface' => $vendorDir . '/stephenhill/base58/src/ServiceInterface.php',
- 'Symfony\\Polyfill\\Php81\\Php81' => $vendorDir . '/symfony/polyfill-php81/Php81.php',
- 'TPC_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
- 'TP_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
+ 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
'Text_LanguageDetect' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect.php',
'Text_LanguageDetect_Exception' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/Exception.php',
'Text_LanguageDetect_ISO639' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/ISO639.php',
@@ -1226,6 +1221,24 @@ return array(
'Zotlabs\\Access\\PermissionLimits' => $baseDir . '/Zotlabs/Access/PermissionLimits.php',
'Zotlabs\\Access\\PermissionRoles' => $baseDir . '/Zotlabs/Access/PermissionRoles.php',
'Zotlabs\\Access\\Permissions' => $baseDir . '/Zotlabs/Access/Permissions.php',
+ 'Zotlabs\\ActivityStreams\\ASObject' => $baseDir . '/Zotlabs/ActivityStreams/ASObject.php',
+ 'Zotlabs\\ActivityStreams\\Activity' => $baseDir . '/Zotlabs/ActivityStreams/Activity.php',
+ 'Zotlabs\\ActivityStreams\\Actor' => $baseDir . '/Zotlabs/ActivityStreams/Actor.php',
+ 'Zotlabs\\ActivityStreams\\AssertionMethod' => $baseDir . '/Zotlabs/ActivityStreams/AssertionMethod.php',
+ 'Zotlabs\\ActivityStreams\\Collection' => $baseDir . '/Zotlabs/ActivityStreams/Collection.php',
+ 'Zotlabs\\ActivityStreams\\CollectionPage' => $baseDir . '/Zotlabs/ActivityStreams/CollectionPage.php',
+ 'Zotlabs\\ActivityStreams\\IntransitiveActivity' => $baseDir . '/Zotlabs/ActivityStreams/IntransitiveActivity.php',
+ 'Zotlabs\\ActivityStreams\\Link' => $baseDir . '/Zotlabs/ActivityStreams/Link.php',
+ 'Zotlabs\\ActivityStreams\\OrderedCollection' => $baseDir . '/Zotlabs/ActivityStreams/OrderedCollection.php',
+ 'Zotlabs\\ActivityStreams\\OrderedCollectionPage' => $baseDir . '/Zotlabs/ActivityStreams/OrderedCollectionPage.php',
+ 'Zotlabs\\ActivityStreams\\Place' => $baseDir . '/Zotlabs/ActivityStreams/Place.php',
+ 'Zotlabs\\ActivityStreams\\Profile' => $baseDir . '/Zotlabs/ActivityStreams/Profile.php',
+ 'Zotlabs\\ActivityStreams\\PublicKey' => $baseDir . '/Zotlabs/ActivityStreams/PublicKey.php',
+ 'Zotlabs\\ActivityStreams\\Question' => $baseDir . '/Zotlabs/ActivityStreams/Question.php',
+ 'Zotlabs\\ActivityStreams\\Relationship' => $baseDir . '/Zotlabs/ActivityStreams/Relationship.php',
+ 'Zotlabs\\ActivityStreams\\Signature' => $baseDir . '/Zotlabs/ActivityStreams/Signature.php',
+ 'Zotlabs\\ActivityStreams\\Tombstone' => $baseDir . '/Zotlabs/ActivityStreams/Tombstone.php',
+ 'Zotlabs\\ActivityStreams\\UnhandledElementException' => $baseDir . '/Zotlabs/ActivityStreams/UnhandledElementException.php',
'Zotlabs\\Daemon\\Addon' => $baseDir . '/Zotlabs/Daemon/Addon.php',
'Zotlabs\\Daemon\\Cache_embeds' => $baseDir . '/Zotlabs/Daemon/Cache_embeds.php',
'Zotlabs\\Daemon\\Cache_query' => $baseDir . '/Zotlabs/Daemon/Cache_query.php',
@@ -1259,6 +1272,9 @@ return array(
'Zotlabs\\Daemon\\Thumbnail' => $baseDir . '/Zotlabs/Daemon/Thumbnail.php',
'Zotlabs\\Daemon\\Xchan_photo' => $baseDir . '/Zotlabs/Daemon/Xchan_photo.php',
'Zotlabs\\Daemon\\Zotconvo' => $baseDir . '/Zotlabs/Daemon/Zotconvo.php',
+ 'Zotlabs\\Entity\\Account' => $baseDir . '/Zotlabs/Entity/Account.php',
+ 'Zotlabs\\Entity\\Channel' => $baseDir . '/Zotlabs/Entity/Channel.php',
+ 'Zotlabs\\Entity\\Item' => $baseDir . '/Zotlabs/Entity/Item.php',
'Zotlabs\\Extend\\Hook' => $baseDir . '/Zotlabs/Extend/Hook.php',
'Zotlabs\\Extend\\Route' => $baseDir . '/Zotlabs/Extend/Route.php',
'Zotlabs\\Extend\\Widget' => $baseDir . '/Zotlabs/Extend/Widget.php',
@@ -1275,6 +1291,7 @@ return array(
'Zotlabs\\Lib\\ActivityStreams' => $baseDir . '/Zotlabs/Lib/ActivityStreams.php',
'Zotlabs\\Lib\\Api_router' => $baseDir . '/Zotlabs/Lib/Api_router.php',
'Zotlabs\\Lib\\Apps' => $baseDir . '/Zotlabs/Lib/Apps.php',
+ 'Zotlabs\\Lib\\BaseObject' => $baseDir . '/Zotlabs/Lib/BaseObject.php',
'Zotlabs\\Lib\\Cache' => $baseDir . '/Zotlabs/Lib/Cache.php',
'Zotlabs\\Lib\\Chatroom' => $baseDir . '/Zotlabs/Lib/Chatroom.php',
'Zotlabs\\Lib\\Config' => $baseDir . '/Zotlabs/Lib/Config.php',
@@ -1294,6 +1311,7 @@ return array(
'Zotlabs\\Lib\\Libsync' => $baseDir . '/Zotlabs/Lib/Libsync.php',
'Zotlabs\\Lib\\Libzot' => $baseDir . '/Zotlabs/Lib/Libzot.php',
'Zotlabs\\Lib\\Libzotdir' => $baseDir . '/Zotlabs/Lib/Libzotdir.php',
+ 'Zotlabs\\Lib\\Mailer' => $baseDir . '/Zotlabs/Lib/Mailer.php',
'Zotlabs\\Lib\\MarkdownSoap' => $baseDir . '/Zotlabs/Lib/MarkdownSoap.php',
'Zotlabs\\Lib\\MessageFilter' => $baseDir . '/Zotlabs/Lib/MessageFilter.php',
'Zotlabs\\Lib\\Multibase' => $baseDir . '/Zotlabs/Lib/Multibase.php',
@@ -1304,7 +1322,6 @@ return array(
'Zotlabs\\Lib\\QueueWorker' => $baseDir . '/Zotlabs/Lib/QueueWorker.php',
'Zotlabs\\Lib\\SConfig' => $baseDir . '/Zotlabs/Lib/SConfig.php',
'Zotlabs\\Lib\\Share' => $baseDir . '/Zotlabs/Lib/Share.php',
- 'Zotlabs\\Lib\\SuperCurl' => $baseDir . '/Zotlabs/Lib/SuperCurl.php',
'Zotlabs\\Lib\\SvgSanitizer' => $baseDir . '/Zotlabs/Lib/SvgSanitizer.php',
'Zotlabs\\Lib\\System' => $baseDir . '/Zotlabs/Lib/System.php',
'Zotlabs\\Lib\\Techlevels' => $baseDir . '/Zotlabs/Lib/Techlevels.php',
@@ -1352,12 +1369,14 @@ return array(
'Zotlabs\\Module\\Branchtopic' => $baseDir . '/Zotlabs/Module/Branchtopic.php',
'Zotlabs\\Module\\Cal' => $baseDir . '/Zotlabs/Module/Cal.php',
'Zotlabs\\Module\\Cdav' => $baseDir . '/Zotlabs/Module/Cdav.php',
+ 'Zotlabs\\Module\\Ceditor' => $baseDir . '/Zotlabs/Module/Ceditor.php',
'Zotlabs\\Module\\Changeaddr' => $baseDir . '/Zotlabs/Module/Changeaddr.php',
'Zotlabs\\Module\\Channel' => $baseDir . '/Zotlabs/Module/Channel.php',
'Zotlabs\\Module\\Channel_calendar' => $baseDir . '/Zotlabs/Module/Channel_calendar.php',
'Zotlabs\\Module\\Chanview' => $baseDir . '/Zotlabs/Module/Chanview.php',
'Zotlabs\\Module\\Chat' => $baseDir . '/Zotlabs/Module/Chat.php',
'Zotlabs\\Module\\Chatsvc' => $baseDir . '/Zotlabs/Module/Chatsvc.php',
+ 'Zotlabs\\Module\\Cleditor' => $baseDir . '/Zotlabs/Module/Cleditor.php',
'Zotlabs\\Module\\Cloud' => $baseDir . '/Zotlabs/Module/Cloud.php',
'Zotlabs\\Module\\Cloud_tiles' => $baseDir . '/Zotlabs/Module/Cloud_tiles.php',
'Zotlabs\\Module\\Common' => $baseDir . '/Zotlabs/Module/Common.php',
@@ -1551,7 +1570,6 @@ return array(
'Zotlabs\\Storage\\CalDAVClient' => $baseDir . '/Zotlabs/Storage/CalDAVClient.php',
'Zotlabs\\Storage\\Directory' => $baseDir . '/Zotlabs/Storage/Directory.php',
'Zotlabs\\Storage\\File' => $baseDir . '/Zotlabs/Storage/File.php',
- 'Zotlabs\\Storage\\GitRepo' => $baseDir . '/Zotlabs/Storage/GitRepo.php',
'Zotlabs\\Storage\\ZotOauth2Pdo' => $baseDir . '/Zotlabs/Storage/ZotOauth2Pdo.php',
'Zotlabs\\Text\\Tagadelic' => $baseDir . '/Zotlabs/Text/Tagadelic.php',
'Zotlabs\\Thumbs\\Epubthumb' => $baseDir . '/Zotlabs/Thumbs/Epubthumb.php',
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index 65808f1eb..47948e784 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -12,9 +12,11 @@ return array(
'a1cce3d26cc15c00fcd0b3354bd72c88' => $vendorDir . '/sabre/event/lib/Promise/functions.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php',
- '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/functions.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
+ '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
'2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php',
+ 'c15d4a1253e33e055d05e547c61dcb71' => $vendorDir . '/smarty/smarty/src/functions.php',
);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index c2a27512d..f98abef55 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -11,9 +11,10 @@ return array(
'chillerlan\\Settings\\' => array($vendorDir . '/chillerlan/php-settings-container/src'),
'chillerlan\\QRCode\\' => array($vendorDir . '/chillerlan/php-qrcode/src'),
'Zotlabs\\' => array($baseDir . '/Zotlabs'),
- 'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'),
+ 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
'StephenHill\\Benchmarks\\' => array($vendorDir . '/stephenhill/base58/benchmarks'),
'StephenHill\\' => array($vendorDir . '/stephenhill/base58/src'),
+ 'Smarty\\' => array($vendorDir . '/smarty/smarty/src'),
'SimplePie\\' => array($vendorDir . '/simplepie/simplepie/src'),
'ScssPhp\\ScssPhp\\' => array($vendorDir . '/scssphp/scssphp/src'),
'Sabre\\Xml\\' => array($vendorDir . '/sabre/xml/lib'),
@@ -25,6 +26,7 @@ return array(
'Ramsey\\Uuid\\' => array($vendorDir . '/ramsey/uuid/src'),
'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
+ 'Psr\\Clock\\' => array($vendorDir . '/psr/clock/src'),
'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'),
'OTPHP\\' => array($vendorDir . '/spomky-labs/otphp/src'),
'Mmccook\\JsonCanonicalizator\\' => array($vendorDir . '/mmccook/php-json-canonicalization-scheme/src'),
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 1b958f6a8..dc8c50394 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -13,11 +13,13 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'a1cce3d26cc15c00fcd0b3354bd72c88' => __DIR__ . '/..' . '/sabre/event/lib/Promise/functions.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php',
- '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
+ '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
'2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php',
+ 'c15d4a1253e33e055d05e547c61dcb71' => __DIR__ . '/..' . '/smarty/smarty/src/functions.php',
);
public static $prefixLengthsPsr4 = array (
@@ -40,9 +42,10 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
),
'S' =>
array (
- 'Symfony\\Polyfill\\Php81\\' => 23,
+ 'Symfony\\Polyfill\\Mbstring\\' => 26,
'StephenHill\\Benchmarks\\' => 23,
'StephenHill\\' => 12,
+ 'Smarty\\' => 7,
'SimplePie\\' => 10,
'ScssPhp\\ScssPhp\\' => 16,
'Sabre\\Xml\\' => 10,
@@ -60,6 +63,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'P' =>
array (
'Psr\\Log\\' => 8,
+ 'Psr\\Clock\\' => 10,
'ParagonIE\\ConstantTime\\' => 23,
),
'O' =>
@@ -116,9 +120,9 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
array (
0 => __DIR__ . '/../..' . '/Zotlabs',
),
- 'Symfony\\Polyfill\\Php81\\' =>
+ 'Symfony\\Polyfill\\Mbstring\\' =>
array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-php81',
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
),
'StephenHill\\Benchmarks\\' =>
array (
@@ -128,6 +132,10 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
array (
0 => __DIR__ . '/..' . '/stephenhill/base58/src',
),
+ 'Smarty\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/smarty/smarty/src',
+ ),
'SimplePie\\' =>
array (
0 => __DIR__ . '/..' . '/simplepie/simplepie/src',
@@ -172,6 +180,10 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
array (
0 => __DIR__ . '/..' . '/psr/log/src',
),
+ 'Psr\\Clock\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/clock/src',
+ ),
'ParagonIE\\ConstantTime\\' =>
array (
0 => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src',
@@ -268,7 +280,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Brick\\Math\\Internal\\Calculator\\GmpCalculator' => __DIR__ . '/..' . '/brick/math/src/Internal/Calculator/GmpCalculator.php',
'Brick\\Math\\Internal\\Calculator\\NativeCalculator' => __DIR__ . '/..' . '/brick/math/src/Internal/Calculator/NativeCalculator.php',
'Brick\\Math\\RoundingMode' => __DIR__ . '/..' . '/brick/math/src/RoundingMode.php',
- 'CURLStringFile' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php',
'CommerceGuys\\Intl\\Calculator' => __DIR__ . '/..' . '/commerceguys/intl/src/Calculator.php',
'CommerceGuys\\Intl\\Currency\\Currency' => __DIR__ . '/..' . '/commerceguys/intl/src/Currency/Currency.php',
'CommerceGuys\\Intl\\Currency\\CurrencyRepository' => __DIR__ . '/..' . '/commerceguys/intl/src/Currency/CurrencyRepository.php',
@@ -314,6 +325,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'HTMLPurifier_AttrDef_CSS_Multiple' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Multiple.php',
'HTMLPurifier_AttrDef_CSS_Number' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Number.php',
'HTMLPurifier_AttrDef_CSS_Percentage' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Percentage.php',
+ 'HTMLPurifier_AttrDef_CSS_Ratio' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ratio.php',
'HTMLPurifier_AttrDef_CSS_TextDecoration' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php',
'HTMLPurifier_AttrDef_CSS_URI' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/URI.php',
'HTMLPurifier_AttrDef_Clone' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Clone.php',
@@ -642,6 +654,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'OTPHP\\FactoryInterface' => __DIR__ . '/..' . '/spomky-labs/otphp/src/FactoryInterface.php',
'OTPHP\\HOTP' => __DIR__ . '/..' . '/spomky-labs/otphp/src/HOTP.php',
'OTPHP\\HOTPInterface' => __DIR__ . '/..' . '/spomky-labs/otphp/src/HOTPInterface.php',
+ 'OTPHP\\InternalClock' => __DIR__ . '/..' . '/spomky-labs/otphp/src/InternalClock.php',
'OTPHP\\OTP' => __DIR__ . '/..' . '/spomky-labs/otphp/src/OTP.php',
'OTPHP\\OTPInterface' => __DIR__ . '/..' . '/spomky-labs/otphp/src/OTPInterface.php',
'OTPHP\\ParameterTrait' => __DIR__ . '/..' . '/spomky-labs/otphp/src/ParameterTrait.php',
@@ -659,6 +672,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'ParagonIE\\ConstantTime\\Encoding' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/Encoding.php',
'ParagonIE\\ConstantTime\\Hex' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/Hex.php',
'ParagonIE\\ConstantTime\\RFC4648' => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src/RFC4648.php',
+ 'Psr\\Clock\\ClockInterface' => __DIR__ . '/..' . '/psr/clock/src/ClockInterface.php',
'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/src/AbstractLogger.php',
'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/src/InvalidArgumentException.php',
'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/src/LogLevel.php',
@@ -675,13 +689,13 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Ramsey\\Collection\\CollectionInterface' => __DIR__ . '/..' . '/ramsey/collection/src/CollectionInterface.php',
'Ramsey\\Collection\\DoubleEndedQueue' => __DIR__ . '/..' . '/ramsey/collection/src/DoubleEndedQueue.php',
'Ramsey\\Collection\\DoubleEndedQueueInterface' => __DIR__ . '/..' . '/ramsey/collection/src/DoubleEndedQueueInterface.php',
+ 'Ramsey\\Collection\\Exception\\CollectionException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/CollectionException.php',
'Ramsey\\Collection\\Exception\\CollectionMismatchException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/CollectionMismatchException.php',
'Ramsey\\Collection\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/InvalidArgumentException.php',
- 'Ramsey\\Collection\\Exception\\InvalidSortOrderException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/InvalidSortOrderException.php',
+ 'Ramsey\\Collection\\Exception\\InvalidPropertyOrMethod' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php',
'Ramsey\\Collection\\Exception\\NoSuchElementException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/NoSuchElementException.php',
'Ramsey\\Collection\\Exception\\OutOfBoundsException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/OutOfBoundsException.php',
'Ramsey\\Collection\\Exception\\UnsupportedOperationException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/UnsupportedOperationException.php',
- 'Ramsey\\Collection\\Exception\\ValueExtractionException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/ValueExtractionException.php',
'Ramsey\\Collection\\GenericArray' => __DIR__ . '/..' . '/ramsey/collection/src/GenericArray.php',
'Ramsey\\Collection\\Map\\AbstractMap' => __DIR__ . '/..' . '/ramsey/collection/src/Map/AbstractMap.php',
'Ramsey\\Collection\\Map\\AbstractTypedMap' => __DIR__ . '/..' . '/ramsey/collection/src/Map/AbstractTypedMap.php',
@@ -693,6 +707,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Ramsey\\Collection\\Queue' => __DIR__ . '/..' . '/ramsey/collection/src/Queue.php',
'Ramsey\\Collection\\QueueInterface' => __DIR__ . '/..' . '/ramsey/collection/src/QueueInterface.php',
'Ramsey\\Collection\\Set' => __DIR__ . '/..' . '/ramsey/collection/src/Set.php',
+ 'Ramsey\\Collection\\Sort' => __DIR__ . '/..' . '/ramsey/collection/src/Sort.php',
'Ramsey\\Collection\\Tool\\TypeTrait' => __DIR__ . '/..' . '/ramsey/collection/src/Tool/TypeTrait.php',
'Ramsey\\Collection\\Tool\\ValueExtractorTrait' => __DIR__ . '/..' . '/ramsey/collection/src/Tool/ValueExtractorTrait.php',
'Ramsey\\Collection\\Tool\\ValueToStringTrait' => __DIR__ . '/..' . '/ramsey/collection/src/Tool/ValueToStringTrait.php',
@@ -808,7 +823,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Ramsey\\Uuid\\UuidInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/UuidInterface.php',
'Ramsey\\Uuid\\Validator\\GenericValidator' => __DIR__ . '/..' . '/ramsey/uuid/src/Validator/GenericValidator.php',
'Ramsey\\Uuid\\Validator\\ValidatorInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Validator/ValidatorInterface.php',
- 'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php',
'Sabre\\CalDAV\\Backend\\AbstractBackend' => __DIR__ . '/..' . '/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php',
'Sabre\\CalDAV\\Backend\\BackendInterface' => __DIR__ . '/..' . '/sabre/dav/lib/CalDAV/Backend/BackendInterface.php',
'Sabre\\CalDAV\\Backend\\NotificationSupport' => __DIR__ . '/..' . '/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php',
@@ -1285,173 +1299,168 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'SimplePie_Source' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Source.php',
'SimplePie_XML_Declaration_Parser' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php',
'SimplePie_gzdecode' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/gzdecode.php',
- 'Smarty' => __DIR__ . '/..' . '/smarty/smarty/libs/Smarty.class.php',
- 'SmartyCompilerException' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smartycompilerexception.php',
- 'SmartyException' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smartyexception.php',
- 'Smarty_Autoloader' => __DIR__ . '/..' . '/smarty/smarty/libs/Autoloader.php',
- 'Smarty_CacheResource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_cacheresource.php',
- 'Smarty_CacheResource_Custom' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php',
- 'Smarty_CacheResource_KeyValueStore' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php',
- 'Smarty_Data' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_data.php',
- 'Smarty_Internal_Block' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_block.php',
- 'Smarty_Internal_CacheResource_File' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php',
- 'Smarty_Internal_CompileBase' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php',
- 'Smarty_Internal_Compile_Append' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php',
- 'Smarty_Internal_Compile_Assign' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php',
- 'Smarty_Internal_Compile_Block' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php',
- 'Smarty_Internal_Compile_Block_Child' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php',
- 'Smarty_Internal_Compile_Block_Parent' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php',
- 'Smarty_Internal_Compile_Blockclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php',
- 'Smarty_Internal_Compile_Break' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php',
- 'Smarty_Internal_Compile_Call' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php',
- 'Smarty_Internal_Compile_Capture' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php',
- 'Smarty_Internal_Compile_CaptureClose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php',
- 'Smarty_Internal_Compile_Child' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php',
- 'Smarty_Internal_Compile_Config_Load' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php',
- 'Smarty_Internal_Compile_Continue' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php',
- 'Smarty_Internal_Compile_Debug' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php',
- 'Smarty_Internal_Compile_Else' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Elseif' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Eval' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php',
- 'Smarty_Internal_Compile_Extends' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php',
- 'Smarty_Internal_Compile_For' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Forclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Foreach' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Foreachclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Foreachelse' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php',
- 'Smarty_Internal_Compile_Forelse' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php',
- 'Smarty_Internal_Compile_Function' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php',
- 'Smarty_Internal_Compile_Functionclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php',
- 'Smarty_Internal_Compile_If' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Ifclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php',
- 'Smarty_Internal_Compile_Include' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php',
- 'Smarty_Internal_Compile_Insert' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php',
- 'Smarty_Internal_Compile_Ldelim' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php',
- 'Smarty_Internal_Compile_Make_Nocache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php',
- 'Smarty_Internal_Compile_Nocache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php',
- 'Smarty_Internal_Compile_Nocacheclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php',
- 'Smarty_Internal_Compile_Parent' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php',
- 'Smarty_Internal_Compile_Private_Block_Plugin' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php',
- 'Smarty_Internal_Compile_Private_ForeachSection' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php',
- 'Smarty_Internal_Compile_Private_Function_Plugin' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php',
- 'Smarty_Internal_Compile_Private_Modifier' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php',
- 'Smarty_Internal_Compile_Private_Object_Block_Function' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php',
- 'Smarty_Internal_Compile_Private_Object_Function' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php',
- 'Smarty_Internal_Compile_Private_Print_Expression' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php',
- 'Smarty_Internal_Compile_Private_Registered_Block' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php',
- 'Smarty_Internal_Compile_Private_Registered_Function' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php',
- 'Smarty_Internal_Compile_Private_Special_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php',
- 'Smarty_Internal_Compile_Rdelim' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php',
- 'Smarty_Internal_Compile_Section' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Sectionclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Sectionelse' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php',
- 'Smarty_Internal_Compile_Setfilter' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php',
- 'Smarty_Internal_Compile_Setfilterclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php',
- 'Smarty_Internal_Compile_Shared_Inheritance' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php',
- 'Smarty_Internal_Compile_While' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php',
- 'Smarty_Internal_Compile_Whileclose' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php',
- 'Smarty_Internal_Config_File_Compiler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php',
- 'Smarty_Internal_Configfilelexer' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php',
- 'Smarty_Internal_Configfileparser' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
- 'Smarty_Internal_Data' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_data.php',
- 'Smarty_Internal_Debug' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_debug.php',
- 'Smarty_Internal_ErrorHandler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php',
- 'Smarty_Internal_Extension_Handler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php',
- 'Smarty_Internal_Method_AddAutoloadFilters' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php',
- 'Smarty_Internal_Method_AddDefaultModifiers' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php',
- 'Smarty_Internal_Method_Append' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php',
- 'Smarty_Internal_Method_AppendByRef' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php',
- 'Smarty_Internal_Method_AssignByRef' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php',
- 'Smarty_Internal_Method_AssignGlobal' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php',
- 'Smarty_Internal_Method_ClearAllAssign' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php',
- 'Smarty_Internal_Method_ClearAllCache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php',
- 'Smarty_Internal_Method_ClearAssign' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php',
- 'Smarty_Internal_Method_ClearCache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php',
- 'Smarty_Internal_Method_ClearCompiledTemplate' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php',
- 'Smarty_Internal_Method_ClearConfig' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php',
- 'Smarty_Internal_Method_CompileAllConfig' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php',
- 'Smarty_Internal_Method_CompileAllTemplates' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php',
- 'Smarty_Internal_Method_ConfigLoad' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php',
- 'Smarty_Internal_Method_CreateData' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php',
- 'Smarty_Internal_Method_GetAutoloadFilters' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php',
- 'Smarty_Internal_Method_GetConfigVariable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php',
- 'Smarty_Internal_Method_GetConfigVars' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php',
- 'Smarty_Internal_Method_GetDebugTemplate' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php',
- 'Smarty_Internal_Method_GetDefaultModifiers' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php',
- 'Smarty_Internal_Method_GetGlobal' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php',
- 'Smarty_Internal_Method_GetRegisteredObject' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php',
- 'Smarty_Internal_Method_GetStreamVariable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php',
- 'Smarty_Internal_Method_GetTags' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php',
- 'Smarty_Internal_Method_GetTemplateVars' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php',
- 'Smarty_Internal_Method_Literals' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php',
- 'Smarty_Internal_Method_LoadFilter' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php',
- 'Smarty_Internal_Method_LoadPlugin' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php',
- 'Smarty_Internal_Method_MustCompile' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php',
- 'Smarty_Internal_Method_RegisterCacheResource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php',
- 'Smarty_Internal_Method_RegisterClass' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php',
- 'Smarty_Internal_Method_RegisterDefaultConfigHandler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php',
- 'Smarty_Internal_Method_RegisterDefaultPluginHandler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php',
- 'Smarty_Internal_Method_RegisterDefaultTemplateHandler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php',
- 'Smarty_Internal_Method_RegisterFilter' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php',
- 'Smarty_Internal_Method_RegisterObject' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php',
- 'Smarty_Internal_Method_RegisterPlugin' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php',
- 'Smarty_Internal_Method_RegisterResource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php',
- 'Smarty_Internal_Method_SetAutoloadFilters' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php',
- 'Smarty_Internal_Method_SetDebugTemplate' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php',
- 'Smarty_Internal_Method_SetDefaultModifiers' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php',
- 'Smarty_Internal_Method_UnloadFilter' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php',
- 'Smarty_Internal_Method_UnregisterCacheResource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php',
- 'Smarty_Internal_Method_UnregisterFilter' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php',
- 'Smarty_Internal_Method_UnregisterObject' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php',
- 'Smarty_Internal_Method_UnregisterPlugin' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php',
- 'Smarty_Internal_Method_UnregisterResource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php',
- 'Smarty_Internal_Nocache_Insert' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php',
- 'Smarty_Internal_ParseTree' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php',
- 'Smarty_Internal_ParseTree_Code' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php',
- 'Smarty_Internal_ParseTree_Dq' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php',
- 'Smarty_Internal_ParseTree_DqContent' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php',
- 'Smarty_Internal_ParseTree_Tag' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php',
- 'Smarty_Internal_ParseTree_Template' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php',
- 'Smarty_Internal_ParseTree_Text' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php',
- 'Smarty_Internal_Resource_Eval' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php',
- 'Smarty_Internal_Resource_Extends' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php',
- 'Smarty_Internal_Resource_File' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php',
- 'Smarty_Internal_Resource_Php' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php',
- 'Smarty_Internal_Resource_Stream' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php',
- 'Smarty_Internal_Resource_String' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php',
- 'Smarty_Internal_Runtime_CacheModify' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php',
- 'Smarty_Internal_Runtime_CacheResourceFile' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php',
- 'Smarty_Internal_Runtime_Capture' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php',
- 'Smarty_Internal_Runtime_CodeFrame' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php',
- 'Smarty_Internal_Runtime_FilterHandler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php',
- 'Smarty_Internal_Runtime_Foreach' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php',
- 'Smarty_Internal_Runtime_GetIncludePath' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php',
- 'Smarty_Internal_Runtime_Inheritance' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php',
- 'Smarty_Internal_Runtime_Make_Nocache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php',
- 'Smarty_Internal_Runtime_TplFunction' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php',
- 'Smarty_Internal_Runtime_UpdateCache' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php',
- 'Smarty_Internal_Runtime_UpdateScope' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php',
- 'Smarty_Internal_Runtime_WriteFile' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php',
- 'Smarty_Internal_SmartyTemplateCompiler' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php',
- 'Smarty_Internal_Template' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_template.php',
- 'Smarty_Internal_TemplateBase' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php',
- 'Smarty_Internal_TemplateCompilerBase' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php',
- 'Smarty_Internal_Templatelexer' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php',
- 'Smarty_Internal_Templateparser' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
- 'Smarty_Internal_TestInstall' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php',
- 'Smarty_Internal_Undefined' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php',
- 'Smarty_Resource' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_resource.php',
- 'Smarty_Resource_Custom' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_resource_custom.php',
- 'Smarty_Resource_Recompiled' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php',
- 'Smarty_Resource_Uncompiled' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php',
- 'Smarty_Security' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_security.php',
- 'Smarty_Template_Cached' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_cached.php',
- 'Smarty_Template_Compiled' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_compiled.php',
- 'Smarty_Template_Config' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_config.php',
- 'Smarty_Template_Resource_Base' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php',
- 'Smarty_Template_Source' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_source.php',
- 'Smarty_Undefined_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php',
- 'Smarty_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_variable.php',
+ 'Smarty\\BlockHandler\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/BlockHandler/Base.php',
+ 'Smarty\\BlockHandler\\BlockHandlerInterface' => __DIR__ . '/..' . '/smarty/smarty/src/BlockHandler/BlockHandlerInterface.php',
+ 'Smarty\\BlockHandler\\BlockPluginWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/BlockHandler/BlockPluginWrapper.php',
+ 'Smarty\\BlockHandler\\TextFormat' => __DIR__ . '/..' . '/smarty/smarty/src/BlockHandler/TextFormat.php',
+ 'Smarty\\Cacheresource\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/Cacheresource/Base.php',
+ 'Smarty\\Cacheresource\\Custom' => __DIR__ . '/..' . '/smarty/smarty/src/Cacheresource/Custom.php',
+ 'Smarty\\Cacheresource\\File' => __DIR__ . '/..' . '/smarty/smarty/src/Cacheresource/File.php',
+ 'Smarty\\Cacheresource\\KeyValueStore' => __DIR__ . '/..' . '/smarty/smarty/src/Cacheresource/KeyValueStore.php',
+ 'Smarty\\Compile\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Base.php',
+ 'Smarty\\Compile\\BlockCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/BlockCompiler.php',
+ 'Smarty\\Compile\\CompilerInterface' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/CompilerInterface.php',
+ 'Smarty\\Compile\\DefaultHandlerBlockCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/DefaultHandlerBlockCompiler.php',
+ 'Smarty\\Compile\\DefaultHandlerFunctionCallCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/DefaultHandlerFunctionCallCompiler.php',
+ 'Smarty\\Compile\\FunctionCallCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/FunctionCallCompiler.php',
+ 'Smarty\\Compile\\ModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/ModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\BCPluginWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/BCPluginWrapper.php',
+ 'Smarty\\Compile\\Modifier\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/Base.php',
+ 'Smarty\\Compile\\Modifier\\CatModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/CatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountCharactersModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/CountCharactersModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountParagraphsModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/CountParagraphsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountSentencesModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/CountSentencesModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\CountWordsModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/CountWordsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\DefaultModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/DefaultModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\EmptyModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/EmptyModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\EscapeModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/EscapeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\FromCharsetModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/FromCharsetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IndentModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/IndentModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IsArrayModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/IsArrayModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\IssetModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/IssetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\JsonEncodeModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/JsonEncodeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\LowerModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/LowerModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\ModifierCompilerInterface' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/ModifierCompilerInterface.php',
+ 'Smarty\\Compile\\Modifier\\Nl2brModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/Nl2brModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\NoPrintModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/NoPrintModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\RawModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/RawModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\RoundModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/RoundModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StrRepeatModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/StrRepeatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StringFormatModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/StringFormatModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StripModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/StripModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StripTagsModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/StripTagsModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\StrlenModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/StrlenModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\SubstrModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/SubstrModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\ToCharsetModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/ToCharsetModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\UnescapeModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/UnescapeModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\UpperModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/UpperModifierCompiler.php',
+ 'Smarty\\Compile\\Modifier\\WordWrapModifierCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Modifier/WordWrapModifierCompiler.php',
+ 'Smarty\\Compile\\ObjectMethodBlockCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/ObjectMethodBlockCompiler.php',
+ 'Smarty\\Compile\\ObjectMethodCallCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/ObjectMethodCallCompiler.php',
+ 'Smarty\\Compile\\PrintExpressionCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/PrintExpressionCompiler.php',
+ 'Smarty\\Compile\\SpecialVariableCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/SpecialVariableCompiler.php',
+ 'Smarty\\Compile\\Tag\\Append' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Append.php',
+ 'Smarty\\Compile\\Tag\\Assign' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Assign.php',
+ 'Smarty\\Compile\\Tag\\BCPluginWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/BCPluginWrapper.php',
+ 'Smarty\\Compile\\Tag\\Block' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Block.php',
+ 'Smarty\\Compile\\Tag\\BlockClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/BlockClose.php',
+ 'Smarty\\Compile\\Tag\\BreakTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/BreakTag.php',
+ 'Smarty\\Compile\\Tag\\Call' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Call.php',
+ 'Smarty\\Compile\\Tag\\Capture' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Capture.php',
+ 'Smarty\\Compile\\Tag\\CaptureClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/CaptureClose.php',
+ 'Smarty\\Compile\\Tag\\ConfigLoad' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ConfigLoad.php',
+ 'Smarty\\Compile\\Tag\\ContinueTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ContinueTag.php',
+ 'Smarty\\Compile\\Tag\\Debug' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Debug.php',
+ 'Smarty\\Compile\\Tag\\ElseIfTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ElseIfTag.php',
+ 'Smarty\\Compile\\Tag\\ElseTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ElseTag.php',
+ 'Smarty\\Compile\\Tag\\EvalTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/EvalTag.php',
+ 'Smarty\\Compile\\Tag\\ExtendsTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ExtendsTag.php',
+ 'Smarty\\Compile\\Tag\\ForClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForClose.php',
+ 'Smarty\\Compile\\Tag\\ForElse' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForElse.php',
+ 'Smarty\\Compile\\Tag\\ForTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForTag.php',
+ 'Smarty\\Compile\\Tag\\ForeachClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForeachClose.php',
+ 'Smarty\\Compile\\Tag\\ForeachElse' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForeachElse.php',
+ 'Smarty\\Compile\\Tag\\ForeachSection' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForeachSection.php',
+ 'Smarty\\Compile\\Tag\\ForeachTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/ForeachTag.php',
+ 'Smarty\\Compile\\Tag\\FunctionClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/FunctionClose.php',
+ 'Smarty\\Compile\\Tag\\FunctionTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/FunctionTag.php',
+ 'Smarty\\Compile\\Tag\\IfClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/IfClose.php',
+ 'Smarty\\Compile\\Tag\\IfTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/IfTag.php',
+ 'Smarty\\Compile\\Tag\\IncludeTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/IncludeTag.php',
+ 'Smarty\\Compile\\Tag\\Inheritance' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Inheritance.php',
+ 'Smarty\\Compile\\Tag\\Ldelim' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Ldelim.php',
+ 'Smarty\\Compile\\Tag\\Nocache' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Nocache.php',
+ 'Smarty\\Compile\\Tag\\NocacheClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/NocacheClose.php',
+ 'Smarty\\Compile\\Tag\\Rdelim' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Rdelim.php',
+ 'Smarty\\Compile\\Tag\\Section' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Section.php',
+ 'Smarty\\Compile\\Tag\\SectionClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/SectionClose.php',
+ 'Smarty\\Compile\\Tag\\SectionElse' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/SectionElse.php',
+ 'Smarty\\Compile\\Tag\\Setfilter' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/Setfilter.php',
+ 'Smarty\\Compile\\Tag\\SetfilterClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/SetfilterClose.php',
+ 'Smarty\\Compile\\Tag\\WhileClose' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/WhileClose.php',
+ 'Smarty\\Compile\\Tag\\WhileTag' => __DIR__ . '/..' . '/smarty/smarty/src/Compile/Tag/WhileTag.php',
+ 'Smarty\\CompilerException' => __DIR__ . '/..' . '/smarty/smarty/src/CompilerException.php',
+ 'Smarty\\Compiler\\BaseCompiler' => __DIR__ . '/..' . '/smarty/smarty/src/Compiler/BaseCompiler.php',
+ 'Smarty\\Compiler\\CodeFrame' => __DIR__ . '/..' . '/smarty/smarty/src/Compiler/CodeFrame.php',
+ 'Smarty\\Compiler\\Configfile' => __DIR__ . '/..' . '/smarty/smarty/src/Compiler/Configfile.php',
+ 'Smarty\\Compiler\\Template' => __DIR__ . '/..' . '/smarty/smarty/src/Compiler/Template.php',
+ 'Smarty\\Data' => __DIR__ . '/..' . '/smarty/smarty/src/Data.php',
+ 'Smarty\\Debug' => __DIR__ . '/..' . '/smarty/smarty/src/Debug.php',
+ 'Smarty\\ErrorHandler' => __DIR__ . '/..' . '/smarty/smarty/src/ErrorHandler.php',
+ 'Smarty\\Exception' => __DIR__ . '/..' . '/smarty/smarty/src/Exception.php',
+ 'Smarty\\Extension\\BCPluginsAdapter' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/BCPluginsAdapter.php',
+ 'Smarty\\Extension\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/Base.php',
+ 'Smarty\\Extension\\CallbackWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/CallbackWrapper.php',
+ 'Smarty\\Extension\\CoreExtension' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/CoreExtension.php',
+ 'Smarty\\Extension\\DefaultExtension' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/DefaultExtension.php',
+ 'Smarty\\Extension\\ExtensionInterface' => __DIR__ . '/..' . '/smarty/smarty/src/Extension/ExtensionInterface.php',
+ 'Smarty\\Filter\\FilterInterface' => __DIR__ . '/..' . '/smarty/smarty/src/Filter/FilterInterface.php',
+ 'Smarty\\Filter\\FilterPluginWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/Filter/FilterPluginWrapper.php',
+ 'Smarty\\Filter\\Output\\TrimWhitespace' => __DIR__ . '/..' . '/smarty/smarty/src/Filter/Output/TrimWhitespace.php',
+ 'Smarty\\FunctionHandler\\BCPluginWrapper' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php',
+ 'Smarty\\FunctionHandler\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Base.php',
+ 'Smarty\\FunctionHandler\\Count' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Count.php',
+ 'Smarty\\FunctionHandler\\Counter' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Counter.php',
+ 'Smarty\\FunctionHandler\\Cycle' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Cycle.php',
+ 'Smarty\\FunctionHandler\\Fetch' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Fetch.php',
+ 'Smarty\\FunctionHandler\\FunctionHandlerInterface' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php',
+ 'Smarty\\FunctionHandler\\HtmlBase' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlBase.php',
+ 'Smarty\\FunctionHandler\\HtmlCheckboxes' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php',
+ 'Smarty\\FunctionHandler\\HtmlImage' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlImage.php',
+ 'Smarty\\FunctionHandler\\HtmlOptions' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlOptions.php',
+ 'Smarty\\FunctionHandler\\HtmlRadios' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlRadios.php',
+ 'Smarty\\FunctionHandler\\HtmlSelectDate' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php',
+ 'Smarty\\FunctionHandler\\HtmlSelectTime' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php',
+ 'Smarty\\FunctionHandler\\HtmlTable' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/HtmlTable.php',
+ 'Smarty\\FunctionHandler\\Mailto' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Mailto.php',
+ 'Smarty\\FunctionHandler\\Math' => __DIR__ . '/..' . '/smarty/smarty/src/FunctionHandler/Math.php',
+ 'Smarty\\Lexer\\ConfigfileLexer' => __DIR__ . '/..' . '/smarty/smarty/src/Lexer/ConfigfileLexer.php',
+ 'Smarty\\Lexer\\TemplateLexer' => __DIR__ . '/..' . '/smarty/smarty/src/Lexer/TemplateLexer.php',
+ 'Smarty\\ParseTree\\Base' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Base.php',
+ 'Smarty\\ParseTree\\Code' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Code.php',
+ 'Smarty\\ParseTree\\Dq' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Dq.php',
+ 'Smarty\\ParseTree\\DqContent' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/DqContent.php',
+ 'Smarty\\ParseTree\\Tag' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Tag.php',
+ 'Smarty\\ParseTree\\Template' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Template.php',
+ 'Smarty\\ParseTree\\Text' => __DIR__ . '/..' . '/smarty/smarty/src/ParseTree/Text.php',
+ 'Smarty\\Parser\\ConfigfileParser' => __DIR__ . '/..' . '/smarty/smarty/src/Parser/ConfigfileParser.php',
+ 'Smarty\\Parser\\TemplateParser' => __DIR__ . '/..' . '/smarty/smarty/src/Parser/TemplateParser.php',
+ 'Smarty\\Resource\\BasePlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/BasePlugin.php',
+ 'Smarty\\Resource\\CustomPlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/CustomPlugin.php',
+ 'Smarty\\Resource\\ExtendsPlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/ExtendsPlugin.php',
+ 'Smarty\\Resource\\FilePlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/FilePlugin.php',
+ 'Smarty\\Resource\\RecompiledPlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/RecompiledPlugin.php',
+ 'Smarty\\Resource\\StreamPlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/StreamPlugin.php',
+ 'Smarty\\Resource\\StringEval' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/StringEval.php',
+ 'Smarty\\Resource\\StringPlugin' => __DIR__ . '/..' . '/smarty/smarty/src/Resource/StringPlugin.php',
+ 'Smarty\\Runtime\\Block' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/Block.php',
+ 'Smarty\\Runtime\\CaptureRuntime' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/CaptureRuntime.php',
+ 'Smarty\\Runtime\\DefaultPluginHandlerRuntime' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php',
+ 'Smarty\\Runtime\\ForeachRuntime' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/ForeachRuntime.php',
+ 'Smarty\\Runtime\\InheritanceRuntime' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/InheritanceRuntime.php',
+ 'Smarty\\Runtime\\TplFunctionRuntime' => __DIR__ . '/..' . '/smarty/smarty/src/Runtime/TplFunctionRuntime.php',
+ 'Smarty\\Security' => __DIR__ . '/..' . '/smarty/smarty/src/Security.php',
+ 'Smarty\\Smarty' => __DIR__ . '/..' . '/smarty/smarty/src/Smarty.php',
+ 'Smarty\\Template' => __DIR__ . '/..' . '/smarty/smarty/src/Template.php',
+ 'Smarty\\TemplateBase' => __DIR__ . '/..' . '/smarty/smarty/src/TemplateBase.php',
+ 'Smarty\\Template\\Cached' => __DIR__ . '/..' . '/smarty/smarty/src/Template/Cached.php',
+ 'Smarty\\Template\\Compiled' => __DIR__ . '/..' . '/smarty/smarty/src/Template/Compiled.php',
+ 'Smarty\\Template\\Config' => __DIR__ . '/..' . '/smarty/smarty/src/Template/Config.php',
+ 'Smarty\\Template\\GeneratedPhpFile' => __DIR__ . '/..' . '/smarty/smarty/src/Template/GeneratedPhpFile.php',
+ 'Smarty\\Template\\Source' => __DIR__ . '/..' . '/smarty/smarty/src/Template/Source.php',
+ 'Smarty\\TestInstall' => __DIR__ . '/..' . '/smarty/smarty/src/TestInstall.php',
+ 'Smarty\\UndefinedVariable' => __DIR__ . '/..' . '/smarty/smarty/src/UndefinedVariable.php',
+ 'Smarty\\Variable' => __DIR__ . '/..' . '/smarty/smarty/src/Variable.php',
'StephenHill\\BCMathService' => __DIR__ . '/..' . '/stephenhill/base58/src/BCMathService.php',
'StephenHill\\Base58' => __DIR__ . '/..' . '/stephenhill/base58/src/Base58.php',
'StephenHill\\Benchmarks\\Base16Event' => __DIR__ . '/..' . '/stephenhill/base58/benchmarks/Base16Event.php',
@@ -1460,9 +1469,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'StephenHill\\Benchmarks\\Base64Event' => __DIR__ . '/..' . '/stephenhill/base58/benchmarks/Base64Event.php',
'StephenHill\\GMPService' => __DIR__ . '/..' . '/stephenhill/base58/src/GMPService.php',
'StephenHill\\ServiceInterface' => __DIR__ . '/..' . '/stephenhill/base58/src/ServiceInterface.php',
- 'Symfony\\Polyfill\\Php81\\Php81' => __DIR__ . '/..' . '/symfony/polyfill-php81/Php81.php',
- 'TPC_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
- 'TP_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
+ 'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php',
'Text_LanguageDetect' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect.php',
'Text_LanguageDetect_Exception' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/Exception.php',
'Text_LanguageDetect_ISO639' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/ISO639.php',
@@ -1473,6 +1480,24 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Access\\PermissionLimits' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionLimits.php',
'Zotlabs\\Access\\PermissionRoles' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionRoles.php',
'Zotlabs\\Access\\Permissions' => __DIR__ . '/../..' . '/Zotlabs/Access/Permissions.php',
+ 'Zotlabs\\ActivityStreams\\ASObject' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/ASObject.php',
+ 'Zotlabs\\ActivityStreams\\Activity' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/Activity.php',
+ 'Zotlabs\\ActivityStreams\\Actor' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/Actor.php',
+ 'Zotlabs\\ActivityStreams\\AssertionMethod' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/AssertionMethod.php',
+ 'Zotlabs\\ActivityStreams\\Collection' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/Collection.php',
+ 'Zotlabs\\ActivityStreams\\CollectionPage' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/CollectionPage.php',
+ 'Zotlabs\\ActivityStreams\\IntransitiveActivity' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/IntransitiveActivity.php',
+ 'Zotlabs\\ActivityStreams\\Link' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/Link.php',
+ 'Zotlabs\\ActivityStreams\\OrderedCollection' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/OrderedCollection.php',
+ 'Zotlabs\\ActivityStreams\\OrderedCollectionPage' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/OrderedCollectionPage.php',
+ 'Zotlabs\\ActivityStreams\\Place' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/Place.php',
+ 'Zotlabs\\ActivityStreams\\Profile' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/Profile.php',
+ 'Zotlabs\\ActivityStreams\\PublicKey' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/PublicKey.php',
+ 'Zotlabs\\ActivityStreams\\Question' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/Question.php',
+ 'Zotlabs\\ActivityStreams\\Relationship' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/Relationship.php',
+ 'Zotlabs\\ActivityStreams\\Signature' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/Signature.php',
+ 'Zotlabs\\ActivityStreams\\Tombstone' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/Tombstone.php',
+ 'Zotlabs\\ActivityStreams\\UnhandledElementException' => __DIR__ . '/../..' . '/Zotlabs/ActivityStreams/UnhandledElementException.php',
'Zotlabs\\Daemon\\Addon' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Addon.php',
'Zotlabs\\Daemon\\Cache_embeds' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Cache_embeds.php',
'Zotlabs\\Daemon\\Cache_query' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Cache_query.php',
@@ -1506,6 +1531,9 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Daemon\\Thumbnail' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Thumbnail.php',
'Zotlabs\\Daemon\\Xchan_photo' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Xchan_photo.php',
'Zotlabs\\Daemon\\Zotconvo' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Zotconvo.php',
+ 'Zotlabs\\Entity\\Account' => __DIR__ . '/../..' . '/Zotlabs/Entity/Account.php',
+ 'Zotlabs\\Entity\\Channel' => __DIR__ . '/../..' . '/Zotlabs/Entity/Channel.php',
+ 'Zotlabs\\Entity\\Item' => __DIR__ . '/../..' . '/Zotlabs/Entity/Item.php',
'Zotlabs\\Extend\\Hook' => __DIR__ . '/../..' . '/Zotlabs/Extend/Hook.php',
'Zotlabs\\Extend\\Route' => __DIR__ . '/../..' . '/Zotlabs/Extend/Route.php',
'Zotlabs\\Extend\\Widget' => __DIR__ . '/../..' . '/Zotlabs/Extend/Widget.php',
@@ -1522,6 +1550,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Lib\\ActivityStreams' => __DIR__ . '/../..' . '/Zotlabs/Lib/ActivityStreams.php',
'Zotlabs\\Lib\\Api_router' => __DIR__ . '/../..' . '/Zotlabs/Lib/Api_router.php',
'Zotlabs\\Lib\\Apps' => __DIR__ . '/../..' . '/Zotlabs/Lib/Apps.php',
+ 'Zotlabs\\Lib\\BaseObject' => __DIR__ . '/../..' . '/Zotlabs/Lib/BaseObject.php',
'Zotlabs\\Lib\\Cache' => __DIR__ . '/../..' . '/Zotlabs/Lib/Cache.php',
'Zotlabs\\Lib\\Chatroom' => __DIR__ . '/../..' . '/Zotlabs/Lib/Chatroom.php',
'Zotlabs\\Lib\\Config' => __DIR__ . '/../..' . '/Zotlabs/Lib/Config.php',
@@ -1541,6 +1570,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Lib\\Libsync' => __DIR__ . '/../..' . '/Zotlabs/Lib/Libsync.php',
'Zotlabs\\Lib\\Libzot' => __DIR__ . '/../..' . '/Zotlabs/Lib/Libzot.php',
'Zotlabs\\Lib\\Libzotdir' => __DIR__ . '/../..' . '/Zotlabs/Lib/Libzotdir.php',
+ 'Zotlabs\\Lib\\Mailer' => __DIR__ . '/../..' . '/Zotlabs/Lib/Mailer.php',
'Zotlabs\\Lib\\MarkdownSoap' => __DIR__ . '/../..' . '/Zotlabs/Lib/MarkdownSoap.php',
'Zotlabs\\Lib\\MessageFilter' => __DIR__ . '/../..' . '/Zotlabs/Lib/MessageFilter.php',
'Zotlabs\\Lib\\Multibase' => __DIR__ . '/../..' . '/Zotlabs/Lib/Multibase.php',
@@ -1551,7 +1581,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Lib\\QueueWorker' => __DIR__ . '/../..' . '/Zotlabs/Lib/QueueWorker.php',
'Zotlabs\\Lib\\SConfig' => __DIR__ . '/../..' . '/Zotlabs/Lib/SConfig.php',
'Zotlabs\\Lib\\Share' => __DIR__ . '/../..' . '/Zotlabs/Lib/Share.php',
- 'Zotlabs\\Lib\\SuperCurl' => __DIR__ . '/../..' . '/Zotlabs/Lib/SuperCurl.php',
'Zotlabs\\Lib\\SvgSanitizer' => __DIR__ . '/../..' . '/Zotlabs/Lib/SvgSanitizer.php',
'Zotlabs\\Lib\\System' => __DIR__ . '/../..' . '/Zotlabs/Lib/System.php',
'Zotlabs\\Lib\\Techlevels' => __DIR__ . '/../..' . '/Zotlabs/Lib/Techlevels.php',
@@ -1599,12 +1628,14 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Branchtopic' => __DIR__ . '/../..' . '/Zotlabs/Module/Branchtopic.php',
'Zotlabs\\Module\\Cal' => __DIR__ . '/../..' . '/Zotlabs/Module/Cal.php',
'Zotlabs\\Module\\Cdav' => __DIR__ . '/../..' . '/Zotlabs/Module/Cdav.php',
+ 'Zotlabs\\Module\\Ceditor' => __DIR__ . '/../..' . '/Zotlabs/Module/Ceditor.php',
'Zotlabs\\Module\\Changeaddr' => __DIR__ . '/../..' . '/Zotlabs/Module/Changeaddr.php',
'Zotlabs\\Module\\Channel' => __DIR__ . '/../..' . '/Zotlabs/Module/Channel.php',
'Zotlabs\\Module\\Channel_calendar' => __DIR__ . '/../..' . '/Zotlabs/Module/Channel_calendar.php',
'Zotlabs\\Module\\Chanview' => __DIR__ . '/../..' . '/Zotlabs/Module/Chanview.php',
'Zotlabs\\Module\\Chat' => __DIR__ . '/../..' . '/Zotlabs/Module/Chat.php',
'Zotlabs\\Module\\Chatsvc' => __DIR__ . '/../..' . '/Zotlabs/Module/Chatsvc.php',
+ 'Zotlabs\\Module\\Cleditor' => __DIR__ . '/../..' . '/Zotlabs/Module/Cleditor.php',
'Zotlabs\\Module\\Cloud' => __DIR__ . '/../..' . '/Zotlabs/Module/Cloud.php',
'Zotlabs\\Module\\Cloud_tiles' => __DIR__ . '/../..' . '/Zotlabs/Module/Cloud_tiles.php',
'Zotlabs\\Module\\Common' => __DIR__ . '/../..' . '/Zotlabs/Module/Common.php',
@@ -1798,7 +1829,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Storage\\CalDAVClient' => __DIR__ . '/../..' . '/Zotlabs/Storage/CalDAVClient.php',
'Zotlabs\\Storage\\Directory' => __DIR__ . '/../..' . '/Zotlabs/Storage/Directory.php',
'Zotlabs\\Storage\\File' => __DIR__ . '/../..' . '/Zotlabs/Storage/File.php',
- 'Zotlabs\\Storage\\GitRepo' => __DIR__ . '/../..' . '/Zotlabs/Storage/GitRepo.php',
'Zotlabs\\Storage\\ZotOauth2Pdo' => __DIR__ . '/../..' . '/Zotlabs/Storage/ZotOauth2Pdo.php',
'Zotlabs\\Text\\Tagadelic' => __DIR__ . '/../..' . '/Zotlabs/Text/Tagadelic.php',
'Zotlabs\\Thumbs\\Epubthumb' => __DIR__ . '/../..' . '/Zotlabs/Thumbs/Epubthumb.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 8e6b10647..65d1f669f 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -70,28 +70,28 @@
},
{
"name": "brick/math",
- "version": "0.11.0",
- "version_normalized": "0.11.0.0",
+ "version": "0.12.1",
+ "version_normalized": "0.12.1.0",
"source": {
"type": "git",
"url": "https://github.com/brick/math.git",
- "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478"
+ "reference": "f510c0a40911935b77b86859eb5223d58d660df1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478",
- "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478",
+ "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1",
+ "reference": "f510c0a40911935b77b86859eb5223d58d660df1",
"shasum": ""
},
"require": {
- "php": "^8.0"
+ "php": "^8.1"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.2",
- "phpunit/phpunit": "^9.0",
- "vimeo/psalm": "5.0.0"
+ "phpunit/phpunit": "^10.1",
+ "vimeo/psalm": "5.16.0"
},
- "time": "2023-01-15T23:15:59+00:00",
+ "time": "2023-11-29T23:19:16+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -111,12 +111,17 @@
"arithmetic",
"bigdecimal",
"bignum",
+ "bignumber",
"brick",
- "math"
+ "decimal",
+ "integer",
+ "math",
+ "mathematics",
+ "rational"
],
"support": {
"issues": "https://github.com/brick/math/issues",
- "source": "https://github.com/brick/math/tree/0.11.0"
+ "source": "https://github.com/brick/math/tree/0.12.1"
},
"funding": [
{
@@ -193,34 +198,37 @@
},
{
"name": "chillerlan/php-qrcode",
- "version": "4.3.4",
- "version_normalized": "4.3.4.0",
+ "version": "4.4.2",
+ "version_normalized": "4.4.2.0",
"source": {
"type": "git",
"url": "https://github.com/chillerlan/php-qrcode.git",
- "reference": "2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d"
+ "reference": "345ed8e4ffb56e6b3fcd9f42e3970b9026fa6ce4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d",
- "reference": "2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d",
+ "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/345ed8e4ffb56e6b3fcd9f42e3970b9026fa6ce4",
+ "reference": "345ed8e4ffb56e6b3fcd9f42e3970b9026fa6ce4",
"shasum": ""
},
"require": {
- "chillerlan/php-settings-container": "^2.1.4",
+ "chillerlan/php-settings-container": "^2.1.6 || ^3.2.1",
"ext-mbstring": "*",
"php": "^7.4 || ^8.0"
},
"require-dev": {
- "phan/phan": "^5.3",
- "phpunit/phpunit": "^9.5",
- "setasign/fpdf": "^1.8.2"
+ "phan/phan": "^5.4.5",
+ "phpmd/phpmd": "^2.15",
+ "phpunit/phpunit": "^9.6",
+ "setasign/fpdf": "^1.8.2",
+ "squizlabs/php_codesniffer": "^3.11"
},
"suggest": {
"chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.",
- "setasign/fpdf": "Required to use the QR FPDF output."
+ "setasign/fpdf": "Required to use the QR FPDF output.",
+ "simple-icons/simple-icons": "SVG icons that you can use to embed as logos in the QR Code"
},
- "time": "2022-07-25T09:12:45+00:00",
+ "time": "2024-11-15T15:36:24+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -247,7 +255,7 @@
"homepage": "https://github.com/chillerlan/php-qrcode/graphs/contributors"
}
],
- "description": "A QR code generator. PHP 7.4+",
+ "description": "A QR code generator with a user friendly API. PHP 7.4+",
"homepage": "https://github.com/chillerlan/php-qrcode",
"keywords": [
"phpqrcode",
@@ -258,14 +266,10 @@
],
"support": {
"issues": "https://github.com/chillerlan/php-qrcode/issues",
- "source": "https://github.com/chillerlan/php-qrcode/tree/4.3.4"
+ "source": "https://github.com/chillerlan/php-qrcode/tree/4.4.2"
},
"funding": [
{
- "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4",
- "type": "custom"
- },
- {
"url": "https://ko-fi.com/codemasher",
"type": "ko_fi"
}
@@ -274,33 +278,36 @@
},
{
"name": "chillerlan/php-settings-container",
- "version": "2.1.4",
- "version_normalized": "2.1.4.0",
+ "version": "3.2.1",
+ "version_normalized": "3.2.1.0",
"source": {
"type": "git",
"url": "https://github.com/chillerlan/php-settings-container.git",
- "reference": "1beb7df3c14346d4344b0b2e12f6f9a74feabd4a"
+ "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/1beb7df3c14346d4344b0b2e12f6f9a74feabd4a",
- "reference": "1beb7df3c14346d4344b0b2e12f6f9a74feabd4a",
+ "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/95ed3e9676a1d47cab2e3174d19b43f5dbf52681",
+ "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681",
"shasum": ""
},
"require": {
"ext-json": "*",
- "php": "^7.4 || ^8.0"
+ "php": "^8.1"
},
"require-dev": {
- "phan/phan": "^5.3",
- "phpunit/phpunit": "^9.5"
+ "phpmd/phpmd": "^2.15",
+ "phpstan/phpstan": "^1.11",
+ "phpstan/phpstan-deprecation-rules": "^1.2",
+ "phpunit/phpunit": "^10.5",
+ "squizlabs/php_codesniffer": "^3.10"
},
- "time": "2022-07-05T22:32:14+00:00",
+ "time": "2024-07-16T11:13:48+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
- "chillerlan\\Settings\\": "src/"
+ "chillerlan\\Settings\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -314,10 +321,9 @@
"homepage": "https://github.com/codemasher"
}
],
- "description": "A container class for immutable settings objects. Not a DI container. PHP 7.4+",
+ "description": "A container class for immutable settings objects. Not a DI container.",
"homepage": "https://github.com/chillerlan/php-settings-container",
"keywords": [
- "PHP7",
"Settings",
"configuration",
"container",
@@ -437,21 +443,21 @@
},
{
"name": "ezyang/htmlpurifier",
- "version": "v4.17.0",
- "version_normalized": "4.17.0.0",
+ "version": "v4.18.0",
+ "version_normalized": "4.18.0.0",
"source": {
"type": "git",
"url": "https://github.com/ezyang/htmlpurifier.git",
- "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c"
+ "reference": "cb56001e54359df7ae76dc522d08845dc741621b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c",
- "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c",
+ "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/cb56001e54359df7ae76dc522d08845dc741621b",
+ "reference": "cb56001e54359df7ae76dc522d08845dc741621b",
"shasum": ""
},
"require": {
- "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
+ "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
},
"require-dev": {
"cerdic/css-tidy": "^1.7 || ^2.0",
@@ -463,7 +469,7 @@
"ext-iconv": "Converts text to and from non-UTF-8 encodings",
"ext-tidy": "Used for pretty-printing HTML"
},
- "time": "2023-11-17T15:01:25+00:00",
+ "time": "2024-11-01T03:51:45+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -495,7 +501,7 @@
],
"support": {
"issues": "https://github.com/ezyang/htmlpurifier/issues",
- "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0"
+ "source": "https://github.com/ezyang/htmlpurifier/tree/v4.18.0"
},
"install-path": "../ezyang/htmlpurifier"
},
@@ -826,27 +832,27 @@
},
{
"name": "paragonie/constant_time_encoding",
- "version": "v2.6.3",
- "version_normalized": "2.6.3.0",
+ "version": "v3.0.0",
+ "version_normalized": "3.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/paragonie/constant_time_encoding.git",
- "reference": "58c3f47f650c94ec05a151692652a868995d2938"
+ "reference": "df1e7fde177501eee2037dd159cf04f5f301a512"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938",
- "reference": "58c3f47f650c94ec05a151692652a868995d2938",
+ "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512",
+ "reference": "df1e7fde177501eee2037dd159cf04f5f301a512",
"shasum": ""
},
"require": {
- "php": "^7|^8"
+ "php": "^8"
},
"require-dev": {
- "phpunit/phpunit": "^6|^7|^8|^9",
- "vimeo/psalm": "^1|^2|^3|^4"
+ "phpunit/phpunit": "^9",
+ "vimeo/psalm": "^4|^5"
},
- "time": "2022-06-14T06:56:20+00:00",
+ "time": "2024-05-08T12:36:18+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1001,17 +1007,17 @@
},
{
"name": "phpseclib/phpseclib",
- "version": "2.0.47",
- "version_normalized": "2.0.47.0",
+ "version": "2.0.48",
+ "version_normalized": "2.0.48.0",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "b7d7d90ee7df7f33a664b4aea32d50a305d35adb"
+ "reference": "eaa7be704b8b93a6913b69eb7f645a59d7731b61"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/b7d7d90ee7df7f33a664b4aea32d50a305d35adb",
- "reference": "b7d7d90ee7df7f33a664b4aea32d50a305d35adb",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/eaa7be704b8b93a6913b69eb7f645a59d7731b61",
+ "reference": "eaa7be704b8b93a6913b69eb7f645a59d7731b61",
"shasum": ""
},
"require": {
@@ -1029,7 +1035,7 @@
"ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations.",
"ext-xml": "Install the XML extension to load XML formatted public keys."
},
- "time": "2024-02-26T04:55:38+00:00",
+ "time": "2024-12-14T21:03:54+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1094,7 +1100,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
- "source": "https://github.com/phpseclib/phpseclib/tree/2.0.47"
+ "source": "https://github.com/phpseclib/phpseclib/tree/2.0.48"
},
"funding": [
{
@@ -1113,28 +1119,79 @@
"install-path": "../phpseclib/phpseclib"
},
{
+ "name": "psr/clock",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/clock.git",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0"
+ },
+ "time": "2022-11-25T14:36:26+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Clock\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for reading the clock.",
+ "homepage": "https://github.com/php-fig/clock",
+ "keywords": [
+ "clock",
+ "now",
+ "psr",
+ "psr-20",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/clock/issues",
+ "source": "https://github.com/php-fig/clock/tree/1.0.0"
+ },
+ "install-path": "../psr/clock"
+ },
+ {
"name": "psr/log",
- "version": "2.0.0",
- "version_normalized": "2.0.0.0",
+ "version": "3.0.2",
+ "version_normalized": "3.0.2.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
- "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
"shasum": ""
},
"require": {
"php": ">=8.0.0"
},
- "time": "2021-07-14T16:41:46+00:00",
+ "time": "2024-09-11T13:17:53+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "3.x-dev"
}
},
"installation-source": "dist",
@@ -1161,50 +1218,60 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/2.0.0"
+ "source": "https://github.com/php-fig/log/tree/3.0.2"
},
"install-path": "../psr/log"
},
{
"name": "ramsey/collection",
- "version": "1.2.2",
- "version_normalized": "1.2.2.0",
+ "version": "2.0.0",
+ "version_normalized": "2.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/collection.git",
- "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a"
+ "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a",
- "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a",
+ "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
+ "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
"shasum": ""
},
"require": {
- "php": "^7.3 || ^8",
- "symfony/polyfill-php81": "^1.23"
+ "php": "^8.1"
},
"require-dev": {
- "captainhook/captainhook": "^5.3",
- "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
- "ergebnis/composer-normalize": "^2.6",
- "fakerphp/faker": "^1.5",
- "hamcrest/hamcrest-php": "^2",
- "jangregor/phpstan-prophecy": "^0.8",
- "mockery/mockery": "^1.3",
+ "captainhook/plugin-composer": "^5.3",
+ "ergebnis/composer-normalize": "^2.28.3",
+ "fakerphp/faker": "^1.21",
+ "hamcrest/hamcrest-php": "^2.0",
+ "jangregor/phpstan-prophecy": "^1.0",
+ "mockery/mockery": "^1.5",
+ "php-parallel-lint/php-console-highlighter": "^1.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3",
+ "phpcsstandards/phpcsutils": "^1.0.0-rc1",
"phpspec/prophecy-phpunit": "^2.0",
- "phpstan/extension-installer": "^1",
- "phpstan/phpstan": "^0.12.32",
- "phpstan/phpstan-mockery": "^0.12.5",
- "phpstan/phpstan-phpunit": "^0.12.11",
- "phpunit/phpunit": "^8.5 || ^9",
- "psy/psysh": "^0.10.4",
- "slevomat/coding-standard": "^6.3",
- "squizlabs/php_codesniffer": "^3.5",
- "vimeo/psalm": "^4.4"
+ "phpstan/extension-installer": "^1.2",
+ "phpstan/phpstan": "^1.9",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpunit/phpunit": "^9.5",
+ "psalm/plugin-mockery": "^1.1",
+ "psalm/plugin-phpunit": "^0.18.4",
+ "ramsey/coding-standard": "^2.0.3",
+ "ramsey/conventional-commits": "^1.3",
+ "vimeo/psalm": "^5.4"
},
- "time": "2021-10-10T03:01:02+00:00",
+ "time": "2022-12-31T21:50:55+00:00",
"type": "library",
+ "extra": {
+ "captainhook": {
+ "force-install": true
+ },
+ "ramsey/conventional-commits": {
+ "configFile": "conventional-commits.json"
+ }
+ },
"installation-source": "dist",
"autoload": {
"psr-4": {
@@ -1233,7 +1300,7 @@
],
"support": {
"issues": "https://github.com/ramsey/collection/issues",
- "source": "https://github.com/ramsey/collection/tree/1.2.2"
+ "source": "https://github.com/ramsey/collection/tree/2.0.0"
},
"funding": [
{
@@ -1249,21 +1316,21 @@
},
{
"name": "ramsey/uuid",
- "version": "4.7.5",
- "version_normalized": "4.7.5.0",
+ "version": "4.7.6",
+ "version_normalized": "4.7.6.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e"
+ "reference": "91039bc1faa45ba123c4328958e620d382ec7088"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
- "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088",
+ "reference": "91039bc1faa45ba123c4328958e620d382ec7088",
"shasum": ""
},
"require": {
- "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11",
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12",
"ext-json": "*",
"php": "^8.0",
"ramsey/collection": "^1.2 || ^2.0"
@@ -1300,7 +1367,7 @@
"paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
- "time": "2023-11-08T05:53:05+00:00",
+ "time": "2024-04-27T21:32:50+00:00",
"type": "library",
"extra": {
"captainhook": {
@@ -1328,7 +1395,7 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.7.5"
+ "source": "https://github.com/ramsey/uuid/tree/4.7.6"
},
"funding": [
{
@@ -1344,17 +1411,17 @@
},
{
"name": "sabre/dav",
- "version": "4.6.0",
- "version_normalized": "4.6.0.0",
+ "version": "4.7.0",
+ "version_normalized": "4.7.0.0",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/dav.git",
- "reference": "554145304b4a026477d130928d16e626939b0b2a"
+ "reference": "074373bcd689a30bcf5aaa6bbb20a3395964ce7a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/dav/zipball/554145304b4a026477d130928d16e626939b0b2a",
- "reference": "554145304b4a026477d130928d16e626939b0b2a",
+ "url": "https://api.github.com/repos/sabre-io/dav/zipball/074373bcd689a30bcf5aaa6bbb20a3395964ce7a",
+ "reference": "074373bcd689a30bcf5aaa6bbb20a3395964ce7a",
"shasum": ""
},
"require": {
@@ -1388,7 +1455,7 @@
"ext-imap": "*",
"ext-pdo": "*"
},
- "time": "2023-12-11T13:01:23+00:00",
+ "time": "2024-10-29T11:46:02+00:00",
"bin": [
"bin/sabredav",
"bin/naturalselection"
@@ -1430,28 +1497,28 @@
},
{
"name": "sabre/event",
- "version": "5.1.4",
- "version_normalized": "5.1.4.0",
+ "version": "5.1.7",
+ "version_normalized": "5.1.7.0",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/event.git",
- "reference": "d7da22897125d34d7eddf7977758191c06a74497"
+ "reference": "86d57e305c272898ba3c28e9bd3d65d5464587c2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/event/zipball/d7da22897125d34d7eddf7977758191c06a74497",
- "reference": "d7da22897125d34d7eddf7977758191c06a74497",
+ "url": "https://api.github.com/repos/sabre-io/event/zipball/86d57e305c272898ba3c28e9bd3d65d5464587c2",
+ "reference": "86d57e305c272898ba3c28e9bd3d65d5464587c2",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "~2.17.1",
+ "friendsofphp/php-cs-fixer": "~2.17.1||^3.63",
"phpstan/phpstan": "^0.12",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0"
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6"
},
- "time": "2021-11-04T06:51:17+00:00",
+ "time": "2024-08-27T11:23:05+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1499,17 +1566,17 @@
},
{
"name": "sabre/http",
- "version": "5.1.6",
- "version_normalized": "5.1.6.0",
+ "version": "5.1.12",
+ "version_normalized": "5.1.12.0",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/http.git",
- "reference": "9976ac34ced206bd6579b7b37b401de9fac98dae"
+ "reference": "dedff73f3995578bc942fa4c8484190cac14f139"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/http/zipball/9976ac34ced206bd6579b7b37b401de9fac98dae",
- "reference": "9976ac34ced206bd6579b7b37b401de9fac98dae",
+ "url": "https://api.github.com/repos/sabre-io/http/zipball/dedff73f3995578bc942fa4c8484190cac14f139",
+ "reference": "dedff73f3995578bc942fa4c8484190cac14f139",
"shasum": ""
},
"require": {
@@ -1521,14 +1588,14 @@
"sabre/uri": "^2.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "~2.17.1",
+ "friendsofphp/php-cs-fixer": "~2.17.1||^3.63",
"phpstan/phpstan": "^0.12",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0"
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6"
},
"suggest": {
"ext-curl": " to make http requests with the Client class"
},
- "time": "2022-07-15T14:51:14+00:00",
+ "time": "2024-08-27T16:07:41+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1565,28 +1632,31 @@
},
{
"name": "sabre/uri",
- "version": "2.3.2",
- "version_normalized": "2.3.2.0",
+ "version": "2.3.4",
+ "version_normalized": "2.3.4.0",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/uri.git",
- "reference": "eceb4a1b8b680b45e215574222d6ca00be541970"
+ "reference": "b76524c22de90d80ca73143680a8e77b1266c291"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/uri/zipball/eceb4a1b8b680b45e215574222d6ca00be541970",
- "reference": "eceb4a1b8b680b45e215574222d6ca00be541970",
+ "url": "https://api.github.com/repos/sabre-io/uri/zipball/b76524c22de90d80ca73143680a8e77b1266c291",
+ "reference": "b76524c22de90d80ca73143680a8e77b1266c291",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^3.9",
- "phpstan/phpstan": "^1.8",
- "phpunit/phpunit": "^9.0"
- },
- "time": "2022-09-19T11:58:52+00:00",
+ "friendsofphp/php-cs-fixer": "^3.63",
+ "phpstan/extension-installer": "^1.4",
+ "phpstan/phpstan": "^1.12",
+ "phpstan/phpstan-phpunit": "^1.4",
+ "phpstan/phpstan-strict-rules": "^1.6",
+ "phpunit/phpunit": "^9.6"
+ },
+ "time": "2024-08-27T12:18:16+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1625,17 +1695,17 @@
},
{
"name": "sabre/vobject",
- "version": "4.5.4",
- "version_normalized": "4.5.4.0",
+ "version": "4.5.6",
+ "version_normalized": "4.5.6.0",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/vobject.git",
- "reference": "a6d53a3e5bec85ed3dd78868b7de0f5b4e12f772"
+ "reference": "900266bb3bd448a9f7f41f82344ad0aba237cb27"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/vobject/zipball/a6d53a3e5bec85ed3dd78868b7de0f5b4e12f772",
- "reference": "a6d53a3e5bec85ed3dd78868b7de0f5b4e12f772",
+ "url": "https://api.github.com/repos/sabre-io/vobject/zipball/900266bb3bd448a9f7f41f82344ad0aba237cb27",
+ "reference": "900266bb3bd448a9f7f41f82344ad0aba237cb27",
"shasum": ""
},
"require": {
@@ -1645,14 +1715,14 @@
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2.17.1",
- "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan": "^0.12 || ^1.11",
"phpunit/php-invoker": "^2.0 || ^3.1",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0"
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6"
},
"suggest": {
"hoa/bench": "If you would like to run the benchmark scripts"
},
- "time": "2023-11-09T12:54:37+00:00",
+ "time": "2024-10-14T11:53:54+00:00",
"bin": [
"bin/vobject",
"bin/generate_vcards"
@@ -1732,17 +1802,17 @@
},
{
"name": "sabre/xml",
- "version": "2.2.5",
- "version_normalized": "2.2.5.0",
+ "version": "2.2.11",
+ "version_normalized": "2.2.11.0",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/xml.git",
- "reference": "a6af111850e7536d200d9637c34885cd3c77a86c"
+ "reference": "01a7927842abf3e10df3d9c2d9b0cc9d813a3fcc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/xml/zipball/a6af111850e7536d200d9637c34885cd3c77a86c",
- "reference": "a6af111850e7536d200d9637c34885cd3c77a86c",
+ "url": "https://api.github.com/repos/sabre-io/xml/zipball/01a7927842abf3e10df3d9c2d9b0cc9d813a3fcc",
+ "reference": "01a7927842abf3e10df3d9c2d9b0cc9d813a3fcc",
"shasum": ""
},
"require": {
@@ -1754,11 +1824,11 @@
"sabre/uri": ">=1.0,<3.0.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "~2.17.1",
+ "friendsofphp/php-cs-fixer": "~2.17.1||3.63.2",
"phpstan/phpstan": "^0.12",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0"
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6"
},
- "time": "2021-11-04T06:37:27+00:00",
+ "time": "2024-09-06T07:37:46+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1804,17 +1874,17 @@
},
{
"name": "scssphp/scssphp",
- "version": "v1.12.1",
- "version_normalized": "1.12.1.0",
+ "version": "v1.13.0",
+ "version_normalized": "1.13.0.0",
"source": {
"type": "git",
"url": "https://github.com/scssphp/scssphp.git",
- "reference": "394ed1e960138710a60d035c1a85d43d0bf0faeb"
+ "reference": "63d1157457e5554edf00b0c1fabab4c1511d2520"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/scssphp/scssphp/zipball/394ed1e960138710a60d035c1a85d43d0bf0faeb",
- "reference": "394ed1e960138710a60d035c1a85d43d0bf0faeb",
+ "url": "https://api.github.com/repos/scssphp/scssphp/zipball/63d1157457e5554edf00b0c1fabab4c1511d2520",
+ "reference": "63d1157457e5554edf00b0c1fabab4c1511d2520",
"shasum": ""
},
"require": {
@@ -1837,7 +1907,7 @@
"ext-iconv": "Can be used as fallback when ext-mbstring is not available",
"ext-mbstring": "For best performance, mbstring should be installed as it is faster than ext-iconv"
},
- "time": "2024-01-13T12:36:40+00:00",
+ "time": "2024-08-17T21:02:11+00:00",
"bin": [
"bin/pscss"
],
@@ -1881,23 +1951,23 @@
],
"support": {
"issues": "https://github.com/scssphp/scssphp/issues",
- "source": "https://github.com/scssphp/scssphp/tree/v1.12.1"
+ "source": "https://github.com/scssphp/scssphp/tree/v1.13.0"
},
"install-path": "../scssphp/scssphp"
},
{
"name": "simplepie/simplepie",
- "version": "1.8.0",
- "version_normalized": "1.8.0.0",
+ "version": "1.8.1",
+ "version_normalized": "1.8.1.0",
"source": {
"type": "git",
"url": "https://github.com/simplepie/simplepie.git",
- "reference": "65b095d87bc00898d8fa7737bdbcda93a3fbcc55"
+ "reference": "a567b8ab9b6145a23e6a9ec2b6b74f56d52f7ad1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplepie/simplepie/zipball/65b095d87bc00898d8fa7737bdbcda93a3fbcc55",
- "reference": "65b095d87bc00898d8fa7737bdbcda93a3fbcc55",
+ "url": "https://api.github.com/repos/simplepie/simplepie/zipball/a567b8ab9b6145a23e6a9ec2b6b74f56d52f7ad1",
+ "reference": "a567b8ab9b6145a23e6a9ec2b6b74f56d52f7ad1",
"shasum": ""
},
"require": {
@@ -1918,28 +1988,18 @@
"ext-mbstring": "",
"mf2/mf2": "Microformat module that allows for parsing HTML for microformats"
},
- "time": "2023-01-20T08:37:35+00:00",
+ "time": "2024-11-22T16:33:20+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
- "psr-4": {
- "SimplePie\\": "src"
- },
"psr-0": {
"SimplePie": "library"
- }
- },
- "autoload-dev": {
+ },
"psr-4": {
- "SimplePie\\Tests\\Fixtures\\": "tests/Fixtures",
- "SimplePie\\Tests\\Unit\\": "tests/Unit"
+ "SimplePie\\": "src"
}
},
- "scripts": {
- "test": [
- "phpunit"
- ]
- },
+ "notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
@@ -1969,45 +2029,49 @@
"rss"
],
"support": {
- "source": "https://github.com/simplepie/simplepie/tree/1.8.0",
- "issues": "https://github.com/simplepie/simplepie/issues"
+ "issues": "https://github.com/simplepie/simplepie/issues",
+ "source": "https://github.com/simplepie/simplepie/tree/1.8.1"
},
"install-path": "../simplepie/simplepie"
},
{
"name": "smarty/smarty",
- "version": "v4.4.1",
- "version_normalized": "4.4.1.0",
+ "version": "v5.4.3",
+ "version_normalized": "5.4.3.0",
"source": {
"type": "git",
"url": "https://github.com/smarty-php/smarty.git",
- "reference": "f4152e9b814ae2369b6e4935c05e1e0c3654318d"
+ "reference": "c6bff5795081ca5e60aabda59fb87daa511acd1e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/smarty-php/smarty/zipball/f4152e9b814ae2369b6e4935c05e1e0c3654318d",
- "reference": "f4152e9b814ae2369b6e4935c05e1e0c3654318d",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/c6bff5795081ca5e60aabda59fb87daa511acd1e",
+ "reference": "c6bff5795081ca5e60aabda59fb87daa511acd1e",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-mbstring": "^1.27"
},
"require-dev": {
"phpunit/phpunit": "^8.5 || ^7.5",
- "smarty/smarty-lexer": "^3.1"
+ "smarty/smarty-lexer": "^4.0.2"
},
- "time": "2024-02-26T13:58:37+00:00",
+ "time": "2024-12-23T00:38:44+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0.x-dev"
+ "dev-master": "5.0.x-dev"
}
},
"installation-source": "dist",
"autoload": {
- "classmap": [
- "libs/"
- ]
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Smarty\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2039,45 +2103,47 @@
"support": {
"forum": "https://github.com/smarty-php/smarty/discussions",
"issues": "https://github.com/smarty-php/smarty/issues",
- "source": "https://github.com/smarty-php/smarty/tree/v4.4.1"
+ "source": "https://github.com/smarty-php/smarty/tree/v5.4.3"
},
"install-path": "../smarty/smarty"
},
{
"name": "spomky-labs/otphp",
- "version": "11.2.0",
- "version_normalized": "11.2.0.0",
+ "version": "11.3.0",
+ "version_normalized": "11.3.0.0",
"source": {
"type": "git",
"url": "https://github.com/Spomky-Labs/otphp.git",
- "reference": "9a1569038bb1c8e98040b14b8bcbba54f25e7795"
+ "reference": "2d8ccb5fc992b9cc65ef321fa4f00fefdb3f4b33"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/9a1569038bb1c8e98040b14b8bcbba54f25e7795",
- "reference": "9a1569038bb1c8e98040b14b8bcbba54f25e7795",
+ "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/2d8ccb5fc992b9cc65ef321fa4f00fefdb3f4b33",
+ "reference": "2d8ccb5fc992b9cc65ef321fa4f00fefdb3f4b33",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
- "paragonie/constant_time_encoding": "^2.0",
- "php": "^8.1"
+ "paragonie/constant_time_encoding": "^2.0 || ^3.0",
+ "php": ">=8.1",
+ "psr/clock": "^1.0",
+ "symfony/deprecation-contracts": "^3.2"
},
"require-dev": {
"ekino/phpstan-banned-code": "^1.0",
- "infection/infection": "^0.26",
+ "infection/infection": "^0.26|^0.27|^0.28|^0.29",
"php-parallel-lint/php-parallel-lint": "^1.3",
"phpstan/phpstan": "^1.0",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-phpunit": "^1.0",
"phpstan/phpstan-strict-rules": "^1.0",
- "phpunit/phpunit": "^9.5.26",
+ "phpunit/phpunit": "^9.5.26|^10.0|^11.0",
"qossmic/deptrac-shim": "^1.0",
- "rector/rector": "^0.15",
- "symfony/phpunit-bridge": "^6.1",
- "symplify/easy-coding-standard": "^11.0"
+ "rector/rector": "^1.0",
+ "symfony/phpunit-bridge": "^6.1|^7.0",
+ "symplify/easy-coding-standard": "^12.0"
},
- "time": "2023-03-16T19:16:25+00:00",
+ "time": "2024-06-12T11:22:32+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2112,7 +2178,7 @@
],
"support": {
"issues": "https://github.com/Spomky-Labs/otphp/issues",
- "source": "https://github.com/Spomky-Labs/otphp/tree/11.2.0"
+ "source": "https://github.com/Spomky-Labs/otphp/tree/11.3.0"
},
"funding": [
{
@@ -2172,29 +2238,105 @@
"install-path": "../stephenhill/base58"
},
{
- "name": "symfony/polyfill-php81",
- "version": "v1.29.0",
- "version_normalized": "1.29.0.0",
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.5.1",
+ "version_normalized": "3.5.1.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d"
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d",
- "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
+ "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=8.1"
},
- "time": "2024-01-29T20:11:03+00:00",
+ "time": "2024-09-25T14:20:29+00:00",
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.5-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/deprecation-contracts"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.31.0",
+ "version_normalized": "1.31.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "time": "2024-09-09T11:45:10+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"installation-source": "dist",
@@ -2203,11 +2345,8 @@
"bootstrap.php"
],
"psr-4": {
- "Symfony\\Polyfill\\Php81\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2223,16 +2362,17 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+ "description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
+ "mbstring",
"polyfill",
"portable",
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
},
"funding": [
{
@@ -2248,7 +2388,7 @@
"type": "tidelift"
}
],
- "install-path": "../symfony/polyfill-php81"
+ "install-path": "../symfony/polyfill-mbstring"
},
{
"name": "twbs/bootstrap",
@@ -2304,18 +2444,60 @@
"install-path": "../twbs/bootstrap"
},
{
+ "name": "twbs/bootstrap-icons",
+ "version": "v1.11.3",
+ "version_normalized": "1.11.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twbs/icons.git",
+ "reference": "8d88686c03c3768a2d82ba4f20c3c4e1b100fa29"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twbs/icons/zipball/8d88686c03c3768a2d82ba4f20c3c4e1b100fa29",
+ "reference": "8d88686c03c3768a2d82ba4f20c3c4e1b100fa29",
+ "shasum": ""
+ },
+ "time": "2024-01-03T15:44:45+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mark Otto",
+ "email": "markdotto@gmail.com"
+ }
+ ],
+ "description": "Official open source SVG icon library for Bootstrap",
+ "homepage": "https://icons.getbootstrap.com/",
+ "keywords": [
+ "bootstrap",
+ "icon font",
+ "icons",
+ "svg"
+ ],
+ "support": {
+ "issues": "https://github.com/twbs/icons/issues",
+ "source": "https://github.com/twbs/icons/tree/v1.11.3"
+ },
+ "install-path": "../twbs/bootstrap-icons"
+ },
+ {
"name": "voku/portable-ascii",
- "version": "2.0.1",
- "version_normalized": "2.0.1.0",
+ "version": "2.0.3",
+ "version_normalized": "2.0.3.0",
"source": {
"type": "git",
"url": "https://github.com/voku/portable-ascii.git",
- "reference": "b56450eed252f6801410d810c8e1727224ae0743"
+ "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743",
- "reference": "b56450eed252f6801410d810c8e1727224ae0743",
+ "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
+ "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
"shasum": ""
},
"require": {
@@ -2327,7 +2509,7 @@
"suggest": {
"ext-intl": "Use Intl for transliterator_transliterate() support"
},
- "time": "2022-03-08T17:03:00+00:00",
+ "time": "2024-11-21T01:49:47+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2342,7 +2524,7 @@
"authors": [
{
"name": "Lars Moelleken",
- "homepage": "http://www.moelleken.org/"
+ "homepage": "https://www.moelleken.org/"
}
],
"description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
@@ -2354,7 +2536,7 @@
],
"support": {
"issues": "https://github.com/voku/portable-ascii/issues",
- "source": "https://github.com/voku/portable-ascii/tree/2.0.1"
+ "source": "https://github.com/voku/portable-ascii/tree/2.0.3"
},
"funding": [
{
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index 1ab0e12b9..dbbd87201 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -3,7 +3,7 @@
'name' => 'zotlabs/hubzilla',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '3c0d6339bb12bd7fbf65ba7a79078e39737b4387',
+ 'reference' => 'cfcac590c3a5d183db3a496fa2e9be344b599705',
'type' => 'application',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -20,9 +20,9 @@
'dev_requirement' => false,
),
'brick/math' => array(
- 'pretty_version' => '0.11.0',
- 'version' => '0.11.0.0',
- 'reference' => '0ad82ce168c82ba30d1c01ec86116ab52f589478',
+ 'pretty_version' => '0.12.1',
+ 'version' => '0.12.1.0',
+ 'reference' => 'f510c0a40911935b77b86859eb5223d58d660df1',
'type' => 'library',
'install_path' => __DIR__ . '/../brick/math',
'aliases' => array(),
@@ -38,18 +38,18 @@
'dev_requirement' => false,
),
'chillerlan/php-qrcode' => array(
- 'pretty_version' => '4.3.4',
- 'version' => '4.3.4.0',
- 'reference' => '2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d',
+ 'pretty_version' => '4.4.2',
+ 'version' => '4.4.2.0',
+ 'reference' => '345ed8e4ffb56e6b3fcd9f42e3970b9026fa6ce4',
'type' => 'library',
'install_path' => __DIR__ . '/../chillerlan/php-qrcode',
'aliases' => array(),
'dev_requirement' => false,
),
'chillerlan/php-settings-container' => array(
- 'pretty_version' => '2.1.4',
- 'version' => '2.1.4.0',
- 'reference' => '1beb7df3c14346d4344b0b2e12f6f9a74feabd4a',
+ 'pretty_version' => '3.2.1',
+ 'version' => '3.2.1.0',
+ 'reference' => '95ed3e9676a1d47cab2e3174d19b43f5dbf52681',
'type' => 'library',
'install_path' => __DIR__ . '/../chillerlan/php-settings-container',
'aliases' => array(),
@@ -74,9 +74,9 @@
'dev_requirement' => false,
),
'ezyang/htmlpurifier' => array(
- 'pretty_version' => 'v4.17.0',
- 'version' => '4.17.0.0',
- 'reference' => 'bbc513d79acf6691fa9cf10f192c90dd2957f18c',
+ 'pretty_version' => 'v4.18.0',
+ 'version' => '4.18.0.0',
+ 'reference' => 'cb56001e54359df7ae76dc522d08845dc741621b',
'type' => 'library',
'install_path' => __DIR__ . '/../ezyang/htmlpurifier',
'aliases' => array(),
@@ -128,9 +128,9 @@
'dev_requirement' => false,
),
'paragonie/constant_time_encoding' => array(
- 'pretty_version' => 'v2.6.3',
- 'version' => '2.6.3.0',
- 'reference' => '58c3f47f650c94ec05a151692652a868995d2938',
+ 'pretty_version' => 'v3.0.0',
+ 'version' => '3.0.0.0',
+ 'reference' => 'df1e7fde177501eee2037dd159cf04f5f301a512',
'type' => 'library',
'install_path' => __DIR__ . '/../paragonie/constant_time_encoding',
'aliases' => array(),
@@ -155,36 +155,45 @@
'dev_requirement' => false,
),
'phpseclib/phpseclib' => array(
- 'pretty_version' => '2.0.47',
- 'version' => '2.0.47.0',
- 'reference' => 'b7d7d90ee7df7f33a664b4aea32d50a305d35adb',
+ 'pretty_version' => '2.0.48',
+ 'version' => '2.0.48.0',
+ 'reference' => 'eaa7be704b8b93a6913b69eb7f645a59d7731b61',
'type' => 'library',
'install_path' => __DIR__ . '/../phpseclib/phpseclib',
'aliases' => array(),
'dev_requirement' => false,
),
+ 'psr/clock' => array(
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/clock',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
'psr/log' => array(
- 'pretty_version' => '2.0.0',
- 'version' => '2.0.0.0',
- 'reference' => 'ef29f6d262798707a9edd554e2b82517ef3a9376',
+ 'pretty_version' => '3.0.2',
+ 'version' => '3.0.2.0',
+ 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/log',
'aliases' => array(),
'dev_requirement' => false,
),
'ramsey/collection' => array(
- 'pretty_version' => '1.2.2',
- 'version' => '1.2.2.0',
- 'reference' => 'cccc74ee5e328031b15640b51056ee8d3bb66c0a',
+ 'pretty_version' => '2.0.0',
+ 'version' => '2.0.0.0',
+ 'reference' => 'a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5',
'type' => 'library',
'install_path' => __DIR__ . '/../ramsey/collection',
'aliases' => array(),
'dev_requirement' => false,
),
'ramsey/uuid' => array(
- 'pretty_version' => '4.7.5',
- 'version' => '4.7.5.0',
- 'reference' => '5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e',
+ 'pretty_version' => '4.7.6',
+ 'version' => '4.7.6.0',
+ 'reference' => '91039bc1faa45ba123c4328958e620d382ec7088',
'type' => 'library',
'install_path' => __DIR__ . '/../ramsey/uuid',
'aliases' => array(),
@@ -193,94 +202,94 @@
'rhumsaa/uuid' => array(
'dev_requirement' => false,
'replaced' => array(
- 0 => '4.7.5',
+ 0 => '4.7.6',
),
),
'sabre/dav' => array(
- 'pretty_version' => '4.6.0',
- 'version' => '4.6.0.0',
- 'reference' => '554145304b4a026477d130928d16e626939b0b2a',
+ 'pretty_version' => '4.7.0',
+ 'version' => '4.7.0.0',
+ 'reference' => '074373bcd689a30bcf5aaa6bbb20a3395964ce7a',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/dav',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/event' => array(
- 'pretty_version' => '5.1.4',
- 'version' => '5.1.4.0',
- 'reference' => 'd7da22897125d34d7eddf7977758191c06a74497',
+ 'pretty_version' => '5.1.7',
+ 'version' => '5.1.7.0',
+ 'reference' => '86d57e305c272898ba3c28e9bd3d65d5464587c2',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/event',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/http' => array(
- 'pretty_version' => '5.1.6',
- 'version' => '5.1.6.0',
- 'reference' => '9976ac34ced206bd6579b7b37b401de9fac98dae',
+ 'pretty_version' => '5.1.12',
+ 'version' => '5.1.12.0',
+ 'reference' => 'dedff73f3995578bc942fa4c8484190cac14f139',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/http',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/uri' => array(
- 'pretty_version' => '2.3.2',
- 'version' => '2.3.2.0',
- 'reference' => 'eceb4a1b8b680b45e215574222d6ca00be541970',
+ 'pretty_version' => '2.3.4',
+ 'version' => '2.3.4.0',
+ 'reference' => 'b76524c22de90d80ca73143680a8e77b1266c291',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/uri',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/vobject' => array(
- 'pretty_version' => '4.5.4',
- 'version' => '4.5.4.0',
- 'reference' => 'a6d53a3e5bec85ed3dd78868b7de0f5b4e12f772',
+ 'pretty_version' => '4.5.6',
+ 'version' => '4.5.6.0',
+ 'reference' => '900266bb3bd448a9f7f41f82344ad0aba237cb27',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/vobject',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/xml' => array(
- 'pretty_version' => '2.2.5',
- 'version' => '2.2.5.0',
- 'reference' => 'a6af111850e7536d200d9637c34885cd3c77a86c',
+ 'pretty_version' => '2.2.11',
+ 'version' => '2.2.11.0',
+ 'reference' => '01a7927842abf3e10df3d9c2d9b0cc9d813a3fcc',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/xml',
'aliases' => array(),
'dev_requirement' => false,
),
'scssphp/scssphp' => array(
- 'pretty_version' => 'v1.12.1',
- 'version' => '1.12.1.0',
- 'reference' => '394ed1e960138710a60d035c1a85d43d0bf0faeb',
+ 'pretty_version' => 'v1.13.0',
+ 'version' => '1.13.0.0',
+ 'reference' => '63d1157457e5554edf00b0c1fabab4c1511d2520',
'type' => 'library',
'install_path' => __DIR__ . '/../scssphp/scssphp',
'aliases' => array(),
'dev_requirement' => false,
),
'simplepie/simplepie' => array(
- 'pretty_version' => '1.8.0',
- 'version' => '1.8.0.0',
- 'reference' => '65b095d87bc00898d8fa7737bdbcda93a3fbcc55',
+ 'pretty_version' => '1.8.1',
+ 'version' => '1.8.1.0',
+ 'reference' => 'a567b8ab9b6145a23e6a9ec2b6b74f56d52f7ad1',
'type' => 'library',
'install_path' => __DIR__ . '/../simplepie/simplepie',
'aliases' => array(),
'dev_requirement' => false,
),
'smarty/smarty' => array(
- 'pretty_version' => 'v4.4.1',
- 'version' => '4.4.1.0',
- 'reference' => 'f4152e9b814ae2369b6e4935c05e1e0c3654318d',
+ 'pretty_version' => 'v5.4.3',
+ 'version' => '5.4.3.0',
+ 'reference' => 'c6bff5795081ca5e60aabda59fb87daa511acd1e',
'type' => 'library',
'install_path' => __DIR__ . '/../smarty/smarty',
'aliases' => array(),
'dev_requirement' => false,
),
'spomky-labs/otphp' => array(
- 'pretty_version' => '11.2.0',
- 'version' => '11.2.0.0',
- 'reference' => '9a1569038bb1c8e98040b14b8bcbba54f25e7795',
+ 'pretty_version' => '11.3.0',
+ 'version' => '11.3.0.0',
+ 'reference' => '2d8ccb5fc992b9cc65ef321fa4f00fefdb3f4b33',
'type' => 'library',
'install_path' => __DIR__ . '/../spomky-labs/otphp',
'aliases' => array(),
@@ -295,12 +304,21 @@
'aliases' => array(),
'dev_requirement' => false,
),
- 'symfony/polyfill-php81' => array(
- 'pretty_version' => 'v1.29.0',
- 'version' => '1.29.0.0',
- 'reference' => 'c565ad1e63f30e7477fc40738343c62b40bc672d',
+ 'symfony/deprecation-contracts' => array(
+ 'pretty_version' => 'v3.5.1',
+ 'version' => '3.5.1.0',
+ 'reference' => '74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6',
'type' => 'library',
- 'install_path' => __DIR__ . '/../symfony/polyfill-php81',
+ 'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-mbstring' => array(
+ 'pretty_version' => 'v1.31.0',
+ 'version' => '1.31.0.0',
+ 'reference' => '85181ba99b2345b0ef10ce42ecac37612d9fd341',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
'aliases' => array(),
'dev_requirement' => false,
),
@@ -313,6 +331,15 @@
'aliases' => array(),
'dev_requirement' => false,
),
+ 'twbs/bootstrap-icons' => array(
+ 'pretty_version' => 'v1.11.3',
+ 'version' => '1.11.3.0',
+ 'reference' => '8d88686c03c3768a2d82ba4f20c3c4e1b100fa29',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../twbs/bootstrap-icons',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
'twitter/bootstrap' => array(
'dev_requirement' => false,
'replaced' => array(
@@ -320,9 +347,9 @@
),
),
'voku/portable-ascii' => array(
- 'pretty_version' => '2.0.1',
- 'version' => '2.0.1.0',
- 'reference' => 'b56450eed252f6801410d810c8e1727224ae0743',
+ 'pretty_version' => '2.0.3',
+ 'version' => '2.0.3.0',
+ 'reference' => 'b1d923f88091c6bf09699efcd7c8a1b1bfd7351d',
'type' => 'library',
'install_path' => __DIR__ . '/../voku/portable-ascii',
'aliases' => array(),
@@ -340,7 +367,7 @@
'zotlabs/hubzilla' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '3c0d6339bb12bd7fbf65ba7a79078e39737b4387',
+ 'reference' => 'cfcac590c3a5d183db3a496fa2e9be344b599705',
'type' => 'application',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
diff --git a/vendor/ezyang/htmlpurifier/VERSION b/vendor/ezyang/htmlpurifier/VERSION
index 8643e7227..ef8ffbdd9 100644
--- a/vendor/ezyang/htmlpurifier/VERSION
+++ b/vendor/ezyang/htmlpurifier/VERSION
@@ -1 +1 @@
-4.17.0 \ No newline at end of file
+4.18.0 \ No newline at end of file
diff --git a/vendor/ezyang/htmlpurifier/composer.json b/vendor/ezyang/htmlpurifier/composer.json
index ed46bd5cf..7799d1d22 100644
--- a/vendor/ezyang/htmlpurifier/composer.json
+++ b/vendor/ezyang/htmlpurifier/composer.json
@@ -13,7 +13,7 @@
}
],
"require": {
- "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
+ "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
},
"require-dev": {
"cerdic/css-tidy": "^1.7 || ^2.0",
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php
index 77ebf2de7..4c713a33a 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php
@@ -7,7 +7,7 @@
* primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS
* FILE, changes will be overwritten the next time the script is run.
*
- * @version 4.17.0
+ * @version 4.18.0
*
* @warning
* You must *not* include any other HTML Purifier files before this file,
@@ -101,6 +101,7 @@ require 'HTMLPurifier/AttrDef/CSS/Length.php';
require 'HTMLPurifier/AttrDef/CSS/ListStyle.php';
require 'HTMLPurifier/AttrDef/CSS/Multiple.php';
require 'HTMLPurifier/AttrDef/CSS/Percentage.php';
+require 'HTMLPurifier/AttrDef/CSS/Ratio.php';
require 'HTMLPurifier/AttrDef/CSS/TextDecoration.php';
require 'HTMLPurifier/AttrDef/CSS/URI.php';
require 'HTMLPurifier/AttrDef/HTML/Bool.php';
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php
index 5c14a335d..e3bca8a22 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php
@@ -19,7 +19,7 @@
*/
/*
- HTML Purifier 4.17.0 - Standards Compliant HTML Filtering
+ HTML Purifier 4.18.0 - Standards Compliant HTML Filtering
Copyright (C) 2006-2008 Edward Z. Yang
This library is free software; you can redistribute it and/or
@@ -58,12 +58,12 @@ class HTMLPurifier
* Version of HTML Purifier.
* @type string
*/
- public $version = '4.17.0';
+ public $version = '4.18.0';
/**
* Constant with version of HTML Purifier.
*/
- const VERSION = '4.17.0';
+ const VERSION = '4.18.0';
/**
* Global configuration object.
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php
index 94543f593..8a417d246 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php
@@ -95,6 +95,7 @@ require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Length.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/ListStyle.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Multiple.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Percentage.php';
+require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Ratio.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/TextDecoration.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/URI.php';
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Bool.php';
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php
index ad2cb90ad..af6b8a05d 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php
@@ -27,6 +27,13 @@ class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef
$definition = $config->getCSSDefinition();
$allow_duplicates = $config->get("CSS.AllowDuplicates");
+ $universal_attrdef = new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'initial',
+ 'inherit',
+ 'unset',
+ )
+ );
// According to the CSS2.1 spec, the places where a
// non-delimiting semicolon can appear are in strings
@@ -96,16 +103,13 @@ class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef
if (!$ok) {
continue;
}
- // inefficient call, since the validator will do this again
- if (strtolower(trim($value)) !== 'inherit') {
- // inherit works for everything (but only on the base property)
+ $result = $universal_attrdef->validate($value, $config, $context);
+ if ($result === false) {
$result = $definition->info[$property]->validate(
$value,
$config,
$context
);
- } else {
- $result = 'inherit';
}
if ($result === false) {
continue;
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ratio.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ratio.php
new file mode 100644
index 000000000..e08e2c496
--- /dev/null
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ratio.php
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * Validates a ratio as defined by the CSS spec.
+ */
+class HTMLPurifier_AttrDef_CSS_Ratio extends HTMLPurifier_AttrDef
+{
+ /**
+ * @param string $ratio Ratio to validate
+ * @param HTMLPurifier_Config $config Configuration options
+ * @param HTMLPurifier_Context $context Context
+ *
+ * @return string|boolean
+ *
+ * @warning Some contexts do not pass $config, $context. These
+ * variables should not be used without checking HTMLPurifier_Length
+ */
+ public function validate($ratio, $config, $context)
+ {
+ $ratio = $this->parseCDATA($ratio);
+
+ $parts = explode('/', $ratio, 2);
+ $length = count($parts);
+
+ if ($length < 1 || $length > 2) {
+ return false;
+ }
+
+ $num = new \HTMLPurifier_AttrDef_CSS_Number();
+
+ if ($length === 1) {
+ return $num->validate($parts[0], $config, $context);
+ }
+
+ $num1 = $num->validate($parts[0], $config, $context);
+ $num2 = $num->validate($parts[1], $config, $context);
+
+ if ($num1 === false || $num2 === false) {
+ return false;
+ }
+
+ return $num1 . '/' . $num2;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php
index ddc5dfbea..17a97c1ec 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php
@@ -63,24 +63,18 @@ class HTMLPurifier_AttrDef_URI_Host extends HTMLPurifier_AttrDef
// This doesn't match I18N domain names, but we don't have proper IRI support,
// so force users to insert Punycode.
- // There is not a good sense in which underscores should be
- // allowed, since it's technically not! (And if you go as
- // far to allow everything as specified by the DNS spec...
- // well, that's literally everything, modulo some space limits
- // for the components and the overall name (which, by the way,
- // we are NOT checking!). So we (arbitrarily) decide this:
- // let's allow underscores wherever we would have allowed
- // hyphens, if they are enabled. This is a pretty good match
- // for browser behavior, for example, a large number of browsers
- // cannot handle foo_.example.com, but foo_bar.example.com is
- // fairly well supported.
+ // Underscores defined as Unreserved Characters in RFC 3986 are
+ // allowed in a URI. There are cases where we want to consider a
+ // URI containing "_" such as "_dmarc.example.com".
+ // Underscores are not allowed in the default. If you want to
+ // allow it, set Core.AllowHostnameUnderscore to true.
$underscore = $config->get('Core.AllowHostnameUnderscore') ? '_' : '';
// Based off of RFC 1738, but amended so that
// as per RFC 3696, the top label need only not be all numeric.
// The productions describing this are:
$a = '[a-z]'; // alpha
- $an = '[a-z0-9]'; // alphanum
+ $an = "[a-z0-9$underscore]"; // alphanum
$and = "[a-z0-9-$underscore]"; // alphanum | "-"
// domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
$domainlabel = "$an(?:$and*$an)?";
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php
index 1bc419c53..3732c076a 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php
@@ -116,8 +116,6 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
'auto',
'cover',
'contain',
- 'initial',
- 'inherit',
]
),
new HTMLPurifier_AttrDef_CSS_Percentage(),
@@ -236,21 +234,20 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
[
new HTMLPurifier_AttrDef_CSS_Length('0'),
new HTMLPurifier_AttrDef_CSS_Percentage(true),
- new HTMLPurifier_AttrDef_Enum(['auto', 'initial', 'inherit'])
+ new HTMLPurifier_AttrDef_Enum(['auto'])
]
);
$trusted_min_wh = new HTMLPurifier_AttrDef_CSS_Composite(
[
new HTMLPurifier_AttrDef_CSS_Length('0'),
new HTMLPurifier_AttrDef_CSS_Percentage(true),
- new HTMLPurifier_AttrDef_Enum(['initial', 'inherit'])
]
);
$trusted_max_wh = new HTMLPurifier_AttrDef_CSS_Composite(
[
new HTMLPurifier_AttrDef_CSS_Length('0'),
new HTMLPurifier_AttrDef_CSS_Percentage(true),
- new HTMLPurifier_AttrDef_Enum(['none', 'initial', 'inherit'])
+ new HTMLPurifier_AttrDef_Enum(['none'])
]
);
$max = $config->get('CSS.MaxImgLength');
@@ -278,12 +275,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
new HTMLPurifier_AttrDef_Switch(
'img',
// For img tags:
- new HTMLPurifier_AttrDef_CSS_Composite(
- [
- new HTMLPurifier_AttrDef_CSS_Length('0', $max),
- new HTMLPurifier_AttrDef_Enum(['initial', 'inherit'])
- ]
- ),
+ new HTMLPurifier_AttrDef_CSS_Length('0', $max),
// For everyone else:
$trusted_min_wh
);
@@ -297,22 +289,29 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
new HTMLPurifier_AttrDef_CSS_Composite(
[
new HTMLPurifier_AttrDef_CSS_Length('0', $max),
- new HTMLPurifier_AttrDef_Enum(['none', 'initial', 'inherit'])
+ new HTMLPurifier_AttrDef_Enum(['none'])
]
),
// For everyone else:
$trusted_max_wh
);
+ $this->info['aspect-ratio'] = new HTMLPurifier_AttrDef_CSS_Multiple(
+ new HTMLPurifier_AttrDef_CSS_Composite([
+ new HTMLPurifier_AttrDef_CSS_Ratio(),
+ new HTMLPurifier_AttrDef_Enum(['auto']),
+ ])
+ );
+
// text-decoration and related shorthands
$this->info['text-decoration'] = new HTMLPurifier_AttrDef_CSS_TextDecoration();
$this->info['text-decoration-line'] = new HTMLPurifier_AttrDef_Enum(
- ['none', 'underline', 'overline', 'line-through', 'initial', 'inherit']
+ ['none', 'underline', 'overline', 'line-through']
);
$this->info['text-decoration-style'] = new HTMLPurifier_AttrDef_Enum(
- ['solid', 'double', 'dotted', 'dashed', 'wavy', 'initial', 'inherit']
+ ['solid', 'double', 'dotted', 'dashed', 'wavy']
);
$this->info['text-decoration-color'] = new HTMLPurifier_AttrDef_CSS_Color();
@@ -320,7 +319,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
$this->info['text-decoration-thickness'] = new HTMLPurifier_AttrDef_CSS_Composite([
new HTMLPurifier_AttrDef_CSS_Length(),
new HTMLPurifier_AttrDef_CSS_Percentage(),
- new HTMLPurifier_AttrDef_Enum(['auto', 'from-font', 'initial', 'inherit'])
+ new HTMLPurifier_AttrDef_Enum(['auto', 'from-font'])
]);
$this->info['font-family'] = new HTMLPurifier_AttrDef_CSS_FontFamily();
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php
index 67c7e9535..d92205b32 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php
@@ -190,6 +190,9 @@ class HTMLPurifier_ChildDef_Table extends HTMLPurifier_ChildDef
$current_tr_tbody = null;
foreach($content as $node) {
+ if (!isset($node->name)) {
+ continue;
+ }
switch ($node->name) {
case 'tbody':
$current_tr_tbody = null;
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php
index f7511ca41..e6566e802 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php
@@ -21,7 +21,7 @@ class HTMLPurifier_Config
* HTML Purifier's version
* @type string
*/
- public $version = '4.17.0';
+ public $version = '4.18.0';
/**
* Whether or not to automatically finalize
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema.ser b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema.ser
index a5426c736..3cd756bee 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema.ser
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema.ser
@@ -1 +1 @@
-O:25:"HTMLPurifier_ConfigSchema":3:{s:8:"defaults";a:127:{s:19:"Attr.AllowedClasses";N;s:24:"Attr.AllowedFrameTargets";a:0:{}s:15:"Attr.AllowedRel";a:0:{}s:15:"Attr.AllowedRev";a:0:{}s:18:"Attr.ClassUseCDATA";N;s:20:"Attr.DefaultImageAlt";N;s:24:"Attr.DefaultInvalidImage";s:0:"";s:27:"Attr.DefaultInvalidImageAlt";s:13:"Invalid image";s:19:"Attr.DefaultTextDir";s:3:"ltr";s:13:"Attr.EnableID";b:0;s:21:"Attr.ForbiddenClasses";a:0:{}s:13:"Attr.ID.HTML5";N;s:16:"Attr.IDBlacklist";a:0:{}s:22:"Attr.IDBlacklistRegexp";N;s:13:"Attr.IDPrefix";s:0:"";s:18:"Attr.IDPrefixLocal";s:0:"";s:24:"AutoFormat.AutoParagraph";b:0;s:17:"AutoFormat.Custom";a:0:{}s:25:"AutoFormat.DisplayLinkURI";b:0;s:18:"AutoFormat.Linkify";b:0;s:33:"AutoFormat.PurifierLinkify.DocURL";s:3:"#%s";s:26:"AutoFormat.PurifierLinkify";b:0;s:32:"AutoFormat.RemoveEmpty.Predicate";a:4:{s:8:"colgroup";a:0:{}s:2:"th";a:0:{}s:2:"td";a:0:{}s:6:"iframe";a:1:{i:0;s:3:"src";}}s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";a:2:{s:2:"td";b:1;s:2:"th";b:1;}s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";b:0;s:22:"AutoFormat.RemoveEmpty";b:0;s:39:"AutoFormat.RemoveSpansWithoutAttributes";b:0;s:19:"CSS.AllowDuplicates";b:0;s:18:"CSS.AllowImportant";b:0;s:15:"CSS.AllowTricky";b:0;s:16:"CSS.AllowedFonts";N;s:21:"CSS.AllowedProperties";N;s:17:"CSS.DefinitionRev";i:1;s:23:"CSS.ForbiddenProperties";a:0:{}s:16:"CSS.MaxImgLength";s:6:"1200px";s:15:"CSS.Proprietary";b:0;s:11:"CSS.Trusted";b:0;s:20:"Cache.DefinitionImpl";s:10:"Serializer";s:20:"Cache.SerializerPath";N;s:27:"Cache.SerializerPermissions";i:493;s:22:"Core.AggressivelyFixLt";b:1;s:29:"Core.AggressivelyRemoveScript";b:1;s:28:"Core.AllowHostnameUnderscore";b:0;s:23:"Core.AllowParseManyTags";b:0;s:18:"Core.CollectErrors";b:0;s:18:"Core.ColorKeywords";a:148:{s:9:"aliceblue";s:7:"#F0F8FF";s:12:"antiquewhite";s:7:"#FAEBD7";s:4:"aqua";s:7:"#00FFFF";s:10:"aquamarine";s:7:"#7FFFD4";s:5:"azure";s:7:"#F0FFFF";s:5:"beige";s:7:"#F5F5DC";s:6:"bisque";s:7:"#FFE4C4";s:5:"black";s:7:"#000000";s:14:"blanchedalmond";s:7:"#FFEBCD";s:4:"blue";s:7:"#0000FF";s:10:"blueviolet";s:7:"#8A2BE2";s:5:"brown";s:7:"#A52A2A";s:9:"burlywood";s:7:"#DEB887";s:9:"cadetblue";s:7:"#5F9EA0";s:10:"chartreuse";s:7:"#7FFF00";s:9:"chocolate";s:7:"#D2691E";s:5:"coral";s:7:"#FF7F50";s:14:"cornflowerblue";s:7:"#6495ED";s:8:"cornsilk";s:7:"#FFF8DC";s:7:"crimson";s:7:"#DC143C";s:4:"cyan";s:7:"#00FFFF";s:8:"darkblue";s:7:"#00008B";s:8:"darkcyan";s:7:"#008B8B";s:13:"darkgoldenrod";s:7:"#B8860B";s:8:"darkgray";s:7:"#A9A9A9";s:8:"darkgrey";s:7:"#A9A9A9";s:9:"darkgreen";s:7:"#006400";s:9:"darkkhaki";s:7:"#BDB76B";s:11:"darkmagenta";s:7:"#8B008B";s:14:"darkolivegreen";s:7:"#556B2F";s:10:"darkorange";s:7:"#FF8C00";s:10:"darkorchid";s:7:"#9932CC";s:7:"darkred";s:7:"#8B0000";s:10:"darksalmon";s:7:"#E9967A";s:12:"darkseagreen";s:7:"#8FBC8F";s:13:"darkslateblue";s:7:"#483D8B";s:13:"darkslategray";s:7:"#2F4F4F";s:13:"darkslategrey";s:7:"#2F4F4F";s:13:"darkturquoise";s:7:"#00CED1";s:10:"darkviolet";s:7:"#9400D3";s:8:"deeppink";s:7:"#FF1493";s:11:"deepskyblue";s:7:"#00BFFF";s:7:"dimgray";s:7:"#696969";s:7:"dimgrey";s:7:"#696969";s:10:"dodgerblue";s:7:"#1E90FF";s:9:"firebrick";s:7:"#B22222";s:11:"floralwhite";s:7:"#FFFAF0";s:11:"forestgreen";s:7:"#228B22";s:7:"fuchsia";s:7:"#FF00FF";s:9:"gainsboro";s:7:"#DCDCDC";s:10:"ghostwhite";s:7:"#F8F8FF";s:4:"gold";s:7:"#FFD700";s:9:"goldenrod";s:7:"#DAA520";s:4:"gray";s:7:"#808080";s:4:"grey";s:7:"#808080";s:5:"green";s:7:"#008000";s:11:"greenyellow";s:7:"#ADFF2F";s:8:"honeydew";s:7:"#F0FFF0";s:7:"hotpink";s:7:"#FF69B4";s:9:"indianred";s:7:"#CD5C5C";s:6:"indigo";s:7:"#4B0082";s:5:"ivory";s:7:"#FFFFF0";s:5:"khaki";s:7:"#F0E68C";s:8:"lavender";s:7:"#E6E6FA";s:13:"lavenderblush";s:7:"#FFF0F5";s:9:"lawngreen";s:7:"#7CFC00";s:12:"lemonchiffon";s:7:"#FFFACD";s:9:"lightblue";s:7:"#ADD8E6";s:10:"lightcoral";s:7:"#F08080";s:9:"lightcyan";s:7:"#E0FFFF";s:20:"lightgoldenrodyellow";s:7:"#FAFAD2";s:9:"lightgray";s:7:"#D3D3D3";s:9:"lightgrey";s:7:"#D3D3D3";s:10:"lightgreen";s:7:"#90EE90";s:9:"lightpink";s:7:"#FFB6C1";s:11:"lightsalmon";s:7:"#FFA07A";s:13:"lightseagreen";s:7:"#20B2AA";s:12:"lightskyblue";s:7:"#87CEFA";s:14:"lightslategray";s:7:"#778899";s:14:"lightslategrey";s:7:"#778899";s:14:"lightsteelblue";s:7:"#B0C4DE";s:11:"lightyellow";s:7:"#FFFFE0";s:4:"lime";s:7:"#00FF00";s:9:"limegreen";s:7:"#32CD32";s:5:"linen";s:7:"#FAF0E6";s:7:"magenta";s:7:"#FF00FF";s:6:"maroon";s:7:"#800000";s:16:"mediumaquamarine";s:7:"#66CDAA";s:10:"mediumblue";s:7:"#0000CD";s:12:"mediumorchid";s:7:"#BA55D3";s:12:"mediumpurple";s:7:"#9370DB";s:14:"mediumseagreen";s:7:"#3CB371";s:15:"mediumslateblue";s:7:"#7B68EE";s:17:"mediumspringgreen";s:7:"#00FA9A";s:15:"mediumturquoise";s:7:"#48D1CC";s:15:"mediumvioletred";s:7:"#C71585";s:12:"midnightblue";s:7:"#191970";s:9:"mintcream";s:7:"#F5FFFA";s:9:"mistyrose";s:7:"#FFE4E1";s:8:"moccasin";s:7:"#FFE4B5";s:11:"navajowhite";s:7:"#FFDEAD";s:4:"navy";s:7:"#000080";s:7:"oldlace";s:7:"#FDF5E6";s:5:"olive";s:7:"#808000";s:9:"olivedrab";s:7:"#6B8E23";s:6:"orange";s:7:"#FFA500";s:9:"orangered";s:7:"#FF4500";s:6:"orchid";s:7:"#DA70D6";s:13:"palegoldenrod";s:7:"#EEE8AA";s:9:"palegreen";s:7:"#98FB98";s:13:"paleturquoise";s:7:"#AFEEEE";s:13:"palevioletred";s:7:"#DB7093";s:10:"papayawhip";s:7:"#FFEFD5";s:9:"peachpuff";s:7:"#FFDAB9";s:4:"peru";s:7:"#CD853F";s:4:"pink";s:7:"#FFC0CB";s:4:"plum";s:7:"#DDA0DD";s:10:"powderblue";s:7:"#B0E0E6";s:6:"purple";s:7:"#800080";s:13:"rebeccapurple";s:7:"#663399";s:3:"red";s:7:"#FF0000";s:9:"rosybrown";s:7:"#BC8F8F";s:9:"royalblue";s:7:"#4169E1";s:11:"saddlebrown";s:7:"#8B4513";s:6:"salmon";s:7:"#FA8072";s:10:"sandybrown";s:7:"#F4A460";s:8:"seagreen";s:7:"#2E8B57";s:8:"seashell";s:7:"#FFF5EE";s:6:"sienna";s:7:"#A0522D";s:6:"silver";s:7:"#C0C0C0";s:7:"skyblue";s:7:"#87CEEB";s:9:"slateblue";s:7:"#6A5ACD";s:9:"slategray";s:7:"#708090";s:9:"slategrey";s:7:"#708090";s:4:"snow";s:7:"#FFFAFA";s:11:"springgreen";s:7:"#00FF7F";s:9:"steelblue";s:7:"#4682B4";s:3:"tan";s:7:"#D2B48C";s:4:"teal";s:7:"#008080";s:7:"thistle";s:7:"#D8BFD8";s:6:"tomato";s:7:"#FF6347";s:9:"turquoise";s:7:"#40E0D0";s:6:"violet";s:7:"#EE82EE";s:5:"wheat";s:7:"#F5DEB3";s:5:"white";s:7:"#FFFFFF";s:10:"whitesmoke";s:7:"#F5F5F5";s:6:"yellow";s:7:"#FFFF00";s:11:"yellowgreen";s:7:"#9ACD32";}s:30:"Core.ConvertDocumentToFragment";b:1;s:36:"Core.DirectLexLineNumberSyncInterval";i:0;s:20:"Core.DisableExcludes";b:0;s:15:"Core.EnableIDNA";b:0;s:13:"Core.Encoding";s:5:"utf-8";s:26:"Core.EscapeInvalidChildren";b:0;s:22:"Core.EscapeInvalidTags";b:0;s:29:"Core.EscapeNonASCIICharacters";b:0;s:19:"Core.HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:13:"Core.Language";s:2:"en";s:24:"Core.LegacyEntityDecoder";b:0;s:14:"Core.LexerImpl";N;s:24:"Core.MaintainLineNumbers";N;s:22:"Core.NormalizeNewlines";b:1;s:21:"Core.RemoveInvalidImg";b:1;s:33:"Core.RemoveProcessingInstructions";b:0;s:25:"Core.RemoveScriptContents";N;s:13:"Filter.Custom";a:0:{}s:34:"Filter.ExtractStyleBlocks.Escaping";b:1;s:31:"Filter.ExtractStyleBlocks.Scope";N;s:34:"Filter.ExtractStyleBlocks.TidyImpl";N;s:25:"Filter.ExtractStyleBlocks";b:0;s:14:"Filter.YouTube";b:0;s:12:"HTML.Allowed";N;s:22:"HTML.AllowedAttributes";N;s:20:"HTML.AllowedComments";a:0:{}s:26:"HTML.AllowedCommentsRegexp";N;s:20:"HTML.AllowedElements";N;s:19:"HTML.AllowedModules";N;s:23:"HTML.Attr.Name.UseCDATA";b:0;s:17:"HTML.BlockWrapper";s:1:"p";s:16:"HTML.CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:18:"HTML.CustomDoctype";N;s:17:"HTML.DefinitionID";N;s:18:"HTML.DefinitionRev";i:1;s:12:"HTML.Doctype";N;s:25:"HTML.FlashAllowFullScreen";b:0;s:24:"HTML.ForbiddenAttributes";a:0:{}s:22:"HTML.ForbiddenElements";a:0:{}s:10:"HTML.Forms";b:0;s:17:"HTML.MaxImgLength";i:1200;s:13:"HTML.Nofollow";b:0;s:11:"HTML.Parent";s:3:"div";s:16:"HTML.Proprietary";b:0;s:14:"HTML.SafeEmbed";b:0;s:15:"HTML.SafeIframe";b:0;s:15:"HTML.SafeObject";b:0;s:18:"HTML.SafeScripting";a:0:{}s:11:"HTML.Strict";b:0;s:16:"HTML.TargetBlank";b:0;s:19:"HTML.TargetNoopener";b:1;s:21:"HTML.TargetNoreferrer";b:1;s:12:"HTML.TidyAdd";a:0:{}s:14:"HTML.TidyLevel";s:6:"medium";s:15:"HTML.TidyRemove";a:0:{}s:12:"HTML.Trusted";b:0;s:10:"HTML.XHTML";b:1;s:28:"Output.CommentScriptContents";b:1;s:19:"Output.FixInnerHTML";b:1;s:18:"Output.FlashCompat";b:0;s:14:"Output.Newline";N;s:15:"Output.SortAttr";b:0;s:17:"Output.TidyFormat";b:0;s:17:"Test.ForceNoIconv";b:0;s:18:"URI.AllowedSchemes";a:7:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;s:3:"tel";b:1;}s:8:"URI.Base";N;s:17:"URI.DefaultScheme";s:4:"http";s:16:"URI.DefinitionID";N;s:17:"URI.DefinitionRev";i:1;s:11:"URI.Disable";b:0;s:19:"URI.DisableExternal";b:0;s:28:"URI.DisableExternalResources";b:0;s:20:"URI.DisableResources";b:0;s:8:"URI.Host";N;s:17:"URI.HostBlacklist";a:0:{}s:16:"URI.MakeAbsolute";b:0;s:9:"URI.Munge";N;s:18:"URI.MungeResources";b:0;s:18:"URI.MungeSecretKey";N;s:26:"URI.OverrideAllowedSchemes";b:1;s:20:"URI.SafeIframeRegexp";N;}s:12:"defaultPlist";O:25:"HTMLPurifier_PropertyList":3:{s:7:"
+O:25:"HTMLPurifier_ConfigSchema":3:{s:8:"defaults";a:128:{s:19:"Attr.AllowedClasses";N;s:24:"Attr.AllowedFrameTargets";a:0:{}s:15:"Attr.AllowedRel";a:0:{}s:15:"Attr.AllowedRev";a:0:{}s:18:"Attr.ClassUseCDATA";N;s:20:"Attr.DefaultImageAlt";N;s:24:"Attr.DefaultInvalidImage";s:0:"";s:27:"Attr.DefaultInvalidImageAlt";s:13:"Invalid image";s:19:"Attr.DefaultTextDir";s:3:"ltr";s:13:"Attr.EnableID";b:0;s:21:"Attr.ForbiddenClasses";a:0:{}s:13:"Attr.ID.HTML5";N;s:16:"Attr.IDBlacklist";a:0:{}s:22:"Attr.IDBlacklistRegexp";N;s:13:"Attr.IDPrefix";s:0:"";s:18:"Attr.IDPrefixLocal";s:0:"";s:24:"AutoFormat.AutoParagraph";b:0;s:17:"AutoFormat.Custom";a:0:{}s:25:"AutoFormat.DisplayLinkURI";b:0;s:18:"AutoFormat.Linkify";b:0;s:33:"AutoFormat.PurifierLinkify.DocURL";s:3:"#%s";s:26:"AutoFormat.PurifierLinkify";b:0;s:32:"AutoFormat.RemoveEmpty.Predicate";a:4:{s:8:"colgroup";a:0:{}s:2:"th";a:0:{}s:2:"td";a:0:{}s:6:"iframe";a:1:{i:0;s:3:"src";}}s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";a:2:{s:2:"td";b:1;s:2:"th";b:1;}s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";b:0;s:22:"AutoFormat.RemoveEmpty";b:0;s:39:"AutoFormat.RemoveSpansWithoutAttributes";b:0;s:19:"CSS.AllowDuplicates";b:0;s:18:"CSS.AllowImportant";b:0;s:15:"CSS.AllowTricky";b:0;s:16:"CSS.AllowedFonts";N;s:21:"CSS.AllowedProperties";N;s:17:"CSS.DefinitionRev";i:1;s:23:"CSS.ForbiddenProperties";a:0:{}s:16:"CSS.MaxImgLength";s:6:"1200px";s:15:"CSS.Proprietary";b:0;s:11:"CSS.Trusted";b:0;s:20:"Cache.DefinitionImpl";s:10:"Serializer";s:20:"Cache.SerializerPath";N;s:27:"Cache.SerializerPermissions";i:493;s:22:"Core.AggressivelyFixLt";b:1;s:29:"Core.AggressivelyRemoveScript";b:1;s:28:"Core.AllowHostnameUnderscore";b:0;s:23:"Core.AllowParseManyTags";b:0;s:18:"Core.CollectErrors";b:0;s:18:"Core.ColorKeywords";a:148:{s:9:"aliceblue";s:7:"#F0F8FF";s:12:"antiquewhite";s:7:"#FAEBD7";s:4:"aqua";s:7:"#00FFFF";s:10:"aquamarine";s:7:"#7FFFD4";s:5:"azure";s:7:"#F0FFFF";s:5:"beige";s:7:"#F5F5DC";s:6:"bisque";s:7:"#FFE4C4";s:5:"black";s:7:"#000000";s:14:"blanchedalmond";s:7:"#FFEBCD";s:4:"blue";s:7:"#0000FF";s:10:"blueviolet";s:7:"#8A2BE2";s:5:"brown";s:7:"#A52A2A";s:9:"burlywood";s:7:"#DEB887";s:9:"cadetblue";s:7:"#5F9EA0";s:10:"chartreuse";s:7:"#7FFF00";s:9:"chocolate";s:7:"#D2691E";s:5:"coral";s:7:"#FF7F50";s:14:"cornflowerblue";s:7:"#6495ED";s:8:"cornsilk";s:7:"#FFF8DC";s:7:"crimson";s:7:"#DC143C";s:4:"cyan";s:7:"#00FFFF";s:8:"darkblue";s:7:"#00008B";s:8:"darkcyan";s:7:"#008B8B";s:13:"darkgoldenrod";s:7:"#B8860B";s:8:"darkgray";s:7:"#A9A9A9";s:8:"darkgrey";s:7:"#A9A9A9";s:9:"darkgreen";s:7:"#006400";s:9:"darkkhaki";s:7:"#BDB76B";s:11:"darkmagenta";s:7:"#8B008B";s:14:"darkolivegreen";s:7:"#556B2F";s:10:"darkorange";s:7:"#FF8C00";s:10:"darkorchid";s:7:"#9932CC";s:7:"darkred";s:7:"#8B0000";s:10:"darksalmon";s:7:"#E9967A";s:12:"darkseagreen";s:7:"#8FBC8F";s:13:"darkslateblue";s:7:"#483D8B";s:13:"darkslategray";s:7:"#2F4F4F";s:13:"darkslategrey";s:7:"#2F4F4F";s:13:"darkturquoise";s:7:"#00CED1";s:10:"darkviolet";s:7:"#9400D3";s:8:"deeppink";s:7:"#FF1493";s:11:"deepskyblue";s:7:"#00BFFF";s:7:"dimgray";s:7:"#696969";s:7:"dimgrey";s:7:"#696969";s:10:"dodgerblue";s:7:"#1E90FF";s:9:"firebrick";s:7:"#B22222";s:11:"floralwhite";s:7:"#FFFAF0";s:11:"forestgreen";s:7:"#228B22";s:7:"fuchsia";s:7:"#FF00FF";s:9:"gainsboro";s:7:"#DCDCDC";s:10:"ghostwhite";s:7:"#F8F8FF";s:4:"gold";s:7:"#FFD700";s:9:"goldenrod";s:7:"#DAA520";s:4:"gray";s:7:"#808080";s:4:"grey";s:7:"#808080";s:5:"green";s:7:"#008000";s:11:"greenyellow";s:7:"#ADFF2F";s:8:"honeydew";s:7:"#F0FFF0";s:7:"hotpink";s:7:"#FF69B4";s:9:"indianred";s:7:"#CD5C5C";s:6:"indigo";s:7:"#4B0082";s:5:"ivory";s:7:"#FFFFF0";s:5:"khaki";s:7:"#F0E68C";s:8:"lavender";s:7:"#E6E6FA";s:13:"lavenderblush";s:7:"#FFF0F5";s:9:"lawngreen";s:7:"#7CFC00";s:12:"lemonchiffon";s:7:"#FFFACD";s:9:"lightblue";s:7:"#ADD8E6";s:10:"lightcoral";s:7:"#F08080";s:9:"lightcyan";s:7:"#E0FFFF";s:20:"lightgoldenrodyellow";s:7:"#FAFAD2";s:9:"lightgray";s:7:"#D3D3D3";s:9:"lightgrey";s:7:"#D3D3D3";s:10:"lightgreen";s:7:"#90EE90";s:9:"lightpink";s:7:"#FFB6C1";s:11:"lightsalmon";s:7:"#FFA07A";s:13:"lightseagreen";s:7:"#20B2AA";s:12:"lightskyblue";s:7:"#87CEFA";s:14:"lightslategray";s:7:"#778899";s:14:"lightslategrey";s:7:"#778899";s:14:"lightsteelblue";s:7:"#B0C4DE";s:11:"lightyellow";s:7:"#FFFFE0";s:4:"lime";s:7:"#00FF00";s:9:"limegreen";s:7:"#32CD32";s:5:"linen";s:7:"#FAF0E6";s:7:"magenta";s:7:"#FF00FF";s:6:"maroon";s:7:"#800000";s:16:"mediumaquamarine";s:7:"#66CDAA";s:10:"mediumblue";s:7:"#0000CD";s:12:"mediumorchid";s:7:"#BA55D3";s:12:"mediumpurple";s:7:"#9370DB";s:14:"mediumseagreen";s:7:"#3CB371";s:15:"mediumslateblue";s:7:"#7B68EE";s:17:"mediumspringgreen";s:7:"#00FA9A";s:15:"mediumturquoise";s:7:"#48D1CC";s:15:"mediumvioletred";s:7:"#C71585";s:12:"midnightblue";s:7:"#191970";s:9:"mintcream";s:7:"#F5FFFA";s:9:"mistyrose";s:7:"#FFE4E1";s:8:"moccasin";s:7:"#FFE4B5";s:11:"navajowhite";s:7:"#FFDEAD";s:4:"navy";s:7:"#000080";s:7:"oldlace";s:7:"#FDF5E6";s:5:"olive";s:7:"#808000";s:9:"olivedrab";s:7:"#6B8E23";s:6:"orange";s:7:"#FFA500";s:9:"orangered";s:7:"#FF4500";s:6:"orchid";s:7:"#DA70D6";s:13:"palegoldenrod";s:7:"#EEE8AA";s:9:"palegreen";s:7:"#98FB98";s:13:"paleturquoise";s:7:"#AFEEEE";s:13:"palevioletred";s:7:"#DB7093";s:10:"papayawhip";s:7:"#FFEFD5";s:9:"peachpuff";s:7:"#FFDAB9";s:4:"peru";s:7:"#CD853F";s:4:"pink";s:7:"#FFC0CB";s:4:"plum";s:7:"#DDA0DD";s:10:"powderblue";s:7:"#B0E0E6";s:6:"purple";s:7:"#800080";s:13:"rebeccapurple";s:7:"#663399";s:3:"red";s:7:"#FF0000";s:9:"rosybrown";s:7:"#BC8F8F";s:9:"royalblue";s:7:"#4169E1";s:11:"saddlebrown";s:7:"#8B4513";s:6:"salmon";s:7:"#FA8072";s:10:"sandybrown";s:7:"#F4A460";s:8:"seagreen";s:7:"#2E8B57";s:8:"seashell";s:7:"#FFF5EE";s:6:"sienna";s:7:"#A0522D";s:6:"silver";s:7:"#C0C0C0";s:7:"skyblue";s:7:"#87CEEB";s:9:"slateblue";s:7:"#6A5ACD";s:9:"slategray";s:7:"#708090";s:9:"slategrey";s:7:"#708090";s:4:"snow";s:7:"#FFFAFA";s:11:"springgreen";s:7:"#00FF7F";s:9:"steelblue";s:7:"#4682B4";s:3:"tan";s:7:"#D2B48C";s:4:"teal";s:7:"#008080";s:7:"thistle";s:7:"#D8BFD8";s:6:"tomato";s:7:"#FF6347";s:9:"turquoise";s:7:"#40E0D0";s:6:"violet";s:7:"#EE82EE";s:5:"wheat";s:7:"#F5DEB3";s:5:"white";s:7:"#FFFFFF";s:10:"whitesmoke";s:7:"#F5F5F5";s:6:"yellow";s:7:"#FFFF00";s:11:"yellowgreen";s:7:"#9ACD32";}s:30:"Core.ConvertDocumentToFragment";b:1;s:36:"Core.DirectLexLineNumberSyncInterval";i:0;s:20:"Core.DisableExcludes";b:0;s:15:"Core.EnableIDNA";b:0;s:13:"Core.Encoding";s:5:"utf-8";s:26:"Core.EscapeInvalidChildren";b:0;s:22:"Core.EscapeInvalidTags";b:0;s:29:"Core.EscapeNonASCIICharacters";b:0;s:19:"Core.HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:13:"Core.Language";s:2:"en";s:24:"Core.LegacyEntityDecoder";b:0;s:14:"Core.LexerImpl";N;s:24:"Core.MaintainLineNumbers";N;s:22:"Core.NormalizeNewlines";b:1;s:17:"Core.RemoveBlanks";b:0;s:21:"Core.RemoveInvalidImg";b:1;s:33:"Core.RemoveProcessingInstructions";b:0;s:25:"Core.RemoveScriptContents";N;s:13:"Filter.Custom";a:0:{}s:34:"Filter.ExtractStyleBlocks.Escaping";b:1;s:31:"Filter.ExtractStyleBlocks.Scope";N;s:34:"Filter.ExtractStyleBlocks.TidyImpl";N;s:25:"Filter.ExtractStyleBlocks";b:0;s:14:"Filter.YouTube";b:0;s:12:"HTML.Allowed";N;s:22:"HTML.AllowedAttributes";N;s:20:"HTML.AllowedComments";a:0:{}s:26:"HTML.AllowedCommentsRegexp";N;s:20:"HTML.AllowedElements";N;s:19:"HTML.AllowedModules";N;s:23:"HTML.Attr.Name.UseCDATA";b:0;s:17:"HTML.BlockWrapper";s:1:"p";s:16:"HTML.CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:18:"HTML.CustomDoctype";N;s:17:"HTML.DefinitionID";N;s:18:"HTML.DefinitionRev";i:1;s:12:"HTML.Doctype";N;s:25:"HTML.FlashAllowFullScreen";b:0;s:24:"HTML.ForbiddenAttributes";a:0:{}s:22:"HTML.ForbiddenElements";a:0:{}s:10:"HTML.Forms";b:0;s:17:"HTML.MaxImgLength";i:1200;s:13:"HTML.Nofollow";b:0;s:11:"HTML.Parent";s:3:"div";s:16:"HTML.Proprietary";b:0;s:14:"HTML.SafeEmbed";b:0;s:15:"HTML.SafeIframe";b:0;s:15:"HTML.SafeObject";b:0;s:18:"HTML.SafeScripting";a:0:{}s:11:"HTML.Strict";b:0;s:16:"HTML.TargetBlank";b:0;s:19:"HTML.TargetNoopener";b:1;s:21:"HTML.TargetNoreferrer";b:1;s:12:"HTML.TidyAdd";a:0:{}s:14:"HTML.TidyLevel";s:6:"medium";s:15:"HTML.TidyRemove";a:0:{}s:12:"HTML.Trusted";b:0;s:10:"HTML.XHTML";b:1;s:28:"Output.CommentScriptContents";b:1;s:19:"Output.FixInnerHTML";b:1;s:18:"Output.FlashCompat";b:0;s:14:"Output.Newline";N;s:15:"Output.SortAttr";b:0;s:17:"Output.TidyFormat";b:0;s:17:"Test.ForceNoIconv";b:0;s:18:"URI.AllowedSchemes";a:7:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;s:3:"tel";b:1;}s:8:"URI.Base";N;s:17:"URI.DefaultScheme";s:4:"http";s:16:"URI.DefinitionID";N;s:17:"URI.DefinitionRev";i:1;s:11:"URI.Disable";b:0;s:19:"URI.DisableExternal";b:0;s:28:"URI.DisableExternalResources";b:0;s:20:"URI.DisableResources";b:0;s:8:"URI.Host";N;s:17:"URI.HostBlacklist";a:0:{}s:16:"URI.MakeAbsolute";b:0;s:9:"URI.Munge";N;s:18:"URI.MungeResources";b:0;s:18:"URI.MungeSecretKey";N;s:26:"URI.OverrideAllowedSchemes";b:1;s:20:"URI.SafeIframeRegexp";N;}s:12:"defaultPlist";O:25:"HTMLPurifier_PropertyList":3:{s:7:"
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveBlanks.txt b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveBlanks.txt
new file mode 100644
index 000000000..95e5285ca
--- /dev/null
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveBlanks.txt
@@ -0,0 +1,10 @@
+Core.RemoveBlanks
+TYPE: bool
+DEFAULT: false
+VERSION: 4.18
+--DESCRIPTION--
+<p>
+ If set to true, blank nodes will be removed. This can be useful for maintaining
+ backwards compatibility when upgrading from previous versions of PHP.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php
index 3ef2d09ec..0f2b83dc8 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php
@@ -116,8 +116,8 @@ class HTMLPurifier_EntityParser
protected function entityCallback($matches)
{
$entity = $matches[0];
- $hex_part = @$matches[1];
- $dec_part = @$matches[2];
+ $hex_part = isset($matches[1]) ? $matches[1] : null;
+ $dec_part = isset($matches[2]) ? $matches[2] : null;
$named_part = empty($matches[3]) ? (empty($matches[4]) ? "" : $matches[4]) : $matches[3];
if ($hex_part !== NULL && $hex_part !== "") {
return HTMLPurifier_Encoder::unichr(hexdec($hex_part));
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
index 6f8e7790e..e7e3cac1a 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
@@ -54,6 +54,11 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
*/
private $_enum_attrdef;
+ /**
+ * @type HTMLPurifier_AttrDef_Enum
+ */
+ private $_universal_attrdef;
+
public function __construct()
{
$this->_tidy = new csstidy();
@@ -70,6 +75,13 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
'focus'
)
);
+ $this->_universal_attrdef = new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'initial',
+ 'inherit',
+ 'unset',
+ )
+ );
}
/**
@@ -307,6 +319,11 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
unset($style[$name]);
continue;
}
+ $uni_ret = $this->_universal_attrdef->validate($value, $config, $context);
+ if ($uni_ret !== false) {
+ $style[$name] = $uni_ret;
+ continue;
+ }
$def = $css_definition->info[$name];
$ret = $def->validate($value, $config, $context);
if ($ret === false) {
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php
index f7e7c91c0..71dfc7744 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php
@@ -28,22 +28,28 @@ class HTMLPurifier_HTMLModule_Iframe extends HTMLPurifier_HTMLModule
if ($config->get('HTML.SafeIframe')) {
$this->safe = true;
}
+ $attrs = array(
+ 'src' => 'URI#embedded',
+ 'width' => 'Length',
+ 'height' => 'Length',
+ 'name' => 'ID',
+ 'scrolling' => 'Enum#yes,no,auto',
+ 'frameborder' => 'Enum#0,1',
+ 'longdesc' => 'URI',
+ 'marginheight' => 'Pixels',
+ 'marginwidth' => 'Pixels',
+ );
+
+ if ($config->get('HTML.Trusted')) {
+ $attrs['allowfullscreen'] = 'Bool#allowfullscreen';
+ }
+
$this->addElement(
'iframe',
'Inline',
'Flow',
'Common',
- array(
- 'src' => 'URI#embedded',
- 'width' => 'Length',
- 'height' => 'Length',
- 'name' => 'ID',
- 'scrolling' => 'Enum#yes,no,auto',
- 'frameborder' => 'Enum#0,1',
- 'longdesc' => 'URI',
- 'marginheight' => 'Pixels',
- 'marginwidth' => 'Pixels',
- )
+ $attrs
);
}
}
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php
index 1f552a17a..fe87fa4ba 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php
@@ -270,20 +270,6 @@ class HTMLPurifier_Lexer
}
/**
- * Special Internet Explorer conditional comments should be removed.
- * @param string $string HTML string to process.
- * @return string HTML with conditional comments removed.
- */
- protected static function removeIEConditional($string)
- {
- return preg_replace(
- '#<!--\[if [^>]+\]>.*?<!\[endif\]-->#si', // probably should generalize for all strings
- '',
- $string
- );
- }
-
- /**
* Callback function for escapeCDATA() that does the work.
*
* @warning Though this is public in order to let the callback happen,
@@ -323,8 +309,6 @@ class HTMLPurifier_Lexer
// escape CDATA
$html = $this->escapeCDATA($html);
- $html = $this->removeIEConditional($html);
-
// extract body from document if applicable
if ($config->get('Core.ConvertDocumentToFragment')) {
$e = false;
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php
index 5e8104be9..7d579837c 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php
@@ -72,6 +72,9 @@ class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer
if ($config->get('Core.AllowParseManyTags') && defined('LIBXML_PARSEHUGE')) {
$options |= LIBXML_PARSEHUGE;
}
+ if ($config->get('Core.RemoveBlanks') && defined('LIBXML_NOBLANKS')) {
+ $options |= LIBXML_NOBLANKS;
+ }
set_error_handler(array($this, 'muteErrorHandler'));
// loadHTML() fails on PHP 5.3 when second parameter is given
diff --git a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Tag.php b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Tag.php
index d643fa64e..dcf365589 100644
--- a/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Tag.php
+++ b/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Token/Tag.php
@@ -44,7 +44,7 @@ abstract class HTMLPurifier_Token_Tag extends HTMLPurifier_Token
$this->name = ctype_lower($name) ? $name : strtolower($name);
foreach ($attr as $key => $value) {
// normalization only necessary when key is not lowercase
- if (!ctype_lower($key)) {
+ if (!ctype_lower((string)$key)) {
$new_key = strtolower($key);
if (!isset($attr[$new_key])) {
$attr[$new_key] = $attr[$key];
diff --git a/vendor/paragonie/constant_time_encoding/README.md b/vendor/paragonie/constant_time_encoding/README.md
index cedddd863..211f0dc9f 100644
--- a/vendor/paragonie/constant_time_encoding/README.md
+++ b/vendor/paragonie/constant_time_encoding/README.md
@@ -1,6 +1,7 @@
# Constant-Time Encoding
[![Build Status](https://github.com/paragonie/constant_time_encoding/actions/workflows/ci.yml/badge.svg)](https://github.com/paragonie/constant_time_encoding/actions)
+[![Static Analysis](https://github.com/paragonie/constant_time_encoding/actions/workflows/psalm.yml/badge.svg)](https://github.com/paragonie/constant_time_encoding/actions)
[![Latest Stable Version](https://poser.pugx.org/paragonie/constant_time_encoding/v/stable)](https://packagist.org/packages/paragonie/constant_time_encoding)
[![Latest Unstable Version](https://poser.pugx.org/paragonie/constant_time_encoding/v/unstable)](https://packagist.org/packages/paragonie/constant_time_encoding)
[![License](https://poser.pugx.org/paragonie/constant_time_encoding/license)](https://packagist.org/packages/paragonie/constant_time_encoding)
@@ -11,7 +12,7 @@ this library aims to offer character encoding functions that do not leak
information about what you are encoding/decoding via processor cache
misses. Further reading on [cache-timing attacks](http://blog.ircmaxell.com/2014/11/its-all-about-time.html).
-Our fork offers the following enchancements:
+Our fork offers the following enhancements:
* `mbstring.func_overload` resistance
* Unit tests
@@ -22,10 +23,13 @@ Our fork offers the following enchancements:
## PHP Version Requirements
-Version 2 of this library should work on **PHP 7** or newer. For PHP 5
-support, see [the v1.x branch](https://github.com/paragonie/constant_time_encoding/tree/v1.x).
+Version 3 of this library should work on **PHP 8** or newer.
-If you are adding this as a dependency to a project intended to work on both PHP 5 and PHP 7, please set the required version to `^1|^2` instead of just `^1` or `^2`.
+Version 2 of this library should work on **PHP 7** or newer. See [the v2.x branch](https://github.com/paragonie/constant_time_encoding/tree/v2.x).
+
+For PHP 5 support, see [the v1.x branch](https://github.com/paragonie/constant_time_encoding/tree/v1.x).
+
+If you are adding this as a dependency to a project intended to work on PHP 5 through 8.4, please set the required version to `^1|^2|^3`.
## How to Install
diff --git a/vendor/paragonie/constant_time_encoding/composer.json b/vendor/paragonie/constant_time_encoding/composer.json
index 2fe9717ad..5023095b4 100644
--- a/vendor/paragonie/constant_time_encoding/composer.json
+++ b/vendor/paragonie/constant_time_encoding/composer.json
@@ -37,11 +37,11 @@
"source": "https://github.com/paragonie/constant_time_encoding"
},
"require": {
- "php": "^7|^8"
+ "php": "^8"
},
"require-dev": {
- "phpunit/phpunit": "^6|^7|^8|^9",
- "vimeo/psalm": "^1|^2|^3|^4"
+ "phpunit/phpunit": "^9",
+ "vimeo/psalm": "^4|^5"
},
"autoload": {
"psr-4": {
diff --git a/vendor/paragonie/constant_time_encoding/src/Base32.php b/vendor/paragonie/constant_time_encoding/src/Base32.php
index 7508b3df6..48d00b991 100644
--- a/vendor/paragonie/constant_time_encoding/src/Base32.php
+++ b/vendor/paragonie/constant_time_encoding/src/Base32.php
@@ -44,8 +44,11 @@ abstract class Base32 implements EncoderInterface
* @param bool $strictPadding
* @return string
*/
- public static function decode(string $encodedString, bool $strictPadding = false): string
- {
+ public static function decode(
+ #[\SensitiveParameter]
+ string $encodedString,
+ bool $strictPadding = false
+ ): string {
return static::doDecode($encodedString, false, $strictPadding);
}
@@ -56,8 +59,11 @@ abstract class Base32 implements EncoderInterface
* @param bool $strictPadding
* @return string
*/
- public static function decodeUpper(string $src, bool $strictPadding = false): string
- {
+ public static function decodeUpper(
+ #[\SensitiveParameter]
+ string $src,
+ bool $strictPadding = false
+ ): string {
return static::doDecode($src, true, $strictPadding);
}
@@ -68,10 +74,13 @@ abstract class Base32 implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encode(string $binString): string
- {
+ public static function encode(
+ #[\SensitiveParameter]
+ string $binString
+ ): string {
return static::doEncode($binString, false, true);
}
+
/**
* Encode into Base32 (RFC 4648)
*
@@ -79,8 +88,10 @@ abstract class Base32 implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encodeUnpadded(string $src): string
- {
+ public static function encodeUnpadded(
+ #[\SensitiveParameter]
+ string $src
+ ): string {
return static::doEncode($src, false, false);
}
@@ -91,8 +102,10 @@ abstract class Base32 implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encodeUpper(string $src): string
- {
+ public static function encodeUpper(
+ #[\SensitiveParameter]
+ string $src
+ ): string {
return static::doEncode($src, true, true);
}
@@ -103,8 +116,10 @@ abstract class Base32 implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encodeUpperUnpadded(string $src): string
- {
+ public static function encodeUpperUnpadded(
+ #[\SensitiveParameter]
+ string $src
+ ): string {
return static::doEncode($src, true, false);
}
@@ -191,8 +206,11 @@ abstract class Base32 implements EncoderInterface
* @param bool $upper
* @return string
*/
- public static function decodeNoPadding(string $encodedString, bool $upper = false): string
- {
+ public static function decodeNoPadding(
+ #[\SensitiveParameter]
+ string $encodedString,
+ bool $upper = false
+ ): string {
$srcLen = Binary::safeStrlen($encodedString);
if ($srcLen === 0) {
return '';
@@ -222,9 +240,9 @@ abstract class Base32 implements EncoderInterface
* @return string
*
* @throws TypeError
- * @psalm-suppress RedundantCondition
*/
protected static function doDecode(
+ #[\SensitiveParameter]
string $src,
bool $upper = false,
bool $strictPadding = false
@@ -434,8 +452,12 @@ abstract class Base32 implements EncoderInterface
* @return string
* @throws TypeError
*/
- protected static function doEncode(string $src, bool $upper = false, $pad = true): string
- {
+ protected static function doEncode(
+ #[\SensitiveParameter]
+ string $src,
+ bool $upper = false,
+ $pad = true
+ ): string {
// We do this to reduce code duplication:
$method = $upper
? 'encode5BitsUpper'
diff --git a/vendor/paragonie/constant_time_encoding/src/Base64.php b/vendor/paragonie/constant_time_encoding/src/Base64.php
index f5716179f..2e3ecc859 100644
--- a/vendor/paragonie/constant_time_encoding/src/Base64.php
+++ b/vendor/paragonie/constant_time_encoding/src/Base64.php
@@ -47,8 +47,10 @@ abstract class Base64 implements EncoderInterface
*
* @throws TypeError
*/
- public static function encode(string $binString): string
- {
+ public static function encode(
+ #[\SensitiveParameter]
+ string $binString
+ ): string {
return static::doEncode($binString, true);
}
@@ -62,8 +64,10 @@ abstract class Base64 implements EncoderInterface
*
* @throws TypeError
*/
- public static function encodeUnpadded(string $src): string
- {
+ public static function encodeUnpadded(
+ #[\SensitiveParameter]
+ string $src
+ ): string {
return static::doEncode($src, false);
}
@@ -74,8 +78,11 @@ abstract class Base64 implements EncoderInterface
*
* @throws TypeError
*/
- protected static function doEncode(string $src, bool $pad = true): string
- {
+ protected static function doEncode(
+ #[\SensitiveParameter]
+ string $src,
+ bool $pad = true
+ ): string {
$dest = '';
$srcLen = Binary::safeStrlen($src);
// Main loop (no padding):
@@ -129,10 +136,12 @@ abstract class Base64 implements EncoderInterface
*
* @throws RangeException
* @throws TypeError
- * @psalm-suppress RedundantCondition
*/
- public static function decode(string $encodedString, bool $strictPadding = false): string
- {
+ public static function decode(
+ #[\SensitiveParameter]
+ string $encodedString,
+ bool $strictPadding = false
+ ): string {
// Remove padding
$srcLen = Binary::safeStrlen($encodedString);
if ($srcLen === 0) {
@@ -227,25 +236,21 @@ abstract class Base64 implements EncoderInterface
* @param string $encodedString
* @return string
*/
- public static function decodeNoPadding(string $encodedString): string
- {
+ public static function decodeNoPadding(
+ #[\SensitiveParameter]
+ string $encodedString
+ ): string {
$srcLen = Binary::safeStrlen($encodedString);
if ($srcLen === 0) {
return '';
}
if (($srcLen & 3) === 0) {
- if ($encodedString[$srcLen - 1] === '=') {
+ // If $strLen is not zero, and it is divisible by 4, then it's at least 4.
+ if ($encodedString[$srcLen - 1] === '=' || $encodedString[$srcLen - 2] === '=') {
throw new InvalidArgumentException(
"decodeNoPadding() doesn't tolerate padding"
);
}
- if (($srcLen & 3) > 1) {
- if ($encodedString[$srcLen - 2] === '=') {
- throw new InvalidArgumentException(
- "decodeNoPadding() doesn't tolerate padding"
- );
- }
- }
}
return static::decode(
$encodedString,
diff --git a/vendor/paragonie/constant_time_encoding/src/Binary.php b/vendor/paragonie/constant_time_encoding/src/Binary.php
index 828f3e0f6..a958f2f7c 100644
--- a/vendor/paragonie/constant_time_encoding/src/Binary.php
+++ b/vendor/paragonie/constant_time_encoding/src/Binary.php
@@ -45,8 +45,10 @@ abstract class Binary
* @param string $str
* @return int
*/
- public static function safeStrlen(string $str): int
- {
+ public static function safeStrlen(
+ #[\SensitiveParameter]
+ string $str
+ ): int {
if (\function_exists('mb_strlen')) {
// mb_strlen in PHP 7.x can return false.
/** @psalm-suppress RedundantCast */
@@ -70,9 +72,10 @@ abstract class Binary
* @throws TypeError
*/
public static function safeSubstr(
+ #[\SensitiveParameter]
string $str,
int $start = 0,
- $length = null
+ ?int $length = null
): string {
if ($length === 0) {
return '';
diff --git a/vendor/paragonie/constant_time_encoding/src/Encoding.php b/vendor/paragonie/constant_time_encoding/src/Encoding.php
index 8649f31fc..8b7e3878e 100644
--- a/vendor/paragonie/constant_time_encoding/src/Encoding.php
+++ b/vendor/paragonie/constant_time_encoding/src/Encoding.php
@@ -40,8 +40,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32Encode(string $str): string
- {
+ public static function base32Encode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::encode($str);
}
@@ -52,8 +54,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32EncodeUpper(string $str): string
- {
+ public static function base32EncodeUpper(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::encodeUpper($str);
}
@@ -64,8 +68,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32Decode(string $str): string
- {
+ public static function base32Decode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::decode($str);
}
@@ -76,8 +82,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32DecodeUpper(string $str): string
- {
+ public static function base32DecodeUpper(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::decodeUpper($str);
}
@@ -88,8 +96,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32HexEncode(string $str): string
- {
+ public static function base32HexEncode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32Hex::encode($str);
}
@@ -100,8 +110,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32HexEncodeUpper(string $str): string
- {
+ public static function base32HexEncodeUpper(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32Hex::encodeUpper($str);
}
@@ -112,8 +124,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32HexDecode(string $str): string
- {
+ public static function base32HexDecode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32Hex::decode($str);
}
@@ -124,8 +138,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base32HexDecodeUpper(string $str): string
- {
+ public static function base32HexDecodeUpper(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32Hex::decodeUpper($str);
}
@@ -136,8 +152,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base64Encode(string $str): string
- {
+ public static function base64Encode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64::encode($str);
}
@@ -148,8 +166,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base64Decode(string $str): string
- {
+ public static function base64Decode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64::decode($str);
}
@@ -161,8 +181,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base64EncodeDotSlash(string $str): string
- {
+ public static function base64EncodeDotSlash(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64DotSlash::encode($str);
}
@@ -176,8 +198,10 @@ abstract class Encoding
* @throws \RangeException
* @throws TypeError
*/
- public static function base64DecodeDotSlash(string $str): string
- {
+ public static function base64DecodeDotSlash(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64DotSlash::decode($str);
}
@@ -189,8 +213,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function base64EncodeDotSlashOrdered(string $str): string
- {
+ public static function base64EncodeDotSlashOrdered(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64DotSlashOrdered::encode($str);
}
@@ -204,8 +230,10 @@ abstract class Encoding
* @throws \RangeException
* @throws TypeError
*/
- public static function base64DecodeDotSlashOrdered(string $str): string
- {
+ public static function base64DecodeDotSlashOrdered(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64DotSlashOrdered::decode($str);
}
@@ -217,8 +245,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function hexEncode(string $bin_string): string
- {
+ public static function hexEncode(
+ #[\SensitiveParameter]
+ string $bin_string
+ ): string {
return Hex::encode($bin_string);
}
@@ -230,8 +260,10 @@ abstract class Encoding
* @return string (raw binary)
* @throws \RangeException
*/
- public static function hexDecode(string $hex_string): string
- {
+ public static function hexDecode(
+ #[\SensitiveParameter]
+ string $hex_string
+ ): string {
return Hex::decode($hex_string);
}
@@ -243,8 +275,10 @@ abstract class Encoding
* @return string
* @throws TypeError
*/
- public static function hexEncodeUpper(string $bin_string): string
- {
+ public static function hexEncodeUpper(
+ #[\SensitiveParameter]
+ string $bin_string
+ ): string {
return Hex::encodeUpper($bin_string);
}
@@ -255,8 +289,10 @@ abstract class Encoding
* @param string $bin_string (raw binary)
* @return string
*/
- public static function hexDecodeUpper(string $bin_string): string
- {
+ public static function hexDecodeUpper(
+ #[\SensitiveParameter]
+ string $bin_string
+ ): string {
return Hex::decode($bin_string);
}
}
diff --git a/vendor/paragonie/constant_time_encoding/src/Hex.php b/vendor/paragonie/constant_time_encoding/src/Hex.php
index a9e058cd3..97c2046f0 100644
--- a/vendor/paragonie/constant_time_encoding/src/Hex.php
+++ b/vendor/paragonie/constant_time_encoding/src/Hex.php
@@ -42,8 +42,10 @@ abstract class Hex implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encode(string $binString): string
- {
+ public static function encode(
+ #[\SensitiveParameter]
+ string $binString
+ ): string {
$hex = '';
$len = Binary::safeStrlen($binString);
for ($i = 0; $i < $len; ++$i) {
@@ -69,8 +71,10 @@ abstract class Hex implements EncoderInterface
* @return string
* @throws TypeError
*/
- public static function encodeUpper(string $binString): string
- {
+ public static function encodeUpper(
+ #[\SensitiveParameter]
+ string $binString
+ ): string {
$hex = '';
$len = Binary::safeStrlen($binString);
@@ -99,6 +103,7 @@ abstract class Hex implements EncoderInterface
* @throws RangeException
*/
public static function decode(
+ #[\SensitiveParameter]
string $encodedString,
bool $strictPadding = false
): string {
diff --git a/vendor/paragonie/constant_time_encoding/src/RFC4648.php b/vendor/paragonie/constant_time_encoding/src/RFC4648.php
index f124d65bf..7cd2e9909 100644
--- a/vendor/paragonie/constant_time_encoding/src/RFC4648.php
+++ b/vendor/paragonie/constant_time_encoding/src/RFC4648.php
@@ -46,8 +46,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base64Encode(string $str): string
- {
+ public static function base64Encode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64::encode($str);
}
@@ -61,8 +63,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base64Decode(string $str): string
- {
+ public static function base64Decode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64::decode($str, true);
}
@@ -76,8 +80,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base64UrlSafeEncode(string $str): string
- {
+ public static function base64UrlSafeEncode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64UrlSafe::encode($str);
}
@@ -91,8 +97,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base64UrlSafeDecode(string $str): string
- {
+ public static function base64UrlSafeDecode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base64UrlSafe::decode($str, true);
}
@@ -106,8 +114,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base32Encode(string $str): string
- {
+ public static function base32Encode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::encodeUpper($str);
}
@@ -121,8 +131,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base32Decode(string $str): string
- {
+ public static function base32Decode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::decodeUpper($str, true);
}
@@ -136,8 +148,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base32HexEncode(string $str): string
- {
+ public static function base32HexEncode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::encodeUpper($str);
}
@@ -151,8 +165,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base32HexDecode(string $str): string
- {
+ public static function base32HexDecode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Base32::decodeUpper($str, true);
}
@@ -166,8 +182,10 @@ abstract class RFC4648
*
* @throws TypeError
*/
- public static function base16Encode(string $str): string
- {
+ public static function base16Encode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Hex::encodeUpper($str);
}
@@ -179,8 +197,10 @@ abstract class RFC4648
* @param string $str
* @return string
*/
- public static function base16Decode(string $str): string
- {
+ public static function base16Decode(
+ #[\SensitiveParameter]
+ string $str
+ ): string {
return Hex::decode($str, true);
}
-} \ No newline at end of file
+}
diff --git a/vendor/phpseclib/phpseclib/BACKERS.md b/vendor/phpseclib/phpseclib/BACKERS.md
index efca482ad..cafcf60a2 100644
--- a/vendor/phpseclib/phpseclib/BACKERS.md
+++ b/vendor/phpseclib/phpseclib/BACKERS.md
@@ -14,4 +14,6 @@ phpseclib ongoing development is made possible by [Tidelift](https://tidelift.co
- Tharyrok
- [cjhaas](https://github.com/cjhaas)
- [istiak-tridip](https://github.com/istiak-tridip)
-- [Anna Filina](https://github.com/afilina) \ No newline at end of file
+- [Anna Filina](https://github.com/afilina)
+- [blakemckeeby](https://github.com/blakemckeeby)
+- [ssddanbrown](https://github.com/ssddanbrown) \ No newline at end of file
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php b/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
index ab5944cde..2d4225a3f 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
@@ -611,7 +611,6 @@ abstract class Base
*
* @access public
* @param string $key
- * @internal Could, but not must, extend by the child Crypt_* class
*/
function setKey($key)
{
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php b/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
index fec689585..7f5df1d5f 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
@@ -1396,9 +1396,14 @@ class RSA
$this->components = array();
$xml = xml_parser_create('UTF-8');
- xml_set_object($xml, $this);
- xml_set_element_handler($xml, '_start_element_handler', '_stop_element_handler');
- xml_set_character_data_handler($xml, '_data_handler');
+ if (version_compare(PHP_VERSION, '8.4.0', '>=')) {
+ xml_set_element_handler($xml, array($this, '_start_element_handler'), array($this, '_stop_element_handler'));
+ xml_set_character_data_handler($xml, array($this, '_data_handler'));
+ } else {
+ xml_set_object($xml, $this);
+ xml_set_element_handler($xml, '_start_element_handler', '_stop_element_handler');
+ xml_set_character_data_handler($xml, '_data_handler');
+ }
// add <xml></xml> to account for "dangling" tags like <BitStrength>...</BitStrength> that are sometimes added
if (!xml_parse($xml, '<xml>' . $key . '</xml>')) {
xml_parser_free($xml);
diff --git a/vendor/phpseclib/phpseclib/phpseclib/File/X509.php b/vendor/phpseclib/phpseclib/phpseclib/File/X509.php
index 7b8d96e29..64e22655c 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/File/X509.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/File/X509.php
@@ -3847,7 +3847,8 @@ class X509
array(
'version' => 'v1',
'subject' => $this->dn,
- 'subjectPKInfo' => $publicKey
+ 'subjectPKInfo' => $publicKey,
+ 'attributes' => array()
),
'signatureAlgorithm' => array('algorithm' => $signatureAlgorithm),
'signature' => false // this is going to be overwritten later
@@ -4003,11 +4004,11 @@ class X509
$version = isset($tbsCertList['version']) ? $tbsCertList['version'] : 0;
if (!$version) {
if (!empty($tbsCertList['crlExtensions'])) {
- $version = 1; // v2.
+ $version = 'v2'; // v2.
} elseif (!empty($tbsCertList['revokedCertificates'])) {
foreach ($tbsCertList['revokedCertificates'] as $cert) {
if (!empty($cert['crlEntryExtensions'])) {
- $version = 1; // v2.
+ $version = 'v2'; // v2.
}
}
}
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php b/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php
index 7747a95b6..5f2283678 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php
@@ -251,8 +251,17 @@ class BigInteger
function __construct($x = 0, $base = 10)
{
if (!defined('MATH_BIGINTEGER_MODE')) {
+
+ // https://github.com/php/php-src/commit/e0a0e216a909dc4ee4ea7c113a5f41d49525f02e broke GMP
+ // https://github.com/php/php-src/commit/424ba0f2ff9677d16b4e339e90885bd4bc49fcf1 fixed it
+ // see https://github.com/php/php-src/issues/16870 for more info
+ if (version_compare(PHP_VERSION, '8.2.26', '<')) {
+ $gmpOK = true;
+ } else {
+ $gmpOK = !in_array(PHP_VERSION_ID, array(80226, 80314, 80400, 80401));
+ }
switch (true) {
- case extension_loaded('gmp'):
+ case extension_loaded('gmp') && $gmpOK:
define('MATH_BIGINTEGER_MODE', self::MODE_GMP);
break;
case extension_loaded('bcmath'):
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php b/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php
index 28b568062..1c6ef7f9a 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php
@@ -758,7 +758,8 @@ class SFTP extends SSH2
return false;
}
$this->canonicalize_paths = false;
- $this->_reset_connection(NET_SSH2_DISCONNECT_CONNECTION_LOST);
+ $this->_reset_sftp();
+ return $this->_init_sftp_connection();
}
$this->_update_stat_cache($this->pwd, array());
@@ -3629,14 +3630,12 @@ class SFTP extends SSH2
}
/**
- * Resets a connection for re-use
+ * Resets the SFTP channel for re-use
*
- * @param int $reason
* @access private
*/
- function _reset_connection($reason)
+ function _reset_sftp()
{
- parent::_reset_connection($reason);
$this->use_request_id = false;
$this->pwd = false;
$this->requestBuffer = array();
@@ -3644,6 +3643,18 @@ class SFTP extends SSH2
}
/**
+ * Resets a connection for re-use
+ *
+ * @param int $reason
+ * @access private
+ */
+ function _reset_connection($reason)
+ {
+ parent::_reset_connection($reason);
+ $this->_reset_sftp();
+ }
+
+ /**
* Receives SFTP Packets
*
* See '6. General Packet Format' of draft-ietf-secsh-filexfer-13 for more info.
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php b/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php
index 607cc2145..775d894fb 100644
--- a/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php
+++ b/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php
@@ -147,6 +147,10 @@ class SSH2
*/
const LOG_REALTIME_FILE = 4;
/**
+ * Dumps the message numbers real-time
+ */
+ const LOG_REALTIME_SIMPLE = 5;
+ /**
* Make sure that the log never gets larger than this
*/
const LOG_MAX_SIZE = 1048576; // 1024 * 1024
@@ -1005,7 +1009,7 @@ class SSH2
* @var bool
* @access private
*/
- var $retry_connect = false;
+ var $login_credentials_finalized = false;
/**
* Binary Packet Buffer
@@ -1097,12 +1101,57 @@ class SSH2
var $smartMFA = true;
/**
- * Extra packets counter
+ * Bytes Transferred Since Last Key Exchange
+ *
+ * Includes outbound and inbound totals
*
+ * @var int
+ * @access private
+ */
+ var $bytesTransferredSinceLastKEX = 0;
+
+ /**
+ * After how many transferred byte should phpseclib initiate a key re-exchange?
+ *
+ * @var int
+ * @access private
+ */
+ var $doKeyReexchangeAfterXBytes = 1073741824;
+
+ /**
+ * Has a key re-exchange been initialized?
+ *
* @var bool
* @access private
*/
- var $extra_packets;
+ var $keyExchangeInProgress = false;
+
+ /**
+ * KEX Buffer
+ *
+ * If we're in the middle of a key exchange we want to buffer any additional packets we get until
+ * the key exchange is over
+ *
+ * @see self::_get_binary_packet()
+ * @see self::_key_exchange()
+ * @see self::exec()
+ * @var array
+ * @access private
+ */
+ var $kex_buffer = array();
+
+ /**
+ * Strict KEX Flag
+ *
+ * If kex-strict-s-v00@openssh.com is present in the first KEX packet it need not
+ * be present in subsequent packet
+ *
+ * @see self::_key_exchange()
+ * @see self::exec()
+ * @var array
+ * @access private
+ */
+ var $strict_kex_flag = false;
/**
* Default Constructor.
@@ -1361,25 +1410,17 @@ class SSH2
}
$temp = stream_get_line($this->fsock, 255, "\n");
- if (strlen($temp) == 255) {
- continue;
- }
if ($temp === false) {
return false;
}
- $line.= "$temp\n";
-
- // quoting RFC4253, "Implementers who wish to maintain
- // compatibility with older, undocumented versions of this protocol may
- // want to process the identification string without expecting the
- // presence of the carriage return character for reasons described in
- // Section 5 of this document."
+ $line .= $temp;
+ if (strlen($temp) == 255) {
+ continue;
+ }
- //if (substr($line, -2) == "\r\n") {
- // break;
- //}
+ $line .= "\n";
break;
}
@@ -1400,7 +1441,8 @@ class SSH2
$this->_append_log('->', $this->identifier . "\r\n");
}
- $this->server_identifier = trim($temp, "\r\n");
+ $this->server_identifier = trim($data, "\r\n");
+
if (strlen($extra)) {
$this->errors[] = $data;
}
@@ -1485,8 +1527,13 @@ class SSH2
*/
function _key_exchange($kexinit_payload_server = false)
{
+ $this->bytesTransferredSinceLastKEX = 0;
+
$preferred = $this->preferred;
- $send_kex = true;
+ // for the initial key exchange $send_kex is true (no key re-exchange has been started)
+ // for phpseclib initiated key exchanges $send_kex is false
+ $send_kex = !$this->keyExchangeInProgress;
+ $this->keyExchangeInProgress = true;
$kex_algorithms = isset($preferred['kex']) ?
$preferred['kex'] :
@@ -1572,22 +1619,29 @@ class SSH2
0
);
- if ($kexinit_payload_server === false) {
+ if ($kexinit_payload_server === false && $send_kex) {
if (!$this->_send_binary_packet($kexinit_payload_client)) {
return false;
}
- $this->extra_packets = 0;
- $kexinit_payload_server = $this->_get_binary_packet();
- if ($kexinit_payload_server === false) {
- $this->bitmap = 0;
- user_error('Connection closed by server');
- return false;
- }
+ while (true) {
+ $kexinit_payload_server = $this->_get_binary_packet();
+ if ($kexinit_payload_server === false) {
+ $this->bitmap = 0;
+ user_error('Connection closed by server');
+ return false;
+ }
+
+ if (strlen($kexinit_payload_server)) {
+ switch (ord($kexinit_payload_server[0])) {
+ case NET_SSH2_MSG_KEXINIT:
+ break 2;
+ case NET_SSH2_MSG_DISCONNECT:
+ return $this->_handleDisconnect($kexinit_payload_server);
+ }
+ }
- if (!strlen($kexinit_payload_server) || ord($kexinit_payload_server[0]) != NET_SSH2_MSG_KEXINIT) {
- user_error('Expected SSH_MSG_KEXINIT');
- return false;
+ $this->kex_buffer[] = $kexinit_payload_server;
}
$send_kex = false;
@@ -1603,9 +1657,14 @@ class SSH2
$temp = unpack('Nlength', $this->_string_shift($response, 4));
$this->kex_algorithms = explode(',', $this->_string_shift($response, $temp['length']));
if (in_array('kex-strict-s-v00@openssh.com', $this->kex_algorithms)) {
- if ($this->session_id === false && $this->extra_packets) {
- user_error('Possible Terrapin Attack detected');
- return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
+ if ($this->session_id === false) {
+ // [kex-strict-s-v00@openssh.com is] only valid in the initial SSH2_MSG_KEXINIT and MUST be ignored
+ // if [it is] present in subsequent SSH2_MSG_KEXINIT packets
+ $this->strict_kex_flag = true;
+ if (count($this->kex_buffer)) {
+ user_error('Possible Terrapin Attack detected');
+ return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
+ }
}
}
@@ -2014,7 +2073,9 @@ class SSH2
return false;
}
- if (in_array('kex-strict-s-v00@openssh.com', $this->kex_algorithms)) {
+ $this->keyExchangeInProgress = false;
+
+ if ($this->strict_kex_flag) {
$this->get_seq_no = $this->send_seq_no = 0;
}
@@ -2292,7 +2353,7 @@ class SSH2
function login($username)
{
$args = func_get_args();
- if (!$this->retry_connect) {
+ if (!$this->login_credentials_finalized) {
$this->auth[] = $args;
}
@@ -2383,6 +2444,7 @@ class SSH2
foreach ($newargs as $arg) {
if ($this->_login_helper($username, $arg)) {
+ $this->login_credentials_finalized = true;
return true;
}
}
@@ -2418,10 +2480,14 @@ class SSH2
return false;
}
+ $bad_key_size_fix = $this->bad_key_size_fix;
$response = $this->_get_binary_packet();
if ($response === false) {
- if ($this->retry_connect) {
- $this->retry_connect = false;
+ // bad_key_size_fix is only ever re-assigned to true
+ // under certain conditions. when it's newly set we'll
+ // retry the connection with that new setting but we'll
+ // only try it once.
+ if ($bad_key_size_fix != $this->bad_key_size_fix) {
if (!$this->_connect()) {
return false;
}
@@ -2790,10 +2856,12 @@ class SSH2
{
$this->agent = $agent;
$keys = $agent->requestIdentities();
+ $orig_algorithms = $this->supported_private_key_algorithms;
foreach ($keys as $key) {
if ($this->_privatekey_login($username, $key)) {
return true;
}
+ $this->supported_private_key_algorithms = $orig_algorithms;
}
return false;
@@ -3551,7 +3619,6 @@ class SSH2
function _reconnect()
{
$this->_reset_connection(NET_SSH2_DISCONNECT_CONNECTION_LOST);
- $this->retry_connect = true;
if (!$this->_connect()) {
return false;
}
@@ -3575,7 +3642,6 @@ class SSH2
$this->hmac_check = $this->hmac_create = false;
$this->hmac_size = false;
$this->session_id = false;
- $this->retry_connect = true;
$this->get_seq_no = $this->send_seq_no = 0;
}
@@ -3590,6 +3656,10 @@ class SSH2
*/
function _get_binary_packet($skip_channel_filter = false)
{
+ if (!$this->keyExchangeInProgress && count($this->kex_buffer)) {
+ return $this->_filter(array_shift($this->kex_buffer), $skip_channel_filter);
+ }
+
if ($skip_channel_filter) {
$read = array($this->fsock);
$write = $except = null;
@@ -3674,9 +3744,13 @@ class SSH2
$remaining_length = $packet_length + 4 - $this->decrypt_block_size;
+ if (!$this->keyExchangeInProgress) {
+ $this->bytesTransferredSinceLastKEX+= $packet_length + $padding_length + 5;
+ }
+
// quoting <http://tools.ietf.org/html/rfc4253#section-6.1>,
// "implementations SHOULD check that the packet length is reasonable"
- // PuTTY uses 0x9000 as the actual max packet size and so to shall we
+ // PuTTY uses 0x9000 as the actual max packet size and so, too, shall we
if ($remaining_length < -$this->decrypt_block_size || $remaining_length > 0x9000 || $remaining_length % $this->decrypt_block_size != 0) {
if (!$this->bad_key_size_fix && $this->_bad_algorithm_candidate($this->decryptName) && !($this->bitmap & SSH2::MASK_LOGIN)) {
$this->bad_key_size_fix = true;
@@ -3766,7 +3840,34 @@ class SSH2
$this->last_packet = $current;
}
- return $this->_filter($payload, $skip_channel_filter);
+ if ($this->bytesTransferredSinceLastKEX > $this->doKeyReexchangeAfterXBytes) {
+ $this->_key_exchange();
+ }
+
+ // don't filter if we're in the middle of a key exchange (since _filter might send out packets)
+ return $this->keyExchangeInProgress ? $payload : $this->_filter($payload, $skip_channel_filter);
+ }
+
+ /**
+ * Handle Disconnect
+ *
+ * Because some binary packets need to be ignored...
+ *
+ * @see self::_filter()
+ * @see self::_key_exchange
+ * @return boolean
+ * @access private
+ */
+ function _handleDisconnect($payload)
+ {
+ $this->_string_shift($payload, 1);
+ if (strlen($payload) < 8) {
+ return false;
+ }
+ extract(unpack('Nreason_code/Nlength', $this->_string_shift($payload, 8)));
+ $this->errors[] = 'SSH_MSG_DISCONNECT: ' . $this->disconnect_reasons[$reason_code] . "\r\n" . $this->_string_shift($payload, $length);
+ $this->bitmap = 0;
+ return false;
}
/**
@@ -3782,20 +3883,11 @@ class SSH2
{
switch (ord($payload[0])) {
case NET_SSH2_MSG_DISCONNECT:
- $this->_string_shift($payload, 1);
- if (strlen($payload) < 8) {
- return false;
- }
- extract(unpack('Nreason_code/Nlength', $this->_string_shift($payload, 8)));
- $this->errors[] = 'SSH_MSG_DISCONNECT: ' . $this->disconnect_reasons[$reason_code] . "\r\n" . $this->_string_shift($payload, $length);
- $this->bitmap = 0;
- return false;
+ return $this->_handleDisconnect($payload);
case NET_SSH2_MSG_IGNORE:
- $this->extra_packets++;
$payload = $this->_get_binary_packet($skip_channel_filter);
break;
case NET_SSH2_MSG_DEBUG:
- $this->extra_packets++;
$this->_string_shift($payload, 2);
if (strlen($payload) < 4) {
return false;
@@ -3807,7 +3899,7 @@ class SSH2
case NET_SSH2_MSG_UNIMPLEMENTED:
return false;
case NET_SSH2_MSG_KEXINIT:
- // this is here for key re-exchanges after the initial key exchange
+ // this is here for server initiated key re-exchanges after the initial key exchange
if ($this->session_id !== false) {
$this->send_kex_first = false;
if (!$this->_key_exchange($payload)) {
@@ -3816,6 +3908,28 @@ class SSH2
}
$payload = $this->_get_binary_packet($skip_channel_filter);
}
+ break;
+ case NET_SSH2_MSG_EXT_INFO:
+ $this->_string_shift($payload, 1);
+ if (strlen($payload) < 4) {
+ return false;
+ }
+ $nr_extensions = unpack('Nlength', $this->_string_shift($payload, 4));
+ for ($i = 0; $i < $nr_extensions['length']; $i++) {
+ if (strlen($payload) < 4) {
+ return false;
+ }
+ $temp = unpack('Nlength', $this->_string_shift($payload, 4));
+ $extension_name = $this->_string_shift($payload, $temp['length']);
+ if ($extension_name == 'server-sig-algs') {
+ if (strlen($payload) < 4) {
+ return false;
+ }
+ $temp = unpack('Nlength', $this->_string_shift($payload, 4));
+ $this->supported_private_key_algorithms = explode(',', $this->_string_shift($payload, $temp['length']));
+ }
+ }
+ $payload = $this->_get_binary_packet($skip_channel_filter);
}
// see http://tools.ietf.org/html/rfc4252#section-5.4; only called when the encryption has been activated and when we haven't already logged in
@@ -4059,9 +4173,6 @@ class SSH2
} else {
$response = $this->_get_binary_packet(true);
if ($response === true && $this->is_timeout) {
- if ($client_channel == self::CHANNEL_EXEC && !$this->request_pty) {
- $this->_close_channel($client_channel);
- }
return true;
}
if ($response === false) {
@@ -4352,6 +4463,10 @@ class SSH2
$packet.= $hmac;
+ if (!$this->keyExchangeInProgress) {
+ $this->bytesTransferredSinceLastKEX+= strlen($packet);
+ }
+
$start = microtime(true);
$result = strlen($packet) == @fputs($this->fsock, $packet);
$stop = microtime(true);
@@ -4365,6 +4480,10 @@ class SSH2
$this->last_packet = $current;
}
+ if ($this->bytesTransferredSinceLastKEX > $this->doKeyReexchangeAfterXBytes) {
+ $this->_key_exchange();
+ }
+
return $result;
}
@@ -4442,6 +4561,10 @@ class SSH2
$this->realtime_log_wrap = true;
}
fputs($this->realtime_log_file, $entry);
+ break;
+ case NET_SSH2_LOG_REALTIME_SIMPLE:
+ echo $message_number;
+ echo PHP_SAPI == 'cli' ? "\r\n" : '<br>';
}
}
@@ -5111,42 +5234,66 @@ class SSH2
*/
function setPreferredAlgorithms($methods)
{
+ $keys = array('client_to_server', 'server_to_client');
+
+ if (isset($methods['kex']) && is_string($methods['kex'])) {
+ $methods['kex'] = explode(',', $methods['kex']);
+ }
+
+ if (isset($methods['hostkey']) && is_string($methods['hostkey'])) {
+ $methods['hostkey'] = explode(',', $methods['hostkey']);
+ }
+
+ foreach ($keys as $key) {
+ if (isset($methods[$key])) {
+ $a = &$methods[$key];
+ if (isset($a['crypt']) && is_string($a['crypt'])) {
+ $a['crypt'] = explode(',', $a['crypt']);
+ }
+ if (isset($a['comp']) && is_string($a['comp'])) {
+ $a['comp'] = explode(',', $a['comp']);
+ }
+ if (isset($a['mac']) && is_string($a['mac'])) {
+ $a['mac'] = explode(',', $a['mac']);
+ }
+ }
+ }
+
$preferred = $methods;
if (isset($preferred['kex'])) {
$preferred['kex'] = array_intersect(
$preferred['kex'],
- $this->getSupportedKEXAlgorithms()
+ static::getSupportedKEXAlgorithms()
);
}
if (isset($preferred['hostkey'])) {
$preferred['hostkey'] = array_intersect(
$preferred['hostkey'],
- $this->getSupportedHostKeyAlgorithms()
+ static::getSupportedHostKeyAlgorithms()
);
}
- $keys = array('client_to_server', 'server_to_client');
foreach ($keys as $key) {
if (isset($preferred[$key])) {
$a = &$preferred[$key];
if (isset($a['crypt'])) {
$a['crypt'] = array_intersect(
$a['crypt'],
- $this->getSupportedEncryptionAlgorithms()
+ static::getSupportedEncryptionAlgorithms()
);
}
if (isset($a['comp'])) {
$a['comp'] = array_intersect(
$a['comp'],
- $this->getSupportedCompressionAlgorithms()
+ static::getSupportedCompressionAlgorithms()
);
}
if (isset($a['mac'])) {
$a['mac'] = array_intersect(
$a['mac'],
- $this->getSupportedMACAlgorithms()
+ static::getSupportedMACAlgorithms()
);
}
}
@@ -5526,4 +5673,12 @@ class SSH2
{
$this->smartMFA = false;
}
+
+ /**
+ * How many bytes until the next key re-exchange?
+ */
+ function bytesUntilKeyReexchange($bytes)
+ {
+ $this->doKeyReexchangeAfterXBytes = $bytes;
+ }
}
diff --git a/vendor/psr/clock/CHANGELOG.md b/vendor/psr/clock/CHANGELOG.md
new file mode 100644
index 000000000..3cd6b9b75
--- /dev/null
+++ b/vendor/psr/clock/CHANGELOG.md
@@ -0,0 +1,11 @@
+# Changelog
+
+All notable changes to this project will be documented in this file, in reverse chronological order by release.
+
+## 1.0.0
+
+First stable release after PSR-20 acceptance
+
+## 0.1.0
+
+First release
diff --git a/vendor/psr/clock/LICENSE b/vendor/psr/clock/LICENSE
new file mode 100644
index 000000000..be6834212
--- /dev/null
+++ b/vendor/psr/clock/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2017 PHP Framework Interoperability Group
+
+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.
diff --git a/vendor/psr/clock/README.md b/vendor/psr/clock/README.md
new file mode 100644
index 000000000..6ca877eeb
--- /dev/null
+++ b/vendor/psr/clock/README.md
@@ -0,0 +1,61 @@
+# PSR Clock
+
+This repository holds the interface for [PSR-20][psr-url].
+
+Note that this is not a clock of its own. It is merely an interface that
+describes a clock. See the specification for more details.
+
+## Installation
+
+```bash
+composer require psr/clock
+```
+
+## Usage
+
+If you need a clock, you can use the interface like this:
+
+```php
+<?php
+
+use Psr\Clock\ClockInterface;
+
+class Foo
+{
+ private ClockInterface $clock;
+
+ public function __construct(ClockInterface $clock)
+ {
+ $this->clock = $clock;
+ }
+
+ public function doSomething()
+ {
+ /** @var DateTimeImmutable $currentDateAndTime */
+ $currentDateAndTime = $this->clock->now();
+ // do something useful with that information
+ }
+}
+```
+
+You can then pick one of the [implementations][implementation-url] of the interface to get a clock.
+
+If you want to implement the interface, you can require this package and
+implement `Psr\Clock\ClockInterface` in your code.
+
+Don't forget to add `psr/clock-implementation` to your `composer.json`s `provides`-section like this:
+
+```json
+{
+ "provides": {
+ "psr/clock-implementation": "1.0"
+ }
+}
+```
+
+And please read the [specification text][specification-url] for details on the interface.
+
+[psr-url]: https://www.php-fig.org/psr/psr-20
+[package-url]: https://packagist.org/packages/psr/clock
+[implementation-url]: https://packagist.org/providers/psr/clock-implementation
+[specification-url]: https://github.com/php-fig/fig-standards/blob/master/proposed/clock.md
diff --git a/vendor/psr/clock/composer.json b/vendor/psr/clock/composer.json
new file mode 100644
index 000000000..77992eda7
--- /dev/null
+++ b/vendor/psr/clock/composer.json
@@ -0,0 +1,21 @@
+{
+ "name": "psr/clock",
+ "description": "Common interface for reading the clock.",
+ "keywords": ["psr", "psr-20", "time", "clock", "now"],
+ "homepage": "https://github.com/php-fig/clock",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "require": {
+ "php": "^7.0 || ^8.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Clock\\": "src/"
+ }
+ }
+}
diff --git a/vendor/psr/clock/src/ClockInterface.php b/vendor/psr/clock/src/ClockInterface.php
new file mode 100644
index 000000000..7b6d8d8aa
--- /dev/null
+++ b/vendor/psr/clock/src/ClockInterface.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Psr\Clock;
+
+use DateTimeImmutable;
+
+interface ClockInterface
+{
+ /**
+ * Returns the current time as a DateTimeImmutable Object
+ */
+ public function now(): DateTimeImmutable;
+}
diff --git a/vendor/psr/log/composer.json b/vendor/psr/log/composer.json
index f3f066719..879fc6f53 100644
--- a/vendor/psr/log/composer.json
+++ b/vendor/psr/log/composer.json
@@ -20,7 +20,7 @@
},
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "3.x-dev"
}
}
}
diff --git a/vendor/psr/log/src/LoggerAwareInterface.php b/vendor/psr/log/src/LoggerAwareInterface.php
index 4d64f4786..062187057 100644
--- a/vendor/psr/log/src/LoggerAwareInterface.php
+++ b/vendor/psr/log/src/LoggerAwareInterface.php
@@ -9,10 +9,6 @@ interface LoggerAwareInterface
{
/**
* Sets a logger instance on the object.
- *
- * @param LoggerInterface $logger
- *
- * @return void
*/
- public function setLogger(LoggerInterface $logger);
+ public function setLogger(LoggerInterface $logger): void;
}
diff --git a/vendor/psr/log/src/LoggerAwareTrait.php b/vendor/psr/log/src/LoggerAwareTrait.php
index 5f1553a4c..85104dbc1 100644
--- a/vendor/psr/log/src/LoggerAwareTrait.php
+++ b/vendor/psr/log/src/LoggerAwareTrait.php
@@ -9,17 +9,13 @@ trait LoggerAwareTrait
{
/**
* The logger instance.
- *
- * @var LoggerInterface|null
*/
protected ?LoggerInterface $logger = null;
/**
* Sets a logger.
- *
- * @param LoggerInterface $logger
*/
- public function setLogger(LoggerInterface $logger)
+ public function setLogger(LoggerInterface $logger): void
{
$this->logger = $logger;
}
diff --git a/vendor/psr/log/src/LoggerInterface.php b/vendor/psr/log/src/LoggerInterface.php
index b4d062b9b..cb4cf648b 100644
--- a/vendor/psr/log/src/LoggerInterface.php
+++ b/vendor/psr/log/src/LoggerInterface.php
@@ -22,12 +22,9 @@ interface LoggerInterface
/**
* System is unusable.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function emergency(string|\Stringable $message, array $context = []);
+ public function emergency(string|\Stringable $message, array $context = []): void;
/**
* Action must be taken immediately.
@@ -35,35 +32,26 @@ interface LoggerInterface
* Example: Entire website down, database unavailable, etc. This should
* trigger the SMS alerts and wake you up.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function alert(string|\Stringable $message, array $context = []);
+ public function alert(string|\Stringable $message, array $context = []): void;
/**
* Critical conditions.
*
* Example: Application component unavailable, unexpected exception.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function critical(string|\Stringable $message, array $context = []);
+ public function critical(string|\Stringable $message, array $context = []): void;
/**
* Runtime errors that do not require immediate action but should typically
* be logged and monitored.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function error(string|\Stringable $message, array $context = []);
+ public function error(string|\Stringable $message, array $context = []): void;
/**
* Exceptional occurrences that are not errors.
@@ -71,55 +59,40 @@ interface LoggerInterface
* Example: Use of deprecated APIs, poor use of an API, undesirable things
* that are not necessarily wrong.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function warning(string|\Stringable $message, array $context = []);
+ public function warning(string|\Stringable $message, array $context = []): void;
/**
* Normal but significant events.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function notice(string|\Stringable $message, array $context = []);
+ public function notice(string|\Stringable $message, array $context = []): void;
/**
* Interesting events.
*
* Example: User logs in, SQL logs.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function info(string|\Stringable $message, array $context = []);
+ public function info(string|\Stringable $message, array $context = []): void;
/**
* Detailed debug information.
*
- * @param string|\Stringable $message
* @param mixed[] $context
- *
- * @return void
*/
- public function debug(string|\Stringable $message, array $context = []);
+ public function debug(string|\Stringable $message, array $context = []): void;
/**
* Logs with an arbitrary level.
*
- * @param mixed $level
- * @param string|\Stringable $message
+ * @param mixed $level
* @param mixed[] $context
*
- * @return void
- *
* @throws \Psr\Log\InvalidArgumentException
*/
- public function log($level, string|\Stringable $message, array $context = []);
+ public function log($level, string|\Stringable $message, array $context = []): void;
}
diff --git a/vendor/psr/log/src/LoggerTrait.php b/vendor/psr/log/src/LoggerTrait.php
index 920bda77f..a5d9980b6 100644
--- a/vendor/psr/log/src/LoggerTrait.php
+++ b/vendor/psr/log/src/LoggerTrait.php
@@ -14,13 +14,8 @@ trait LoggerTrait
{
/**
* System is unusable.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function emergency(string|\Stringable $message, array $context = [])
+ public function emergency(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::EMERGENCY, $message, $context);
}
@@ -30,13 +25,8 @@ trait LoggerTrait
*
* Example: Entire website down, database unavailable, etc. This should
* trigger the SMS alerts and wake you up.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function alert(string|\Stringable $message, array $context = [])
+ public function alert(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::ALERT, $message, $context);
}
@@ -45,13 +35,8 @@ trait LoggerTrait
* Critical conditions.
*
* Example: Application component unavailable, unexpected exception.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function critical(string|\Stringable $message, array $context = [])
+ public function critical(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::CRITICAL, $message, $context);
}
@@ -59,13 +44,8 @@ trait LoggerTrait
/**
* Runtime errors that do not require immediate action but should typically
* be logged and monitored.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function error(string|\Stringable $message, array $context = [])
+ public function error(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::ERROR, $message, $context);
}
@@ -75,26 +55,16 @@ trait LoggerTrait
*
* Example: Use of deprecated APIs, poor use of an API, undesirable things
* that are not necessarily wrong.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function warning(string|\Stringable $message, array $context = [])
+ public function warning(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::WARNING, $message, $context);
}
/**
* Normal but significant events.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function notice(string|\Stringable $message, array $context = [])
+ public function notice(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::NOTICE, $message, $context);
}
@@ -103,26 +73,16 @@ trait LoggerTrait
* Interesting events.
*
* Example: User logs in, SQL logs.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function info(string|\Stringable $message, array $context = [])
+ public function info(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::INFO, $message, $context);
}
/**
* Detailed debug information.
- *
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
*/
- public function debug(string|\Stringable $message, array $context = [])
+ public function debug(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::DEBUG, $message, $context);
}
@@ -130,13 +90,9 @@ trait LoggerTrait
/**
* Logs with an arbitrary level.
*
- * @param mixed $level
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
+ * @param mixed $level
*
* @throws \Psr\Log\InvalidArgumentException
*/
- abstract public function log($level, string|\Stringable $message, array $context = []);
+ abstract public function log($level, string|\Stringable $message, array $context = []): void;
}
diff --git a/vendor/psr/log/src/NullLogger.php b/vendor/psr/log/src/NullLogger.php
index 560770571..de0561e2a 100644
--- a/vendor/psr/log/src/NullLogger.php
+++ b/vendor/psr/log/src/NullLogger.php
@@ -15,15 +15,11 @@ class NullLogger extends AbstractLogger
/**
* Logs with an arbitrary level.
*
- * @param mixed $level
- * @param string|\Stringable $message
- * @param array $context
- *
- * @return void
+ * @param mixed[] $context
*
* @throws \Psr\Log\InvalidArgumentException
*/
- public function log($level, string|\Stringable $message, array $context = [])
+ public function log($level, string|\Stringable $message, array $context = []): void
{
// noop
}
diff --git a/vendor/ramsey/collection/LICENSE b/vendor/ramsey/collection/LICENSE
index ae15f590c..a7fcf1201 100644
--- a/vendor/ramsey/collection/LICENSE
+++ b/vendor/ramsey/collection/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2015-2021 Ben Ramsey <ben@benramsey.com>
+Copyright (c) 2015-2022 Ben Ramsey <ben@benramsey.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/ramsey/collection/README.md b/vendor/ramsey/collection/README.md
index 9124dd77e..c77ffcb18 100644
--- a/vendor/ramsey/collection/README.md
+++ b/vendor/ramsey/collection/README.md
@@ -9,7 +9,7 @@
<a href="https://packagist.org/packages/ramsey/collection"><img src="https://img.shields.io/packagist/v/ramsey/collection.svg?style=flat-square&label=release" alt="Download Package"></a>
<a href="https://php.net"><img src="https://img.shields.io/packagist/php-v/ramsey/collection.svg?style=flat-square&colorB=%238892BF" alt="PHP Programming Language"></a>
<a href="https://github.com/ramsey/collection/blob/master/LICENSE"><img src="https://img.shields.io/packagist/l/ramsey/collection.svg?style=flat-square&colorB=darkcyan" alt="Read License"></a>
- <a href="https://github.com/ramsey/collection/actions?query=workflow%3ACI"><img src="https://img.shields.io/github/workflow/status/ramsey/collection/CI?label=CI&logo=github&style=flat-square" alt="Build Status"></a>
+ <a href="https://github.com/ramsey/collection/actions/workflows/continuous-integration.yml"><img src="https://img.shields.io/github/actions/workflow/status/ramsey/collection/continuous-integration.yml?branch=main&logo=github&style=flat-square" alt="Build Status"></a>
<a href="https://codecov.io/gh/ramsey/collection"><img src="https://img.shields.io/codecov/c/gh/ramsey/collection?label=codecov&logo=codecov&style=flat-square" alt="Codecov Code Coverage"></a>
<a href="https://shepherd.dev/github/ramsey/collection"><img src="https://img.shields.io/endpoint?style=flat-square&url=https%3A%2F%2Fshepherd.dev%2Fgithub%2Framsey%2Fcollection%2Fcoverage" alt="Psalm Type Coverage"></a>
</p>
@@ -34,25 +34,13 @@ composer require ramsey/collection
## Usage
-Examples of how to use this framework can be found in the
+Examples of how to use this library may be found in the
[Wiki pages](https://github.com/ramsey/collection/wiki/Examples).
## Contributing
-Contributions are welcome! Before contributing to this project, familiarize
-yourself with [CONTRIBUTING.md](CONTRIBUTING.md).
-
-To develop this project, you will need [PHP](https://www.php.net) 7.3 or greater
-and [Composer](https://getcomposer.org).
-
-After cloning this repository locally, execute the following commands:
-
-``` bash
-cd /path/to/repository
-composer install
-```
-
-Now, you are ready to develop!
+Contributions are welcome! To contribute, please familiarize yourself with
+[CONTRIBUTING.md](CONTRIBUTING.md).
## Coordinated Disclosure
@@ -79,4 +67,4 @@ MIT License (MIT). Please see [LICENSE](LICENSE) for more information.
[java]: http://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html
-[security.md]: https://github.com/ramsey/collection/blob/master/SECURITY.md
+[security.md]: https://github.com/ramsey/collection/blob/main/SECURITY.md
diff --git a/vendor/ramsey/collection/SECURITY.md b/vendor/ramsey/collection/SECURITY.md
index b052f3b65..3de4c0cbd 100644
--- a/vendor/ramsey/collection/SECURITY.md
+++ b/vendor/ramsey/collection/SECURITY.md
@@ -1,29 +1,59 @@
<!--
- This policy was created using the HackerOne Policy Builder:
- https://hackerone.com/policy-builder/
+ This policy template was created using the HackerOne Policy Builder [1],
+ with guidance from the National Telecommunications and Information
+ Administration Coordinated Vulnerability Disclosure Template [2].
-->
-# Vulnerability Disclosure Policy
+# Vulnerability Disclosure Policy (VDP)
+
+## Brand Promise
+
+<!--
+ This is your brand promise. Its objective is to "demonstrate a clear, good
+ faith commitment to customers and other stakeholders potentially impacted by
+ security vulnerabilities" [2].
+-->
Keeping user information safe and secure is a top priority, and we welcome the
contribution of external security researchers.
## Scope
+<!--
+ This is your initial scope. It tells vulnerability finders and reporters
+ "which systems and capabilities are 'fair game' versus 'off limits'" [2].
+ For software packages, this is often a list of currently maintained versions
+ of the package.
+-->
+
If you believe you've found a security issue in software that is maintained in
this repository, we encourage you to notify us.
| Version | In scope | Source code |
-| :-----: | :------: | :---------- |
+| ------- | :------: | ----------- |
| latest | ✅ | https://github.com/ramsey/collection |
## How to Submit a Report
-To submit a vulnerability report, please contact us at <security@ramsey.dev>.
+<!--
+ This is your communication process. It tells security researchers how to
+ contact you to report a vulnerability. It may be a link to a web form that
+ uses HTTPS for secure communication, or it may be an email address.
+ Optionally, you may choose to include a PGP public key, so that researchers
+ may send you encrypted messages.
+-->
+
+To submit a vulnerability report, please contact us at security@ramsey.dev.
Your submission will be reviewed and validated by a member of our team.
## Safe Harbor
+<!--
+ This section assures vulnerability finders and reporters that they will
+ receive good faith responses to their good faith acts. In other words,
+ "we will not take legal action if..." [2].
+-->
+
We support safe harbor for security researchers who:
* Make a good faith effort to avoid privacy violations, destruction of data, and
@@ -33,7 +63,7 @@ We support safe harbor for security researchers who:
us immediately, do not proceed with access, and immediately purge any local
information.
* Provide us with a reasonable amount of time to resolve vulnerabilities prior
- to any disclosure to the public or a third-party.
+ to any disclosure to the public or a third party.
We will consider activities conducted consistent with this policy to constitute
"authorized" conduct and will not pursue civil action or initiate a complaint to
@@ -45,15 +75,41 @@ with or unaddressed by this policy.
## Preferences
+<!--
+ The preferences section sets expectations based on priority and submission
+ volume, rather than legal objection or restriction [2].
+
+ According to the NTIA [2]:
+
+ This section is a living document that sets expectations for preferences
+ and priorities, typically maintained by the support and engineering
+ team. This can outline classes of vulnerabilities, reporting style
+ (crash dumps, CVSS scoring, proof-of-concept, etc.), tools, etc. Too
+ many preferences can set the wrong tone or make reporting findings
+ difficult to navigate. This section also sets expectations to the
+ researcher community for what types of issues are considered important
+ or not.
+-->
+
* Please provide detailed reports with reproducible steps and a clearly defined
impact.
* Include the version number of the vulnerable package in your report
* Social engineering (e.g. phishing, vishing, smishing) is prohibited.
+<!--
+ References
+
+ [1] HackerOne. Policy builder. Retrieved from https://hackerone.com/policy-builder/
+
+ [2] NTIA Safety Working Group. 2016. "Early stage" coordinated vulnerability
+ disclosure template: Version 1.1. (15 December 2016). Retrieved from
+ https://www.ntia.doc.gov/files/ntia/publications/ntia_vuln_disclosure_early_stage_template.pdf
+-->
+
## Encryption Key for security@ramsey.dev
For increased privacy when reporting sensitive issues, you may encrypt your
-messages using the following key:
+message using the following public key:
```
-----BEGIN PGP PUBLIC KEY BLOCK-----
diff --git a/vendor/ramsey/collection/composer.json b/vendor/ramsey/collection/composer.json
index 98862ee46..56709015a 100644
--- a/vendor/ramsey/collection/composer.json
+++ b/vendor/ramsey/collection/composer.json
@@ -1,7 +1,8 @@
{
"name": "ramsey/collection",
- "type": "library",
"description": "A PHP library for representing and manipulating collections.",
+ "license": "MIT",
+ "type": "library",
"keywords": [
"array",
"collection",
@@ -10,7 +11,6 @@
"queue",
"set"
],
- "license": "MIT",
"authors": [
{
"name": "Ben Ramsey",
@@ -19,31 +19,32 @@
}
],
"require": {
- "php": "^7.3 || ^8",
- "symfony/polyfill-php81": "^1.23"
+ "php": "^8.1"
},
"require-dev": {
- "captainhook/captainhook": "^5.3",
- "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
- "ergebnis/composer-normalize": "^2.6",
- "fakerphp/faker": "^1.5",
- "hamcrest/hamcrest-php": "^2",
- "jangregor/phpstan-prophecy": "^0.8",
- "mockery/mockery": "^1.3",
+ "captainhook/plugin-composer": "^5.3",
+ "ergebnis/composer-normalize": "^2.28.3",
+ "fakerphp/faker": "^1.21",
+ "hamcrest/hamcrest-php": "^2.0",
+ "jangregor/phpstan-prophecy": "^1.0",
+ "mockery/mockery": "^1.5",
+ "php-parallel-lint/php-console-highlighter": "^1.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3",
+ "phpcsstandards/phpcsutils": "^1.0.0-rc1",
"phpspec/prophecy-phpunit": "^2.0",
- "phpstan/extension-installer": "^1",
- "phpstan/phpstan": "^0.12.32",
- "phpstan/phpstan-mockery": "^0.12.5",
- "phpstan/phpstan-phpunit": "^0.12.11",
- "phpunit/phpunit": "^8.5 || ^9",
- "psy/psysh": "^0.10.4",
- "slevomat/coding-standard": "^6.3",
- "squizlabs/php_codesniffer": "^3.5",
- "vimeo/psalm": "^4.4"
- },
- "config": {
- "sort-packages": true
+ "phpstan/extension-installer": "^1.2",
+ "phpstan/phpstan": "^1.9",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpunit/phpunit": "^9.5",
+ "psalm/plugin-mockery": "^1.1",
+ "psalm/plugin-phpunit": "^0.18.4",
+ "ramsey/coding-standard": "^2.0.3",
+ "ramsey/conventional-commits": "^1.3",
+ "vimeo/psalm": "^5.4"
},
+ "minimum-stability": "RC",
+ "prefer-stable": true,
"autoload": {
"psr-4": {
"Ramsey\\Collection\\": "src/"
@@ -51,7 +52,6 @@
},
"autoload-dev": {
"psr-4": {
- "Ramsey\\Console\\": "resources/console/",
"Ramsey\\Collection\\Test\\": "tests/",
"Ramsey\\Test\\Generics\\": "tests/generics/"
},
@@ -59,44 +59,61 @@
"vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php"
]
},
+ "config": {
+ "allow-plugins": {
+ "dealerdirect/phpcodesniffer-composer-installer": true,
+ "ergebnis/composer-normalize": true,
+ "phpstan/extension-installer": true,
+ "captainhook/plugin-composer": true
+ },
+ "sort-packages": true
+ },
+ "extra": {
+ "captainhook": {
+ "force-install": true
+ },
+ "ramsey/conventional-commits": {
+ "configFile": "conventional-commits.json"
+ }
+ },
"scripts": {
- "post-autoload-dump": "captainhook install --ansi -f -s",
"dev:analyze": [
"@dev:analyze:phpstan",
"@dev:analyze:psalm"
],
- "dev:analyze:phpstan": "phpstan --memory-limit=1G analyse",
- "dev:analyze:psalm": "psalm --diff --config=psalm.xml",
- "dev:build:clean": "git clean -fX build/.",
- "dev:build:clear-cache": "git clean -fX build/cache/.",
- "dev:lint": "phpcs --cache=build/cache/phpcs.cache",
- "dev:lint:fix": "./bin/lint-fix.sh",
- "dev:repl": [
- "echo ; echo 'Type ./bin/repl to start the REPL.'"
+ "dev:analyze:phpstan": "phpstan analyse --ansi --memory-limit=1G",
+ "dev:analyze:psalm": "psalm",
+ "dev:build:clean": "git clean -fX build/",
+ "dev:lint": [
+ "@dev:lint:syntax",
+ "@dev:lint:style"
],
- "dev:test": "phpunit",
- "dev:test:all": [
+ "dev:lint:fix": "phpcbf",
+ "dev:lint:style": "phpcs --colors",
+ "dev:lint:syntax": "parallel-lint --colors src/ tests/",
+ "dev:test": [
"@dev:lint",
"@dev:analyze",
- "@dev:test"
+ "@dev:test:unit"
],
- "dev:test:coverage:ci": "phpunit --coverage-clover build/logs/clover.xml",
- "dev:test:coverage:html": "phpunit --coverage-html build/coverage",
- "test": "@dev:test:all"
+ "dev:test:coverage:ci": "phpunit --colors=always --coverage-text --coverage-clover build/coverage/clover.xml --coverage-cobertura build/coverage/cobertura.xml --coverage-crap4j build/coverage/crap4j.xml --coverage-xml build/coverage/coverage-xml --log-junit build/junit.xml",
+ "dev:test:coverage:html": "phpunit --colors=always --coverage-html build/coverage/coverage-html/",
+ "dev:test:unit": "phpunit --colors=always",
+ "test": "@dev:test"
},
"scripts-descriptions": {
- "dev:analyze": "Performs static analysis on the code base.",
+ "dev:analyze": "Runs all static analysis checks.",
"dev:analyze:phpstan": "Runs the PHPStan static analyzer.",
"dev:analyze:psalm": "Runs the Psalm static analyzer.",
- "dev:build:clean": "Removes everything not under version control from the build directory.",
- "dev:build:clear-cache": "Removes everything not under version control from build/cache/.",
- "dev:lint": "Checks all source code for coding standards issues.",
- "dev:lint:fix": "Checks source code for coding standards issues and fixes them, if possible.",
- "dev:repl": "Note: Use ./bin/repl to run the REPL.",
- "dev:test": "Runs the full unit test suite.",
- "dev:test:all": "Runs linting, static analysis, and unit tests.",
- "dev:test:coverage:ci": "Runs the unit test suite and generates a Clover coverage report.",
- "dev:test:coverage:html": "Runs the unit tests suite and generates an HTML coverage report.",
- "test": "Shortcut to run the full test suite."
+ "dev:build:clean": "Cleans the build/ directory.",
+ "dev:lint": "Runs all linting checks.",
+ "dev:lint:fix": "Auto-fixes coding standards issues, if possible.",
+ "dev:lint:style": "Checks for coding standards issues.",
+ "dev:lint:syntax": "Checks for syntax errors.",
+ "dev:test": "Runs linting, static analysis, and unit tests.",
+ "dev:test:coverage:ci": "Runs unit tests and generates CI coverage reports.",
+ "dev:test:coverage:html": "Runs unit tests and generates HTML coverage report.",
+ "dev:test:unit": "Runs unit tests.",
+ "test": "Runs linting, static analysis, and unit tests."
}
}
diff --git a/vendor/ramsey/collection/conventional-commits.json b/vendor/ramsey/collection/conventional-commits.json
new file mode 100644
index 000000000..5fe21d2fa
--- /dev/null
+++ b/vendor/ramsey/collection/conventional-commits.json
@@ -0,0 +1,22 @@
+{
+ "typeCase": "kebab",
+ "types": [
+ "chore",
+ "ci",
+ "docs",
+ "feat",
+ "fix",
+ "refactor",
+ "security",
+ "style",
+ "test"
+ ],
+ "scopeCase": "kebab",
+ "scopeRequired": false,
+ "scopes": [],
+ "descriptionCase": null,
+ "descriptionEndMark": "",
+ "bodyRequired": false,
+ "bodyWrapWidth": 72,
+ "requiredFooters": []
+}
diff --git a/vendor/ramsey/collection/src/AbstractArray.php b/vendor/ramsey/collection/src/AbstractArray.php
index d72dbe697..5ce622aa7 100644
--- a/vendor/ramsey/collection/src/AbstractArray.php
+++ b/vendor/ramsey/collection/src/AbstractArray.php
@@ -17,8 +17,7 @@ namespace Ramsey\Collection;
use ArrayIterator;
use Traversable;
-use function serialize;
-use function unserialize;
+use function count;
/**
* This class provides a basic implementation of `ArrayInterface`, to minimize
@@ -34,7 +33,7 @@ abstract class AbstractArray implements ArrayInterface
*
* @var array<array-key, T>
*/
- protected $data = [];
+ protected array $data = [];
/**
* Constructs a new array object.
@@ -69,7 +68,7 @@ abstract class AbstractArray implements ArrayInterface
*
* @param array-key $offset The offset to check.
*/
- public function offsetExists($offset): bool
+ public function offsetExists(mixed $offset): bool
{
return isset($this->data[$offset]);
}
@@ -81,15 +80,12 @@ abstract class AbstractArray implements ArrayInterface
*
* @param array-key $offset The offset for which a value should be returned.
*
- * @return T|null the value stored at the offset, or null if the offset
+ * @return T the value stored at the offset, or null if the offset
* does not exist.
- *
- * @psalm-suppress InvalidAttribute
*/
- #[\ReturnTypeWillChange] // phpcs:ignore
- public function offsetGet($offset)
+ public function offsetGet(mixed $offset): mixed
{
- return $this->data[$offset] ?? null;
+ return $this->data[$offset];
}
/**
@@ -97,12 +93,11 @@ abstract class AbstractArray implements ArrayInterface
*
* @link http://php.net/manual/en/arrayaccess.offsetset.php ArrayAccess::offsetSet()
*
- * @param array-key|null $offset The offset to set. If `null`, the value may be
- * set at a numerically-indexed offset.
+ * @param array-key | null $offset The offset to set. If `null`, the value
+ * may be set at a numerically-indexed offset.
* @param T $value The value to set at the given offset.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
if ($offset === null) {
$this->data[] = $value;
@@ -118,26 +113,12 @@ abstract class AbstractArray implements ArrayInterface
*
* @param array-key $offset The offset to remove from the array.
*/
- public function offsetUnset($offset): void
+ public function offsetUnset(mixed $offset): void
{
unset($this->data[$offset]);
}
/**
- * Returns a serialized string representation of this array object.
- *
- * @deprecated The Serializable interface will go away in PHP 9.
- *
- * @link http://php.net/manual/en/serializable.serialize.php Serializable::serialize()
- *
- * @return string a PHP serialized string.
- */
- public function serialize(): string
- {
- return serialize($this->data);
- }
-
- /**
* Returns data suitable for PHP serialization.
*
* @link https://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.serialize
@@ -151,25 +132,6 @@ abstract class AbstractArray implements ArrayInterface
}
/**
- * Converts a serialized string representation into an instance object.
- *
- * @deprecated The Serializable interface will go away in PHP 9.
- *
- * @link http://php.net/manual/en/serializable.unserialize.php Serializable::unserialize()
- *
- * @param string $serialized A PHP serialized string to unserialize.
- *
- * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- */
- public function unserialize($serialized): void
- {
- /** @var array<array-key, T> $data */
- $data = unserialize($serialized, ['allowed_classes' => false]);
-
- $this->data = $data;
- }
-
- /**
* Adds unserialized data to the object.
*
* @param array<array-key, T> $data
@@ -204,6 +166,6 @@ abstract class AbstractArray implements ArrayInterface
public function isEmpty(): bool
{
- return count($this->data) === 0;
+ return $this->data === [];
}
}
diff --git a/vendor/ramsey/collection/src/AbstractCollection.php b/vendor/ramsey/collection/src/AbstractCollection.php
index d2cd1151c..8cb21ec02 100644
--- a/vendor/ramsey/collection/src/AbstractCollection.php
+++ b/vendor/ramsey/collection/src/AbstractCollection.php
@@ -17,25 +17,27 @@ namespace Ramsey\Collection;
use Closure;
use Ramsey\Collection\Exception\CollectionMismatchException;
use Ramsey\Collection\Exception\InvalidArgumentException;
-use Ramsey\Collection\Exception\InvalidSortOrderException;
-use Ramsey\Collection\Exception\OutOfBoundsException;
+use Ramsey\Collection\Exception\InvalidPropertyOrMethod;
+use Ramsey\Collection\Exception\NoSuchElementException;
+use Ramsey\Collection\Exception\UnsupportedOperationException;
use Ramsey\Collection\Tool\TypeTrait;
use Ramsey\Collection\Tool\ValueExtractorTrait;
use Ramsey\Collection\Tool\ValueToStringTrait;
use function array_filter;
+use function array_key_first;
+use function array_key_last;
use function array_map;
use function array_merge;
+use function array_reduce;
use function array_search;
use function array_udiff;
use function array_uintersect;
-use function current;
-use function end;
use function in_array;
use function is_int;
-use function reset;
+use function is_object;
+use function spl_object_id;
use function sprintf;
-use function unserialize;
use function usort;
/**
@@ -53,32 +55,29 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
use ValueExtractorTrait;
/**
- * @inheritDoc
+ * @throws InvalidArgumentException if $element is of the wrong type.
*/
- public function add($element): bool
+ public function add(mixed $element): bool
{
$this[] = $element;
return true;
}
- /**
- * @inheritDoc
- */
- public function contains($element, bool $strict = true): bool
+ public function contains(mixed $element, bool $strict = true): bool
{
return in_array($element, $this->data, $strict);
}
/**
- * @inheritDoc
+ * @throws InvalidArgumentException if $element is of the wrong type.
*/
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
if ($this->checkType($this->getType(), $value) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getType() . '; value is '
- . $this->toolValueToString($value)
+ . $this->toolValueToString($value),
);
}
@@ -89,13 +88,10 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
}
}
- /**
- * @inheritDoc
- */
- public function remove($element): bool
+ public function remove(mixed $element): bool
{
if (($position = array_search($element, $this->data, true)) !== false) {
- unset($this->data[$position]);
+ unset($this[$position]);
return true;
}
@@ -104,6 +100,11 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
}
/**
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call column() on this
+ * collection.
+ *
* @inheritDoc
*/
public function column(string $propertyOrMethod): array
@@ -111,55 +112,55 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
$temp = [];
foreach ($this->data as $item) {
- /** @var mixed $value */
- $value = $this->extractValue($item, $propertyOrMethod);
-
/** @psalm-suppress MixedAssignment */
- $temp[] = $value;
+ $temp[] = $this->extractValue($item, $propertyOrMethod);
}
return $temp;
}
/**
- * @inheritDoc
+ * @return T
+ *
+ * @throws NoSuchElementException if this collection is empty.
*/
- public function first()
+ public function first(): mixed
{
- if ($this->isEmpty()) {
- throw new OutOfBoundsException('Can\'t determine first item. Collection is empty');
- }
-
- reset($this->data);
+ $firstIndex = array_key_first($this->data);
- /** @var T $first */
- $first = current($this->data);
+ if ($firstIndex === null) {
+ throw new NoSuchElementException('Can\'t determine first item. Collection is empty');
+ }
- return $first;
+ return $this->data[$firstIndex];
}
/**
- * @inheritDoc
+ * @return T
+ *
+ * @throws NoSuchElementException if this collection is empty.
*/
- public function last()
+ public function last(): mixed
{
- if ($this->isEmpty()) {
- throw new OutOfBoundsException('Can\'t determine last item. Collection is empty');
- }
+ $lastIndex = array_key_last($this->data);
- /** @var T $item */
- $item = end($this->data);
- reset($this->data);
+ if ($lastIndex === null) {
+ throw new NoSuchElementException('Can\'t determine last item. Collection is empty');
+ }
- return $item;
+ return $this->data[$lastIndex];
}
- public function sort(string $propertyOrMethod, string $order = self::SORT_ASC): CollectionInterface
+ /**
+ * @return CollectionInterface<T>
+ *
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call sort() on this
+ * collection.
+ */
+ public function sort(?string $propertyOrMethod = null, Sort $order = Sort::Ascending): CollectionInterface
{
- if (!in_array($order, [self::SORT_ASC, self::SORT_DESC], true)) {
- throw new InvalidSortOrderException('Invalid sort order given: ' . $order);
- }
-
$collection = clone $this;
usort(
@@ -168,20 +169,25 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
* @param T $a
* @param T $b
*/
- function ($a, $b) use ($propertyOrMethod, $order): int {
+ function (mixed $a, mixed $b) use ($propertyOrMethod, $order): int {
/** @var mixed $aValue */
$aValue = $this->extractValue($a, $propertyOrMethod);
/** @var mixed $bValue */
$bValue = $this->extractValue($b, $propertyOrMethod);
- return ($aValue <=> $bValue) * ($order === self::SORT_DESC ? -1 : 1);
- }
+ return ($aValue <=> $bValue) * ($order === Sort::Descending ? -1 : 1);
+ },
);
return $collection;
}
+ /**
+ * @param callable(T): bool $callback A callable to use for filtering elements.
+ *
+ * @return CollectionInterface<T>
+ */
public function filter(callable $callback): CollectionInterface
{
$collection = clone $this;
@@ -191,23 +197,66 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
}
/**
- * {@inheritdoc}
+ * @return CollectionInterface<T>
+ *
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call where() on this
+ * collection.
*/
- public function where(string $propertyOrMethod, $value): CollectionInterface
+ public function where(?string $propertyOrMethod, mixed $value): CollectionInterface
{
- return $this->filter(function ($item) use ($propertyOrMethod, $value) {
- /** @var mixed $accessorValue */
- $accessorValue = $this->extractValue($item, $propertyOrMethod);
+ return $this->filter(
+ /**
+ * @param T $item
+ */
+ function (mixed $item) use ($propertyOrMethod, $value): bool {
+ /** @var mixed $accessorValue */
+ $accessorValue = $this->extractValue($item, $propertyOrMethod);
- return $accessorValue === $value;
- });
+ return $accessorValue === $value;
+ },
+ );
}
+ /**
+ * @param callable(T): TCallbackReturn $callback A callable to apply to each
+ * item of the collection.
+ *
+ * @return CollectionInterface<TCallbackReturn>
+ *
+ * @template TCallbackReturn
+ */
public function map(callable $callback): CollectionInterface
{
+ /** @var Collection<TCallbackReturn> */
return new Collection('mixed', array_map($callback, $this->data));
}
+ /**
+ * @param callable(TCarry, T): TCarry $callback A callable to apply to each
+ * item of the collection to reduce it to a single value.
+ * @param TCarry $initial This is the initial value provided to the callback.
+ *
+ * @return TCarry
+ *
+ * @template TCarry
+ */
+ public function reduce(callable $callback, mixed $initial): mixed
+ {
+ /** @var TCarry */
+ return array_reduce($this->data, $callback, $initial);
+ }
+
+ /**
+ * @param CollectionInterface<T> $other The collection to check for divergent
+ * items.
+ *
+ * @return CollectionInterface<T>
+ *
+ * @throws CollectionMismatchException if the compared collections are of
+ * differing types.
+ */
public function diff(CollectionInterface $other): CollectionInterface
{
$this->compareCollectionTypes($other);
@@ -224,6 +273,15 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
return $collection;
}
+ /**
+ * @param CollectionInterface<T> $other The collection to check for
+ * intersecting items.
+ *
+ * @return CollectionInterface<T>
+ *
+ * @throws CollectionMismatchException if the compared collections are of
+ * differing types.
+ */
public function intersect(CollectionInterface $other): CollectionInterface
{
$this->compareCollectionTypes($other);
@@ -237,6 +295,15 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
return $collection;
}
+ /**
+ * @param CollectionInterface<T> ...$collections The collections to merge.
+ *
+ * @return CollectionInterface<T>
+ *
+ * @throws CollectionMismatchException if unable to merge any of the given
+ * collections or items within the given collections due to type
+ * mismatch errors.
+ */
public function merge(CollectionInterface ...$collections): CollectionInterface
{
$mergedCollection = clone $this;
@@ -244,15 +311,19 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
foreach ($collections as $index => $collection) {
if (!$collection instanceof static) {
throw new CollectionMismatchException(
- sprintf('Collection with index %d must be of type %s', $index, static::class)
+ sprintf('Collection with index %d must be of type %s', $index, static::class),
);
}
// When using generics (Collection.php, Set.php, etc),
// we also need to make sure that the internal types match each other
- if ($collection->getType() !== $this->getType()) {
+ if ($this->getUniformType($collection) !== $this->getUniformType($this)) {
throw new CollectionMismatchException(
- sprintf('Collection items in collection with index %d must be of type %s', $index, $this->getType())
+ sprintf(
+ 'Collection items in collection with index %d must be of type %s',
+ $index,
+ $this->getType(),
+ ),
);
}
@@ -269,18 +340,9 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
}
/**
- * @inheritDoc
- */
- public function unserialize($serialized): void
- {
- /** @var array<array-key, T> $data */
- $data = unserialize($serialized, ['allowed_classes' => [$this->getType()]]);
-
- $this->data = $data;
- }
-
- /**
* @param CollectionInterface<T> $other
+ *
+ * @throws CollectionMismatchException
*/
private function compareCollectionTypes(CollectionInterface $other): void
{
@@ -290,7 +352,7 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
// When using generics (Collection.php, Set.php, etc),
// we also need to make sure that the internal types match each other
- if ($other->getType() !== $this->getType()) {
+ if ($this->getUniformType($other) !== $this->getUniformType($this)) {
throw new CollectionMismatchException('Collection items must be of type ' . $this->getType());
}
}
@@ -301,7 +363,7 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
* @param T $a
* @param T $b
*/
- function ($a, $b): int {
+ function (mixed $a, mixed $b): int {
// If the two values are object, we convert them to unique scalars.
// If the collection contains mixed values (unlikely) where some are objects
// and some are not, we leave them as they are.
@@ -315,4 +377,17 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
return $a === $b ? 0 : ($a < $b ? 1 : -1);
};
}
+
+ /**
+ * @param CollectionInterface<mixed> $collection
+ */
+ private function getUniformType(CollectionInterface $collection): string
+ {
+ return match ($collection->getType()) {
+ 'integer' => 'int',
+ 'boolean' => 'bool',
+ 'double' => 'float',
+ default => $collection->getType(),
+ };
+ }
}
diff --git a/vendor/ramsey/collection/src/AbstractSet.php b/vendor/ramsey/collection/src/AbstractSet.php
index 1126ccb0a..7186939d7 100644
--- a/vendor/ramsey/collection/src/AbstractSet.php
+++ b/vendor/ramsey/collection/src/AbstractSet.php
@@ -24,10 +24,7 @@ namespace Ramsey\Collection;
*/
abstract class AbstractSet extends AbstractCollection
{
- /**
- * @inheritDoc
- */
- public function add($element): bool
+ public function add(mixed $element): bool
{
if ($this->contains($element)) {
return false;
@@ -36,10 +33,7 @@ abstract class AbstractSet extends AbstractCollection
return parent::add($element);
}
- /**
- * @inheritDoc
- */
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
if ($this->contains($value)) {
return;
diff --git a/vendor/ramsey/collection/src/ArrayInterface.php b/vendor/ramsey/collection/src/ArrayInterface.php
index 27af6102b..bc7f6f424 100644
--- a/vendor/ramsey/collection/src/ArrayInterface.php
+++ b/vendor/ramsey/collection/src/ArrayInterface.php
@@ -17,7 +17,6 @@ namespace Ramsey\Collection;
use ArrayAccess;
use Countable;
use IteratorAggregate;
-use Serializable;
/**
* `ArrayInterface` provides traversable array functionality to data types.
@@ -29,8 +28,7 @@ use Serializable;
interface ArrayInterface extends
ArrayAccess,
Countable,
- IteratorAggregate,
- Serializable
+ IteratorAggregate
{
/**
* Removes all items from this array.
diff --git a/vendor/ramsey/collection/src/Collection.php b/vendor/ramsey/collection/src/Collection.php
index 1299c12c2..44d26bf2e 100644
--- a/vendor/ramsey/collection/src/Collection.php
+++ b/vendor/ramsey/collection/src/Collection.php
@@ -76,26 +76,15 @@ namespace Ramsey\Collection;
class Collection extends AbstractCollection
{
/**
- * The type of elements stored in this collection.
- *
- * A collection's type is immutable once it is set. For this reason, this
- * property is set private.
- *
- * @var string
- */
- private $collectionType;
-
- /**
* Constructs a collection object of the specified type, optionally with the
* specified data.
*
- * @param string $collectionType The type (FQCN) associated with this
+ * @param string $collectionType The type or class name associated with this
* collection.
* @param array<array-key, T> $data The initial items to store in the collection.
*/
- public function __construct(string $collectionType, array $data = [])
+ public function __construct(private readonly string $collectionType, array $data = [])
{
- $this->collectionType = $collectionType;
parent::__construct($data);
}
diff --git a/vendor/ramsey/collection/src/CollectionInterface.php b/vendor/ramsey/collection/src/CollectionInterface.php
index aa86feb04..e3ad01470 100644
--- a/vendor/ramsey/collection/src/CollectionInterface.php
+++ b/vendor/ramsey/collection/src/CollectionInterface.php
@@ -14,8 +14,14 @@ declare(strict_types=1);
namespace Ramsey\Collection;
+use Ramsey\Collection\Exception\CollectionMismatchException;
+use Ramsey\Collection\Exception\InvalidArgumentException;
+use Ramsey\Collection\Exception\InvalidPropertyOrMethod;
+use Ramsey\Collection\Exception\NoSuchElementException;
+use Ramsey\Collection\Exception\UnsupportedOperationException;
+
/**
- * A collection represents a group of objects, known as its elements.
+ * A collection represents a group of values, known as its elements.
*
* Some collections allow duplicate elements and others do not. Some are ordered
* and others unordered.
@@ -26,16 +32,6 @@ namespace Ramsey\Collection;
interface CollectionInterface extends ArrayInterface
{
/**
- * Ascending sort type.
- */
- public const SORT_ASC = 'asc';
-
- /**
- * Descending sort type.
- */
- public const SORT_DESC = 'desc';
-
- /**
* Ensures that this collection contains the specified element (optional
* operation).
*
@@ -58,9 +54,11 @@ interface CollectionInterface extends ArrayInterface
* @param T $element The element to add to the collection.
*
* @return bool `true` if this collection changed as a result of the call.
+ *
+ * @throws InvalidArgumentException if the collection refuses to add the
+ * $element for any reason other than that it already contains the element.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function add($element): bool;
+ public function add(mixed $element): bool;
/**
* Returns `true` if this collection contains the specified element.
@@ -68,8 +66,7 @@ interface CollectionInterface extends ArrayInterface
* @param T $element The element to check whether the collection contains.
* @param bool $strict Whether to perform a strict type check on the value.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function contains($element, bool $strict = true): bool;
+ public function contains(mixed $element, bool $strict = true): bool;
/**
* Returns the type associated with this collection.
@@ -84,15 +81,20 @@ interface CollectionInterface extends ArrayInterface
*
* @return bool `true` if an element was removed as a result of this call.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function remove($element): bool;
+ public function remove(mixed $element): bool;
/**
- * Returns the values from the given property or method.
+ * Returns the values from the given property, method, or array key.
+ *
+ * @param string $propertyOrMethod The name of the property, method, or
+ * array key to evaluate and return.
*
- * @param string $propertyOrMethod The property or method name to filter by.
+ * @return array<int, mixed>
*
- * @return list<mixed>
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call column() on this
+ * collection.
*/
public function column(string $propertyOrMethod): array;
@@ -100,29 +102,41 @@ interface CollectionInterface extends ArrayInterface
* Returns the first item of the collection.
*
* @return T
+ *
+ * @throws NoSuchElementException if this collection is empty.
*/
- public function first();
+ public function first(): mixed;
/**
* Returns the last item of the collection.
*
* @return T
+ *
+ * @throws NoSuchElementException if this collection is empty.
*/
- public function last();
+ public function last(): mixed;
/**
- * Sort the collection by a property or method with the given sort order.
+ * Sort the collection by a property, method, or array key with the given
+ * sort order.
+ *
+ * If $propertyOrMethod is `null`, this will sort by comparing each element.
*
* This will always leave the original collection untouched and will return
* a new one.
*
- * @param string $propertyOrMethod The property or method to sort by.
- * @param string $order The sort order for the resulting collection (one of
- * this interface's `SORT_*` constants).
+ * @param string | null $propertyOrMethod The property, method, or array key
+ * to sort by.
+ * @param Sort $order The sort order for the resulting collection.
*
* @return CollectionInterface<T>
+ *
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call sort() on this
+ * collection.
*/
- public function sort(string $propertyOrMethod, string $order = self::SORT_ASC): self;
+ public function sort(?string $propertyOrMethod = null, Sort $order = Sort::Ascending): self;
/**
* Filter out items of the collection which don't match the criteria of
@@ -134,24 +148,31 @@ interface CollectionInterface extends ArrayInterface
* See the {@link http://php.net/manual/en/function.array-filter.php PHP array_filter() documentation}
* for examples of how the `$callback` parameter works.
*
- * @param callable(T):bool $callback A callable to use for filtering elements.
+ * @param callable(T): bool $callback A callable to use for filtering elements.
*
* @return CollectionInterface<T>
*/
public function filter(callable $callback): self;
/**
- * Create a new collection where items match the criteria of given callback.
+ * Create a new collection where the result of the given property, method,
+ * or array key of each item in the collection equals the given value.
*
* This will always leave the original collection untouched and will return
* a new one.
*
- * @param string $propertyOrMethod The property or method to evaluate.
+ * @param string | null $propertyOrMethod The property, method, or array key
+ * to evaluate. If `null`, the element itself is compared to $value.
* @param mixed $value The value to match.
*
* @return CollectionInterface<T>
+ *
+ * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
+ * on the elements in this collection.
+ * @throws UnsupportedOperationException if unable to call where() on this
+ * collection.
*/
- public function where(string $propertyOrMethod, $value): self;
+ public function where(?string $propertyOrMethod, mixed $value): self;
/**
* Apply a given callback method on each item of the collection.
@@ -163,7 +184,7 @@ interface CollectionInterface extends ArrayInterface
* See the {@link http://php.net/manual/en/function.array-map.php PHP array_map() documentation}
* for examples of how the `$callback` parameter works.
*
- * @param callable(T):TCallbackReturn $callback A callable to apply to each
+ * @param callable(T): TCallbackReturn $callback A callable to apply to each
* item of the collection.
*
* @return CollectionInterface<TCallbackReturn>
@@ -173,6 +194,23 @@ interface CollectionInterface extends ArrayInterface
public function map(callable $callback): self;
/**
+ * Apply a given callback method on each item of the collection
+ * to reduce it to a single value.
+ *
+ * See the {@link http://php.net/manual/en/function.array-reduce.php PHP array_reduce() documentation}
+ * for examples of how the `$callback` and `$initial` parameters work.
+ *
+ * @param callable(TCarry, T): TCarry $callback A callable to apply to each
+ * item of the collection to reduce it to a single value.
+ * @param TCarry $initial This is the initial value provided to the callback.
+ *
+ * @return TCarry
+ *
+ * @template TCarry
+ */
+ public function reduce(callable $callback, mixed $initial): mixed;
+
+ /**
* Create a new collection with divergent items between current and given
* collection.
*
@@ -180,6 +218,9 @@ interface CollectionInterface extends ArrayInterface
* items.
*
* @return CollectionInterface<T>
+ *
+ * @throws CollectionMismatchException if the compared collections are of
+ * differing types.
*/
public function diff(CollectionInterface $other): self;
@@ -191,6 +232,9 @@ interface CollectionInterface extends ArrayInterface
* intersecting items.
*
* @return CollectionInterface<T>
+ *
+ * @throws CollectionMismatchException if the compared collections are of
+ * differing types.
*/
public function intersect(CollectionInterface $other): self;
@@ -200,6 +244,10 @@ interface CollectionInterface extends ArrayInterface
* @param CollectionInterface<T> ...$collections The collections to merge.
*
* @return CollectionInterface<T>
+ *
+ * @throws CollectionMismatchException if unable to merge any of the given
+ * collections or items within the given collections due to type
+ * mismatch errors.
*/
public function merge(CollectionInterface ...$collections): self;
}
diff --git a/vendor/ramsey/collection/src/DoubleEndedQueue.php b/vendor/ramsey/collection/src/DoubleEndedQueue.php
index c9c59502d..62947a24f 100644
--- a/vendor/ramsey/collection/src/DoubleEndedQueue.php
+++ b/vendor/ramsey/collection/src/DoubleEndedQueue.php
@@ -17,6 +17,10 @@ namespace Ramsey\Collection;
use Ramsey\Collection\Exception\InvalidArgumentException;
use Ramsey\Collection\Exception\NoSuchElementException;
+use function array_key_last;
+use function array_pop;
+use function array_unshift;
+
/**
* This class provides a basic implementation of `DoubleEndedQueueInterface`, to
* minimize the effort required to implement this interface.
@@ -28,160 +32,135 @@ use Ramsey\Collection\Exception\NoSuchElementException;
class DoubleEndedQueue extends Queue implements DoubleEndedQueueInterface
{
/**
- * Index of the last element in the queue.
+ * Constructs a double-ended queue (dequeue) object of the specified type,
+ * optionally with the specified data.
*
- * @var int
- */
- private $tail = -1;
-
- /**
- * @inheritDoc
+ * @param string $queueType The type or class name associated with this dequeue.
+ * @param array<array-key, T> $data The initial items to store in the dequeue.
*/
- public function offsetSet($offset, $value): void
+ public function __construct(private readonly string $queueType, array $data = [])
{
- if ($this->checkType($this->getType(), $value) === false) {
- throw new InvalidArgumentException(
- 'Value must be of type ' . $this->getType() . '; value is '
- . $this->toolValueToString($value)
- );
- }
-
- $this->tail++;
-
- $this->data[$this->tail] = $value;
+ parent::__construct($this->queueType, $data);
}
/**
- * @inheritDoc
+ * @throws InvalidArgumentException if $element is of the wrong type
*/
- public function addFirst($element): bool
+ public function addFirst(mixed $element): bool
{
if ($this->checkType($this->getType(), $element) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getType() . '; value is '
- . $this->toolValueToString($element)
+ . $this->toolValueToString($element),
);
}
- $this->index--;
-
- $this->data[$this->index] = $element;
+ array_unshift($this->data, $element);
return true;
}
/**
- * @inheritDoc
+ * @throws InvalidArgumentException if $element is of the wrong type
*/
- public function addLast($element): bool
+ public function addLast(mixed $element): bool
{
return $this->add($element);
}
- /**
- * @inheritDoc
- */
- public function offerFirst($element): bool
+ public function offerFirst(mixed $element): bool
{
try {
return $this->addFirst($element);
- } catch (InvalidArgumentException $e) {
+ } catch (InvalidArgumentException) {
return false;
}
}
- /**
- * @inheritDoc
- */
- public function offerLast($element): bool
+ public function offerLast(mixed $element): bool
{
return $this->offer($element);
}
/**
- * @inheritDoc
+ * @return T the first element in this queue.
+ *
+ * @throws NoSuchElementException if the queue is empty
*/
- public function removeFirst()
+ public function removeFirst(): mixed
{
return $this->remove();
}
/**
- * @inheritDoc
+ * @return T the last element in this queue.
+ *
+ * @throws NoSuchElementException if this queue is empty.
*/
- public function removeLast()
+ public function removeLast(): mixed
{
- $tail = $this->pollLast();
-
- if ($tail === null) {
- throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.');
- }
-
- return $tail;
+ return $this->pollLast() ?? throw new NoSuchElementException(
+ 'Can\'t return element from Queue. Queue is empty.',
+ );
}
/**
- * @inheritDoc
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function pollFirst()
+ public function pollFirst(): mixed
{
return $this->poll();
}
/**
- * @inheritDoc
+ * @return T | null the tail of this queue, or `null` if this queue is empty.
*/
- public function pollLast()
+ public function pollLast(): mixed
{
- if ($this->count() === 0) {
- return null;
- }
-
- $tail = $this[$this->tail];
-
- unset($this[$this->tail]);
- $this->tail--;
-
- return $tail;
+ return array_pop($this->data);
}
/**
- * @inheritDoc
+ * @return T the head of this queue.
+ *
+ * @throws NoSuchElementException if this queue is empty.
*/
- public function firstElement()
+ public function firstElement(): mixed
{
return $this->element();
}
/**
- * @inheritDoc
+ * @return T the tail of this queue.
+ *
+ * @throws NoSuchElementException if this queue is empty.
*/
- public function lastElement()
+ public function lastElement(): mixed
{
- if ($this->count() === 0) {
- throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.');
- }
-
- return $this->data[$this->tail];
+ return $this->peekLast() ?? throw new NoSuchElementException(
+ 'Can\'t return element from Queue. Queue is empty.',
+ );
}
/**
- * @inheritDoc
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function peekFirst()
+ public function peekFirst(): mixed
{
return $this->peek();
}
/**
- * @inheritDoc
+ * @return T | null the tail of this queue, or `null` if this queue is empty.
*/
- public function peekLast()
+ public function peekLast(): mixed
{
- if ($this->count() === 0) {
+ $lastIndex = array_key_last($this->data);
+
+ if ($lastIndex === null) {
return null;
}
- return $this->data[$this->tail];
+ return $this->data[$lastIndex];
}
}
diff --git a/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php b/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php
index d7df53469..15cc0e97b 100644
--- a/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php
+++ b/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php
@@ -15,6 +15,7 @@ declare(strict_types=1);
namespace Ramsey\Collection;
use Ramsey\Collection\Exception\NoSuchElementException;
+use RuntimeException;
/**
* A linear collection that supports element insertion and removal at both ends.
@@ -175,13 +176,12 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if this queue changed as a result of the call.
*
- * @throws \RuntimeException if a queue refuses to add a particular element
+ * @throws RuntimeException if a queue refuses to add a particular element
* for any reason other than that it already contains the element.
* Implementations should use a more-specific exception that extends
* `\RuntimeException`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function addFirst($element): bool;
+ public function addFirst(mixed $element): bool;
/**
* Inserts the specified element at the end of this queue if it is possible
@@ -196,13 +196,12 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if this queue changed as a result of the call.
*
- * @throws \RuntimeException if a queue refuses to add a particular element
+ * @throws RuntimeException if a queue refuses to add a particular element
* for any reason other than that it already contains the element.
* Implementations should use a more-specific exception that extends
* `\RuntimeException`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function addLast($element): bool;
+ public function addLast(mixed $element): bool;
/**
* Inserts the specified element at the front of this queue if it is
@@ -216,8 +215,7 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if the element was added to this queue, else `false`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function offerFirst($element): bool;
+ public function offerFirst(mixed $element): bool;
/**
* Inserts the specified element at the end of this queue if it is possible
@@ -231,8 +229,7 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if the element was added to this queue, else `false`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function offerLast($element): bool;
+ public function offerLast(mixed $element): bool;
/**
* Retrieves and removes the head of this queue.
@@ -244,7 +241,7 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function removeFirst();
+ public function removeFirst(): mixed;
/**
* Retrieves and removes the tail of this queue.
@@ -256,23 +253,23 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function removeLast();
+ public function removeLast(): mixed;
/**
* Retrieves and removes the head of this queue, or returns `null` if this
* queue is empty.
*
- * @return T|null the head of this queue, or `null` if this queue is empty.
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function pollFirst();
+ public function pollFirst(): mixed;
/**
* Retrieves and removes the tail of this queue, or returns `null` if this
* queue is empty.
*
- * @return T|null the tail of this queue, or `null` if this queue is empty.
+ * @return T | null the tail of this queue, or `null` if this queue is empty.
*/
- public function pollLast();
+ public function pollLast(): mixed;
/**
* Retrieves, but does not remove, the head of this queue.
@@ -284,7 +281,7 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function firstElement();
+ public function firstElement(): mixed;
/**
* Retrieves, but does not remove, the tail of this queue.
@@ -296,21 +293,21 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function lastElement();
+ public function lastElement(): mixed;
/**
* Retrieves, but does not remove, the head of this queue, or returns `null`
* if this queue is empty.
*
- * @return T|null the head of this queue, or `null` if this queue is empty.
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function peekFirst();
+ public function peekFirst(): mixed;
/**
* Retrieves, but does not remove, the tail of this queue, or returns `null`
* if this queue is empty.
*
- * @return T|null the tail of this queue, or `null` if this queue is empty.
+ * @return T | null the tail of this queue, or `null` if this queue is empty.
*/
- public function peekLast();
+ public function peekLast(): mixed;
}
diff --git a/vendor/ramsey/collection/src/Exception/CollectionException.php b/vendor/ramsey/collection/src/Exception/CollectionException.php
new file mode 100644
index 000000000..4aa92bed8
--- /dev/null
+++ b/vendor/ramsey/collection/src/Exception/CollectionException.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the ramsey/collection library
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
+ * @license http://opensource.org/licenses/MIT MIT
+ */
+
+declare(strict_types=1);
+
+namespace Ramsey\Collection\Exception;
+
+use Throwable;
+
+interface CollectionException extends Throwable
+{
+}
diff --git a/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php b/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php
index d4b335f45..42f5be2df 100644
--- a/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php
+++ b/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
+use RuntimeException;
+
/**
* Thrown when attempting to operate on collections of differing types.
*/
-class CollectionMismatchException extends \RuntimeException
+class CollectionMismatchException extends RuntimeException implements CollectionException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php b/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php
index dcc3eac60..7b41b4a7c 100644
--- a/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php
+++ b/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
+use InvalidArgumentException as PhpInvalidArgumentException;
+
/**
* Thrown to indicate an argument is not of the expected type.
*/
-class InvalidArgumentException extends \InvalidArgumentException
+class InvalidArgumentException extends PhpInvalidArgumentException implements CollectionException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php b/vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php
new file mode 100644
index 000000000..a53be14aa
--- /dev/null
+++ b/vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the ramsey/collection library
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
+ * @license http://opensource.org/licenses/MIT MIT
+ */
+
+declare(strict_types=1);
+
+namespace Ramsey\Collection\Exception;
+
+use RuntimeException;
+
+/**
+ * Thrown when attempting to evaluate a property, method, or array key
+ * that doesn't exist on an element or cannot otherwise be evaluated in the
+ * current context.
+ */
+class InvalidPropertyOrMethod extends RuntimeException implements CollectionException
+{
+}
diff --git a/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php b/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php
deleted file mode 100644
index 9337ccc66..000000000
--- a/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * This file is part of the ramsey/collection library
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
- * @license http://opensource.org/licenses/MIT MIT
- */
-
-declare(strict_types=1);
-
-namespace Ramsey\Collection\Exception;
-
-/**
- * Thrown when attempting to use a sort order that is not recognized.
- */
-class InvalidSortOrderException extends \RuntimeException
-{
-}
diff --git a/vendor/ramsey/collection/src/Exception/NoSuchElementException.php b/vendor/ramsey/collection/src/Exception/NoSuchElementException.php
index 9debe8f66..cd98f0c0f 100644
--- a/vendor/ramsey/collection/src/Exception/NoSuchElementException.php
+++ b/vendor/ramsey/collection/src/Exception/NoSuchElementException.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
+use RuntimeException;
+
/**
* Thrown when attempting to access an element that does not exist.
*/
-class NoSuchElementException extends \RuntimeException
+class NoSuchElementException extends RuntimeException implements CollectionException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php b/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php
index 4e9d16fa3..c75294e53 100644
--- a/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php
+++ b/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
+use OutOfBoundsException as PhpOutOfBoundsException;
+
/**
* Thrown when attempting to access an element out of the range of the collection.
*/
-class OutOfBoundsException extends \OutOfBoundsException
+class OutOfBoundsException extends PhpOutOfBoundsException implements CollectionException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php b/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php
index 8f45e5836..d074f45fd 100644
--- a/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php
+++ b/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
+use RuntimeException;
+
/**
* Thrown to indicate that the requested operation is not supported.
*/
-class UnsupportedOperationException extends \RuntimeException
+class UnsupportedOperationException extends RuntimeException implements CollectionException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/ValueExtractionException.php b/vendor/ramsey/collection/src/Exception/ValueExtractionException.php
deleted file mode 100644
index f6c6cb4ec..000000000
--- a/vendor/ramsey/collection/src/Exception/ValueExtractionException.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * This file is part of the ramsey/collection library
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
- * @license http://opensource.org/licenses/MIT MIT
- */
-
-declare(strict_types=1);
-
-namespace Ramsey\Collection\Exception;
-
-/**
- * Thrown when attempting to extract a value for a method or property that does not exist.
- */
-class ValueExtractionException extends \RuntimeException
-{
-}
diff --git a/vendor/ramsey/collection/src/Map/AbstractMap.php b/vendor/ramsey/collection/src/Map/AbstractMap.php
index ae9f2fe61..7a851a80f 100644
--- a/vendor/ramsey/collection/src/Map/AbstractMap.php
+++ b/vendor/ramsey/collection/src/Map/AbstractMap.php
@@ -16,48 +16,65 @@ namespace Ramsey\Collection\Map;
use Ramsey\Collection\AbstractArray;
use Ramsey\Collection\Exception\InvalidArgumentException;
+use Traversable;
use function array_key_exists;
use function array_keys;
use function in_array;
+use function var_export;
/**
* This class provides a basic implementation of `MapInterface`, to minimize the
* effort required to implement this interface.
*
+ * @template K of array-key
* @template T
* @extends AbstractArray<T>
- * @implements MapInterface<T>
+ * @implements MapInterface<K, T>
*/
abstract class AbstractMap extends AbstractArray implements MapInterface
{
/**
+ * @param array<K, T> $data The initial items to add to this map.
+ */
+ public function __construct(array $data = [])
+ {
+ parent::__construct($data);
+ }
+
+ /**
+ * @return Traversable<K, T>
+ */
+ public function getIterator(): Traversable
+ {
+ return parent::getIterator();
+ }
+
+ /**
+ * @param K $offset The offset to set
+ * @param T $value The value to set at the given offset.
+ *
* @inheritDoc
+ * @psalm-suppress MoreSpecificImplementedParamType,DocblockTypeContradiction
*/
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
if ($offset === null) {
throw new InvalidArgumentException(
'Map elements are key/value pairs; a key must be provided for '
- . 'value ' . var_export($value, true)
+ . 'value ' . var_export($value, true),
);
}
$this->data[$offset] = $value;
}
- /**
- * @inheritDoc
- */
- public function containsKey($key): bool
+ public function containsKey(int | string $key): bool
{
return array_key_exists($key, $this->data);
}
- /**
- * @inheritDoc
- */
- public function containsValue($value): bool
+ public function containsValue(mixed $value): bool
{
return in_array($value, $this->data, true);
}
@@ -71,21 +88,24 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @inheritDoc
+ * @param K $key The key to return from the map.
+ * @param T | null $defaultValue The default value to use if `$key` is not found.
+ *
+ * @return T | null the value or `null` if the key could not be found.
*/
- public function get($key, $defaultValue = null)
+ public function get(int | string $key, mixed $defaultValue = null): mixed
{
- if (!$this->containsKey($key)) {
- return $defaultValue;
- }
-
- return $this[$key];
+ return $this[$key] ?? $defaultValue;
}
/**
- * @inheritDoc
+ * @param K $key The key to put or replace in the map.
+ * @param T $value The value to store at `$key`.
+ *
+ * @return T | null the previous value associated with key, or `null` if
+ * there was no mapping for `$key`.
*/
- public function put($key, $value)
+ public function put(int | string $key, mixed $value): mixed
{
$previousValue = $this->get($key);
$this[$key] = $value;
@@ -94,9 +114,13 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @inheritDoc
+ * @param K $key The key to put in the map.
+ * @param T $value The value to store at `$key`.
+ *
+ * @return T | null the previous value associated with key, or `null` if
+ * there was no mapping for `$key`.
*/
- public function putIfAbsent($key, $value)
+ public function putIfAbsent(int | string $key, mixed $value): mixed
{
$currentValue = $this->get($key);
@@ -108,9 +132,12 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @inheritDoc
+ * @param K $key The key to remove from the map.
+ *
+ * @return T | null the previous value associated with key, or `null` if
+ * there was no mapping for `$key`.
*/
- public function remove($key)
+ public function remove(int | string $key): mixed
{
$previousValue = $this->get($key);
unset($this[$key]);
@@ -118,10 +145,7 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
return $previousValue;
}
- /**
- * @inheritDoc
- */
- public function removeIf($key, $value): bool
+ public function removeIf(int | string $key, mixed $value): bool
{
if ($this->get($key) === $value) {
unset($this[$key]);
@@ -133,9 +157,13 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @inheritDoc
+ * @param K $key The key to replace.
+ * @param T $value The value to set at `$key`.
+ *
+ * @return T | null the previous value associated with key, or `null` if
+ * there was no mapping for `$key`.
*/
- public function replace($key, $value)
+ public function replace(int | string $key, mixed $value): mixed
{
$currentValue = $this->get($key);
@@ -146,10 +174,7 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
return $currentValue;
}
- /**
- * @inheritDoc
- */
- public function replaceIf($key, $oldValue, $newValue): bool
+ public function replaceIf(int | string $key, mixed $oldValue, mixed $newValue): bool
{
if ($this->get($key) === $oldValue) {
$this[$key] = $newValue;
@@ -159,4 +184,20 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
return false;
}
+
+ /**
+ * @return array<K, T>
+ */
+ public function __serialize(): array
+ {
+ return parent::__serialize();
+ }
+
+ /**
+ * @return array<K, T>
+ */
+ public function toArray(): array
+ {
+ return parent::toArray();
+ }
}
diff --git a/vendor/ramsey/collection/src/Map/AbstractTypedMap.php b/vendor/ramsey/collection/src/Map/AbstractTypedMap.php
index 551d2e6c6..92fdcd54c 100644
--- a/vendor/ramsey/collection/src/Map/AbstractTypedMap.php
+++ b/vendor/ramsey/collection/src/Map/AbstractTypedMap.php
@@ -22,10 +22,10 @@ use Ramsey\Collection\Tool\ValueToStringTrait;
* This class provides a basic implementation of `TypedMapInterface`, to
* minimize the effort required to implement this interface.
*
- * @template K
+ * @template K of array-key
* @template T
- * @extends AbstractMap<T>
- * @implements TypedMapInterface<T>
+ * @extends AbstractMap<K, T>
+ * @implements TypedMapInterface<K, T>
*/
abstract class AbstractTypedMap extends AbstractMap implements TypedMapInterface
{
@@ -33,37 +33,28 @@ abstract class AbstractTypedMap extends AbstractMap implements TypedMapInterface
use ValueToStringTrait;
/**
- * @param K|null $offset
+ * @param K $offset
* @param T $value
*
* @inheritDoc
- *
* @psalm-suppress MoreSpecificImplementedParamType
*/
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
- if ($offset === null) {
- throw new InvalidArgumentException(
- 'Map elements are key/value pairs; a key must be provided for '
- . 'value ' . var_export($value, true)
- );
- }
-
if ($this->checkType($this->getKeyType(), $offset) === false) {
throw new InvalidArgumentException(
'Key must be of type ' . $this->getKeyType() . '; key is '
- . $this->toolValueToString($offset)
+ . $this->toolValueToString($offset),
);
}
if ($this->checkType($this->getValueType(), $value) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getValueType() . '; value is '
- . $this->toolValueToString($value)
+ . $this->toolValueToString($value),
);
}
- /** @psalm-suppress MixedArgumentTypeCoercion */
parent::offsetSet($offset, $value);
}
}
diff --git a/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php b/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php
index 79a314d96..34e4e853b 100644
--- a/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php
+++ b/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php
@@ -17,8 +17,7 @@ namespace Ramsey\Collection\Map;
/**
* `AssociativeArrayMap` represents a standard associative array object.
*
- * @template T
- * @extends AbstractMap<T>
+ * @extends AbstractMap<string, mixed>
*/
class AssociativeArrayMap extends AbstractMap
{
diff --git a/vendor/ramsey/collection/src/Map/MapInterface.php b/vendor/ramsey/collection/src/Map/MapInterface.php
index 6ed0b2967..22ba1bdd1 100644
--- a/vendor/ramsey/collection/src/Map/MapInterface.php
+++ b/vendor/ramsey/collection/src/Map/MapInterface.php
@@ -21,6 +21,7 @@ use Ramsey\Collection\ArrayInterface;
*
* A map cannot contain duplicate keys; each key can map to at most one value.
*
+ * @template K of array-key
* @template T
* @extends ArrayInterface<T>
*/
@@ -29,9 +30,9 @@ interface MapInterface extends ArrayInterface
/**
* Returns `true` if this map contains a mapping for the specified key.
*
- * @param array-key $key The key to check in the map.
+ * @param K $key The key to check in the map.
*/
- public function containsKey($key): bool;
+ public function containsKey(int | string $key): bool;
/**
* Returns `true` if this map maps one or more keys to the specified value.
@@ -40,13 +41,12 @@ interface MapInterface extends ArrayInterface
*
* @param T $value The value to check in the map.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function containsValue($value): bool;
+ public function containsValue(mixed $value): bool;
/**
* Return an array of the keys contained in this map.
*
- * @return list<array-key>
+ * @return list<K>
*/
public function keys(): array;
@@ -55,13 +55,12 @@ interface MapInterface extends ArrayInterface
* map contains no mapping for the key, or (optionally) `$defaultValue` if
* this map contains no mapping for the key.
*
- * @param array-key $key The key to return from the map.
- * @param T|null $defaultValue The default value to use if `$key` is not found.
+ * @param K $key The key to return from the map.
+ * @param T | null $defaultValue The default value to use if `$key` is not found.
*
- * @return T|null the value or `null` if the key could not be found.
+ * @return T | null the value or `null` if the key could not be found.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function get($key, $defaultValue = null);
+ public function get(int | string $key, mixed $defaultValue = null): mixed;
/**
* Associates the specified value with the specified key in this map.
@@ -69,14 +68,13 @@ interface MapInterface extends ArrayInterface
* If the map previously contained a mapping for the key, the old value is
* replaced by the specified value.
*
- * @param array-key $key The key to put or replace in the map.
+ * @param K $key The key to put or replace in the map.
* @param T $value The value to store at `$key`.
*
- * @return T|null the previous value associated with key, or `null` if
+ * @return T | null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function put($key, $value);
+ public function put(int | string $key, mixed $value): mixed;
/**
* Associates the specified value with the specified key in this map only if
@@ -85,25 +83,23 @@ interface MapInterface extends ArrayInterface
* If there is already a value associated with `$key`, this returns that
* value without replacing it.
*
- * @param array-key $key The key to put in the map.
+ * @param K $key The key to put in the map.
* @param T $value The value to store at `$key`.
*
- * @return T|null the previous value associated with key, or `null` if
+ * @return T | null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function putIfAbsent($key, $value);
+ public function putIfAbsent(int | string $key, mixed $value): mixed;
/**
* Removes the mapping for a key from this map if it is present.
*
- * @param array-key $key The key to remove from the map.
+ * @param K $key The key to remove from the map.
*
- * @return T|null the previous value associated with key, or `null` if
+ * @return T | null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function remove($key);
+ public function remove(int | string $key): mixed;
/**
* Removes the entry for the specified key only if it is currently mapped to
@@ -111,26 +107,24 @@ interface MapInterface extends ArrayInterface
*
* This performs a strict type check on the value.
*
- * @param array-key $key The key to remove from the map.
+ * @param K $key The key to remove from the map.
* @param T $value The value to match.
*
* @return bool true if the value was removed.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function removeIf($key, $value): bool;
+ public function removeIf(int | string $key, mixed $value): bool;
/**
* Replaces the entry for the specified key only if it is currently mapped
* to some value.
*
- * @param array-key $key The key to replace.
+ * @param K $key The key to replace.
* @param T $value The value to set at `$key`.
*
- * @return T|null the previous value associated with key, or `null` if
+ * @return T | null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function replace($key, $value);
+ public function replace(int | string $key, mixed $value): mixed;
/**
* Replaces the entry for the specified key only if currently mapped to the
@@ -138,12 +132,11 @@ interface MapInterface extends ArrayInterface
*
* This performs a strict type check on the value.
*
- * @param array-key $key The key to remove from the map.
+ * @param K $key The key to remove from the map.
* @param T $oldValue The value to match.
* @param T $newValue The value to use as a replacement.
*
* @return bool true if the value was replaced.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function replaceIf($key, $oldValue, $newValue): bool;
+ public function replaceIf(int | string $key, mixed $oldValue, mixed $newValue): bool;
}
diff --git a/vendor/ramsey/collection/src/Map/NamedParameterMap.php b/vendor/ramsey/collection/src/Map/NamedParameterMap.php
index 9926ddd8c..f948e476c 100644
--- a/vendor/ramsey/collection/src/Map/NamedParameterMap.php
+++ b/vendor/ramsey/collection/src/Map/NamedParameterMap.php
@@ -26,7 +26,7 @@ use function is_int;
* `NamedParameterMap` represents a mapping of values to a set of named keys
* that may optionally be typed
*
- * @extends AbstractMap<mixed>
+ * @extends AbstractMap<string, mixed>
*/
class NamedParameterMap extends AbstractMap
{
@@ -38,13 +38,13 @@ class NamedParameterMap extends AbstractMap
*
* @var array<string, string>
*/
- protected $namedParameters;
+ private readonly array $namedParameters;
/**
* Constructs a new `NamedParameterMap`.
*
* @param array<array-key, string> $namedParameters The named parameters defined for this map.
- * @param array<array-key, mixed> $data An initial set of data to set on this map.
+ * @param array<string, mixed> $data An initial set of data to set on this map.
*/
public function __construct(array $namedParameters, array $data = [])
{
@@ -62,22 +62,12 @@ class NamedParameterMap extends AbstractMap
return $this->namedParameters;
}
- /**
- * @inheritDoc
- */
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
- if ($offset === null) {
- throw new InvalidArgumentException(
- 'Map elements are key/value pairs; a key must be provided for '
- . 'value ' . var_export($value, true)
- );
- }
-
if (!array_key_exists($offset, $this->namedParameters)) {
throw new InvalidArgumentException(
'Attempting to set value for unconfigured parameter \''
- . $offset . '\''
+ . $this->toolValueToString($offset) . '\'',
);
}
@@ -85,7 +75,7 @@ class NamedParameterMap extends AbstractMap
throw new InvalidArgumentException(
'Value for \'' . $offset . '\' must be of type '
. $this->namedParameters[$offset] . '; value is '
- . $this->toolValueToString($value)
+ . $this->toolValueToString($value),
);
}
diff --git a/vendor/ramsey/collection/src/Map/TypedMap.php b/vendor/ramsey/collection/src/Map/TypedMap.php
index 2e796377a..f914d9c70 100644
--- a/vendor/ramsey/collection/src/Map/TypedMap.php
+++ b/vendor/ramsey/collection/src/Map/TypedMap.php
@@ -14,13 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Map;
-use Ramsey\Collection\Tool\TypeTrait;
-
/**
* A `TypedMap` represents a map of elements where key and value are typed.
*
* Each element is identified by a key with defined type and a value of defined
- * type. The keys of the map must be unique. The values on the map can be=
+ * type. The keys of the map must be unique. The values on the map can be
* repeated but each with its own different key.
*
* The most common case is to use a string type key, but it's not limited to
@@ -80,34 +78,12 @@ use Ramsey\Collection\Tool\TypeTrait;
* }
* ```
*
- * @template K
+ * @template K of array-key
* @template T
* @extends AbstractTypedMap<K, T>
*/
class TypedMap extends AbstractTypedMap
{
- use TypeTrait;
-
- /**
- * The data type of keys stored in this collection.
- *
- * A map key's type is immutable once it is set. For this reason, this
- * property is set private.
- *
- * @var string data type of the map key.
- */
- private $keyType;
-
- /**
- * The data type of values stored in this collection.
- *
- * A map value's type is immutable once it is set. For this reason, this
- * property is set private.
- *
- * @var string data type of the map value.
- */
- private $valueType;
-
/**
* Constructs a map object of the specified key and value types,
* optionally with the specified data.
@@ -116,12 +92,11 @@ class TypedMap extends AbstractTypedMap
* @param string $valueType The data type of the map's values.
* @param array<K, T> $data The initial data to set for this map.
*/
- public function __construct(string $keyType, string $valueType, array $data = [])
- {
- $this->keyType = $keyType;
- $this->valueType = $valueType;
-
- /** @psalm-suppress MixedArgumentTypeCoercion */
+ public function __construct(
+ private readonly string $keyType,
+ private readonly string $valueType,
+ array $data = [],
+ ) {
parent::__construct($data);
}
diff --git a/vendor/ramsey/collection/src/Map/TypedMapInterface.php b/vendor/ramsey/collection/src/Map/TypedMapInterface.php
index 0308109cc..5a44f0647 100644
--- a/vendor/ramsey/collection/src/Map/TypedMapInterface.php
+++ b/vendor/ramsey/collection/src/Map/TypedMapInterface.php
@@ -18,8 +18,9 @@ namespace Ramsey\Collection\Map;
* A `TypedMapInterface` represents a map of elements where key and value are
* typed.
*
+ * @template K of array-key
* @template T
- * @extends MapInterface<T>
+ * @extends MapInterface<K, T>
*/
interface TypedMapInterface extends MapInterface
{
diff --git a/vendor/ramsey/collection/src/Queue.php b/vendor/ramsey/collection/src/Queue.php
index 93e032b43..0f5b33740 100644
--- a/vendor/ramsey/collection/src/Queue.php
+++ b/vendor/ramsey/collection/src/Queue.php
@@ -19,6 +19,8 @@ use Ramsey\Collection\Exception\NoSuchElementException;
use Ramsey\Collection\Tool\TypeTrait;
use Ramsey\Collection\Tool\ValueToStringTrait;
+use function array_key_first;
+
/**
* This class provides a basic implementation of `QueueInterface`, to minimize
* the effort required to implement this interface.
@@ -33,32 +35,14 @@ class Queue extends AbstractArray implements QueueInterface
use ValueToStringTrait;
/**
- * The type of elements stored in this queue.
- *
- * A queue's type is immutable once it is set. For this reason, this
- * property is set private.
- *
- * @var string
- */
- private $queueType;
-
- /**
- * The index of the head of the queue.
- *
- * @var int
- */
- protected $index = 0;
-
- /**
* Constructs a queue object of the specified type, optionally with the
* specified data.
*
- * @param string $queueType The type (FQCN) associated with this queue.
- * @param array<array-key, T> $data The initial items to store in the collection.
+ * @param string $queueType The type or class name associated with this queue.
+ * @param array<array-key, T> $data The initial items to store in the queue.
*/
- public function __construct(string $queueType, array $data = [])
+ public function __construct(private readonly string $queueType, array $data = [])
{
- $this->queueType = $queueType;
parent::__construct($data);
}
@@ -68,13 +52,15 @@ class Queue extends AbstractArray implements QueueInterface
* Since arbitrary offsets may not be manipulated in a queue, this method
* serves only to fulfill the `ArrayAccess` interface requirements. It is
* invoked by other operations when adding values to the queue.
+ *
+ * @throws InvalidArgumentException if $value is of the wrong type.
*/
- public function offsetSet($offset, $value): void
+ public function offsetSet(mixed $offset, mixed $value): void
{
if ($this->checkType($this->getType(), $value) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getType() . '; value is '
- . $this->toolValueToString($value)
+ . $this->toolValueToString($value),
);
}
@@ -82,9 +68,9 @@ class Queue extends AbstractArray implements QueueInterface
}
/**
- * @inheritDoc
+ * @throws InvalidArgumentException if $value is of the wrong type.
*/
- public function add($element): bool
+ public function add(mixed $element): bool
{
$this[] = $element;
@@ -92,74 +78,67 @@ class Queue extends AbstractArray implements QueueInterface
}
/**
- * @inheritDoc
+ * @return T
+ *
+ * @throws NoSuchElementException if this queue is empty.
*/
- public function element()
+ public function element(): mixed
{
- $element = $this->peek();
-
- if ($element === null) {
- throw new NoSuchElementException(
- 'Can\'t return element from Queue. Queue is empty.'
- );
- }
-
- return $element;
+ return $this->peek() ?? throw new NoSuchElementException(
+ 'Can\'t return element from Queue. Queue is empty.',
+ );
}
- /**
- * @inheritDoc
- */
- public function offer($element): bool
+ public function offer(mixed $element): bool
{
try {
return $this->add($element);
- } catch (InvalidArgumentException $e) {
+ } catch (InvalidArgumentException) {
return false;
}
}
/**
- * @inheritDoc
+ * @return T | null
*/
- public function peek()
+ public function peek(): mixed
{
- if ($this->count() === 0) {
+ $index = array_key_first($this->data);
+
+ if ($index === null) {
return null;
}
- return $this[$this->index];
+ return $this[$index];
}
/**
- * @inheritDoc
+ * @return T | null
*/
- public function poll()
+ public function poll(): mixed
{
- if ($this->count() === 0) {
+ $index = array_key_first($this->data);
+
+ if ($index === null) {
return null;
}
- $head = $this[$this->index];
-
- unset($this[$this->index]);
- $this->index++;
+ $head = $this[$index];
+ unset($this[$index]);
return $head;
}
/**
- * @inheritDoc
+ * @return T
+ *
+ * @throws NoSuchElementException if this queue is empty.
*/
- public function remove()
+ public function remove(): mixed
{
- $head = $this->poll();
-
- if ($head === null) {
- throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.');
- }
-
- return $head;
+ return $this->poll() ?? throw new NoSuchElementException(
+ 'Can\'t return element from Queue. Queue is empty.',
+ );
}
public function getType(): string
diff --git a/vendor/ramsey/collection/src/QueueInterface.php b/vendor/ramsey/collection/src/QueueInterface.php
index 8c7383df8..f29ce43ab 100644
--- a/vendor/ramsey/collection/src/QueueInterface.php
+++ b/vendor/ramsey/collection/src/QueueInterface.php
@@ -15,6 +15,7 @@ declare(strict_types=1);
namespace Ramsey\Collection;
use Ramsey\Collection\Exception\NoSuchElementException;
+use RuntimeException;
/**
* A queue is a collection in which the entities in the collection are kept in
@@ -123,13 +124,12 @@ interface QueueInterface extends ArrayInterface
*
* @return bool `true` if this queue changed as a result of the call.
*
- * @throws \RuntimeException if a queue refuses to add a particular element
+ * @throws RuntimeException if a queue refuses to add a particular element
* for any reason other than that it already contains the element.
* Implementations should use a more-specific exception that extends
* `\RuntimeException`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function add($element): bool;
+ public function add(mixed $element): bool;
/**
* Retrieves, but does not remove, the head of this queue.
@@ -143,7 +143,7 @@ interface QueueInterface extends ArrayInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function element();
+ public function element(): mixed;
/**
* Inserts the specified element into this queue if it is possible to do so
@@ -159,8 +159,7 @@ interface QueueInterface extends ArrayInterface
*
* @return bool `true` if the element was added to this queue, else `false`.
*/
- // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
- public function offer($element): bool;
+ public function offer(mixed $element): bool;
/**
* Retrieves, but does not remove, the head of this queue, or returns `null`
@@ -168,9 +167,9 @@ interface QueueInterface extends ArrayInterface
*
* @see self::element()
*
- * @return T|null the head of this queue, or `null` if this queue is empty.
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function peek();
+ public function peek(): mixed;
/**
* Retrieves and removes the head of this queue, or returns `null`
@@ -178,9 +177,9 @@ interface QueueInterface extends ArrayInterface
*
* @see self::remove()
*
- * @return T|null the head of this queue, or `null` if this queue is empty.
+ * @return T | null the head of this queue, or `null` if this queue is empty.
*/
- public function poll();
+ public function poll(): mixed;
/**
* Retrieves and removes the head of this queue.
@@ -194,7 +193,7 @@ interface QueueInterface extends ArrayInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function remove();
+ public function remove(): mixed;
/**
* Returns the type associated with this queue.
diff --git a/vendor/ramsey/collection/src/Set.php b/vendor/ramsey/collection/src/Set.php
index 6932f247a..aa93351c4 100644
--- a/vendor/ramsey/collection/src/Set.php
+++ b/vendor/ramsey/collection/src/Set.php
@@ -28,7 +28,7 @@ namespace Ramsey\Collection;
* $foo = new \My\Foo();
* $set = new Set(\My\Foo::class);
*
- * $set->add($foo); // returns TRUE, the element don't exists
+ * $set->add($foo); // returns TRUE, the element doesn't exist
* $set->add($foo); // returns FALSE, the element already exists
*
* $bar = new \My\Foo();
@@ -41,24 +41,14 @@ namespace Ramsey\Collection;
class Set extends AbstractSet
{
/**
- * The type of elements stored in this set
- *
- * A set's type is immutable. For this reason, this property is private.
- *
- * @var string
- */
- private $setType;
-
- /**
* Constructs a set object of the specified type, optionally with the
* specified data.
*
- * @param string $setType The type (FQCN) associated with this set.
+ * @param string $setType The type or class name associated with this set.
* @param array<array-key, T> $data The initial items to store in the set.
*/
- public function __construct(string $setType, array $data = [])
+ public function __construct(private readonly string $setType, array $data = [])
{
- $this->setType = $setType;
parent::__construct($data);
}
diff --git a/vendor/ramsey/collection/src/Sort.php b/vendor/ramsey/collection/src/Sort.php
new file mode 100644
index 000000000..0c3c19213
--- /dev/null
+++ b/vendor/ramsey/collection/src/Sort.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * This file is part of the ramsey/collection library
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
+ * @license http://opensource.org/licenses/MIT MIT
+ */
+
+declare(strict_types=1);
+
+namespace Ramsey\Collection;
+
+/**
+ * Collection sorting
+ */
+enum Sort: string
+{
+ /**
+ * Sort items in a collection in ascending order.
+ */
+ case Ascending = 'asc';
+
+ /**
+ * Sort items in a collection in descending order.
+ */
+ case Descending = 'desc';
+}
diff --git a/vendor/ramsey/collection/src/Tool/TypeTrait.php b/vendor/ramsey/collection/src/Tool/TypeTrait.php
index 8214e9654..ac51b7f10 100644
--- a/vendor/ramsey/collection/src/Tool/TypeTrait.php
+++ b/vendor/ramsey/collection/src/Tool/TypeTrait.php
@@ -36,38 +36,22 @@ trait TypeTrait
* @param string $type The type to check the value against.
* @param mixed $value The value to check.
*/
- protected function checkType(string $type, $value): bool
+ protected function checkType(string $type, mixed $value): bool
{
- switch ($type) {
- case 'array':
- return is_array($value);
- case 'bool':
- case 'boolean':
- return is_bool($value);
- case 'callable':
- return is_callable($value);
- case 'float':
- case 'double':
- return is_float($value);
- case 'int':
- case 'integer':
- return is_int($value);
- case 'null':
- return $value === null;
- case 'numeric':
- return is_numeric($value);
- case 'object':
- return is_object($value);
- case 'resource':
- return is_resource($value);
- case 'scalar':
- return is_scalar($value);
- case 'string':
- return is_string($value);
- case 'mixed':
- return true;
- default:
- return $value instanceof $type;
- }
+ return match ($type) {
+ 'array' => is_array($value),
+ 'bool', 'boolean' => is_bool($value),
+ 'callable' => is_callable($value),
+ 'float', 'double' => is_float($value),
+ 'int', 'integer' => is_int($value),
+ 'null' => $value === null,
+ 'numeric' => is_numeric($value),
+ 'object' => is_object($value),
+ 'resource' => is_resource($value),
+ 'scalar' => is_scalar($value),
+ 'string' => is_string($value),
+ 'mixed' => true,
+ default => $value instanceof $type,
+ };
}
}
diff --git a/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php b/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php
index f9be1be28..44c422252 100644
--- a/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php
+++ b/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php
@@ -14,9 +14,11 @@ declare(strict_types=1);
namespace Ramsey\Collection\Tool;
-use Ramsey\Collection\Exception\ValueExtractionException;
+use Ramsey\Collection\Exception\InvalidPropertyOrMethod;
+use Ramsey\Collection\Exception\UnsupportedOperationException;
-use function get_class;
+use function is_array;
+use function is_object;
use function method_exists;
use function property_exists;
use function sprintf;
@@ -27,32 +29,53 @@ use function sprintf;
trait ValueExtractorTrait
{
/**
- * Extracts the value of the given property or method from the object.
+ * Extracts the value of the given property, method, or array key from the
+ * element.
*
- * @param mixed $object The object to extract the value from.
- * @param string $propertyOrMethod The property or method for which the
+ * If `$propertyOrMethod` is `null`, we return the element as-is.
+ *
+ * @param mixed $element The element to extract the value from.
+ * @param string | null $propertyOrMethod The property or method for which the
* value should be extracted.
*
- * @return mixed the value extracted from the specified property or method.
+ * @return mixed the value extracted from the specified property, method,
+ * or array key, or the element itself.
*
- * @throws ValueExtractionException if the method or property is not defined.
+ * @throws InvalidPropertyOrMethod
+ * @throws UnsupportedOperationException
*/
- protected function extractValue($object, string $propertyOrMethod)
+ protected function extractValue(mixed $element, ?string $propertyOrMethod): mixed
{
- if (!is_object($object)) {
- throw new ValueExtractionException('Unable to extract a value from a non-object');
+ if ($propertyOrMethod === null) {
+ return $element;
+ }
+
+ if (!is_object($element) && !is_array($element)) {
+ throw new UnsupportedOperationException(sprintf(
+ 'The collection type "%s" does not support the $propertyOrMethod parameter',
+ $this->getType(),
+ ));
+ }
+
+ if (is_array($element)) {
+ return $element[$propertyOrMethod] ?? throw new InvalidPropertyOrMethod(sprintf(
+ 'Key or index "%s" not found in collection elements',
+ $propertyOrMethod,
+ ));
}
- if (property_exists($object, $propertyOrMethod)) {
- return $object->$propertyOrMethod;
+ if (property_exists($element, $propertyOrMethod)) {
+ return $element->$propertyOrMethod;
}
- if (method_exists($object, $propertyOrMethod)) {
- return $object->{$propertyOrMethod}();
+ if (method_exists($element, $propertyOrMethod)) {
+ return $element->{$propertyOrMethod}();
}
- throw new ValueExtractionException(
- sprintf('Method or property "%s" not defined in %s', $propertyOrMethod, get_class($object))
- );
+ throw new InvalidPropertyOrMethod(sprintf(
+ 'Method or property "%s" not defined in %s',
+ $propertyOrMethod,
+ $element::class,
+ ));
}
}
diff --git a/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php b/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php
index 721ade002..64fc5fa42 100644
--- a/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php
+++ b/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php
@@ -16,11 +16,12 @@ namespace Ramsey\Collection\Tool;
use DateTimeInterface;
-use function get_class;
+use function assert;
use function get_resource_type;
use function is_array;
use function is_bool;
use function is_callable;
+use function is_object;
use function is_resource;
use function is_scalar;
@@ -44,7 +45,7 @@ trait ValueToStringTrait
*
* @param mixed $value the value to return as a string.
*/
- protected function toolValueToString($value): string
+ protected function toolValueToString(mixed $value): string
{
// null
if ($value === null) {
@@ -71,12 +72,8 @@ trait ValueToStringTrait
return '(' . get_resource_type($value) . ' resource #' . (int) $value . ')';
}
- // If we don't know what it is, use var_export().
- if (!is_object($value)) {
- return '(' . var_export($value, true) . ')';
- }
-
// From here, $value should be an object.
+ assert(is_object($value));
// __toString() is implemented
if (is_callable([$value, '__toString'])) {
@@ -89,6 +86,6 @@ trait ValueToStringTrait
}
// unknown type
- return '(' . get_class($value) . ' Object)';
+ return '(' . $value::class . ' Object)';
}
}
diff --git a/vendor/ramsey/uuid/composer.json b/vendor/ramsey/uuid/composer.json
index 9ea4e06b3..8139b54e3 100644
--- a/vendor/ramsey/uuid/composer.json
+++ b/vendor/ramsey/uuid/composer.json
@@ -11,7 +11,7 @@
"require": {
"php": "^8.0",
"ext-json": "*",
- "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11",
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12",
"ramsey/collection": "^1.2 || ^2.0"
},
"require-dev": {
diff --git a/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php b/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php
index f2d86788c..f065acd46 100644
--- a/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php
+++ b/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php
@@ -136,9 +136,11 @@ final class BrickMathCalculator implements CalculatorInterface
/**
* Maps ramsey/uuid rounding modes to those used by brick/math
+ *
+ * @return BrickMathRounding::*
*/
- private function getBrickRoundingMode(int $roundingMode): int
+ private function getBrickRoundingMode(int $roundingMode)
{
- return self::ROUNDING_MODE_MAP[$roundingMode] ?? 0;
+ return self::ROUNDING_MODE_MAP[$roundingMode] ?? BrickMathRounding::UNNECESSARY;
}
}
diff --git a/vendor/sabre/dav/bin/googlecode_upload.py b/vendor/sabre/dav/bin/googlecode_upload.py
deleted file mode 100755
index caafd5ded..000000000
--- a/vendor/sabre/dav/bin/googlecode_upload.py
+++ /dev/null
@@ -1,248 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2006, 2007 Google Inc. All Rights Reserved.
-# Author: danderson@google.com (David Anderson)
-#
-# Script for uploading files to a Google Code project.
-#
-# This is intended to be both a useful script for people who want to
-# streamline project uploads and a reference implementation for
-# uploading files to Google Code projects.
-#
-# To upload a file to Google Code, you need to provide a path to the
-# file on your local machine, a small summary of what the file is, a
-# project name, and a valid account that is a member or owner of that
-# project. You can optionally provide a list of labels that apply to
-# the file. The file will be uploaded under the same name that it has
-# in your local filesystem (that is, the "basename" or last path
-# component). Run the script with '--help' to get the exact syntax
-# and available options.
-#
-# Note that the upload script requests that you enter your
-# googlecode.com password. This is NOT your Gmail account password!
-# This is the password you use on googlecode.com for committing to
-# Subversion and uploading files. You can find your password by going
-# to http://code.google.com/hosting/settings when logged in with your
-# Gmail account. If you have already committed to your project's
-# Subversion repository, the script will automatically retrieve your
-# credentials from there (unless disabled, see the output of '--help'
-# for details).
-#
-# If you are looking at this script as a reference for implementing
-# your own Google Code file uploader, then you should take a look at
-# the upload() function, which is the meat of the uploader. You
-# basically need to build a multipart/form-data POST request with the
-# right fields and send it to https://PROJECT.googlecode.com/files .
-# Authenticate the request using HTTP Basic authentication, as is
-# shown below.
-#
-# Licensed under the terms of the Apache Software License 2.0:
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Questions, comments, feature requests and patches are most welcome.
-# Please direct all of these to the Google Code users group:
-# http://groups.google.com/group/google-code-hosting
-
-"""Google Code file uploader script.
-"""
-
-__author__ = 'danderson@google.com (David Anderson)'
-
-import httplib
-import os.path
-import optparse
-import getpass
-import base64
-import sys
-
-
-def upload(file, project_name, user_name, password, summary, labels=None):
- """Upload a file to a Google Code project's file server.
-
- Args:
- file: The local path to the file.
- project_name: The name of your project on Google Code.
- user_name: Your Google account name.
- password: The googlecode.com password for your account.
- Note that this is NOT your global Google Account password!
- summary: A small description for the file.
- labels: an optional list of label strings with which to tag the file.
-
- Returns: a tuple:
- http_status: 201 if the upload succeeded, something else if an
- error occurred.
- http_reason: The human-readable string associated with http_status
- file_url: If the upload succeeded, the URL of the file on Google
- Code, None otherwise.
- """
- # The login is the user part of user@gmail.com. If the login provided
- # is in the full user@domain form, strip it down.
- if user_name.endswith('@gmail.com'):
- user_name = user_name[:user_name.index('@gmail.com')]
-
- form_fields = [('summary', summary)]
- if labels is not None:
- form_fields.extend([('label', l.strip()) for l in labels])
-
- content_type, body = encode_upload_request(form_fields, file)
-
- upload_host = '%s.googlecode.com' % project_name
- upload_uri = '/files'
- auth_token = base64.b64encode('%s:%s'% (user_name, password))
- headers = {
- 'Authorization': 'Basic %s' % auth_token,
- 'User-Agent': 'Googlecode.com uploader v0.9.4',
- 'Content-Type': content_type,
- }
-
- server = httplib.HTTPSConnection(upload_host)
- server.request('POST', upload_uri, body, headers)
- resp = server.getresponse()
- server.close()
-
- if resp.status == 201:
- location = resp.getheader('Location', None)
- else:
- location = None
- return resp.status, resp.reason, location
-
-
-def encode_upload_request(fields, file_path):
- """Encode the given fields and file into a multipart form body.
-
- fields is a sequence of (name, value) pairs. file is the path of
- the file to upload. The file will be uploaded to Google Code with
- the same file name.
-
- Returns: (content_type, body) ready for httplib.HTTP instance
- """
- BOUNDARY = '----------Googlecode_boundary_reindeer_flotilla'
- CRLF = '\r\n'
-
- body = []
-
- # Add the metadata about the upload first
- for key, value in fields:
- body.extend(
- ['--' + BOUNDARY,
- 'Content-Disposition: form-data; name="%s"' % key,
- '',
- value,
- ])
-
- # Now add the file itself
- file_name = os.path.basename(file_path)
- f = open(file_path, 'rb')
- file_content = f.read()
- f.close()
-
- body.extend(
- ['--' + BOUNDARY,
- 'Content-Disposition: form-data; name="filename"; filename="%s"'
- % file_name,
- # The upload server determines the mime-type, no need to set it.
- 'Content-Type: application/octet-stream',
- '',
- file_content,
- ])
-
- # Finalize the form body
- body.extend(['--' + BOUNDARY + '--', ''])
-
- return 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body)
-
-
-def upload_find_auth(file_path, project_name, summary, labels=None,
- user_name=None, password=None, tries=3):
- """Find credentials and upload a file to a Google Code project's file server.
-
- file_path, project_name, summary, and labels are passed as-is to upload.
-
- Args:
- file_path: The local path to the file.
- project_name: The name of your project on Google Code.
- summary: A small description for the file.
- labels: an optional list of label strings with which to tag the file.
- config_dir: Path to Subversion configuration directory, 'none', or None.
- user_name: Your Google account name.
- tries: How many attempts to make.
- """
-
- while tries > 0:
- if user_name is None:
- # Read username if not specified or loaded from svn config, or on
- # subsequent tries.
- sys.stdout.write('Please enter your googlecode.com username: ')
- sys.stdout.flush()
- user_name = sys.stdin.readline().rstrip()
- if password is None:
- # Read password if not loaded from svn config, or on subsequent tries.
- print 'Please enter your googlecode.com password.'
- print '** Note that this is NOT your Gmail account password! **'
- print 'It is the password you use to access Subversion repositories,'
- print 'and can be found here: http://code.google.com/hosting/settings'
- password = getpass.getpass()
-
- status, reason, url = upload(file_path, project_name, user_name, password,
- summary, labels)
- # Returns 403 Forbidden instead of 401 Unauthorized for bad
- # credentials as of 2007-07-17.
- if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]:
- # Rest for another try.
- user_name = password = None
- tries = tries - 1
- else:
- # We're done.
- break
-
- return status, reason, url
-
-
-def main():
- parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY '
- '-p PROJECT [options] FILE')
- parser.add_option('-s', '--summary', dest='summary',
- help='Short description of the file')
- parser.add_option('-p', '--project', dest='project',
- help='Google Code project name')
- parser.add_option('-u', '--user', dest='user',
- help='Your Google Code username')
- parser.add_option('-w', '--password', dest='password',
- help='Your Google Code password')
- parser.add_option('-l', '--labels', dest='labels',
- help='An optional list of comma-separated labels to attach '
- 'to the file')
-
- options, args = parser.parse_args()
-
- if not options.summary:
- parser.error('File summary is missing.')
- elif not options.project:
- parser.error('Project name is missing.')
- elif len(args) < 1:
- parser.error('File to upload not provided.')
- elif len(args) > 1:
- parser.error('Only one file may be specified.')
-
- file_path = args[0]
-
- if options.labels:
- labels = options.labels.split(',')
- else:
- labels = None
-
- status, reason, url = upload_find_auth(file_path, options.project,
- options.summary, labels,
- options.user, options.password)
- if url:
- print 'The file was uploaded successfully.'
- print 'URL: %s' % url
- return 0
- else:
- print 'An error occurred. Your file was not uploaded.'
- print 'Google Code upload server said: %s (%s)' % (reason, status)
- return 1
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php b/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php
index 8bfa7446a..ccaa2519a 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php
@@ -221,7 +221,7 @@ interface BackendInterface
*
* This default may well be good enough for personal use, and calendars
* that aren't very large. But if you anticipate high usage, big calendars
- * or high loads, you are strongly adviced to optimize certain paths.
+ * or high loads, you are strongly advised to optimize certain paths.
*
* The best way to do so is override this method and to optimize
* specifically for 'common filters'.
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php b/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php
index 6e48d5454..5c04ae44c 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php
@@ -36,7 +36,7 @@ interface NotificationSupport extends BackendInterface
public function getNotificationsForPrincipal($principalUri);
/**
- * This deletes a specific notifcation.
+ * This deletes a specific notification.
*
* This may be called by a client once it deems a notification handled.
*
diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php b/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php
index b9f112cf8..634b9828c 100644
--- a/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php
+++ b/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php
@@ -196,7 +196,7 @@ SQL
//$stmt2 = $this->pdo->prepare('SELECT principaluri FROM ' . $this->calendarInstancesTableName . ' WHERE access = 1 AND id = ?');
//$stmt2->execute([$row['id']]);
- // read-only is for backwards compatbility. Might go away in
+ // read-only is for backwards compatibility. Might go away in
// the future.
$calendar['read-only'] = \Sabre\DAV\Sharing\Plugin::ACCESS_READ === (int) $row['access'];
}
@@ -730,7 +730,7 @@ SQL
*
* This default may well be good enough for personal use, and calendars
* that aren't very large. But if you anticipate high usage, big calendars
- * or high loads, you are strongly adviced to optimize certain paths.
+ * or high loads, you are strongly advised to optimize certain paths.
*
* The best way to do so is override this method and to optimize
* specifically for 'common filters'.
diff --git a/vendor/sabre/dav/lib/CalDAV/Calendar.php b/vendor/sabre/dav/lib/CalDAV/Calendar.php
index 6c0bf5411..ba8c704a5 100644
--- a/vendor/sabre/dav/lib/CalDAV/Calendar.php
+++ b/vendor/sabre/dav/lib/CalDAV/Calendar.php
@@ -435,7 +435,7 @@ class Calendar implements ICalendar, DAV\IProperties, DAV\Sync\ISyncCollection,
* return null.
*
* The limit is 'suggestive'. You are free to ignore it.
- * TODO: RFC6578 Setion 3.7 says that the server must fail when the server
+ * TODO: RFC6578 Section 3.7 says that the server must fail when the server
* cannot truncate according to the limit, so it may not be just suggestive.
*
* @param string $syncToken
diff --git a/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php b/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php
index 7d3a3f46b..5bf9a6018 100644
--- a/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php
+++ b/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php
@@ -70,7 +70,7 @@ class Node extends DAV\File implements INode, DAVACL\IACL
/**
* Returns the etag for the notification.
*
- * The etag must be surrounded by litteral double-quotes.
+ * The etag must be surrounded by literal double-quotes.
*
* @return string
*/
@@ -101,7 +101,7 @@ class Node extends DAV\File implements INode, DAVACL\IACL
/**
* Returns the owner principal.
*
- * This must be a url to a principal, or null if there's no owner
+ * This must be an url to a principal, or null if there's no owner
*
* @return string|null
*/
diff --git a/vendor/sabre/dav/lib/CalDAV/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Plugin.php
index 98f4f554c..ccb722f85 100644
--- a/vendor/sabre/dav/lib/CalDAV/Plugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/Plugin.php
@@ -720,7 +720,7 @@ class Plugin extends DAV\ServerPlugin
return;
}
- // We're onyl interested in ICalendarObject nodes that are inside of a
+ // We're only interested in ICalendarObject nodes that are inside of a
// real calendar. This is to avoid triggering validation and scheduling
// for non-calendars (such as an inbox).
list($parent) = Uri\split($path);
@@ -913,7 +913,7 @@ class Plugin extends DAV\ServerPlugin
}
/**
- * This method is triggered whenever a subsystem reqeuests the privileges
+ * This method is triggered whenever a subsystem requests the privileges
* that are supported on a particular node.
*/
public function getSupportedPrivilegeSet(INode $node, array &$supportedPrivilegeSet)
diff --git a/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php
index 5e5659610..5bca56d47 100644
--- a/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php
@@ -25,6 +25,7 @@ use Sabre\HTTP\ResponseInterface;
use Sabre\VObject;
use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\ITip;
+use Sabre\VObject\ITip\Broker;
use Sabre\VObject\ITip\Message;
use Sabre\VObject\Reader;
@@ -389,7 +390,7 @@ class Plugin extends ServerPlugin
$node->getOwner()
);
- $broker = new ITip\Broker();
+ $broker = $this->createITipBroker();
$messages = $broker->parseEvent(null, $addresses, $node->get());
foreach ($messages as $message) {
@@ -500,7 +501,7 @@ class Plugin extends ServerPlugin
$isNewNode = true;
}
- $broker = new ITip\Broker();
+ $broker = $this->createITipBroker();
$newObject = $broker->processMessage($iTipMessage, $currentObject);
$inbox->createFile($newFileName, $iTipMessage->message->serialize());
@@ -611,7 +612,7 @@ class Plugin extends ServerPlugin
*/
protected function processICalendarChange($oldObject, VCalendar $newObject, array $addresses, array $ignore = [], &$modified = false)
{
- $broker = new ITip\Broker();
+ $broker = $this->createITipBroker();
$messages = $broker->parseEvent($newObject, $addresses, $oldObject);
if ($messages) {
@@ -994,4 +995,12 @@ class Plugin extends ServerPlugin
'link' => 'http://sabre.io/dav/scheduling/',
];
}
+
+ /**
+ * Returns an instance of the iTip\Broker.
+ */
+ protected function createITipBroker(): Broker
+ {
+ return new Broker();
+ }
}
diff --git a/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php b/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php
index f7dca9be6..bacfe0441 100644
--- a/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php
+++ b/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php
@@ -136,7 +136,7 @@ class SharingPlugin extends DAV\ServerPlugin
}
/**
- * This method is trigged when a user attempts to update a node's
+ * This method is triggered when a user attempts to update a node's
* properties.
*
* A previous draft of the sharing spec stated that it was possible to use
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php
index 3b3a94b26..4771a2070 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php
@@ -48,7 +48,7 @@ class CalendarMultiGetReport implements XmlDeserializable
public $expand = null;
/**
- * The mimetype of the content that should be returend. Usually
+ * The mimetype of the content that should be returned. Usually
* text/calendar.
*
* @var string
diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php
index b3cc299d3..5a4df4674 100644
--- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php
+++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php
@@ -48,7 +48,7 @@ class CalendarQueryReport implements XmlDeserializable
public $expand = null;
/**
- * The mimetype of the content that should be returend. Usually
+ * The mimetype of the content that should be returned. Usually
* text/calendar.
*
* @var string
diff --git a/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php b/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php
index 6ef34d173..f9955ac83 100644
--- a/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php
+++ b/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php
@@ -88,7 +88,7 @@ interface BackendInterface
* * size - The size of the card in bytes.
*
* If these last two properties are provided, less time will be spent
- * calculating them. If they are specified, you can also ommit carddata.
+ * calculating them. If they are specified, you can also omit carddata.
* This may speed up certain requests, especially with large cards.
*
* @param mixed $addressbookId
@@ -98,7 +98,7 @@ interface BackendInterface
public function getCards($addressbookId);
/**
- * Returns a specfic card.
+ * Returns a specific card.
*
* The same set of properties must be returned as with getCards. The only
* exception is that 'carddata' is absolutely required.
diff --git a/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php b/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php
index 4ca9284a9..7b935a4ae 100644
--- a/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php
+++ b/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php
@@ -205,7 +205,7 @@ class PDO extends AbstractBackend implements SyncSupport
* * size - The size of the card in bytes.
*
* If these last two properties are provided, less time will be spent
- * calculating them. If they are specified, you can also ommit carddata.
+ * calculating them. If they are specified, you can also omit carddata.
* This may speed up certain requests, especially with large cards.
*
* @param mixed $addressbookId
diff --git a/vendor/sabre/dav/lib/CardDAV/Plugin.php b/vendor/sabre/dav/lib/CardDAV/Plugin.php
index c2d31d9df..810ae3a1a 100644
--- a/vendor/sabre/dav/lib/CardDAV/Plugin.php
+++ b/vendor/sabre/dav/lib/CardDAV/Plugin.php
@@ -800,7 +800,7 @@ class Plugin extends DAV\ServerPlugin
*
* @return string
*/
- protected function convertVCard($data, $target, array $propertiesFilter = null)
+ protected function convertVCard($data, $target, ?array $propertiesFilter = null)
{
if (is_resource($data)) {
$data = stream_get_contents($data);
diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php
index fe5f976a0..536c5a19f 100644
--- a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php
+++ b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php
@@ -34,7 +34,7 @@ class SupportedAddressData implements XmlSerializable
/**
* Creates the property.
*/
- public function __construct(array $supportedData = null)
+ public function __construct(?array $supportedData = null)
{
if (is_null($supportedData)) {
$supportedData = [
diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php
index e1096fe28..02402f6c7 100644
--- a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php
+++ b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php
@@ -82,7 +82,7 @@ class AddressBookQueryReport implements XmlDeserializable
public $test;
/**
- * The mimetype of the content that should be returend. Usually
+ * The mimetype of the content that should be returned. Usually
* text/vcard.
*
* @var string
diff --git a/vendor/sabre/dav/lib/DAV/Auth/Backend/PDOBasicAuth.php b/vendor/sabre/dav/lib/DAV/Auth/Backend/PDOBasicAuth.php
index 39324e4db..d142cbfbf 100644
--- a/vendor/sabre/dav/lib/DAV/Auth/Backend/PDOBasicAuth.php
+++ b/vendor/sabre/dav/lib/DAV/Auth/Backend/PDOBasicAuth.php
@@ -44,7 +44,7 @@ class PDOBasicAuth extends AbstractBasic
* Digest prefix:
* if the backend you are using for is prefixing
* your password hashes set this option to your prefix to
- * cut it off before verfiying.
+ * cut it off before verifying.
*
* @var string
*/
diff --git a/vendor/sabre/dav/lib/DAV/Auth/Plugin.php b/vendor/sabre/dav/lib/DAV/Auth/Plugin.php
index eb4f27ca6..47fbe205a 100644
--- a/vendor/sabre/dav/lib/DAV/Auth/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Auth/Plugin.php
@@ -58,7 +58,7 @@ class Plugin extends ServerPlugin
*
* @param Backend\BackendInterface $authBackend
*/
- public function __construct(Backend\BackendInterface $authBackend = null)
+ public function __construct(?Backend\BackendInterface $authBackend = null)
{
if (!is_null($authBackend)) {
$this->addBackend($authBackend);
diff --git a/vendor/sabre/dav/lib/DAV/Browser/Plugin.php b/vendor/sabre/dav/lib/DAV/Browser/Plugin.php
index 89495e5db..a8a6f430e 100644
--- a/vendor/sabre/dav/lib/DAV/Browser/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Browser/Plugin.php
@@ -522,7 +522,7 @@ HTML;
/**
* This method takes a path/name of an asset and turns it into url
- * suiteable for http access.
+ * suitable for http access.
*
* @param string $assetName
*
diff --git a/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php b/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php
index 37b28ca54..f28d20f41 100644
--- a/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php
+++ b/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php
@@ -9,7 +9,7 @@ use Sabre\DAV;
/**
* InvalidSyncToken.
*
- * This exception is emited for the {DAV:}valid-sync-token pre-condition, as
+ * This exception is emitted for the {DAV:}valid-sync-token pre-condition, as
* defined in rfc6578, section 3.2.
*
* http://tools.ietf.org/html/rfc6578#section-3.2
diff --git a/vendor/sabre/dav/lib/DAV/Exception/Locked.php b/vendor/sabre/dav/lib/DAV/Exception/Locked.php
index 28263cf13..24fad7095 100644
--- a/vendor/sabre/dav/lib/DAV/Exception/Locked.php
+++ b/vendor/sabre/dav/lib/DAV/Exception/Locked.php
@@ -32,7 +32,7 @@ class Locked extends DAV\Exception
*
* @param DAV\Locks\LockInfo $lock
*/
- public function __construct(DAV\Locks\LockInfo $lock = null)
+ public function __construct(?DAV\Locks\LockInfo $lock = null)
{
parent::__construct();
diff --git a/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php b/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php
index 3f7d2d5fb..ef6f50243 100644
--- a/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php
+++ b/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php
@@ -9,7 +9,7 @@ use Sabre\DAV;
/**
* TooManyMatches.
*
- * This exception is emited for the {DAV:}number-of-matches-within-limits
+ * This exception is emitted for the {DAV:}number-of-matches-within-limits
* post-condition, as defined in rfc6578, section 3.2.
*
* http://tools.ietf.org/html/rfc6578#section-3.2
diff --git a/vendor/sabre/dav/lib/DAV/INodeByPath.php b/vendor/sabre/dav/lib/DAV/INodeByPath.php
index 4d63a33bd..349ea1053 100644
--- a/vendor/sabre/dav/lib/DAV/INodeByPath.php
+++ b/vendor/sabre/dav/lib/DAV/INodeByPath.php
@@ -9,7 +9,7 @@ namespace Sabre\DAV;
*
* This interface adds a tiny bit of functionality to collections.
*
- * Getting a node that is deep in the tree normally requires going trough each parent node
+ * Getting a node that is deep in the tree normally requires going through each parent node
* which can cause a significant performance overhead.
*
* Implementing this interface allows solving this overhead by directly jumping to the target node.
diff --git a/vendor/sabre/dav/lib/DAV/Server.php b/vendor/sabre/dav/lib/DAV/Server.php
index 1f8300d4a..3133e54ad 100644
--- a/vendor/sabre/dav/lib/DAV/Server.php
+++ b/vendor/sabre/dav/lib/DAV/Server.php
@@ -211,7 +211,7 @@ class Server implements LoggerAwareInterface, EmitterInterface
*
* @throws Exception
*/
- public function __construct($treeOrNode = null, HTTP\Sapi $sapi = null)
+ public function __construct($treeOrNode = null, ?HTTP\Sapi $sapi = null)
{
if ($treeOrNode instanceof Tree) {
$this->tree = $treeOrNode;
@@ -882,7 +882,7 @@ class Server implements LoggerAwareInterface, EmitterInterface
*
* @return \Traversable
*/
- private function generatePathNodes(PropFind $propFind, array $yieldFirst = null)
+ private function generatePathNodes(PropFind $propFind, ?array $yieldFirst = null)
{
if (null !== $yieldFirst) {
yield $yieldFirst;
@@ -1635,6 +1635,8 @@ class Server implements LoggerAwareInterface, EmitterInterface
*/
public function generateMultiStatus($fileProperties, $strip404s = false)
{
+ $this->emit('beforeMultiStatus', [&$fileProperties]);
+
$w = $this->xml->getWriter();
if (self::$streamMultiStatus) {
return function () use ($fileProperties, $strip404s, $w) {
diff --git a/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php b/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php
index e7adbeee6..d766ae0de 100644
--- a/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php
+++ b/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php
@@ -194,7 +194,7 @@ class Plugin extends ServerPlugin
}
/**
- * This method is triggered whenever a subsystem reqeuests the privileges
+ * This method is triggered whenever a subsystem requests the privileges
* hat are supported on a particular node.
*
* We need to add a number of privileges for scheduling purposes.
diff --git a/vendor/sabre/dav/lib/DAV/Tree.php b/vendor/sabre/dav/lib/DAV/Tree.php
index 65b4583ce..1483e1bc5 100644
--- a/vendor/sabre/dav/lib/DAV/Tree.php
+++ b/vendor/sabre/dav/lib/DAV/Tree.php
@@ -62,9 +62,21 @@ class Tree implements INodeByPath
return $this->rootNode;
}
- $parts = explode('/', $path);
$node = $this->rootNode;
+ // look for any cached parent and collect the parts below the parent
+ $parts = [];
+ $remainingPath = $path;
+ do {
+ list($remainingPath, $baseName) = Uri\split($remainingPath);
+ array_unshift($parts, $baseName);
+
+ if (isset($this->cache[$remainingPath])) {
+ $node = $this->cache[$remainingPath];
+ break;
+ }
+ } while ('' !== $remainingPath);
+
while (count($parts)) {
if (!($node instanceof ICollection)) {
throw new Exception\NotFound('Could not find node at path: '.$path);
diff --git a/vendor/sabre/dav/lib/DAV/Version.php b/vendor/sabre/dav/lib/DAV/Version.php
index 345c62d7e..e6aee097c 100644
--- a/vendor/sabre/dav/lib/DAV/Version.php
+++ b/vendor/sabre/dav/lib/DAV/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- public const VERSION = '4.6.0';
+ public const VERSION = '4.7.0';
}
diff --git a/vendor/sabre/dav/lib/DAVACL/Plugin.php b/vendor/sabre/dav/lib/DAVACL/Plugin.php
index 46d680e15..f0497844d 100644
--- a/vendor/sabre/dav/lib/DAVACL/Plugin.php
+++ b/vendor/sabre/dav/lib/DAVACL/Plugin.php
@@ -716,7 +716,7 @@ class Plugin extends DAV\ServerPlugin
* @param array $requestedProperties this is the list of properties to
* return for every match
* @param string $collectionUri the principal collection to search on.
- * If this is ommitted, the standard
+ * If this is omitted, the standard
* principal collection-set will be used
* @param string $test "allof" to use AND to search the
* properties. 'anyof' for OR.
diff --git a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php
index 17bc245c5..178bd7276 100644
--- a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php
+++ b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php
@@ -80,7 +80,7 @@ class PDO extends AbstractBackend implements CreatePrincipalSupport
* return any additional properties if you wish so. Common properties are:
* {DAV:}displayname
* {http://sabredav.org/ns}email-address - This is a custom SabreDAV
- * field that's actualy injected in a number of other properties. If
+ * field that's actually injected in a number of other properties. If
* you have an email address, use this property.
*
* @param string $prefixPath
diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php
index 52092128f..5b9ee4517 100644
--- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php
+++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php
@@ -149,7 +149,7 @@ class Principal extends DAV\Xml\Property\Href
/**
* The deserialize method is called during xml parsing.
*
- * This method is called staticly, this is because in theory this method
+ * This method is called statically, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
diff --git a/vendor/sabre/event/.github/workflows/ci.yml b/vendor/sabre/event/.github/workflows/ci.yml
deleted file mode 100644
index 3473cd2de..000000000
--- a/vendor/sabre/event/.github/workflows/ci.yml
+++ /dev/null
@@ -1,63 +0,0 @@
-name: continuous-integration
-on:
- push:
- branches:
- - master
- - release/*
- pull_request:
-jobs:
- unit-testing:
- name: PHPUnit (PHP ${{ matrix.php-versions }})
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1']
- coverage: ['pcov']
- code-analysis: ['no']
- include:
- - php-versions: '7.1'
- coverage: 'none'
- code-analysis: 'yes'
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
- with:
- php-version: ${{ matrix.php-versions }}
- extensions: mbstring, dom, fileinfo, mysql, redis, opcache
- coverage: ${{ matrix.coverage }}
- tools: composer
-
- - name: Get composer cache directory
- id: composer-cache
- run: echo "::set-output name=dir::$(composer config cache-files-dir)"
-
- - name: Cache composer dependencies
- uses: actions/cache@v2
- with:
- path: ${{ steps.composer-cache.outputs.dir }}
- # Use composer.json for key, if composer.lock is not committed.
- # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
-
- - name: Install composer dependencies
- run: composer install --no-progress --prefer-dist --optimize-autoloader
-
- - name: Code Analysis (PHP CS-Fixer)
- if: matrix.code-analysis == 'yes'
- run: php vendor/bin/php-cs-fixer fix --dry-run --diff
-
- - name: Code Analysis (PHPStan)
- if: matrix.code-analysis == 'yes'
- run: composer phpstan
-
- - name: Test with phpunit
- run: vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-clover clover.xml
-
- - name: Code Coverage
- uses: codecov/codecov-action@v2
- if: matrix.coverage != 'none'
diff --git a/vendor/sabre/event/.php-cs-fixer.dist.php b/vendor/sabre/event/.php-cs-fixer.dist.php
new file mode 100644
index 000000000..319886c6b
--- /dev/null
+++ b/vendor/sabre/event/.php-cs-fixer.dist.php
@@ -0,0 +1,18 @@
+<?php
+
+$finder = PhpCsFixer\Finder::create()
+ ->exclude('vendor')
+ ->in(__DIR__);
+
+$config = new PhpCsFixer\Config();
+$config->setRules([
+ '@PSR1' => true,
+ '@Symfony' => true,
+ 'blank_line_between_import_groups' => false,
+ 'nullable_type_declaration' => [
+ 'syntax' => 'question_mark',
+ ],
+ 'nullable_type_declaration_for_default_null_value' => true,
+]);
+$config->setFinder($finder);
+return $config; \ No newline at end of file
diff --git a/vendor/sabre/event/.php_cs.dist b/vendor/sabre/event/.php_cs.dist
deleted file mode 100644
index c5c78a971..000000000
--- a/vendor/sabre/event/.php_cs.dist
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-$config = PhpCsFixer\Config::create();
-$config->getFinder()
- ->exclude('vendor')
- ->in(__DIR__);
-$config->setRules([
- '@PSR1' => true,
- '@Symfony' => true
-]);
-
-return $config; \ No newline at end of file
diff --git a/vendor/sabre/event/composer.json b/vendor/sabre/event/composer.json
index 42fb4aa22..0d3ec0621 100644
--- a/vendor/sabre/event/composer.json
+++ b/vendor/sabre/event/composer.json
@@ -46,16 +46,16 @@
}
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "~2.17.1",
+ "friendsofphp/php-cs-fixer": "~2.17.1||^3.63",
"phpstan/phpstan": "^0.12",
- "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.0"
+ "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.6"
},
"scripts": {
"phpstan": [
"phpstan analyse lib tests"
],
"cs-fixer": [
- "php-cs-fixer fix"
+ "PHP_CS_FIXER_IGNORE_ENV=true php-cs-fixer fix"
],
"phpunit": [
"phpunit --configuration tests/phpunit.xml"
diff --git a/vendor/sabre/event/lib/EmitterInterface.php b/vendor/sabre/event/lib/EmitterInterface.php
index 6ce0f34db..662efd739 100644
--- a/vendor/sabre/event/lib/EmitterInterface.php
+++ b/vendor/sabre/event/lib/EmitterInterface.php
@@ -47,7 +47,7 @@ interface EmitterInterface
* Lastly, if there are 5 event handlers for an event. The continueCallback
* will be called at most 4 times.
*/
- public function emit(string $eventName, array $arguments = [], callable $continueCallBack = null): bool;
+ public function emit(string $eventName, array $arguments = [], ?callable $continueCallBack = null): bool;
/**
* Returns the list of listeners for an event.
@@ -74,5 +74,5 @@ interface EmitterInterface
* removed. If it is not specified, every listener for every event is
* removed.
*/
- public function removeAllListeners(string $eventName = null);
+ public function removeAllListeners(?string $eventName = null);
}
diff --git a/vendor/sabre/event/lib/EmitterTrait.php b/vendor/sabre/event/lib/EmitterTrait.php
index 5502ef9f3..5a0a23457 100644
--- a/vendor/sabre/event/lib/EmitterTrait.php
+++ b/vendor/sabre/event/lib/EmitterTrait.php
@@ -73,7 +73,7 @@ trait EmitterTrait
* Lastly, if there are 5 event handlers for an event. The continueCallback
* will be called at most 4 times.
*/
- public function emit(string $eventName, array $arguments = [], callable $continueCallBack = null): bool
+ public function emit(string $eventName, array $arguments = [], ?callable $continueCallBack = null): bool
{
if (\is_null($continueCallBack)) {
foreach ($this->listeners($eventName) as $listener) {
@@ -160,7 +160,7 @@ trait EmitterTrait
* removed. If it is not specified, every listener for every event is
* removed.
*/
- public function removeAllListeners(string $eventName = null)
+ public function removeAllListeners(?string $eventName = null)
{
if (!\is_null($eventName)) {
unset($this->listeners[$eventName]);
diff --git a/vendor/sabre/event/lib/Loop/Loop.php b/vendor/sabre/event/lib/Loop/Loop.php
index b85a7a440..74981da08 100644
--- a/vendor/sabre/event/lib/Loop/Loop.php
+++ b/vendor/sabre/event/lib/Loop/Loop.php
@@ -24,7 +24,7 @@ class Loop
*/
public function setTimeout(callable $cb, float $timeout)
{
- $triggerTime = microtime(true) + ($timeout);
+ $triggerTime = microtime(true) + $timeout;
if (!$this->timers) {
// Special case when the timers array was empty.
@@ -265,7 +265,7 @@ class Loop
* If $timeout is 0, it will return immediately. If $timeout is null, it
* will wait indefinitely.
*
- * @param float|null timeout
+ * @param float|null $timeout
*/
protected function runStreams($timeout)
{
diff --git a/vendor/sabre/event/lib/Loop/functions.php b/vendor/sabre/event/lib/Loop/functions.php
index bf4d933f2..9412a77ff 100644
--- a/vendor/sabre/event/lib/Loop/functions.php
+++ b/vendor/sabre/event/lib/Loop/functions.php
@@ -130,7 +130,7 @@ function stop()
/**
* Retrieves or sets the global Loop object.
*/
-function instance(Loop $newLoop = null): Loop
+function instance(?Loop $newLoop = null): Loop
{
static $loop;
if ($newLoop) {
diff --git a/vendor/sabre/event/lib/Promise.php b/vendor/sabre/event/lib/Promise.php
index 42969a55f..66903fb9f 100644
--- a/vendor/sabre/event/lib/Promise.php
+++ b/vendor/sabre/event/lib/Promise.php
@@ -5,7 +5,6 @@ declare(strict_types=1);
namespace Sabre\Event;
use Exception;
-use Throwable;
/**
* An implementation of the Promise pattern.
@@ -30,17 +29,17 @@ class Promise
/**
* The asynchronous operation is pending.
*/
- const PENDING = 0;
+ public const PENDING = 0;
/**
* The asynchronous operation has completed, and has a result.
*/
- const FULFILLED = 1;
+ public const FULFILLED = 1;
/**
* The asynchronous operation has completed with an error.
*/
- const REJECTED = 2;
+ public const REJECTED = 2;
/**
* The current state of this promise.
@@ -58,7 +57,7 @@ class Promise
* Each are callbacks that map to $this->fulfill and $this->reject.
* Using the executor is optional.
*/
- public function __construct(callable $executor = null)
+ public function __construct(?callable $executor = null)
{
if ($executor) {
$executor(
@@ -87,7 +86,7 @@ class Promise
* If either of the callbacks throw an exception, the returned promise will
* be rejected and the exception will be passed back.
*/
- public function then(callable $onFulfilled = null, callable $onRejected = null): Promise
+ public function then(?callable $onFulfilled = null, ?callable $onRejected = null): Promise
{
// This new subPromise will be returned from this function, and will
// be fulfilled with the result of the onFulfilled or onRejected event
@@ -128,8 +127,6 @@ class Promise
/**
* Marks this promise as fulfilled and sets its return value.
- *
- * @param mixed $value
*/
public function fulfill($value = null)
{
@@ -146,7 +143,7 @@ class Promise
/**
* Marks this promise as rejected, and set its rejection reason.
*/
- public function reject(Throwable $reason)
+ public function reject(\Throwable $reason)
{
if (self::PENDING !== $this->state) {
throw new PromiseAlreadyResolvedException('This promise is already resolved, and you\'re not allowed to resolve a promise more than once');
@@ -169,7 +166,6 @@ class Promise
* one. In PHP it might be useful to call this on the last promise in a
* chain.
*
- * @return mixed
* @psalm-return TReturn
*/
public function wait()
@@ -208,10 +204,8 @@ class Promise
*
* If the promise was fulfilled, this will be the result value. If the
* promise was rejected, this property hold the rejection reason.
- *
- * @var mixed
*/
- protected $value = null;
+ protected $value;
/**
* This method is used to call either an onFulfilled or onRejected callback.
@@ -219,10 +213,8 @@ class Promise
* This method makes sure that the result of these callbacks are handled
* correctly, and any chained promises are also correctly fulfilled or
* rejected.
- *
- * @param callable $callBack
*/
- private function invokeCallback(Promise $subPromise, callable $callBack = null)
+ private function invokeCallback(Promise $subPromise, ?callable $callBack = null)
{
// We use 'nextTick' to ensure that the event handlers are always
// triggered outside of the calling stack in which they were originally
@@ -244,7 +236,7 @@ class Promise
// immediately fulfill the chained promise.
$subPromise->fulfill($result);
}
- } catch (Throwable $e) {
+ } catch (\Throwable $e) {
// If the event handler threw an exception, we need to make sure that
// the chained promise is rejected as well.
$subPromise->reject($e);
diff --git a/vendor/sabre/event/lib/Promise/functions.php b/vendor/sabre/event/lib/Promise/functions.php
index fbed63471..67e80cbe4 100644
--- a/vendor/sabre/event/lib/Promise/functions.php
+++ b/vendor/sabre/event/lib/Promise/functions.php
@@ -5,7 +5,6 @@ declare(strict_types=1);
namespace Sabre\Event\Promise;
use Sabre\Event\Promise;
-use Throwable;
/**
* This file contains a set of functions that are useful for dealing with the
@@ -101,8 +100,6 @@ function race(array $promises): Promise
*
* If the value is a promise, the returned promise will attach itself to that
* promise and eventually get the same state as the followed promise.
- *
- * @param mixed $value
*/
function resolve($value): Promise
{
@@ -119,7 +116,7 @@ function resolve($value): Promise
/**
* Returns a Promise that will reject with the given reason.
*/
-function reject(Throwable $reason): Promise
+function reject(\Throwable $reason): Promise
{
$promise = new Promise();
$promise->reject($reason);
diff --git a/vendor/sabre/event/lib/Version.php b/vendor/sabre/event/lib/Version.php
index fe8f5c3bf..10a98c607 100644
--- a/vendor/sabre/event/lib/Version.php
+++ b/vendor/sabre/event/lib/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- const VERSION = '5.1.4';
+ public const VERSION = '5.1.7';
}
diff --git a/vendor/sabre/event/lib/WildcardEmitterTrait.php b/vendor/sabre/event/lib/WildcardEmitterTrait.php
index 206a8f3c5..69243ff83 100644
--- a/vendor/sabre/event/lib/WildcardEmitterTrait.php
+++ b/vendor/sabre/event/lib/WildcardEmitterTrait.php
@@ -82,7 +82,7 @@ trait WildcardEmitterTrait
* Lastly, if there are 5 event handlers for an event. The continueCallback
* will be called at most 4 times.
*/
- public function emit(string $eventName, array $arguments = [], callable $continueCallBack = null): bool
+ public function emit(string $eventName, array $arguments = [], ?callable $continueCallBack = null): bool
{
if (\is_null($continueCallBack)) {
foreach ($this->listeners($eventName) as $listener) {
@@ -195,7 +195,7 @@ trait WildcardEmitterTrait
* removed. If it is not specified, every listener for every event is
* removed.
*/
- public function removeAllListeners(string $eventName = null)
+ public function removeAllListeners(?string $eventName = null)
{
if (\is_null($eventName)) {
$this->listeners = [];
diff --git a/vendor/sabre/event/lib/coroutine.php b/vendor/sabre/event/lib/coroutine.php
index cdf2d3ecd..f664efa78 100644
--- a/vendor/sabre/event/lib/coroutine.php
+++ b/vendor/sabre/event/lib/coroutine.php
@@ -5,7 +5,6 @@ declare(strict_types=1);
namespace Sabre\Event;
use Generator;
-use Throwable;
/**
* Turn asynchronous promise-based code into something that looks synchronous
@@ -42,10 +41,10 @@ use Throwable;
*
* });
*
- * @return \Sabre\Event\Promise
- *
* @psalm-template TReturn
+ *
* @psalm-param callable():\Generator<mixed, mixed, mixed, TReturn> $gen
+ *
* @psalm-return Promise<TReturn>
*
* @copyright Copyright (C) fruux GmbH (https://fruux.com/)
@@ -55,7 +54,7 @@ use Throwable;
function coroutine(callable $gen): Promise
{
$generator = $gen();
- if (!$generator instanceof Generator) {
+ if (!$generator instanceof \Generator) {
throw new \InvalidArgumentException('You must pass a generator function');
}
@@ -75,11 +74,11 @@ function coroutine(callable $gen): Promise
$generator->send($value);
$advanceGenerator();
},
- function (Throwable $reason) use ($generator, $advanceGenerator) {
+ function (\Throwable $reason) use ($generator, $advanceGenerator) {
$generator->throw($reason);
$advanceGenerator();
}
- )->otherwise(function (Throwable $reason) use ($promise) {
+ )->otherwise(function (\Throwable $reason) use ($promise) {
// This error handler would be called, if something in the
// generator throws an exception, and it's not caught
// locally.
@@ -104,7 +103,7 @@ function coroutine(callable $gen): Promise
if ($returnValue instanceof Promise) {
$returnValue->then(function ($value) use ($promise) {
$promise->fulfill($value);
- }, function (Throwable $reason) use ($promise) {
+ }, function (\Throwable $reason) use ($promise) {
$promise->reject($reason);
});
} else {
@@ -115,7 +114,7 @@ function coroutine(callable $gen): Promise
try {
$advanceGenerator();
- } catch (Throwable $e) {
+ } catch (\Throwable $e) {
$promise->reject($e);
}
diff --git a/vendor/sabre/event/phpstan.neon b/vendor/sabre/event/phpstan.neon
deleted file mode 100644
index 213da6dad..000000000
--- a/vendor/sabre/event/phpstan.neon
+++ /dev/null
@@ -1,2 +0,0 @@
-parameters:
- level: 1
diff --git a/vendor/sabre/http/.github/workflows/ci.yml b/vendor/sabre/http/.github/workflows/ci.yml
index cbb681e53..56bc1a321 100644
--- a/vendor/sabre/http/.github/workflows/ci.yml
+++ b/vendor/sabre/http/.github/workflows/ci.yml
@@ -12,15 +12,20 @@ jobs:
strategy:
fail-fast: false
matrix:
- php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1']
+ php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3']
coverage: ['xdebug']
+ code-style: ['yes']
code-analysis: ['no']
include:
- php-versions: '7.1'
+ code-style: 'yes'
+ code-analysis: 'yes'
+ - php-versions: '8.4'
+ code-style: 'yes'
code-analysis: 'yes'
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
@@ -35,7 +40,7 @@ jobs:
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
- uses: actions/cache@v2
+ uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
@@ -45,8 +50,8 @@ jobs:
run: composer install --no-progress --prefer-dist --optimize-autoloader
- name: Code Analysis (PHP CS-Fixer)
- if: matrix.code-analysis == 'yes'
- run: php vendor/bin/php-cs-fixer fix --dry-run --diff
+ if: matrix.code-style == 'yes'
+ run: PHP_CS_FIXER_IGNORE_ENV=true php vendor/bin/php-cs-fixer fix --dry-run --diff
- name: Code Analysis (PHPStan)
if: matrix.code-analysis == 'yes'
@@ -59,5 +64,5 @@ jobs:
run: vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-clover clover.xml
- name: Code Coverage
- uses: codecov/codecov-action@v2
+ uses: codecov/codecov-action@v4
if: matrix.coverage != 'none'
diff --git a/vendor/sabre/http/.gitignore b/vendor/sabre/http/.gitignore
index 367bba576..a5356dd00 100644
--- a/vendor/sabre/http/.gitignore
+++ b/vendor/sabre/http/.gitignore
@@ -6,3 +6,4 @@ composer.lock
tests/cov/
.phpunit.result.cache
.php_cs.cache
+.php-cs-fixer.cache
diff --git a/vendor/sabre/http/.php-cs-fixer.dist.php b/vendor/sabre/http/.php-cs-fixer.dist.php
new file mode 100644
index 000000000..f9d4b7a8d
--- /dev/null
+++ b/vendor/sabre/http/.php-cs-fixer.dist.php
@@ -0,0 +1,17 @@
+<?php
+
+$finder = PhpCsFixer\Finder::create()
+ ->exclude('vendor')
+ ->in(__DIR__);
+
+$config = new PhpCsFixer\Config();
+$config->setRules([
+ '@PSR1' => true,
+ '@Symfony' => true,
+ 'nullable_type_declaration' => [
+ 'syntax' => 'question_mark',
+ ],
+ 'nullable_type_declaration_for_default_null_value' => true,
+]);
+$config->setFinder($finder);
+return $config; \ No newline at end of file
diff --git a/vendor/sabre/http/CHANGELOG.md b/vendor/sabre/http/CHANGELOG.md
index 2dddce4fb..4158150f4 100644
--- a/vendor/sabre/http/CHANGELOG.md
+++ b/vendor/sabre/http/CHANGELOG.md
@@ -1,6 +1,37 @@
ChangeLog
=========
+5.1.12 (2024-08-27)
+------------------
+
+* #243 add cs-fixer v3 (@phil-davis)
+
+5.1.11 (2024-07-26)
+------------------
+
+* #241 PHP 8.4 compliance (@phil-davis)
+
+5.1.10 (2023-08-18)
+------------------
+
+* #225 Enhance tests/bootstrap.php to find autoloader in more environments (@phil-davis)
+
+5.1.9 (2023-08-17)
+------------------
+
+* #223 skip testParseMimeTypeOnInvalidMimeType (@phil-davis)
+
+5.1.8 (2023-08-17)
+------------------
+
+* #215 Improve CURLOPT_HTTPHEADER Setting Assignment (@amrita-shrestha)
+
+5.1.7 (2023-06-26)
+------------------
+
+* #98 and #176 Add more tests (@peter279k)
+* #207 fix: handle client disconnect properly with ignore_user_abort true (@kesselb)
+
5.1.6 (2022-07-15)
------------------
diff --git a/vendor/sabre/http/composer.json b/vendor/sabre/http/composer.json
index 353646a28..48caa44f8 100644
--- a/vendor/sabre/http/composer.json
+++ b/vendor/sabre/http/composer.json
@@ -13,9 +13,9 @@
"sabre/uri" : "^2.0"
},
"require-dev" : {
- "friendsofphp/php-cs-fixer": "~2.17.1",
+ "friendsofphp/php-cs-fixer": "~2.17.1||^3.63",
"phpstan/phpstan": "^0.12",
- "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.0"
+ "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.6"
},
"suggest" : {
"ext-curl" : " to make http requests with the Client class"
@@ -50,7 +50,7 @@
"phpstan analyse lib tests"
],
"cs-fixer": [
- "php-cs-fixer fix"
+ "PHP_CS_FIXER_IGNORE_ENV=true php-cs-fixer fix"
],
"phpunit": [
"phpunit --configuration tests/phpunit.xml"
diff --git a/vendor/sabre/http/lib/Auth/AWS.php b/vendor/sabre/http/lib/Auth/AWS.php
index ffda3cf15..2690c634d 100644
--- a/vendor/sabre/http/lib/Auth/AWS.php
+++ b/vendor/sabre/http/lib/Auth/AWS.php
@@ -22,14 +22,14 @@ class AWS extends AbstractAuth
*
* @var string
*/
- private $signature = null;
+ private $signature;
/**
* The accesskey supplied by the HTTP client.
*
* @var string
*/
- private $accessKey = null;
+ private $accessKey;
/**
* An error code, if any.
@@ -40,11 +40,11 @@ class AWS extends AbstractAuth
*/
public $errorCode = 0;
- const ERR_NOAWSHEADER = 1;
- const ERR_MD5CHECKSUMWRONG = 2;
- const ERR_INVALIDDATEFORMAT = 3;
- const ERR_REQUESTTIMESKEWED = 4;
- const ERR_INVALIDSIGNATURE = 5;
+ public const ERR_NOAWSHEADER = 1;
+ public const ERR_MD5CHECKSUMWRONG = 2;
+ public const ERR_INVALIDDATEFORMAT = 3;
+ public const ERR_REQUESTTIMESKEWED = 4;
+ public const ERR_INVALIDSIGNATURE = 5;
/**
* Gathers all information from the headers.
@@ -212,7 +212,7 @@ class AWS extends AbstractAuth
}
$key = str_pad($key, $blocksize, chr(0x00));
$ipad = str_repeat(chr(0x36), $blocksize);
- $opad = str_repeat(chr(0x5c), $blocksize);
+ $opad = str_repeat(chr(0x5C), $blocksize);
$hmac = pack('H*', sha1(($key ^ $opad).pack('H*', sha1(($key ^ $ipad).$message))));
return $hmac;
diff --git a/vendor/sabre/http/lib/Auth/Digest.php b/vendor/sabre/http/lib/Auth/Digest.php
index e80e78305..08fa34f90 100644
--- a/vendor/sabre/http/lib/Auth/Digest.php
+++ b/vendor/sabre/http/lib/Auth/Digest.php
@@ -34,8 +34,8 @@ class Digest extends AbstractAuth
/**
* These constants are used in setQOP();.
*/
- const QOP_AUTH = 1;
- const QOP_AUTHINT = 2;
+ public const QOP_AUTH = 1;
+ public const QOP_AUTHINT = 2;
protected $nonce;
protected $opaque;
@@ -177,8 +177,6 @@ class Digest extends AbstractAuth
* It should be compatible with mod_php format and other webservers.
*
* If the header could not be found, null will be returned
- *
- * @return mixed
*/
public function getDigest()
{
diff --git a/vendor/sabre/http/lib/Client.php b/vendor/sabre/http/lib/Client.php
index 2bc7483a7..c00f9e1b1 100644
--- a/vendor/sabre/http/lib/Client.php
+++ b/vendor/sabre/http/lib/Client.php
@@ -175,7 +175,7 @@ class Client extends EventEmitter
* After calling sendAsync, you must therefore occasionally call the poll()
* method, or wait().
*/
- public function sendAsync(RequestInterface $request, callable $success = null, callable $error = null)
+ public function sendAsync(RequestInterface $request, ?callable $success = null, ?callable $error = null)
{
$this->emit('beforeRequest', [$request]);
$this->sendAsyncInternal($request, $success, $error);
@@ -299,8 +299,6 @@ class Client extends EventEmitter
* Adds a CURL setting.
*
* These settings will be included in every HTTP request.
- *
- * @param mixed $value
*/
public function addCurlSetting(int $name, $value)
{
@@ -402,7 +400,10 @@ class Client extends EventEmitter
$nHeaders[] = $key.': '.$value;
}
}
- $settings[CURLOPT_HTTPHEADER] = $nHeaders;
+
+ if ([] !== $nHeaders) {
+ $settings[CURLOPT_HTTPHEADER] = $nHeaders;
+ }
$settings[CURLOPT_URL] = $request->getUrl();
// FIXME: CURLOPT_PROTOCOLS is currently unsupported by HHVM
if (defined('CURLOPT_PROTOCOLS')) {
@@ -416,9 +417,9 @@ class Client extends EventEmitter
return $settings;
}
- const STATUS_SUCCESS = 0;
- const STATUS_CURLERROR = 1;
- const STATUS_HTTPERROR = 2;
+ public const STATUS_SUCCESS = 0;
+ public const STATUS_CURLERROR = 1;
+ public const STATUS_HTTPERROR = 2;
private function parseResponse(string $response, $curlHandle): array
{
diff --git a/vendor/sabre/http/lib/Request.php b/vendor/sabre/http/lib/Request.php
index b8395ff45..99a13d25a 100644
--- a/vendor/sabre/http/lib/Request.php
+++ b/vendor/sabre/http/lib/Request.php
@@ -4,7 +4,6 @@ declare(strict_types=1);
namespace Sabre\HTTP;
-use LogicException;
use Sabre\Uri;
/**
diff --git a/vendor/sabre/http/lib/Response.php b/vendor/sabre/http/lib/Response.php
index c06c9637e..78ebb220d 100644
--- a/vendor/sabre/http/lib/Response.php
+++ b/vendor/sabre/http/lib/Response.php
@@ -100,10 +100,9 @@ class Response extends Message implements ResponseInterface
* Creates the response object.
*
* @param string|int $status
- * @param array $headers
* @param resource $body
*/
- public function __construct($status = 500, array $headers = null, $body = null)
+ public function __construct($status = 500, ?array $headers = null, $body = null)
{
if (null !== $status) {
$this->setStatus($status);
diff --git a/vendor/sabre/http/lib/Sapi.php b/vendor/sabre/http/lib/Sapi.php
index f8e8397fc..4c8fb6732 100644
--- a/vendor/sabre/http/lib/Sapi.php
+++ b/vendor/sabre/http/lib/Sapi.php
@@ -4,8 +4,6 @@ declare(strict_types=1);
namespace Sabre\HTTP;
-use InvalidArgumentException;
-
/**
* PHP SAPI.
*
@@ -115,6 +113,12 @@ class Sapi
if ($copied <= 0) {
break;
}
+ // Abort on client disconnect.
+ // With ignore_user_abort(true), the script is not aborted on client disconnect.
+ // To avoid reading the entire stream and dismissing the data afterward, check between the chunks if the client is still there.
+ if (1 === ignore_user_abort() && 1 === connection_aborted()) {
+ break;
+ }
$left -= $copied;
}
} else {
@@ -162,7 +166,7 @@ class Sapi
$url = $value;
break;
- // These sometimes show up without a HTTP_ prefix
+ // These sometimes show up without a HTTP_ prefix
case 'CONTENT_TYPE':
$headers['Content-Type'] = $value;
break;
@@ -170,21 +174,21 @@ class Sapi
$headers['Content-Length'] = $value;
break;
- // mod_php on apache will put credentials in these variables.
- // (fast)cgi does not usually do this, however.
+ // mod_php on apache will put credentials in these variables.
+ // (fast)cgi does not usually do this, however.
case 'PHP_AUTH_USER':
if (isset($serverArray['PHP_AUTH_PW'])) {
$headers['Authorization'] = 'Basic '.base64_encode($value.':'.$serverArray['PHP_AUTH_PW']);
}
break;
- // Similarly, mod_php may also screw around with digest auth.
+ // Similarly, mod_php may also screw around with digest auth.
case 'PHP_AUTH_DIGEST':
$headers['Authorization'] = 'Digest '.$value;
break;
- // Apache may prefix the HTTP_AUTHORIZATION header with
- // REDIRECT_, if mod_rewrite was used.
+ // Apache may prefix the HTTP_AUTHORIZATION header with
+ // REDIRECT_, if mod_rewrite was used.
case 'REDIRECT_HTTP_AUTHORIZATION':
$headers['Authorization'] = $value;
break;
@@ -220,11 +224,11 @@ class Sapi
}
if (null === $url) {
- throw new InvalidArgumentException('The _SERVER array must have a REQUEST_URI key');
+ throw new \InvalidArgumentException('The _SERVER array must have a REQUEST_URI key');
}
if (null === $method) {
- throw new InvalidArgumentException('The _SERVER array must have a REQUEST_METHOD key');
+ throw new \InvalidArgumentException('The _SERVER array must have a REQUEST_METHOD key');
}
$r = new Request($method, $url, $headers);
$r->setHttpVersion($httpVersion);
diff --git a/vendor/sabre/http/lib/Version.php b/vendor/sabre/http/lib/Version.php
index 47582f22e..4ac82f6d7 100644
--- a/vendor/sabre/http/lib/Version.php
+++ b/vendor/sabre/http/lib/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- const VERSION = '5.1.6';
+ public const VERSION = '5.1.12';
}
diff --git a/vendor/sabre/http/lib/functions.php b/vendor/sabre/http/lib/functions.php
index d0477d943..9ecc1758a 100644
--- a/vendor/sabre/http/lib/functions.php
+++ b/vendor/sabre/http/lib/functions.php
@@ -4,9 +4,6 @@ declare(strict_types=1);
namespace Sabre\HTTP;
-use DateTime;
-use InvalidArgumentException;
-
/**
* A collection of useful helpers for parsing or generating various HTTP
* headers.
@@ -29,7 +26,7 @@ use InvalidArgumentException;
* See:
* http://tools.ietf.org/html/rfc7231#section-7.1.1.1
*
- * @return bool|DateTime
+ * @return bool|\DateTime
*/
function parseDate(string $dateString)
{
@@ -65,7 +62,7 @@ function parseDate(string $dateString)
}
try {
- return new DateTime($dateString, new \DateTimeZone('UTC'));
+ return new \DateTime($dateString, new \DateTimeZone('UTC'));
} catch (\Exception $e) {
return false;
}
@@ -74,7 +71,7 @@ function parseDate(string $dateString)
/**
* Transforms a DateTime object to a valid HTTP/1.1 Date header value.
*/
-function toDate(DateTime $dateTime): string
+function toDate(\DateTime $dateTime): string
{
// We need to clone it, as we don't want to affect the existing
// DateTime.
@@ -171,9 +168,9 @@ function negotiateContentType($acceptHeaderValue, array $availableOptions)
// Does this entry win?
if (
- ($proposal['quality'] > $lastQuality) ||
- ($proposal['quality'] === $lastQuality && $specificity > $lastSpecificity) ||
- ($proposal['quality'] === $lastQuality && $specificity === $lastSpecificity && $optionIndex < $lastOptionIndex)
+ ($proposal['quality'] > $lastQuality)
+ || ($proposal['quality'] === $lastQuality && $specificity > $lastSpecificity)
+ || ($proposal['quality'] === $lastQuality && $specificity === $lastSpecificity && $optionIndex < $lastOptionIndex)
) {
$lastQuality = $proposal['quality'];
$lastSpecificity = $specificity;
@@ -331,7 +328,7 @@ function parseMimeType(string $str): array
if (2 !== count($mimeType)) {
// Illegal value
var_dump($mimeType);
- exit();
+ exit;
// throw new InvalidArgumentException('Not a valid mime-type: '.$str);
}
list($type, $subType) = $mimeType;
diff --git a/vendor/sabre/uri/.php-cs-fixer.dist.php b/vendor/sabre/uri/.php-cs-fixer.dist.php
index 87337520b..f9d4b7a8d 100644
--- a/vendor/sabre/uri/.php-cs-fixer.dist.php
+++ b/vendor/sabre/uri/.php-cs-fixer.dist.php
@@ -7,7 +7,11 @@ $finder = PhpCsFixer\Finder::create()
$config = new PhpCsFixer\Config();
$config->setRules([
'@PSR1' => true,
- '@Symfony' => true
+ '@Symfony' => true,
+ 'nullable_type_declaration' => [
+ 'syntax' => 'question_mark',
+ ],
+ 'nullable_type_declaration_for_default_null_value' => true,
]);
$config->setFinder($finder);
return $config; \ No newline at end of file
diff --git a/vendor/sabre/uri/composer.json b/vendor/sabre/uri/composer.json
index 0e0cf2d36..ba4a8e093 100644
--- a/vendor/sabre/uri/composer.json
+++ b/vendor/sabre/uri/composer.json
@@ -37,9 +37,12 @@
}
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^3.9",
- "phpstan/phpstan": "^1.8",
- "phpunit/phpunit" : "^9.0"
+ "friendsofphp/php-cs-fixer": "^3.63",
+ "phpstan/phpstan": "^1.12",
+ "phpstan/phpstan-phpunit": "^1.4",
+ "phpstan/phpstan-strict-rules": "^1.6",
+ "phpstan/extension-installer": "^1.4",
+ "phpunit/phpunit" : "^9.6"
},
"scripts": {
"phpstan": [
@@ -56,5 +59,10 @@
"composer cs-fixer",
"composer phpunit"
]
+ },
+ "config": {
+ "allow-plugins": {
+ "phpstan/extension-installer": true
+ }
}
}
diff --git a/vendor/sabre/uri/lib/Version.php b/vendor/sabre/uri/lib/Version.php
index e4f289e90..c7652f4f2 100644
--- a/vendor/sabre/uri/lib/Version.php
+++ b/vendor/sabre/uri/lib/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- public const VERSION = '2.3.2';
+ public const VERSION = '2.3.4';
}
diff --git a/vendor/sabre/uri/lib/functions.php b/vendor/sabre/uri/lib/functions.php
index 64e64027f..ce3027e2e 100644
--- a/vendor/sabre/uri/lib/functions.php
+++ b/vendor/sabre/uri/lib/functions.php
@@ -26,15 +26,15 @@ function resolve(string $basePath, string $newPath): string
// If the new path defines a scheme, it's absolute and we can just return
// that.
- if ($delta['scheme']) {
+ if (null !== $delta['scheme']) {
return build($delta);
}
$base = parse($basePath);
$pick = function ($part) use ($base, $delta) {
- if ($delta[$part]) {
+ if (null !== $delta[$part]) {
return $delta[$part];
- } elseif ($base[$part]) {
+ } elseif (null !== $base[$part]) {
return $base[$part];
}
@@ -47,7 +47,6 @@ function resolve(string $basePath, string $newPath): string
$newParts['host'] = $pick('host');
$newParts['port'] = $pick('port');
- $path = '';
if (is_string($delta['path']) and strlen($delta['path']) > 0) {
// If the path starts with a slash
if ('/' === $delta['path'][0]) {
@@ -62,7 +61,10 @@ function resolve(string $basePath, string $newPath): string
$path .= '/'.$delta['path'];
}
} else {
- $path = $base['path'] ?: '/';
+ $path = $base['path'] ?? '/';
+ if ('' === $path) {
+ $path = '/';
+ }
}
// Removing .. and .
$pathParts = explode('/', $path);
@@ -85,13 +87,17 @@ function resolve(string $basePath, string $newPath): string
// If the source url ended with a /, we want to preserve that.
$newParts['path'] = 0 === strpos($path, '/') ? $path : '/'.$path;
- if ($delta['query']) {
+ // From PHP 8, no "?" query at all causes 'query' to be null.
+ // An empty query "http://example.com/foo?" causes 'query' to be the empty string
+ if (null !== $delta['query'] && '' !== $delta['query']) {
$newParts['query'] = $delta['query'];
- } elseif (!empty($base['query']) && empty($delta['host']) && empty($delta['path'])) {
+ } elseif (isset($base['query']) && null === $delta['host'] && null === $delta['path']) {
// Keep the old query if host and path didn't change
$newParts['query'] = $base['query'];
}
- if ($delta['fragment']) {
+ // From PHP 8, no "#" fragment at all causes 'fragment' to be null.
+ // An empty fragment "http://example.com/foo#" causes 'fragment' to be the empty string
+ if (null !== $delta['fragment'] && '' !== $delta['fragment']) {
$newParts['fragment'] = $delta['fragment'];
}
@@ -113,7 +119,7 @@ function normalize(string $uri): string
{
$parts = parse($uri);
- if (!empty($parts['path'])) {
+ if (null !== $parts['path']) {
$pathParts = explode('/', ltrim($parts['path'], '/'));
$newPathParts = [];
foreach ($pathParts as $pathPart) {
@@ -134,14 +140,14 @@ function normalize(string $uri): string
$parts['path'] = '/'.implode('/', $newPathParts);
}
- if ($parts['scheme']) {
+ if (null !== $parts['scheme']) {
$parts['scheme'] = strtolower($parts['scheme']);
$defaultPorts = [
'http' => '80',
'https' => '443',
];
- if (!empty($parts['port']) && isset($defaultPorts[$parts['scheme']]) && $defaultPorts[$parts['scheme']] == $parts['port']) {
+ if (null !== $parts['port'] && isset($defaultPorts[$parts['scheme']]) && $defaultPorts[$parts['scheme']] == $parts['port']) {
// Removing default ports.
unset($parts['port']);
}
@@ -149,7 +155,7 @@ function normalize(string $uri): string
switch ($parts['scheme']) {
case 'http':
case 'https':
- if (empty($parts['path'])) {
+ if (null === $parts['path']) {
// An empty path is equivalent to / in http.
$parts['path'] = '/';
}
@@ -157,7 +163,7 @@ function normalize(string $uri): string
}
}
- if ($parts['host']) {
+ if (null !== $parts['host']) {
$parts['host'] = strtolower($parts['host']);
}
@@ -201,7 +207,7 @@ function parse(string $uri): array
}
$result = parse_url($uri);
- if (!$result) {
+ if (false === $result) {
$result = _parse_fallback($uri);
}
@@ -217,14 +223,14 @@ function parse(string $uri): array
*/
return
$result + [
- 'scheme' => null,
- 'host' => null,
- 'path' => null,
- 'port' => null,
- 'user' => null,
- 'query' => null,
- 'fragment' => null,
- ];
+ 'scheme' => null,
+ 'host' => null,
+ 'path' => null,
+ 'port' => null,
+ 'user' => null,
+ 'query' => null,
+ 'fragment' => null,
+ ];
}
/**
@@ -238,32 +244,32 @@ function build(array $parts): string
$uri = '';
$authority = '';
- if (!empty($parts['host'])) {
+ if (isset($parts['host'])) {
$authority = $parts['host'];
- if (!empty($parts['user'])) {
+ if (isset($parts['user'])) {
$authority = $parts['user'].'@'.$authority;
}
- if (!empty($parts['port'])) {
+ if (isset($parts['port'])) {
$authority = $authority.':'.$parts['port'];
}
}
- if (!empty($parts['scheme'])) {
+ if (isset($parts['scheme'])) {
// If there's a scheme, there's also a host.
$uri = $parts['scheme'].':';
}
- if ($authority || (!empty($parts['scheme']) && 'file' === $parts['scheme'])) {
+ if ('' !== $authority || (isset($parts['scheme']) && 'file' === $parts['scheme'])) {
// No scheme, but there is a host.
$uri .= '//'.$authority;
}
- if (!empty($parts['path'])) {
+ if (isset($parts['path'])) {
$uri .= $parts['path'];
}
- if (!empty($parts['query'])) {
+ if (isset($parts['query'])) {
$uri .= '?'.$parts['query'];
}
- if (!empty($parts['fragment'])) {
+ if (isset($parts['fragment'])) {
$uri .= '#'.$parts['fragment'];
}
@@ -290,7 +296,7 @@ function build(array $parts): string
function split(string $path): array
{
$matches = [];
- if (preg_match('/^(?:(?:(.*)(?:\/+))?([^\/]+))(?:\/?)$/u', $path, $matches)) {
+ if (1 === preg_match('/^(?:(?:(.*)(?:\/+))?([^\/]+))(?:\/?)$/u', $path, $matches)) {
return [$matches[1], $matches[2]];
}
@@ -307,7 +313,7 @@ function split(string $path): array
* This function is only called if the main parse method fails. It's pretty
* crude and probably slow, so the original parse_url is usually preferred.
*
- * @return array<string, mixed>
+ * @return array{scheme: string|null, host: string|null, path: string|null, port: positive-int|null, user: string|null, query: string|null, fragment: string|null}
*
* @throws InvalidUriException
*/
@@ -340,10 +346,14 @@ function _parse_fallback(string $uri): array
'query' => null,
];
- if (preg_match('% ^([A-Za-z][A-Za-z0-9+-\.]+): %x', $uri, $matches)) {
+ if (1 === preg_match('% ^([A-Za-z][A-Za-z0-9+-\.]+): %x', $uri, $matches)) {
$result['scheme'] = $matches[1];
// Take what's left.
$uri = substr($uri, strlen($result['scheme']) + 1);
+ if (false === $uri) {
+ // There was nothing left.
+ $uri = '';
+ }
}
// Taking off a fragment part
@@ -358,7 +368,11 @@ function _parse_fallback(string $uri): array
if ('///' === substr($uri, 0, 3)) {
// The triple slash uris are a bit unusual, but we have special handling
// for them.
- $result['path'] = substr($uri, 2);
+ $path = substr($uri, 2);
+ if (false === $path) {
+ throw new \RuntimeException('The string cannot be false');
+ }
+ $result['path'] = $path;
$result['host'] = '';
} elseif ('//' === substr($uri, 0, 2)) {
// Uris that have an authority part.
@@ -369,22 +383,25 @@ function _parse_fallback(string $uri): array
(?: : (?<port> [0-9]+))?
(?<path> / .*)?
$%x';
- if (!preg_match($regex, $uri, $matches)) {
+ if (1 !== preg_match($regex, $uri, $matches)) {
throw new InvalidUriException('Invalid, or could not parse URI');
}
- if ($matches['host']) {
+ if (isset($matches['host']) && '' !== $matches['host']) {
$result['host'] = $matches['host'];
}
if (isset($matches['port'])) {
- $result['port'] = (int) $matches['port'];
+ $port = (int) $matches['port'];
+ if ($port > 0) {
+ $result['port'] = $port;
+ }
}
if (isset($matches['path'])) {
$result['path'] = $matches['path'];
}
- if ($matches['user']) {
+ if (isset($matches['user']) && '' !== $matches['user']) {
$result['user'] = $matches['user'];
}
- if ($matches['pass']) {
+ if (isset($matches['pass']) && '' !== $matches['pass']) {
$result['pass'] = $matches['pass'];
}
} else {
diff --git a/vendor/sabre/vobject/composer.json b/vendor/sabre/vobject/composer.json
index b08684bce..df0261feb 100644
--- a/vendor/sabre/vobject/composer.json
+++ b/vendor/sabre/vobject/composer.json
@@ -38,9 +38,9 @@
},
"require-dev" : {
"friendsofphp/php-cs-fixer": "~2.17.1",
- "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.0",
+ "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.6",
"phpunit/php-invoker" : "^2.0 || ^3.1",
- "phpstan/phpstan": "^0.12"
+ "phpstan/phpstan": "^0.12 || ^1.11"
},
"suggest" : {
"hoa/bench" : "If you would like to run the benchmark scripts"
diff --git a/vendor/sabre/vobject/lib/Component/VCalendar.php b/vendor/sabre/vobject/lib/Component/VCalendar.php
index 4db318135..017aed70c 100644
--- a/vendor/sabre/vobject/lib/Component/VCalendar.php
+++ b/vendor/sabre/vobject/lib/Component/VCalendar.php
@@ -281,7 +281,7 @@ class VCalendar extends VObject\Document
*
* @return VCalendar
*/
- public function expand(DateTimeInterface $start, DateTimeInterface $end, DateTimeZone $timeZone = null)
+ public function expand(DateTimeInterface $start, DateTimeInterface $end, ?DateTimeZone $timeZone = null)
{
$newChildren = [];
$recurringEvents = [];
diff --git a/vendor/sabre/vobject/lib/DateTimeParser.php b/vendor/sabre/vobject/lib/DateTimeParser.php
index c5dbac97d..69072ef8c 100644
--- a/vendor/sabre/vobject/lib/DateTimeParser.php
+++ b/vendor/sabre/vobject/lib/DateTimeParser.php
@@ -31,7 +31,7 @@ class DateTimeParser
*
* @return DateTimeImmutable
*/
- public static function parseDateTime($dt, DateTimeZone $tz = null)
+ public static function parseDateTime($dt, ?DateTimeZone $tz = null)
{
// Format is YYYYMMDD + "T" + hhmmss
$result = preg_match('/^([0-9]{4})([0-1][0-9])([0-3][0-9])T([0-2][0-9])([0-5][0-9])([0-5][0-9])([Z]?)$/', $dt, $matches);
@@ -61,7 +61,7 @@ class DateTimeParser
*
* @return DateTimeImmutable
*/
- public static function parseDate($date, DateTimeZone $tz = null)
+ public static function parseDate($date, ?DateTimeZone $tz = null)
{
// Format is YYYYMMDD
$result = preg_match('/^([0-9]{4})([0-1][0-9])([0-3][0-9])$/', $date, $matches);
diff --git a/vendor/sabre/vobject/lib/Document.php b/vendor/sabre/vobject/lib/Document.php
index 14a77c911..d2131f479 100644
--- a/vendor/sabre/vobject/lib/Document.php
+++ b/vendor/sabre/vobject/lib/Document.php
@@ -157,7 +157,7 @@ abstract class Document extends Component
*
* @return Component
*/
- public function createComponent($name, array $children = null, $defaults = true)
+ public function createComponent($name, ?array $children = null, $defaults = true)
{
$name = strtoupper($name);
$class = Component::class;
@@ -186,10 +186,8 @@ abstract class Document extends Component
* @param mixed $value
* @param array $parameters
* @param string $valueType Force a specific valuetype, such as URI or TEXT
- *
- * @return Property
*/
- public function createProperty($name, $value = null, array $parameters = null, $valueType = null)
+ public function createProperty($name, $value = null, ?array $parameters = null, $valueType = null, ?int $lineIndex = null, ?string $lineString = null): Property
{
// If there's a . in the name, it means it's prefixed by a groupname.
if (false !== ($i = strpos($name, '.'))) {
@@ -223,7 +221,7 @@ abstract class Document extends Component
$parameters = [];
}
- return new $class($this, $name, $value, $parameters, $group);
+ return new $class($this, $name, $value, $parameters, $group, $lineIndex, $lineString);
}
/**
diff --git a/vendor/sabre/vobject/lib/FreeBusyGenerator.php b/vendor/sabre/vobject/lib/FreeBusyGenerator.php
index 81b8126d5..56ae166fa 100644
--- a/vendor/sabre/vobject/lib/FreeBusyGenerator.php
+++ b/vendor/sabre/vobject/lib/FreeBusyGenerator.php
@@ -89,7 +89,7 @@ class FreeBusyGenerator
* @param mixed $objects
* @param DateTimeZone $timeZone
*/
- public function __construct(DateTimeInterface $start = null, DateTimeInterface $end = null, $objects = null, DateTimeZone $timeZone = null)
+ public function __construct(?DateTimeInterface $start = null, ?DateTimeInterface $end = null, $objects = null, ?DateTimeZone $timeZone = null)
{
$this->setTimeRange($start, $end);
@@ -158,7 +158,7 @@ class FreeBusyGenerator
* @param DateTimeInterface $start
* @param DateTimeInterface $end
*/
- public function setTimeRange(DateTimeInterface $start = null, DateTimeInterface $end = null)
+ public function setTimeRange(?DateTimeInterface $start = null, ?DateTimeInterface $end = null)
{
if (!$start) {
$start = new DateTimeImmutable(Settings::$minDate);
diff --git a/vendor/sabre/vobject/lib/ITip/Broker.php b/vendor/sabre/vobject/lib/ITip/Broker.php
index 80d9a5b31..9d68fc4c6 100644
--- a/vendor/sabre/vobject/lib/ITip/Broker.php
+++ b/vendor/sabre/vobject/lib/ITip/Broker.php
@@ -108,7 +108,7 @@ class Broker
*
* @return VCalendar|null
*/
- public function processMessage(Message $itipMessage, VCalendar $existingObject = null)
+ public function processMessage(Message $itipMessage, ?VCalendar $existingObject = null)
{
// We only support events at the moment.
if ('VEVENT' !== $itipMessage->component) {
@@ -266,7 +266,7 @@ class Broker
*
* @return VCalendar|null
*/
- protected function processMessageRequest(Message $itipMessage, VCalendar $existingObject = null)
+ protected function processMessageRequest(Message $itipMessage, ?VCalendar $existingObject = null)
{
if (!$existingObject) {
// This is a new invite, and we're just going to copy over
@@ -301,7 +301,7 @@ class Broker
*
* @return VCalendar|null
*/
- protected function processMessageCancel(Message $itipMessage, VCalendar $existingObject = null)
+ protected function processMessageCancel(Message $itipMessage, ?VCalendar $existingObject = null)
{
if (!$existingObject) {
// The event didn't exist in the first place, so we're just
@@ -326,7 +326,7 @@ class Broker
*
* @return VCalendar|null
*/
- protected function processMessageReply(Message $itipMessage, VCalendar $existingObject = null)
+ protected function processMessageReply(Message $itipMessage, ?VCalendar $existingObject = null)
{
// A reply can only be processed based on an existing object.
// If the object is not available, the reply is ignored.
@@ -338,7 +338,10 @@ class Broker
// Finding all the instances the attendee replied to.
foreach ($itipMessage->message->VEVENT as $vevent) {
- $recurId = isset($vevent->{'RECURRENCE-ID'}) ? $vevent->{'RECURRENCE-ID'}->getValue() : 'master';
+ // Use the Unix timestamp returned by getTimestamp as a unique identifier for the recurrence.
+ // The Unix timestamp will be the same for an event, even if the reply from the attendee
+ // used a different format/timezone to express the event date-time.
+ $recurId = isset($vevent->{'RECURRENCE-ID'}) ? $vevent->{'RECURRENCE-ID'}->getDateTime()->getTimestamp() : 'master';
$attendee = $vevent->ATTENDEE;
$instances[$recurId] = $attendee['PARTSTAT']->getValue();
if (isset($vevent->{'REQUEST-STATUS'})) {
@@ -351,7 +354,8 @@ class Broker
// all the instances where we have a reply for.
$masterObject = null;
foreach ($existingObject->VEVENT as $vevent) {
- $recurId = isset($vevent->{'RECURRENCE-ID'}) ? $vevent->{'RECURRENCE-ID'}->getValue() : 'master';
+ // Use the Unix timestamp returned by getTimestamp as a unique identifier for the recurrence.
+ $recurId = isset($vevent->{'RECURRENCE-ID'}) ? $vevent->{'RECURRENCE-ID'}->getDateTime()->getTimestamp() : 'master';
if ('master' === $recurId) {
$masterObject = $vevent;
}
@@ -398,7 +402,10 @@ class Broker
$newObject = $recurrenceIterator->getEventObject();
$recurrenceIterator->next();
- if (isset($newObject->{'RECURRENCE-ID'}) && $newObject->{'RECURRENCE-ID'}->getValue() === $recurId) {
+ // Compare the Unix timestamp returned by getTimestamp with the previously calculated timestamp.
+ // If they are the same, then this is a matching recurrence, even though its date-time may have
+ // been expressed in a different format/timezone.
+ if (isset($newObject->{'RECURRENCE-ID'}) && $newObject->{'RECURRENCE-ID'}->getDateTime()->getTimestamp() === $recurId) {
$found = true;
}
--$iterations;
@@ -503,10 +510,11 @@ class Broker
$icalMsg->add(clone $timezone);
}
- if (!$attendee['newInstances']) {
- // If there are no instances the attendee is a part of, it
- // means the attendee was removed and we need to send him a
- // CANCEL.
+ if (!$attendee['newInstances'] || 'CANCELLED' === $eventInfo['status']) {
+ // If there are no instances the attendee is a part of, it means
+ // the attendee was removed and we need to send them a CANCEL message.
+ // Also If the meeting STATUS property was changed to CANCELLED
+ // we need to send the attendee a CANCEL message.
$message->method = 'CANCEL';
$icalMsg->METHOD = $message->method;
@@ -800,7 +808,7 @@ class Broker
*
* @return array
*/
- protected function parseEventInfo(VCalendar $calendar = null)
+ protected function parseEventInfo(?VCalendar $calendar = null)
{
$uid = null;
$organizer = null;
diff --git a/vendor/sabre/vobject/lib/Parser/MimeDir.php b/vendor/sabre/vobject/lib/Parser/MimeDir.php
index 513f7bd0c..d484d6a39 100644
--- a/vendor/sabre/vobject/lib/Parser/MimeDir.php
+++ b/vendor/sabre/vobject/lib/Parser/MimeDir.php
@@ -83,6 +83,12 @@ class MimeDir extends Parser
$this->setInput($input);
}
+ if (!\is_resource($this->input)) {
+ // Null was passed as input, but there was no existing input buffer
+ // There is nothing to parse.
+ throw new ParseException('No input provided to parse');
+ }
+
if (0 !== $options) {
$this->options = $options;
}
@@ -447,7 +453,7 @@ class MimeDir extends Parser
}
}
- $propObj = $this->root->createProperty($property['name'], null, $namedParameters);
+ $propObj = $this->root->createProperty($property['name'], null, $namedParameters, null, $this->startLine, $line);
foreach ($namelessParameters as $namelessParameter) {
$propObj->add(null, $namelessParameter);
diff --git a/vendor/sabre/vobject/lib/Property.php b/vendor/sabre/vobject/lib/Property.php
index f6550246a..f52760f9c 100644
--- a/vendor/sabre/vobject/lib/Property.php
+++ b/vendor/sabre/vobject/lib/Property.php
@@ -57,6 +57,20 @@ abstract class Property extends Node
public $delimiter = ';';
/**
+ * The line number in the original iCalendar / vCard file
+ * that corresponds with the current node
+ * if the node was read from a file.
+ */
+ public $lineIndex;
+
+ /**
+ * The line string from the original iCalendar / vCard file
+ * that corresponds with the current node
+ * if the node was read from a file.
+ */
+ public $lineString;
+
+ /**
* Creates the generic property.
*
* Parameters must be specified in key=>value syntax.
@@ -67,7 +81,7 @@ abstract class Property extends Node
* @param array $parameters List of parameters
* @param string $group The vcard property group
*/
- public function __construct(Component $root, $name, $value = null, array $parameters = [], $group = null)
+ public function __construct(Component $root, $name, $value = null, array $parameters = [], $group = null, ?int $lineIndex = null, ?string $lineString = null)
{
$this->name = $name;
$this->group = $group;
@@ -81,6 +95,14 @@ abstract class Property extends Node
if (!is_null($value)) {
$this->setValue($value);
}
+
+ if (!is_null($lineIndex)) {
+ $this->lineIndex = $lineIndex;
+ }
+
+ if (!is_null($lineString)) {
+ $this->lineString = $lineString;
+ }
}
/**
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php b/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php
index ca71633b9..3ea21e2ec 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php
@@ -131,7 +131,7 @@ class DateTime extends Property
*
* @return \DateTimeImmutable
*/
- public function getDateTime(DateTimeZone $timeZone = null)
+ public function getDateTime(?DateTimeZone $timeZone = null)
{
$dt = $this->getDateTimes($timeZone);
if (!$dt) {
@@ -153,7 +153,7 @@ class DateTime extends Property
* @return \DateTimeImmutable[]
* @return \DateTime[]
*/
- public function getDateTimes(DateTimeZone $timeZone = null)
+ public function getDateTimes(?DateTimeZone $timeZone = null)
{
// Does the property have a TZID?
$tzid = $this['TZID'];
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php b/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
index 3d632fec1..cd3d7a5e4 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
@@ -2,6 +2,7 @@
namespace Sabre\VObject\Property\ICalendar;
+use Sabre\VObject\InvalidDataException;
use Sabre\VObject\Property;
use Sabre\Xml;
@@ -198,7 +199,14 @@ class Recur extends Property
if (empty($part)) {
continue;
}
- list($partName, $partValue) = explode('=', $part);
+
+ $parts = explode('=', $part);
+
+ if (2 !== count($parts)) {
+ throw new InvalidDataException('The supplied iCalendar RRULE part is incorrect: '.$part);
+ }
+
+ list($partName, $partValue) = $parts;
// The value itself had multiple values..
if (false !== strpos($partValue, ',')) {
diff --git a/vendor/sabre/vobject/lib/Recur/EventIterator.php b/vendor/sabre/vobject/lib/Recur/EventIterator.php
index 61f05d7de..55d6e4779 100644
--- a/vendor/sabre/vobject/lib/Recur/EventIterator.php
+++ b/vendor/sabre/vobject/lib/Recur/EventIterator.php
@@ -93,7 +93,7 @@ class EventIterator implements \Iterator
* @param DateTimeZone $timeZone reference timezone for floating dates and
* times
*/
- public function __construct($input, $uid = null, DateTimeZone $timeZone = null)
+ public function __construct($input, $uid = null, ?DateTimeZone $timeZone = null)
{
if (is_null($timeZone)) {
$timeZone = new DateTimeZone('UTC');
diff --git a/vendor/sabre/vobject/lib/Recur/RRuleIterator.php b/vendor/sabre/vobject/lib/Recur/RRuleIterator.php
index 4f0e9070d..ca53b63ee 100644
--- a/vendor/sabre/vobject/lib/Recur/RRuleIterator.php
+++ b/vendor/sabre/vobject/lib/Recur/RRuleIterator.php
@@ -173,6 +173,14 @@ class RRuleIterator implements Iterator
protected $currentDate;
/**
+ * The number of hours that the next occurrence of an event
+ * jumped forward, usually because summer time started and
+ * the requested time-of-day like 0230 did not exist on that
+ * day. And so the event was scheduled 1 hour later at 0330.
+ */
+ protected $hourJump = 0;
+
+ /**
* Frequency is one of: secondly, minutely, hourly, daily, weekly, monthly,
* yearly.
*
@@ -320,11 +328,64 @@ class RRuleIterator implements Iterator
/* Functions that advance the iterator {{{ */
/**
+ * Gets the original start time of the RRULE.
+ *
+ * The value is formatted as a string with 24-hour:minute:second
+ */
+ protected function startTime(): string
+ {
+ return $this->startDate->format('H:i:s');
+ }
+
+ /**
+ * Advances currentDate by the interval.
+ * The time is set from the original startDate.
+ * If the recurrence is on a day when summer time started, then the
+ * time on that day may have jumped forward, for example, from 0230 to 0330.
+ * Using the original time means that the next recurrence will be calculated
+ * based on the original start time and the day/week/month/year interval.
+ * So the start time of the next occurrence can correctly revert to 0230.
+ */
+ protected function advanceTheDate(string $interval): void
+ {
+ $this->currentDate = $this->currentDate->modify($interval.' '.$this->startTime());
+ }
+
+ /**
+ * Does the processing for adjusting the time of multi-hourly events when summer time starts.
+ */
+ protected function adjustForTimeJumpsOfHourlyEvent(DateTimeInterface $previousEventDateTime): void
+ {
+ if (0 === $this->hourJump) {
+ // Remember if the clock time jumped forward on the next occurrence.
+ // That happens if the next event time is on a day when summer time starts
+ // and the event time is in the non-existent hour of the day.
+ // For example, an event that normally starts at 02:30 will
+ // have to start at 03:30 on that day.
+ // If the interval is just 1 hour, then there is no "jumping back" to do.
+ // The events that day will happen, for example, at 0030 0130 0330 0430 0530...
+ if ($this->interval > 1) {
+ $expectedHourOfNextDate = ((int) $previousEventDateTime->format('G') + $this->interval) % 24;
+ $actualHourOfNextDate = (int) $this->currentDate->format('G');
+ $this->hourJump = $actualHourOfNextDate - $expectedHourOfNextDate;
+ }
+ } else {
+ // The hour "jumped" for the previous occurrence, to avoid the non-existent time.
+ // currentDate got set ahead by (usually) 1 hour on that day.
+ // Adjust it back for this next occurrence.
+ $this->currentDate = $this->currentDate->sub(new \DateInterval('PT'.$this->hourJump.'H'));
+ $this->hourJump = 0;
+ }
+ }
+
+ /**
* Does the processing for advancing the iterator for hourly frequency.
*/
protected function nextHourly()
{
+ $previousEventDateTime = clone $this->currentDate;
$this->currentDate = $this->currentDate->modify('+'.$this->interval.' hours');
+ $this->adjustForTimeJumpsOfHourlyEvent($previousEventDateTime);
}
/**
@@ -333,7 +394,7 @@ class RRuleIterator implements Iterator
protected function nextDaily()
{
if (!$this->byHour && !$this->byDay) {
- $this->currentDate = $this->currentDate->modify('+'.$this->interval.' days');
+ $this->advanceTheDate('+'.$this->interval.' days');
return;
}
@@ -392,7 +453,7 @@ class RRuleIterator implements Iterator
protected function nextWeekly()
{
if (!$this->byHour && !$this->byDay) {
- $this->currentDate = $this->currentDate->modify('+'.$this->interval.' weeks');
+ $this->advanceTheDate('+'.$this->interval.' weeks');
return;
}
@@ -414,7 +475,7 @@ class RRuleIterator implements Iterator
if ($this->byHour) {
$this->currentDate = $this->currentDate->modify('+1 hours');
} else {
- $this->currentDate = $this->currentDate->modify('+1 days');
+ $this->advanceTheDate('+1 days');
}
// Current day of the week
@@ -449,13 +510,13 @@ class RRuleIterator implements Iterator
// occur to the next month. We Must skip these invalid
// entries.
if ($currentDayOfMonth < 29) {
- $this->currentDate = $this->currentDate->modify('+'.$this->interval.' months');
+ $this->advanceTheDate('+'.$this->interval.' months');
} else {
$increase = 0;
do {
++$increase;
$tempDate = clone $this->currentDate;
- $tempDate = $tempDate->modify('+ '.($this->interval * $increase).' months');
+ $tempDate = $tempDate->modify('+ '.($this->interval * $increase).' months '.$this->startTime());
} while ($tempDate->format('j') != $currentDayOfMonth);
$this->currentDate = $tempDate;
}
@@ -506,11 +567,15 @@ class RRuleIterator implements Iterator
}
}
+ // Set the currentDate to the year and month that we are in, and the day of the month that we have selected.
+ // That day could be a day when summer time starts, and if the time of the event is, for example, 0230,
+ // then 0230 will not be a valid time on that day. So always apply the start time from the original startDate.
+ // The "modify" method will set the time forward to 0330, for example, if needed.
$this->currentDate = $this->currentDate->setDate(
(int) $this->currentDate->format('Y'),
(int) $this->currentDate->format('n'),
(int) $occurrence
- );
+ )->modify($this->startTime());
}
/**
@@ -627,7 +692,7 @@ class RRuleIterator implements Iterator
}
// The easiest form
- $this->currentDate = $this->currentDate->modify('+'.$this->interval.' years');
+ $this->advanceTheDate('+'.$this->interval.' years');
return;
}
@@ -651,7 +716,11 @@ class RRuleIterator implements Iterator
// If we advanced to the next month or year, the first
// occurrence is always correct.
if ($occurrence > $currentDayOfMonth || $advancedToNewMonth) {
- break 2;
+ // only consider byMonth matches,
+ // otherwise, we don't follow RRule correctly
+ if (in_array($currentMonth, $this->byMonth)) {
+ break 2;
+ }
}
}
@@ -687,7 +756,7 @@ class RRuleIterator implements Iterator
(int) $currentYear,
(int) $currentMonth,
(int) $occurrence
- );
+ )->modify($this->startTime());
return;
} else {
@@ -704,7 +773,7 @@ class RRuleIterator implements Iterator
(int) $currentYear,
(int) $currentMonth,
(int) $currentDayOfMonth
- );
+ )->modify($this->startTime());
return;
}
diff --git a/vendor/sabre/vobject/lib/TimeZoneUtil.php b/vendor/sabre/vobject/lib/TimeZoneUtil.php
index 6422c0930..0d77e71ed 100644
--- a/vendor/sabre/vobject/lib/TimeZoneUtil.php
+++ b/vendor/sabre/vobject/lib/TimeZoneUtil.php
@@ -75,7 +75,7 @@ class TimeZoneUtil
* Alternatively, if $failIfUncertain is set to true, it will throw an
* exception if we cannot accurately determine the timezone.
*/
- private function findTimeZone(string $tzid, Component $vcalendar = null, bool $failIfUncertain = false): DateTimeZone
+ private function findTimeZone(string $tzid, ?Component $vcalendar = null, bool $failIfUncertain = false): DateTimeZone
{
foreach ($this->timezoneFinders as $timezoneFinder) {
$timezone = $timezoneFinder->find($tzid, $failIfUncertain);
@@ -126,7 +126,7 @@ class TimeZoneUtil
*
* @return DateTimeZone
*/
- public static function getTimeZone($tzid, Component $vcalendar = null, $failIfUncertain = false)
+ public static function getTimeZone($tzid, ?Component $vcalendar = null, $failIfUncertain = false)
{
return self::getInstance()->findTimeZone($tzid, $vcalendar, $failIfUncertain);
}
diff --git a/vendor/sabre/vobject/lib/Version.php b/vendor/sabre/vobject/lib/Version.php
index c7ca69e14..060c69a30 100644
--- a/vendor/sabre/vobject/lib/Version.php
+++ b/vendor/sabre/vobject/lib/Version.php
@@ -14,5 +14,5 @@ class Version
/**
* Full version number.
*/
- public const VERSION = '4.5.4';
+ public const VERSION = '4.5.6';
}
diff --git a/vendor/sabre/xml/.github/workflows/ci.yml b/vendor/sabre/xml/.github/workflows/ci.yml
index 3473cd2de..5775abaf8 100644
--- a/vendor/sabre/xml/.github/workflows/ci.yml
+++ b/vendor/sabre/xml/.github/workflows/ci.yml
@@ -12,16 +12,22 @@ jobs:
strategy:
fail-fast: false
matrix:
- php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1']
+ php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3']
coverage: ['pcov']
+ code-style: ['yes']
code-analysis: ['no']
include:
- php-versions: '7.1'
coverage: 'none'
+ code-style: 'yes'
+ code-analysis: 'yes'
+ - php-versions: '8.4'
+ coverage: 'pcov'
+ code-style: 'yes'
code-analysis: 'yes'
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
@@ -36,7 +42,7 @@ jobs:
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
- uses: actions/cache@v2
+ uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
# Use composer.json for key, if composer.lock is not committed.
@@ -48,8 +54,8 @@ jobs:
run: composer install --no-progress --prefer-dist --optimize-autoloader
- name: Code Analysis (PHP CS-Fixer)
- if: matrix.code-analysis == 'yes'
- run: php vendor/bin/php-cs-fixer fix --dry-run --diff
+ if: matrix.code-style == 'yes'
+ run: PHP_CS_FIXER_IGNORE_ENV=true php vendor/bin/php-cs-fixer fix --dry-run --diff
- name: Code Analysis (PHPStan)
if: matrix.code-analysis == 'yes'
@@ -59,5 +65,5 @@ jobs:
run: vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-clover clover.xml
- name: Code Coverage
- uses: codecov/codecov-action@v2
+ uses: codecov/codecov-action@v3
if: matrix.coverage != 'none'
diff --git a/vendor/sabre/xml/.php-cs-fixer.dist.php b/vendor/sabre/xml/.php-cs-fixer.dist.php
new file mode 100644
index 000000000..f9d4b7a8d
--- /dev/null
+++ b/vendor/sabre/xml/.php-cs-fixer.dist.php
@@ -0,0 +1,17 @@
+<?php
+
+$finder = PhpCsFixer\Finder::create()
+ ->exclude('vendor')
+ ->in(__DIR__);
+
+$config = new PhpCsFixer\Config();
+$config->setRules([
+ '@PSR1' => true,
+ '@Symfony' => true,
+ 'nullable_type_declaration' => [
+ 'syntax' => 'question_mark',
+ ],
+ 'nullable_type_declaration_for_default_null_value' => true,
+]);
+$config->setFinder($finder);
+return $config; \ No newline at end of file
diff --git a/vendor/sabre/xml/composer.json b/vendor/sabre/xml/composer.json
index 4524cf59b..d7577c2cf 100644
--- a/vendor/sabre/xml/composer.json
+++ b/vendor/sabre/xml/composer.json
@@ -44,16 +44,16 @@
}
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "~2.17.1",
+ "friendsofphp/php-cs-fixer": "~2.17.1||3.63.2",
"phpstan/phpstan": "^0.12",
- "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.0"
+ "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.6"
},
"scripts": {
"phpstan": [
"phpstan analyse lib tests"
],
"cs-fixer": [
- "php-cs-fixer fix"
+ "PHP_CS_FIXER_IGNORE_ENV=true php-cs-fixer fix"
],
"phpunit": [
"phpunit --configuration tests/phpunit.xml"
diff --git a/vendor/sabre/xml/lib/Deserializer/functions.php b/vendor/sabre/xml/lib/Deserializer/functions.php
index c4f240970..50818098b 100644
--- a/vendor/sabre/xml/lib/Deserializer/functions.php
+++ b/vendor/sabre/xml/lib/Deserializer/functions.php
@@ -55,7 +55,7 @@ use Sabre\Xml\Reader;
* Attributes will be removed from the top-level elements. If elements with
* the same name appear twice in the list, only the last one will be kept.
*/
-function keyValue(Reader $reader, string $namespace = null): array
+function keyValue(Reader $reader, ?string $namespace = null): array
{
// If there's no children, we don't do anything.
if ($reader->isEmptyElement) {
@@ -144,7 +144,7 @@ function keyValue(Reader $reader, string $namespace = null): array
*
* @return string[]
*/
-function enum(Reader $reader, string $namespace = null): array
+function enum(Reader $reader, ?string $namespace = null): array
{
// If there's no children, we don't do anything.
if ($reader->isEmptyElement) {
@@ -215,8 +215,11 @@ function valueObject(Reader $reader, string $className, string $namespace)
// Ignore property
$reader->next();
}
+ } elseif (Reader::ELEMENT === $reader->nodeType) {
+ // Skipping element from different namespace
+ $reader->next();
} else {
- if (!$reader->read()) {
+ if (Reader::END_ELEMENT !== $reader->nodeType && !$reader->read()) {
break;
}
}
@@ -322,8 +325,6 @@ function mixedContent(Reader $reader): array
*
* You can use, e.g., a named constructor (factory method) to create an object using
* this function.
- *
- * @return mixed
*/
function functionCaller(Reader $reader, callable $func, string $namespace)
{
diff --git a/vendor/sabre/xml/lib/Element/Base.php b/vendor/sabre/xml/lib/Element/Base.php
index 8a93191b1..02fd76966 100644
--- a/vendor/sabre/xml/lib/Element/Base.php
+++ b/vendor/sabre/xml/lib/Element/Base.php
@@ -21,8 +21,6 @@ class Base implements Xml\Element
{
/**
* PHP value to serialize.
- *
- * @var mixed
*/
protected $value;
@@ -72,8 +70,6 @@ class Base implements Xml\Element
*
* $reader->parseInnerTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Xml\Reader $reader)
{
diff --git a/vendor/sabre/xml/lib/Element/Elements.php b/vendor/sabre/xml/lib/Element/Elements.php
index fecce4c75..6915fd462 100644
--- a/vendor/sabre/xml/lib/Element/Elements.php
+++ b/vendor/sabre/xml/lib/Element/Elements.php
@@ -90,8 +90,6 @@ class Elements implements Xml\Element
*
* $reader->parseSubTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Xml\Reader $reader)
{
diff --git a/vendor/sabre/xml/lib/Element/KeyValue.php b/vendor/sabre/xml/lib/Element/KeyValue.php
index 17448880d..7d75a3ac8 100644
--- a/vendor/sabre/xml/lib/Element/KeyValue.php
+++ b/vendor/sabre/xml/lib/Element/KeyValue.php
@@ -90,8 +90,6 @@ class KeyValue implements Xml\Element
*
* $reader->parseInnerTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Xml\Reader $reader)
{
diff --git a/vendor/sabre/xml/lib/Element/Uri.php b/vendor/sabre/xml/lib/Element/Uri.php
index 336212a53..65276380e 100644
--- a/vendor/sabre/xml/lib/Element/Uri.php
+++ b/vendor/sabre/xml/lib/Element/Uri.php
@@ -84,8 +84,6 @@ class Uri implements Xml\Element
*
* $reader->parseSubTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Xml\Reader $reader)
{
diff --git a/vendor/sabre/xml/lib/Element/XmlFragment.php b/vendor/sabre/xml/lib/Element/XmlFragment.php
index bf110eaee..99d1f87f9 100644
--- a/vendor/sabre/xml/lib/Element/XmlFragment.php
+++ b/vendor/sabre/xml/lib/Element/XmlFragment.php
@@ -135,8 +135,6 @@ XML;
*
* $reader->parseInnerTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Reader $reader)
{
diff --git a/vendor/sabre/xml/lib/LibXMLException.php b/vendor/sabre/xml/lib/LibXMLException.php
index fb074f97d..993f95fd9 100644
--- a/vendor/sabre/xml/lib/LibXMLException.php
+++ b/vendor/sabre/xml/lib/LibXMLException.php
@@ -5,7 +5,6 @@ declare(strict_types=1);
namespace Sabre\Xml;
use LibXMLError;
-use Throwable;
/**
* This exception is thrown when the Reader runs into a parsing error.
@@ -30,10 +29,9 @@ class LibXMLException extends ParseException
*
* You should pass a list of LibXMLError objects in its constructor.
*
- * @param LibXMLError[] $errors
- * @param Throwable $previousException
+ * @param \LibXMLError[] $errors
*/
- public function __construct(array $errors, int $code = 0, Throwable $previousException = null)
+ public function __construct(array $errors, int $code = 0, ?\Throwable $previousException = null)
{
$this->errors = $errors;
parent::__construct($errors[0]->message.' on line '.$errors[0]->line.', column '.$errors[0]->column, $code, $previousException);
diff --git a/vendor/sabre/xml/lib/ParseException.php b/vendor/sabre/xml/lib/ParseException.php
index e237b8732..158cf0119 100644
--- a/vendor/sabre/xml/lib/ParseException.php
+++ b/vendor/sabre/xml/lib/ParseException.php
@@ -13,6 +13,6 @@ use Exception;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class ParseException extends Exception
+class ParseException extends \Exception
{
}
diff --git a/vendor/sabre/xml/lib/Reader.php b/vendor/sabre/xml/lib/Reader.php
index 7871a74f5..f680bf4cd 100644
--- a/vendor/sabre/xml/lib/Reader.php
+++ b/vendor/sabre/xml/lib/Reader.php
@@ -19,7 +19,7 @@ use XMLReader;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Reader extends XMLReader
+class Reader extends \XMLReader
{
use ContextStackTrait;
@@ -103,7 +103,7 @@ class Reader extends XMLReader
* If the $elementMap argument is specified, the existing elementMap will
* be overridden while parsing the tree, and restored after this process.
*/
- public function parseGetElements(array $elementMap = null): array
+ public function parseGetElements(?array $elementMap = null): array
{
$result = $this->parseInnerTree($elementMap);
if (!is_array($result)) {
@@ -126,7 +126,7 @@ class Reader extends XMLReader
*
* @return array|string|null
*/
- public function parseInnerTree(array $elementMap = null)
+ public function parseInnerTree(?array $elementMap = null)
{
$text = null;
$elements = [];
@@ -205,7 +205,7 @@ class Reader extends XMLReader
$previousDepth = $this->depth;
while ($this->read() && $this->depth != $previousDepth) {
- if (in_array($this->nodeType, [XMLReader::TEXT, XMLReader::CDATA, XMLReader::WHITESPACE])) {
+ if (in_array($this->nodeType, [\XMLReader::TEXT, \XMLReader::CDATA, \XMLReader::WHITESPACE])) {
$result .= $this->value;
}
}
diff --git a/vendor/sabre/xml/lib/Serializer/functions.php b/vendor/sabre/xml/lib/Serializer/functions.php
index 8d0330558..23f22d4c8 100644
--- a/vendor/sabre/xml/lib/Serializer/functions.php
+++ b/vendor/sabre/xml/lib/Serializer/functions.php
@@ -4,7 +4,6 @@ declare(strict_types=1);
namespace Sabre\Xml\Serializer;
-use InvalidArgumentException;
use Sabre\Xml\Writer;
use Sabre\Xml\XmlSerializable;
@@ -197,12 +196,12 @@ function standardSerializer(Writer $writer, $value)
$writer->write($item);
$writer->endElement();
} else {
- throw new InvalidArgumentException('The writer does not know how to serialize arrays with keys of type: '.gettype($name));
+ throw new \InvalidArgumentException('The writer does not know how to serialize arrays with keys of type: '.gettype($name));
}
}
} elseif (is_object($value)) {
- throw new InvalidArgumentException('The writer cannot serialize objects of class: '.get_class($value));
+ throw new \InvalidArgumentException('The writer cannot serialize objects of class: '.get_class($value));
} elseif (!is_null($value)) {
- throw new InvalidArgumentException('The writer cannot serialize values of type: '.gettype($value));
+ throw new \InvalidArgumentException('The writer cannot serialize values of type: '.gettype($value));
}
}
diff --git a/vendor/sabre/xml/lib/Service.php b/vendor/sabre/xml/lib/Service.php
index a8e34d254..6e522630e 100644
--- a/vendor/sabre/xml/lib/Service.php
+++ b/vendor/sabre/xml/lib/Service.php
@@ -105,16 +105,23 @@ class Service
*
* @param string|resource $input
*
- * @throws ParseException
- *
* @return array|object|string
+ *
+ * @throws ParseException
*/
- public function parse($input, string $contextUri = null, string &$rootElementName = null)
+ public function parse($input, ?string $contextUri = null, ?string &$rootElementName = null)
{
- if (is_resource($input)) {
+ if (!is_string($input)) {
// Unfortunately the XMLReader doesn't support streams. When it
// does, we can optimize this.
- $input = (string) stream_get_contents($input);
+ if (is_resource($input)) {
+ $input = (string) stream_get_contents($input);
+ } else {
+ // Input is not a string and not a resource.
+ // Therefore, it has to be a closed resource.
+ // Effectively empty input has been passed in.
+ $input = '';
+ }
}
// If input is empty, then it's safe to throw an exception
@@ -149,16 +156,23 @@ class Service
* @param string|string[] $rootElementName
* @param string|resource $input
*
- * @throws ParseException
- *
* @return array|object|string
+ *
+ * @throws ParseException
*/
- public function expect($rootElementName, $input, string $contextUri = null)
+ public function expect($rootElementName, $input, ?string $contextUri = null)
{
- if (is_resource($input)) {
+ if (!is_string($input)) {
// Unfortunately the XMLReader doesn't support streams. When it
// does, we can optimize this.
- $input = (string) stream_get_contents($input);
+ if (is_resource($input)) {
+ $input = (string) stream_get_contents($input);
+ } else {
+ // Input is not a string and not a resource.
+ // Therefore, it has to be a closed resource.
+ // Effectively empty input has been passed in.
+ $input = '';
+ }
}
// If input is empty, then it's safe to throw an exception
@@ -204,7 +218,7 @@ class Service
*
* @return string
*/
- public function write(string $rootElementName, $value, string $contextUri = null)
+ public function write(string $rootElementName, $value, ?string $contextUri = null)
{
$w = $this->getWriter();
$w->openMemory();
@@ -266,7 +280,7 @@ class Service
*
* @throws \InvalidArgumentException
*/
- public function writeValueObject($object, string $contextUri = null)
+ public function writeValueObject($object, ?string $contextUri = null)
{
if (!isset($this->valueObjectMap[get_class($object)])) {
throw new \InvalidArgumentException('"'.get_class($object).'" is not a registered value object class. Register your class with mapValueObject.');
diff --git a/vendor/sabre/xml/lib/Version.php b/vendor/sabre/xml/lib/Version.php
index 1144bf085..c2da842ec 100644
--- a/vendor/sabre/xml/lib/Version.php
+++ b/vendor/sabre/xml/lib/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- const VERSION = '2.2.5';
+ public const VERSION = '2.2.11';
}
diff --git a/vendor/sabre/xml/lib/Writer.php b/vendor/sabre/xml/lib/Writer.php
index e3238a7ed..76989612e 100644
--- a/vendor/sabre/xml/lib/Writer.php
+++ b/vendor/sabre/xml/lib/Writer.php
@@ -30,7 +30,7 @@ use XMLWriter;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Writer extends XMLWriter
+class Writer extends \XMLWriter
{
use ContextStackTrait;
@@ -93,8 +93,6 @@ class Writer extends XMLWriter
* ]
* ]
* ]
- *
- * @param mixed $value
*/
public function write($value)
{
@@ -151,7 +149,7 @@ class Writer extends XMLWriter
if (!$this->namespacesWritten) {
foreach ($this->namespaceMap as $namespace => $prefix) {
- $this->writeAttribute(($prefix ? 'xmlns:'.$prefix : 'xmlns'), $namespace);
+ $this->writeAttribute($prefix ? 'xmlns:'.$prefix : 'xmlns', $namespace);
}
$this->namespacesWritten = true;
}
diff --git a/vendor/sabre/xml/lib/XmlDeserializable.php b/vendor/sabre/xml/lib/XmlDeserializable.php
index 83f33db1e..0a5720334 100644
--- a/vendor/sabre/xml/lib/XmlDeserializable.php
+++ b/vendor/sabre/xml/lib/XmlDeserializable.php
@@ -31,8 +31,6 @@ interface XmlDeserializable
*
* $reader->parseInnerTree() will parse the entire sub-tree, and advance to
* the next element.
- *
- * @return mixed
*/
public static function xmlDeserialize(Reader $reader);
}
diff --git a/vendor/scssphp/scssphp/src/Block/DirectiveBlock.php b/vendor/scssphp/scssphp/src/Block/DirectiveBlock.php
index b1d3d1a81..22b346e9b 100644
--- a/vendor/scssphp/scssphp/src/Block/DirectiveBlock.php
+++ b/vendor/scssphp/scssphp/src/Block/DirectiveBlock.php
@@ -13,6 +13,7 @@
namespace ScssPhp\ScssPhp\Block;
use ScssPhp\ScssPhp\Block;
+use ScssPhp\ScssPhp\Node\Number;
use ScssPhp\ScssPhp\Type;
/**
@@ -26,7 +27,7 @@ class DirectiveBlock extends Block
public $name;
/**
- * @var string|array|null
+ * @var array|Number|null
*/
public $value;
diff --git a/vendor/scssphp/scssphp/src/Block/EachBlock.php b/vendor/scssphp/scssphp/src/Block/EachBlock.php
index b3289579d..1217994ea 100644
--- a/vendor/scssphp/scssphp/src/Block/EachBlock.php
+++ b/vendor/scssphp/scssphp/src/Block/EachBlock.php
@@ -13,6 +13,7 @@
namespace ScssPhp\ScssPhp\Block;
use ScssPhp\ScssPhp\Block;
+use ScssPhp\ScssPhp\Node\Number;
use ScssPhp\ScssPhp\Type;
/**
@@ -26,7 +27,7 @@ class EachBlock extends Block
public $vars = [];
/**
- * @var array
+ * @var array|Number
*/
public $list;
diff --git a/vendor/scssphp/scssphp/src/Block/ElseifBlock.php b/vendor/scssphp/scssphp/src/Block/ElseifBlock.php
index 4622bca79..f732c2d70 100644
--- a/vendor/scssphp/scssphp/src/Block/ElseifBlock.php
+++ b/vendor/scssphp/scssphp/src/Block/ElseifBlock.php
@@ -13,6 +13,7 @@
namespace ScssPhp\ScssPhp\Block;
use ScssPhp\ScssPhp\Block;
+use ScssPhp\ScssPhp\Node\Number;
use ScssPhp\ScssPhp\Type;
/**
@@ -21,7 +22,7 @@ use ScssPhp\ScssPhp\Type;
class ElseifBlock extends Block
{
/**
- * @var array
+ * @var array|Number
*/
public $cond;
diff --git a/vendor/scssphp/scssphp/src/Block/ForBlock.php b/vendor/scssphp/scssphp/src/Block/ForBlock.php
index a9cf6733b..962944111 100644
--- a/vendor/scssphp/scssphp/src/Block/ForBlock.php
+++ b/vendor/scssphp/scssphp/src/Block/ForBlock.php
@@ -13,6 +13,7 @@
namespace ScssPhp\ScssPhp\Block;
use ScssPhp\ScssPhp\Block;
+use ScssPhp\ScssPhp\Node\Number;
use ScssPhp\ScssPhp\Type;
/**
@@ -26,12 +27,12 @@ class ForBlock extends Block
public $var;
/**
- * @var array
+ * @var array|Number
*/
public $start;
/**
- * @var array
+ * @var array|Number
*/
public $end;
diff --git a/vendor/scssphp/scssphp/src/Block/IfBlock.php b/vendor/scssphp/scssphp/src/Block/IfBlock.php
index 9f21bf88a..659c7c274 100644
--- a/vendor/scssphp/scssphp/src/Block/IfBlock.php
+++ b/vendor/scssphp/scssphp/src/Block/IfBlock.php
@@ -13,6 +13,7 @@
namespace ScssPhp\ScssPhp\Block;
use ScssPhp\ScssPhp\Block;
+use ScssPhp\ScssPhp\Node\Number;
use ScssPhp\ScssPhp\Type;
/**
@@ -21,7 +22,7 @@ use ScssPhp\ScssPhp\Type;
class IfBlock extends Block
{
/**
- * @var array
+ * @var array|Number
*/
public $cond;
diff --git a/vendor/scssphp/scssphp/src/Block/MediaBlock.php b/vendor/scssphp/scssphp/src/Block/MediaBlock.php
index c49ee1b2b..ab975c74e 100644
--- a/vendor/scssphp/scssphp/src/Block/MediaBlock.php
+++ b/vendor/scssphp/scssphp/src/Block/MediaBlock.php
@@ -13,6 +13,7 @@
namespace ScssPhp\ScssPhp\Block;
use ScssPhp\ScssPhp\Block;
+use ScssPhp\ScssPhp\Node\Number;
use ScssPhp\ScssPhp\Type;
/**
@@ -21,7 +22,7 @@ use ScssPhp\ScssPhp\Type;
class MediaBlock extends Block
{
/**
- * @var string|array|null
+ * @var string|array|Number|null
*/
public $value;
diff --git a/vendor/scssphp/scssphp/src/Compiler.php b/vendor/scssphp/scssphp/src/Compiler.php
index d4e7c6896..d654ee6eb 100644
--- a/vendor/scssphp/scssphp/src/Compiler.php
+++ b/vendor/scssphp/scssphp/src/Compiler.php
@@ -140,13 +140,28 @@ class Compiler
/** @deprecated */
public static $Infinity = [Type::T_KEYWORD, 'Infinity'];
public static $null = [Type::T_NULL];
+ /**
+ * @internal
+ */
public static $nullString = [Type::T_STRING, '', []];
+ /**
+ * @internal
+ */
public static $defaultValue = [Type::T_KEYWORD, ''];
+ /**
+ * @internal
+ */
public static $selfSelector = [Type::T_SELF];
public static $emptyList = [Type::T_LIST, '', []];
public static $emptyMap = [Type::T_MAP, [], []];
public static $emptyString = [Type::T_STRING, '"', []];
+ /**
+ * @internal
+ */
public static $with = [Type::T_KEYWORD, 'with'];
+ /**
+ * @internal
+ */
public static $without = [Type::T_KEYWORD, 'without'];
private static $emptyArgumentList = [Type::T_LIST, '', [], []];
@@ -1656,6 +1671,7 @@ class Compiler
$parser = $this->parserFactory(__METHOD__);
if ($parser->parseValue($buffer, $reParsedWith)) {
+ \assert(\is_array($reParsedWith));
$withCondition = $reParsedWith;
}
}
@@ -5702,10 +5718,36 @@ EOL;
@trigger_error('Omitting the argument declaration when registering custom function is deprecated and won\'t be supported in ScssPhp 2.0 anymore.', E_USER_DEPRECATED);
}
+ if ($this->reflectCallable($callback)->getNumberOfRequiredParameters() > 1) {
+ @trigger_error('The second argument passed to the callback of custom functions is deprecated and won\'t be supported in ScssPhp 2.0 anymore. Register a callback accepting only 1 parameter instead.', E_USER_DEPRECATED);
+ }
+
$this->userFunctions[$this->normalizeName($name)] = [$callback, $argumentDeclaration];
}
/**
+ * @return \ReflectionFunctionAbstract
+ */
+ private function reflectCallable(callable $c)
+ {
+ if (\is_object($c) && !$c instanceof \Closure) {
+ $c = [$c, '__invoke'];
+ }
+
+ if (\is_string($c) && false !== strpos($c, '::')) {
+ $c = explode('::', $c, 2);
+ }
+
+ if (\is_array($c)) {
+ return new \ReflectionMethod($c[0], $c[1]);
+ }
+
+ \assert(\is_string($c) || $c instanceof \Closure);
+
+ return new \ReflectionFunction($c);
+ }
+
+ /**
* Unregister function
*
* @api
diff --git a/vendor/scssphp/scssphp/src/Parser.php b/vendor/scssphp/scssphp/src/Parser.php
index 2666a263c..e7cb2e8c1 100644
--- a/vendor/scssphp/scssphp/src/Parser.php
+++ b/vendor/scssphp/scssphp/src/Parser.php
@@ -310,8 +310,9 @@ class Parser
*
* @api
*
- * @param string $buffer
- * @param string|array $out
+ * @param string $buffer
+ * @param mixed $out
+ * @param-out array|Number $out
*
* @return bool
*/
@@ -345,9 +346,9 @@ class Parser
*
* @api
*
- * @param string $buffer
- * @param string|array $out
- * @param bool $shouldValidate
+ * @param string $buffer
+ * @param array $out
+ * @param bool $shouldValidate
*
* @return bool
*/
@@ -1255,10 +1256,10 @@ class Parser
/**
* Assert a parsed part is plain CSS Valid
*
- * @param array|false $parsed
+ * @param array|Number|false $parsed
* @param int $startPos
*
- * @return array
+ * @return array|Number
*
* @throws ParserException
*/
@@ -1288,10 +1289,10 @@ class Parser
/**
* Check a parsed element is plain CSS Valid
*
- * @param array $parsed
+ * @param array|Number|string $parsed
* @param bool $allowExpression
*
- * @return array|false
+ * @return ($parsed is string ? string : ($parsed is Number ? Number : array|false))
*/
protected function isPlainCssValidElement($parsed, $allowExpression = false)
{
@@ -1300,6 +1301,10 @@ class Parser
return $parsed;
}
+ if ($parsed instanceof Number) {
+ return $parsed;
+ }
+
if (
\in_array($parsed[0], [Type::T_FUNCTION, Type::T_FUNCTION_CALL]) &&
!\in_array($parsed[1], [
@@ -2094,8 +2099,9 @@ class Parser
/**
* Parse directive value list that considers $vars as keyword
*
- * @param array $out
+ * @param mixed $out
* @param string|false $endChar
+ * @param-out array|Number $out
*
* @return bool
*
@@ -2158,7 +2164,8 @@ class Parser
/**
* Parse comma separated value list
*
- * @param array $out
+ * @param mixed $out
+ * @param-out array|Number $out
*
* @return bool
*/
@@ -2176,10 +2183,11 @@ class Parser
* Parse a function call, where externals () are part of the call
* and not of the value list
*
- * @param array $out
+ * @param mixed $out
* @param bool $mandatoryEnclos
* @param null|string $charAfter
* @param null|bool $eatWhiteSp
+ * @param-out array|Number $out
*
* @return bool
*/
@@ -2215,7 +2223,8 @@ class Parser
/**
* Parse space separated value list
*
- * @param array $out
+ * @param mixed $out
+ * @param-out array|Number $out
*
* @return bool
*/
@@ -2227,10 +2236,11 @@ class Parser
/**
* Parse generic list
*
- * @param array $out
+ * @param mixed $out
* @param string $parseItem The name of the method used to parse items
* @param string $delim
* @param bool $flatten
+ * @param-out ($flatten is false ? array : array|Number) $out
*
* @return bool
*/
@@ -2334,9 +2344,10 @@ class Parser
/**
* Parse expression
*
- * @param array $out
+ * @param mixed $out
* @param bool $listOnly
* @param bool $lookForExp
+ * @param-out array|Number $out
*
* @return bool
*
@@ -2401,10 +2412,11 @@ class Parser
/**
* Parse expression specifically checking for lists in parenthesis or brackets
*
- * @param array $out
+ * @param mixed $out
* @param int $s
* @param string $closingParen
* @param string[] $allowedTypes
+ * @param-out array|Number $out
*
* @return bool
*
@@ -2463,10 +2475,10 @@ class Parser
/**
* Parse left-hand side of subexpression
*
- * @param array $lhs
- * @param int $minP
+ * @param array|Number $lhs
+ * @param int $minP
*
- * @return array
+ * @return array|Number
*/
protected function expHelper($lhs, $minP)
{
@@ -2517,7 +2529,8 @@ class Parser
/**
* Parse value
*
- * @param array $out
+ * @param mixed $out
+ * @param-out array|Number $out
*
* @return bool
*/
@@ -2725,7 +2738,8 @@ class Parser
/**
* Parse parenthesized value
*
- * @param array $out
+ * @param mixed $out
+ * @param-out array|Number $out
*
* @return bool
*/
@@ -2797,7 +2811,8 @@ class Parser
* Parse function call
*
* @param string $name
- * @param array $func
+ * @param mixed $func
+ * @param-out array $func
*
* @return bool
*/
@@ -2900,7 +2915,8 @@ class Parser
/**
* Parse mixin/function definition argument list
*
- * @param array $out
+ * @param mixed $out
+ * @param-out list<array{string, array|Number|null, bool}> $out
*
* @return bool
*/
@@ -2962,7 +2978,8 @@ class Parser
/**
* Parse map
*
- * @param array $out
+ * @param mixed $out
+ * @param-out array $out
*
* @return bool
*/
@@ -3004,7 +3021,8 @@ class Parser
/**
* Parse color
*
- * @param array $out
+ * @param mixed $out
+ * @param-out array $out
*
* @return bool
*/
@@ -3030,7 +3048,8 @@ class Parser
/**
* Parse number with unit
*
- * @param array $unit
+ * @param mixed $unit
+ * @param-out Number $unit
*
* @return bool
*/
@@ -3236,11 +3255,12 @@ class Parser
* Parse an unbounded string stopped by $end
*
* @param string $end
- * @param array $out
+ * @param mixed $out
* @param string $nestOpen
* @param string $nestClose
* @param bool $rtrim
* @param string $disallow
+ * @param-out array $out
*
* @return bool
*/
@@ -3317,8 +3337,9 @@ class Parser
/**
* Parser interpolation
*
- * @param string|array $out
- * @param bool $lookWhite save information about whitespace before and after
+ * @param mixed $out
+ * @param bool $lookWhite save information about whitespace before and after
+ * @param-out array $out
*
* @return bool
*/
@@ -3852,7 +3873,8 @@ class Parser
/**
* Parse a variable
*
- * @param array $out
+ * @param mixed $out
+ * @param-out array{Type::*, string} $out
*
* @return bool
*/
@@ -3881,9 +3903,10 @@ class Parser
/**
* Parse a keyword
*
- * @param string $word
- * @param bool $eatWhitespace
- * @param bool $inSelector
+ * @param mixed $word
+ * @param bool $eatWhitespace
+ * @param bool $inSelector
+ * @param-out string $word
*
* @return bool
*/
@@ -3999,7 +4022,8 @@ class Parser
/**
* Parse a url
*
- * @param array $out
+ * @param mixed $out
+ * @param-out array $out
*
* @return bool
*/
@@ -4009,10 +4033,10 @@ class Parser
$s = $this->count;
if (
- ($this->string($out) || $this->spaceList($out)) &&
+ ($this->string($inner) || $this->spaceList($inner)) &&
$this->matchChar(')')
) {
- $out = [Type::T_STRING, '', ['url(', $out, ')']];
+ $out = [Type::T_STRING, '', ['url(', $inner, ')']];
return true;
}
@@ -4055,7 +4079,7 @@ class Parser
/**
* Strip assignment flag from the list
*
- * @param array $value
+ * @param array|Number $value
*
* @return string[]
*/
diff --git a/vendor/scssphp/scssphp/src/Type.php b/vendor/scssphp/scssphp/src/Type.php
index d43088785..2f8ab6506 100644
--- a/vendor/scssphp/scssphp/src/Type.php
+++ b/vendor/scssphp/scssphp/src/Type.php
@@ -95,6 +95,9 @@ class Type
* @internal
*/
const T_FOR = 'for';
+ /**
+ * @internal
+ */
const T_FUNCTION = 'function';
/**
* @internal
diff --git a/vendor/scssphp/scssphp/src/Version.php b/vendor/scssphp/scssphp/src/Version.php
index 89bd59526..45fc9835c 100644
--- a/vendor/scssphp/scssphp/src/Version.php
+++ b/vendor/scssphp/scssphp/src/Version.php
@@ -19,5 +19,5 @@ namespace ScssPhp\ScssPhp;
*/
class Version
{
- const VERSION = '1.12.1';
+ const VERSION = '1.13.0';
}
diff --git a/vendor/simplepie/simplepie/.php-cs-fixer.dist.php b/vendor/simplepie/simplepie/.php-cs-fixer.dist.php
index d26f7c6c6..ed111568f 100644
--- a/vendor/simplepie/simplepie/.php-cs-fixer.dist.php
+++ b/vendor/simplepie/simplepie/.php-cs-fixer.dist.php
@@ -14,6 +14,8 @@ return (new PhpCsFixer\Config())
'@PHP71Migration:risky' => true,
'void_return' => false,
'@PHPUnit84Migration:risky' => true,
+ 'declare_strict_types' => false,
])
+ ->setRiskyAllowed(true)
->setFinder($finder)
;
diff --git a/vendor/simplepie/simplepie/CHANGELOG.md b/vendor/simplepie/simplepie/CHANGELOG.md
index dba92bbf7..afc58588b 100644
--- a/vendor/simplepie/simplepie/CHANGELOG.md
+++ b/vendor/simplepie/simplepie/CHANGELOG.md
@@ -5,7 +5,22 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [Unreleased](https://github.com/simplepie/simplepie/compare/1.8.0...master)
+## [Unreleased](https://github.com/simplepie/simplepie/compare/1.8.1...one-dot-eight)
+
+Nothing yet.
+
+## [1.8.1](https://github.com/simplepie/simplepie/compare/1.8.0...1.8.1) - 2024-10-01
+
+### Changed
+
+- Disable Composer lockfile by @jrfnl in [#887](https://github.com/simplepie/simplepie/pull/887), backported in [#895](https://github.com/simplepie/simplepie/pull/895)
+
+### Fixed
+
+- Fixes for PHP 8.4 deprecations by @Girgias, @jrfnl and @jtojnar, backported in [#875](https://github.com/simplepie/simplepie/pull/875)
+- Fix locator with website missing `Content-Type` header by @jtojnar in [#891](https://github.com/simplepie/simplepie/pull/891)
+- Fix `encode` argument of `SimplePie::strip_htmltags()` @jtojnar in [#894](https://github.com/simplepie/simplepie/pull/894), backported in [#898](https://github.com/simplepie/simplepie/pull/898)
+- Reverted `strict_types` by @jtojnar in [#842](https://github.com/simplepie/simplepie/pull/842)
## [1.8.0](https://github.com/simplepie/simplepie/compare/1.7.0...1.8.0) - 2023-01-20
diff --git a/vendor/simplepie/simplepie/README.markdown b/vendor/simplepie/simplepie/README.markdown
index 5500f03c2..ee8d08672 100644
--- a/vendor/simplepie/simplepie/README.markdown
+++ b/vendor/simplepie/simplepie/README.markdown
@@ -18,6 +18,22 @@ Requirements
* PCRE support
+PSR-16: Caching support
+--------------
+
+Since SimplePie 1.8.0 you can use the [PSR-16](https://www.php-fig.org/psr/psr-16/) cache from
+[Symfony](https://symfony.com/doc/current/components/cache.html)
+or [every other implementation](https://packagist.org/providers/psr/simple-cache-implementation).
+
+```php
+$simplepie = new \SimplePie\SimplePie();
+$simplepie->set_cache(
+ new \Symfony\Component\Cache\Psr16Cache(
+ new \Symfony\Component\Cache\Adapter\FilesystemAdapter()
+ ),
+);
+```
+
What comes in the package?
--------------------------
1. `src/` - SimplePie classes for use with the autoloader
diff --git a/vendor/simplepie/simplepie/autoloader.php b/vendor/simplepie/simplepie/autoloader.php
index a19c25476..b1635ff15 100644
--- a/vendor/simplepie/simplepie/autoloader.php
+++ b/vendor/simplepie/simplepie/autoloader.php
@@ -88,7 +88,7 @@ spl_autoload_register(array(new SimplePie_Autoloader(), 'autoload'));
if (!class_exists('SimplePie'))
{
- trigger_error('Autoloader not registered properly', E_USER_ERROR);
+ exit('Autoloader not registered properly');
}
/**
diff --git a/vendor/simplepie/simplepie/composer.json b/vendor/simplepie/simplepie/composer.json
index cfede2b53..f0a800c80 100644
--- a/vendor/simplepie/simplepie/composer.json
+++ b/vendor/simplepie/simplepie/composer.json
@@ -57,6 +57,7 @@
},
"config": {
"bin-dir": "bin",
+ "lock": false,
"sort-packages": true
},
"scripts": {
diff --git a/vendor/simplepie/simplepie/library/SimplePie.php b/vendor/simplepie/simplepie/library/SimplePie.php
index 8a2b334e1..14f5380c2 100755
--- a/vendor/simplepie/simplepie/library/SimplePie.php
+++ b/vendor/simplepie/simplepie/library/SimplePie.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Author.php b/vendor/simplepie/simplepie/library/SimplePie/Author.php
index 3b3ab50e6..b4b7aaf8d 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Author.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Author.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache.php b/vendor/simplepie/simplepie/library/SimplePie/Cache.php
index 9f2883ed6..6e453d510 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php
index 2988ce7c8..f59928bb8 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php
index 4fb8d2c65..0393df331 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php
index cd5646f20..7c224ed38 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php
index a5e088f00..3c0cbc653 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
index aef5b953a..ccf68e592 100755
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php
index 01ea48cbb..6215e952b 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php
index 7d68c9795..6a96c1e29 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php
@@ -1,7 +1,5 @@
<?php
-declare(strict_types=1);
-
/**
* SimplePie Redis Cache Extension
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Caption.php b/vendor/simplepie/simplepie/library/SimplePie/Caption.php
index 6e96e11b2..1f3a475c8 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Caption.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Caption.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Category.php b/vendor/simplepie/simplepie/library/SimplePie/Category.php
index 7bdf595df..fad39f069 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Category.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Category.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php b/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php
index 016755753..dc30fc8c8 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Copyright.php b/vendor/simplepie/simplepie/library/SimplePie/Copyright.php
index fd50d702c..dcb2d4a83 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Copyright.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Copyright.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Core.php b/vendor/simplepie/simplepie/library/SimplePie/Core.php
index 7f3313345..5abf38a0a 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Core.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Core.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Credit.php b/vendor/simplepie/simplepie/library/SimplePie/Credit.php
index 14a197224..b88c3f484 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Credit.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Credit.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php b/vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php
index 496c7bf52..dba7688ea 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php b/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php
index a0e057511..51e75d3d5 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Exception.php b/vendor/simplepie/simplepie/library/SimplePie/Exception.php
index 218a8e3c4..5a2a600cb 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Exception.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Exception.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/File.php b/vendor/simplepie/simplepie/library/SimplePie/File.php
index 99f14fa6b..803080dd9 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/File.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/File.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
index 65f6c9f6d..d70131591 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/IRI.php b/vendor/simplepie/simplepie/library/SimplePie/IRI.php
index 561cfca06..b947d63bf 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/IRI.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/IRI.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Item.php b/vendor/simplepie/simplepie/library/SimplePie/Item.php
index 13c51c3b7..b0d7820b9 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Item.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Item.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Locator.php b/vendor/simplepie/simplepie/library/SimplePie/Locator.php
index 77f83d6af..e975851e4 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Locator.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Locator.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Misc.php b/vendor/simplepie/simplepie/library/SimplePie/Misc.php
index d357b040c..5f33c3406 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Misc.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Misc.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php b/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php
index 8d125e3a0..f8b402343 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php b/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php
index e55c2f468..da1033b0c 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/Parser.php
index 1a1ff9ab4..e281e107e 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Parser.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Parser.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Rating.php b/vendor/simplepie/simplepie/library/SimplePie/Rating.php
index c096850c4..00d99492f 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Rating.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Rating.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Registry.php b/vendor/simplepie/simplepie/library/SimplePie/Registry.php
index eaf32c05a..6788c0614 100755
--- a/vendor/simplepie/simplepie/library/SimplePie/Registry.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Registry.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Restriction.php b/vendor/simplepie/simplepie/library/SimplePie/Restriction.php
index 28a1ebfb2..566dee29c 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Restriction.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Restriction.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php b/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php
index 36c59ebce..849edb472 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Source.php b/vendor/simplepie/simplepie/library/SimplePie/Source.php
index d2205e5dd..24b0f7c46 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Source.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Source.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php
index 3bedaabe2..7ccc73178 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php b/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php
index dea37ed47..c428194b7 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Author.php b/vendor/simplepie/simplepie/src/Author.php
index f82a021e2..2cb7ad9ed 100644
--- a/vendor/simplepie/simplepie/src/Author.php
+++ b/vendor/simplepie/simplepie/src/Author.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Cache.php b/vendor/simplepie/simplepie/src/Cache.php
index 740091f08..8ed7038b4 100644
--- a/vendor/simplepie/simplepie/src/Cache.php
+++ b/vendor/simplepie/simplepie/src/Cache.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Cache/Base.php b/vendor/simplepie/simplepie/src/Cache/Base.php
index 134d097fc..674fe8c10 100644
--- a/vendor/simplepie/simplepie/src/Cache/Base.php
+++ b/vendor/simplepie/simplepie/src/Cache/Base.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Cache/BaseDataCache.php b/vendor/simplepie/simplepie/src/Cache/BaseDataCache.php
index b8b239195..44dbd66d4 100644
--- a/vendor/simplepie/simplepie/src/Cache/BaseDataCache.php
+++ b/vendor/simplepie/simplepie/src/Cache/BaseDataCache.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -86,12 +85,12 @@ final class BaseDataCache implements DataCache
{
$data = $this->cache->load();
- if (! is_array($data)) {
+ if (!is_array($data)) {
return $default;
}
// ignore data if internal cache expiration time is not set
- if (! array_key_exists('__cache_expiration_time', $data)) {
+ if (!array_key_exists('__cache_expiration_time', $data)) {
return $default;
}
diff --git a/vendor/simplepie/simplepie/src/Cache/DB.php b/vendor/simplepie/simplepie/src/Cache/DB.php
index 7994e3210..a5357b26d 100644
--- a/vendor/simplepie/simplepie/src/Cache/DB.php
+++ b/vendor/simplepie/simplepie/src/Cache/DB.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -80,13 +79,13 @@ abstract class DB implements Base
}
if (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0])) {
- $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0];
+ $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0];
} elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0])) {
- $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0];
+ $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0];
} elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0])) {
- $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0];
+ $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0];
} elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0])) {
- $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0];
+ $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0];
} else {
$channel = null;
}
diff --git a/vendor/simplepie/simplepie/src/Cache/DataCache.php b/vendor/simplepie/simplepie/src/Cache/DataCache.php
index bf3aebe90..e75413243 100644
--- a/vendor/simplepie/simplepie/src/Cache/DataCache.php
+++ b/vendor/simplepie/simplepie/src/Cache/DataCache.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Cache/File.php b/vendor/simplepie/simplepie/src/Cache/File.php
index 248d41a8a..0ffcdf9e2 100644
--- a/vendor/simplepie/simplepie/src/Cache/File.php
+++ b/vendor/simplepie/simplepie/src/Cache/File.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Cache/Memcache.php b/vendor/simplepie/simplepie/src/Cache/Memcache.php
index aeabd51b3..d20f9bfcf 100644
--- a/vendor/simplepie/simplepie/src/Cache/Memcache.php
+++ b/vendor/simplepie/simplepie/src/Cache/Memcache.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Cache/Memcached.php b/vendor/simplepie/simplepie/src/Cache/Memcached.php
index 4aa3701b5..8a8d31e7b 100644
--- a/vendor/simplepie/simplepie/src/Cache/Memcached.php
+++ b/vendor/simplepie/simplepie/src/Cache/Memcached.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Cache/MySQL.php b/vendor/simplepie/simplepie/src/Cache/MySQL.php
index 62abb12cd..1d7986bfc 100644
--- a/vendor/simplepie/simplepie/src/Cache/MySQL.php
+++ b/vendor/simplepie/simplepie/src/Cache/MySQL.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -290,13 +289,13 @@ class MySQL extends DB
if ($items !== 0) {
if (isset($data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0])) {
- $feed =& $data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0];
+ $feed = &$data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0];
} elseif (isset($data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0])) {
- $feed =& $data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0];
+ $feed = &$data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0];
} elseif (isset($data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0])) {
- $feed =& $data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0];
+ $feed = &$data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0];
} elseif (isset($data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0])) {
- $feed =& $data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0];
+ $feed = &$data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0];
} else {
$feed = null;
}
diff --git a/vendor/simplepie/simplepie/src/Cache/Psr16.php b/vendor/simplepie/simplepie/src/Cache/Psr16.php
index 710996b4d..15fe6db92 100644
--- a/vendor/simplepie/simplepie/src/Cache/Psr16.php
+++ b/vendor/simplepie/simplepie/src/Cache/Psr16.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -94,7 +93,7 @@ final class Psr16 implements DataCache
{
$data = $this->cache->get($key, $default);
- if (! is_array($data) || $data === $default) {
+ if (!is_array($data) || $data === $default) {
return $default;
}
diff --git a/vendor/simplepie/simplepie/src/Cache/Redis.php b/vendor/simplepie/simplepie/src/Cache/Redis.php
index 0effccadb..5997668c0 100644
--- a/vendor/simplepie/simplepie/src/Cache/Redis.php
+++ b/vendor/simplepie/simplepie/src/Cache/Redis.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Caption.php b/vendor/simplepie/simplepie/src/Caption.php
index 467183239..ef72c0b7a 100644
--- a/vendor/simplepie/simplepie/src/Caption.php
+++ b/vendor/simplepie/simplepie/src/Caption.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Category.php b/vendor/simplepie/simplepie/src/Category.php
index b49b4fd96..d7da8e683 100644
--- a/vendor/simplepie/simplepie/src/Category.php
+++ b/vendor/simplepie/simplepie/src/Category.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Content/Type/Sniffer.php b/vendor/simplepie/simplepie/src/Content/Type/Sniffer.php
index 33c27b64b..8c7e089ac 100644
--- a/vendor/simplepie/simplepie/src/Content/Type/Sniffer.php
+++ b/vendor/simplepie/simplepie/src/Content/Type/Sniffer.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Copyright.php b/vendor/simplepie/simplepie/src/Copyright.php
index 878e4ffa4..150362f01 100644
--- a/vendor/simplepie/simplepie/src/Copyright.php
+++ b/vendor/simplepie/simplepie/src/Copyright.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Credit.php b/vendor/simplepie/simplepie/src/Credit.php
index 6b1402266..947f231e8 100644
--- a/vendor/simplepie/simplepie/src/Credit.php
+++ b/vendor/simplepie/simplepie/src/Credit.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Enclosure.php b/vendor/simplepie/simplepie/src/Enclosure.php
index 065577653..e7dcb2527 100644
--- a/vendor/simplepie/simplepie/src/Enclosure.php
+++ b/vendor/simplepie/simplepie/src/Enclosure.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -725,7 +724,7 @@ class Enclosure
{
$length = $this->get_length();
if ($length !== null) {
- return round($length/1048576, 2);
+ return round($length / 1048576, 2);
}
return null;
@@ -812,7 +811,7 @@ class Enclosure
* @param array|string $options See first parameter to {@see embed}
* @return string HTML string to output
*/
- public function native_embed($options='')
+ public function native_embed($options = '')
{
return $this->embed($options, true);
}
@@ -943,9 +942,9 @@ class Enclosure
if ($height === 'auto') {
$width = 480;
} elseif ($widescreen) {
- $width = round((intval($height)/9)*16);
+ $width = round((intval($height) / 9) * 16);
} else {
- $width = round((intval($height)/3)*4);
+ $width = round((intval($height) / 3) * 4);
}
} else {
$width = '100%';
@@ -963,9 +962,9 @@ class Enclosure
$height = 360;
}
} elseif ($widescreen) {
- $height = round((intval($width)/16)*9);
+ $height = round((intval($width) / 16) * 9);
} else {
- $height = round((intval($width)/4)*3);
+ $height = round((intval($width) / 4) * 3);
}
} else {
$height = 376;
@@ -1115,7 +1114,7 @@ class Enclosure
$type = 'audio/x-ms-wma';
break;
- // Video mime-types
+ // Video mime-types
case '3gp':
case '3gpp':
$type = 'video/3gpp';
@@ -1178,7 +1177,7 @@ class Enclosure
$type = 'video/x-ms-wvx';
break;
- // Flash mime-types
+ // Flash mime-types
case 'spl':
$type = 'application/futuresplash';
break;
diff --git a/vendor/simplepie/simplepie/src/Exception.php b/vendor/simplepie/simplepie/src/Exception.php
index a20681f55..ae67ae38c 100644
--- a/vendor/simplepie/simplepie/src/Exception.php
+++ b/vendor/simplepie/simplepie/src/Exception.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/File.php b/vendor/simplepie/simplepie/src/File.php
index bdbf56927..fac7aabc1 100644
--- a/vendor/simplepie/simplepie/src/File.php
+++ b/vendor/simplepie/simplepie/src/File.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Gzdecode.php b/vendor/simplepie/simplepie/src/Gzdecode.php
index 67cbfefe0..acb120126 100644
--- a/vendor/simplepie/simplepie/src/Gzdecode.php
+++ b/vendor/simplepie/simplepie/src/Gzdecode.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -182,7 +181,7 @@ class Gzdecode
*/
public function __set($name, $value)
{
- trigger_error("Cannot write property $name", E_USER_ERROR);
+ throw new Exception("Cannot write property $name");
}
/**
diff --git a/vendor/simplepie/simplepie/src/HTTP/Parser.php b/vendor/simplepie/simplepie/src/HTTP/Parser.php
index 15c46ebe8..524885a1a 100644
--- a/vendor/simplepie/simplepie/src/HTTP/Parser.php
+++ b/vendor/simplepie/simplepie/src/HTTP/Parser.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/IRI.php b/vendor/simplepie/simplepie/src/IRI.php
index ce4c2c211..dfd5eaa8a 100644
--- a/vendor/simplepie/simplepie/src/IRI.php
+++ b/vendor/simplepie/simplepie/src/IRI.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Item.php b/vendor/simplepie/simplepie/src/Item.php
index f25b50d04..3ec8f2f98 100644
--- a/vendor/simplepie/simplepie/src/Item.php
+++ b/vendor/simplepie/simplepie/src/Item.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -878,12 +877,12 @@ class Item implements RegistryAware
if ($this->registry->call(Misc::class, 'is_isegment_nz_nc', [$key])) {
if (isset($this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key])) {
$this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key]);
- $this->data['links'][$key] =& $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key];
+ $this->data['links'][$key] = &$this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key];
} else {
- $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+ $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] = &$this->data['links'][$key];
}
} elseif (substr($key, 0, 41) === \SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY) {
- $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+ $this->data['links'][substr($key, 41)] = &$this->data['links'][$key];
}
$this->data['links'][$key] = array_unique($this->data['links'][$key]);
}
diff --git a/vendor/simplepie/simplepie/src/Locator.php b/vendor/simplepie/simplepie/src/Locator.php
index 1dc005b47..e17b3a376 100644
--- a/vendor/simplepie/simplepie/src/Locator.php
+++ b/vendor/simplepie/simplepie/src/Locator.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Misc.php b/vendor/simplepie/simplepie/src/Misc.php
index 87d7f6e2c..cc5db8aea 100644
--- a/vendor/simplepie/simplepie/src/Misc.php
+++ b/vendor/simplepie/simplepie/src/Misc.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Net/IPv6.php b/vendor/simplepie/simplepie/src/Net/IPv6.php
index da25f8353..a68dc169a 100644
--- a/vendor/simplepie/simplepie/src/Net/IPv6.php
+++ b/vendor/simplepie/simplepie/src/Net/IPv6.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Parse/Date.php b/vendor/simplepie/simplepie/src/Parse/Date.php
index 4792bc5e6..3254cca3c 100644
--- a/vendor/simplepie/simplepie/src/Parse/Date.php
+++ b/vendor/simplepie/simplepie/src/Parse/Date.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Parser.php b/vendor/simplepie/simplepie/src/Parser.php
index 4987825e6..baf70d2bd 100644
--- a/vendor/simplepie/simplepie/src/Parser.php
+++ b/vendor/simplepie/simplepie/src/Parser.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -151,9 +150,8 @@ class Parser implements RegistryAware
$xml = xml_parser_create_ns($this->encoding, $this->separator);
xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1);
xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0);
- xml_set_object($xml, $this);
- xml_set_character_data_handler($xml, 'cdata');
- xml_set_element_handler($xml, 'tag_open', 'tag_close');
+ xml_set_character_data_handler($xml, [$this, 'cdata']);
+ xml_set_element_handler($xml, [$this, 'tag_open'], [$this, 'tag_close']);
// Parse!
$wrapper = @is_writable(sys_get_temp_dir()) ? 'php://temp' : 'php://memory';
@@ -303,8 +301,8 @@ class Parser implements RegistryAware
$this->data['data'] .= '>';
}
} else {
- $this->datas[] =& $this->data;
- $this->data =& $this->data['child'][end($this->namespace)][end($this->element)][];
+ $this->datas[] = &$this->data;
+ $this->data = &$this->data['child'][end($this->namespace)][end($this->element)][];
$this->data = ['data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang)];
if ((end($this->namespace) === \SimplePie\SimplePie::NAMESPACE_ATOM_03 && in_array(end($this->element), ['title', 'tagline', 'copyright', 'info', 'summary', 'content']) && isset($attribs['']['mode']) && $attribs['']['mode'] === 'xml')
|| (end($this->namespace) === \SimplePie\SimplePie::NAMESPACE_ATOM_10 && in_array(end($this->element), ['rights', 'subtitle', 'summary', 'info', 'title', 'content']) && isset($attribs['']['type']) && $attribs['']['type'] === 'xhtml')
@@ -334,7 +332,7 @@ class Parser implements RegistryAware
}
}
if ($this->current_xhtml_construct === -1) {
- $this->data =& $this->datas[count($this->datas) - 1];
+ $this->data = &$this->datas[count($this->datas) - 1];
array_pop($this->datas);
}
diff --git a/vendor/simplepie/simplepie/src/Rating.php b/vendor/simplepie/simplepie/src/Rating.php
index f4f303d99..24c27337f 100644
--- a/vendor/simplepie/simplepie/src/Rating.php
+++ b/vendor/simplepie/simplepie/src/Rating.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Registry.php b/vendor/simplepie/simplepie/src/Registry.php
index 8e2ea13e3..6040d8bf3 100644
--- a/vendor/simplepie/simplepie/src/Registry.php
+++ b/vendor/simplepie/simplepie/src/Registry.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -156,7 +155,7 @@ class Registry
$type = $this->legacyTypes[$type];
}
- if (! array_key_exists($type, $this->default)) {
+ if (!array_key_exists($type, $this->default)) {
return false;
}
@@ -197,7 +196,7 @@ class Registry
$type = $this->legacyTypes[$type];
}
- if (! array_key_exists($type, $this->default)) {
+ if (!array_key_exists($type, $this->default)) {
return null;
}
diff --git a/vendor/simplepie/simplepie/src/RegistryAware.php b/vendor/simplepie/simplepie/src/RegistryAware.php
index 9d60bdd0f..525d93140 100644
--- a/vendor/simplepie/simplepie/src/RegistryAware.php
+++ b/vendor/simplepie/simplepie/src/RegistryAware.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Restriction.php b/vendor/simplepie/simplepie/src/Restriction.php
index 42b456a1c..d3cae11f1 100644
--- a/vendor/simplepie/simplepie/src/Restriction.php
+++ b/vendor/simplepie/simplepie/src/Restriction.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/simplepie/simplepie/src/Sanitize.php b/vendor/simplepie/simplepie/src/Sanitize.php
index 7416c88e4..5c22d9c6f 100644
--- a/vendor/simplepie/simplepie/src/Sanitize.php
+++ b/vendor/simplepie/simplepie/src/Sanitize.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -133,7 +132,7 @@ class Sanitize implements RegistryAware
$this->registry = $registry;
}
- public function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie\Cache', DataCache $cache = null)
+ public function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie\Cache', ?DataCache $cache = null)
{
if (isset($enable_cache)) {
$this->enable_cache = (bool) $enable_cache;
@@ -143,7 +142,7 @@ class Sanitize implements RegistryAware
$this->cache_location = (string) $cache_location;
}
- if (! is_string($cache_name_function) && ! is_object($cache_name_function) && ! $cache_name_function instanceof NameFilter) {
+ if (!is_string($cache_name_function) && !is_object($cache_name_function) && !$cache_name_function instanceof NameFilter) {
throw new InvalidArgumentException(sprintf(
'%s(): Argument #3 ($cache_name_function) must be of type %s',
__METHOD__,
@@ -297,7 +296,7 @@ class Sanitize implements RegistryAware
foreach ($domains as $domain) {
$domain = trim($domain, ". \t\n\r\0\x0B");
$segments = array_reverse(explode('.', $domain));
- $node =& $this->https_domains;
+ $node = &$this->https_domains;
foreach ($segments as $segment) {//Build a tree
if ($node === true) {
break;
@@ -305,7 +304,7 @@ class Sanitize implements RegistryAware
if (!isset($node[$segment])) {
$node[$segment] = [];
}
- $node =& $node[$segment];
+ $node = &$node[$segment];
}
$node = true;
}
@@ -316,16 +315,12 @@ class Sanitize implements RegistryAware
*/
protected function is_https_domain($domain)
{
-
- // https://github.com/simplepie/simplepie/issues/852
- $domain = (string) $domain;
-
$domain = trim($domain, '. ');
$segments = array_reverse(explode('.', $domain));
- $node =& $this->https_domains;
+ $node = &$this->https_domains;
foreach ($segments as $segment) {//Explore the tree
if (isset($node[$segment])) {
- $node =& $node[$segment];
+ $node = &$node[$segment];
} else {
break;
}
diff --git a/vendor/simplepie/simplepie/src/SimplePie.php b/vendor/simplepie/simplepie/src/SimplePie.php
index 1dfa39fad..a0f6c17f4 100644
--- a/vendor/simplepie/simplepie/src/SimplePie.php
+++ b/vendor/simplepie/simplepie/src/SimplePie.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -71,7 +70,7 @@ class SimplePie
/**
* SimplePie Version
*/
- public const VERSION = '1.8.0';
+ public const VERSION = '1.8.1';
/**
* SimplePie Website URL
@@ -691,8 +690,7 @@ class SimplePie
public function __construct()
{
if (version_compare(PHP_VERSION, '7.2', '<')) {
- trigger_error('Please upgrade to PHP 7.2 or newer.');
- die();
+ exit('Please upgrade to PHP 7.2 or newer.');
}
$this->set_useragent();
@@ -803,7 +801,7 @@ class SimplePie
if ($file instanceof \SimplePie\File) {
$this->feed_url = $file->url;
$this->permanent_url = $this->feed_url;
- $this->file =& $file;
+ $this->file = &$file;
return true;
}
return false;
@@ -1375,7 +1373,7 @@ class SimplePie
}
$this->sanitize->strip_htmltags($tags);
if ($encode !== null) {
- $this->sanitize->encode_instead_of_strip($tags);
+ $this->sanitize->encode_instead_of_strip($encode);
}
}
@@ -1666,7 +1664,7 @@ class SimplePie
// Cache the file if caching is enabled
$this->data['cache_expiration_time'] = $this->cache_duration + time();
- if ($cache && ! $cache->set_data($this->get_cache_filename($this->feed_url), $this->data, $this->cache_duration)) {
+ if ($cache && !$cache->set_data($this->get_cache_filename($this->feed_url), $this->data, $this->cache_duration)) {
trigger_error("$this->cache_location is not writable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
}
return true;
@@ -1716,7 +1714,7 @@ class SimplePie
$cache = new BaseDataCache($cache);
}
- if ($cache !== false && ! $cache instanceof DataCache) {
+ if ($cache !== false && !$cache instanceof DataCache) {
throw new InvalidArgumentException(sprintf(
'%s(): Argument #1 ($cache) must be of type %s|false',
__METHOD__,
@@ -1774,7 +1772,7 @@ class SimplePie
$headers['if-none-match'] = $this->data['headers']['etag'];
}
- $file = $this->registry->create(File::class, [$this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen, $this->curl_options]);
+ $file = $this->registry->create(File::class, [$this->feed_url, $this->timeout / 10, 5, $headers, $this->useragent, $this->force_fsockopen, $this->curl_options]);
$this->status_code = $file->status_code;
if ($file->success) {
@@ -1811,7 +1809,7 @@ class SimplePie
// If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it.
if (!isset($file)) {
if ($this->file instanceof \SimplePie\File && $this->file->url === $this->feed_url) {
- $file =& $this->file;
+ $file = &$this->file;
} else {
$headers = [
'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
@@ -1833,7 +1831,7 @@ class SimplePie
if (!$locate->is_feed($file)) {
$copyStatusCode = $file->status_code;
- $copyContentType = $file->headers['content-type'];
+ $copyContentType = $file->headers['content-type'] ?? '';
try {
$microformats = false;
if (class_exists('DOMXpath') && function_exists('Mf2\parse')) {
@@ -2641,12 +2639,12 @@ class SimplePie
if ($this->registry->call(Misc::class, 'is_isegment_nz_nc', [$key])) {
if (isset($this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key])) {
$this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key]);
- $this->data['links'][$key] =& $this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key];
+ $this->data['links'][$key] = &$this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key];
} else {
- $this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+ $this->data['links'][self::IANA_LINK_RELATIONS_REGISTRY . $key] = &$this->data['links'][$key];
}
} elseif (substr($key, 0, 41) === self::IANA_LINK_RELATIONS_REGISTRY) {
- $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+ $this->data['links'][substr($key, 41)] = &$this->data['links'][$key];
}
$this->data['links'][$key] = array_unique($this->data['links'][$key]);
}
@@ -3103,7 +3101,7 @@ class SimplePie
$trace = debug_backtrace();
$file = $trace[0]['file'];
$line = $trace[0]['line'];
- trigger_error("Call to undefined method $class::$method() in $file on line $line", E_USER_ERROR);
+ throw new SimplePieException("Call to undefined method $class::$method() in $file on line $line");
}
/**
diff --git a/vendor/simplepie/simplepie/src/Source.php b/vendor/simplepie/simplepie/src/Source.php
index c7ed11600..5a8f86de9 100644
--- a/vendor/simplepie/simplepie/src/Source.php
+++ b/vendor/simplepie/simplepie/src/Source.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
@@ -348,12 +347,12 @@ class Source implements RegistryAware
if ($this->registry->call(Misc::class, 'is_isegment_nz_nc', [$key])) {
if (isset($this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key])) {
$this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key]);
- $this->data['links'][$key] =& $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key];
+ $this->data['links'][$key] = &$this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key];
} else {
- $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+ $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] = &$this->data['links'][$key];
}
} elseif (substr($key, 0, 41) === \SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY) {
- $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+ $this->data['links'][substr($key, 41)] = &$this->data['links'][$key];
}
$this->data['links'][$key] = array_unique($this->data['links'][$key]);
}
diff --git a/vendor/simplepie/simplepie/src/XML/Declaration/Parser.php b/vendor/simplepie/simplepie/src/XML/Declaration/Parser.php
index 5062e683f..59a0d83ee 100644
--- a/vendor/simplepie/simplepie/src/XML/Declaration/Parser.php
+++ b/vendor/simplepie/simplepie/src/XML/Declaration/Parser.php
@@ -1,6 +1,5 @@
<?php
-declare(strict_types=1);
/**
* SimplePie
*
diff --git a/vendor/smarty/smarty/CHANGELOG.md b/vendor/smarty/smarty/CHANGELOG.md
index 69d41e7aa..1483be86e 100644
--- a/vendor/smarty/smarty/CHANGELOG.md
+++ b/vendor/smarty/smarty/CHANGELOG.md
@@ -6,26 +6,155 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
-## [4.4.1] - 2024-02-26
-- Fixed internal release-tooling
+## [5.4.3] - 2024-12-23
+- Fix PHP backtraces by qualifying/replacing `call_user_func_array` calls [#1074](https://github.com/smarty-php/smarty/issues/1074)
-## [4.4.0] - 2024-02-26
-### Changed
-- Using the `|implode`, `|json_encode` and `|substr` modifiers does not generate a deprecation warning anymore as they will continue to be supported in v5 [#939](https://github.com/smarty-php/smarty/issues/939)
+
+## [5.4.2] - 2024-11-20
+
+
+- Support the deprecations introduced in PHP 8.4 and added tests for PHP 8.4 [#1043](https://github.com/smarty-php/smarty/pull/1043)
+
+## [5.4.1] - 2024-08-29
+
+
+- Enable (and fix) unit tests for Windows [#1046](https://github.com/smarty-php/smarty/pull/1046)
+- Fix the use of "extends:" to define the inheritance tree on Windows [#1018](https://github.com/smarty-php/smarty/issues/1018)
+
+## [5.4.0] - 2024-08-14
+- Fixing forced OpCache invalidation on every template include, which is resulting in fast raising wasted OpCache memory [#1007](https://github.com/smarty-php/smarty/issues/1007)
+- Improvement of auto-escaping [#1030](https://github.com/smarty-php/smarty/pull/1030)
+
+
+## [5.3.1] - 2024-06-16
+- Fixed error when using section with nocache [#1034](https://github.com/smarty-php/smarty/issues/1034)
+
+
+## [5.3.0] - 2024-05-30
+- Fix warning when calling hasVariable for an undefined variable [#977](https://github.com/smarty-php/smarty/issues/977)
+- Added `$smarty->prependTemplateDir()` method [#1022](https://github.com/smarty-php/smarty/issues/1022)
+
+
+## [5.2.0] - 2024-05-28
+- Fixed a code injection vulnerability in extends-tag. This addresses CVE-2024-35226.
+- Added `$smarty->setCacheModifiedCheck()` setter for cache_modified_check
+- Added a PSR-4 loading script to allow Smarty to be used without Composer [#1017](https://github.com/smarty-php/smarty/pull/1017)
+
+
+## [5.1.0] - 2024-04-22
+- Prevent deprecation notices during compilation in PHP8.3 [#996](https://github.com/smarty-php/smarty/issues/996)
+- Fix that getTemplateVars would return an array of objects instead of the assigned variables values [#994](https://github.com/smarty-php/smarty/issues/994)
+- Fix Smarty::assign() not returning $this when called with an array as first parameter [#972](https://github.com/smarty-php/smarty/pull/972)
+- Documented support for `{if $element is in $array}` syntax [#937](https://github.com/smarty-php/smarty/issues/937)
+- Added support for `{if $element is not in $array}` syntax [#937](https://github.com/smarty-php/smarty/issues/937)
+- Using stream variables in templates now throws a deprecation notice [#933](https://github.com/smarty-php/smarty/pull/933)
+- Internal compiler classes always return a string (the internal has_code flag has been removed for simplicity) [#918](https://github.com/smarty-php/smarty/pull/918)
+- Fix invalid classnames in Runtime code for foreach [#1000](https://github.com/smarty-php/smarty/issues/1000)
+
+## [5.0.2] - 2024-03-28
+- Fix Smarty::assign() not returning $this when called with an array as first parameter [#972](https://github.com/smarty-php/smarty/pull/972)
+
+## [5.0.1] - 2024-03-27
+- Fix error in Smarty\Smarty::compileAllTemplates() by including missing FilesystemIterator class [#966](https://github.com/smarty-php/smarty/issues/966)
+
+## [5.0.0] - 2024-03-25
+- Fixed that scoped variables would overwrite parent scope [#952](https://github.com/smarty-php/smarty/issues/952)
+- Removed publicly accessible `$tpl->_var_stack` variable
+
+### Fixed
+- Too many shorthand attributes error when using a modifier as a function with more than 3 parameters in an expression [#949](https://github.com/smarty-php/smarty/issues/949)
+
+### Removed
+- Dropped support for undocumented `{time()}` added in v5.0.0 since we already have the documented `{$smarty.now}`
+
+## [5.0.0-rc3] - 2024-02-26
### Added
- PHP8.3 support [#925](https://github.com/smarty-php/smarty/issues/925)
+- Backlink to GitHub in docs
+- Explain how to do escaping and set-up auto-escaping in docs [#865](https://github.com/smarty-php/smarty/issues/865)
+- Link to variable scope page in the documentation for the assign tag [#878](https://github.com/smarty-php/smarty/issues/878)
+- Add support for implode, substr and json_encode as modifiers/functions in templates [#939](https://github.com/smarty-php/smarty/issues/939)
+- Add template path to CompilerException to enable rich debug features [#935](https://github.com/smarty-php/smarty/issues/935)
+
+### Fixed
+- The {debug} tag was broken in v5 [#922](https://github.com/smarty-php/smarty/issues/922)
+- Documentation on `{if $x is even by $y}` syntax
+- Fix incorrect compilation of expressions when escape_html=true [#930](https://github.com/smarty-php/smarty/pull/930)
+
+## [5.0.0-rc2] - 2023-11-11
### Fixed
-- Incorrect compilation of expressions when escape_html=true [#930](https://github.com/smarty-php/smarty/pull/930)
+- Registered output filters wouldn't run [#899](https://github.com/smarty-php/smarty/issues/899)
+- Use of negative numbers in {math} equations [#895](https://github.com/smarty-php/smarty/issues/895)
+- Do not auto-html-escape custom function results [#906](https://github.com/smarty-php/smarty/issues/906)
+- Fix case-sensitive tag names [#907](https://github.com/smarty-php/smarty/issues/907)
-## [4.3.4] - 2023-09-14
+### Removed
+- Removed `$smarty->registered_filters` array
-## [4.3.3] - 2023-09-14
+## [5.0.0-rc1] - 2023-08-08
+
+### Added
+- Added support for PHP8.2
+- Added a new way to extend Smarty functionality using `Smarty::addExtension()` or `Smarty::setExtensions()`. Please see the docs for more information.
+- Custom tags can accept positional parameters, so you can write a block compiler that support this: `{trans "Jack" "dull boy"}All work and no play makes %s a %s.{/trans}` [#164](https://github.com/smarty-php/smarty/issues/164)
+- Full support for ternary operator: `{$test ? $a : $b}` and `{$var ?: $value_if_falsy}` [#881](https://github.com/smarty-php/smarty/issues/881)
+- Full support for null coalescing operator: `{$var ?? $value_if_null}` [#882](https://github.com/smarty-php/smarty/issues/882)
+
+### Changed
+- All Smarty code is now in the \Smarty namespace. For simple use-cases, you only need to add
+ `use \Smarty\Smarty;` to your script and everything will work. If you extend Smarty or use
+ Smarty plug-ins, please review your code to see if they assume specific class or method names.
+ E.g.: `Smarty_Internal_Template` is now `\Smarty\Template\`, `SmartyException` is now `\Smarty\Exception`.
+- Template variable scope bubbling has been simplified and made more consistent.
+ The global scope now equals the Smarty scope in order to avoid global state side effects. Please read
+ the documentation for more details.
+- Lexers and Parsers PHP files are reliably generated from sources (.y and .plex) using the make file
+- Smarty now always runs in multibyte mode, using `symfony/polyfill-mbstring` if required. Please use the
+ multibyte extension for optimal performance.
+- Smarty no longer calls `mb_internal_encoding()` and doesn't check for deprecated `mbstring.func_overload` ini directive [#480](https://github.com/smarty-php/smarty/issues/480)
+- Generated `<script>` tags lo longer have deprecated `type="text/javascript"` or `language="Javascript"` attributes [#815](https://github.com/smarty-php/smarty/issues/815)
+- Smarty will throw a compiler exception instead of silently ignoring a modifier on a function call, like this: `{include|dot:"x-template-id" file="included.dot.tpl"}` [#526](https://github.com/smarty-php/smarty/issues/526)
+- The documentation was largely rewritten
+
+### Deprecated
+- `$smarty->getPluginsDir()`
+- `$smarty->loadFilter()`
+- `$smarty->setPluginsDir()`
+- `$smarty->assignGlobal()`
+- Using `$smarty->registerFilter()` for registering variable filters will trigger a notice.
+
+### Removed
+- Dropped support for PHP7.1
+- Removed `$smarty->left_delimiter` and `$smarty->right_delimiter`, use `$smarty->getLeftDelimiter()`/`$smarty->setLeftDelimiter()` and `$smarty->getRightDelimiter()`/`$smarty->setRightDelimiter()`
+- Removed support for the `$cache_attrs` parameter for registered plugins
+- Removed support for undocumented `{make_nocache}` tag
+- Removed support for deprecated `{insert}` tag, the 'insert' plugin type and the associated $smarty->trusted_dir variable
+- Removed the undocumented `{block_parent}` and `{parent}` alternatives to `{$smarty.block.parent}`
+- Removed the undocumented `{block_child}` and `{child}` alternatives to `{$smarty.block.child}`
+- Removed support for loading config files into a non-local scope using `{config_load}` from a template
+- Removed `$smarty->autoload_filters` in favor of `$smarty->registerFilter()`
+- Removed `$smarty->trusted_dir` and `$smarty->allow_php_templates` since support for executing php scripts from templates has been dropped
+- Removed `$smarty->php_functions` and `$smarty->php_modifiers`.
+- You can no longer use native PHP-functions or userland functions in your templates without registering them. If you need a function in your templates,
+ register it first.
+- Removed support for `$smarty->getTags()`
+- Removed the abandoned `$smarty->direct_access_security` setting
+- Dropped support for `$smarty->plugins_dir` and `$smarty->use_include_path`. If you must, use `$smarty->addPluginsDir()` instead,
+ but it's better to use Smarty::addExtension() to add an extension or Smarty::registerPlugin to
+ quickly register a plugin using a callback function.
+- Removed constants such as SMARTY_DIR to prevent global side effects.
+- Removed direct access to `$smarty->template_dir`. Use `$smarty->setTemplateDir()`.
+- Removed direct access to `$smarty->cache_dir`. Use `$smarty->setCacheDir()`.
+- Removed direct access to `$smarty->compile_dir`. Use `$smarty->setCompileDir()`.
+- Removed `$smarty->loadPlugin()`, use `$smarty->registerPlugin()` instead.
+- Removed `$smarty->appendByRef()` and `$smarty->assignByRef()`.
+- Removed `$smarty->_current_file`
+- Removed `$smarty->allow_ambiguous_resources` (ambiguous resources handlers should still work)
### Fixed
- `|strip_tags` does not work if the input is 0 [#890](https://github.com/smarty-php/smarty/issues/890)
-- Use of negative numbers in {math} equations [#895](https://github.com/smarty-php/smarty/issues/895)
## [4.3.2] - 2023-07-19
@@ -1808,7 +1937,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
27.09.2011
- bugfix possible warning "attempt to modify property of non-object" in {section} (issue #34)
-- added chaining to Smarty_Internal_Data so $smarty->assign('a',1)->assign('b',2); is possible now
+- added chaining to \Smarty\Data so $smarty->assign('a',1)->assign('b',2); is possible now
- bugfix remove race condition when a custom resource did change timestamp during compilation
- bugfix variable property did not work on objects variable in template
- bugfix smarty_make_timestamp() failed to process DateTime objects properly
@@ -2143,7 +2272,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- optimize smarty_modified_escape for hex, hexentity, decentity.
28/12/2010
-- changed $tpl_vars, $config_vars and $parent to belong to Smarty_Internal_Data
+- changed $tpl_vars, $config_vars and $parent to belong to \Smarty\Data
- added Smarty::registerCacheResource() for dynamic cache resource object registration
27/12/2010
diff --git a/vendor/smarty/smarty/CONTRIBUTING.md b/vendor/smarty/smarty/CONTRIBUTING.md
new file mode 100644
index 000000000..8dfdf32b2
--- /dev/null
+++ b/vendor/smarty/smarty/CONTRIBUTING.md
@@ -0,0 +1,119 @@
+# Contributing to Smarty
+
+First off, thanks for taking the time to contribute! ❤️
+
+> And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about:
+> - Star the project
+> - Tell a friend about it
+> - Refer this project in your project's readme
+> - Mention the project at local meetups and tell your friends/colleagues
+
+## I Have a Question
+
+> If you want to ask a question, we assume that you have read the available [Documentation](https://smarty-php.github.io/smarty).
+
+Before you ask a question, it is best to search for existing [Issues](https://github.com/smarty-php/smarty/issues) that might help you.
+In case you have found a suitable issue and still need clarification, you can write your question in this issue.
+It is also advisable to search the internet for answers first.
+
+If you then still feel the need to ask a question and need clarification, we recommend the following:
+
+- [Open an Issue](https://github.com/smarty-php/smarty/issues/new).
+- Provide as much context as you can about what you're running into.
+- Provide Smarty and PHP versions
+
+We will then take care of the issue as soon as possible.
+
+## I Want To Contribute
+
+> ### Legal Notice
+> When contributing to this project, you must agree that you have authored 100% of the content,
+> that you have the necessary rights to the content and that the content you contribute may be provided under the project license.
+
+### Reporting Bugs
+
+#### Before Submitting a Bug Report
+
+A good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask you to
+investigate carefully, collect information and describe the issue in detail in your report. Please complete the
+following steps in advance to help us fix any potential bug as fast as possible.
+
+- Make sure that you are using the latest version.
+- Determine if your bug is really a bug and not an error on your side. (Make sure that you have read the [documentation](https://smarty-php.github.io/smarty). If you are looking for support, you might want to check [this section](#i-have-a-question)).
+- To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in the [bug tracker](https://github.com/smarty-php/smarty/issues?q=label%3Abug).
+- Also make sure to search the internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue.
+- Collect information about the bug:
+ - For an Exception: please provide the Stack trace
+ - OS (Windows, Linux, macOS)
+ - PHP version
+ - Smarty version
+ - A minimal snippet of (your) code that triggers the bug
+ - Expected output versus actual output
+ - Can you reliably reproduce the issue? And can you also reproduce it with older versions?
+
+#### How Do I Submit a Good Bug Report?
+
+> You must never report security related issues, vulnerabilities or bugs including sensitive information to the issue tracker, or elsewhere in public.
+> For sensitive bugs, please see [SECURITY.md](SECURITY.md).
+
+We use GitHub issues to track bugs and errors. If you run into an issue with the project:
+
+- Open an [Issue](https://github.com/smarty-php/smarty/issues/new). (Since we can't be sure at this point whether it is a bug or not, we ask you not to talk about a bug yet and not to label the issue.)
+- Explain the behavior you would expect and the actual behavior.
+- Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to recreate the issue on their own. This usually includes your code. For good bug reports you should isolate the problem and create a reduced test case.
+- Provide the information you collected in the previous section.
+
+Once it's filed:
+
+- The project team will label the issue accordingly.
+- A team member will try to reproduce the issue with your provided steps. If there are no reproduction steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced.
+- If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be implemented by someone.
+
+
+
+### Suggesting Enhancements
+
+This section guides you through submitting an enhancement suggestion for CONTRIBUTING.md, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions.
+
+
+#### Before Submitting an Enhancement
+
+- Make sure that you are using the latest version.
+- Read the [documentation](https://smarty-php.github.io/smarty) carefully and find out if the functionality is already covered, maybe by an individual configuration.
+- Perform a [search](https://github.com/smarty-php/smarty/issues) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.
+- Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we want features that will be useful to the majority of our users and not just a small subset. If you're just targeting a minority of users, consider writing an add-on/plugin library.
+
+
+#### How Do I Submit a Good Enhancement Suggestion?
+
+Enhancement suggestions are tracked as [GitHub issues](https://github.com/smarty-php/smarty/issues).
+
+- Use a **clear and descriptive title** for the issue to identify the suggestion.
+- Provide a **step-by-step description of the suggested enhancement** in as many details as possible.
+- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you.
+- You may want to **include screenshots and animated GIFs** which help you demonstrate the steps or point out the part which the suggestion is related to. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux.
+- **Explain why this enhancement would be useful** to most CONTRIBUTING.md users. You may also want to point out the other projects that solved it better and which could serve as inspiration.
+
+
+### Improving The Documentation
+
+The [docs](docs/index.md) are written in markdown, configured in [mkdocs.yml](mkdocs.yml) and published
+to [GitHub pages](https://smarty-php.github.io/smarty) using [mkdocs](https://www.mkdocs.org/) and [mike](https://github.com/jimporter/mike).
+
+To preview the docs while you are writing, run:
+```bash
+mkdocs serve
+```
+This should launch a local web server and give you a link to open in your browser.
+
+When you are finished, commit your changes and provide a [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request).
+
+#### Publishing the docs
+If you are a maintainer, you can publish the document using [mike](https://github.com/jimporter/mike). Make sure you provide the correct version.
+
+```bash
+mike deploy 5.x
+```
+
+## Attribution
+This guide is based on the **contributing.md**. [Make your own](https://contributing.md/)!
diff --git a/vendor/smarty/smarty/Makefile b/vendor/smarty/smarty/Makefile
new file mode 100644
index 000000000..38afdbf1b
--- /dev/null
+++ b/vendor/smarty/smarty/Makefile
@@ -0,0 +1,19 @@
+all: lexers parsers
+
+lexers: src/Lexer/ConfigfileLexer.php src/Lexer/TemplateLexer.php
+parsers: src/Parser/ConfigfileParser.php src/Parser/TemplateParser.php
+
+src/Lexer/ConfigfileLexer.php: src/Lexer/ConfigfileLexer.plex
+ php ./utilities/make-lexer.php src/Lexer/ConfigfileLexer.plex src/Lexer/ConfigfileLexer.php
+
+src/Lexer/TemplateLexer.php: src/Lexer/TemplateLexer.plex
+ php ./utilities/make-lexer.php src/Lexer/TemplateLexer.plex src/Lexer/TemplateLexer.php
+
+src/Parser/ConfigfileParser.php: src/Parser/ConfigfileParser.y
+ php ./utilities/make-parser.php src/Parser/ConfigfileParser.y src/Parser/ConfigfileParser.php
+
+src/Parser/TemplateParser.php: src/Parser/TemplateParser.y
+ php ./utilities/make-parser.php src/Parser/TemplateParser.y src/Parser/TemplateParser.php
+
+clean:
+ rm -f src/Lexer/ConfigfileLexer.php src/Lexer/TemplateLexer.php src/Parser/ConfigfileParser.php src/Parser/TemplateParser.php \ No newline at end of file
diff --git a/vendor/smarty/smarty/README.md b/vendor/smarty/smarty/README.md
index 9b8706d45..755d73ea0 100644
--- a/vendor/smarty/smarty/README.md
+++ b/vendor/smarty/smarty/README.md
@@ -7,7 +7,7 @@ Smarty is a template engine for PHP, facilitating the separation of presentation
Read the [documentation](https://smarty-php.github.io/smarty/) to find out how to use it.
## Requirements
-Smarty can be run with PHP 7.1 to PHP 8.3.
+Smarty v5 can be run with PHP 7.2 to PHP 8.4.
## Installation
Smarty versions 3.1.11 or later can be installed with [Composer](https://getcomposer.org/).
diff --git a/vendor/smarty/smarty/SECURITY.md b/vendor/smarty/smarty/SECURITY.md
index 80b5ef5c8..9685c254f 100644
--- a/vendor/smarty/smarty/SECURITY.md
+++ b/vendor/smarty/smarty/SECURITY.md
@@ -2,13 +2,13 @@
## Supported Versions
-Smarty currently supports the latest minor version of Smarty 3 and Smarty 4.
+Smarty currently supports the latest minor version of Smarty 4 and Smarty 5.
| Version | Supported |
|---------|--------------------|
+| 5.0.x | :white_check_mark: |
| 4.3.x | :white_check_mark: |
-| 3.1.x | :white_check_mark: |
-| < 3.1 | :x: |
+| < 4.3 | :x: |
## Reporting a Vulnerability
diff --git a/vendor/smarty/smarty/TODO.txt b/vendor/smarty/smarty/TODO.txt
new file mode 100644
index 000000000..aabbf6543
--- /dev/null
+++ b/vendor/smarty/smarty/TODO.txt
@@ -0,0 +1,32 @@
+# @TODO
+
+## CI-building optimization
+- compiled & cached templates should not contain references to local filesystem paths. Add an optional rootpath param
+ to `(add|set)TemplateDir` or as a separate method. Make it default to `getcwd()`. If a relative path is passed to
+ `(add|set)TemplateDir`, prefix it with the rootpath at runtime, but do not store the path.
+
+## Review direct variable property access
+- review ->value{$index} in ForTag
+
+## include inline
+- Re-introduce merge_compiled_includes and the {include inline} attribute?
+
+## Output buffering
+- Fix ob_ output buffering commands being scattered around the codebase
+
+## Review public static vars
+- such as _CHARSET and _IS_WINDOWS
+
+## Block / inheritance
+- Consider phasing out $smarty.block.child as this reverses the inheritance hierarchy and might cause infinite loops
+ when combined with $smarty.block.parent
+
+## Plugin system
+- fix template security checks in one place in compiler
+
+## Beatify output
+- compiled templates could be proper classes, possibly using [nette/php-generator](https://packagist.org/packages/nette/php-generator)
+
+## Unrelated / other
+- review (and avoid) use of 'clone' keyword
+- what is 'user literal support', why are unit tests skipped?
diff --git a/vendor/smarty/smarty/composer.json b/vendor/smarty/smarty/composer.json
index 165bfd2a1..87d865d78 100644
--- a/vendor/smarty/smarty/composer.json
+++ b/vendor/smarty/smarty/composer.json
@@ -30,20 +30,24 @@
"forum": "https://github.com/smarty-php/smarty/discussions"
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-mbstring": "^1.27"
},
"autoload": {
- "classmap": [
- "libs/"
+ "psr-4" : {
+ "Smarty\\" : "src/"
+ },
+ "files": [
+ "src/functions.php"
]
},
"extra": {
"branch-alias": {
- "dev-master": "4.0.x-dev"
+ "dev-master": "5.0.x-dev"
}
},
"require-dev": {
"phpunit/phpunit": "^8.5 || ^7.5",
- "smarty/smarty-lexer": "^3.1"
+ "smarty/smarty-lexer": "^4.0.2"
}
}
diff --git a/vendor/smarty/smarty/demo/index.php b/vendor/smarty/smarty/demo/index.php
index 3aed37168..705478ff3 100644
--- a/vendor/smarty/smarty/demo/index.php
+++ b/vendor/smarty/smarty/demo/index.php
@@ -2,11 +2,11 @@
/**
* Example Application
*
- * @package Example-application
+
*/
-require '../libs/Smarty.class.php';
-$smarty = new Smarty;
-//$smarty->force_compile = true;
+
+$smarty = new \Smarty\Smarty;
+
$smarty->debugging = true;
$smarty->caching = true;
$smarty->cache_lifetime = 120;
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.apc.php b/vendor/smarty/smarty/demo/plugins/cacheresource.apc.php
deleted file mode 100644
index 7867cc598..000000000
--- a/vendor/smarty/smarty/demo/plugins/cacheresource.apc.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/**
- * APC CacheResource
- * CacheResource Implementation based on the KeyValueStore API to use
- * memcache as the storage resource for Smarty's output caching.
- * *
- *
- * @package CacheResource-examples
- * @author Uwe Tews
- */
-class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore
-{
- /**
- * Smarty_CacheResource_Apc constructor.
- *
- * @throws \Exception
- */
- public function __construct()
- {
- // test if APC is present
- if (!function_exists('apc_cache_info')) {
- throw new Exception('APC Template Caching Error: APC is not installed');
- }
- }
-
- /**
- * Read values for a set of keys from cache
- *
- * @param array $keys list of keys to fetch
- *
- * @return array list of values with the given keys used as indexes
- * @return boolean true on success, false on failure
- */
- protected function read(array $keys)
- {
- $_res = array();
- $res = apc_fetch($keys);
- foreach ($res as $k => $v) {
- $_res[ $k ] = $v;
- }
- return $_res;
- }
-
- /**
- * Save values for a set of keys to cache
- *
- * @param array $keys list of values to save
- * @param int $expire expiration time
- *
- * @return boolean true on success, false on failure
- */
- protected function write(array $keys, $expire = null)
- {
- foreach ($keys as $k => $v) {
- apc_store($k, $v, $expire);
- }
- return true;
- }
-
- /**
- * Remove values from cache
- *
- * @param array $keys list of keys to delete
- *
- * @return boolean true on success, false on failure
- */
- protected function delete(array $keys)
- {
- foreach ($keys as $k) {
- apc_delete($k);
- }
- return true;
- }
-
- /**
- * Remove *all* values from cache
- *
- * @return boolean true on success, false on failure
- */
- protected function purge()
- {
- return apc_clear_cache('user');
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php b/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php
deleted file mode 100644
index 71fe9d3f1..000000000
--- a/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-/**
- * Memcache CacheResource
- * CacheResource Implementation based on the KeyValueStore API to use
- * memcache as the storage resource for Smarty's output caching.
- * Note that memcache has a limitation of 256 characters per cache-key.
- * To avoid complications all cache-keys are translated to a sha1 hash.
- *
- * @package CacheResource-examples
- * @author Rodney Rehm
- */
-class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore
-{
- /**
- * memcache instance
- *
- * @var Memcache
- */
- protected $memcache = null;
-
- /**
- * Smarty_CacheResource_Memcache constructor.
- */
- public function __construct()
- {
- if (class_exists('Memcached')) {
- $this->memcache = new Memcached();
- } else {
- $this->memcache = new Memcache();
- }
- $this->memcache->addServer('127.0.0.1', 11211);
- }
-
- /**
- * Read values for a set of keys from cache
- *
- * @param array $keys list of keys to fetch
- *
- * @return array list of values with the given keys used as indexes
- * @return boolean true on success, false on failure
- */
- protected function read(array $keys)
- {
- $res = array();
- foreach ($keys as $key) {
- $k = sha1($key);
- $res[$key] = $this->memcache->get($k);
- }
- return $res;
- }
-
- /**
- * Save values for a set of keys to cache
- *
- * @param array $keys list of values to save
- * @param int $expire expiration time
- *
- * @return boolean true on success, false on failure
- */
- protected function write(array $keys, $expire = null)
- {
- foreach ($keys as $k => $v) {
- $k = sha1($k);
- if (class_exists('Memcached')) {
- $this->memcache->set($k, $v, $expire);
- } else {
- $this->memcache->set($k, $v, 0, $expire);
- }
- }
- return true;
- }
-
- /**
- * Remove values from cache
- *
- * @param array $keys list of keys to delete
- *
- * @return boolean true on success, false on failure
- */
- protected function delete(array $keys)
- {
- foreach ($keys as $k) {
- $k = sha1($k);
- $this->memcache->delete($k);
- }
- return true;
- }
-
- /**
- * Remove *all* values from cache
- *
- * @return boolean true on success, false on failure
- */
- protected function purge()
- {
- return $this->memcache->flush();
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php b/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php
deleted file mode 100644
index c5037eb13..000000000
--- a/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php
-
-/**
- * MySQL CacheResource
- * CacheResource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's output caching.
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `output_cache` (
- * `id` CHAR(40) NOT NULL COMMENT 'sha1 hash',
- * `name` VARCHAR(250) NOT NULL,
- * `cache_id` VARCHAR(250) NULL DEFAULT NULL,
- * `compile_id` VARCHAR(250) NULL DEFAULT NULL,
- * `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
- * `content` LONGTEXT NOT NULL,
- * PRIMARY KEY (`id`),
- * INDEX(`name`),
- * INDEX(`cache_id`),
- * INDEX(`compile_id`),
- * INDEX(`modified`)
- * ) ENGINE = InnoDB;</pre>
- *
- * @package CacheResource-examples
- * @author Rodney Rehm
- */
-class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom
-{
- /**
- * @var \PDO
- */
- protected $db;
-
- /**
- * @var \PDOStatement
- */
- protected $fetch;
-
- /**
- * @var \PDOStatement
- */
- protected $fetchTimestamp;
-
- /**
- * @var \PDOStatement
- */
- protected $save;
-
- /**
- * Smarty_CacheResource_Mysql constructor.
- *
- * @throws \SmartyException
- */
- public function __construct()
- {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id');
- $this->fetchTimestamp = $this->db->prepare('SELECT modified FROM output_cache WHERE id = :id');
- $this->save = $this->db->prepare(
- 'REPLACE INTO output_cache (id, name, cache_id, compile_id, content)
- VALUES (:id, :name, :cache_id, :compile_id, :content)'
- );
- }
-
- /**
- * fetch cached content and its modification time from data source
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer $mtime cache modification timestamp (epoch)
- *
- * @return void
- */
- protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
- {
- $this->fetch->execute(array('id' => $id));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $content = $row[ 'content' ];
- $mtime = strtotime($row[ 'modified' ]);
- } else {
- $content = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch cached content's modification timestamp from data source
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than
- * loading the complete cached content.
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- *
- * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
- */
- protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
- {
- $this->fetchTimestamp->execute(array('id' => $id));
- $mtime = strtotime($this->fetchTimestamp->fetchColumn());
- $this->fetchTimestamp->closeCursor();
- return $mtime;
- }
-
- /**
- * Save content to cache
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration time in seconds or null
- * @param string $content content to cache
- *
- * @return boolean success
- */
- protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content)
- {
- $this->save->execute(
- array('id' => $id,
- 'name' => $name,
- 'cache_id' => $cache_id,
- 'compile_id' => $compile_id,
- 'content' => $content,)
- );
- return !!$this->save->rowCount();
- }
-
- /**
- * Delete content from cache
- *
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration or null
- *
- * @return integer number of deleted caches
- */
- protected function delete($name, $cache_id, $compile_id, $exp_time)
- {
- // delete the whole cache
- if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
- // returning the number of deleted caches would require a second query to count them
- $query = $this->db->query('TRUNCATE TABLE output_cache');
- return -1;
- }
- // build the filter
- $where = array();
- // equal test name
- if ($name !== null) {
- $where[] = 'name = ' . $this->db->quote($name);
- }
- // equal test compile_id
- if ($compile_id !== null) {
- $where[] = 'compile_id = ' . $this->db->quote($compile_id);
- }
- // range test expiration time
- if ($exp_time !== null) {
- $where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)';
- }
- // equal test cache_id and match sub-groups
- if ($cache_id !== null) {
- $where[] =
- '(cache_id = ' .
- $this->db->quote($cache_id) .
- ' OR cache_id LIKE ' .
- $this->db->quote($cache_id . '|%') .
- ')';
- }
- // run delete query
- $query = $this->db->query('DELETE FROM output_cache WHERE ' . join(' AND ', $where));
- return $query->rowCount();
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php b/vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php
deleted file mode 100644
index ae3ebbf7d..000000000
--- a/vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php
+++ /dev/null
@@ -1,346 +0,0 @@
-<?php
-
-/**
- * PDO Cache Handler
- * Allows you to store Smarty Cache files into your db.
- * Example table :
- * CREATE TABLE `smarty_cache` (
- * `id` char(40) NOT NULL COMMENT 'sha1 hash',
- * `name` varchar(250) NOT NULL,
- * `cache_id` varchar(250) DEFAULT NULL,
- * `compile_id` varchar(250) DEFAULT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
- * `expire` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- * `content` mediumblob NOT NULL,
- * PRIMARY KEY (`id`),
- * KEY `name` (`name`),
- * KEY `cache_id` (`cache_id`),
- * KEY `compile_id` (`compile_id`),
- * KEY `modified` (`modified`),
- * KEY `expire` (`expire`)
- * ) ENGINE=InnoDB
- * Example usage :
- * $cnx = new PDO("mysql:host=localhost;dbname=mydb", "username", "password");
- * $smarty->setCachingType('pdo');
- * $smarty->loadPlugin('Smarty_CacheResource_Pdo');
- * $smarty->registerCacheResource('pdo', new Smarty_CacheResource_Pdo($cnx, 'smarty_cache'));
- *
- * @author Beno!t POLASZEK - 2014
- */
-class Smarty_CacheResource_Pdo extends Smarty_CacheResource_Custom
-{
- /**
- * @var string[]
- */
- protected $fetchStatements = array('default' => 'SELECT %2$s
- FROM %1$s
- WHERE 1
- AND id = :id
- AND cache_id IS NULL
- AND compile_id IS NULL',
- 'withCacheId' => 'SELECT %2$s
- FROM %1$s
- WHERE 1
- AND id = :id
- AND cache_id = :cache_id
- AND compile_id IS NULL',
- 'withCompileId' => 'SELECT %2$s
- FROM %1$s
- WHERE 1
- AND id = :id
- AND compile_id = :compile_id
- AND cache_id IS NULL',
- 'withCacheIdAndCompileId' => 'SELECT %2$s
- FROM %1$s
- WHERE 1
- AND id = :id
- AND cache_id = :cache_id
- AND compile_id = :compile_id');
-
- /**
- * @var string
- */
- protected $insertStatement = 'INSERT INTO %s
-
- SET id = :id,
- name = :name,
- cache_id = :cache_id,
- compile_id = :compile_id,
- modified = CURRENT_TIMESTAMP,
- expire = DATE_ADD(CURRENT_TIMESTAMP, INTERVAL :expire SECOND),
- content = :content
-
- ON DUPLICATE KEY UPDATE
- name = :name,
- cache_id = :cache_id,
- compile_id = :compile_id,
- modified = CURRENT_TIMESTAMP,
- expire = DATE_ADD(CURRENT_TIMESTAMP, INTERVAL :expire SECOND),
- content = :content';
-
- /**
- * @var string
- */
- protected $deleteStatement = 'DELETE FROM %1$s WHERE %2$s';
-
- /**
- * @var string
- */
- protected $truncateStatement = 'TRUNCATE TABLE %s';
-
- /**
- * @var string
- */
- protected $fetchColumns = 'modified, content';
-
- /**
- * @var string
- */
- protected $fetchTimestampColumns = 'modified';
-
- /**
- * @var \PDO
- */
- protected $pdo;
-
- /**
- * @var
- */
- protected $table;
-
- /**
- * @var null
- */
- protected $database;
-
- /**
- * Constructor
- *
- * @param PDO $pdo PDO : active connection
- * @param string $table : table (or view) name
- * @param string $database : optional - if table is located in another db
- *
- * @throws \SmartyException
- */
- public function __construct(PDO $pdo, $table, $database = null)
- {
- if (is_null($table)) {
- throw new SmartyException("Table name for caching can't be null");
- }
- $this->pdo = $pdo;
- $this->table = $table;
- $this->database = $database;
- $this->fillStatementsWithTableName();
- }
-
- /**
- * Fills the table name into the statements.
- *
- * @return $this Current Instance
- * @access protected
- */
- protected function fillStatementsWithTableName()
- {
- foreach ($this->fetchStatements as &$statement) {
- $statement = sprintf($statement, $this->getTableName(), '%s');
- }
- $this->insertStatement = sprintf($this->insertStatement, $this->getTableName());
- $this->deleteStatement = sprintf($this->deleteStatement, $this->getTableName(), '%s');
- $this->truncateStatement = sprintf($this->truncateStatement, $this->getTableName());
- return $this;
- }
-
- /**
- * Gets the fetch statement, depending on what you specify
- *
- * @param string $columns : the column(s) name(s) you want to retrieve from the database
- * @param string $id unique cache content identifier
- * @param string|null $cache_id cache id
- * @param string|null $compile_id compile id
- *
- * @access protected
- * @return \PDOStatement
- */
- protected function getFetchStatement($columns, $id, $cache_id = null, $compile_id = null)
- {
- $args = array();
- if (!is_null($cache_id) && !is_null($compile_id)) {
- $query = $this->fetchStatements[ 'withCacheIdAndCompileId' ] and
- $args = array('id' => $id, 'cache_id' => $cache_id, 'compile_id' => $compile_id);
- } elseif (is_null($cache_id) && !is_null($compile_id)) {
- $query = $this->fetchStatements[ 'withCompileId' ] and
- $args = array('id' => $id, 'compile_id' => $compile_id);
- } elseif (!is_null($cache_id) && is_null($compile_id)) {
- $query = $this->fetchStatements[ 'withCacheId' ] and $args = array('id' => $id, 'cache_id' => $cache_id);
- } else {
- $query = $this->fetchStatements[ 'default' ] and $args = array('id' => $id);
- }
- $query = sprintf($query, $columns);
- $stmt = $this->pdo->prepare($query);
- foreach ($args as $key => $value) {
- $stmt->bindValue($key, $value);
- }
- return $stmt;
- }
-
- /**
- * fetch cached content and its modification time from data source
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string|null $cache_id cache id
- * @param string|null $compile_id compile id
- * @param string $content cached content
- * @param integer $mtime cache modification timestamp (epoch)
- *
- * @return void
- * @access protected
- */
- protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
- {
- $stmt = $this->getFetchStatement($this->fetchColumns, $id, $cache_id, $compile_id);
- $stmt->execute();
- $row = $stmt->fetch();
- $stmt->closeCursor();
- if ($row) {
- $content = $this->outputContent($row[ 'content' ]);
- $mtime = strtotime($row[ 'modified' ]);
- } else {
- $content = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch cached content's modification timestamp from data source
- * {@internal implementing this method is optional.
- * Only implement it if modification times can be accessed faster than loading the complete cached content.}}
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string|null $cache_id cache id
- * @param string|null $compile_id compile id
- *
- * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
- * @access protected
- */
- // protected function fetchTimestamp($id, $name, $cache_id = null, $compile_id = null) {
- // $stmt = $this->getFetchStatement($this->fetchTimestampColumns, $id, $cache_id, $compile_id);
- // $stmt -> execute();
- // $mtime = strtotime($stmt->fetchColumn());
- // $stmt -> closeCursor();
- // return $mtime;
- // }
- /**
- * Save content to cache
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string|null $cache_id cache id
- * @param string|null $compile_id compile id
- * @param integer|null $exp_time seconds till expiration time in seconds or null
- * @param string $content content to cache
- *
- * @return boolean success
- * @access protected
- */
- protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content)
- {
- $stmt = $this->pdo->prepare($this->insertStatement);
- $stmt->bindValue('id', $id);
- $stmt->bindValue('name', $name);
- $stmt->bindValue('cache_id', $cache_id, (is_null($cache_id)) ? PDO::PARAM_NULL : PDO::PARAM_STR);
- $stmt->bindValue('compile_id', $compile_id, (is_null($compile_id)) ? PDO::PARAM_NULL : PDO::PARAM_STR);
- $stmt->bindValue('expire', (int)$exp_time, PDO::PARAM_INT);
- $stmt->bindValue('content', $this->inputContent($content));
- $stmt->execute();
- return !!$stmt->rowCount();
- }
-
- /**
- * Encodes the content before saving to database
- *
- * @param string $content
- *
- * @return string $content
- * @access protected
- */
- protected function inputContent($content)
- {
- return $content;
- }
-
- /**
- * Decodes the content before saving to database
- *
- * @param string $content
- *
- * @return string $content
- * @access protected
- */
- protected function outputContent($content)
- {
- return $content;
- }
-
- /**
- * Delete content from cache
- *
- * @param string|null $name template name
- * @param string|null $cache_id cache id
- * @param string|null $compile_id compile id
- * @param integer|null|-1 $exp_time seconds till expiration or null
- *
- * @return integer number of deleted caches
- * @access protected
- */
- protected function delete($name = null, $cache_id = null, $compile_id = null, $exp_time = null)
- {
- // delete the whole cache
- if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
- // returning the number of deleted caches would require a second query to count them
- $this->pdo->query($this->truncateStatement);
- return -1;
- }
- // build the filter
- $where = array();
- // equal test name
- if ($name !== null) {
- $where[] = 'name = ' . $this->pdo->quote($name);
- }
- // equal test cache_id and match sub-groups
- if ($cache_id !== null) {
- $where[] =
- '(cache_id = ' .
- $this->pdo->quote($cache_id) .
- ' OR cache_id LIKE ' .
- $this->pdo->quote($cache_id . '|%') .
- ')';
- }
- // equal test compile_id
- if ($compile_id !== null) {
- $where[] = 'compile_id = ' . $this->pdo->quote($compile_id);
- }
- // for clearing expired caches
- if ($exp_time === Smarty::CLEAR_EXPIRED) {
- $where[] = 'expire < CURRENT_TIMESTAMP';
- } // range test expiration time
- elseif ($exp_time !== null) {
- $where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)';
- }
- // run delete query
- $query = $this->pdo->query(sprintf($this->deleteStatement, join(' AND ', $where)));
- return $query->rowCount();
- }
-
- /**
- * Gets the formatted table name
- *
- * @return string
- * @access protected
- */
- protected function getTableName()
- {
- return (is_null($this->database)) ? "`{$this->table}`" : "`{$this->database}`.`{$this->table}`";
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php b/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php
deleted file mode 100644
index 5560b9e39..000000000
--- a/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-require_once 'cacheresource.pdo.php';
-
-/**
- * PDO Cache Handler with GZIP support
- * Example usage :
- * $cnx = new PDO("mysql:host=localhost;dbname=mydb", "username", "password");
- * $smarty->setCachingType('pdo_gzip');
- * $smarty->loadPlugin('Smarty_CacheResource_Pdo_Gzip');
- * $smarty->registerCacheResource('pdo_gzip', new Smarty_CacheResource_Pdo_Gzip($cnx, 'smarty_cache'));
- *
- * @require Smarty_CacheResource_Pdo class
- * @author Beno!t POLASZEK - 2014
- */
-class Smarty_CacheResource_Pdo_Gzip extends Smarty_CacheResource_Pdo
-{
- /**
- * Encodes the content before saving to database
- *
- * @param string $content
- *
- * @return string $content
- * @access protected
- */
- protected function inputContent($content)
- {
- return gzdeflate($content);
- }
-
- /**
- * Decodes the content before saving to database
- *
- * @param string $content
- *
- * @return string $content
- * @access protected
- */
- protected function outputContent($content)
- {
- return gzinflate($content);
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/resource.extendsall.php b/vendor/smarty/smarty/demo/plugins/resource.extendsall.php
deleted file mode 100644
index a547d41db..000000000
--- a/vendor/smarty/smarty/demo/plugins/resource.extendsall.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/**
- * Extends All Resource
- * Resource Implementation modifying the extends-Resource to walk
- * through the template_dirs and inherit all templates of the same name
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
-class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends
-{
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $uid = '';
- $sources = array();
- $timestamp = 0;
- foreach ($source->smarty->getTemplateDir() as $key => $directory) {
- try {
- $s = Smarty_Resource::source(null, $source->smarty, 'file:' . '[' . $key . ']' . $source->name);
- if (!$s->exists) {
- continue;
- }
- $sources[ $s->uid ] = $s;
- $uid .= $s->filepath;
- $timestamp = $s->timestamp > $timestamp ? $s->timestamp : $timestamp;
- } catch (SmartyException $e) {
- }
- }
- if (!$sources) {
- $source->exists = false;
- return;
- }
- $sources = array_reverse($sources, true);
- reset($sources);
- $s = current($sources);
- $source->components = $sources;
- $source->filepath = $s->filepath;
- $source->uid = sha1($uid . $source->smarty->_joined_template_dir);
- $source->exists = true;
- $source->timestamp = $timestamp;
- }
-
- /**
- * Disable timestamp checks for extendsall resource.
- * The individual source components will be checked.
- *
- * @return bool false
- */
- public function checkTimestamps()
- {
- return false;
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/resource.mysql.php b/vendor/smarty/smarty/demo/plugins/resource.mysql.php
deleted file mode 100644
index 95a3c2baf..000000000
--- a/vendor/smarty/smarty/demo/plugins/resource.mysql.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-
-/**
- * MySQL Resource
- * Resource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's templates and configs.
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- * Demo data:
- * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello
- * world"}{$x}');</pre>
- *
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
-class Smarty_Resource_Mysql extends Smarty_Resource_Custom
-{
- /**
- * PDO instance
- *
- * @var \PDO
- */
- protected $db;
-
- /**
- * prepared fetch() statement
- *
- * @var \PDOStatement
- */
- protected $fetch;
-
- /**
- * prepared fetchTimestamp() statement
- *
- * @var \PDOStatement
- */
- protected $mtime;
-
- /**
- * Smarty_Resource_Mysql constructor.
- *
- * @throws \SmartyException
- */
- public function __construct()
- {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- *
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row[ 'source' ];
- $mtime = strtotime($row[ 'modified' ]);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch a template's modification time from database
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than
- * loading the comple template source.
- *
- * @param string $name template name
- *
- * @return integer timestamp (epoch) the template was modified
- */
- protected function fetchTimestamp($name)
- {
- $this->mtime->execute(array('name' => $name));
- $mtime = $this->mtime->fetchColumn();
- $this->mtime->closeCursor();
- return strtotime($mtime);
- }
-}
diff --git a/vendor/smarty/smarty/demo/plugins/resource.mysqls.php b/vendor/smarty/smarty/demo/plugins/resource.mysqls.php
deleted file mode 100644
index 148a8dd61..000000000
--- a/vendor/smarty/smarty/demo/plugins/resource.mysqls.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/**
- * MySQL Resource
- * Resource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's templates and configs.
- * Note that this MySQL implementation fetches the source and timestamps in
- * a single database query, instead of two separate like resource.mysql.php does.
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- * Demo data:
- * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello
- * world"}{$x}');</pre>
- *
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
-class Smarty_Resource_Mysqls extends Smarty_Resource_Custom
-{
- /**
- * PDO instance
- *
- * @var \PDO
- */
- protected $db;
-
- /**
- * prepared fetch() statement
- *
- * @var \PDOStatement
- */
- protected $fetch;
-
- /**
- * Smarty_Resource_Mysqls constructor.
- *
- * @throws \SmartyException
- */
- public function __construct()
- {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- *
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row[ 'source' ];
- $mtime = strtotime($row[ 'modified' ]);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-}
diff --git a/vendor/smarty/smarty/demo/templates/index.tpl b/vendor/smarty/smarty/demo/templates/index.tpl
index 1fbb6d379..1a0f431bb 100644
--- a/vendor/smarty/smarty/demo/templates/index.tpl
+++ b/vendor/smarty/smarty/demo/templates/index.tpl
@@ -11,8 +11,6 @@
The current date and time is {$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
- The value of global assigned variable $SCRIPT_NAME is {$SCRIPT_NAME}
-
Example of accessing server environment variable SERVER_NAME: {$smarty.server.SERVER_NAME}
The value of {ldelim}$Name{rdelim} is <b>{$Name}</b>
diff --git a/vendor/smarty/smarty/docs/api/basics.md b/vendor/smarty/smarty/docs/api/basics.md
new file mode 100644
index 000000000..ef5292dab
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/basics.md
@@ -0,0 +1,93 @@
+# Basics
+
+## Installation
+For installation instructies, please see the [getting started section](../getting-started.md).
+
+## Rendering a template
+Here's how you create an instance of Smarty in your PHP scripts:
+```php
+<?php
+
+require 'vendor/autoload.php';
+use Smarty\Smarty;
+$smarty = new Smarty();
+```
+
+You now have a Smarty object that you can use to render templates.
+
+```php
+<?php
+
+require 'vendor/autoload.php';
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+$smarty->display('string:The current smarty version is: {$smarty.version}.');
+// or
+echo $smarty->fetch('string:The current smarty version is: {$smarty.version}.');
+```
+
+## Using file-based templates
+You probably want to manage your templates as files. Create a subdirectory called 'templates' and
+then configure Smarty to use that:
+
+```php
+<?php
+
+require 'vendor/autoload.php';
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+$smarty->setTemplateDir(__DIR__ . '/templates');
+```
+
+Say you have a template file called 'version.tpl', stored in the 'templates' directory like this:
+```smarty
+<h1>Hi</h1>
+The current smarty version is: {$smarty.version|escape}.
+```
+
+You can now render this, using:
+```php
+<?php
+
+require 'vendor/autoload.php';
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+$smarty->setTemplateDir(__DIR__ . '/templates');
+$smarty->display('version.tpl');
+```
+
+## Assigning variables
+
+Templates start to become really useful once you add variables to the mix.
+
+Create a template called 'footer.tpl' in the 'templates' directory like this:
+```smarty
+<small>Copyright {$companyName|escape}</small>
+```
+
+Now assign a value to the 'companyName' variable and render your template like this:
+
+```php
+<?php
+
+require 'vendor/autoload.php';
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+$smarty->setTemplateDir(__DIR__ . '/templates');
+$smarty->assign('companyName', 'AC & ME Corp.');
+$smarty->display('footer.tpl');
+```
+
+Run this, and you will see:
+
+```html
+<small>Copyright AC &amp; ME Corp.</small>
+```
+
+Note how the [escape modifier](../designers/language-modifiers/language-modifier-escape.md)
+translated the `&` character into the proper HTML syntax `&amp;`.
+Read more about auto-escaping in the [next section](./configuring.md). \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/api/caching/basics.md b/vendor/smarty/smarty/docs/api/caching/basics.md
new file mode 100644
index 000000000..19c04c997
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/caching/basics.md
@@ -0,0 +1,184 @@
+# Caching
+
+Caching is used to speed up the rendering of a template by saving and re-using the output.
+
+If a cached version of the call is available, that is displayed instead of
+regenerating the output. Caching can speed things up tremendously,
+especially templates with longer computation times.
+
+Since templates can include or extend other templates, one
+cache file could conceivably be made up of several template files,
+config files, etc.
+
+> ** Note **
+>
+> Since templates are dynamic, it is important to be careful what you are
+> caching and for how long. For instance, if you are displaying the front
+> page of your website that does not change its content very often, it
+> might work well to cache this page for an hour or more. On the other
+> hand, if you are displaying a page with a timetable containing new
+> information by the minute, it would not make sense to cache this page.
+
+## Setting Up Caching
+
+The first thing to do is enable caching by calling `Smarty::setCaching()` with either
+`\Smarty\Smarty::CACHING_LIFETIME_CURRENT` or `\Smarty\Smarty::CACHING_LIFETIME_SAVED`.
+Or with `\Smarty\Smarty::CACHING_OFF` to disable caching again.
+
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+// enable caching, using the current lifetime (see below)
+$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+// enable caching, using the lifetime set when the cache was saved (see below)
+$smarty->setCaching(Smarty::CACHING_LIFETIME_SAVED);
+
+// disable caching
+$smarty->setCaching(Smarty::CACHING_OFF);
+
+$smarty->display('index.tpl');
+```
+
+With caching enabled, the function call to `$smarty->display('index.tpl')` will
+render the template as usual, but also saves a copy of its output. On the
+next call to `$smarty->display('index.tpl')`, the cached copy will be used
+instead of rendering the template again.
+
+> **Note**
+>
+> By default, Smarty saved its caches as files in a dir called `cache` relative to the current
+> directory. The default directory can be changed using `$smarty->setCacheDir('/some/cache/dir');`
+> The files are named similar
+> to the template name. Although they end in the `.php` extension, they
+> are not intended to be directly executable. Do not edit these files!
+
+## Cache lifetime
+
+Each cached page has a limited lifetime. The default value is 3600
+seconds, or one hour. After that time expires, the cache is regenerated.
+
+You can change the lifetime as follows:
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+// or $smarty->setCaching(Smarty::CACHING_LIFETIME_SAVED);
+
+// set the cache_lifetime to 5 minutes
+$smarty->setCacheLifetime(5 * 60);
+```
+
+Setting caching to a value of `\Smarty\Smarty::CACHING_LIFETIME_CURRENT` tells Smarty to use
+the current lifetime to determine if the cache has expired.
+
+A value of `\Smarty\Smarty::CACHING\_LIFETIME\_SAVED` tells Smarty to use the lifetime value at the time the
+cache was generated. This way you can set the just before rendering a template to have granular control over
+when that particular cache expires.
+
+An example:
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+// retain current cache lifetime for each specific display call
+$smarty->setCaching(Smarty::CACHING_LIFETIME_SAVED);
+
+// set the cache_lifetime for index.tpl to 5 minutes
+$smarty->setCacheLifetime(300);
+$smarty->display('index.tpl');
+
+// set the cache_lifetime for home.tpl to 1 hour
+$smarty->setCacheLifetime(3600);
+$smarty->display('home.tpl');
+
+// NOTE: the following $cache_lifetime setting will not work when $caching
+// is set to Smarty::CACHING_LIFETIME_SAVED.
+// The cache lifetime for home.tpl has already been set
+// to 1 hour, and will no longer respect the value of $cache_lifetime.
+// The home.tpl cache will still expire after 1 hour.
+$smarty->setCacheLifetime(30); // 30 seconds
+$smarty->display('home.tpl');
+```
+
+## Compile check
+
+By default, every template file and config file that is involved with the cache file
+is checked for modification. If any of the files have been modified
+since the cache was generated, the cache is immediately regenerated.
+
+This is a computational overhead, so for optimum performance, disable this on a production environment:
+
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+$smarty->setCompileCheck(Smarty::COMPILECHECK_OFF);
+
+$smarty->display('index.tpl');
+```
+
+## Checking if a template is cached
+
+Smarty's `isCached() method can be used to test if a
+template has a valid cache or not. If you have a cached template that
+requires something like a database fetch, you can use this to skip that
+process.
+
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+if (!$smarty->isCached('index.tpl')) {
+ // No cache available, do variable assignments here.
+ $smarty->assign('data', do_expensive_database_calls());
+}
+
+$smarty->display('index.tpl');
+```
+
+## Nocache-blocks
+You can keep parts of a page dynamic (disable caching) with the
+[`{nocache}{/nocache}`](../../designers/language-builtin-functions/language-function-nocache.md) block function,
+or by using the `nocache` parameter for most template functions.
+
+Let's say the whole page can be cached except for a banner that is
+displayed down the side of the page. By using a [`{nocache}{/nocache}`](../../designers/language-builtin-functions/language-function-nocache.md)
+block for the banner, you can
+keep this element dynamic within the cached content.
+
+## Clearing the cache
+You can clear all the cache files with Smarty's `clearAllCache()` method, or individual cache
+files with the `clearCache()` method.
+
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+// clear only cache for index.tpl
+$smarty->clearCache('index.tpl');
+
+// clear out all cache files
+$smarty->clearAllCache();
+
+// clear out all cache files older than one hour
+$smarty->clearAllCache(3600);
+
+// or, clear all expired caches
+$smarty->clearAllCache(Smarty::CLEAR_EXPIRED);
+```
+
+
diff --git a/vendor/smarty/smarty/docs/api/caching/custom-storage-layers.md b/vendor/smarty/smarty/docs/api/caching/custom-storage-layers.md
new file mode 100644
index 000000000..f43e724e6
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/caching/custom-storage-layers.md
@@ -0,0 +1,36 @@
+# Custom cache storage layers
+
+As an alternative to using the default file-based caching mechanism, you
+can specify a custom cache implementation that will be used to read,
+write and clear cached files.
+
+With a custom cache implementation you could replace the slow filesystem by a
+faster storage engine, centralize the cache to be accessible to multiple
+servers.
+
+Smarty requires implementations to extend `\Smarty\Cacheresource\Base`, but encourages you to either extend
+`\Smarty\Cacheresource\Custom` or `\Smarty\Cacheresource\KeyValueStore`.
+
+- `\Smarty\Cacheresource\Custom` is a simple API directing all read, write,
+clear calls to your implementation. This API allows you to store
+wherever and however you deem fit.
+- `\Smarty\Cacheresource\KeyValueStore` allows you to turn any
+KeyValue-Store (like APC or Memcache) into a full-featured
+CacheResource implementation. Everything around deep
+cache-groups like "a|b|c" is being handled for you in a way that
+guarantees clearing the cache-group "a" will clear all nested groups
+as well - even though KeyValue-Stores don't allow this kind of
+hierarchy by nature.
+
+Custom CacheResources must be registered on
+runtime with `Smarty\Smarty::setCacheResource()`:
+
+```php
+<?php
+
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+$smarty->setCacheResource(new My_CacheResource_Mysql());
+```
+
diff --git a/vendor/smarty/smarty/docs/api/caching/multiple-caches-per-template.md b/vendor/smarty/smarty/docs/api/caching/multiple-caches-per-template.md
new file mode 100644
index 000000000..c3da9d0a4
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/caching/multiple-caches-per-template.md
@@ -0,0 +1,137 @@
+# Multiple caches per template
+
+## Introduction
+
+You can have multiple cache files for a single call to
+`display()` or `fetch()`.
+
+Let's say that
+a call to `$smarty->display('index.tpl')` may have several different output
+contents depending on some condition, and you want separate caches for
+each one. You can do this by passing a `$cache_id` as the second
+parameter to the function call:
+
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+$my_cache_id = (int) $_GET['article_id'];
+
+$smarty->display('index.tpl', $my_cache_id);
+```
+
+
+Above, we are passing the variable `$my_cache_id` to
+[`display()`](#api.display) as the `$cache_id`. For each unique value of
+`$my_cache_id`, a separate cache will be generated for `index.tpl`. In
+this example, `article_id` was passed in the URL and is used as the
+`$cache_id`.
+
+> **Note**
+>
+> Be very cautious when passing values from a client (web browser) into
+> Smarty or any PHP application. Although the above example of using the
+> article_id from the URL looks handy, it could have bad consequences.
+> The `$cache_id` is used to create a directory on the file system, so
+> if the user decided to write a script that sends random article_id's at a rapid pace,
+> this could possibly cause problems at the server level.
+> Be sure to sanitize any data passed in before using it. In this example, you might want to check if
+> the article_id is a valid ID in the database.
+
+Be sure to pass the same `$cache_id` as the second parameter to
+`isCached()` and `clearCache()`.
+
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+$my_cache_id = (int) $_GET['article_id'];
+
+if (!$smarty->isCached('index.tpl', $my_cache_id)) {
+ // ...
+}
+
+$smarty->display('index.tpl', $my_cache_id);
+```
+
+## Clearing specific caches
+
+You can clear all caches for a particular `$cache_id` by passing NULL as
+the first parameter to `clearCache()`.
+
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+// clear all caches with "sports" as the $cache_id
+$smarty->clearCache(null, 'sports');
+
+$smarty->display('index.tpl', 'sports');
+```
+
+In this manner, you can "group" your caches together by giving them the
+same `$cache_id`.
+
+## Advanced cache grouping
+
+You can do more elaborate grouping by setting up `$cache_id` groups.
+This is accomplished by separating each sub-group with a vertical bar
+`|` in the `$cache_id` value. You can have as many sub-groups as you
+like.
+
+- You can think of cache groups like a directory hierarchy. For
+ instance, a cache group of `'a|b|c'` could be thought of as the
+ directory structure `'/a/b/c/'`.
+
+- `clearCache(null, 'a|b|c')` would be like removing the files
+ `'/a/b/c/*'`. `clearCache(null, 'a|b')` would be like removing the
+ files `'/a/b/*'`.
+
+- If you specify a template name such as
+ `clearCache('foo.tpl', 'a|b|c')` then Smarty will attempt to remove
+ `'/a/b/c/foo.tpl'`.
+
+- You CANNOT remove a specified template name under multiple cache
+ groups such as `'/a/b/*/foo.tpl'`, the cache grouping works
+ left-to-right ONLY. You will need to group your templates under a
+ single cache group hierarchy to be able to clear them as a group.
+
+Cache grouping should not be confused with your template directory
+hierarchy, the cache grouping has no knowledge of how your templates are
+structured. So for example, if you have a template structure like
+`themes/blue/index.tpl` and you want to be able to clear all the cache
+files for the "blue" theme, you will need to create a cache group
+structure that mimics your template file structure, such as
+`display('themes/blue/index.tpl', 'themes|blue')`, then clear them with
+`clearCache(null, 'themes|blue')`.
+
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+// clear all caches with 'sports|basketball' as the first two cache_id groups
+$smarty->clearCache(null, 'sports|basketball');
+
+// clear all caches with "sports" as the first cache_id group. This would
+// include "sports|basketball", or "sports|(anything)|(anything)|(anything)|..."
+$smarty->clearCache(null, 'sports');
+
+// clear the foo.tpl cache file with "sports|basketball" as the cache_id
+$smarty->clearCache('foo.tpl', 'sports|basketball');
+
+$smarty->display('index.tpl', 'sports|basketball');
+```
+
+
diff --git a/vendor/smarty/smarty/docs/api/configuring.md b/vendor/smarty/smarty/docs/api/configuring.md
new file mode 100644
index 000000000..540f6906d
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/configuring.md
@@ -0,0 +1,225 @@
+# Configuring Smarty
+
+## Setting the template path
+By default, Smarty looks for templates to render in `./templates`.
+
+You can change this, or even use multiple paths to use when looking for templates.
+
+If you need to change this, you can use `setTemplateDir()` or `addTemplateDir()`.
+Use `getTemplateDir()` to retrieve the configured paths.
+
+```php
+<?php
+
+ // set a single directory where the config files are stored
+$smarty->setTemplateDir('./templates');
+
+// set multiple directories where templates are stored
+$smarty->setTemplateDir(['./templates', './templates_2', './templates_3']);
+
+// add directory where templates files are stored to the current list of dirs
+$smarty->addTemplateDir('./templates_1');
+
+// add multiple directories to the current list of dirs
+$smarty->addTemplateDir([
+ './templates_2',
+ './templates_3',
+]);
+
+// chaining of method calls
+$smarty->setTemplateDir('./templates')
+ ->addTemplateDir('./templates_1')
+ ->addTemplateDir('./templates_2');
+
+// insert a template dir before exising template dirs
+$smarty->prependTemplateDir('./more_important_templates')
+
+// get all directories where config files are stored
+$template_dirs = $smarty->getTemplateDir();
+var_dump($template_dirs); // array
+
+// get directory identified by key
+$template_dir = $smarty->getTemplateDir(0);
+var_dump($template_dir); // string
+```
+
+## Setting the path for compiled templates
+Smarty compiles templates to native PHP to be as fast as possible.
+The default path where these PHP-files are stored is `./templates_c`.
+
+If you need to change this, you can use `setCompileDir()`.
+Use `getCompileDir()` to retrieve the configured path.
+
+```php
+<?php
+
+// set another path to store compiled templates
+$smarty->setCompileDir('/data/compiled_templates');
+
+// get directory where compiled templates are stored
+$compileDir = $smarty->getCompileDir();
+```
+
+
+## Setting the config path
+Smarty can [load data from config files](./variables/config-files.md).
+By default, Smarty loads the config files from `./configs`.
+
+You can change this, or even use multiple paths to use when looking for config files.
+
+If you need to change this, you can use `setConfigDir()` or `addConfigDir()`.
+Use `getConfigDir()` to retrieve the configured paths.
+
+```php
+<?php
+
+ // set a single directory where the config files are stored
+$smarty->setConfigDir('./config');
+
+// set multiple directories where config files are stored
+$smarty->setConfigDir(['./config', './config_2', './config_3']);
+
+// add directory where config files are stored to the current list of dirs
+$smarty->addConfigDir('./config_1');
+
+// add multiple directories to the current list of dirs
+$smarty->addConfigDir([
+ './config_2',
+ './config_3',
+]);
+
+// chaining of method calls
+$smarty->setConfigDir('./config')
+ ->addConfigDir('./config_1', 'one')
+ ->addConfigDir('./config_2', 'two');
+
+// get all directories where config files are stored
+$config_dirs = $smarty->getConfigDir();
+var_dump($config_dirs); // array
+
+// get directory identified by key
+$config_dir = $smarty->getConfigDir(0);
+var_dump($config_dir); // string
+```
+
+## Setting the path for caches
+Even though Smarty runs templates as native PHP for maximum speed, it still needs to
+execute the PHP code on each call. If your data doesn't change all that often, you
+may be able to speed up your application even more by using output caching.
+
+Output caching can be a tricky subject, so we devoted an entire [section to caching](./caching/basics.md).
+Be sure to read that if you want to use caching.
+
+By default, Smarty stores caches to PHP-files in a subdirectory named `./cache`.
+
+If you need to change this, you can use `setCacheDir()`.
+Use `getCacheDir()` to retrieve the configured path.
+
+```php
+<?php
+
+// set another path to store caches
+$smarty->setCacheDir('/data/caches');
+
+// get directory where cached templates are stored
+$cacheDir = $smarty->getCacheDir();
+```
+
+## Enabling auto-escaping
+By default, Smarty does not escape anything you render in your templates. If you use
+Smarty to render a HTML-page, this means that you will have to make sure that you do
+not render any characters that have a special meaning in HTML, such as `&`, `<` and `>`,
+or apply the [escape modifier](../designers/language-modifiers/language-modifier-escape.md)
+to anything you want to render.
+
+If you forget to do so, you may break your HTML page, or even create a vulnerability for
+attacks known as [XSS or Cross Site Scripting](https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html).
+
+Luckily, you can tell Smarty to automatically apply the escape modifier to any dynamic part of your template.
+It's like Smarty magically adds `|escape` to every variable you use on a web page.
+
+Enable auto-escaping for HTML as follows:
+```php
+$smarty->setEscapeHtml(true);
+```
+
+When auto-escaping is enabled, the `|escape` modifier's default mode (`html`) has no effect,
+to avoid double-escaping. It is possible to force it with the `force` mode.
+Other modes (`htmlall`, `url`, `urlpathinfo`, `quotes`, `javascript`) may be used
+with the result you might expect, without double-escaping.
+
+Even when auto-escaping is enabled, you might want to display the content of a variable without
+escaping it. To do so, use the `|raw` modifier.
+
+Examples (with auto-escaping enabled):
+```smarty
+{* these three statements are identical *}
+{$myVar}
+{$myVar|escape}
+{$myVar|escape:'html'}
+
+{* no double-escaping on these statements *}
+{$var|escape:'htmlall'}
+{$myVar|escape:'url'}
+{$myVar|escape:'urlpathinfo'}
+{$myVar|escape:'quotes'}
+{$myVar|escape:'javascript'}
+
+{* no escaping at all *}
+{$myVar|raw}
+
+{* force double-escaping *}
+{$myVar|escape:'force'}
+```
+
+## Disabling compile check
+By default, Smarty tests to see if the
+current template has changed since the last time
+it was compiled. If it has changed, it recompiles that template.
+
+Once an application is put into production, this compile-check step
+is usually no longer needed and the extra checks can significantly hurt performance.
+Be sure to disable compile checking on production for maximum performance.
+```php
+<?php
+$smarty->setCompileCheck(\Smarty\Smarty::COMPILECHECK_OFF);
+```
+
+If [`caching`](./caching/basics.md) is enabled and compile-check is
+enabled, then the cache files will get regenerated if an involved
+template file or config file was updated.
+
+## Charset encoding
+
+There are a variety of encodings for textual data, ISO-8859-1 (Latin1)
+and UTF-8 being the most popular. Unless you change `\Smarty\Smarty::$_CHARSET`,
+Smarty recognizes `UTF-8` as the internal charset.
+
+> **Note**
+>
+> `ISO-8859-1` has been PHP\'s default internal charset since the
+> beginning. Unicode has been evolving since 1991. Since then, it has
+> become the one charset to conquer them all, as it is capable of
+> encoding most of the known characters even across different character
+> systems (latin, cyrillic, japanese, ...). `UTF-8` is unicode\'s most
+> used encoding, as it allows referencing the thousands of character
+> with the smallest size overhead possible.
+>
+> Since unicode and UTF-8 are very widespread nowadays, their use is
+> strongly encouraged.
+
+> **Note**
+>
+> Smarty\'s internals and core plugins are truly UTF-8 compatible since
+> Smarty 3.1.
+
+```php
+<?php
+
+// use japanese character encoding
+mb_internal_charset('EUC-JP');
+
+\Smarty\Smarty::$_CHARSET = 'EUC-JP';
+$smarty = new \Smarty\Smarty();
+```
+
diff --git a/vendor/smarty/smarty/docs/api/extending/block-tags.md b/vendor/smarty/smarty/docs/api/extending/block-tags.md
new file mode 100644
index 000000000..2ae6e77b0
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/extending/block-tags.md
@@ -0,0 +1,59 @@
+# Custom block tags
+
+Block tags are tags of the form: `{func} .. {/func}`. In other
+words, they enclose a template block and operate on the contents of this
+block.
+
+Block functions take precedence over normal tags of the same name, that is, you
+cannot have both custom tag `{func}` and block tag `{func}..{/func}`.
+
+- By default, your function implementation is called twice by Smarty:
+ once for the opening tag, and once for the closing tag. (See
+ `$repeat` below on how to change this.)
+
+- Only the opening tag of the block has attributes. All attributes are contained in the `$params`
+ variable as an associative array. The opening tag attributes are
+ also accessible to your function when processing the closing tag.
+
+- The value of the `$content` variable depends on whether your
+ function is called for the opening or closing tag. In case of the
+ opening tag, it will be NULL, and in case of the closing tag it will
+ be the contents of the template block. Note that the template block
+ will have already been processed by Smarty, so all you will receive
+ is the template output, not the template source.
+
+- The parameter `$repeat` is passed by reference to the function
+ implementation and provides a possibility for it to control how many
+ times the block is displayed. By default `$repeat` is TRUE at the
+ first call of the block function (the opening tag) and FALSE on all
+ subsequent calls to the block function (the block's closing tag).
+ Each time the function implementation returns with `$repeat` being
+ TRUE, the contents between `{func}...{/func}` are evaluated and the
+ function implementation is called again with the new block contents
+ in the parameter `$content`.
+
+Example:
+```php
+<?php
+
+function smarty_block_translate($params, $content, \Smarty\Template $template, &$repeat) {
+ // only output on the closing tag
+ if (!$repeat){
+ if (isset($content)) {
+ $lang = $params['lang'];
+ // do some intelligent translation thing here with $content
+ return $translation;
+ }
+ }
+}
+
+$smarty->registerPlugin(Smarty\Smarty::PLUGIN_BLOCK, 'translate', 'smarty_block_translate');
+```
+
+This can now be used in your templates as follows:
+
+```smarty
+{translate lang='nl'}
+ Quia omnis nulla omnis iusto est id et.
+{/translate}
+```
diff --git a/vendor/smarty/smarty/docs/api/extending/extensions.md b/vendor/smarty/smarty/docs/api/extending/extensions.md
new file mode 100644
index 000000000..5c87d4dc6
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/extending/extensions.md
@@ -0,0 +1,101 @@
+# Creating an extension
+
+## Default extensions
+
+In order to organize your custom tags and modifiers, you can create an Extension.
+In fact, most of Smarty itself is organized into two extensions:
+
+- the core extension, which provides the basic language tags such as `{if}`, `{for}` and `{assign}`.
+- the default extension, which provides all default modifiers such as `|escape`, `|nl2br` and `|number_format`
+ and tags such as `{html_image}`, `{mailto}` and `{textformat}` that are enabled by default, but not necessarily universal.
+
+> ** Note **
+>
+> There is also the 'BCPluginsAdapter' extension, which does not add any new functionality, but
+> wraps calls to deprecated methods such as `Smarty\Smarty::addPluginsDir()` and `Smarty\Smarty::loadFilter()`.
+
+## Writing your own extension
+
+In order to write your own custom extension, you must write a class that implements `Smarty\Extension\ExtensionInterface`.
+However, it is usually easier to extend `Smarty\Extension\Base` which provides empty implementation for each of the methods
+required by `Smarty\Extension\ExtensionInterface`. This allows you to only override the method(s) you need.
+
+Example:
+```php
+<?php
+
+use Smarty\Extension\Base;
+
+class MyExtension extends Base {
+
+ public function getModifierCompiler(string $modifier): ?\Smarty\Compile\Modifier\ModifierCompilerInterface {
+
+ switch ($modifier) {
+ case 'array_escape': return new MyArrayEscapeModifierCompiler();
+ case 'array_unescape': return new MyArrayUnescapeModifierCompiler();
+ }
+
+ return null;
+ }
+}
+
+```
+Another example, that would allow you to use any valid PHP callable as a modifier in your templates:
+
+```php
+<?php
+
+use Smarty\Extension\Base;
+
+class MyCallablePassThroughExtension extends Base {
+
+ public function getModifierCallback(string $modifierName) {
+
+ if (is_callable($modifierName)) {
+ return $modifierName;
+ }
+
+ return null;
+ }
+}
+
+```
+
+Writing an extension allows you to add a group of tags, block tags and modifiers to the Smarty language.
+It also allows you to register pre-, post- and output-filters in a structured way.
+The files in `src/Extension/` in the `smarty/smarty` dir should give you all the information you need to start
+writing your own extension.
+
+## Registering an extension
+
+When you have written your extension, add it to a Smarty instance as follows:
+
+```php
+<?php
+
+use Smarty\Smarty;
+
+$smarty = new Smarty();
+
+$smarty->addExtension(new MyCustomExtension());
+```
+
+This will add `MyCustomExtension` to the end of the extension list, meaning that you cannot override tags or modifiers
+from one of Smarty's default extensions.
+
+Should you wish to insert your extension at the top of the extension list, or create a very limited Smarty version that
+only contains the core extension, you can use `Smarty\Smarty::setExtensions()` to override the list of extensions.
+
+```php
+<?php
+
+use Smarty\Smarty;
+
+$smarty = new Smarty();
+
+$smarty->setExtensions([
+ new Smarty\Extension\CoreExtension(),
+ new MyCustomExtension(),
+ new Smarty\Extension\DefaultExtension(),
+]);
+``` \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/api/extending/introduction.md b/vendor/smarty/smarty/docs/api/extending/introduction.md
new file mode 100644
index 000000000..69cbce2ac
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/extending/introduction.md
@@ -0,0 +1,10 @@
+# Extending Smarty
+
+By default, Smarty is already very complete and powerful. However, you can unlock its real potential by
+extending Smarty.
+
+There are various ways to extend Smarty for it to suit your needs. You can create custom
+[tags](tags.md), [block tags](block-tags.md) and [modifiers](modifiers.md) by registering a method as a plugin.
+
+If this becomes too messy, you can group your custom tags, modifiers, and more into an [Extension](extensions.md).
+
diff --git a/vendor/smarty/smarty/docs/api/extending/modifiers.md b/vendor/smarty/smarty/docs/api/extending/modifiers.md
new file mode 100644
index 000000000..78540cf97
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/extending/modifiers.md
@@ -0,0 +1,27 @@
+# Custom modifiers
+
+Modifiers are little functions that are applied
+to a variable in the template before it is displayed or used in some
+other context. Smarty comes with a bunch of [modifiers](../../designers/language-modifiers/index.md), but you can
+easily add your own.
+
+In order to do so, you must write a function that accepts as its first parameter the value on which the
+modifier is to operate. The rest of the parameters are optional, depending on what kind of operation is to be performed.
+
+The modifier has to return the result of its processing.
+
+For example:
+```php
+<?php
+
+function smarty_modifier_substr($string, $offset, $length) {
+ return substr($string, $offset, $length);
+}
+
+$smarty->registerPlugin(Smarty\Smarty::PLUGIN_MODIFIER, 'substr', 'smarty_modifier_substr');
+```
+
+You can now use this in your templates as follows:
+```smarty
+{$applicationName|substr:0:20}
+```
diff --git a/vendor/smarty/smarty/docs/api/extending/tags.md b/vendor/smarty/smarty/docs/api/extending/tags.md
new file mode 100644
index 000000000..38cd4e923
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/extending/tags.md
@@ -0,0 +1,84 @@
+# Custom tags
+
+You can add your own tags to the Smarty language.
+
+## Runtime tags
+
+Usually, you'll add a runtime tag. Adding a runtime tag requires you to provide a callback function that accepts
+two parameters:
+
+- `$params`: all attributes from the template as an associative array.
+- `$template`: a `Smarty\Template` object representing the template where tag was used.
+
+The output (return value) of the function will be substituted in place
+of the tag in the template.
+
+If the function needs to assign some variables to the template or use
+some other Smarty-provided functionality, it can use the supplied
+`$template` object to do so.
+
+```php
+<?php
+
+function smarty_tag_eightball($params, \Smarty\Template $template): string {
+ $answers = [
+ 'Yes',
+ 'No',
+ 'No way',
+ 'Outlook not so good',
+ 'Ask again soon',
+ 'Maybe in your reality'
+ ];
+
+ $result = array_rand($answers);
+ return $answers[$result];
+}
+
+$smarty->registerPlugin(Smarty\Smarty::PLUGIN_FUNCTION, 'eightball', 'smarty_tag_eightball');
+```
+
+Which can now be used in the template as:
+
+```smarty
+Question: Will we ever have time travel?
+Answer: {eightball}.
+```
+
+## Compiler tags
+
+Compiler tags are called only during compilation of the template.
+
+They are useful for injecting PHP code or time-sensitive static content
+into the template. If there is both a compiler function and a runtime tag registered under the same name,
+the compiler function has precedence.
+
+The compiler function is passed two parameters: the params array which
+contains precompiled strings for the attribute values and the Smarty
+object. It's supposed to return the code to be injected into the
+compiled template including the surrounding PHP tags.
+
+Example:
+```php
+<?php
+
+function smarty_compiler_tplheader($params, Smarty $smarty) {
+ return "<?php\necho '" . $smarty->_current_file . " compiled at " . date('Y-m-d H:M'). "';\n?>";
+}
+
+$smarty->registerPlugin(Smarty\Smarty::PLUGIN_COMPILER, 'tplheader', 'smarty_compiler_tplheader');
+```
+
+This function can be called from the template as:
+
+```smarty
+{* this function gets executed at compile time only *}
+{tplheader}
+```
+
+The resulting PHP code in the compiled template would be something like
+this:
+
+```php
+<?php
+echo 'index.tpl compiled at 2023-02-20 20:02';
+```
diff --git a/vendor/smarty/smarty/docs/api/filters/output-filters.md b/vendor/smarty/smarty/docs/api/filters/output-filters.md
new file mode 100644
index 000000000..9de318924
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/filters/output-filters.md
@@ -0,0 +1,35 @@
+# Output filters
+
+When a template is rendered, its output can be sent through one or more
+output filters.
+
+> **Note**
+> This differs from [`prefilters`](prefilters.md) and
+> [`postfilters`](postfilters.md) because, pre- and postfilters
+> operate on compiled templates before they are saved to the disk, whereas
+> output filters operate on the template output when it is executed.
+
+Smarty will pass the template output as the first argument, and expect the function
+to return the result of the processing.
+
+Output filters can be either added as part of an [Extension](../extending/extensions.md) or
+registered as shown below.
+
+This will provide a rudimentary protection against spambots:
+```php
+<?php
+
+function protect_email($tpl_output, \Smarty\Template\ $template)
+{
+ return preg_replace(
+ '!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
+ '$1%40$2',
+ $tpl_output
+ );
+}
+
+// register the outputfilter
+$smarty->registerFilter("output", "protect_email");
+$smarty->display("index.tpl');
+
+```
diff --git a/vendor/smarty/smarty/docs/api/filters/postfilters.md b/vendor/smarty/smarty/docs/api/filters/postfilters.md
new file mode 100644
index 000000000..0f4ba9dcc
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/filters/postfilters.md
@@ -0,0 +1,33 @@
+# Postfilters
+
+Template postfilters are PHP functions that your templates are ran
+through *after they are compiled*.
+
+Smarty will
+pass the compiled template code as the first argument, and expect the
+function to return the result of the processing, which must also be valid PHP code.
+
+Prefilters can be either added as part of an [Extension](../extending/extensions.md) or
+registered as shown below.
+
+
+```php
+<?php
+
+function add_header_comment($tpl_source, \Smarty\Template\ $template)
+{
+ return "<?php echo \"<!-- Created by Smarty! -->\n\"; ?>\n".$tpl_source;
+}
+
+// register the postfilter
+$smarty->registerFilter('post', 'add_header_comment');
+$smarty->display('index.tpl');
+```
+
+The postfilter above will make the compiled Smarty template `index.tpl`
+look like:
+
+```smarty
+<!-- Created by Smarty! -->
+{* rest of template content... *}
+```
diff --git a/vendor/smarty/smarty/docs/api/filters/prefilters.md b/vendor/smarty/smarty/docs/api/filters/prefilters.md
new file mode 100644
index 000000000..2d5c19f94
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/filters/prefilters.md
@@ -0,0 +1,26 @@
+# Prefilters
+
+Template prefilters are PHP functions that your templates are ran
+through *before they are compiled*. This is good for preprocessing your
+templates to remove unwanted comments, keeping an eye on what people are
+putting in their templates, etc.
+
+Smarty will pass the template source code as the first argument, and
+expect the function to return the resulting template source code.
+
+Prefilters can be either added as part of an [Extension](../extending/extensions.md) or
+registered as shown below.
+
+This will remove all the html comments in the template source:
+```php
+<?php
+
+function remove_dw_comments($tpl_source, \Smarty\Template\ $template)
+{
+ return preg_replace("/<!--#.*-->/U",'',$tpl_source);
+}
+
+// register the prefilter
+$smarty->registerFilter('pre', 'remove_dw_comments');
+$smarty->display('index.tpl');
+```
diff --git a/vendor/smarty/smarty/docs/api/inheritance.md b/vendor/smarty/smarty/docs/api/inheritance.md
new file mode 100644
index 000000000..f58369e65
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/inheritance.md
@@ -0,0 +1,130 @@
+# Template Inheritance
+
+Inheritance allows you to define base templates that can
+be extended by child templates. Extending means that the child template
+can override all or some of the named block areas in the base template.
+
+When you render the child template, the result will as if you rendered
+the base template, with only the block(s) that you have overridden in the
+child templates differing.
+
+- The inheritance tree can be as deep as you want, meaning you can
+ extend a file that extends another one that extends another one and
+ so on.
+
+- The child templates can not define any content besides what's
+ inside [`{block}`](../designers/language-builtin-functions/language-function-block.md) tags they override.
+ Anything outside of [`{block}`](../designers/language-builtin-functions/language-function-block.md) tags will
+ be removed.
+
+- Template inheritance is a compile time process which creates a
+ single compiled template file. Compared to corresponding solutions
+ based on subtemplates included with the
+ [`{include}`](../designers/language-builtin-functions/language-function-include.md) tag it does have much
+ better performance when rendering.
+
+## Basic inheritance
+
+First, create a base template with one or more [blocks](../designers/language-builtin-functions/language-function-block.md).
+Then, create a child template. The child template
+must have an [{extends} tag](../designers/language-builtin-functions/language-function-extends.md) on its first line.
+
+The child template can redefine one or more blocks defined in the base template.
+
+See below for a simple example.
+
+layout.tpl (base)
+
+```smarty
+<html>
+ <head>
+ <title>{block name=title}Default Page Title{/block}</title>
+ {block name=head}{/block}
+ </head>
+ <body>
+ {block name=body}{/block}
+ </body>
+</html>
+```
+
+
+myproject.tpl (child)
+
+```smarty
+{extends file='layout.tpl'}
+{block name=head}
+ <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
+ <script src="/js/mypage.js"></script>
+{/block}
+```
+
+mypage.tpl (grandchild)
+
+```smarty
+{extends file='myproject.tpl'}
+{block name=title}My Page Title{/block}
+{block name=head}
+ <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
+ <script src="/js/mypage.js"></script>
+{/block}
+{block name=body}My HTML Page Body goes here{/block}
+```
+
+
+To render the above, you would use:
+
+```php
+<?php
+$smarty->display('mypage.tpl');
+```
+
+The resulting output is:
+
+```html
+<html>
+ <head>
+ <title>My Page Title</title>
+ <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
+ <script src="/js/mypage.js"></script>
+ </head>
+ <body>
+ My HTML Page Body goes here
+ </body>
+</html>
+```
+
+> **Note**
+>
+> When [compile-check](./configuring.md#disabling-compile-check) is enabled, all files
+> in the inheritance tree
+> are checked for modifications upon each invocation. You may want to
+> disable compile-check on production servers for this reason.
+
+> **Note**
+>
+> If you have a subtemplate which is included with
+> [`{include}`](../designers/language-builtin-functions/language-function-include.md) and it contains
+> [`{block}`](../designers/language-builtin-functions/language-function-block.md) areas it works only if the
+> [`{include}`](../designers/language-builtin-functions/language-function-include.md) itself is called from within
+> a surrounding [`{block}`](../designers/language-builtin-functions/language-function-block.md). In the final
+> parent template you may need a dummy
+> [`{block}`](../designers/language-builtin-functions/language-function-block.md) for it.
+
+
+## Using append and prepend
+The content of [`{block}`](../designers/language-builtin-functions/language-function-block.md) tags from child
+and parent templates can be merged by the `append` or `prepend`
+[`{block}`](../designers/language-builtin-functions/language-function-block.md) tag option flags and
+`{$smarty.block.parent}` or `{$smarty.block.child}` placeholders.
+
+## Extends resource type
+Instead of using [`{extends}`](../designers/language-builtin-functions/language-function-extends.md) tags in the
+template files you can define the inheritance tree in your PHP script by
+using the [`extends:` resource](resources.md#the-extends-resource) type.
+
+The code below will return same result as the example above.
+
+```php
+<?php
+$smarty->display('extends:layout.tpl|myproject.tpl|mypage.tpl');
+```
diff --git a/vendor/smarty/smarty/docs/api/rendering.md b/vendor/smarty/smarty/docs/api/rendering.md
new file mode 100644
index 000000000..a66b61269
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/rendering.md
@@ -0,0 +1,86 @@
+# Rendering templates
+
+## Fetching or rendering templates directly
+As explained in [basics](basics.md), you can use `$smarty->fetch()` or `$smarty->display()`
+to render a template directly.
+
+```php
+<?php
+
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+$smarty->display('homepage.tpl');
+
+// or
+
+$output = $smarty->fetch('homepage.tpl');
+```
+
+When you use `display()`, Smarty renders the template to the standard output stream.
+`fetch()` returns the output instead of echoing it.
+
+The example above uses simple filenames to load the template. Smarty also supports
+[loading templates from resources](resources.md).
+
+## Creating a template object
+You can also create a template object which later can be prepared first,
+and rendered later. This can be useful, for example if you plan to re-use several
+templates.
+
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+// create template object with its private variable scope
+$tpl = $smarty->createTemplate('index.tpl');
+
+// assign a variable (available only to this template)
+$tpl->assign('title', 'My Homepage!');
+
+// display the template
+$tpl->display();
+```
+
+More on assigning variables in [using data in templates](variables/assigning.md).
+
+
+## Testing if a template exists
+You can use `templateExists()` to check whether a template exists before you attempt to use it.
+
+It accepts either a path to the template on the filesystem or a
+resource string specifying the template.
+
+This example uses `$_GET['page']` to
+[`{include}`](../designers/language-builtin-functions/language-function-include.md) a content template. If the
+template does not exist then an error page is displayed instead. First,
+the `page_container.tpl`
+
+```smarty
+<html>
+ <head>
+ <title>{$title|escape}</title>
+ </head>
+ <body>
+ {* include middle content page *}
+ {include file=$content_template}
+ </body>
+</html>
+```
+
+And the php script:
+
+```php
+<?php
+
+// set the filename eg index.inc.tpl
+$mid_template = $_GET['page'].'.inc.tpl';
+
+if (!$smarty->templateExists($mid_template)){
+ $mid_template = 'page_not_found.tpl';
+}
+$smarty->assign('content_template', $mid_template);
+
+$smarty->display('page_container.tpl');
+```
diff --git a/vendor/smarty/smarty/docs/api/resources.md b/vendor/smarty/smarty/docs/api/resources.md
new file mode 100644
index 000000000..5ca52b12d
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/resources.md
@@ -0,0 +1,322 @@
+# Template resources
+
+## The filesystem resource
+
+So far in our examples, we have used simple filenames or paths when loading a template.
+
+For example, to load a template file called `homepage.tpl`, from the filesystem, you could write:
+```php
+<?php
+
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+$smarty->display('homepage.tpl');
+```
+
+The filesystem is the default resource. Templates, however, may come
+from a variety of sources. When you render a template, or
+when you include a template from within another template, you supply a
+resource type, followed by `:` and the appropriate path and template name.
+
+If a resource is not explicitly given, the default resource type is assumed.
+The resource type for the filesystem is `file`, which means that the previous example
+can be rewritten as follows:
+```php
+<?php
+
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+$smarty->display('file:homepage.tpl');
+```
+
+The file resource pulls templates source files from the directories
+specified using `Smarty::setTemplateDir()` (see [Configuring Smarty](configuring.md)).
+
+`setTemplateDir` accepts a single path, but can also ben called with an array of paths.
+In that case, the list of directories is traversed in the order they appear in the array. The
+first template found is the one to process.
+
+### Templates from a specific directory
+
+Smarty 3.1 introduced the bracket-syntax for specifying an element from
+`Smarty::setTemplateDir()`. This allows websites
+employing multiple sets of templates better control over which template
+to access.
+
+The bracket-syntax can be used as follows:
+```php
+<?php
+
+// setup template directories
+$smarty->setTemplateDir([
+ './templates', // element: 0, index: 0
+ './templates_2', // element: 1, index: 1
+ '10' => 'templates_10', // element: 2, index: '10'
+ 'foo' => 'templates_foo', // element: 3, index: 'foo'
+]);
+
+/*
+ assume the template structure
+ ./templates/foo.tpl
+ ./templates_2/foo.tpl
+ ./templates_2/bar.tpl
+ ./templates_10/foo.tpl
+ ./templates_10/bar.tpl
+ ./templates_foo/foo.tpl
+*/
+
+// regular access
+$smarty->display('file:foo.tpl');
+// will load ./templates/foo.tpl
+
+// using numeric index
+$smarty->display('file:[1]foo.tpl');
+// will load ./templates_2/foo.tpl
+
+// using numeric string index
+$smarty->display('file:[10]foo.tpl');
+// will load ./templates_10/foo.tpl
+
+// using string index
+$smarty->display('file:[foo]foo.tpl');
+// will load ./templates_foo/foo.tpl
+
+// using "unknown" numeric index (using element number)
+$smarty->display('file:[2]foo.tpl');
+// will load ./templates_10/foo.tpl
+```
+
+And, from within a Smarty template:
+
+```smarty
+{include file="file:foo.tpl"}
+{* will load ./templates/foo.tpl *}
+
+{include file="file:[1]foo.tpl"}
+{* will load ./templates_2/foo.tpl *}
+
+{include file="file:[foo]foo.tpl"}
+{* will load ./templates_foo/foo.tpl *}
+```
+
+### Using absolute paths
+
+Templates outside the specified template directories
+require the `file:` template resource type, followed by the absolute
+path to the template (with leading slash).
+
+```php
+<?php
+$smarty->display('file:/export/templates/index.tpl');
+$smarty->display('file:/path/to/my/templates/menu.tpl');
+````
+
+And from within a Smarty template:
+```smarty
+{include file='file:/usr/local/share/templates/navigation.tpl'}
+```
+
+> **Note**
+>
+> With [`Security`](security.md) enabled, access to
+> templates outside of the specified templates directories is
+> not allowed unless you whitelist those directories.
+
+### Windows file paths
+If you are running on Windows, file paths usually include a drive
+letter (such as `C:`) at the beginning of the pathname. Be sure to use `file:` in
+the path to avoid namespace conflicts and get the desired results.
+```php
+<?php
+$smarty->display('file:C:/export/templates/index.tpl');
+$smarty->display('file:F:/path/to/my/templates/menu.tpl');
+```
+
+And from within Smarty template:
+```smarty
+{include file='file:D:/usr/local/share/templates/navigation.tpl'}
+```
+
+### Handling missing templates
+If the file resource cannot find the requested template, it will check if there is
+a default template handler to call. By default, there is none, and Smarty will return an error,
+but you can register a default template handler calling `Smarty::registerDefaultTemplateHandler`
+with any [callable](https://www.php.net/manual/en/language.types.callable.php).
+
+```php
+<?php
+
+$smarty->registerDefaultTemplateHandler([$this, 'handleMissingTemplate']);
+
+// ...
+
+public function handleMissingTemplate($type, $name, &$content, &$modified, Smarty $smarty) {
+ if (/* ... */) {
+ // return corrected filepath
+ return "/tmp/some/foobar.tpl";
+ } elseif (/* ... */) {
+ // return a template directly
+ $content = "the template source";
+ $modified = time();
+ return true;
+ } else {
+ // tell smarty that we failed
+ return false;
+ }
+}
+
+```
+
+## The string and eval resources
+
+Smarty can render templates from a string by using the `string:` or
+`eval:` resource.
+
+- The `string:` resource behaves much the same as a template file. The
+ template source is compiled from a string and stores the compiled
+ template code for later reuse. Each unique template string will
+ create a new compiled template file. If your template strings are
+ accessed frequently, this is a good choice. If you have frequently
+ changing template strings (or strings with low reuse value), the
+ `eval:` resource may be a better choice, as it doesn\'t save
+ compiled templates to disk.
+
+- The `eval:` resource evaluates the template source every time a page
+ is rendered. This is a good choice for strings with low reuse value.
+ If the same string is accessed frequently, the `string:` resource
+ may be a better choice.
+
+> **Note**
+>
+> With a `string:` resource type, each unique string generates a
+> compiled file. Smarty cannot detect a string that has changed, and
+> therefore will generate a new compiled file for each unique string. It
+> is important to choose the correct resource so that you do not fill
+> your disk space with wasted compiled strings.
+
+```php
+<?php
+$smarty->assign('foo', 'value');
+$template_string = 'display {$foo} here';
+$smarty->display('string:' . $template_string); // compiles for later reuse
+$smarty->display('eval:' . $template_string); // compiles every time
+```
+From within a Smarty template:
+```smarty
+{include file="string:$template_string"} {* compiles for later reuse *}
+{include file="eval:$template_string"} {* compiles every time *}
+```
+
+Both `string:` and `eval:` resources may be encoded with
+[`urlencode()`](https://www.php.net/urlencode) or
+[`base64_encode()`](https://www.php.net/urlencode). This is not necessary
+for the usual use of `string:` and `eval:`, but is required when using
+either of them in conjunction with the [`extends resource`](#the-extends-resource).
+
+```php
+ <?php
+ $smarty->assign('foo','value');
+ $template_string_urlencode = urlencode('display {$foo} here');
+ $template_string_base64 = base64_encode('display {$foo} here');
+ $smarty->display('eval:urlencode:' . $template_string_urlencode); // will decode string using urldecode()
+ $smarty->display('eval:base64:' . $template_string_base64); // will decode string using base64_decode()
+```
+
+From within a Smarty template:
+```smarty
+ {include file="string:urlencode:$template_string_urlencode"} {* will decode string using urldecode() *}
+ {include file="eval:base64:$template_string_base64"} {* will decode string using base64_decode() *}
+```
+
+## The extends resource
+
+The `extends:` resource is used to define child/parent relationships. For details see section of
+[Template inheritance](inheritance.md).
+
+> **Note**
+>
+> Using the extends resource is usually not necessary. If you have a choice, it is normally more flexible and
+> intuitive to handle inheritance chains from within the templates using the [{extends} tag](inheritance.md).
+
+When `string:` and `eval:` templates are used, make sure they are properly url or base64 encoded.
+
+The templates within an inheritance chain are not compiled separately. Only a single compiled template will be generated.
+(If an `eval:` resource is found within an inheritance chain, its "don't save a compile file" property is superseded by
+the `extends:` resource.)
+
+Example:
+```php
+<?php
+$smarty->display('extends:parent.tpl|child.tpl|grandchild.tpl');
+
+// inheritance from multiple template sources
+$smarty->display('extends:db:parent.tpl|file:child.tpl|grandchild.tpl|eval:{block name="fooBazVar_"}hello world{/block}');
+```
+
+## The stream resource
+
+Smarty allow you to use [PHP streams](https://www.php.net/manual/en/function.stream-wrapper-register.php)
+as a template resource. Smarty will first look for a registered template resource. If nothing is
+found, it will check if a PHP stream is available. If a stream is available, Smarty will use it
+to fetch the template.
+
+For example,
+```php
+<?php
+stream_wrapper_register('myresource', MyResourceStream::class);
+$smarty->display('myresource:bar.tpl');
+```
+
+Or, from within a template:
+```smarty
+ {include file="myresource:bar.tpl"}
+```
+
+## Adding your own resource type
+You can create a class that extends `Smarty\Resource\CustomPlugin` to add your own resource type,
+for example to load template from a database.
+
+For example:
+```php
+<?php
+class HelloWorldResource extends Smarty\Resource\CustomPlugin {
+
+ protected function fetch($name, &$source, &$mtime) {
+ $source = '{$x="hello world"}{$x}'; // load your template here based on $name
+ $mtime = time();
+ }
+
+}
+
+// ..
+
+$smarty->registerResource('helloworld', new HelloWorldResource());
+```
+
+If a Resource's templates should not be run through the Smarty
+compiler, the Custom Resource may extend `\Smarty\Resource\UncompiledPlugin`.
+The Resource Handler must then implement the function
+`renderUncompiled(\Smarty\Template $_template)`. `$_template` is
+a reference to the current template and contains all assigned variables
+which the implementor can access via
+`$_template->getSmarty()->getTemplateVars()`. These Resources simply echo
+their rendered content to the output stream. The rendered output will be
+output-cached if the Smarty instance was configured accordingly. See
+`src/Resource/PhpPlugin.php` for an example.
+
+If the Resource's compiled templates should not be cached on disk, the
+Custom Resource may extend `\Smarty\Resource\RecompiledPlugin`. These Resources
+are compiled every time they are accessed. This may be an expensive
+overhead. See `src/Resource/StringEval.php` for an
+example.
+
+## Changing the default resource type
+The default resource type is `file`. If you want to change it, use `Smarty::setDefaultResourceType`.
+
+The following example will change the default resource type to `mysql`:
+```php
+<?php
+$smarty->setDefaultResourceType('mysql');
+```
diff --git a/vendor/smarty/smarty/docs/api/security.md b/vendor/smarty/smarty/docs/api/security.md
new file mode 100644
index 000000000..07120afdb
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/security.md
@@ -0,0 +1,119 @@
+# Security
+
+Security is good for situations when you have untrusted parties editing
+the templates, and you want to reduce the risk of system
+security compromises through the template language.
+
+The settings of the security policy are defined by overriding public properties of an
+instance of the \Smarty\Security class. These are the possible settings:
+
+- `$secure_dir` is an array of template directories that are
+ considered secure. A directory configured using `$smarty->setTemplateDir()` is
+ considered secure implicitly. The default is an empty array.
+- `$trusted_uri` is an array of regular expressions matching URIs that
+ are considered trusted. This security directive is used by
+ [`{fetch}`](../designers/language-custom-functions/language-function-fetch.md) and
+ [`{html_image}`](../designers/language-custom-functions/language-function-html-image.md). URIs passed to
+ these functions are reduced to `{$PROTOCOL}://{$HOSTNAME}` to allow
+ simple regular expressions (without having to deal with edge cases
+ like authentication-tokens).
+
+ The expression `'#https?://.*smarty.net$#i'` would allow accessing
+ the following URIs:
+
+ - `http://smarty.net/foo`
+ - `http://smarty.net/foo`
+ - `http://www.smarty.net/foo`
+ - `http://smarty.net/foo`
+ - `https://foo.bar.www.smarty.net/foo/bla?blubb=1`
+
+ but deny access to these URIs:
+
+ - `http://smarty.com/foo` (not matching top-level domain \"com\")
+ - `ftp://www.smarty.net/foo` (not matching protocol \"ftp\")
+ - `http://www.smarty.net.otherdomain.com/foo` (not matching end of
+ domain \"smarty.net\")
+
+- `$static_classes` is an array of classes that are considered
+ trusted. The default is an empty array which allows access to all
+ static classes. To disable access to all static classes set
+ $static_classes = null.
+
+- `$streams` is an array of streams that are considered trusted and
+ can be used from within template. To disable access to all streams
+ set $streams = null. An empty array ( $streams = [] ) will
+ allow all streams. The default is array('file').
+
+- `$allowed_modifiers` is an array of (registered / autoloaded)
+ modifiers that should be accessible to the template. If this array
+ is non-empty, only the herein listed modifiers may be used. This is
+ a whitelist.
+
+- `$disabled_modifiers` is an array of (registered / autoloaded)
+ modifiers that may not be accessible to the template.
+
+- `$allowed_tags` is a boolean flag which controls if constants can
+ function-, block and filter plugins that should be accessible to the
+ template. If this array is non-empty, only the herein listed
+ modifiers may be used. This is a whitelist.
+
+- `$disabled_tags` is an array of (registered / autoloaded) function-,
+ block and filter plugins that may not be accessible to the template.
+
+- `$allow_constants` is a boolean flag which controls if constants can
+ be accessed by the template. The default is "true".
+
+- `$allow_super_globals` is a boolean flag which controls if the PHP
+ super globals can be accessed by the template. The default is
+ "true".
+
+If security is enabled, no private methods, functions or properties of
+static classes or assigned objects can be accessed (beginning with
+'_') by the template.
+
+To customize the security policy settings you can extend the
+\Smarty\Security class or create an instance of it.
+
+```php
+<?php
+
+use Smarty\Smarty;
+
+class My_Security_Policy extends \Smarty\Security {
+ public $allow_constants = false;
+}
+
+$smarty = new Smarty();
+
+$smarty->enableSecurity('My_Security_Policy');
+```
+
+```php
+<?php
+
+use Smarty\Smarty;
+
+$smarty = new Smarty();
+
+$my_security_policy = new \Smarty\Security($smarty);
+$my_security_policy->allow_constants = false;
+
+$smarty->enableSecurity($my_security_policy);
+```
+
+```php
+<?php
+
+use Smarty\Smarty;
+
+$smarty = new Smarty();
+
+// enable default security
+$smarty->enableSecurity();
+```
+
+> **Note**
+>
+> Most security policy settings are only checked when the template gets
+> compiled. For that reason you should delete all cached and compiled
+> template files when you change your security settings.
diff --git a/vendor/smarty/smarty/docs/api/variables/assigning.md b/vendor/smarty/smarty/docs/api/variables/assigning.md
new file mode 100644
index 000000000..40a02c13b
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/variables/assigning.md
@@ -0,0 +1,139 @@
+# Assigning variables
+
+Templates start to become really useful once you know how to use variables.
+
+## Basic assigning
+Let's revisit the example from the [basics section](../basics.md). The following script assigns a value to
+the 'companyName' variable and renders the template:
+
+```php
+<?php
+
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+$smarty->assign('companyName', 'AC & ME Corp.');
+
+$smarty->display('footer.tpl');
+```
+
+footer.tpl:
+```smarty
+<small>Copyright {$companyName|escape}</small>
+```
+
+Smarty will apply the [escape modifier](../../designers/language-modifiers/language-modifier-escape.md)
+to the value assigned to the variable
+`companyName` and replace `{$companyName|escape}` with the result.
+
+```html
+<small>Copyright AC &amp; ME Corp.</small>
+```
+
+Using `$smarty->assign()` is the most common way of assigning data to templates, but there are several other methods.
+
+## Appending data to an existing variable
+Using `append()`, you can add data to an existing variable, usually an array.
+
+If you append to a string value, it is converted to an array value and
+then appended to. You can explicitly pass name/value pairs, or
+associative arrays containing the name/value pairs. If you pass the
+optional third parameter of TRUE, the value will be merged with the
+current array instead of appended.
+
+Examples:
+
+```php
+<?php
+// This is effectively the same as assign()
+$smarty->append('foo', 'Fred');
+// After this line, foo will now be seen as an array in the template
+$smarty->append('foo', 'Albert');
+
+$array = [1 => 'one', 2 => 'two'];
+$smarty->append('X', $array);
+$array2 = [3 => 'three', 4 => 'four'];
+// The following line will add a second element to the X array
+$smarty->append('X', $array2);
+
+// passing an associative array
+$smarty->append(['city' => 'Lincoln', 'state' => 'Nebraska']);
+```
+
+## Assigning to template objects
+When you use a template objects, as explained in [rendering a template](../rendering.md#creating-a-template-object),
+you can assign data to the template objects directly instead of assigning it to Smarty. This way, you can use different
+sets of data for different templates.
+
+For example:
+```php
+<?php
+
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+$tplBlue = $smarty->createTemplate('blue.tpl');
+$tplBlue->assign('name', 'The one');
+$tplBlue->display();
+
+$tplRed = $smarty->createTemplate('red.tpl');
+$tplRed->assign('name', 'Neo');
+$tplRed->display();
+```
+
+## Using data objects
+For more complex use cases, Smarty supports the concept of data objects.
+Data objects are containers to hold data. Data objects can be attached to templates when creating them.
+This allows for fine-grained re-use of data.
+
+For example:
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty;
+
+// create a data object
+$data = $smarty->createData();
+
+// assign variable to the data object
+$data->assign('name', 'Neo');
+
+// create template object which will use variables from the data object
+$tpl = $smarty->createTemplate('index.tpl', $data);
+
+// display the template
+$tpl->display();
+```
+
+## Clearing assigned data
+When re-using templates, you may need to clear data assigned in a previous run. Use `clearAllAssign()` to
+clear the values of all assigned variables on data objects, template objects or the Smarty object.
+
+Examples:
+```php
+<?php
+// assigning data to the Smarty object
+$smarty->assign('Name', 'Fred');
+// ...
+$smarty->clearAllAssign();
+
+// using a data object
+$data = $smarty->createData();
+$data->assign('name', 'Neo');
+// ...
+$data->clearAllAssign();
+
+// using a template
+$tplBlue = $smarty->createTemplate('blue.tpl');
+$tplBlue->assign('name', 'The one');
+// ...
+$tplBlue->clearAllAssign();
+```
+
+Note that there it's only useful to clear assigned data if you:
+
+1. repeatedly re-use templates, and
+2. the variables used may change on each repetition
+
+If your script simply runs once and then ends, or you always assign the same variables, clearing assigned data
+is of no use. \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/api/variables/config-files.md b/vendor/smarty/smarty/docs/api/variables/config-files.md
new file mode 100644
index 000000000..107353bb7
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/variables/config-files.md
@@ -0,0 +1,88 @@
+# Loading data from config files
+
+Instead of [assigning data to templates from PHP](assigning.md), you can also
+use a config file.
+
+## Example config file
+Config files are best suited to manage template settings
+from one file. One example is a multi-language application.
+Instead of writing multiple templates to support different languages,
+you can write a single template file and load your language dependent strings
+from config files.
+
+Example `lang.en.ini`:
+```ini
+# global variables
+pageTitle = "Main Menu"
+
+[Customer]
+pageTitle = "Customer Info"
+
+[Login]
+pageTitle = "Login"
+focus = "username"
+Intro = """This is a value that spans more
+ than one line. you must enclose
+ it in triple quotes."""
+
+```
+
+Values of [config file variables](../../designers/language-variables/language-config-variables.md) can be in
+quotes, but not necessary. You can use either single or double quotes.
+If you have a value that spans more than one line, enclose the entire
+value with triple quotes \("""\). You can put comments into config
+files by any syntax that is not a valid config file syntax. We recommend
+using a `#` (hash) at the beginning of the line.
+
+The example config file above has two sections. Section names are
+enclosed in \[brackets\]. Section names can be arbitrary strings not
+containing `[` or `]` symbols. The variable at the top is a global
+variable. Global variables are always
+loaded from the config file. If a particular section is loaded, then the
+global variables and the variables from that section are also loaded. If
+a variable exists both as a global and in a section, the section
+variable is used.
+
+## Loading a config file
+
+Config files are loaded into templates with the built-in template
+function [`{config_load}`](../../designers/language-builtin-functions/language-function-config-load.md) or by calling
+`configLoad()` from PHP:
+
+```php
+<?php
+$smarty->configLoad('lang.en.ini');
+```
+
+Load a specific section with:
+
+```php
+<?php
+$smarty->configLoad('lang.en.ini', 'Customer');
+```
+
+Note that the global section will always be loaded.
+
+## Retrieving config variables in PHP
+
+
+## Loading from a resource
+Config files (or resources) are loaded by the same resource facilities
+as templates. That means that a config file can also be loaded from a db. See [resources](../resources.md)
+for more information.
+
+## Config overwrite
+If you name two variables the same within a section,
+the last one will be used unless you call:
+```php
+<?php
+$smarty->setConfigOverwrite(false);
+```
+When config overwrite is disabled, Smarty will create arrays of config file variables when it encounters
+multiple entries with the same name.
+
+See also [`{config_load}`](../../designers/language-builtin-functions/language-function-config-load.md),
+[`$default_config_handler_func`](../../programmers/api-variables/variable-default-config-handler-func.md),
+[`getConfigVars()`](../../programmers/api-functions/api-get-config-vars.md),
+[`clearConfig()`](../../programmers/api-functions/api-clear-config.md) and
+[`configLoad()`](../../programmers/api-functions/api-config-load.md)
diff --git a/vendor/smarty/smarty/docs/api/variables/objects.md b/vendor/smarty/smarty/docs/api/variables/objects.md
new file mode 100644
index 000000000..9befcb18e
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/variables/objects.md
@@ -0,0 +1,106 @@
+# Objects
+
+Smarty allows access to PHP [objects](https://www.php.net/object) through
+the templates.
+
+> **Note**
+>
+> When you assign/register objects to templates, be sure that all
+> properties and methods accessed from the template are for presentation
+> purposes only. It is very easy to inject application logic through
+> objects, and this leads to poor designs that are difficult to manage.
+> See the Best Practices section of the Smarty website.
+
+There are two ways to access them.
+
+## Assign the object
+You can assign objects to a template and access them much like any other assigned variable.
+
+Example:
+```php
+<?php
+// the object
+
+class My_Object {
+ public function meth1($params, $smarty_obj) {
+ return 'this is my meth1';
+ }
+}
+
+// We can also assign objects. assign_by_ref when possible.
+$smarty->assign('myobj', new My_Object());
+
+$smarty->display('index.tpl');
+```
+
+And here's how to access your object in `index.tpl`:
+
+```smarty
+{$myobj->meth1('foo',$bar)}
+```
+
+
+
+## Register the object
+Registerd objects use a different template syntax. Also, a registered object
+can be restricted to certain methods or
+properties. However, **a registered object cannot be looped over or
+assigned in arrays of objects**, etc.
+
+If security is enabled, no private methods or functions can be accessed
+(beginning with '_'). If a method and property of the same name exist,
+the method will be used.
+
+You can restrict the methods and properties that can be accessed by
+listing them in an array as the third registration parameter.
+
+By default, parameters passed to objects through the templates are
+passed the same way [custom tags](../../designers/language-custom-functions/index.md) get
+them. An associative array is passed as the first parameter, and the
+smarty object as the second. If you want the parameters passed one at a
+time for each argument like traditional object parameter passing, set
+the fourth registration parameter to FALSE.
+
+The optional fifth parameter has only effect with `format` being TRUE
+and contains a list of methods that should be treated as blocks. That
+means these methods have a closing tag in the template
+(`{foobar->meth2}...{/foobar->meth2}`) and the parameters to the methods
+have the same synopsis as the parameters for
+[`block tags`](../extending/block-tags.md): They get the four
+parameters `$params`, `$content`, `$smarty` and `&$repeat` and they also
+behave like block tags.
+
+```php
+<?php
+// the object
+
+class My_Object {
+ function meth1($params, $smarty_obj) {
+ return 'this is my meth1';
+ }
+}
+
+$myobj = new My_Object;
+
+// registering the object
+$smarty->registerObject('foobar', $myobj);
+
+// if we want to restrict access to certain methods or properties, list them
+$smarty->registerObject('foobar', $myobj, array('meth1','meth2','prop1'));
+
+// if you want to use the traditional object parameter format, pass a boolean of false
+$smarty->registerObject('foobar', $myobj, null, false);
+
+$smarty->display('index.tpl');
+```
+
+And here's how to access your objects in `index.tpl`:
+
+```smarty
+{* access our registered object *}
+{foobar->meth1 p1='foo' p2=$bar}
+
+{* you can also assign the output *}
+{foobar->meth1 p1='foo' p2=$bar assign='output'}
+the output was {$output}
+```
diff --git a/vendor/smarty/smarty/docs/api/variables/static-class-methods.md b/vendor/smarty/smarty/docs/api/variables/static-class-methods.md
new file mode 100644
index 000000000..fd3fea4c8
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/variables/static-class-methods.md
@@ -0,0 +1,39 @@
+# Static Classes
+
+You can directly access static classes. The syntax is roughly the same as in
+PHP.
+
+> **Note**
+>
+> Direct access to PHP classes is not recommended. This ties the
+> underlying application code structure directly to the presentation,
+> and also complicates template syntax. It is recommended to register
+> plugins which insulate templates from PHP classes/objects. Use at your
+> own discretion.
+
+## Examples
+
+**class constant BAR**
+```smarty
+{assign var=foo value=myclass::BAR}
+```
+
+**method result**
+```smarty
+{assign var=foo value=myclass::method()}
+```
+
+**method chaining**
+```smarty
+{assign var=foo value=myclass::method1()->method2}
+```
+
+**property bar of class myclass**
+```smarty
+{assign var=foo value=myclass::$bar}
+```
+
+**using Smarty variable bar as class name**
+```smarty
+{assign var=foo value=$bar::method}
+```
diff --git a/vendor/smarty/smarty/docs/api/variables/streams.md b/vendor/smarty/smarty/docs/api/variables/streams.md
new file mode 100644
index 000000000..c872cf8bb
--- /dev/null
+++ b/vendor/smarty/smarty/docs/api/variables/streams.md
@@ -0,0 +1,16 @@
+# Streams
+
+You can also use streams to call variables. *{$foo:bar}* will use the
+*foo://bar* stream to get the template variable.
+
+Using a PHP stream for a template variable resource from within a
+template.
+
+```smarty
+{$foo:bar}
+```
+
+NB. Support for using streams to call variables is deprecated since Smarty v5.1 and will be removed
+in a future version.
+
+See also [`Template Resources`](../resources.md)
diff --git a/vendor/smarty/smarty/docs/appendixes/tips.md b/vendor/smarty/smarty/docs/appendixes/tips.md
index 3c6e6b96f..e4e38d4be 100644
--- a/vendor/smarty/smarty/docs/appendixes/tips.md
+++ b/vendor/smarty/smarty/docs/appendixes/tips.md
@@ -209,8 +209,7 @@ fetching the data up front?
You can do this by writing a custom plugin for fetching the content and
assigning it to a template variable.
-`function.load_ticker.php` - drop file in
-[`$plugins directory`](../programmers/api-variables/variable-plugins-dir.md)
+`function.load_ticker.php`
```php
diff --git a/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md b/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md
index 6704fce2f..50acd1950 100644
--- a/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md
+++ b/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md
@@ -10,8 +10,7 @@ of the console.
Set [`$debugging`](../programmers/api-variables/variable-debugging.md) to TRUE in Smarty, and if needed
set [`$debug_tpl`](../programmers/api-variables/variable-debug-template.md) to the template resource
-path to `debug.tpl` (this is in [`SMARTY_DIR`](../programmers/smarty-constants.md) by
-default). When you load the page, a Javascript console window will pop
+path to `debug.tpl`. When you load the page, a Javascript console window will pop
up and give you the names of all the included templates and assigned
variables for the current page.
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md
index c0a12a9be..e054d143c 100644
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md
+++ b/vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md
@@ -14,7 +14,7 @@ A simple Smarty template could look like this:
All Smarty template tags are enclosed within delimiters. By default
these are `{` and `}`, but they can be
-[changed](../../programmers/api-variables/variable-left-delimiter.md).
+[changed](../../designers/language-basic-syntax/language-escaping.md).
For the examples in this manual, we will assume that you are using the
default delimiters. In Smarty, all content outside of delimiters is
@@ -22,12 +22,12 @@ displayed as static content, or unchanged. When Smarty encounters
template tags, it attempts to interpret them, and displays the
appropriate output in their place.
-The basis components of the Smarty syntax are:
+The basic components of the Smarty syntax are:
- [Comments](language-syntax-comments.md)
- [Variables](language-syntax-variables.md)
-- [Functions](language-syntax-functions.md)
+- [Operators](language-syntax-operators.md)
+- [Tags](language-syntax-tags.md)
- [Attributes](language-syntax-attributes.md)
- [Quotes](language-syntax-quotes.md)
-- [Math](language-math.md)
- [Escaping](language-escaping.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md
index 4c75e09e6..9132b8c02 100644
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md
+++ b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md
@@ -45,8 +45,7 @@ variables.
Smarty's default delimiters { and } cleanly represent presentational
content. However, if another set of delimiters suit your needs better,
you can change them with Smarty's
-[`$left_delimiter`](../../programmers/api-variables/variable-left-delimiter.md) and
-[`$right_delimiter`](../../programmers/api-variables/variable-right-delimiter.md) values.
+`setLeftDelimiter()` and `setRightDelimiter()` methods.
> **Note**
>
@@ -57,8 +56,8 @@ you can change them with Smarty's
```php
<?php
-$smarty->left_delimiter = '<!--{';
-$smarty->right_delimiter = '}-->';
+$smarty->setLeftDelimiter('<!--{');
+$smarty->setRightDelimiter('}-->');
$smarty->assign('foo', 'bar');
$smarty->assign('name', 'Albert');
@@ -69,7 +68,7 @@ Where the template is:
```smarty
Welcome <!--{$name}--> to Smarty
-<script language="javascript">
+ <script>
var foo = <!--{$foo}-->;
function dosomething() {
alert("foo is " + foo);
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-math.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-math.md
deleted file mode 100644
index a9a43efd9..000000000
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-math.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Math
-
-Math can be applied directly to variable values.
-
-## Examples
-```smarty
-{$foo+1}
-
-{$foo*$bar}
-
-{* some more complicated examples *}
-
-{$foo->bar-$bar[1]*$baz->foo->bar()-3*7}
-
-{if ($foo+$bar.test%$baz*134232+10+$b+10)}
-
-{$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"}
-
-{assign var="foo" value="`$foo+$bar`"}
-```
-
-> **Note**
->
-> Although Smarty can handle some very complex expressions and syntax,
-> it is a good rule of thumb to keep the template syntax minimal and
-> focused on presentation. If you find your template syntax getting too
-> complex, it may be a good idea to move the bits that do not deal
-> explicitly with presentation to PHP by way of plugins or modifiers.
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md
index 41f6c458d..e3c7d58b2 100644
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md
+++ b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md
@@ -1,6 +1,6 @@
# Attributes
-Most of the [functions](./language-syntax-functions.md) take attributes that
+Most of the [tags](./language-syntax-tags.md) take attributes that
specify or modify their behavior. Attributes to Smarty functions are
much like HTML attributes. Static values don't have to be enclosed in
quotes, but it is required for literal strings. Variables with or
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md
index 7052c20ef..379418efb 100644
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md
+++ b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md
@@ -1,7 +1,7 @@
# Comments
Template comments are surrounded by asterisks, and that is surrounded by
-the [delimiter](../../programmers/api-variables/variable-left-delimiter.md) tags like so:
+the [delimiter](../../designers/language-basic-syntax/language-escaping.md) tags like so:
## Examples
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-functions.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-functions.md
deleted file mode 100644
index c3c8c21ce..000000000
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-functions.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# Functions
-
-Every Smarty tag either prints a [variable](./language-syntax-variables.md) or
-invokes some sort of function. These are processed and displayed by
-enclosing the function and its [attributes](./language-syntax-attributes.md)
-within delimiters like so: `{funcname attr1="val1" attr2="val2"}`.
-
-## Examples
-
-```smarty
-{config_load file="colors.conf"}
-
-{include file="header.tpl"}
-{insert file="banner_ads.tpl" title="My Site"}
-
-{if $logged_in}
- Welcome, <span style="color:{#fontColor#}">{$name}!</span>
-{else}
- hi, {$name}
-{/if}
-
-{include file="footer.tpl"}
-```
-
-- Both [built-in functions](../language-builtin-functions/index.md) and [custom
- functions](../language-custom-functions/index.md) have the same syntax within
- templates.
-
-- Built-in functions are the **inner** workings of Smarty, such as
- [`{if}`](../language-builtin-functions/language-function-if.md),
- [`{section}`](../language-builtin-functions/language-function-section.md) and
- [`{strip}`](../language-builtin-functions/language-function-strip.md). There should be no need to
- change or modify them.
-
-- Custom functions are **additional** functions implemented via
- [plugins](../../programmers/plugins.md). They can be modified to your liking, or you can
- create new ones. [`{html_options}`](../language-custom-functions/language-function-html-options.md)
- is an example of a custom function.
-
-See also [`registerPlugin()`](../../programmers/api-functions/api-register-plugin.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md
new file mode 100644
index 000000000..98a56538e
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md
@@ -0,0 +1,88 @@
+# Operators
+
+## Basic
+
+Various basic operators can be applied directly to variable values.
+
+## Examples
+```smarty
+{$foo + 1}
+
+{$foo * $bar}
+
+{$foo->bar - $bar[1] * $baz->foo->bar() -3 * 7}
+
+{if ($foo + $bar.test % $baz * 134232 + 10 + $b + 10)}
+ ...
+{/if}
+
+{$foo = $foo + $bar}
+```
+
+> **Note**
+>
+> Although Smarty can handle some very complex expressions and syntax,
+> it is a good rule of thumb to keep the template syntax minimal and
+> focused on presentation. If you find your template syntax getting too
+> complex, it may be a good idea to move the bits that do not deal
+> explicitly with presentation to PHP by way of plugins or modifiers.
+
+## List
+The following is a list of recognized operators, which must be
+separated from surrounding elements by spaces. Note that items listed in
+\[brackets\] are optional. PHP equivalents are shown where applicable.
+
+| Operator | Alternates | Syntax Example | Meaning | PHP Equivalent |
+|--------------------|------------|----------------------|--------------------------------|--------------------|
+| == | eq | $a eq $b | equals | == |
+| != | ne, neq | $a neq $b | not equals | != |
+| > | gt | $a gt $b | greater than | > |
+| < | lt | $a lt $b | less than | < |
+| >= | gte, ge | $a ge $b | greater than or equal | >= |
+| <= | lte, le | $a le $b | less than or equal | <= |
+| === | | $a === 0 | check for identity | === |
+| ! | not | not $a | negation (unary) | ! |
+| % | mod | $a mod $b | modulo | % |
+| is \[not\] div by | | $a is not div by 4 | divisible by | $a % $b == 0 |
+| is \[not\] even | | $a is not even | \[not\] an even number (unary) | $a % 2 == 0 |
+| is \[not\] even by | | $a is not even by $b | grouping level \[not\] even | ($a / $b) % 2 == 0 |
+| is \[not\] odd | | $a is not odd | \[not\] an odd number (unary) | $a % 2 != 0 |
+| is \[not\] odd by | | $a is not odd by $b | \[not\] an odd grouping | ($a / $b) % 2 != 0 |
+| is in | | $a is in $b | exists in array | in_array($a, $b) |
+| is \[not\] in | | $a is not in $b | does not exist in array | !in_array($a, $b) |
+
+## Ternary
+You can use the `?:` (or ternary) operator to test one expression and present the value
+of the second or third expression, based on the result of the test.
+
+In other words:
+```smarty
+{$test ? "OK" : "FAIL"}
+```
+will result in OK if `$test` is set to true, and in FAIL otherwise.
+
+There is also a shorthand `?:` operator:
+```smarty
+{$myVar ?: "empty"}
+```
+will result in 'empty' if `$myVar` is not set or set to something that evaluates to false, such as an empty string.
+If `$myVar` is set to something that evaluates to true, the value of `$myVar` is returned. So, the following will
+return 'hello':
+```smarty
+{$myVar="hello"}
+{$myVar ?: "empty"}
+```
+
+## Testing for null
+If "something that evaluates to false" is to broad a test for you, you can use the `??` (or null coalescing) operator
+to trigger only if the tested value is undefined or set to null.
+```smarty
+{$myVar ?? "empty"}
+```
+will result in 'empty' if `$myVar` is not set or set to null.
+If `$myVar` is set to something that evaluates to anything else, the value of `$myVar` is returned. So, the following will
+return an empty string (''):
+```smarty
+{$myVar=""}
+{$myVar ?: "this is not shown"}
+``` \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-tags.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-tags.md
new file mode 100644
index 000000000..7142f0da4
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-tags.md
@@ -0,0 +1,39 @@
+# Tags
+
+Every Smarty tag either prints a [variable](./language-syntax-variables.md) or
+invokes some sort of function. These are processed and displayed by
+enclosing the function and its [attributes](./language-syntax-attributes.md)
+within delimiters like so: `{funcname attr1="val1" attr2="val2"}`.
+
+## Examples
+
+```smarty
+{config_load file="colors.conf"}
+
+{include file="header.tpl"}
+
+{if $logged_in}
+ Welcome, <span style="color:{#fontColor#}">{$name}!</span>
+{else}
+ hi, {$name}
+{/if}
+
+{include file="footer.tpl"}
+```
+
+- Both [built-in functions](../language-builtin-functions/index.md) and [custom
+ functions](../language-custom-functions/index.md) have the same syntax within
+ templates.
+
+- Built-in functions are the **inner** workings of Smarty, such as
+ [`{if}`](../language-builtin-functions/language-function-if.md),
+ [`{section}`](../language-builtin-functions/language-function-section.md) and
+ [`{strip}`](../language-builtin-functions/language-function-strip.md). There should be no need to
+ change or modify them.
+
+- Custom tags are **additional** tags implemented via
+ [plugins](../../api/extending/introduction.md). They can be modified to your liking, or you can
+ create new ones. [`{html_options}`](../language-custom-functions/language-function-html-options.md)
+ is an example of a custom function.
+
+See also [`registerPlugin()`](../../programmers/api-functions/api-register-plugin.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md
index c0285d078..78d309ace 100644
--- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md
+++ b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md
@@ -88,9 +88,6 @@ Object chaining:
{$object->method1($x)->method2($y)}
-Direct PHP function access:
-
-{time()}
```
> **Note**
diff --git a/vendor/sabre/event/bin/.empty b/vendor/smarty/smarty/docs/designers/language-builtin-functions.md
index e69de29bb..e69de29bb 100644
--- a/vendor/sabre/event/bin/.empty
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions.md
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/index.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/index.md
index 10dc3a6f0..852b392fc 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/index.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/index.md
@@ -4,7 +4,7 @@ Smarty comes with several built-in functions. These built-in functions
are the integral part of the smarty template engine. They are compiled
into corresponding inline PHP code for maximum performance.
-You cannot create your own [custom functions](../language-custom-functions/index.md) with the same name; and you
+You cannot create your own [custom tags](../language-custom-functions/index.md) with the same name; and you
should not need to modify the built-in functions.
A few of these functions have an `assign` attribute which collects the
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md
index f5faa46d5..abcc8e5a6 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md
@@ -8,12 +8,12 @@ execution of a template**.
|----------------|------------|-----------------------------------------------------------------------|
| var | | The name of the variable being assigned |
| value | | The value being assigned |
-| scope | (optional) | The scope of the assigned variable: \'parent\',\'root\' or \'global\' |
+| scope | (optional) | The scope of the assigned variable: 'parent','root' or 'global' |
## Attributes of the {$var=...} syntax
| Attribute Name | Required | Description |
|----------------|------------|-----------------------------------------------------------------------|
-| scope | (optional) | The scope of the assigned variable: \'parent\',\'root\' or \'global\' |
+| scope | (optional) | The scope of the assigned variable: 'parent','root' or 'global' |
## Option Flags
| Name | Description |
@@ -102,6 +102,8 @@ A global variable is seen by all templates.
{$foo="bar" scope="global"}
```
+For more information on variable scope, please read the page on [variable scopes](../language-variables/language-variable-scopes.md).
+
To access `{assign}` variables from a php script use
[`getTemplateVars()`](../../programmers/api-functions/api-get-template-vars.md).
Here's the template that creates the variable `$foo`.
@@ -134,7 +136,6 @@ echo $smarty->getTemplateVars('foo');
The following functions can also *optionally* assign template variables: [`{capture}`](#language.function.capture),
[`{include}`](#language.function.include),
-[`{insert}`](#language.function.insert),
[`{counter}`](#language.function.counter),
[`{cycle}`](#language.function.cycle),
[`{eval}`](#language.function.eval),
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md
index c2acd1972..05334e2f6 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md
@@ -2,7 +2,7 @@
`{block}` is used to define a named area of template source for template
inheritance. For details see section of [Template
-Inheritance](../../programmers/advanced-features/advanced-features-template-inheritance.md).
+Inheritance](../../api/inheritance.md).
The `{block}` template source area of a child template will replace the
corresponding areas in the parent template(s).
@@ -195,7 +195,7 @@ The result would look like
```
See also [Template
-Inheritance](../../programmers/advanced-features/advanced-features-template-inheritance.md),
+Inheritance](../../api/inheritance.md),
[`$smarty.block.parent`](../language-variables/language-variables-smarty.md#smartyblockparent-languagevariablessmartyblockparent),
[`$smarty.block.child`](../language-variables/language-variables-smarty.md#smartyblockchild-languagevariablessmartyblockchild), and
[`{extends}`](./language-function-extends.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md
index 657f077cd..83f4d02d7 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md
@@ -27,12 +27,6 @@ is the value passed in the `name` attribute. If you do not supply the
|---------|-----------------------------------------|
| nocache | Disables caching of this captured block |
-> **Note**
->
-> Be careful when capturing [`{insert}`](#language.function.insert)
-> output. If you have [`$caching`](#caching) enabled and you have
-> [`{insert}`](#language.function.insert) commands that you expect to
-> run within cached content, do not capture this content.
## Examples
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md
index e13c30836..1972179d1 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md
@@ -9,7 +9,6 @@
|----------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| file | Yes | The name of the config file to include |
| section | No | The name of the section to load |
-| scope | no | How the scope of the loaded variables are treated, which must be one of local, parent or global. local means variables are loaded into the local template context. parent means variables are loaded into both the local context and the parent template that called it. global means variables are available to all templates. |
## Examples
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md
index eba17b9bd..06241d93b 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md
@@ -2,7 +2,7 @@
`{extends}` tags are used in child templates in template inheritance for
extending parent templates. For details see section of [Template
-Inheritance](../../programmers/advanced-features/advanced-features-template-inheritance.md).
+Inheritance](../../api/inheritance.md).
- The `{extends}` tag must be on the first line of the template.
@@ -10,7 +10,7 @@ Inheritance](../../programmers/advanced-features/advanced-features-template-inhe
tag it may contain only `{block}` tags. Any other template content
is ignored.
-- Use the syntax for [template resources](../../programmers/resources.md) to extend files
+- Use the syntax for [template resources](../../api/resources.md) to extend files
outside the [`$template_dir`](../../programmers/api-variables/variable-template-dir.md) directory.
## Attributes
@@ -33,5 +33,5 @@ Inheritance](../../programmers/advanced-features/advanced-features-template-inhe
{extends 'parent.tpl'} {* short-hand *}
```
-See also [Template Inheritance](../../programmers/advanced-features/advanced-features-template-inheritance.md)
+See also [Template Inheritance](../../api/inheritance.md)
and [`{block}`](./language-function-block.md).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md
index 645d6c52c..38d151169 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md
@@ -166,7 +166,7 @@ looping over a PHP iterator instead of an array().
```php
<?php
- include('Smarty.class.php');
+ use Smarty\Smarty;
$smarty = new Smarty;
@@ -252,7 +252,7 @@ iteration.
```smarty
{foreach $myNames as $name}
- {if $name@iteration is even by 3}
+ {if $name@index is even by 3}
<span style="color: #000">{$name}</span>
{else}
<span style="color: #eee">{$name}</span>
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md
index c7be37a2c..eb00cfda3 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md
@@ -3,36 +3,8 @@
`{if}` statements in Smarty have much the same flexibility as PHP
[if](https://www.php.net/if) statements, with a few added features for the
template engine. Every `{if}` must be paired with a matching `{/if}`.
-`{else}` and `{elseif}` are also permitted. All PHP conditionals and
-functions are recognized, such as *\|\|*, *or*, *&&*, *and*,
-*is_array()*, etc.
-
-If security is enabled, only PHP functions from `$php_functions` property
-of the security policy are allowed. See the
-[Security](../../programmers/advanced-features/advanced-features-security.md) section for details.
-
-The following is a list of recognized qualifiers, which must be
-separated from surrounding elements by spaces. Note that items listed in
-\[brackets\] are optional. PHP equivalents are shown where applicable.
-
-## Qualifiers
-
-| Qualifier | Alternates | Syntax Example | Meaning | PHP Equivalent |
-|--------------------|------------|----------------------|--------------------------------|--------------------|
-| == | eq | $a eq $b | equals | == |
-| != | ne, neq | $a neq $b | not equals | != |
-| > | gt | $a gt $b | greater than | > |
-| < | lt | $a lt $b | less than | < |
-| >= | gte, ge | $a ge $b | greater than or equal | >= |
-| <= | lte, le | $a le $b | less than or equal | <= |
-| === | | $a === 0 | check for identity | === |
-| ! | not | not $a | negation (unary) | ! |
-| % | mod | $a mod $b | modulo | % |
-| is \[not\] div by | | $a is not div by 4 | divisible by | $a % $b == 0 |
-| is \[not\] even | | $a is not even | \[not\] an even number (unary) | $a % 2 == 0 |
-| is \[not\] even by | | $a is not even by $b | grouping level \[not\] even | ($a / $b) % 2 == 0 |
-| is \[not\] odd | | $a is not odd | \[not\] an odd number (unary) | $a % 2 != 0 |
-| is \[not\] odd by | | $a is not odd by $b | \[not\] an odd grouping | ($a / $b) % 2 != 0 |
+`{else}` and `{elseif}` are also permitted. All [operators](../language-basic-syntax/language-syntax-operators.md) are recognized, such as *==*,
+*\|\|*, *or*, *&&*, *and*, etc and you can use modifiers as functions, such as *is_array()*.
## Examples
```smarty
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md
index d12a817e0..0710db7d8 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md
@@ -41,7 +41,7 @@ available within the included template.
is useful to return values from the included template to the
including template.
-- Use the syntax for [template resources](../../programmers/resources.md) to `{include}`
+- Use the syntax for [template resources](../../api/resources.md) to `{include}`
files outside of the [`$template_dir`](../../programmers/api-variables/variable-template-dir.md)
directory.
@@ -85,11 +85,11 @@ The template above includes the example `links.tpl` below
```smarty
<div id="box">
- <h3>{$title}{/h3>
+ <h3>{$title}</h3>
<ul>
{foreach from=$links item=l}
.. do stuff ...
- </foreach}
+ {/foreach}
</ul>
</div>
```
@@ -183,5 +183,5 @@ current template.
{include file="$style_dir/$module.$view.tpl"}
```
-See also [`{insert}`](./language-function-insert.md), [template resources](../../programmers/resources.md) and
+See also [template resources](../../api/resources.md) and
[componentized templates](../../appendixes/tips.md#componentized-templates).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md
index 54f0729dd..e69de29bb 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md
@@ -1,86 +0,0 @@
-# {insert}
-
-> **Note**
->
-> `{insert}` tags are deprecated from Smarty, and should not be used.
-> Put your PHP logic in PHP scripts or plugin functions instead.
-> As of Smarty 3.1 the `{insert}` tags are only available from
-> [SmartyBC](#bc).
-
-`{insert}` tags work much like [`{include}`](./language-function-include.md)
-tags, except that `{insert}` tags are NOT cached when template
-[caching](../../programmers/caching.md) is enabled. They will be executed on every
-invocation of the template.
-
-| Attribute Name | Required | Description |
-|----------------|----------|----------------------------------------------------------------------------------|
-| name | Yes | The name of the insert function (insert_`name`) or insert plugin |
-| assign | No | The name of the template variable the output will be assigned to |
-| script | No | The name of the php script that is included before the insert function is called |
-| \[var \...\] | No | variable to pass to insert function |
-
-## Examples
-
-Let's say you have a template with a banner slot at the top of the
-page. The banner can contain any mixture of HTML, images, flash, etc. so
-we can't just use a static link here, and we don't want this contents
-cached with the page. In comes the {insert} tag: the template knows
-\#banner\_location\_id\# and \#site\_id\# values (gathered from a
-[config file](../config-files.md)), and needs to call a function to get the
-banner contents.
-
-```smarty
- {* example of fetching a banner *}
- {insert name="getBanner" lid=#banner_location_id# sid=#site_id#}
- {insert "getBanner" lid=#banner_location_id# sid=#site_id#} {* short-hand *}
-```
-
-In this example, we are using the name "getBanner" and passing the
-parameters \#banner\_location\_id\# and \#site\_id\#. Smarty will look
-for a function named insert\_getBanner() in your PHP application,
-passing the values of \#banner\_location\_id\# and \#site\_id\# as the
-first argument in an associative array. All {insert} function names in
-your application must be prepended with "insert_" to remedy possible
-function name-space conflicts. Your insert\_getBanner() function should
-do something with the passed values and return the results. These
-results are then displayed in the template in place of the {insert} tag.
-In this example, Smarty would call this function:
-insert_getBanner(array("lid" => "12345","sid" => "67890"));
-and display the returned results in place of the {insert} tag.
-
-- If you supply the `assign` attribute, the output of the `{insert}`
- tag will be assigned to this template variable instead of being
- output to the template.
-
- > **Note**
- >
- > Assigning the output to a template variable isn't too useful with
- > [caching](../../programmers/api-variables/variable-caching.md) enabled.
-
-- If you supply the `script` attribute, this php script will be
- included (only once) before the `{insert}` function is executed.
- This is the case where the insert function may not exist yet, and a
- php script must be included first to make it work.
-
- The path can be either absolute, or relative to
- [`$trusted_dir`](../../programmers/api-variables/variable-trusted-dir.md). If security is enabled,
- then the script must be located in the `$trusted_dir` path of the
- security policy. See the [Security](../../programmers/advanced-features/advanced-features-security.md)
- section for details.
-
-The Smarty object is passed as the second argument. This way you can
-reference and modify information in the Smarty object from within the
-`{insert}` function.
-
-If no PHP script can be found Smarty is looking for a corresponding
-insert plugin.
-
-> **Note**
->
-> It is possible to have portions of the template not cached. If you
-> have [caching](../../programmers/api-variables/variable-caching.md) turned on, `{insert}` tags will not be
-> cached. They will run dynamically every time the page is created, even
-> within cached pages. This works good for things like banners, polls,
-> live weather, search results, user feedback areas, etc.
-
-See also [`{include}`](./language-function-include.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md
index c9f73c307..05bc8ecca 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md
@@ -4,7 +4,7 @@
template delimiters, by default **{** and **}**. You can also use
[`{literal}{/literal}`](./language-function-literal.md) to escape blocks of
text eg Javascript or CSS. See also the complementary
-[`{$smarty.ldelim}`](../../programmers/api-variables/variable-left-delimiter.md).
+[`{$smarty.ldelim}`](../../designers/language-basic-syntax/language-escaping.md).
```smarty
{* this will print literal delimiters out of the template *}
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md
index 4bc12f9d0..0253f260e 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md
@@ -3,7 +3,7 @@
`{literal}` tags allow a block of data to be taken literally. This is
typically used around Javascript or stylesheet blocks where {curly
braces} would interfere with the template
-[delimiter](../../programmers/api-variables/variable-left-delimiter.md) syntax. Anything within
+[delimiter](../../designers/language-basic-syntax/language-escaping.md) syntax. Anything within
`{literal}{/literal}` tags is not interpreted, but displayed as-is. If
you need template tags embedded in a `{literal}` block, consider using
[`{ldelim}{rdelim}`](./language-function-ldelim.md) to escape the individual
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md
index e6d8453fd..7997ecfb6 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md
@@ -17,4 +17,4 @@ Today's date is
The above code will output the current date on a cached page.
-See also the [caching section](../../programmers/caching.md).
+See also the [caching section](../../api/caching/basics.md).
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md
index ba17224c0..afa6366cd 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md
@@ -326,10 +326,10 @@ The template to output the database result in a HTML table
```smarty
<table>
- <tr><th>&nbsp;</th><th>Name></th><th>Home</th><th>Cell</th><th>Email</th></tr>
+ <tr><th>&nbsp;</th><th>Name</th><th>Home</th><th>Cell</th><th>Email</th></tr>
{section name=co loop=$contacts}
<tr>
- <td><a href="view.php?id={$contacts[co].id}">view<a></td>
+ <td><a href="view.php?id={$contacts[co].id}">view</a></td>
<td>{$contacts[co].name}</td>
<td>{$contacts[co].home}</td>
<td>{$contacts[co].cell}</td>
@@ -465,7 +465,7 @@ header block every five rows.
<table>
{section name=co loop=$contacts}
{if $smarty.section.co.iteration is div by 5}
- <tr><th>&nbsp;</th><th>Name></th><th>Home</th><th>Cell</th><th>Email</th></tr>
+ <tr><th>&nbsp;</th><th>Name</th><th>Home</th><th>Cell</th><th>Email</th></tr>
{/if}
<tr>
<td><a href="view.php?id={$contacts[co].id}">view<a></td>
@@ -478,13 +478,13 @@ header block every five rows.
</table>
```
-An example that uses the `iteration` property to alternate a text color every
+An example that uses the `index` property to alternate a text color every
third row.
```smarty
<table>
{section name=co loop=$contacts}
- {if $smarty.section.co.iteration is even by 3}
+ {if $smarty.section.co.index is even by 3}
<span style="color: #ffffff">{$contacts[co].name}</span>
{else}
<span style="color: #dddddd">{$contacts[co].name}</span>
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md
index 13eaef9b4..d0a4b2f3c 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md
@@ -3,31 +3,8 @@
`{while}` loops in Smarty have much the same flexibility as PHP
[while](https://www.php.net/while) statements, with a few added features for
the template engine. Every `{while}` must be paired with a matching
-`{/while}`. All PHP conditionals and functions are recognized, such as
-*\|\|*, *or*, *&&*, *and*, *is_array()*, etc.
-
-The following is a list of recognized qualifiers, which must be
-separated from surrounding elements by spaces. Note that items listed in
-\[brackets\] are optional. PHP equivalents are shown where applicable.
-
-## Qualifiers
-
-| Qualifier | Alternates | Syntax Example | Meaning | PHP Equivalent |
-|--------------------|------------|----------------------|--------------------------------|--------------------|
-| == | eq | $a eq $b | equals | == |
-| != | ne, neq | $a neq $b | not equals | != |
-| > | gt | $a gt $b | greater than | > |
-| < | lt | $a lt $b | less than | < |
-| >= | gte, ge | $a ge $b | greater than or equal | >= |
-| <= | lte, le | $a le $b | less than or equal | <= |
-| === | | $a === 0 | check for identity | === |
-| ! | not | not $a | negation (unary) | ! |
-| % | mod | $a mod $b | modulo | % |
-| is \[not\] div by | | $a is not div by 4 | divisible by | $a % $b == 0 |
-| is \[not\] even | | $a is not even | \[not\] an even number (unary) | $a % 2 == 0 |
-| is \[not\] even by | | $a is not even by $b | grouping level \[not\] even | ($a / $b) % 2 == 0 |
-| is \[not\] odd | | $a is not odd | \[not\] an odd number (unary) | $a % 2 != 0 |
-| is \[not\] odd by | | $a is not odd by $b | \[not\] an odd grouping | ($a / $b) % 2 != 0 |
+`{/while}`. All [operators](../language-basic-syntax/language-syntax-operators.md) are recognized, such as *==*,
+*\|\|*, *or*, *&&*, *and*, etc and you can use modifiers as functions, such as *is_array()*.
## Examples
```smarty
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/index.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/index.md
index 81979654c..2c1d9b709 100644
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/index.md
+++ b/vendor/smarty/smarty/docs/designers/language-custom-functions/index.md
@@ -1,4 +1,4 @@
-# Custom Functions
+# Custom Tags
Smarty comes with several custom plugin functions that you can use in
the templates.
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md
index 70c7a3d19..e44862c22 100644
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md
+++ b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md
@@ -22,7 +22,7 @@ output to the template.
> templates.
>
> - Evaluated variables are compiled on every invocation, the compiled
-> versions are not saved! However, if you have [caching](../../programmers/caching.md)
+> versions are not saved! However, if you have [caching](../../api/caching/basics.md)
> enabled, the output will be cached with the rest of the template.
>
> - If the content to evaluate doesn't change often, or is used
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md
index 2ff494fdd..a2f07f3a1 100644
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md
+++ b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md
@@ -28,7 +28,7 @@ ftp and display the contents.
> If security is enabled, and you are fetching a file from the local
> file system, `{fetch}` will only allow files from within the
> `$secure_dir` path of the security policy. See the
- > [Security](../../programmers/advanced-features/advanced-features-security.md) section for details.
+ > [Security](../../api/security.md) section for details.
- If the `assign` attribute is set, the output of the `{fetch}`
function will be assigned to this template variable instead of being
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md
index 7ecde2654..0ae02cae2 100644
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md
+++ b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md
@@ -20,7 +20,7 @@ automatically calculated from the image file if they are not supplied.
from. If not given, the web server's document root
`$_ENV['DOCUMENT_ROOT']` is used as the base. If security is
enabled, then the image must be located in the `$secure_dir` path of
- the security policy. See the [Security](../../programmers/advanced-features/advanced-features-security.md)
+ the security policy. See the [Security](../../api/security.md)
section for details.
- `href` is the href value to link the image to. If link is supplied,
@@ -37,7 +37,7 @@ automatically calculated from the image file if they are not supplied.
>
> `{html_image}` requires a hit to the disk to read the image and
> calculate the height and width. If you don't use template
-> [caching](../../programmers/caching.md), it is generally better to avoid `{html_image}`
+> [caching](../../api/caching/basics.md), it is generally better to avoid `{html_image}`
> and leave image tags static for optimal performance.
## Examples
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md
index bcb8b7d4d..c32c23871 100644
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md
+++ b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md
@@ -34,7 +34,7 @@ spiders to lift email addresses off of a site.
<a href="mailto:me@example.com" >send me some mail</a>
{mailto address="me@example.com" encode="javascript"}
-<script type="text/javascript" language="javascript">
+ <script>
eval(unescape('%64%6f% ... snipped ...%61%3e%27%29%3b'))
</script>
@@ -51,7 +51,7 @@ spiders to lift email addresses off of a site.
<a href="mailto:me@example.com" class="email">me@example.com</a>
{mailto address="me@example.com" encode="javascript_charcode"}
-<script type="text/javascript" language="javascript">
+ <script>
{document.write(String.fromCharCode(60,97, ... snipped ....60,47,97,62))}
</script>
```
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
index 4089fdb33..cb2a8d708 100644
--- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
+++ b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
@@ -1,6 +1,6 @@
# {textformat}
-`{textformat}` is a [block function](../../programmers/plugins/plugins-block-functions.md) used to
+`{textformat}` is a block tag used to
format text. It basically cleans up spaces and special characters, and
formats paragraphs by wrapping at a boundary and indenting lines.
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/index.md b/vendor/smarty/smarty/docs/designers/language-modifiers/index.md
index c9aeef887..3f52c2e77 100644
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/index.md
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/index.md
@@ -1,39 +1,15 @@
# Variable Modifiers
Variable modifiers can be applied to
-[variables](../language-variables/index.md), [custom functions](../language-custom-functions/index.md)
+[variables](../language-variables/index.md), [custom tags](../language-custom-functions/index.md)
or strings. To apply a modifier,
specify the value followed by a `|` (pipe) and the modifier name. A
modifier may accept additional parameters that affect its behavior.
These parameters follow the modifier name and are separated by a `:`
-(colon). Also, *all php-functions can be used as modifiers implicitly*
-(more below) and modifiers can be
-[combined](../language-combining-modifiers.md).
-
-- [capitalize](language-modifier-capitalize.md)
-- [cat](language-modifier-cat.md)
-- [count_characters](language-modifier-count-characters.md)
-- [count_paragraphs](language-modifier-count-paragraphs.md)
-- [count_sentences](language-modifier-count-sentences.md)
-- [count_words](language-modifier-count-words.md)
-- [date_format](language-modifier-date-format.md)
-- [default](language-modifier-default.md)
-- [escape](language-modifier-escape.md)
-- [from_charset](language-modifier-from-charset.md)
-- [indent](language-modifier-indent.md)
-- [lower](language-modifier-lower.md)
-- [nl2br](language-modifier-nl2br.md)
-- [regex_replace](language-modifier-regex-replace.md)
-- [replace](language-modifier-replace.md)
-- [spacify](language-modifier-spacify.md)
-- [string_format](language-modifier-string-format.md)
-- [strip](language-modifier-strip.md)
-- [strip_tags](language-modifier-strip-tags.md)
-- [to_charset](language-modifier-to-charset.md)
-- [truncate](language-modifier-truncate.md)
-- [unescape](language-modifier-unescape.md)
-- [upper](language-modifier-upper.md)
-- [wordwrap](language-modifier-wordwrap.md)
+(colon).
+
+Modifiers can be applied to any type of variables, including arrays
+and objects.
## Examples
@@ -65,58 +41,64 @@ These parameters follow the modifier name and are separated by a `:`
{* php's count *}
{$myArray|@count}
-{* this will uppercase and truncate the whole array *}
+{* this will uppercase the whole array *}
<select name="name_id">
-{html_options output=$my_array|upper|truncate:20}
+{html_options output=$my_array|upper}
</select>
+```
+
+## Combining Modifiers
+
+You can apply any number of modifiers to a variable. They will be
+applied in the order they are combined, from left to right. They must be
+separated with a `|` (pipe) character.
+
+```php
+<?php
+
+$smarty->assign('articleTitle', 'Smokers are Productive, but Death Cuts Efficiency.');
+```
+
+where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|upper|spacify}
+{$articleTitle|lower|spacify|truncate}
+{$articleTitle|lower|truncate:30|spacify}
+{$articleTitle|lower|spacify|truncate:30:". . ."}
+```
+
+
+The above example will output:
+
+```
+Smokers are Productive, but Death Cuts Efficiency.
+S M O K E R S A R ....snip.... H C U T S E F F I C I E N C Y .
+s m o k e r s a r ....snip.... b u t d e a t h c u t s...
+s m o k e r s a r e p r o d u c t i v e , b u t . . .
+s m o k e r s a r e p. . .
+```
+
+## Using modifiers in expressions
+
+Modifiers can also be used in expressions. For example, you can use the [isset modifier](./language-modifier-isset.md)
+to test if a variable holds a value different from null.
+
+```smarty
+{if $varA|isset}
+ <b>variable A is set</b>
+{/if}
+```
+
+You can also use modifiers in expressions in a PHP-style syntax:
+
+```smarty
+{if isset($varA)}
+ <b>variable A is set</b>
+{/if}
```
-
-- Modifiers can be applied to any type of variables, including arrays
- and objects.
-
- > **Note**
- >
- > The default behavior was changed with Smarty 3. In Smarty 2.x, you
- > had to use an "`@`" symbol to apply a modifier to an array, such
- > as `{$articleTitle|@count}`. With Smarty 3, the "`@`" is no
- > longer necessary, and is ignored.
- >
- > If you want a modifier to apply to each individual item of an
- > array, you will either need to loop the array in the template, or
- > provide for this functionality inside your modifier function.
-
- > **Note**
- >
- > Second, in Smarty 2.x, modifiers were applied to the result of
- > math expressions like `{8+2}`, meaning that
- > `{8+2|count_characters}` would give `2`, as 8+2=10 and 10 is two
- > characters long. With Smarty 3, modifiers are applied to the
- > variables or atomic expressions before executing the calculations,
- > so since 2 is one character long, `{8+2|count_characters}`
- > gives 9. To get the old result use parentheses like
- > `{(8+2)|count_characters}`.
-
-- Modifiers are autoloaded from the
- [`$plugins_dir`](../../programmers/api-variables/variable-plugins-dir.md) or can be registered
- explicitly with the [`registerPlugin()`](../../programmers/api-functions/api-register-plugin.md)
- function. The later is useful for sharing a function between php
- scripts and smarty templates.
-
-- All php-functions can be used as modifiers implicitly, as
- demonstrated in the example above. However, using php-functions as
- modifiers has two little pitfalls:
-
- - First - sometimes the order of the function-parameters is not
- the desirable one. Formatting `$foo` with
- `{"%2.f"|sprintf:$foo}` actually works, but asks for the more
- intuitive, like `{$foo|string_format:"%2.f"}` that is provided
- by the Smarty distribution.
-
- - Secondly - if security is enabled, all php-functions that are to
- be used as modifiers have to be declared trusted in the
- `$modifiers` property of the security policy. See the
- [Security](../../programmers/advanced-features/advanced-features-security.md) section for details.
See also [`registerPlugin()`](../../programmers/api-functions/api-register-plugin.md), [combining
modifiers](../language-combining-modifiers.md). and [extending smarty with
-plugins](../../programmers/plugins.md)
+plugins](../../api/extending/introduction.md)
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md
new file mode 100644
index 000000000..36436a398
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md
@@ -0,0 +1,21 @@
+# count
+
+Returns the number of elements in an array (or Countable object). Will return 0 for null.
+Returns 1 for any other type (such as a string).
+
+If the optional mode parameter is set to 1, count() will recursively count the array.
+This is particularly useful for counting all the elements of a multidimensional array.
+
+## Basic usage
+```smarty
+{if $myVar|count > 3}4 or more{/if}
+{if count($myVar) > 3}4 or more{/if}
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|--------------------------------------------------------|
+| 1 | int | No | If set to 1, count() will recursively count the array. |
+
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md
new file mode 100644
index 000000000..ce3f86a73
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md
@@ -0,0 +1,26 @@
+# debug_print_var
+
+
+
+Returns the value of the given variable in a human-readable format in HTML.
+Used in the [debug console](../chapter-debugging-console.md), but you can also use it in your template
+while developing to see what is going on under the hood.
+
+> **Note**
+>
+> Use for debugging only! Since you may accidentally reveal sensitive information or introduce vulnerabilities such as XSS using this
+method never use it in production.
+
+## Basic usage
+```smarty
+{$myVar|debug_print_var}
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|------------------------------------------------------------------------|
+| 1 | int | No | maximum recursion depth if $var is an array or object (defaults to 10) |
+| 2 | int | No | maximum string length if $var is a string (defaults to 40) |
+
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
index 6fd5dd2b4..18c98f1cb 100644
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
@@ -73,6 +73,6 @@ This snippet is useful for emails, but see also
<a href="mailto:{$EmailAddress|escape:'hex'}">{$EmailAddress|escape:'mail'}</a>
```
-See also [escaping smarty parsing](../language-basic-syntax/language-escaping.md),
+See also [auto-escaping](../../api/configuring.md#enabling-auto-escaping), [escaping smarty parsing](../language-basic-syntax/language-escaping.md),
[`{mailto}`](../language-custom-functions/language-function-mailto.md) and the [obfuscating email
-addresses](../../appendixes/tips.md#obfuscating-e-mail-addresses) page.
+addresses](../../appendixes/tips.md#obfuscating-e-mail-addresses) pages.
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
index bf4b4769e..25c4d2d9e 100644
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
@@ -16,5 +16,5 @@ modifier](language-modifier-to-charset.md).
> modifier should only be used in cases where the application cannot
> anticipate that a certain string is required in another encoding.
-See also [Charset Encoding](../../programmers/charset.md), [to_charset
+See also [Configuring Smarty](../../api/configuring.md), [to_charset
modifier](language-modifier-to-charset.md).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md
new file mode 100644
index 000000000..f6cfffcd1
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md
@@ -0,0 +1,9 @@
+# is_array
+
+Return true if the variable passed to it is an array.
+
+## Basic usage
+
+```smarty
+{if $myVar|is_array}it's an array{/if}
+```
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md
new file mode 100644
index 000000000..83e31dfa9
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md
@@ -0,0 +1,11 @@
+# isset
+
+Returns true if the variable(s) passed to it are different from null.
+
+If multiple parameters are supplied then isset() will return true only if all of the parameters are
+not null.
+
+## Basic usage
+```smarty
+{if $myVar|isset}all set!{/if}
+```
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md
new file mode 100644
index 000000000..9a044714d
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md
@@ -0,0 +1,26 @@
+# join
+
+Returns a string containing all the element of the given array
+with the separator string between each.
+
+## Basic usage
+
+For `$myArray` populated with `['a','b','c']`, the following will return the string `abc`.
+```smarty
+{$myArray|join}
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|--------|----------|-------------------------------------------------------------|
+| 1 | string | No | glue used between array elements. Defaults to empty string. |
+
+## Examples
+
+
+For `$myArray` populated with `[1,2,3]`, the following will return the string `1-2-3`.
+```smarty
+{$myArray|join:"-"}
+``` \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md
new file mode 100644
index 000000000..4e70f0c26
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md
@@ -0,0 +1,27 @@
+# json_encode
+
+Transforms a value into a valid JSON string.
+
+## Basic usage
+```smarty
+{$user|json_encode}
+```
+Depending on the value of `$user` this would return a string in JSON-format, e.g. `{"username":"my_username","email":"my_username@smarty.net"}`.
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-------------------------------------------------------------------------------------------|
+| 1 | int | No | bitmask of flags, directly passed to [PHP's json_encode](https://www.php.net/json_encode) |
+
+
+## Examples
+
+By passing `16` as the second parameter, you can force json_encode to always format the JSON-string as an object.
+Without it, an array `$myArray = ["a","b"]` would be formatted as a javascript array:
+
+```smarty
+{$myArray|json_encode} # renders: ["a","b"]
+{$myArray|json_encode:16} # renders: {"0":"a","1":"b"}
+``` \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md
new file mode 100644
index 000000000..5dbfaa30d
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md
@@ -0,0 +1,9 @@
+# noprint
+
+Always returns an empty string. This can be used to call a function or a method on an object that
+returns output, and suppress the output.
+
+## Basic usage
+```smarty
+{$controller->sendEmail()|noprint}
+```
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md
new file mode 100644
index 000000000..44c3acf44
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md
@@ -0,0 +1,32 @@
+# number_format
+
+Allows you to format a number using decimals and a thousands-separator. By default, the number of decimals is 0
+and the number is rounded.
+
+## Basic usage
+```smarty
+{$num = 2000.151}
+{$num|number_format} # renders: 2,000
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|--------|----------|---------------------------------------|
+| 1 | int | No | number of decimals (defaults to 0) |
+| 2 | string | No | decimal separator (defaults to ".") |
+| 3 | string | No | thousands-separator (defaults to ",") |
+
+
+## Examples
+
+```smarty
+{$num = 2000.151}
+{$num|number_format:2} # renders: 2,000.15
+```
+
+```smarty
+{$num = 2000.151}
+{$num|number_format:2:".":""} # renders: 2000.15
+``` \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-raw.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-raw.md
new file mode 100644
index 000000000..e9cce97d3
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-raw.md
@@ -0,0 +1,8 @@
+# raw
+
+Prevents variable escaping when [auto-escaping](../../api/configuring.md#enabling-auto-escaping) is activated.
+
+## Basic usage
+```smarty
+{$myVar|raw}
+```
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md
new file mode 100644
index 000000000..c05b899a9
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md
@@ -0,0 +1,35 @@
+# round
+
+Rounds a number to the specified precision.
+
+## Basic usage
+```smarty
+{3.14|round} # renders: 3
+```
+
+```smarty
+{3.141592|round:2} # renders: 3.14
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|---------------------------|
+| 1 | int | No | precision (defaults to 0) |
+| 2 | int | No | mode (defaults to 1) |
+
+If 'precision' is negative, the number is rounded to the nearest power of 10. See examples below.
+
+The parameter 'mode' defines how the rounding is done. By default, 2.5 is rounded to 3, whereas 2.45 is rounded to 2.
+You usually don't need to change this. For more details on rounding modes,
+see [PHP's documentation on round](https://www.php.net/manual/en/function.round).
+
+## Examples
+
+By passing `16` as the second parameter, you can force json_encode to always format the JSON-string as an object.
+Without it, an array `$myArray = ["a","b"]` would be formatted as a javascript array:
+
+```smarty
+{$myArray|json_encode} # renders: ["a","b"]
+{$myArray|json_encode:16} # renders: {"0":"a","1":"b"}
+``` \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md
new file mode 100644
index 000000000..caef884f5
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md
@@ -0,0 +1,32 @@
+# split
+
+Splits a string into an array, using the optional second parameter as the separator.
+
+## Basic usage
+
+For `$chars` populated with `'abc'`, the following will produce a html list with 3 elements (a, b and c).
+```smarty
+<ol>
+ {foreach $chars|split as $char}
+ <li>{$char|escape}</li>
+ {/foreach}
+</ol>
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|--------|----------|------------------------------------------------------------------------------------------------------------------------------|
+| 1 | string | No | separator used to split the string on. Defaults to empty string, causing each character in the source string to be separate. |
+
+## Examples
+
+
+For `$ids` populated with `'1,2,3'`, the following will produce a html list with 3 elements (1, 2 and 3).
+```smarty
+<ol>
+ {foreach $ids|split:',' as $id}
+ <li>{$id|escape}</li>
+ {/foreach}
+</ol>
+``` \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md
new file mode 100644
index 000000000..1ae1824d6
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md
@@ -0,0 +1,14 @@
+# str_repeat
+
+Repeats the given value n times.
+
+## Basic usage
+```smarty
+{"hi"|str_repeat:2} # renders: hihi
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-----------------------|
+| 1 | int | yes | number of repetitions |
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md
new file mode 100644
index 000000000..4c1f37ab7
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md
@@ -0,0 +1,9 @@
+# strlen
+
+Returns the length (number of characters) in the given string, including spaces.
+
+## Basic usage
+```smarty
+{"Smarty"|strlen} # renders: 6
+{156|strlen} # renders: 3
+```
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md
new file mode 100644
index 000000000..a79d8a4d1
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md
@@ -0,0 +1,25 @@
+# substr
+
+Returns a part (substring) of the given string starting at a given offset.
+
+## Basic usage
+```smarty
+{"Smarty"|substr:2} # renders: arty
+{"Smarty"|substr:2:3} # renders: art
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-----------------------------------------------------|
+| 1 | int | yes | offset (zero based, can be negative) |
+| 2 | int | no | length of substring returned (unlimited of omitted) |
+
+
+## Examples
+
+When used with a negative offset, the substring starts n characters from the end of the string counting backwards.
+```smarty
+{"Smarty"|substr:-2} # renders: ty
+{"Smarty"|substr:-2:1} # renders: t
+``` \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
index c0b003842..aa8cfd53f 100644
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
@@ -16,5 +16,5 @@ modifier](#language.modifier.from_charset).
> modifier should only be used in cases where the application cannot
> anticipate that a certain string is required in another encoding.
-See also [Charset Encoding](../../programmers/charset.md), [from_charset
+See also [Configuring Smarty](../../api/configuring.md), [from_charset
modifier](language-modifier-from-charset.md).
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
index 3173059c9..edce96381 100644
--- a/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
+++ b/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
@@ -29,5 +29,5 @@ If Strike isn't Settled Quickly it may Last a While.
IF STRIKE ISN'T SETTLED QUICKLY IT MAY LAST A WHILE.
```
-See also [`lower`](lower) and
+See also [`lower`](./language-modifier-lower.md) and
[`capitalize`](language-modifier-capitalize.md).
diff --git a/vendor/smarty/smarty/docs/designers/language-variables/index.md b/vendor/smarty/smarty/docs/designers/language-variables/index.md
index 58ae6eb95..0278c9170 100644
--- a/vendor/smarty/smarty/docs/designers/language-variables/index.md
+++ b/vendor/smarty/smarty/docs/designers/language-variables/index.md
@@ -8,11 +8,11 @@ variable depends on what symbol it is prefixed or enclosed within.
- [{$smarty} reserved variable](language-variables-smarty.md)
Variables in Smarty can be either displayed directly or used as
-arguments for [functions](../language-basic-syntax/language-syntax-functions.md),
+arguments for [tags](../language-basic-syntax/language-syntax-tags.md),
[attributes](../language-basic-syntax/language-syntax-attributes.md) and
[modifiers](../language-modifiers/index.md), inside conditional expressions, etc.
To print a variable, simply enclose it in the
-[delimiters](../../programmers/api-variables/variable-left-delimiter.md) so that it is the only thing
+[delimiters](../../designers/language-basic-syntax/language-escaping.md) so that it is the only thing
contained between them.
```smarty
diff --git a/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md b/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
index bd356a2b0..9465a89c5 100644
--- a/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
+++ b/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
@@ -7,7 +7,7 @@ Variables assigned from PHP are referenced by preceding them with a dollar
```php
<?php
-
+use Smarty\Smarty;
$smarty = new Smarty();
$smarty->assign('firstname', 'Doug');
@@ -110,7 +110,7 @@ zaphod@slartibartfast.example.com<br />
## Objects
-Properties of [objects](../../programmers/advanced-features/advanced-features-objects.md) assigned from PHP
+Properties of [objects](../../api/variables/objects.md) assigned from PHP
can be referenced by specifying the property name after the `->` symbol.
```smarty
diff --git a/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md b/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
index da543fb62..cbeb66874 100644
--- a/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
+++ b/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
@@ -66,8 +66,7 @@ difference.
## {$smarty.const}
-You can access PHP constant values directly. See also [smarty
-constants](../../programmers/smarty-constants.md).
+You can access PHP constant values directly.
```php
<?php
@@ -139,12 +138,12 @@ Returns the version of Smarty the template was compiled with.
## {$smarty.block.child}
Returns block text from child template. See [Template
-inheritance](../../programmers/advanced-features/advanced-features-template-inheritance.md).
+inheritance](../../api/inheritance.md).
## {$smarty.block.parent}
Returns block text from parent template. See [Template
-inheritance](../../programmers/advanced-features/advanced-features-template-inheritance.md)
+inheritance](../../api/inheritance.md)
## {$smarty.ldelim}, {$smarty.rdelim}
diff --git a/vendor/smarty/smarty/docs/features.md b/vendor/smarty/smarty/docs/features.md
index 8405b46eb..f9a873be0 100644
--- a/vendor/smarty/smarty/docs/features.md
+++ b/vendor/smarty/smarty/docs/features.md
@@ -1,36 +1,35 @@
-Features
-=======
+# Features
Some of Smarty's features:
+
- It is extremely fast.
- It is efficient since the PHP parser does the dirty work.
- No template parsing overhead, only compiles once.
-- It is smart about [recompiling](#variable.compile.check) only the
+- It is smart about recompiling only the
template files that have changed.
- You can easily create your own custom
- [functions](#language.custom.functions) and [variable
- modifiers](#language.modifiers), so the template language is
+ [tags](api/extending/tags.md) and [modifiers](api/extending/modifiers.md), so the template language is
extremely extensible.
-- Configurable template [{delimiter}](#variable.left.delimiter) tag
+- Configurable template [{delimiter}](designers/language-basic-syntax/language-escaping.md) tag
syntax, so you can use `{$foo}`, `{{$foo}}`, `<!--{$foo}-->`, etc.
-- The [`{if}..{elseif}..{else}..{/if}`](#language.function.if)
+- The [`{if}..{elseif}..{else}..{/if}`](designers/language-builtin-functions/language-function-if.md)
constructs are passed to the PHP parser, so the `{if...}` expression
syntax can be as simple or as complex an evaluation as you like.
- Allows unlimited nesting of
- [`sections`](#language.function.section), `if's` etc.
-- Built-in [caching](#caching) support
-- Arbitrary [template](#resources) sources
-- [Template Inheritance](#advanced.features.template.inheritance) for
+ [`sections`](designers/language-builtin-functions/language-function-section.md), `if's` etc.
+- Built-in [caching](api/caching/basics.md) support
+- Arbitrary [template](api/resources.md) sources
+- [Template Inheritance](api/inheritance.md) for
easy management of template content.
-- [Plugin](#plugins) architecture
+- [Plugin](api/extending/introduction.md) architecture
## Separation of presentation from application code
- This means templates can certainly contain logic under the condition
that it is for presentation only. Things such as
- [including](./designers/language-builtin-functions/language-function-include.md) other templates,
- [alternating](./designers/language-custom-functions/language-function-cycle.md) table row colors,
- [upper-casing](./designers/language-modifiers/language-modifier-upper.md) a variable,
- [looping](./designers/language-builtin-functions/language-function-foreach.md) over an array of data and
+ [including](designers/language-builtin-functions/language-function-include.md) other templates,
+ [alternating](designers/language-custom-functions/language-function-cycle.md) table row colors,
+ [upper-casing](designers/language-modifiers/language-modifier-upper.md) a variable,
+ [looping](designers/language-builtin-functions/language-function-foreach.md) over an array of data and
rendering it are examples of presentation logic.
- This does not mean however that Smarty forces a separation of
business and presentation logic. Smarty has no knowledge of which is
@@ -61,7 +60,7 @@ inheritance, instead of including other templates we maintain our
templates as single pages. We can then manipulate blocks of content
within by inheriting them. This makes templates intuitive, efficient and
easy to manage. See
-[Template Inheritance](./programmers/advanced-features/advanced-features-template-inheritance.md)
+[Template Inheritance](api/inheritance.md)
for more info.
## Why not use XML/XSLT syntax?
@@ -135,8 +134,8 @@ that would be needed otherwise? Does the codebase or framework you plan
on using have the features you need for the presentation component?
## Sites using Smarty
-Many well-known PHP projects make use of Smarty such as XOOPS CMS, CMS Made Simple, Tiki
-CMS/Groupware and X-Cart to name a few.
+Many well-known PHP projects make use of Smarty such as XOOPS CMS, CMS Made Simple,
+Tiki Wiki CMS Groupware and X-Cart to name a few.
## Summary
Whether you are using Smarty for a small website or massive enterprise
diff --git a/vendor/smarty/smarty/docs/getting-started.md b/vendor/smarty/smarty/docs/getting-started.md
index f549e50e7..3628fd203 100644
--- a/vendor/smarty/smarty/docs/getting-started.md
+++ b/vendor/smarty/smarty/docs/getting-started.md
@@ -1,7 +1,7 @@
# Getting started
## Requirements
-Smarty can be run with PHP 7.1 to PHP 8.3.
+Smarty can be run with PHP 7.2 to PHP 8.3.
## Installation
Smarty can be installed with [Composer](https://getcomposer.org/).
@@ -16,32 +16,39 @@ To get the latest, unreleased version, use:
composer require smarty/smarty:dev-master
```
-To get the previous stable version of Smarty, Smarty 3, use:
+To get the previous stable version of Smarty, Smarty 4, use:
```shell
-composer require smarty/smarty:^3
+composer require smarty/smarty:^4
```
Here's how you create an instance of Smarty in your PHP scripts:
```php
<?php
+// Instantiated via composer
require 'vendor/autoload.php';
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+// or ...
+
+// Instantiated directly
+require("/path/to/smarty/libs/Smarty.class.php");
+use Smarty\Smarty;
$smarty = new Smarty();
```
Now that the library files are in place, it's time to set up the Smarty
directories for your application.
-Smarty requires four directories which are by default named
- [`templates`](./programmers/api-variables/variable-template-dir.md),
- [`configs`](./programmers/api-variables/variable-config-dir.md),
- [`templates_c`](./programmers/api-variables/variable-compile-dir.md)
- and
- [`cache`](./programmers/api-variables/variable-cache-dir.md)
- relative to the current working directory.
+Smarty requires four directories which are by default named `templates`, `configs`, `templates_c` and `cache`
+relative to the current working directory.
The defaults can be changed as follows:
+
```php
+<?php
+use Smarty\Smarty;
$smarty = new Smarty();
$smarty->setTemplateDir('/some/template/dir');
$smarty->setConfigDir('/some/config/dir');
@@ -70,6 +77,8 @@ You can verify if your system has the correct access rights for
these directories with [`testInstall()`](./programmers/api-functions/api-test-install.md):
```php
+<?php
+use Smarty\Smarty;
$smarty = new Smarty();
$smarty->setTemplateDir('/some/template/dir');
$smarty->setConfigDir('/some/config/dir');
@@ -78,12 +87,14 @@ $smarty->setCacheDir('/some/cache/dir');
$smarty->testInstall();
```
+## Basic usage
+
Now, let's create the `index.tpl` file that Smarty will display. This
needs to be located in the [`$template_dir`](./programmers/api-variables/variable-template-dir.md).
```smarty
{* Smarty *}
-Hello {$name}, welcome to Smarty!
+<h1>Hello {$name|escape}, welcome to Smarty!</h1>
```
> **Note**
@@ -103,6 +114,7 @@ Now lets edit our php file. We'll create an instance of Smarty,
require 'vendor/autoload.php';
+use Smarty\Smarty;
$smarty = new Smarty();
$smarty->setTemplateDir('/web/www.example.com/guestbook/templates/');
@@ -128,6 +140,20 @@ Now, run your PHP file. You should see *"Hello Ned, welcome to Smarty!"*
You have completed the basic setup for Smarty!
+## Escaping
+You may have noticed that the example template above renders the `$name` variable using
+the [escape modifier](./designers/language-modifiers/language-modifier-escape.md). This
+modifier makes string 'safe' to use in the context of an HTML page.
+
+If you are primarily using Smarty for HTML-pages, it is recommended to enable automatic
+escaping. This way, you don't have to add `|escape` to every variable you use on a web page.
+Smarty will handle it automatically for you!
+
+Enable auto-escaping for HTML as follows:
+```php
+$smarty->setEscapeHtml(true);
+```
+
## Extended Setup
This is a continuation of the [basic installation](#installation), please read that first!
@@ -140,7 +166,9 @@ the same vars, etc., we can do that in one place.
```php
<?php
-class Smarty_GuestBook extends Smarty {
+use Smarty\Smarty;
+
+class My_GuestBook extends Smarty {
public function __construct()
{
@@ -150,6 +178,8 @@ class Smarty_GuestBook extends Smarty {
$this->setCompileDir('/web/www.example.com/guestbook/templates_c/');
$this->setConfigDir('/web/www.example.com/guestbook/configs/');
$this->setCacheDir('/web/www.example.com/guestbook/cache/');
+
+ $this->setEscapeHtml(true);
$this->caching = Smarty::CACHING_LIFETIME_CURRENT;
$this->assign('app_name', 'Guest Book');
@@ -158,10 +188,10 @@ class Smarty_GuestBook extends Smarty {
}
```
-Now, we can use `Smarty_GuestBook` instead of `Smarty` in our scripts:
+Now, we can use `My_GuestBook` instead of `Smarty` in our scripts:
```php
<?php
-$smarty = new Smarty_GuestBook();
+$smarty = new My_GuestBook();
$smarty->assign('name', 'Ned');
$smarty->display('index.tpl');
```
diff --git a/vendor/smarty/smarty/docs/img/smarty.svg b/vendor/smarty/smarty/docs/img/smarty.svg
new file mode 100644
index 000000000..cd8c86639
--- /dev/null
+++ b/vendor/smarty/smarty/docs/img/smarty.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generator: Adobe Illustrator 25.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" style="enable-background:new 0 0 1000 1000;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:#F5E0B4;}
+ .st1{fill:#383535;}
+ .st2{fill:#FBDE3D;}
+ .st3{fill:#8C919F;}
+ .st4{fill:#CACED5;}
+ .st5{fill:#FFFFFF;}
+</style>
+<g>
+ <polygon class="st0" points="782.2,925.8 733.4,643.2 996.4,532.7 745.7,396.4 823.6,120.2 560.7,232.2 391.6,0 313.7,274.7 26.5,260.1 194.4,491.3 3.6,705.5 289.4,721.3 340.5,1000 529.1,787 "/>
+ <path class="st1" d="M706.9,493.4c0-126-102.2-228.2-228.2-228.2c-126,0-228.2,102.2-228.2,228.2c0,81.8,43.1,153.6,107.8,193.8 v202.6l43.5,43.5l0.2-0.2h150.6l0.2,0.2l43.5-43.5V689C662.6,649,706.9,576.4,706.9,493.4z"/>
+ <path class="st2" d="M682.2,492.9c0-112.7-91.3-204-204-204s-204,91.3-204,204c0,78,43.8,145.8,108.1,180.1v93.6h191.7V673 C638.4,638.7,682.2,571,682.2,492.9z"/>
+ <g>
+ <polygon class="st3" points="382.7,790.4 382.7,881.1 412,910.3 544.9,910.3 574.1,881.1 574.1,790.4 "/>
+ <polygon class="st4" points="540,813.2 540,866.5 527,879.5 540.4,892.9 558.7,874.6 558.9,874.6 558.9,813.2 "/>
+ </g>
+ <path class="st5" d="M478.3,310.4c-5,0-9.1,4.1-9.1,9.1c0,5,4.1,9.1,9.1,9.1c90.7,0,164.3,73.5,164.3,164.3c0,5,4.1,9.1,9.1,9.1 s9.1-4.1,9.1-9.1C660.8,392.1,579.1,310.4,478.3,310.4z"/>
+</g>
+</svg> \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/index.md b/vendor/smarty/smarty/docs/index.md
index cff5e490e..5c788f9ba 100644
--- a/vendor/smarty/smarty/docs/index.md
+++ b/vendor/smarty/smarty/docs/index.md
@@ -1,8 +1,8 @@
-# Smarty 4 Documentation
+# Smarty Documentation
Smarty is a template engine for PHP, facilitating the separation of presentation (HTML/CSS) from application logic.
It allows you to write **templates**, using **variables**, **modifiers**, **functions** and **comments**, like this:
-```html
+```smarty
<h1>{$title|escape}</h1>
<p>
@@ -20,31 +20,16 @@ and 480 for $height, the result is:
</p>
```
-## Introduction
+## Getting Started
+- [Getting Started](./getting-started.md)
- [Philosophy](./philosophy.md) - or "Why do I need a template engine?"
- [Features](./features.md) - or "Why do I want Smarty?"
-- [Getting Started](./getting-started.md)
-## Smarty for template designers
-- [Basic Syntax](designers/language-basic-syntax/index.md)
-- [Variables](designers/language-variables/index.md)
-- [Variable Modifiers](designers/language-modifiers/index.md)
-- [Combining Modifiers](./designers/language-combining-modifiers.md)
-- [Built-in Functions](designers/language-builtin-functions/index.md)
-- [Custom Functions](designers/language-custom-functions/index.md)
-- [Config Files](./designers/config-files.md)
-- [Debugging Console](./designers/chapter-debugging-console.md)
-
-## Smarty for php developers
-- [Charset Encoding](./programmers/charset.md)
-- [Constants](./programmers/smarty-constants.md)
-- [Smarty Class Variables](./programmers/api-variables.md)
-- [Smarty Class Methods](./programmers/api-functions.md)
-- [Caching](./programmers/caching.md)
-- [Resources](./programmers/resources.md)
-- [Advanced Features](./programmers/advanced-features.md)
-- [Extending Smarty With Plugins](./programmers/plugins.md)
-
-## Other
+## Help
+- [Search or create an issue](https://github.com/smarty-php/smarty/issues)
+- [Upgrading from an older version](upgrading.md)
- [Some random tips & tricks](./appendixes/tips.md)
- [Troubleshooting](./appendixes/troubleshooting.md)
+
+## Source code
+- [Smarty repository at GitHub](https://github.com/smarty-php/smarty) \ No newline at end of file
diff --git a/vendor/smarty/smarty/docs/philosophy.md b/vendor/smarty/smarty/docs/philosophy.md
index 34555c288..c5edd3980 100644
--- a/vendor/smarty/smarty/docs/philosophy.md
+++ b/vendor/smarty/smarty/docs/philosophy.md
@@ -8,18 +8,18 @@ presentation. This is best described in a situation where the
application programmer and the template designer play different roles,
or in most cases are not the same person.
-For example, let\'s say you are creating a web page that is displaying a
+For example, let's say you are creating a web page that is displaying a
newspaper article.
- The article `$headline`, `$tagline`, `$author` and `$body` are
content elements, they contain no information about how they will be
- presented. They are [passed](#api.assign) into Smarty by the
+ presented. They are [passed](getting-started.md#basic-usage) into Smarty by the
application.
- Then the template designer edits the templates and uses a
- combination of HTML tags and [template tags](#language.basic.syntax)
+ combination of HTML tags and [template tags](designers/language-basic-syntax/language-syntax-tags.md)
to format the presentation of these
- [variables](#language.syntax.variables) with elements such as
+ [variables](designers/language-basic-syntax/language-syntax-variables.md) with elements such as
tables, div\'s, background colors, font sizes, style sheets, svg
etc.
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features.md b/vendor/smarty/smarty/docs/programmers/advanced-features.md
deleted file mode 100644
index 60d4416b5..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Advanced Features {#advanced.features}
-=================
-
-## Table of contents
-
-- [Security](./advanced-features/advanced-features-security.md)
-- [Changing settings by template](./advanced-features/advanced-features-template-settings.md)
-- [Template Inheritance](./advanced-features/advanced-features-template-inheritance.md)
-- [Streams](./advanced-features/advanced-features-streams.md)
-- [Objects](./advanced-features/advanced-features-objects.md)
-- [Static Classes](./advanced-features/advanced-features-static-classes.md)
-- [Prefilters](./advanced-features/advanced-features-prefilters.md)
-- [Postfilters](./advanced-features/advanced-features-postfilters.md)
-- [Output Filters](./advanced-features/advanced-features-outputfilters.md)
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md
deleted file mode 100644
index b681945e1..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md
+++ /dev/null
@@ -1,99 +0,0 @@
-Objects {#advanced.features.objects}
-=======
-
-Smarty allows access to PHP [objects](https://www.php.net/object) through
-the templates.
-
-> **Note**
->
-> When you assign/register objects to templates, be sure that all
-> properties and methods accessed from the template are for presentation
-> purposes only. It is very easy to inject application logic through
-> objects, and this leads to poor designs that are difficult to manage.
-> See the Best Practices section of the Smarty website.
-
-There are two ways to access them.
-
-- One way is to [register objects](#api.register.object) to the
- template, then use access them via syntax similar to [custom
- functions](#language.custom.functions).
-
-- The other way is to [`assign()`](#api.assign) objects to the
- templates and access them much like any other assigned variable.
-
-The first method has a much nicer template syntax. It is also more
-secure, as a registered object can be restricted to certain methods or
-properties. However, **a registered object cannot be looped over or
-assigned in arrays of objects**, etc. The method you choose will be
-determined by your needs, but use the first method whenever possible to
-keep template syntax to a minimum.
-
-If security is enabled, no private methods or functions can be accessed
-(beginning with \'\_\'). If a method and property of the same name exist,
-the method will be used.
-
-You can restrict the methods and properties that can be accessed by
-listing them in an array as the third registration parameter.
-
-By default, parameters passed to objects through the templates are
-passed the same way [custom functions](#language.custom.functions) get
-them. An associative array is passed as the first parameter, and the
-smarty object as the second. If you want the parameters passed one at a
-time for each argument like traditional object parameter passing, set
-the fourth registration parameter to FALSE.
-
-The optional fifth parameter has only effect with `format` being TRUE
-and contains a list of methods that should be treated as blocks. That
-means these methods have a closing tag in the template
-(`{foobar->meth2}...{/foobar->meth2}`) and the parameters to the methods
-have the same synopsis as the parameters for
-[`block-function-plugins`](#plugins.block.functions): They get the four
-parameters `$params`, `$content`, `$smarty` and `&$repeat` and they also
-behave like block-function-plugins.
-
-
- <?php
- // the object
-
- class My_Object {
- function meth1($params, $smarty_obj) {
- return 'this is my meth1';
- }
- }
-
- $myobj = new My_Object;
-
- // registering the object (will be by reference)
- $smarty->registerObject('foobar',$myobj);
-
- // if we want to restrict access to certain methods or properties, list them
- $smarty->registerObject('foobar',$myobj,array('meth1','meth2','prop1'));
-
- // if you want to use the traditional object parameter format, pass a boolean of false
- $smarty->registerObject('foobar',$myobj,null,false);
-
- // We can also assign objects. assign_by_ref when possible.
- $smarty->assign_by_ref('myobj', $myobj);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-And here\'s how to access your objects in `index.tpl`:
-
-
- {* access our registered object *}
- {foobar->meth1 p1='foo' p2=$bar}
-
- {* you can also assign the output *}
- {foobar->meth1 p1='foo' p2=$bar assign='output'}
- the output was {$output}
-
- {* access our assigned object *}
- {$myobj->meth1('foo',$bar)}
-
-
-
-See also [`registerObject()`](#api.register.object) and
-[`assign()`](#api.assign).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md
deleted file mode 100644
index 393d7da23..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md
+++ /dev/null
@@ -1,43 +0,0 @@
-Output Filters {#advanced.features.outputfilters}
-==============
-
-When the template is invoked via [`display()`](#api.display) or
-[`fetch()`](#api.fetch), its output can be sent through one or more
-output filters. This differs from
-[`postfilters`](#advanced.features.postfilters) because postfilters
-operate on compiled templates before they are saved to the disk, whereas
-output filters operate on the template output when it is executed.
-
-Output filters can be either [registered](#api.register.filter) or
-loaded from the [plugins directory](#variable.plugins.dir) by using the
-[`loadFilter()`](#api.load.filter) method or by setting the
-[`$autoload_filters`](#variable.autoload.filters) variable. Smarty will
-pass the template output as the first argument, and expect the function
-to return the result of the processing.
-
-
- <?php
- // put this in your application
- function protect_email($tpl_output, Smarty_Internal_Template $template)
- {
- $tpl_output =
- preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
- '$1%40$2', $tpl_output);
- return $tpl_output;
- }
-
- // register the outputfilter
- $smarty->registerFilter("output","protect_email");
- $smarty->display("index.tpl');
-
- // now any occurrence of an email address in the template output will have
- // a simple protection against spambots
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[`loadFilter()`](#api.load.filter),
-[`$autoload_filters`](#variable.autoload.filters),
-[postfilters](#advanced.features.postfilters) and
-[`$plugins_dir`](#variable.plugins.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md
deleted file mode 100644
index d3bad546a..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md
+++ /dev/null
@@ -1,40 +0,0 @@
-Postfilters {#advanced.features.postfilters}
-===========
-
-Template postfilters are PHP functions that your templates are ran
-through *after they are compiled*. Postfilters can be either
-[registered](#api.register.filter) or loaded from the [plugins
-directory](#variable.plugins.dir) by using the
-[`loadFilter()`](#api.load.filter) function or by setting the
-[`$autoload_filters`](#variable.autoload.filters) variable. Smarty will
-pass the compiled template code as the first argument, and expect the
-function to return the result of the processing.
-
-
- <?php
- // put this in your application
- function add_header_comment($tpl_source, Smarty_Internal_Template $template)
- {
- return "<?php echo \"<!-- Created by Smarty! -->\n\"; ?>\n".$tpl_source;
- }
-
- // register the postfilter
- $smarty->registerFilter('post','add_header_comment');
- $smarty->display('index.tpl');
- ?>
-
-
-
-The postfilter above will make the compiled Smarty template `index.tpl`
-look like:
-
-
- <!-- Created by Smarty! -->
- {* rest of template content... *}
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[prefilters](#advanced.features.prefilters),
-[outputfilters](#advanced.features.outputfilters), and
-[`loadFilter()`](#api.load.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md
deleted file mode 100644
index 76229e633..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md
+++ /dev/null
@@ -1,36 +0,0 @@
-Prefilters {#advanced.features.prefilters}
-==========
-
-Template prefilters are PHP functions that your templates are ran
-through *before they are compiled*. This is good for preprocessing your
-templates to remove unwanted comments, keeping an eye on what people are
-putting in their templates, etc.
-
-Prefilters can be either [registered](#api.register.filter) or loaded
-from the [plugins directory](#variable.plugins.dir) by using
-[`loadFilter()`](#api.load.filter) function or by setting the
-[`$autoload_filters`](#variable.autoload.filters) variable.
-
-Smarty will pass the template source code as the first argument, and
-expect the function to return the resulting template source code.
-
-This will remove all the html comments in the template source.
-
-
- <?php
- // put this in your application
- function remove_dw_comments($tpl_source, Smarty_Internal_Template $template)
- {
- return preg_replace("/<!--#.*-->/U",'',$tpl_source);
- }
-
- // register the prefilter
- $smarty->registerFilter('pre','remove_dw_comments');
- $smarty->display('index.tpl');
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[postfilters](#advanced.features.postfilters) and
-[`loadFilter()`](#api.load.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md
deleted file mode 100644
index 730915f14..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md
+++ /dev/null
@@ -1,144 +0,0 @@
-Security {#advanced.features.security}
-========
-
-Security is good for situations when you have untrusted parties editing
-the templates e.g. via ftp, and you want to reduce the risk of system
-security compromises through the template language.
-
-The settings of the security policy are defined by properties of an
-instance of the Smarty\_Security class. These are the possible settings:
-
-- `$secure_dir` is an array of template directories that are
- considered secure. [`$template_dir`](#variable.template.dir)
- considered secure implicitly. The default is an empty array.
-
-- `$trusted_dir` is an array of all directories that are considered
- trusted. Trusted directories are where you keep php scripts that are
- executed directly from the templates with
- [`{insert}`](#language.function.insert.php). The default is an
- empty array.
-
-- `$trusted_uri` is an array of regular expressions matching URIs that
- are considered trusted. This security directive used by
- [`{fetch}`](#language.function.fetch) and
- [`{html_image}`](#language.function.html.image). URIs passed to
- these functions are reduced to `{$PROTOCOL}://{$HOSTNAME}` to allow
- simple regular expressions (without having to deal with edge cases
- like authentication-tokens).
-
- The expression `'#https?://.*smarty.net$#i'` would allow accessing
- the following URIs:
-
- - `http://smarty.net/foo`
-
- - `http://smarty.net/foo`
-
- - `http://www.smarty.net/foo`
-
- - `http://smarty.net/foo`
-
- - `https://foo.bar.www.smarty.net/foo/bla?blubb=1`
-
- but deny access to these URIs:
-
- - `http://smarty.com/foo` (not matching top-level domain \"com\")
-
- - `ftp://www.smarty.net/foo` (not matching protocol \"ftp\")
-
- - `http://www.smarty.net.otherdomain.com/foo` (not matching end of
- domain \"smarty.net\")
-
-- `$static_classes` is an array of classes that are considered
- trusted. The default is an empty array which allows access to all
- static classes. To disable access to all static classes set
- \$static\_classes = null.
-
-- `$php_functions` is an array of PHP functions that are considered
- trusted and can be used from within template. To disable access to
- all PHP functions set \$php\_functions = null. An empty array (
- \$php\_functions = array() ) will allow all PHP functions. The
- default is array(\'isset\', \'empty\', \'count\', \'sizeof\',
- \'in\_array\', \'is\_array\',\'time\',\'nl2br\').
-
-- `$php_modifiers` is an array of PHP functions that are considered
- trusted and can be used from within template as modifier. To disable
- access to all PHP modifier set \$php\_modifier = null. An empty
- array ( \$php\_modifier = array() ) will allow all PHP functions.
- The default is array(\'escape\',\'count\').
-
-- `$streams` is an array of streams that are considered trusted and
- can be used from within template. To disable access to all streams
- set \$streams = null. An empty array ( \$streams = array() ) will
- allow all streams. The default is array(\'file\').
-
-- `$allowed_modifiers` is an array of (registered / autoloaded)
- modifiers that should be accessible to the template. If this array
- is non-empty, only the herein listed modifiers may be used. This is
- a whitelist.
-
-- `$disabled_modifiers` is an array of (registered / autoloaded)
- modifiers that may not be accessible to the template.
-
-- `$allowed_tags` is a boolean flag which controls if constants can
- function-, block and filter plugins that should be accessible to the
- template. If this array is non-empty, only the herein listed
- modifiers may be used. This is a whitelist.
-
-- `$disabled_tags` is an array of (registered / autoloaded) function-,
- block and filter plugins that may not be accessible to the template.
-
-- `$allow_constants` is a boolean flag which controls if constants can
- be accessed by the template. The default is \"true\".
-
-- `$allow_super_globals` is a boolean flag which controls if the PHP
- super globals can be accessed by the template. The default is
- \"true\".
-
-If security is enabled, no private methods, functions or properties of
-static classes or assigned objects can be accessed (beginning with
-\'\_\') by the template.
-
-To customize the security policy settings you can extend the
-Smarty\_Security class or create an instance of it.
-
-
- <?php
- require 'Smarty.class.php';
-
- class My_Security_Policy extends Smarty_Security {
- // disable all PHP functions
- public $php_functions = null;
- // allow everthing as modifier
- public $php_modifiers = array();
- }
- $smarty = new Smarty();
- // enable security
- $smarty->enableSecurity('My_Security_Policy');
- ?>
-
-
- <?php
- require 'Smarty.class.php';
- $smarty = new Smarty();
- $my_security_policy = new Smarty_Security($smarty);
- // disable all PHP functions
- $my_security_policy->php_functions = null;
- // allow everthing as modifier
- $my_security_policy->php_modifiers = array();
- // enable security
- $smarty->enableSecurity($my_security_policy);
- ?>
-
-
- <?php
- require 'Smarty.class.php';
- $smarty = new Smarty();
- // enable default security
- $smarty->enableSecurity();
- ?>
-
-> **Note**
->
-> Most security policy settings are only checked when the template gets
-> compiled. For that reason you should delete all cached and compiled
-> template files when you change your security settings.
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md
deleted file mode 100644
index 8ef79113c..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Static Classes {#advanced.features.static.classes}
-==============
-
-You can directly access static classes. The syntax is the same as in
-PHP.
-
-> **Note**
->
-> Direct access to PHP classes is not recommended. This ties the
-> underlying application code structure directly to the presentation,
-> and also complicates template syntax. It is recommended to register
-> plugins which insulate templates from PHP classes/objects. Use at your
-> own discretion. See the Best Practices section of the Smarty website.
-
-
- {assign var=foo value=myclass::BAR} <--- class constant BAR
-
- {assign var=foo value=myclass::method()} <--- method result
-
- {assign var=foo value=myclass::method1()->method2} <--- method chaining
-
- {assign var=foo value=myclass::$bar} <--- property bar of class myclass
-
- {assign var=foo value=$bar::method} <--- using Smarty variable bar as class name
-
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md
deleted file mode 100644
index d6f7a0de5..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Streams {#advanced.features.streams}
-=======
-
-You can also use streams to call variables. *{\$foo:bar}* will use the
-*foo://bar* stream to get the template variable.
-
-Using a PHP stream for a template variable resource from within a
-template.
-
-
- {$foo:bar}
-
-
-
-See also [`Template Resources`](#resources)
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md
deleted file mode 100644
index ce47310ca..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md
+++ /dev/null
@@ -1,128 +0,0 @@
-Template Inheritance {#advanced.features.template.inheritance}
-====================
-
-Inheritance brings the concept of Object Oriented Programming to
-templates, allowing you to define one (or more) base templates that can
-be extended by child templates. Extending means that the child template
-can override all or some of the parent named block areas.
-
-- The inheritance tree can be as deep as you want, meaning you can
- extend a file that extends another one that extends another one and
- so on.
-
-- The child templates can not define any content besides what\'s
- inside [`{block}`](#language.function.block) tags they override.
- Anything outside of [`{block}`](#language.function.block) tags will
- be removed.
-
-- The content of [`{block}`](#language.function.block) tags from child
- and parent templates can be merged by the `append` or `prepend`
- [`{block}`](#language.function.block) tag option flags and
- `{$smarty.block.parent}` or `{$smarty.block.child}` placeholders.
-
-- Template inheritance is a compile time process which creates a
- single compiled template file. Compared to corresponding solutions
- based on subtemplates included with the
- [`{include}`](#language.function.include) tag it does have much
- better performance when rendering.
-
-- The child template extends its parent defined with the
- [`{extends}`](#language.function.extends) tag, which must be the
- first line in the child template. Instead of using the
- [`{extends}`](#language.function.extends) tags in the template files
- you can define the whole template inheritance tree in the PHP script
- when you are calling [`fetch()`](#api.fetch) or
- [`display()`](#api.display) with the `extends:` template resource
- type. The later provides even more flexibility.
-
-> **Note**
->
-> When `$compile_check` is enabled, all files in the inheritance tree
-> are checked for modifications upon each invocation. You may want to
-> disable `$compile_check` on production servers for this reason.
-
-> **Note**
->
-> If you have a subtemplate which is included with
-> [`{include}`](#language.function.include) and it contains
-> [`{block}`](#language.function.block) areas it works only if the
-> [`{include}`](#language.function.include) itself is called from within
-> a surrounding [`{block}`](#language.function.block). In the final
-> parent template you may need a dummy
-> [`{block}`](#language.function.block) for it.
-
-layout.tpl (parent)
-
-
- <html>
- <head>
- <title>{block name=title}Default Page Title{/block}</title>
- {block name=head}{/block}
- </head>
- <body>
- {block name=body}{/block}
- </body>
- </html>
-
-
-
-myproject.tpl (child)
-
-
- {extends file='layout.tpl'}
- {block name=head}
- <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
- <script src="/js/mypage.js"></script>
- {/block}
-
-
-
-
-mypage.tpl (grandchild)
-
-
- {extends file='myproject.tpl'}
- {block name=title}My Page Title{/block}
- {block name=head}
- <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
- <script src="/js/mypage.js"></script>
- {/block}
- {block name=body}My HTML Page Body goes here{/block}
-
-
-
-To render the above use
-
-
- $smarty->display('mypage.tpl');
-
-The resulting output is
-
-
- <html>
- <head>
- <title>My Page Title</title>
- <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
- <script src="/js/mypage.js"></script>
- </head>
- <body>
- My HTML Page Body goes here
- </body>
- </html>
-
-Instead of using [`{extends}`](#language.function.extends) tags in the
-template files you can define the inheritance tree in your PHP script by
-using the [`extends:` resource](#resources.extends) type.
-
-The code below will return same result as the example above.
-
-
- <?php
- $smarty->display('extends:layout.tpl|myproject.tpl|mypage.tpl');
- ?>
-
-
-
-See also [`{block}`](#language.function.block),
-[`{extends}`](#language.function.extends) and [`extends:`
-resource](#resources.extends)
diff --git a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md b/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md
deleted file mode 100644
index b06430ff0..000000000
--- a/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md
+++ /dev/null
@@ -1,32 +0,0 @@
-Changing settings by template {#advanced.features.template.settings}
-=============================
-
-Normally you configure the Smarty settings by modifying the
-[`Smarty class variables`](#api.variables). Furthermore you can register
-plugins, filters etc. with [`Smarty functions`](#api.functions).
-Modifications done to the Smarty object will be global for all
-templates.
-
-However the Smarty class variables and functions can be accessed or
-called by individual template objects. Modification done to a template
-object will apply only for that template and its included subtemplates.
-
-
- <?php
- $tpl = $smarty->createTemplate('index.tpl);
- $tpl->cache_lifetime = 600;
- //or
- $tpl->setCacheLifetime(600);
- $smarty->display($tpl);
- ?>
-
-
-
-
- <?php
- $tpl = $smarty->createTemplate('index.tpl);
- $tpl->registerPlugin('modifier','mymodifier');
- $smarty->display($tpl);
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions.md b/vendor/smarty/smarty/docs/programmers/api-functions.md
deleted file mode 100644
index 6f120fa9a..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions.md
+++ /dev/null
@@ -1,64 +0,0 @@
-Smarty Class Methods {#api.functions}
-====================
-
-## Table of contents
-
-- [addConfigDir()](./api-functions/api-add-config-dir.md) — add a directory to the list of directories where config files are stored
-- [addPluginsDir()](./api-functions/api-add-plugins-dir.md) — add a directory to the list of directories where plugins are stored
-- [addTemplateDir()](./api-functions/api-add-template-dir.md) — add a directory to the list of directories where templates are stored
-- [append()](./api-functions/api-append.md) — append an element to an assigned array
-- [appendByRef()](./api-functions/api-append-by-ref.md) — append values by reference
-- [assign()](./api-functions/api-assign.md) — assign variables/objects to the templates
-- [assignByRef()](./api-functions/api-assign-by-ref.md) — assign values by reference
-- [clearAllAssign()](./api-functions/api-clear-all-assign.md) — clears the values of all assigned variables
-- [clearAllCache()](./api-functions/api-clear-all-cache.md) — clears the entire template cache
-- [clearAssign()](./api-functions/api-clear-assign.md) — clears the value of an assigned variable
-- [clearCache()](./api-functions/api-clear-cache.md) — clears the cache for a specific template
-- [clearCompiledTemplate()](./api-functions/api-clear-compiled-tpl.md) — clears the compiled version of the specified template resource
-- [clearConfig()](./api-functions/api-clear-config.md) — clears assigned config variables
-- [compileAllConfig()](./api-functions/api-compile-all-config.md) — compiles all known config files
-- [compileAllTemplates()](./api-functions/api-compile-all-templates.md) — compiles all known templates
-- [configLoad()](./api-functions/api-config-load.md) — loads config file data and assigns it to the template
-- [createData()](./api-functions/api-create-data.md) — creates a data object
-- [createTemplate()](./api-functions/api-create-template.md) — returns a template object
-- [disableSecurity()](./api-functions/api-disable-security.md) — disables template security
-- [display()](./api-functions/api-display.md) — displays the template
-- [enableSecurity()](./api-functions/api-enable-security.md) — enables template security
-- [fetch()](./api-functions/api-fetch.md) — returns the template output
-- [getCacheDir()](./api-functions/api-get-cache-dir.md) — return the directory where the rendered template's output is stored
-- [getCompileDir()](./api-functions/api-get-compile-dir.md) — returns the directory where compiled templates are stored
-- [getConfigDir()](./api-functions/api-get-config-dir.md) — return the directory where config files are stored
-- [getConfigVars()](./api-functions/api-get-config-vars.md) — returns the given loaded config variable value
-- [getPluginsDir()](./api-functions/api-get-plugins-dir.md) — return the directory where plugins are stored
-- [getRegisteredObject()](./api-functions/api-get-registered-object.md) — returns a reference to a registered object
-- [getTags()](./api-functions/api-get-tags.md) — return tags used by template
-- [getTemplateDir()](./api-functions/api-get-template-dir.md) — return the directory where templates are stored
-- [getTemplateVars()](./api-functions/api-get-template-vars.md) — returns assigned variable value(s)
-- [isCached()](./api-functions/api-is-cached.md) — returns true if there is a valid cache for this template
-- [loadFilter()](./api-functions/api-load-filter.md) — load a filter plugin
-- [muteExpectedErrors()](./api-functions/api-mute-expected-errors.md) — mutes expected warnings and notices deliberately generated by Smarty
-- [registerCacheResource()](./api-functions/api-register-cacheresource.md) — dynamically register CacheResources
-- [registerClass()](./api-functions/api-register-class.md) — register a class for use in the templates
-- [registerDefaultPluginHandler()](./api-functions/api-register-default-plugin-handler.md) — register a function which gets called on undefined tags
-- [registerFilter()](./api-functions/api-register-filter.md) — dynamically register filters
-- [registerPlugin()](./api-functions/api-register-plugin.md) — dynamically register plugins
-- [registerObject()](./api-functions/api-register-object.md) — register an object for use in the templates
-- [registerResource()](./api-functions/api-register-resource.md) — dynamically register resources
-- [setCacheDir()](./api-functions/api-set-cache-dir.md) — set the directory where the rendered template's output is stored
-- [setCompileDir()](./api-functions/api-set-compile-dir.md) — set the directory where compiled templates are stored
-- [setConfigDir()](./api-functions/api-set-config-dir.md) — set the directories where config files are stored
-- [setPluginsDir()](./api-functions/api-set-plugins-dir.md) — set the directories where plugins are stored
-- [setTemplateDir()](./api-functions/api-set-template-dir.md) — set the directories where templates are stored
-- [templateExists()](./api-functions/api-template-exists.md) — checks whether the specified template exists
-- [unregisterCacheResource()](./api-functions/api-unregister-cacheresource.md) — dynamically unregister a CacheResource plugin
-- [unregisterFilter()](./api-functions/api-unregister-filter.md) — dynamically unregister a filter
-- [unregisterPlugin()](./api-functions/api-unregister-plugin.md) — dynamically unregister plugins
-- [unregisterObject()](./api-functions/api-unregister-object.md) — dynamically unregister an object
-- [unregisterResource()](./api-functions/api-unregister-resource.md) — dynamically unregister a resource plugin
-- [testInstall()](./api-functions/api-test-install.md) — checks Smarty installation
-
-> **Note**
->
-> See
-> [`Changing settings by template`](./advanced-features/advanced-features-template-settings.md)
-> section for how to use the functions for individual templates.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/add-extension.md b/vendor/smarty/smarty/docs/programmers/api-functions/add-extension.md
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/add-extension.md
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md
deleted file mode 100644
index c3a052289..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md
+++ /dev/null
@@ -1,49 +0,0 @@
-addConfigDir()
-
-add a directory to the list of directories where config files are stored
-
-Description
-===========
-
-Smarty
-
-addConfigDir
-
-string\|array
-
-config\_dir
-
-string
-
-key
-
-
- <?php
-
- // add directory where config files are stored
- $smarty->addConfigDir('./config_1');
-
- // add directory where config files are stored and specify array-key
- $smarty->addConfigDir('./config_1', 'one');
-
- // add multiple directories where config files are stored and specify array-keys
- $smarty->addTemplateDir(array(
- 'two' => './config_2',
- 'three' => './config_3',
- ));
-
- // view the template dir chain
- var_dump($smarty->getConfigDir());
-
- // chaining of method calls
- $smarty->setConfigDir('./config')
- ->addConfigDir('./config_1', 'one')
- ->addConfigDir('./config_2', 'two');
-
- ?>
-
-
-
-See also [`getConfigDir()`](#api.get.config.dir),
-[`setConfigDir()`](#api.set.config.dir) and
-[`$config_dir`](#variable.config.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md
deleted file mode 100644
index e0d24564c..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md
+++ /dev/null
@@ -1,49 +0,0 @@
-addTemplateDir()
-
-add a directory to the list of directories where templates are stored
-
-Description
-===========
-
-Smarty
-
-addTemplateDir
-
-string\|array
-
-template\_dir
-
-string
-
-key
-
-
- <?php
-
- // add directory where templates are stored
- $smarty->addTemplateDir('./templates_1');
-
- // add directory where templates are stored and specify array-key
- $smarty->addTemplateDir('./templates_1', 'one');
-
- // add multiple directories where templates are stored and specify array-keys
- $smarty->addTemplateDir(array(
- 'two' => './templates_2',
- 'three' => './templates_3',
- ));
-
- // view the template dir chain
- var_dump($smarty->getTemplateDir());
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->addTemplateDir('./templates_1', 'one')
- ->addTemplateDir('./templates_2', 'two');
-
- ?>
-
-
-
-See also [`getTemplateDir()`](#api.get.template.dir),
-[`setTemplateDir()`](#api.set.template.dir) and
-[`$template_dir`](#variable.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md
deleted file mode 100644
index cd396d9cc..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md
+++ /dev/null
@@ -1,46 +0,0 @@
-appendByRef()
-
-append values by reference
-
-Description
-===========
-
-void
-
-appendByRef
-
-string
-
-varname
-
-mixed
-
-var
-
-bool
-
-merge
-
-This is used to [`append()`](#api.append) values to the templates by
-reference.
-
-> **Note**
->
-> With the introduction of PHP5, `appendByRef()` is not necessary for
-> most intents and purposes. `appendByRef()` is useful if you want a PHP
-> array index value to be affected by its reassignment from a template.
-> Assigned object properties behave this way by default.
-
-NOTE.PARAMETER.MERGE
-
-
- <?php
- // appending name/value pairs
- $smarty->appendByRef('Name', $myname);
- $smarty->appendByRef('Address', $address);
- ?>
-
-
-
-See also [`append()`](#api.append), [`assign()`](#api.assign) and
-[`getTemplateVars()`](#api.get.template.vars).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
index b94586417..d9acff84a 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
@@ -56,6 +56,5 @@ NOTE.PARAMETER.MERGE
-See also [`appendByRef()`](#api.append.by.ref),
-[`assign()`](#api.assign) and
+See also [`assign()`](#api.assign) and
[`getTemplateVars()`](#api.get.template.vars)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md
deleted file mode 100644
index 7c42b4836..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md
+++ /dev/null
@@ -1,42 +0,0 @@
-assignByRef()
-
-assign values by reference
-
-Description
-===========
-
-void
-
-assignByRef
-
-string
-
-varname
-
-mixed
-
-var
-
-This is used to [`assign()`](#api.assign) values to the templates by
-reference.
-
-> **Note**
->
-> With the introduction of PHP5, `assignByRef()` is not necessary for
-> most intents and purposes. `assignByRef()` is useful if you want a PHP
-> array index value to be affected by its reassignment from a template.
-> Assigned object properties behave this way by default.
-
-
- <?php
- // passing name/value pairs
- $smarty->assignByRef('Name', $myname);
- $smarty->assignByRef('Address', $address);
- ?>
-
-
-
-See also [`assign()`](#api.assign),
-[`clearAllAssign()`](#api.clear.all.assign), [`append()`](#api.append),
-[`{assign}`](#language.function.assign) and
-[`getTemplateVars()`](#api.get.template.vars).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
index c3b9985d4..31f6a1508 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
@@ -78,7 +78,6 @@ To access more complex array assignments see
[`{foreach}`](#language.function.foreach) and
[`{section}`](#language.function.section)
-See also [`assignByRef()`](#api.assign.by.ref),
-[`getTemplateVars()`](#api.get.template.vars),
+See also [`getTemplateVars()`](#api.get.template.vars),
[`clearAssign()`](#api.clear.assign), [`append()`](#api.append) and
[`{assign}`](#language.function.assign)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
index a102fc97e..35497d9ad 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
@@ -50,7 +50,7 @@ parameters:
<?php
- include('Smarty.class.php');
+ use Smarty\Smarty;
$smarty = new Smarty;
// force compilation of all config files
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md
index 53a021da8..2be22eef3 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md
@@ -60,7 +60,7 @@ parameters:
<?php
- include('Smarty.class.php');
+ use Smarty\Smarty;
$smarty = new Smarty;
// force compilation of all template files
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md
index 7e083776e..dc03ad94d 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md
@@ -30,7 +30,7 @@ be used to control which variables are seen by which templates.
<?php
- include('Smarty.class.php');
+ use Smarty\Smarty;
$smarty = new Smarty;
// create data object with its private variable scope
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md
index 5129406d4..097b7df95 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md
@@ -80,7 +80,7 @@ following parameters:
<?php
- include('Smarty.class.php');
+ use Smarty\Smarty;
$smarty = new Smarty;
// create template object with its private variable scope
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md
index 59726195e..ced7513f1 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md
@@ -31,7 +31,9 @@ PARAMETER.COMPILEID
<?php
- include(SMARTY_DIR.'Smarty.class.php');
+
+ use Smarty\Smarty;
+
$smarty = new Smarty();
$smarty->setCaching(true);
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
index 6da05bd0e..491c28d4d 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
@@ -30,7 +30,7 @@ PARAMETER.COMPILEID
<?php
- include('Smarty.class.php');
+ use Smarty\Smarty;
$smarty = new Smarty;
$smarty->setCaching(true);
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md
deleted file mode 100644
index 9e55d8d0b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md
+++ /dev/null
@@ -1,23 +0,0 @@
-getCacheDir()
-
-return the directory where the rendered template\'s output is stored
-
-Description
-===========
-
-string
-
-getCacheDir
-
-
- <?php
-
- // get directory where compiled templates are stored
- $cacheDir = $smarty->getCacheDir();
-
- ?>
-
-
-
-See also [`setCacheDir()`](#api.set.cache.dir) and
-[`$cache_dir`](#variable.cache.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md
deleted file mode 100644
index 3bfae7306..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md
+++ /dev/null
@@ -1,23 +0,0 @@
-getCompileDir()
-
-returns the directory where compiled templates are stored
-
-Description
-===========
-
-string
-
-getCompileDir
-
-
- <?php
-
- // get directory where compiled templates are stored
- $compileDir = $smarty->getCompileDir();
-
- ?>
-
-
-
-See also [`setCompileDir()`](#api.set.compile.dir) and
-[`$compile_dir`](#variable.compile.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md
deleted file mode 100644
index 7729b468b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md
+++ /dev/null
@@ -1,40 +0,0 @@
-getTags()
-
-return tags used by template
-
-Description
-===========
-
-string
-
-getTags
-
-object
-
-template
-
-This function returns an array of tagname/attribute pairs for all tags
-used by the template. It uses the following parameters:
-
-- `template` is the template object.
-
-> **Note**
->
-> This function is experimental.
-
-
- <?php
- include('Smarty.class.php');
- $smarty = new Smarty;
-
- // create template object
- $tpl = $smarty->createTemplate('index.tpl');
-
- // get tags
- $tags = $smarty->getTags($tpl);
-
- print_r($tags);
-
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md
deleted file mode 100644
index 42c75908b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md
+++ /dev/null
@@ -1,40 +0,0 @@
-getTemplateDir()
-
-return the directory where templates are stored
-
-Description
-===========
-
-string\|array
-
-getTemplateDir
-
-string
-
-key
-
-
- <?php
-
- // set some template directories
- $smarty->setTemplateDir(array(
- 'one' => './templates',
- 'two' => './templates_2',
- 'three' => './templates_3',
- ));
-
- // get all directories where templates are stored
- $template_dir = $smarty->getTemplateDir();
- var_dump($template_dir); // array
-
- // get directory identified by key
- $template_dir = $smarty->getTemplateDir('one');
- var_dump($template_dir); // string
-
- ?>
-
-
-
-See also [`setTemplateDir()`](#api.set.template.dir),
-[`addTemplateDir()`](#api.add.template.dir) and
-[`$template_dir`](#variable.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
index 0c41bf04a..d9d3057fb 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
@@ -22,8 +22,8 @@ string
compile\_id
- This only works if [`$caching`](#variable.caching) is set to one of
- `Smarty::CACHING_LIFETIME_CURRENT` or
- `Smarty::CACHING_LIFETIME_SAVED` to enable caching. See the [caching
+ `\Smarty\Smarty::CACHING_LIFETIME_CURRENT` or
+ `\Smarty\Smarty::CACHING_LIFETIME_SAVED` to enable caching. See the [caching
section](#caching) for more info.
- You can also pass a `$cache_id` as an optional second parameter in
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
index 19286ee33..e2738b0c8 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
@@ -18,7 +18,7 @@ string
name
The first argument specifies the type of the filter to load and can be
-one of the following: `pre`, `post` or `output`. The second argument
+one of the following: `variable`, `pre`, `post` or `output`. The second argument
specifies the `name` of the filter plugin.
@@ -37,6 +37,5 @@ specifies the `name` of the filter plugin.
-See also [`registerFilter()`](#api.register.filter),
-[`$autoload_filters`](#variable.autoload.filters) and [advanced
+See also [`registerFilter()`](#api.register.filter) and [advanced
features](#advanced.features).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
index 626288ea6..ac84a6435 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
@@ -15,7 +15,7 @@ handler merely inspects `$errno` and `$errfile` to determine if the
given error was produced deliberately and must be ignored, or should be
passed on to the next error handler.
-`Smarty::unmuteExpectedErrors()` removes the current error handler.
+`\Smarty\Smarty::unmuteExpectedErrors()` removes the current error handler.
Please note, that if you\'ve registered any custom error handlers after
the muteExpectedErrors() call, the unmute will not remove Smarty\'s
muting error handler, but the one registered last.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
index 60ae60308..626091496 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
@@ -31,7 +31,7 @@ how to create custom CacheResources.
<?php
- $smarty->registerCacheResource('mysql', new Smarty_CacheResource_Mysql());
+ $smarty->registerCacheResource('mysql', new My_CacheResource_Mysql());
?>
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
index ee339cadb..d0156d512 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
@@ -24,6 +24,7 @@ otherwise. If security is enabled, classes registered with
<?php
+ use Smarty\Smarty;
class Bar {
$property = "hello world";
@@ -44,12 +45,14 @@ otherwise. If security is enabled, classes registered with
<?php
+ use Smarty\Smarty;
+
namespace my\php\application {
class Bar {
$property = "hello world";
}
}
-
+
$smarty = new Smarty();
$smarty->registerClass("Foo", "\my\php\application\Bar");
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
index 03547df71..61ac47612 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
@@ -25,7 +25,7 @@ plugin types.
<?php
-
+ use Smarty\Smarty;
$smarty = new Smarty();
$smarty->registerDefaultPluginHandler('my_plugin_handler');
@@ -37,7 +37,7 @@ plugin types.
* @param string $name name of the undefined tag
* @param string $type tag type (e.g. Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK,
Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_MODIFIER, Smarty::PLUGIN_MODIFIERCOMPILER)
- * @param Smarty_Internal_Template $template template object
+ * @param \Smarty\Template\ $template template object
* @param string &$callback returned function name
* @param string &$script optional returned script filepath if function is external
* @param bool &$cacheable true by default, set to false if plugin is not cachable (Smarty >= 3.1.8)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
index fd91d2661..4a2aa4b02 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
@@ -38,8 +38,7 @@ filters](#advanced.features.outputfilters) for more information on how
to set up an output filter function.
See also [`unregisterFilter()`](#api.unregister.filter),
-[`loadFilter()`](#api.load.filter),
-[`$autoload_filters`](#variable.autoload.filters), [template pre
+[`loadFilter()`](#api.load.filter), [template pre
filters](#advanced.features.prefilters) [template post
filters](#advanced.features.postfilters) [template output
filters](#advanced.features.outputfilters) section.
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
index 6eb433810..51342b8e1 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
@@ -32,9 +32,9 @@ cache\_attrs
This method registers functions or methods defined in your script as
plugin. It uses the following parameters:
-- `cacheable` and `cache_attrs` can be omitted in most cases. See
+- `cacheable` can be omitted in most cases. See
[controlling cacheability of plugins output](#caching.cacheable) on
- how to use them properly.
+ how to use this properly.
<!-- -->
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
index ca4005460..774452bff 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
@@ -37,7 +37,7 @@ information on how to setup a function for fetching templates.
<?php
- $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
+ $smarty->registerResource('mysql', new My_Resource_Mysql());
?>
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md
deleted file mode 100644
index 7f7c4b60d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md
+++ /dev/null
@@ -1,32 +0,0 @@
-setCacheDir()
-
-set the directory where the rendered template\'s output is stored
-
-Description
-===========
-
-Smarty
-
-setCacheDir
-
-string
-
-cache\_dir
-
-
- <?php
-
- // set directory where rendered template's output is stored
- $smarty->setCacheDir('./cache');
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getCacheDir()`](#api.get.cache.dir) and
-[`$cache_dir`](#variable.cache.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md
deleted file mode 100644
index bfeb55a53..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md
+++ /dev/null
@@ -1,32 +0,0 @@
-setCompileDir()
-
-set the directory where compiled templates are stored
-
-Description
-===========
-
-Smarty
-
-setCompileDir
-
-string
-
-compile\_dir
-
-
- <?php
-
- // set directory where compiled templates are stored
- $smarty->setCompileDir('./templates_c');
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getCompileDir()`](#api.get.compile.dir) and
-[`$compile_dir`](#variable.compile.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md
deleted file mode 100644
index 97a6ae977..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md
+++ /dev/null
@@ -1,47 +0,0 @@
-setConfigDir()
-
-set the directories where config files are stored
-
-Description
-===========
-
-Smarty
-
-setConfigDir
-
-string\|array
-
-config\_dir
-
-
- <?php
-
- // set a single directory where the config files are stored
- $smarty->setConfigDir('./config');
-
- // view the config dir chain
- var_dump($smarty->getConfigDir());
-
- // set multiple directoríes where config files are stored
- $smarty->setConfigDir(array(
- 'one' => './config',
- 'two' => './config_2',
- 'three' => './config_3',
- ));
-
- // view the config dir chain
- var_dump($smarty->getConfigDir());
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setConfigDir('./config')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getConfigDir()`](#api.get.config.dir),
-[`addConfigDir()`](#api.add.config.dir) and
-[`$config_dir`](#variable.config.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md
deleted file mode 100644
index 2de23309b..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md
+++ /dev/null
@@ -1,46 +0,0 @@
-setTemplateDir()
-
-set the directories where templates are stored
-
-Description
-===========
-
-Smarty
-
-setTemplateDir
-
-string\|array
-
-template\_dir
-
-
- <?php
-
- // set a single directory where the templates are stored
- $smarty->setTemplateDir('./cache');
-
- // view the template dir chain
- var_dump($smarty->getTemplateDir());
-
- // set multiple directoríes where templates are stored
- $smarty->setTemplateDir(array(
- 'one' => './templates',
- 'two' => './templates_2',
- 'three' => './templates_3',
- ));
-
- // view the template dir chain
- var_dump($smarty->getTemplateDir());
-
- // chaining of method calls
- $smarty->setTemplateDir('./templates')
- ->setCompileDir('./templates_c')
- ->setCacheDir('./cache');
-
- ?>
-
-
-
-See also [`getTemplateDir()`](#api.get.template.dir),
-[`addTemplateDir()`](#api.add.template.dir) and
-[`$template_dir`](#variable.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md
deleted file mode 100644
index 07f61b12e..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md
+++ /dev/null
@@ -1,59 +0,0 @@
-templateExists()
-
-checks whether the specified template exists
-
-Description
-===========
-
-bool
-
-templateExists
-
-string
-
-template
-
-It can accept either a path to the template on the filesystem or a
-resource string specifying the template.
-
-This example uses `$_GET['page']` to
-[`{include}`](#language.function.include) a content template. If the
-template does not exist then an error page is displayed instead. First
-the `page_container.tpl`
-
-
- <html>
- <head><title>{$title}</title></head>
- <body>
- {include file='page_top.tpl'}
-
- {* include middle content page *}
- {include file=$content_template}
-
- {include file='page_footer.tpl'}
- </body>
-
-
-
-And the php script
-
-
- <?php
-
- // set the filename eg index.inc.tpl
- $mid_template = $_GET['page'].'.inc.tpl';
-
- if( !$smarty->templateExists($mid_template) ){
- $mid_template = 'page_not_found.tpl';
- }
- $smarty->assign('content_template', $mid_template);
-
- $smarty->display('page_container.tpl');
-
- ?>
-
-
-
-See also [`display()`](#api.display), [`fetch()`](#api.fetch),
-[`{include}`](#language.function.include) and
-[`{insert}`](#language.function.insert)
diff --git a/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md b/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
index 918bd220a..bba64a19c 100644
--- a/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
+++ b/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
@@ -14,7 +14,7 @@ installation can be accessed. It does output a corresponding protocol.
<?php
- require_once('Smarty.class.php');
+ use Smarty\Smarty;
$smarty = new Smarty();
$smarty->testInstall();
?>
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables.md b/vendor/smarty/smarty/docs/programmers/api-variables.md
deleted file mode 100644
index ee9c07611..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables.md
+++ /dev/null
@@ -1,63 +0,0 @@
-Smarty Class Variables {#api.variables}
-======================
-
-These are all of the available Smarty class variables. You can access
-them directly, or use the corresponding setter/getter methods.
-
-- [$allow_php_templates](./api-variables/variable-allow-php-templates.md)
-- [$auto_literal](./api-variables/variable-auto-literal.md)
-- [$autoload_filters](./api-variables/variable-autoload-filters.md)
-- [$cache_dir](./api-variables/variable-cache-dir.md)
-- [$cache_id](./api-variables/variable-cache-id.md)
-- [$cache_lifetime](./api-variables/variable-cache-lifetime.md)
-- [$cache_locking](./api-variables/variable-cache-locking.md)
-- [$cache_modified_check](./api-variables/variable-cache-modified-check.md)
-- [$caching](./api-variables/variable-caching.md)
-- [$caching_type](./api-variables/variable-caching-type.md)
-- [$compile_check](./api-variables/variable-compile-check.md)
-- [$compile_dir](./api-variables/variable-compile-dir.md)
-- [$compile_id](./api-variables/variable-compile-id.md)
-- [$compile_locking](./api-variables/variable-compile-locking.md)
-- [$compiler_class](./api-variables/variable-compiler-class.md)
-- [$config_booleanize](./api-variables/variable-config-booleanize.md)
-- [$config_dir](./api-variables/variable-config-dir.md)
-- [$config_overwrite](./api-variables/variable-config-overwrite.md)
-- [$config_read_hidden](./api-variables/variable-config-read-hidden.md)
-- [$debug_tpl](./api-variables/variable-debug-template.md)
-- [$debugging](./api-variables/variable-debugging.md)
-- [$debugging_ctrl](./api-variables/variable-debugging-ctrl.md)
-- [$default_config_type](./api-variables/variable-default-config-type.md)
-- [$default_modifiers](./api-variables/variable-default-modifiers.md)
-- [$default_resource_type](./api-variables/variable-default-resource-type.md)
-- [$default_config_handler_func](./api-variables/variable-default-config-handler-func.md)
-- [$default_template_handler_func](./api-variables/variable-default-template-handler-func.md)
-- [$direct_access_security](./api-variables/variable-direct-access-security.md)
-- [$error_reporting](./api-variables/variable-error-reporting.md)
-- [$escape_html](./api-variables/variable-escape-html.md)
-- [$force_cache](./api-variables/variable-force-cache.md)
-- [$force_compile](./api-variables/variable-force-compile.md)
-- [$left_delimiter](./api-variables/variable-left-delimiter.md)
-- [$locking_timeout](./api-variables/variable-locking-timeout.md)
-- [$merge_compiled_includes](./api-variables/variable-merge-compiled-includes.md)
-- [$plugins_dir](./api-variables/variable-plugins-dir.md)
-- [$right_delimiter](./api-variables/variable-right-delimiter.md)
-- [$smarty_debug_id](./api-variables/variable-smarty-debug-id.md)
-- [$template_dir](./api-variables/variable-template-dir.md)
-- [$trusted_dir](./api-variables/variable-trusted-dir.md)
-- [$use_include_path](./api-variables/variable-use-include-path.md)
-- [$use_sub_dirs](./api-variables/variable-use-sub-dirs.md)
-
-> **Note**
->
-> All class variables have magic setter/getter methods available.
-> setter/getter methods are camelCaseFormat, unlike the variable itself.
-> So for example, you can set and get the \$smarty-\>template\_dir
-> variable with \$smarty-\>setTemplateDir(\$dir) and \$dir =
-> \$smarty-\>getTemplateDir() respectively.
-
-> **Note**
->
-> See
-> [`Changing settings by template`](./advanced-features/advanced-features-template-settings.md)
-> section for how to change Smarty class variables for individual
-> templates.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md
deleted file mode 100644
index e15520e2d..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md
+++ /dev/null
@@ -1,18 +0,0 @@
-\$allow\_php\_templates {#variable.allow.php.templates}
-=======================
-
-By default the PHP template file resource is disabled. Setting
-`$allow_php_templates` to TRUE will enable PHP template files.
-
-::: {.informalexample}
-
- <?php
- $smarty->allow_php_templates = true;
- ?>
-
-
-:::
-
-> **Note**
->
-> The PHP template file resource is an undocumented deprecated feature.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md
deleted file mode 100644
index 8a300b065..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md
+++ /dev/null
@@ -1,21 +0,0 @@
-\$autoload\_filters {#variable.autoload.filters}
-===================
-
-If there are some filters that you wish to load on every template
-invocation, you can specify them using this variable and Smarty will
-automatically load them for you. The variable is an associative array
-where keys are filter types and values are arrays of the filter names.
-For example:
-
-::: {.informalexample}
-
- <?php
- $smarty->autoload_filters = array('pre' => array('trim', 'stamp'),
- 'output' => array('convert'));
- ?>
-
-
-:::
-
-See also [`registerFilter()`](#api.register.filter) and
-[`loadFilter()`](#api.load.filter)
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
index c9624b556..481fbee8e 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
@@ -5,8 +5,8 @@ This is the length of time in seconds that a template cache is valid.
Once this time has expired, the cache will be regenerated.
- `$caching` must be turned on (either
- Smarty::CACHING\_LIFETIME\_CURRENT or
- Smarty::CACHING\_LIFETIME\_SAVED) for `$cache_lifetime` to have any
+ \Smarty\Smarty::CACHING\_LIFETIME\_CURRENT or
+ \Smarty\Smarty::CACHING\_LIFETIME\_SAVED) for `$cache_lifetime` to have any
purpose.
- A `$cache_lifetime` value of -1 will force the cache to never
@@ -14,11 +14,11 @@ Once this time has expired, the cache will be regenerated.
- A value of 0 will cause the cache to always regenerate (good for
testing only, to disable caching a more efficient method is to set
- [`$caching`](#variable.caching) = Smarty::CACHING\_OFF).
+ [`$caching`](#variable.caching) = \Smarty\Smarty::CACHING\_OFF).
- If you want to give certain templates their own cache lifetime, you
could do this by setting [`$caching`](#variable.caching) =
- Smarty::CACHING\_LIFETIME\_SAVED, then set `$cache_lifetime` to a
+ \Smarty\Smarty::CACHING\_LIFETIME\_SAVED, then set `$cache_lifetime` to a
unique value just before calling [`display()`](#api.display) or
[`fetch()`](#api.fetch).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
index 05e00bb91..815be2556 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
@@ -4,8 +4,7 @@
If set to TRUE, Smarty will respect the If-Modified-Since header sent
from the client. If the cached file timestamp has not changed since the
last visit, then a `'304: Not Modified'` header will be sent instead of
-the content. This works only on cached content without
-[`{insert}`](#language.function.insert) tags.
+the content.
See also [`$caching`](#variable.caching),
[`$cache_lifetime`](#variable.cache.lifetime), and the [caching
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
index 9377e3b6d..7304e41d6 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
@@ -3,21 +3,21 @@
This tells Smarty whether or not to cache the output of the templates to
the [`$cache_dir`](#variable.cache.dir). By default this is set to the
-constant Smarty::CACHING\_OFF. If your templates consistently generate
+constant \Smarty\Smarty::CACHING\_OFF. If your templates consistently generate
the same content, it is advisable to turn on `$caching`, as this may
result in significant performance gains.
You can also have [multiple](#caching.multiple.caches) caches for the
same template.
-- A constant value of Smarty::CACHING\_LIFETIME\_CURRENT or
- Smarty::CACHING\_LIFETIME\_SAVED enables caching.
+- A constant value of \Smarty\Smarty::CACHING\_LIFETIME\_CURRENT or
+ \Smarty\Smarty ::CACHING\_LIFETIME\_SAVED enables caching.
-- A value of Smarty::CACHING\_LIFETIME\_CURRENT tells Smarty to use
+- A value of \Smarty\Smarty::CACHING\_LIFETIME\_CURRENT tells Smarty to use
the current [`$cache_lifetime`](#variable.cache.lifetime) variable
to determine if the cache has expired.
-- A value of Smarty::CACHING\_LIFETIME\_SAVED tells Smarty to use the
+- A value of \Smarty\Smarty::CACHING\_LIFETIME\_SAVED tells Smarty to use the
[`$cache_lifetime`](#variable.cache.lifetime) value at the time the
cache was generated. This way you can set the
[`$cache_lifetime`](#variable.cache.lifetime) just before
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md
deleted file mode 100644
index 075e7f17a..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md
+++ /dev/null
@@ -1,30 +0,0 @@
-\$compile\_check {#variable.compile.check}
-================
-
-Upon each invocation of the PHP application, Smarty tests to see if the
-current template has changed (different timestamp) since the last time
-it was compiled. If it has changed, it recompiles that template. If the
-template has yet not been compiled at all, it will compile regardless of
-this setting. By default this variable is set to TRUE.
-
-Once an application is put into production (ie the templates won\'t be
-changing), the compile check step is no longer needed. Be sure to set
-`$compile_check` to FALSE for maximum performance. Note that if you
-change this to FALSE and a template file is changed, you will \*not\*
-see the change since the template will not get recompiled.
-
-Note that up to Smarty 4.x, Smarty will check for the existence of
-the source template even if `$compile_check` is disabled.
-
-If [`$caching`](#variable.caching) is enabled and `$compile_check` is
-enabled, then the cache files will get regenerated if an involved
-template file or config file was updated.
-
-As of Smarty 3.1 `$compile_check` can be set to the value
-`Smarty::COMPILECHECK_CACHEMISS`. This enables Smarty to revalidate the
-compiled template, once a cache file is regenerated. So if there was a
-cached template, but it\'s expired, Smarty will run a single
-compile\_check before regenerating the cache.
-
-See [`$force_compile`](#variable.force.compile) and
-[`clearCompiledTemplate()`](#api.clear.compiled.tpl).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
index faec0e171..11a805292 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
@@ -2,8 +2,7 @@
============
This is the name of the template file used for the debugging console. By
-default, it is named `debug.tpl` and is located in the
-[`SMARTY_DIR`](#constant.smarty.dir).
+default, it is named `debug.tpl` and is located in `src/debug.tpl`.
See also [`$debugging`](#variable.debugging) and the [debugging
console](#chapter.debugging.console) section.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
index 0d6ec5e0d..50eb65bb5 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
@@ -8,11 +8,11 @@ resource.
>
> The default handler is currently only invoked for file resources. It
> is not triggered when the resource itself cannot be found, in which
-> case a SmartyException is thrown.
+> case a \Smarty\Exception is thrown.
<?php
-
+ use Smarty\Smarty;
$smarty = new Smarty();
$smarty->default_config_handler_func = 'my_default_config_handler_func';
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
index d8fcbb1ad..96c8190d7 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
@@ -8,11 +8,11 @@ resource.
>
> The default handler is currently only invoked for file resources. It
> is not triggered when the resource itself cannot be found, in which
-> case a SmartyException is thrown.
+> case a \Smarty\Exception is thrown.
<?php
-
+ use Smarty\Smarty;
$smarty = new Smarty();
$smarty->default_template_handler_func = 'my_default_template_handler_func';
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md
deleted file mode 100644
index f471f5de0..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md
+++ /dev/null
@@ -1,13 +0,0 @@
-\$direct\_access\_security {#variable.direct.access.security}
-==========================
-
-Direct access security inhibits direct browser access to compiled or
-cached template files.
-
-Direct access security is enabled by default. To disable it set
-`$direct_access_security` to FALSE.
-
-> **Note**
->
-> This is a compile time option. If you change the setting you must make
-> sure that the templates get recompiled.
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
index c0aa9cedb..ee28d47ab 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
@@ -7,7 +7,7 @@ When this value is set to a non-null-value it\'s value is used as php\'s
Smarty 3.1.2 introduced the
[`muteExpectedErrors()`](#api.mute.expected.errors) function. Calling
-`Smarty::muteExpectedErrors();` after setting up custom error handling
+`\Smarty\Smarty::muteExpectedErrors();` after setting up custom error handling
will ensure that warnings and notices (deliberately) produced by Smarty
will not be passed to other custom error handlers. If your error logs
are filling up with warnings regarding `filemtime()` or `unlink()`
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md
deleted file mode 100644
index bcc13f0e5..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$left\_delimiter {#variable.left.delimiter}
-=================
-
-This is the left delimiter used by the template language. Default is
-`{`.
-
-See also [`$right_delimiter`](#variable.right.delimiter) and [escaping
-smarty parsing](#language.escaping) .
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md
deleted file mode 100644
index 8a7cfcdb2..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md
+++ /dev/null
@@ -1,28 +0,0 @@
-\$plugins\_dir {#variable.plugins.dir}
-==============
-
-This is the directory or directories where Smarty will look for the
-plugins that it needs. Default is `plugins/` under the
-[`SMARTY_DIR`](#constant.smarty.dir). If you supply a relative path,
-Smarty will first look under the [`SMARTY_DIR`](#constant.smarty.dir),
-then relative to the current working directory, then relative to the PHP
-include\_path. If `$plugins_dir` is an array of directories, Smarty will
-search for your plugin in each plugin directory **in the order they are
-given**.
-
-> **Note**
->
-> For best performance, do not setup your `$plugins_dir` to have to use
-> the PHP include path. Use an absolute pathname, or a path relative to
-> `SMARTY_DIR` or the current working directory.
-
-> **Note**
->
-> As of Smarty 3.1 the attribute \$plugins\_dir is no longer accessible
-> directly. Use [`getPluginsDir()`](#api.get.plugins.dir),
-> [`setPluginsDir()`](#api.set.plugins.dir) and
-> [`addPluginsDir()`](#api.add.plugins.dir) instead.
-
-See also [`getPluginsDir()`](#api.get.plugins.dir),
-[`setPluginsDir()`](#api.set.plugins.dir) and
-[`addPluginsDir()`](#api.add.plugins.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md
deleted file mode 100644
index 14a9b568e..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$right\_delimiter {#variable.right.delimiter}
-==================
-
-This is the right delimiter used by the template language. Default is
-`}`.
-
-See also [`$left_delimiter`](#variable.left.delimiter) and [escaping
-smarty parsing](#language.escaping).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
index 1db9c4139..eb91d2c24 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
@@ -15,22 +15,12 @@ found.
> document root.
> **Note**
->
-> If the directories known to `$template_dir` are relative to
-> directories known to the
-> [include\_path](https://www.php.net/ini.core.php#ini.include-path) you
-> need to activate the [`$use_include_path`](#variable.use.include.path)
-> option.
-
-> **Note**
->
> As of Smarty 3.1 the attribute \$template\_dir is no longer accessible
> directly. Use [`getTemplateDir()`](#api.get.template.dir),
> [`setTemplateDir()`](#api.set.template.dir) and
> [`addTemplateDir()`](#api.add.template.dir) instead.
See also [`Template Resources`](#resources),
-[`$use_include_path`](#variable.use.include.path),
[`getTemplateDir()`](#api.get.template.dir),
[`setTemplateDir()`](#api.set.template.dir) and
[`addTemplateDir()`](#api.add.template.dir).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md
deleted file mode 100644
index 9720ae8a6..000000000
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\$trusted\_dir {#variable.trusted.dir}
-==============
-
-`$trusted_dir` is only for use when security is enabled. This is an
-array of all directories that are considered trusted. Trusted
-directories are where you keep php scripts that are executed directly
-from the templates with
-[`{insert}`](#language.function.insert.php).
diff --git a/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md b/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md
index 90f55f073..e69de29bb 100644
--- a/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md
+++ b/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md
@@ -1,49 +0,0 @@
-\$use\_include\_path {#variable.use.include.path}
-====================
-
-This tells smarty to respect the
-[include\_path](https://www.php.net/ini.core.php#ini.include-path) within
-the [`File Template Resource`](#resources.file) handler and the plugin
-loader to resolve the directories known to
-[`$template_dir`](#variable.template.dir). The flag also makes the
-plugin loader check the include\_path for
-[`$plugins_dir`](#variable.plugins.dir).
-
-> **Note**
->
-> You should not design your applications to rely on the include\_path,
-> as this may - depending on your implementation - slow down your system
-> (and Smarty) considerably.
-
-If use\_include\_path is enabled, file discovery for
-[`$template_dir`](#variable.template.dir) and
-[`$plugins_dir`](#variable.plugins.dir) work as follows.
-
-- For each element `$directory` in array (\$template\_dir or
- \$plugins\_dir) do
-
-- Test if requested file is in `$directory` relative to the [current
- working directory](https://www.php.net/function.getcwd.php). If file
- found, return it.
-
-- For each `$path` in include\_path do
-
-- Test if requested file is in `$directory` relative to the `$path`
- (possibly relative to the [current working
- directory](https://www.php.net/function.getcwd.php)). If file found,
- return it.
-
-- Try default\_handler or fail.
-
-This means that whenever a directory/file relative to the current
-working directory is encountered, it is preferred over anything
-potentially accessible through the include\_path.
-
-> **Note**
->
-> Smarty does not filter elements of the include\_path. That means a
-> \".:\" within your include path will trigger the current working
-> directory lookup twice.
-
-See also [`Template Resources`](#resources) and
-[`$template_dir`](#variable.template.dir)
diff --git a/vendor/smarty/smarty/docs/programmers/caching.md b/vendor/smarty/smarty/docs/programmers/caching.md
deleted file mode 100644
index 5656b71b5..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching.md
+++ /dev/null
@@ -1,24 +0,0 @@
-Caching
-=======
-
-Caching is used to speed up a call to [`display()`](./api-functions/api-display.md) or
-[`fetch()`](./api-functions/api-fetch.md) by saving its output to a file. If a cached
-version of the call is available, that is displayed instead of
-regenerating the output. Caching can speed things up tremendously,
-especially templates with longer computation times. Since the output of
-[`display()`](./api-functions/api-display.md) or [`fetch()`](./api-functions/api-fetch.md) is cached, one
-cache file could conceivably be made up of several template files,
-config files, etc.
-
-Since templates are dynamic, it is important to be careful what you are
-caching and for how long. For instance, if you are displaying the front
-page of your website that does not change its content very often, it
-might work well to cache this page for an hour or more. On the other
-hand, if you are displaying a page with a timetable containing new
-information by the minute, it would not make sense to cache this page.
-
-## Table of contents
-- [Setting Up Caching](./caching/caching-setting-up.md)
-- [Multiple Caches Per Page](./caching/caching-multiple-caches.md)
-- [Controlling Cacheability of Output](./caching/caching-groups.md)
-- [Custom Cache Implementation](./caching/caching-custom.md)
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md b/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md
deleted file mode 100644
index ee9b60090..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md
+++ /dev/null
@@ -1,176 +0,0 @@
-Controlling Cacheability of Output {#caching.cacheable}
-==================================
-
-If caching is enabled normally the whole final output of the page gets
-cached. However Smarty3 offers several options how to exclude sections
-of your output from caching.
-
-> **Note**
->
-> Be sure any variables used within a non-cached section are also
-> assigned from PHP when the page is loaded from the cache.
-
-Cacheability of Template Section {#cacheability.sections}
---------------------------------
-
-A larger section of your template can easily excluded from caching by
-using the [`{nocache}`](#language.function.nocache) and
-[`{/nocache}`](#language.function.nocache) tags.
-
-
-
- Today's date is
- {nocache}
- {$smarty.now|date_format}
- {/nocache}
-
-
-
-The above code will output the current date on a cached page.
-
-Cacheability of Tags {#cacheability.tags}
---------------------
-
-Caching for an individual tag can be disabled by adding the \"nocache\"
-option flag to the tag.
-
-
- Today's date is
- {$smarty.now|date_format nocache}
-
-
-
-Cacheability of Variables {#cacheability.variables}
--------------------------
-
-You can [`assign()`](#api.assign) variables as not cachable. Any tag
-which uses such variable will be automatically executed in nocache mode.
-
-> **Note**
->
-> If a tag is executed in nocache mode you must make sure that all other
-> variables used by that tag are also assigned from PHP when the page is
-> loaded from the cache.
-
-> **Note**
->
-> The nocache status of an assigned variable will effect the compiled
-> template code. If you change the status you must manually delete
-> existing compiled and cached template files to force a recompile.
-
-
- // assign $foo as nocahe variable
- $smarty->assign('foo',time(),true);
-
-
- Dynamic time value is {$foo}
-
-
-
-Cacheability of Plugins {#cacheability.plugins}
------------------------
-
-The cacheability of plugins can be declared when registering them. The
-third parameter to [`registerPlugin()`](#api.register.plugin) is called
-`$cacheable` and defaults to TRUE.
-
-When registering a plugin with `$cacheable=false` the plugin is called
-everytime the page is displayed, even if the page comes from the cache.
-The plugin function behaves a little like an
-[`{insert}`](#plugins.inserts) function.
-
-> **Note**
->
-> The `$cacheable` status will effect the compiled template code. If you
-> change the status you must manually delete existing compiled and
-> cached template files to force a recompile.
-
-In contrast to [`{insert}`](#plugins.inserts) the attributes to the
-plugins are not cached by default. They can be declared to be cached
-with the fourth parameter `$cache_attrs`. `$cache_attrs` is an array of
-attribute-names that should be cached, so the plugin-function get value
-as it was the time the page was written to cache everytime it is fetched
-from the cache.
-
-
- <?php
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- function remaining_seconds($params, $smarty) {
- $remain = $params['endtime'] - time();
- if($remain >= 0){
- return $remain . ' second(s)';
- }else{
- return 'done';
- }
- }
-
- $smarty->registerPlugin('function','remaining', 'remaining_seconds', false, array('endtime'));
-
- if (!$smarty->isCached('index.tpl')) {
- // fetch $obj from db and assign...
- $smarty->assignByRef('obj', $obj);
- }
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-where `index.tpl` is:
-
-
- Time Remaining: {remaining endtime=$obj->endtime}
-
-
-
-The number of seconds till the endtime of `$obj` is reached changes on
-each display of the page, even if the page is cached. Since the endtime
-attribute is cached the object only has to be pulled from the database
-when page is written to the cache but not on subsequent requests of the
-page.
-
-
- index.php:
-
- <?php
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- function smarty_block_dynamic($param, $content, $smarty) {
- return $content;
- }
- $smarty->registerPlugin('block','dynamic', 'smarty_block_dynamic', false);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-where `index.tpl` is:
-
-
- Page created: {'0'|date_format:'%D %H:%M:%S'}
-
- {dynamic}
-
- Now is: {'0'|date_format:'%D %H:%M:%S'}
-
- ... do other stuff ...
-
- {/dynamic}
-
-
-
-When reloading the page you will notice that both dates differ. One is
-"dynamic" one is "static". You can do everything between
-`{dynamic}...{/dynamic}` and be sure it will not be cached like the rest
-of the page.
-
-> **Note**
->
-> The above example shall just demonstrate how a dynamic block plugins
-> works. See
-> [`Cacheability of Template Section`](#cacheability.sections) on how to
-> disable caching of a template section by the built-in
-> [`{nocache}`](#language.function.nocache) and
-> [`{/nocache}`](#language.function.nocache) tags.
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md b/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md
deleted file mode 100644
index 77d2ce7b3..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md
+++ /dev/null
@@ -1,296 +0,0 @@
-Custom Cache Implementation {#caching.custom}
-===========================
-
-As an alternative to using the default file-based caching mechanism, you
-can specify a custom cache implementation that will be used to read,
-write and clear cached files.
-
-> **Note**
->
-> In Smarty2 this used to be a callback function called
-> `$cache_handler_func`. Smarty3 replaced this callback by the
-> `Smarty_CacheResource` module.
-
-With a custom cache implementation you\'re likely trying to achieve at
-least one of the following goals: replace the slow filesystem by a
-faster storage engine, centralize the cache to be accessible to multiple
-servers.
-
-Smarty allows CacheResource implementations to use one of the APIs
-`Smarty_CacheResource_Custom` or `Smarty_CacheResource_KeyValueStore`.
-`Smarty_CacheResource_Custom` is a simple API directing all read, write,
-clear calls to your implementation. This API allows you to store
-wherever and however you deem fit. The
-`Smarty_CacheResource_KeyValueStore` API allows you to turn any \"dumb\"
-KeyValue-Store (like APC, Memcache, ...) into a full-featured
-CacheResource implementation. That is, everything around deep
-cache-groups like \"a\|b\|c\" is being handled for you in way that
-allows clearing the cache-group \"a\" and all nested groups are cleared
-as well - even though KeyValue-Stores don\'t allow this kind of
-hierarchy by nature.
-
-Custom CacheResources may be put in a file `cacheresource.foobarxyz.php`
-within your [`$plugins_dir`](#variable.plugins.dir), or registered on
-runtime with [`registerCacheResource()`](#api.register.cacheresource).
-In either case you need to set [`$caching_type`](#variable.caching.type)
-to invoke your custom CacheResource implementation.
-
-
- <?php
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->caching_type = 'mysql';
-
- /**
- * MySQL CacheResource
- *
- * CacheResource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's output caching.
- *
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `output_cache` (
- * `id` CHAR(40) NOT NULL COMMENT 'sha1 hash',
- * `name` VARCHAR(250) NOT NULL,
- * `cache_id` VARCHAR(250) NULL DEFAULT NULL,
- * `compile_id` VARCHAR(250) NULL DEFAULT NULL,
- * `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
- * `content` LONGTEXT NOT NULL,
- * PRIMARY KEY (`id`),
- * INDEX(`name`),
- * INDEX(`cache_id`),
- * INDEX(`compile_id`),
- * INDEX(`modified`)
- * ) ENGINE = InnoDB;</pre>
- *
- * @package CacheResource-examples
- * @author Rodney Rehm
- */
- class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom {
- // PDO instance
- protected $db;
- protected $fetch;
- protected $fetchTimestamp;
- protected $save;
-
- public function __construct() {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id');
- $this->fetchTimestamp = $this->db->prepare('SELECT modified FROM output_cache WHERE id = :id');
- $this->save = $this->db->prepare('REPLACE INTO output_cache (id, name, cache_id, compile_id, content)
- VALUES (:id, :name, :cache_id, :compile_id, :content)');
- }
-
- /**
- * fetch cached content and its modification time from data source
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer $mtime cache modification timestamp (epoch)
- * @return void
- */
- protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
- {
- $this->fetch->execute(array('id' => $id));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $content = $row['content'];
- $mtime = strtotime($row['modified']);
- } else {
- $content = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch cached content's modification timestamp from data source
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the complete cached content.
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
- */
- protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
- {
- $this->fetchTimestamp->execute(array('id' => $id));
- $mtime = strtotime($this->fetchTimestamp->fetchColumn());
- $this->fetchTimestamp->closeCursor();
- return $mtime;
- }
-
- /**
- * Save content to cache
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration time in seconds or null
- * @param string $content content to cache
- * @return boolean success
- */
- protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content)
- {
- $this->save->execute(array(
- 'id' => $id,
- 'name' => $name,
- 'cache_id' => $cache_id,
- 'compile_id' => $compile_id,
- 'content' => $content,
- ));
- return !!$this->save->rowCount();
- }
-
- /**
- * Delete content from cache
- *
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration or null
- * @return integer number of deleted caches
- */
- protected function delete($name, $cache_id, $compile_id, $exp_time)
- {
- // delete the whole cache
- if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
- // returning the number of deleted caches would require a second query to count them
- $query = $this->db->query('TRUNCATE TABLE output_cache');
- return -1;
- }
- // build the filter
- $where = array();
- // equal test name
- if ($name !== null) {
- $where[] = 'name = ' . $this->db->quote($name);
- }
- // equal test compile_id
- if ($compile_id !== null) {
- $where[] = 'compile_id = ' . $this->db->quote($compile_id);
- }
- // range test expiration time
- if ($exp_time !== null) {
- $where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)';
- }
- // equal test cache_id and match sub-groups
- if ($cache_id !== null) {
- $where[] = '(cache_id = '. $this->db->quote($cache_id)
- . ' OR cache_id LIKE '. $this->db->quote($cache_id .'|%') .')';
- }
- // run delete query
- $query = $this->db->query('DELETE FROM output_cache WHERE ' . join(' AND ', $where));
- return $query->rowCount();
- }
- }
-
-
-
-
- <?php
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->caching_type = 'memcache';
-
- /**
- * Memcache CacheResource
- *
- * CacheResource Implementation based on the KeyValueStore API to use
- * memcache as the storage resource for Smarty's output caching.
- *
- * Note that memcache has a limitation of 256 characters per cache-key.
- * To avoid complications all cache-keys are translated to a sha1 hash.
- *
- * @package CacheResource-examples
- * @author Rodney Rehm
- */
- class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore {
- /**
- * memcache instance
- * @var Memcache
- */
- protected $memcache = null;
-
- public function __construct()
- {
- $this->memcache = new Memcache();
- $this->memcache->addServer( '127.0.0.1', 11211 );
- }
-
- /**
- * Read values for a set of keys from cache
- *
- * @param array $keys list of keys to fetch
- * @return array list of values with the given keys used as indexes
- * @return boolean true on success, false on failure
- */
- protected function read(array $keys)
- {
- $_keys = $lookup = array();
- foreach ($keys as $k) {
- $_k = sha1($k);
- $_keys[] = $_k;
- $lookup[$_k] = $k;
- }
- $_res = array();
- $res = $this->memcache->get($_keys);
- foreach ($res as $k => $v) {
- $_res[$lookup[$k]] = $v;
- }
- return $_res;
- }
-
- /**
- * Save values for a set of keys to cache
- *
- * @param array $keys list of values to save
- * @param int $expire expiration time
- * @return boolean true on success, false on failure
- */
- protected function write(array $keys, $expire=null)
- {
- foreach ($keys as $k => $v) {
- $k = sha1($k);
- $this->memcache->set($k, $v, 0, $expire);
- }
- return true;
- }
-
- /**
- * Remove values from cache
- *
- * @param array $keys list of keys to delete
- * @return boolean true on success, false on failure
- */
- protected function delete(array $keys)
- {
- foreach ($keys as $k) {
- $k = sha1($k);
- $this->memcache->delete($k);
- }
- return true;
- }
-
- /**
- * Remove *all* values from cache
- *
- * @return boolean true on success, false on failure
- */
- protected function purge()
- {
- return $this->memcache->flush();
- }
- }
-
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md b/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md
deleted file mode 100644
index 7e248b2f3..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md
+++ /dev/null
@@ -1,60 +0,0 @@
-Cache Groups {#caching.groups}
-============
-
-You can do more elaborate grouping by setting up `$cache_id` groups.
-This is accomplished by separating each sub-group with a vertical bar
-`|` in the `$cache_id` value. You can have as many sub-groups as you
-like.
-
-- You can think of cache groups like a directory hierarchy. For
- instance, a cache group of `'a|b|c'` could be thought of as the
- directory structure `'/a/b/c/'`.
-
-- `clearCache(null,'a|b|c')` would be like removing the files
- `'/a/b/c/*'`. `clearCache(null,'a|b')` would be like removing the
- files `'/a/b/*'`.
-
-- If you specify a [`$compile_id`](#variable.compile.id) such as
- `clearCache(null,'a|b','foo')` it is treated as an appended cache
- group `'/a/b/c/foo/'`.
-
-- If you specify a template name such as
- `clearCache('foo.tpl','a|b|c')` then Smarty will attempt to remove
- `'/a/b/c/foo.tpl'`.
-
-- You CANNOT remove a specified template name under multiple cache
- groups such as `'/a/b/*/foo.tpl'`, the cache grouping works
- left-to-right ONLY. You will need to group your templates under a
- single cache group hierarchy to be able to clear them as a group.
-
-Cache grouping should not be confused with your template directory
-hierarchy, the cache grouping has no knowledge of how your templates are
-structured. So for example, if you have a template structure like
-`themes/blue/index.tpl` and you want to be able to clear all the cache
-files for the "blue" theme, you will need to create a cache group
-structure that mimics your template file structure, such as
-`display('themes/blue/index.tpl','themes|blue')`, then clear them with
-`clearCache(null,'themes|blue')`.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- // clear all caches with 'sports|basketball' as the first two cache_id groups
- $smarty->clearCache(null,'sports|basketball');
-
- // clear all caches with "sports" as the first cache_id group. This would
- // include "sports|basketball", or "sports|(anything)|(anything)|(anything)|..."
- $smarty->clearCache(null,'sports');
-
- // clear the foo.tpl cache file with "sports|basketball" as the cache_id
- $smarty->clearCache('foo.tpl','sports|basketball');
-
-
- $smarty->display('index.tpl','sports|basketball');
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md b/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md
deleted file mode 100644
index 40fffc3d7..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md
+++ /dev/null
@@ -1,87 +0,0 @@
-Multiple Caches Per Page {#caching.multiple.caches}
-========================
-
-You can have multiple cache files for a single call to
-[`display()`](#api.display) or [`fetch()`](#api.fetch). Let\'s say that
-a call to `display('index.tpl')` may have several different output
-contents depending on some condition, and you want separate caches for
-each one. You can do this by passing a `$cache_id` as the second
-parameter to the function call.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- $my_cache_id = $_GET['article_id'];
-
- $smarty->display('index.tpl', $my_cache_id);
- ?>
-
-
-
-Above, we are passing the variable `$my_cache_id` to
-[`display()`](#api.display) as the `$cache_id`. For each unique value of
-`$my_cache_id`, a separate cache will be generated for `index.tpl`. In
-this example, `article_id` was passed in the URL and is used as the
-`$cache_id`.
-
-> **Note**
->
-> Be very cautious when passing values from a client (web browser) into
-> Smarty or any PHP application. Although the above example of using the
-> article\_id from the URL looks handy, it could have bad consequences.
-> The `$cache_id` is used to create a directory on the file system, so
-> if the user decided to pass an extremely large value for article\_id,
-> or write a script that sends random article\_id\'s at a rapid pace,
-> this could possibly cause problems at the server level. Be sure to
-> sanitize any data passed in before using it. In this instance, maybe
-> you know the article\_id has a length of ten characters and is made up
-> of alpha-numerics only, and must be a valid article\_id in the
-> database. Check for this!
-
-Be sure to pass the same `$cache_id` as the second parameter to
-[`isCached()`](#api.is.cached) and [`clearCache()`](#api.clear.cache).
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- $my_cache_id = $_GET['article_id'];
-
- if(!$smarty->isCached('index.tpl',$my_cache_id)) {
- // No cache available, do variable assignments here.
- $contents = get_database_contents();
- $smarty->assign($contents);
- }
-
- $smarty->display('index.tpl',$my_cache_id);
- ?>
-
-
-
-You can clear all caches for a particular `$cache_id` by passing NULL as
-the first parameter to [`clearCache()`](#api.clear.cache).
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- // clear all caches with "sports" as the $cache_id
- $smarty->clearCache(null,'sports');
-
- $smarty->display('index.tpl','sports');
- ?>
-
-
-
-In this manner, you can "group" your caches together by giving them the
-same `$cache_id`.
diff --git a/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md b/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md
deleted file mode 100644
index bc9d2ad9e..000000000
--- a/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md
+++ /dev/null
@@ -1,153 +0,0 @@
-Setting Up Caching {#caching.setting.up}
-==================
-
-The first thing to do is enable caching by setting
-[`$caching`](#variable.caching) to one of
-`Smarty::CACHING_LIFETIME_CURRENT` or `Smarty::CACHING_LIFETIME_SAVED`.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- // uses the value of $smarty->cacheLifetime() to determine
- // the number of seconds a cache is good for
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-With caching enabled, the function call to `display('index.tpl')` will
-render the template as usual, but also saves a copy of its output to a
-file (a cached copy) in the [`$cache_dir`](#variable.cache.dir). On the
-next call to `display('index.tpl')`, the cached copy will be used
-instead of rendering the template again.
-
-> **Note**
->
-> The files in the [`$cache_dir`](#variable.cache.dir) are named similar
-> to the template name. Although they end in the `.php` extension, they
-> are not intended to be directly executable. Do not edit these files!
-
-Each cached page has a limited lifetime determined by
-[`$cache_lifetime`](#variable.cache.lifetime). The default value is 3600
-seconds, or one hour. After that time expires, the cache is regenerated.
-It is possible to give individual caches their own expiration time by
-setting [`$caching`](#variable.caching) to
-`Smarty::CACHING_LIFETIME_SAVED`. See
-[`$cache_lifetime`](#variable.cache.lifetime) for more details.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- // retain current cache lifetime for each specific display call
- $smarty->setCaching(Smarty::CACHING_LIFETIME_SAVED);
-
- // set the cache_lifetime for index.tpl to 5 minutes
- $smarty->setCacheLifetime(300);
- $smarty->display('index.tpl');
-
- // set the cache_lifetime for home.tpl to 1 hour
- $smarty->setCacheLifetime(3600);
- $smarty->display('home.tpl');
-
- // NOTE: the following $cache_lifetime setting will not work when $caching
- // is set to Smarty::CACHING_LIFETIME_SAVED.
- // The cache lifetime for home.tpl has already been set
- // to 1 hour, and will no longer respect the value of $cache_lifetime.
- // The home.tpl cache will still expire after 1 hour.
- $smarty->setCacheLifetime(30); // 30 seconds
- $smarty->display('home.tpl');
- ?>
-
-
-
-If [`$compile_check`](#variable.compile.check) is enabled (default),
-every template file and config file that is involved with the cache file
-is checked for modification. If any of the files have been modified
-since the cache was generated, the cache is immediately regenerated.
-This is a computational overhead, so for optimum performance set
-[`$compile_check`](#variable.compile.check) to FALSE.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
- $smarty->setCompileCheck(false);
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-If [`$force_compile`](#variable.force.compile) is enabled, the cache
-files will always be regenerated. This effectively disables caching,
-however this also seriously degrades performance.
-[`$force_compile`](#variable.force.compile) is meant to be used for
-[debugging](#chapter.debugging.console) purposes. The appropriate way to
-disable caching is to set [`$caching`](#variable.caching) to
-Smarty::CACHING\_OFF.
-
-The [`isCached()`](#api.is.cached) function can be used to test if a
-template has a valid cache or not. If you have a cached template that
-requires something like a database fetch, you can use this to skip that
-process.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- if(!$smarty->isCached('index.tpl')) {
- // No cache available, do variable assignments here.
- $contents = get_database_contents();
- $smarty->assign($contents);
- }
-
- $smarty->display('index.tpl');
- ?>
-
-
-
-You can keep parts of a page dynamic (disable caching) with the
-[`{nocache}{/nocache}`](#language.function.nocache) block function, the
-[`{insert}`](#language.function.insert) function, or by using the
-`nocache` parameter for most template functions.
-
-Let\'s say the whole page can be cached except for a banner that is
-displayed down the side of the page. By using the
-[`{insert}`](#language.function.insert) function for the banner, you can
-keep this element dynamic within the cached content. See the
-documentation on [`{insert}`](#language.function.insert) for more
-details and examples.
-
-You can clear all the cache files with the
-[`clearAllCache()`](#api.clear.all.cache) function, or individual cache
-files [and groups](#caching.groups) with the
-[`clearCache()`](#api.clear.cache) function.
-
-
- <?php
- require('Smarty.class.php');
- $smarty = new Smarty;
-
- $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
-
- // clear only cache for index.tpl
- $smarty->clearCache('index.tpl');
-
- // clear out all cache files
- $smarty->clearAllCache();
-
- $smarty->display('index.tpl');
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/charset.md b/vendor/smarty/smarty/docs/programmers/charset.md
deleted file mode 100644
index 9dedf4dcd..000000000
--- a/vendor/smarty/smarty/docs/programmers/charset.md
+++ /dev/null
@@ -1,44 +0,0 @@
-Charset Encoding {#charset}
-================
-
-Charset Encoding {#charset.encoding}
-================
-
-There are a variety of encodings for textual data, ISO-8859-1 (Latin1)
-and UTF-8 being the most popular. Unless you change `Smarty::$_CHARSET`,
-Smarty recognizes `UTF-8` as the internal charset if
-[Multibyte String](https://www.php.net/mbstring) is available,
-`ISO-8859-1` if not.
-
-> **Note**
->
-> `ISO-8859-1` has been PHP\'s default internal charset since the
-> beginning. Unicode has been evolving since 1991. Since then it has
-> become the one charset to conquer them all, as it is capable of
-> encoding most of the known characters even across different character
-> systems (latin, cyrillic, japanese, ...). `UTF-8` is unicode\'s most
-> used encoding, as it allows referencing the thousands of character
-> with the smallest size overhead possible.
->
-> Since unicode and UTF-8 are very wide spread nowadays, their use is
-> strongly encouraged.
-
-> **Note**
->
-> Smarty\'s internals and core plugins are truly UTF-8 compatible since
-> Smarty 3.1. To achieve unicode compatibility, the [Multibyte
-> String](https://www.php.net/mbstring) PECL is required. Unless your PHP
-> environment offers this package, Smarty will not be able to offer
-> full-scale UTF-8 compatibility.
-
-
- // use japanese character encoding
- if (function_exists('mb_internal_charset')) {
- mb_internal_charset('EUC-JP');
- }
-
- require_once 'libs/Smarty.class.php';
- Smarty::$_CHARSET = 'EUC-JP';
- $smarty = new Smarty();
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/plugins.md b/vendor/smarty/smarty/docs/programmers/plugins.md
deleted file mode 100644
index 41a7ea0c4..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins.md
+++ /dev/null
@@ -1,44 +0,0 @@
-Extending Smarty With Plugins {#plugins}
-=============================
-
-## Table of contents
-
-- [How Plugins Work](./plugins/plugins-howto.md)
-- [Naming Conventions](./plugins/plugins-naming-conventions.md)
-- [Writing Plugins](./plugins/plugins-writing.md)
-- [Template Functions](./plugins/plugins-functions.md)
-- [Modifiers](./plugins/plugins-modifiers.md)
-- [Block Functions](./plugins/plugins-block-functions.md)
-- [Compiler Functions](./plugins/plugins-compiler-functions.md)
-- [Prefilters/Postfilters](./plugins/plugins-prefilters-postfilters.md)
-- [Output Filters](./plugins/plugins-outputfilters.md)
-- [Resources](./plugins/plugins-resources.md)
-- [Inserts](./plugins/plugins-inserts.md)
-
-Version 2.0 introduced the plugin architecture that is used for almost
-all the customizable functionality of Smarty. This includes:
-
-- functions
-
-- modifiers
-
-- block functions
-
-- compiler functions
-
-- prefilters
-
-- postfilters
-
-- outputfilters
-
-- resources
-
-- inserts
-
-With the exception of resources, backwards compatibility with the old
-way of registering handler functions via register\_\* API is preserved.
-If you did not use the API but instead modified the class variables
-`$custom_funcs`, `$custom_mods`, and other ones directly, then you will
-need to adjust your scripts to either use the API or convert your custom
-functionality into plugins.
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md
deleted file mode 100644
index 0e11c0782..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md
+++ /dev/null
@@ -1,95 +0,0 @@
-Block Functions {#plugins.block.functions}
-===============
-
-void
-
-smarty\_block\_
-
-name
-
-array
-
-\$params
-
-mixed
-
-\$content
-
-object
-
-\$template
-
-boolean
-
-&\$repeat
-
-Block functions are functions of the form: `{func} .. {/func}`. In other
-words, they enclose a template block and operate on the contents of this
-block. Block functions take precedence over [custom
-functions](#language.custom.functions) of the same name, that is, you
-cannot have both custom function `{func}` and block function
-`{func}..{/func}`.
-
-- By default your function implementation is called twice by Smarty:
- once for the opening tag, and once for the closing tag. (See
- `$repeat` below on how to change this.)
-
-- Starting with Smarty 3.1 the returned value of the opening tag call
- is displayed as well.
-
-- Only the opening tag of the block function may have
- [attributes](#language.syntax.attributes). All attributes passed to
- template functions from the template are contained in the `$params`
- variable as an associative array. The opening tag attributes are
- also accessible to your function when processing the closing tag.
-
-- The value of the `$content` variable depends on whether your
- function is called for the opening or closing tag. In case of the
- opening tag, it will be NULL, and in case of the closing tag it will
- be the contents of the template block. Note that the template block
- will have already been processed by Smarty, so all you will receive
- is the template output, not the template source.
-
-- The parameter `$repeat` is passed by reference to the function
- implementation and provides a possibility for it to control how many
- times the block is displayed. By default `$repeat` is TRUE at the
- first call of the block-function (the opening tag) and FALSE on all
- subsequent calls to the block function (the block\'s closing tag).
- Each time the function implementation returns with `$repeat` being
- TRUE, the contents between `{func}...{/func}` are evaluated and the
- function implementation is called again with the new block contents
- in the parameter `$content`.
-
-If you have nested block functions, it\'s possible to find out what the
-parent block function is by accessing `$smarty->_tag_stack` variable.
-Just do a [`var_dump()`](https://www.php.net/var_dump) on it and the
-structure should be apparent.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: block.translate.php
- * Type: block
- * Name: translate
- * Purpose: translate a block of text
- * -------------------------------------------------------------
- */
- function smarty_block_translate($params, $content, Smarty_Internal_Template $template, &$repeat)
- {
- // only output on the closing tag
- if(!$repeat){
- if (isset($content)) {
- $lang = $params['lang'];
- // do some intelligent translation thing here with $content
- return $translation;
- }
- }
- }
- ?>
-
-
-
-See also: [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md
deleted file mode 100644
index ef2454e8a..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md
+++ /dev/null
@@ -1,66 +0,0 @@
-Compiler Functions {#plugins.compiler.functions}
-==================
-
-Compiler functions are called only during compilation of the template.
-They are useful for injecting PHP code or time-sensitive static content
-into the template. If there is both a compiler function and a [custom
-function](#language.custom.functions) registered under the same name,
-the compiler function has precedence.
-
-mixed
-
-smarty\_compiler\_
-
-name
-
-array
-
-\$params
-
-object
-
-\$smarty
-
-The compiler function is passed two parameters: the params array which
-contains precompiled strings for the attribute values and the Smarty
-object. It\'s supposed to return the code to be injected into the
-compiled template including the surrounding PHP tags.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: compiler.tplheader.php
- * Type: compiler
- * Name: tplheader
- * Purpose: Output header containing the source file name and
- * the time it was compiled.
- * -------------------------------------------------------------
- */
- function smarty_compiler_tplheader($params, Smarty $smarty)
- {
- return "<?php\necho '" . $smarty->_current_file . " compiled at " . date('Y-m-d H:M'). "';\n?>";
- }
- ?>
-
-This function can be called from the template as:
-
-
- {* this function gets executed at compile time only *}
- {tplheader}
-
-
-
-The resulting PHP code in the compiled template would be something like
-this:
-
-
- <?php
- echo 'index.tpl compiled at 2002-02-20 20:02';
- ?>
-
-
-
-See also [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md
deleted file mode 100644
index 067b93826..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md
+++ /dev/null
@@ -1,94 +0,0 @@
-Template Functions {#plugins.functions}
-==================
-
-void
-
-smarty\_function\_
-
-name
-
-array
-
-\$params
-
-object
-
-\$template
-
-All [attributes](#language.syntax.attributes) passed to template
-functions from the template are contained in the `$params` as an
-associative array.
-
-The output (return value) of the function will be substituted in place
-of the function tag in the template, eg the
-[`{fetch}`](#language.function.fetch) function. Alternatively, the
-function can simply perform some other task without any output, eg the
-[`{assign}`](#language.function.assign) function.
-
-If the function needs to assign some variables to the template or use
-some other Smarty-provided functionality, it can use the supplied
-`$template` object to do so eg `$template->foo()`.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: function.eightball.php
- * Type: function
- * Name: eightball
- * Purpose: outputs a random magic answer
- * -------------------------------------------------------------
- */
- function smarty_function_eightball($params, Smarty_Internal_Template $template)
- {
- $answers = array('Yes',
- 'No',
- 'No way',
- 'Outlook not so good',
- 'Ask again soon',
- 'Maybe in your reality');
-
- $result = array_rand($answers);
- return $answers[$result];
- }
- ?>
-
-which can be used in the template as:
-
- Question: Will we ever have time travel?
- Answer: {eightball}.
-
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: function.assign.php
- * Type: function
- * Name: assign
- * Purpose: assign a value to a template variable
- * -------------------------------------------------------------
- */
- function smarty_function_assign($params, Smarty_Internal_Template $template)
- {
- if (empty($params['var'])) {
- trigger_error("assign: missing 'var' parameter");
- return;
- }
-
- if (!in_array('value', array_keys($params))) {
- trigger_error("assign: missing 'value' parameter");
- return;
- }
-
- $template->assign($params['var'], $params['value']);
-
- }
- ?>
-
-
-
-See also: [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md
deleted file mode 100644
index 5738c3fcb..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md
+++ /dev/null
@@ -1,18 +0,0 @@
-How Plugins Work {#plugins.howto}
-================
-
-Plugins are always loaded on demand. Only the specific modifiers,
-functions, resources, etc invoked in the templates scripts will be
-loaded. Moreover, each plugin is loaded only once, even if you have
-several different instances of Smarty running within the same request.
-
-Pre/postfilters and output filters are a bit of a special case. Since
-they are not mentioned in the templates, they must be registered or
-loaded explicitly via API functions before the template is processed.
-The order in which multiple filters of the same type are executed
-depends on the order in which they are registered or loaded.
-
-The [plugins directory](#variable.plugins.dir) can be a string
-containing a path or an array containing multiple paths. To install a
-plugin, simply place it in one of the directories and Smarty will use it
-automatically.
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md
deleted file mode 100644
index 370a97bd0..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md
+++ /dev/null
@@ -1,48 +0,0 @@
-Inserts {#plugins.inserts}
-=======
-
-Insert plugins are used to implement functions that are invoked by
-[`{insert}`](#language.function.insert) tags in the template.
-
-string
-
-smarty\_insert\_
-
-name
-
-array
-
-\$params
-
-object
-
-\$template
-
-The first parameter to the function is an associative array of
-attributes passed to the insert.
-
-The insert function is supposed to return the result which will be
-substituted in place of the `{insert}` tag in the template.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: insert.time.php
- * Type: time
- * Name: time
- * Purpose: Inserts current date/time according to format
- * -------------------------------------------------------------
- */
- function smarty_insert_time($params, Smarty_Internal_Template $template)
- {
- if (empty($params['format'])) {
- trigger_error("insert time: missing 'format' parameter");
- return;
- }
- return strftime($params['format']);
- }
- ?>
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md
deleted file mode 100644
index a4e99daa3..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md
+++ /dev/null
@@ -1,86 +0,0 @@
-Modifiers {#plugins.modifiers}
-=========
-
-[Modifiers](#language.modifiers) are little functions that are applied
-to a variable in the template before it is displayed or used in some
-other context. Modifiers can be chained together.
-
-mixed
-
-smarty\_modifier\_
-
-name
-
-mixed
-
-\$value
-
-\[mixed
-
-\$param1
-
-, \...\]
-
-The first parameter to the modifier plugin is the value on which the
-modifier is to operate. The rest of the parameters are optional,
-depending on what kind of operation is to be performed.
-
-The modifier has to [return](https://www.php.net/return) the result of its
-processing.
-
-This plugin basically aliases one of the built-in PHP functions. It does
-not have any additional parameters.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: modifier.capitalize.php
- * Type: modifier
- * Name: capitalize
- * Purpose: capitalize words in the string
- * -------------------------------------------------------------
- */
- function smarty_modifier_capitalize($string)
- {
- return ucwords($string);
- }
- ?>
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: modifier.truncate.php
- * Type: modifier
- * Name: truncate
- * Purpose: Truncate a string to a certain length if necessary,
- * optionally splitting in the middle of a word, and
- * appending the $etc string.
- * -------------------------------------------------------------
- */
- function smarty_modifier_truncate($string, $length = 80, $etc = '...',
- $break_words = false)
- {
- if ($length == 0)
- return '';
-
- if (strlen($string) > $length) {
- $length -= strlen($etc);
- $fragment = substr($string, 0, $length+1);
- if ($break_words)
- $fragment = substr($fragment, 0, -1);
- else
- $fragment = preg_replace('/\s+(\S+)?$/', '', $fragment);
- return $fragment.$etc;
- } else
- return $string;
- }
- ?>
-
-
-
-See also [`registerPlugin()`](#api.register.plugin),
-[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md
deleted file mode 100644
index 15bc26015..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md
+++ /dev/null
@@ -1,51 +0,0 @@
-Naming Conventions {#plugins.naming.conventions}
-==================
-
-Plugin files and functions must follow a very specific naming convention
-in order to be located by Smarty.
-
-**plugin files** must be named as follows:
-
-> `
-> type.name.php
-> `
-
-- Where `type` is one of these plugin types:
-
- - function
-
- - modifier
-
- - block
-
- - compiler
-
- - prefilter
-
- - postfilter
-
- - outputfilter
-
- - resource
-
- - insert
-
-- And `name` should be a valid identifier; letters, numbers, and
- underscores only, see [php
- variables](https://www.php.net/language.variables).
-
-- Some examples: `function.html_select_date.php`, `resource.db.php`,
- `modifier.spacify.php`.
-
-**plugin functions** inside the PHP files must be named as follows:
-
-> `smarty_type_name`
-
-- The meanings of `type` and `name` are the same as above.
-
-- An example modifier name `foo` would be
- `function smarty_modifier_foo()`.
-
-Smarty will output appropriate error messages if the plugin file it
-needs is not found, or if the file or the plugin function are named
-improperly.
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md
deleted file mode 100644
index 4e34ab7eb..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md
+++ /dev/null
@@ -1,48 +0,0 @@
-Output Filters {#plugins.outputfilters}
-==============
-
-Output filter plugins operate on a template\'s output, after the
-template is loaded and executed, but before the output is displayed.
-
-string
-
-smarty\_outputfilter\_
-
-name
-
-string
-
-\$template\_output
-
-object
-
-\$template
-
-The first parameter to the output filter function is the template output
-that needs to be processed, and the second parameter is the instance of
-Smarty invoking the plugin. The plugin is supposed to do the processing
-and return the results.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: outputfilter.protect_email.php
- * Type: outputfilter
- * Name: protect_email
- * Purpose: Converts @ sign in email addresses to %40 as
- * a simple protection against spambots
- * -------------------------------------------------------------
- */
- function smarty_outputfilter_protect_email($output, Smarty_Internal_Template $template)
- {
- return preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
- '$1%40$2', $output);
- }
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter),
-[`unregisterFilter()`](#api.unregister.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md
deleted file mode 100644
index 39467cbcb..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md
+++ /dev/null
@@ -1,89 +0,0 @@
-Prefilters/Postfilters {#plugins.prefilters.postfilters}
-======================
-
-Prefilter and postfilter plugins are very similar in concept; where they
-differ is in the execution \-- more precisely the time of their
-execution.
-
-string
-
-smarty\_prefilter\_
-
-name
-
-string
-
-\$source
-
-object
-
-\$template
-
-Prefilters are used to process the source of the template immediately
-before compilation. The first parameter to the prefilter function is the
-template source, possibly modified by some other prefilters. The plugin
-is supposed to return the modified source. Note that this source is not
-saved anywhere, it is only used for compilation.
-
-string
-
-smarty\_postfilter\_
-
-name
-
-string
-
-\$compiled
-
-object
-
-\$template
-
-Postfilters are used to process the compiled output of the template (the
-PHP code) immediately after the compilation is done but before the
-compiled template is saved to the filesystem. The first parameter to the
-postfilter function is the compiled template code, possibly modified by
-other postfilters. The plugin is supposed to return the modified version
-of this code.
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: prefilter.pre01.php
- * Type: prefilter
- * Name: pre01
- * Purpose: Convert html tags to be lowercase.
- * -------------------------------------------------------------
- */
- function smarty_prefilter_pre01($source, Smarty_Internal_Template $template)
- {
- return preg_replace('!<(\w+)[^>]+>!e', 'strtolower("$1")', $source);
- }
- ?>
-
-
-
-
- <?php
- /*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: postfilter.post01.php
- * Type: postfilter
- * Name: post01
- * Purpose: Output code that lists all current template vars.
- * -------------------------------------------------------------
- */
- function smarty_postfilter_post01($compiled, Smarty_Internal_Template $template)
- {
- $compiled = "<pre>\n<?php print_r(\$template->getTemplateVars()); ?>\n</pre>" . $compiled;
- return $compiled;
- }
- ?>
-
-
-
-See also [`registerFilter()`](#api.register.filter) and
-[`unregisterFilter()`](#api.unregister.filter).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md
deleted file mode 100644
index 1b1fdf0ab..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md
+++ /dev/null
@@ -1,128 +0,0 @@
-Resources {#plugins.resources}
-=========
-
-Resource plugins are meant as a generic way of providing template
-sources or PHP script components to Smarty. Some examples of resources:
-databases, LDAP, shared memory, sockets, and so on.
-
-Custom Resources may be put in a file `resource.foobarxyz.php` within
-your [`$plugins_dir`](#variable.plugins.dir), or registered on runtime
-with [`registerResource()`](#api.register.resource). In either case you
-will be able to access that resource by prepending its name to the
-template you\'re addressing: `foobarxyz:yourtemplate.tpl`.
-
-If a Resource\'s templates should not be run through the Smarty
-compiler, the Custom Resource may extend `Smarty_Resource_Uncompiled`.
-The Resource Handler must then implement the function
-`renderUncompiled(Smarty_Internal_Template $_template)`. `$_template` is
-a reference to the current template and contains all assigned variables
-which the implementor can access via
-`$_template->smarty->getTemplateVars()`. These Resources simply echo
-their rendered content to the output stream. The rendered output will be
-output-cached if the Smarty instance was configured accordingly. See
-`libs/sysplugins/smarty_internal_resource_php.php` for an example.
-
-If the Resource\'s compiled templates should not be cached on disk, the
-Custom Resource may extend `Smarty_Resource_Recompiled`. These Resources
-are compiled every time they are accessed. This may be an expensive
-overhead. See `libs/sysplugins/smarty_internal_resource_eval.php` for an
-example.
-
-
- <?php
-
- /**
- * MySQL Resource
- *
- * Resource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's templates and configs.
- *
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- *
- * Demo data:
- * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
- class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
- // PDO instance
- protected $db;
- // prepared fetch() statement
- protected $fetch;
- // prepared fetchTimestamp() statement
- protected $mtime;
-
- public function __construct() {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row['source'];
- $mtime = strtotime($row['modified']);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch a template's modification time from database
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
- * @param string $name template name
- * @return integer timestamp (epoch) the template was modified
- */
- protected function fetchTimestamp($name) {
- $this->mtime->execute(array('name' => $name));
- $mtime = $this->mtime->fetchColumn();
- $this->mtime->closeCursor();
- return strtotime($mtime);
- }
- }
-
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
-
- // using resource from php script
- $smarty->display("mysql:index.tpl");
- ?>
-
-
-
-And from within Smarty template:
-
-
- {include file='mysql:extras/navigation.tpl'}
-
-
-
-See also [`registerResource()`](#api.register.resource),
-[`unregisterResource()`](#api.unregister.resource).
diff --git a/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md b/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md
deleted file mode 100644
index 972911d97..000000000
--- a/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md
+++ /dev/null
@@ -1,36 +0,0 @@
-Writing Plugins {#plugins.writing}
-===============
-
-Plugins can be either loaded by Smarty automatically from the filesystem
-or they can be registered at runtime via one of the register\_\* API
-functions. They can also be unregistered by using unregister\_\* API
-functions.
-
-For the plugins that are registered at runtime, the name of the plugin
-function(s) does not have to follow the naming convention.
-
-If a plugin depends on some functionality provided by another plugin (as
-is the case with some plugins bundled with Smarty), then the proper way
-to load the needed plugin is this:
-
-
- <?php
- function smarty_function_yourPlugin(array $params, Smarty_Internal_Template $template)
- {
- // load plugin depended upon
- $template->smarty->loadPlugin('smarty_shared_make_timestamp');
- // plugin code
- }
- ?>
-
-
-
-As a general rule, the currently evaluated template\'s
-Smarty\_Internal\_Template object is always passed to the plugins as the
-last parameter with two exceptions:
-
-- modifiers do not get passed the Smarty\_Internal\_Template object at
- all
-
-- blocks get passed `$repeat` after the Smarty\_Internal\_Template
- object to keep backwards compatibility to older versions of Smarty.
diff --git a/vendor/smarty/smarty/docs/programmers/resources.md b/vendor/smarty/smarty/docs/programmers/resources.md
deleted file mode 100644
index 239690061..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources.md
+++ /dev/null
@@ -1,19 +0,0 @@
-Resources
-=========
-
-The templates may come from a variety of sources. When you
-[`display()`](./api-functions/api-display.md) or [`fetch()`](./api-functions/api-fetch.md) a template, or
-when you include a template from within another template, you supply a
-resource type, followed by the appropriate path and template name. If a
-resource is not explicitly given, the value of
-[`$default_resource_type`](./api-variables/variable-default-resource-type.md) (default:
-\"file\") is assumed.
-
-## Table of contents
-
-- [File Template Resources](./resources/resources-file.md)
-- [String Template Resources](./resources/resources-string.md)
-- [Stream Template Resources](./resources/resources-streams.md)
-- [Extends Template Resources](./resources/resources-extends.md)
-- [Custom Template Resources](./resources/resources-custom.md)
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md b/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md
deleted file mode 100644
index d679afcb1..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md
+++ /dev/null
@@ -1,111 +0,0 @@
-Custom Template Resources {#resources.custom}
-=========================
-
-You can retrieve templates using whatever possible source you can access
-with PHP: databases, sockets, files, etc. You do this by writing
-resource plugin functions and registering them with Smarty.
-
-See [resource plugins](#plugins.resources) section for more information
-on the functions you are supposed to provide.
-
-> **Note**
->
-> Note that you cannot override the built-in `file:` resource, but you
-> can provide a resource that fetches templates from the file system in
-> some other way by registering under another resource name.
-
-
- <?php
-
- /**
- * MySQL Resource
- *
- * Resource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's templates and configs.
- *
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- *
- * Demo data:
- * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
- class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
- // PDO instance
- protected $db;
- // prepared fetch() statement
- protected $fetch;
- // prepared fetchTimestamp() statement
- protected $mtime;
-
- public function __construct() {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row['source'];
- $mtime = strtotime($row['modified']);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch a template's modification time from database
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
- * @param string $name template name
- * @return integer timestamp (epoch) the template was modified
- */
- protected function fetchTimestamp($name) {
- $this->mtime->execute(array('name' => $name));
- $mtime = $this->mtime->fetchColumn();
- $this->mtime->closeCursor();
- return strtotime($mtime);
- }
- }
-
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
-
- // using resource from php script
- $smarty->display("mysql:index.tpl");
- ?>
-
-
-
-And from within Smarty template:
-
-
- {include file='mysql:extras/navigation.tpl'}
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md b/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md
deleted file mode 100644
index d7213d894..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md
+++ /dev/null
@@ -1,36 +0,0 @@
-Extends Template Resources {#resources.extends}
-==========================
-
-The `extends:` resource is used to define child/parent relationships for
-template inheritance from the PHP script. For details see section of
-[Template Inheritance](#advanced.features.template.inheritance).
-
-As of Smarty 3.1 the `extends:` resource may use any available [template
-resource](#resources), including `string:` and `eval:`. When [templates
-from strings](#resources.string) are used, make sure they are properly
-(url or base64) encoded. Is an `eval:` resource found within an
-inheritance chain, its \"don\'t save a compile file\" property is
-superseded by the `extends:` resource. The templates within an
-inheritance chain are not compiled separately, though. Only a single
-compiled template will be generated.
-
-> **Note**
->
-> Use this when inheritance is required programmatically. When inheriting
-> within PHP, it is not obvious from the child template what inheritance
-> took place. If you have a choice, it is normally more flexible and
-> intuitive to handle inheritance chains from within the templates.
-
-
- <?php
- $smarty->display('extends:parent.tpl|child.tpl|grandchild.tpl');
-
- // inheritance from multiple template sources
- $smarty->display('extends:db:parent.tpl|file:child.tpl|grandchild.tpl|eval:{block name="fooBazVar_"}hello world{/block}');
- ?>
-
-
-
-See also [Template Inheritance](#advanced.features.template.inheritance)
-[`{block}`](#language.function.block) and
-[`{extends}`](#language.function.extends).
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-file.md b/vendor/smarty/smarty/docs/programmers/resources/resources-file.md
deleted file mode 100644
index 9a89af183..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-file.md
+++ /dev/null
@@ -1,160 +0,0 @@
-File Template Resources {#resources.file}
-=======================
-
-Smarty ships with a built-in template resource for the filesystem. The
-`file:` is the default resource. The resource key `file:` must only be
-specified, if the
-[`$default_resource_type`](#variable.default.resource.type) has been
-changed.
-
-If the file resource cannot find the requested template, the
-[`$default_template_handler_func`](#variable.default.template.handler.func)
-is invoked.
-
-> **Note**
->
-> As of Smarty 3.1 the file resource no longer walks through the
-> [include\_path](https://www.php.net/ini.core.php#ini.include-path) unless
-> [`$use_include_path` is activated](#variable.use.include.path)
-
-Templates from \$template\_dir {#templates.from.template.dir}
-------------------------------
-
-The file resource pulls templates source files from the directories
-specified in [`$template_dir`](#variable.template.dir). The list of
-directories is traversed in the order they appear in the array. The
-first template found is the one to process.
-
-
- <?php
- $smarty->display('index.tpl');
- $smarty->display('file:index.tpl'); // same as above
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file='index.tpl'}
- {include file='file:index.tpl'} {* same as above *}
-
-
-
-Templates from a specific \$template\_dir {#templates.from.specified.template.dir}
------------------------------------------
-
-Smarty 3.1 introduced the bracket-syntax for specifying an element from
-[`$template_dir`](#variable.template.dir). This allows websites
-employing multiple sets of templates better control over which template
-to access.
-
-The bracket-syntax can be used from anywhere you can specify the `file:`
-resource type.
-
-
- <?php
-
- // setup template directories
- $smarty->setTemplateDir(array(
- './templates', // element: 0, index: 0
- './templates_2', // element: 1, index: 1
- '10' => 'templates_10', // element: 2, index: '10'
- 'foo' => 'templates_foo', // element: 3, index: 'foo'
- ));
-
- /*
- assume the template structure
- ./templates/foo.tpl
- ./templates_2/foo.tpl
- ./templates_2/bar.tpl
- ./templates_10/foo.tpl
- ./templates_10/bar.tpl
- ./templates_foo/foo.tpl
- */
-
- // regular access
- $smarty->display('file:foo.tpl');
- // will load ./templates/foo.tpl
-
- // using numeric index
- $smarty->display('file:[1]foo.tpl');
- // will load ./templates_2/foo.tpl
-
- // using numeric string index
- $smarty->display('file:[10]foo.tpl');
- // will load ./templates_10/foo.tpl
-
- // using string index
- $smarty->display('file:[foo]foo.tpl');
- // will load ./templates_foo/foo.tpl
-
- // using "unknown" numeric index (using element number)
- $smarty->display('file:[2]foo.tpl');
- // will load ./templates_10/foo.tpl
-
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file="file:foo.tpl"}
- {* will load ./templates/foo.tpl *}
-
- {include file="file:[1]foo.tpl"}
- {* will load ./templates_2/foo.tpl *}
-
- {include file="file:[foo]foo.tpl"}
- {* will load ./templates_foo/foo.tpl *}
-
-
-
-Templates from any directory {#templates.from.any.dir}
-----------------------------
-
-Templates outside of the [`$template_dir`](#variable.template.dir)
-require the `file:` template resource type, followed by the absolute
-path to the template (with leading slash.)
-
-> **Note**
->
-> With [`Security`](#advanced.features.security) enabled, access to
-> templates outside of the [`$template_dir`](#variable.template.dir) is
-> not allowed unless you list those directories in `$secure_dir`.
-
-
- <?php
- $smarty->display('file:/export/templates/index.tpl');
- $smarty->display('file:/path/to/my/templates/menu.tpl');
- ?>
-
-
-
-And from within a Smarty template:
-
-
- {include file='file:/usr/local/share/templates/navigation.tpl'}
-
-
-
-Windows Filepaths {#templates.windows.filepath}
------------------
-
-If you are using a Windows machine, filepaths usually include a drive
-letter (C:) at the beginning of the pathname. Be sure to use `file:` in
-the path to avoid namespace conflicts and get the desired results.
-
-
- <?php
- $smarty->display('file:C:/export/templates/index.tpl');
- $smarty->display('file:F:/path/to/my/templates/menu.tpl');
- ?>
-
-
-
-And from within Smarty template:
-
-
- {include file='file:D:/usr/local/share/templates/navigation.tpl'}
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md b/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md
deleted file mode 100644
index e0596f591..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Stream Template Resources {#resources.streams}
-=========================
-
-Streams allow you to use PHP streams as a template resource. The syntax
-is much the same a traditional template resource names.
-
-Smarty will first look for a registered template resource. If nothing is
-found, it will check if a PHP stream is available. If a stream is
-available, Smarty will use it to fetch the template.
-
-> **Note**
->
-> You can further define allowed streams with security enabled.
-
-Using a PHP stream for a template resource from the display() function.
-
-
- $smarty->display('foo:bar.tpl');
-
-
-
-Using a PHP stream for a template resource from within a template.
-
-
- {include file="foo:bar.tpl"}
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/resources-string.md b/vendor/smarty/smarty/docs/programmers/resources/resources-string.md
deleted file mode 100644
index d3f6d4155..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/resources-string.md
+++ /dev/null
@@ -1,73 +0,0 @@
-String Template Resources {#resources.string}
-=========================
-
-Smarty can render templates from a string by using the `string:` or
-`eval:` resource.
-
-- The `string:` resource behaves much the same as a template file. The
- template source is compiled from a string and stores the compiled
- template code for later reuse. Each unique template string will
- create a new compiled template file. If your template strings are
- accessed frequently, this is a good choice. If you have frequently
- changing template strings (or strings with low reuse value), the
- `eval:` resource may be a better choice, as it doesn\'t save
- compiled templates to disk.
-
-- The `eval:` resource evaluates the template source every time a page
- is rendered. This is a good choice for strings with low reuse value.
- If the same string is accessed frequently, the `string:` resource
- may be a better choice.
-
-> **Note**
->
-> With a `string:` resource type, each unique string generates a
-> compiled file. Smarty cannot detect a string that has changed, and
-> therefore will generate a new compiled file for each unique string. It
-> is important to choose the correct resource so that you do not fill
-> your disk space with wasted compiled strings.
-
-
- <?php
- $smarty->assign('foo','value');
- $template_string = 'display {$foo} here';
- $smarty->display('string:'.$template_string); // compiles for later reuse
- $smarty->display('eval:'.$template_string); // compiles every time
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file="string:$template_string"} {* compiles for later reuse *}
- {include file="eval:$template_string"} {* compiles every time *}
-
-
-
-
-Both `string:` and `eval:` resources may be encoded with
-[`urlencode()`](https://www.php.net/urlencode) or
-[`base64_encode()`](https://www.php.net/urlencode). This is not necessary
-for the usual use of `string:` and `eval:`, but is required when using
-either of them in conjunction with
-[`Extends Template Resource`](#resources.extends)
-
-
- <?php
- $smarty->assign('foo','value');
- $template_string_urlencode = urlencode('display {$foo} here');
- $template_string_base64 = base64_encode('display {$foo} here');
- $smarty->display('eval:urlencode:'.$template_string_urlencode); // will decode string using urldecode()
- $smarty->display('eval:base64:'.$template_string_base64); // will decode string using base64_decode()
- ?>
-
-
-
-From within a Smarty template
-
-
- {include file="string:urlencode:$template_string_urlencode"} {* will decode string using urldecode() *}
- {include file="eval:base64:$template_string_base64"} {* will decode string using base64_decode() *}
-
-
-
diff --git a/vendor/smarty/smarty/docs/programmers/resources/template-resources.md b/vendor/smarty/smarty/docs/programmers/resources/template-resources.md
deleted file mode 100644
index 7bb5d752e..000000000
--- a/vendor/smarty/smarty/docs/programmers/resources/template-resources.md
+++ /dev/null
@@ -1,130 +0,0 @@
-Resources {#resasdources}
-=========
-
-The templates may come from a variety of sources. When you
-[`display()`](#api.display) or [`fetch()`](#api.fetch) a template, or
-when you include a template from within another template, you supply a
-resource type, followed by the appropriate path and template name. If a
-resource is not explicitly given, the value of
-[`$default_resource_type`](#variable.default.resource.type) is assumed.
-
-Templates from other sources {#templates.from.elsewhere}
-----------------------------
-
-You can retrieve templates using whatever possible source you can access
-with PHP: databases, sockets, files, etc. You do this by writing
-resource plugin functions and registering them with Smarty.
-
-See [resource plugins](#plugins.resources) section for more information
-on the functions you are supposed to provide.
-
-> **Note**
->
-> Note that you cannot override the built-in `file:` resource, but you
-> can provide a resource that fetches templates from the file system in
-> some other way by registering under another resource name.
-
-
- <?php
-
- /**
- * MySQL Resource
- *
- * Resource Implementation based on the Custom API to use
- * MySQL as the storage resource for Smarty's templates and configs.
- *
- * Table definition:
- * <pre>CREATE TABLE IF NOT EXISTS `templates` (
- * `name` varchar(100) NOT NULL,
- * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- * `source` text,
- * PRIMARY KEY (`name`)
- * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- *
- * Demo data:
- * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
- *
- * @package Resource-examples
- * @author Rodney Rehm
- */
- class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
- // PDO instance
- protected $db;
- // prepared fetch() statement
- protected $fetch;
- // prepared fetchTimestamp() statement
- protected $mtime;
-
- public function __construct() {
- try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
- throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
- }
- $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
- $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
- }
-
- /**
- * Fetch a template and its modification time from database
- *
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
- * @return void
- */
- protected function fetch($name, &$source, &$mtime)
- {
- $this->fetch->execute(array('name' => $name));
- $row = $this->fetch->fetch();
- $this->fetch->closeCursor();
- if ($row) {
- $source = $row['source'];
- $mtime = strtotime($row['modified']);
- } else {
- $source = null;
- $mtime = null;
- }
- }
-
- /**
- * Fetch a template's modification time from database
- *
- * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
- * @param string $name template name
- * @return integer timestamp (epoch) the template was modified
- */
- protected function fetchTimestamp($name) {
- $this->mtime->execute(array('name' => $name));
- $mtime = $this->mtime->fetchColumn();
- $this->mtime->closeCursor();
- return strtotime($mtime);
- }
- }
-
-
- require_once 'libs/Smarty.class.php';
- $smarty = new Smarty();
- $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
-
- // using resource from php script
- $smarty->display("mysql:index.tpl");
- ?>
-
-
-
-And from within Smarty template:
-
-
- {include file='mysql:extras/navigation.tpl'}
-
-
-
-Default template handler function {#default.template.handler.function}
----------------------------------
-
-You can specify a function that is used to retrieve template contents in
-the event the template cannot be retrieved from its resource. One use of
-this is to create templates that do not exist on-the-fly.
-
-See also [`Streams`](#advanced.features.streams)
diff --git a/vendor/smarty/smarty/docs/programmers/smarty-constants.md b/vendor/smarty/smarty/docs/programmers/smarty-constants.md
deleted file mode 100644
index de04e1b59..000000000
--- a/vendor/smarty/smarty/docs/programmers/smarty-constants.md
+++ /dev/null
@@ -1,26 +0,0 @@
-Constants {#smarty.constants}
-=========
-
-SMARTY\_DIR {#constant.smarty.dir}
-===========
-
-This is the **full system path** to the location of the Smarty class
-files. If this is not defined in your script, then Smarty will attempt
-to determine the appropriate value automatically. If defined, the path
-**must end with a trailing slash/**.
-
-
- <?php
- // set path to Smarty directory *nix style
- define('SMARTY_DIR', '/usr/local/lib/php/Smarty-v.e.r/libs/');
-
- // path to Smarty windows style
- define('SMARTY_DIR', 'c:/webroot/libs/Smarty-v.e.r/libs/');
-
- // include the smarty class, note 'S' is upper case
- require_once(SMARTY_DIR . 'Smarty.class.php');
- ?>
-
-
-
-See also [`$smarty.const`](../designers/language-variables/language-variables-smarty.md).
diff --git a/vendor/smarty/smarty/docs/upgrading.md b/vendor/smarty/smarty/docs/upgrading.md
index 667a1422c..ef9cc4c99 100644
--- a/vendor/smarty/smarty/docs/upgrading.md
+++ b/vendor/smarty/smarty/docs/upgrading.md
@@ -1,12 +1,131 @@
# Upgrading from an older version
+## Upgrading from v4 to v5
+
+Smarty 5 adds support for PHP8.2 and drops support for PHP7.1. Smarty also adds support for new features
+such as the ternary operator (`{$test ? $a : $b}` and `{$var ?: $value_if_falsy}`), the null coalescing operator (`{$var ?? $value_if_null}`)
+and positional parameters for custom tags.
+Smarty 5 also has a brand-new extension architecture that allows you to write neat extension packs.
+
+### Namespaces
+All Smarty code has been moved into the `\Smarty` namespace. This reduces
+the chance of conflicts with other (your) code.
+
+For simple use-cases, you only need to add `use Smarty\Smarty;` to your script and everything will work.
+
+```php
+<?php
+use Smarty\Smarty;
+$smarty = new Smarty();
+
+$smarty->display('homepage.tpl');
+```
+For more information, see [getting started](getting-started.md).
+
+If you extend Smarty or use Smarty plug-ins, please review your code to see if they assume specific class or method names.
+E.g.: `Smarty_Internal_Template` is now `\Smarty\Template\`, `SmartyException` is now `\Smarty\Exception`.
+
+### Variable scope bubbling
+Template variable scope bubbling has been simplified and made more consistent. The global scope now equals the Smarty
+scope in order to avoid global state side effects. Please read the [documentation on language variable scope](designers/language-variables/language-variable-scopes.md)
+for more details.
+
+Also, `{config_load}` no longer has a `scope` parameter, which means you can no longer load config
+from inside your template into the global scope (again, to avoid global state side effects). If you
+need to set global config, use the [configLoad API method](api/variables/config-files.md) from your PHP code.
+
+### Using native PHP-functions or userland functions in your templates
+You can no longer use native PHP-functions or userland functions in your templates without registering them.
+If you need a function in your templates, register it first.
+
+The easiest way to do so is as follows:
+```php
+// native PHP functions used as modifiers need to be registered
+$smarty->registerPlugin('modifier', 'substr', 'substr');
+
+// userland PHP functions used as modifiers need to be registered
+$smarty->registerPlugin('modifier', 'my_special_func', 'my_special_func');
+```
+
+But you may want to consider writing a proper [extension](api/extending/extensions.md).
+
+### Removed undocumented tags
+
+Smarty 4 still supported some tags that have been carried over from previous version, but have never been documented.
+
+- `{block_parent}` should be replaced with `{$smarty.block.parent}`
+- `{parent}` should be replaced with `{$smarty.block.parent}`
+- `{block_child}` should be replaced with `{$smarty.block.child}`
+- `{child}` should be replaced with `{$smarty.block.child}`
+
+- `{make_nocache}` is no longer supported
+- `{insert}` is no longer supported
+
+### Removed Smarty API properties
+
+In Smarty 4, you could make many configuration changes by directly accessing public properties on the Smarty object in PHP.
+In many cases, these properties have been made private, and you should now use the appropriate setter method:
+
+- `$smarty->left_delimiter` should be replaced with `$smarty->getLeftDelimiter()`/`$smarty->setLeftDelimiter()`
+- `$smarty->right_delimiter` should be replaced with `$smarty->getRightDelimiter()`/`$smarty->setRightDelimiter()`
+- `$smarty->autoload_filters` should be replaced with `$smarty->registerFilter()`
+- `$smarty->template_dir` should be replaced with `$smarty->setTemplateDir()`
+- `$smarty->cache_dir` should be replaced with `$smarty->setCacheDir()`
+- `$smarty->compile_dir` should be replaced with `$smarty->setCompileDir()`
+
+Other public properties have been removed altogether, and you should no longer access them:
+
+- `$smarty->_current_file`
+- `$smarty->allow_ambiguous_resources` (ambiguous resources handlers should still work)
+- `$smarty->registered_filters`
+- `$smarty->direct_access_security`
+- `$smarty->trusted_dir`
+- `$smarty->allow_php_templates`
+- `$smarty->php_functions`
+- `$smarty->php_modifiers`
+
+### Backwards incompatible changes to custom plugins
+
+We have dropped support for `$smarty->plugins_dir` and `$smarty->use_include_path`.
+Use `$smarty->addPluginsDir()` or consider writing a proper [extension](api/extending/extensions.md).
+
+The 'insert' plugin type is no longer supported.
+
+The `$cache_attrs` parameter for registered plugins is no longer supported.
+
+### Removed Smarty API methods
+
+Search your code for the following changes:
+
+- `$smarty->getTags()` is no longer supported
+- `$smarty->appendByRef()` should be replaced with `$smarty->append()`
+- `$smarty->assignByRef()` should be replaced with `$smarty->assign()`
+- `$smarty->loadPlugin()` should be replaced with `$smarty->registerPlugin()`
+
+### Removed PHP constants
+
+The following constants have been removed to prevent global side effects.
+
+- `SMARTY_DIR`
+- `SMARTY_SYSPLUGINS_DIR`
+- `SMARTY_PLUGINS_DIR`
+- `SMARTY_MBSTRING`
+- `SMARTY_HELPER_FUNCTIONS_LOADED`
+
+### Other changes
+
+- Smarty now always runs in multibyte mode. Make sure you use the [PHP multibyte extension](https://www.php.net/manual/en/book.mbstring.php) in production for optimal performance.
+- Generated `<script>` tags lo longer have deprecated `type="text/javascript"` or `language="Javascript"` attributes
+- Smarty will throw a compiler exception instead of silently ignoring a modifier on a function call, like this: `{include|dot:"x-template-id" file="included.dot.tpl"}`
+- The ::getFile() method of a CompilerException will now return the full path of the template being compiled, if possible. This used to be 'file:relative_dir/filename.tpl'.
+
## Upgrading from v3 to v4
Smarty 4 is mostly identical to Smarty 3. Most notably, it adds support for PHP8 and drops support for PHP7.0 and below.
Additionally, some deprecated features that have long been discouraged have been dropped from the language.
### Muting PHP8 warnings
-If you simultaneously upgrade Smarty to v4 van PHP to v8, you may notice your error logs filling up with warnings about undefined or null template vars
+If you simultaneously upgrade Smarty to v4 van PHP to v8, you may notice your error logs filling up with warnings about undefined or null template vars
due to a change in how PHP handles these. This may be helpful to spot errors, but if you find this annoying, you can use
`$smarty->muteUndefinedOrNullWarnings()` to make Smarty convert these warnings into notices.
@@ -21,16 +140,16 @@ We have dropped deprecated API calls that where only accessible through the Smar
### No more embedded PHP
We have completely dropped support for `{php}` and `{include_php}` tags and embedded PHP in templates.
Check your templates for this, and rewrite any embedded PHP blocks, by moving logic to your PHP files or by
-creating a [plugin function](./programmers/plugins/plugins-functions.md).
+creating a [custom tag](./api/extending/tags.md).
### Other changes
-Search your code for the following changes:
+Search your code for the following changes:
- `SMARTY_RESOURCE_CHAR_SET` and `SMARTY_RESOURCE_DATE_FORMAT` constants have been removed
- `Smarty::muteExpectedErrors` and `Smarty::unmuteExpectedErrors` API methods have been removed
-- `Smarty::getVariable` method has been removed. Use [Smarty::getTemplateVars](programmers/api-functions/api-get-template-vars.md) instead.
-- [Smarty::registerResource](programmers/api-functions/api-register-resource.md) no longer accepts an array of callback functions
+- `Smarty::getVariable` method has been removed. Use [Smarty::getTemplateVars](designers/language-builtin-functions/language-function-assign.md) instead.
+- [Smarty::registerResource](api/resources.md) no longer accepts an array of callback functions
diff --git a/vendor/smarty/smarty/lexer/smarty_internal_configfilelexer.plex b/vendor/smarty/smarty/lexer/smarty_internal_configfilelexer.plex
deleted file mode 100644
index 7a86fadc4..000000000
--- a/vendor/smarty/smarty/lexer/smarty_internal_configfilelexer.plex
+++ /dev/null
@@ -1,318 +0,0 @@
-<?php
-/**
-* Smarty Internal Plugin Configfilelexer
-*
-* This is the lexer to break the config file source into tokens
-* @package Smarty
-* @subpackage Config
-* @author Uwe Tews
-*/
-/**
-* Smarty_Internal_Configfilelexer
-*
-* This is the config file lexer.
-* It is generated from the smarty_internal_configfilelexer.plex file
-*
-* @package Smarty
-* @subpackage Compiler
-* @author Uwe Tews
-*/
-class Smarty_Internal_Configfilelexer
-{
- /**
- * Source
- *
- * @var string
- */
- public $data;
- /**
- * Source length
- *
- * @var int
- */
- public $dataLength = null;
- /**
- * byte counter
- *
- * @var int
- */
- public $counter;
- /**
- * token number
- *
- * @var int
- */
- public $token;
- /**
- * token value
- *
- * @var string
- */
- public $value;
- /**
- * current line
- *
- * @var int
- */
- public $line;
- /**
- * state number
- *
- * @var int
- */
- public $state = 1;
- /**
- * Smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
- /**
- * compiler object
- *
- * @var Smarty_Internal_Config_File_Compiler
- */
- private $compiler = null;
- /**
- * copy of config_booleanize
- *
- * @var bool
- */
- private $configBooleanize = false;
- /**
- * trace file
- *
- * @var resource
- */
- public $yyTraceFILE;
- /**
- * trace prompt
- *
- * @var string
- */
- public $yyTracePrompt;
- /**
- * state names
- *
- * @var array
- */
- public $state_name = array(1 => 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE');
-
- /**
- * storage for assembled token patterns
- *
- * @var string
- */
- private $yy_global_pattern1 = null;
- private $yy_global_pattern2 = null;
- private $yy_global_pattern3 = null;
- private $yy_global_pattern4 = null;
- private $yy_global_pattern5 = null;
- private $yy_global_pattern6 = null;
-
- /**
- * token names
- *
- * @var array
- */
- public $smarty_token_names = array( // Text for parser error messages
- );
-
- /**
- * constructor
- *
- * @param string $data template source
- * @param Smarty_Internal_Config_File_Compiler $compiler
- */
- public function __construct($data, Smarty_Internal_Config_File_Compiler $compiler)
- {
- $this->data = $data . "\n"; //now all lines are \n-terminated
- $this->dataLength = strlen($data);
- $this->counter = 0;
- if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
- $this->counter += strlen($match[0]);
- }
- $this->line = 1;
- $this->compiler = $compiler;
- $this->smarty = $compiler->smarty;
- $this->configBooleanize = $this->smarty->config_booleanize;
- }
-
- public function replace ($input) {
- return $input;
- }
-
- public function PrintTrace()
- {
- $this->yyTraceFILE = fopen('php://output', 'w');
- $this->yyTracePrompt = '<br>';
- }
-
-
-/*!lex2php
-%input $this->data
-%counter $this->counter
-%token $this->token
-%value $this->value
-%line $this->line
-commentstart = /#|;/
-openB = /\[/
-closeB = /\]/
-section = /.*?(?=[\.=\[\]\r\n])/
-equal = /=/
-whitespace = /[ \t\r]+/
-dot = /\./
-id = /[0-9]*[a-zA-Z_]\w*/
-newline = /\n/
-single_quoted_string = /'[^'\\]*(?:\\.[^'\\]*)*'(?=[ \t\r]*[\n#;])/
-double_quoted_string = /"[^"\\]*(?:\\.[^"\\]*)*"(?=[ \t\r]*[\n#;])/
-tripple_quotes = /"""/
-tripple_quotes_end = /"""(?=[ \t\r]*[\n#;])/
-text = /[\S\s]/
-float = /\d+\.\d+(?=[ \t\r]*[\n#;])/
-int = /\d+(?=[ \t\r]*[\n#;])/
-maybe_bool = /[a-zA-Z]+(?=[ \t\r]*[\n#;])/
-naked_string = /[^\n]+?(?=[ \t\r]*\n)/
-*/
-
-/*!lex2php
-%statename START
-
-commentstart {
- $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
- $this->yypushstate(self::COMMENT);
-}
-openB {
- $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
- $this->yypushstate(self::SECTION);
-}
-closeB {
- $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
-}
-equal {
- $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
- $this->yypushstate(self::VALUE);
-}
-whitespace {
- return false;
-}
-newline {
- $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
-}
-id {
- $this->token = Smarty_Internal_Configfileparser::TPC_ID;
-}
-text {
- $this->token = Smarty_Internal_Configfileparser::TPC_OTHER;
-}
-
-*/
-
-/*!lex2php
-%statename VALUE
-
-whitespace {
- return false;
-}
-float {
- $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT;
- $this->yypopstate();
-}
-int {
- $this->token = Smarty_Internal_Configfileparser::TPC_INT;
- $this->yypopstate();
-}
-tripple_quotes {
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES;
- $this->yypushstate(self::TRIPPLE);
-}
-single_quoted_string {
- $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING;
- $this->yypopstate();
-}
-double_quoted_string {
- $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING;
- $this->yypopstate();
-}
-maybe_bool {
- if (!$this->configBooleanize || !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no')) ) {
- $this->yypopstate();
- $this->yypushstate(self::NAKED_STRING_VALUE);
- return true; //reprocess in new state
- } else {
- $this->token = Smarty_Internal_Configfileparser::TPC_BOOL;
- $this->yypopstate();
- }
-}
-naked_string {
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->yypopstate();
-}
-newline {
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->value = '';
- $this->yypopstate();
-}
-
-*/
-
-/*!lex2php
-%statename NAKED_STRING_VALUE
-
-naked_string {
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->yypopstate();
-}
-
-*/
-
-/*!lex2php
-%statename COMMENT
-
-whitespace {
- return false;
-}
-naked_string {
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
-}
-newline {
- $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
- $this->yypopstate();
-}
-
-*/
-
-/*!lex2php
-%statename SECTION
-
-dot {
- $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
-}
-section {
- $this->token = Smarty_Internal_Configfileparser::TPC_SECTION;
- $this->yypopstate();
-}
-
-*/
-/*!lex2php
-%statename TRIPPLE
-
-tripple_quotes_end {
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END;
- $this->yypopstate();
- $this->yypushstate(self::START);
-}
-text {
- $to = strlen($this->data);
- preg_match("/\"\"\"[ \t\r]*[\n#;]/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1];
- } else {
- $this->compiler->trigger_config_file_error ('missing or misspelled literal closing tag');
- }
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT;
-}
-*/
-
-}
diff --git a/vendor/smarty/smarty/lexer/smarty_internal_configfileparser.y b/vendor/smarty/smarty/lexer/smarty_internal_configfileparser.y
deleted file mode 100644
index c981b58e9..000000000
--- a/vendor/smarty/smarty/lexer/smarty_internal_configfileparser.y
+++ /dev/null
@@ -1,346 +0,0 @@
-/**
-* Smarty Internal Plugin Configfileparser
-*
-* This is the config file parser
-*
-*
-* @package Smarty
-* @subpackage Config
-* @author Uwe Tews
-*/
-%name TPC_
-%declare_class {
-/**
-* Smarty Internal Plugin Configfileparse
-*
-* This is the config file parser.
-* It is generated from the smarty_internal_configfileparser.y file
-* @package Smarty
-* @subpackage Compiler
-* @author Uwe Tews
-*/
-class Smarty_Internal_Configfileparser
-}
-%include_class
-{
- /**
- * result status
- *
- * @var bool
- */
- public $successful = true;
- /**
- * return value
- *
- * @var mixed
- */
- public $retvalue = 0;
- /**
- * @var
- */
- public $yymajor;
- /**
- * lexer object
- *
- * @var Smarty_Internal_Configfilelexer
- */
- private $lex;
- /**
- * internal error flag
- *
- * @var bool
- */
- private $internalError = false;
- /**
- * compiler object
- *
- * @var Smarty_Internal_Config_File_Compiler
- */
- public $compiler = null;
- /**
- * smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
- /**
- * copy of config_overwrite property
- *
- * @var bool
- */
- private $configOverwrite = false;
- /**
- * copy of config_read_hidden property
- *
- * @var bool
- */
- private $configReadHidden = false;
- /**
- * helper map
- *
- * @var array
- */
- private static $escapes_single = array('\\' => '\\',
- '\'' => '\'');
-
- /**
- * constructor
- *
- * @param Smarty_Internal_Configfilelexer $lex
- * @param Smarty_Internal_Config_File_Compiler $compiler
- */
- public function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Config_File_Compiler $compiler)
- {
- $this->lex = $lex;
- $this->smarty = $compiler->smarty;
- $this->compiler = $compiler;
- $this->configOverwrite = $this->smarty->config_overwrite;
- $this->configReadHidden = $this->smarty->config_read_hidden;
- }
-
- /**
- * parse optional boolean keywords
- *
- * @param string $str
- *
- * @return bool
- */
- private function parse_bool($str)
- {
- $str = strtolower($str);
- if (in_array($str, array('on', 'yes', 'true'))) {
- $res = true;
- } else {
- $res = false;
- }
- return $res;
- }
-
- /**
- * parse single quoted string
- * remove outer quotes
- * unescape inner quotes
- *
- * @param string $qstr
- *
- * @return string
- */
- private static function parse_single_quoted_string($qstr)
- {
- $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
-
- $ss = preg_split('/(\\\\.)/', $escaped_string, - 1, PREG_SPLIT_DELIM_CAPTURE);
-
- $str = '';
- foreach ($ss as $s) {
- if (strlen($s) === 2 && $s[0] === '\\') {
- if (isset(self::$escapes_single[$s[1]])) {
- $s = self::$escapes_single[$s[1]];
- }
- }
- $str .= $s;
- }
- return $str;
- }
-
- /**
- * parse double quoted string
- *
- * @param string $qstr
- *
- * @return string
- */
- private static function parse_double_quoted_string($qstr)
- {
- $inner_str = substr($qstr, 1, strlen($qstr) - 2);
- return stripcslashes($inner_str);
- }
-
- /**
- * parse triple quoted string
- *
- * @param string $qstr
- *
- * @return string
- */
- private static function parse_tripple_double_quoted_string($qstr)
- {
- return stripcslashes($qstr);
- }
-
- /**
- * set a config variable in target array
- *
- * @param array $var
- * @param array $target_array
- */
- private function set_var(array $var, array &$target_array)
- {
- $key = $var['key'];
- $value = $var['value'];
-
- if ($this->configOverwrite || !isset($target_array['vars'][$key])) {
- $target_array['vars'][$key] = $value;
- } else {
- settype($target_array['vars'][$key], 'array');
- $target_array['vars'][$key][] = $value;
- }
- }
-
- /**
- * add config variable to global vars
- *
- * @param array $vars
- */
- private function add_global_vars(array $vars)
- {
- if (!isset($this->compiler->config_data['vars'])) {
- $this->compiler->config_data['vars'] = array();
- }
- foreach ($vars as $var) {
- $this->set_var($var, $this->compiler->config_data);
- }
- }
-
- /**
- * add config variable to section
- *
- * @param string $section_name
- * @param array $vars
- */
- private function add_section_vars($section_name, array $vars)
- {
- if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
- $this->compiler->config_data['sections'][$section_name]['vars'] = array();
- }
- foreach ($vars as $var) {
- $this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
- }
- }
-}
-
-%token_prefix TPC_
-
-%parse_accept
-{
- $this->successful = !$this->internalError;
- $this->internalError = false;
- $this->retvalue = $this->_retvalue;
-}
-
-%syntax_error
-{
- $this->internalError = true;
- $this->yymajor = $yymajor;
- $this->compiler->trigger_config_file_error();
-}
-
-%stack_overflow
-{
- $this->internalError = true;
- $this->compiler->trigger_config_file_error('Stack overflow in configfile parser');
-}
-
-// Complete config file
-start(res) ::= global_vars sections. {
- res = null;
-}
-
-// Global vars
-global_vars(res) ::= var_list(vl). {
- $this->add_global_vars(vl);
- res = null;
-}
-
-// Sections
-sections(res) ::= sections section. {
- res = null;
-}
-
-sections(res) ::= . {
- res = null;
-}
-
-section(res) ::= OPENB SECTION(i) CLOSEB newline var_list(vars). {
- $this->add_section_vars(i, vars);
- res = null;
-}
-
-section(res) ::= OPENB DOT SECTION(i) CLOSEB newline var_list(vars). {
- if ($this->configReadHidden) {
- $this->add_section_vars(i, vars);
- }
- res = null;
-}
-
-// Var list
-var_list(res) ::= var_list(vl) newline. {
- res = vl;
-}
-
-var_list(res) ::= var_list(vl) var(v). {
- res = array_merge(vl, array(v));
-}
-
-var_list(res) ::= . {
- res = array();
-}
-
-
-// Var
-var(res) ::= ID(id) EQUAL value(v). {
- res = array('key' => id, 'value' => v);
-}
-
-
-value(res) ::= FLOAT(i). {
- res = (float) i;
-}
-
-value(res) ::= INT(i). {
- res = (int) i;
-}
-
-value(res) ::= BOOL(i). {
- res = $this->parse_bool(i);
-}
-
-value(res) ::= SINGLE_QUOTED_STRING(i). {
- res = self::parse_single_quoted_string(i);
-}
-
-value(res) ::= DOUBLE_QUOTED_STRING(i). {
- res = self::parse_double_quoted_string(i);
-}
-
-value(res) ::= TRIPPLE_QUOTES(i) TRIPPLE_TEXT(c) TRIPPLE_QUOTES_END(ii). {
- res = self::parse_tripple_double_quoted_string(c);
-}
-
-value(res) ::= TRIPPLE_QUOTES(i) TRIPPLE_QUOTES_END(ii). {
- res = '';
-}
-
-value(res) ::= NAKED_STRING(i). {
- res = i;
-}
-
-// NOTE: this is not a valid rule
-// It is added hier to produce a usefull error message on a missing '=';
-value(res) ::= OTHER(i). {
- res = i;
-}
-
-
-// Newline and comments
-newline(res) ::= NEWLINE. {
- res = null;
-}
-
-newline(res) ::= COMMENTSTART NEWLINE. {
- res = null;
-}
-
-newline(res) ::= COMMENTSTART NAKED_STRING NEWLINE. {
- res = null;
-}
diff --git a/vendor/smarty/smarty/lexer/smarty_internal_templatelexer.plex b/vendor/smarty/smarty/lexer/smarty_internal_templatelexer.plex
deleted file mode 100644
index 2cd46df97..000000000
--- a/vendor/smarty/smarty/lexer/smarty_internal_templatelexer.plex
+++ /dev/null
@@ -1,687 +0,0 @@
-<?php
-/*
- * This file is part of Smarty.
- *
- * (c) 2015 Uwe Tews
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Smarty_Internal_Templatelexer
- * This is the template file lexer.
- * It is generated from the smarty_internal_templatelexer.plex file
- *
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Templatelexer
-{
- /**
- * Source
- *
- * @var string
- */
- public $data;
-
- /**
- * Source length
- *
- * @var int
- */
- public $dataLength = null;
-
- /**
- * byte counter
- *
- * @var int
- */
- public $counter;
-
- /**
- * token number
- *
- * @var int
- */
- public $token;
-
- /**
- * token value
- *
- * @var string
- */
- public $value;
-
- /**
- * current line
- *
- * @var int
- */
- public $line;
-
- /**
- * tag start line
- *
- * @var
- */
- public $taglineno;
-
- /**
- * php code type
- *
- * @var string
- */
- public $phpType = '';
-
- /**
- * state number
- *
- * @var int
- */
- public $state = 1;
-
- /**
- * Smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * compiler object
- *
- * @var Smarty_Internal_TemplateCompilerBase
- */
- public $compiler = null;
-
- /**
- * trace file
- *
- * @var resource
- */
- public $yyTraceFILE;
-
- /**
- * trace prompt
- *
- * @var string
- */
- public $yyTracePrompt;
-
- /**
- * XML flag true while processing xml
- *
- * @var bool
- */
- public $is_xml = false;
-
- /**
- * state names
- *
- * @var array
- */
- public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',);
-
- /**
- * token names
- *
- * @var array
- */
- public $smarty_token_names = array( // Text for parser error messages
- 'NOT' => '(!,not)',
- 'OPENP' => '(',
- 'CLOSEP' => ')',
- 'OPENB' => '[',
- 'CLOSEB' => ']',
- 'PTR' => '->',
- 'APTR' => '=>',
- 'EQUAL' => '=',
- 'NUMBER' => 'number',
- 'UNIMATH' => '+" , "-',
- 'MATH' => '*" , "/" , "%',
- 'INCDEC' => '++" , "--',
- 'SPACE' => ' ',
- 'DOLLAR' => '$',
- 'SEMICOLON' => ';',
- 'COLON' => ':',
- 'DOUBLECOLON' => '::',
- 'AT' => '@',
- 'HATCH' => '#',
- 'QUOTE' => '"',
- 'BACKTICK' => '`',
- 'VERT' => '"|" modifier',
- 'DOT' => '.',
- 'COMMA' => '","',
- 'QMARK' => '"?"',
- 'ID' => 'id, name',
- 'TEXT' => 'text',
- 'LDELSLASH' => '{/..} closing tag',
- 'LDEL' => '{...} Smarty tag',
- 'COMMENT' => 'comment',
- 'AS' => 'as',
- 'TO' => 'to',
- 'LOGOP' => '"<", "==" ... logical operator',
- 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
- 'SCOND' => '"is even" ... if condition',
- );
-
- /**
- * literal tag nesting level
- *
- * @var int
- */
- private $literal_cnt = 0;
-
- /**
- * preg token pattern for state TEXT
- *
- * @var string
- */
- private $yy_global_pattern1 = null;
-
- /**
- * preg token pattern for state TAG
- *
- * @var string
- */
- private $yy_global_pattern2 = null;
-
- /**
- * preg token pattern for state TAGBODY
- *
- * @var string
- */
- private $yy_global_pattern3 = null;
-
- /**
- * preg token pattern for state LITERAL
- *
- * @var string
- */
- private $yy_global_pattern4 = null;
-
- /**
- * preg token pattern for state DOUBLEQUOTEDSTRING
- *
- * @var null
- */
- private $yy_global_pattern5 = null;
-
- /**
- * preg token pattern for text
- *
- * @var null
- */
- private $yy_global_text = null;
-
- /**
- * preg token pattern for literal
- *
- * @var null
- */
- private $yy_global_literal = null;
-
- /**
- * constructor
- *
- * @param string $source template source
- * @param Smarty_Internal_TemplateCompilerBase $compiler
- */
- public function __construct($source, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->data = $source;
- $this->dataLength = strlen($this->data);
- $this->counter = 0;
- if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) {
- $this->counter += strlen($match[0]);
- }
- $this->line = 1;
- $this->smarty = $compiler->template->smarty;
- $this->compiler = $compiler;
- $this->compiler->initDelimiterPreg();
- $this->smarty_token_names['LDEL'] = $this->smarty->getLeftDelimiter();
- $this->smarty_token_names['RDEL'] = $this->smarty->getRightDelimiter();
- }
-
- /**
- * open lexer/parser trace file
- *
- */
- public function PrintTrace()
- {
- $this->yyTraceFILE = fopen('php://output', 'w');
- $this->yyTracePrompt = '<br>';
- }
-
- /**
- * replace placeholders with runtime preg code
- *
- * @param string $preg
- *
- * @return string
- */
- public function replace($preg)
- {
- return $this->compiler->replaceDelimiter($preg);
- }
-
- /**
- * check if current value is an autoliteral left delimiter
- *
- * @return bool
- */
- public function isAutoLiteral()
- {
- return $this->smarty->getAutoLiteral() && isset($this->value[ $this->compiler->getLdelLength() ]) ?
- strpos(" \n\t\r", $this->value[ $this->compiler->getLdelLength() ]) !== false : false;
- }
-
- /*!lex2php
- %input $this->data
- %counter $this->counter
- %token $this->token
- %value $this->value
- %line $this->line
- userliteral = ~(SMARTYldel)SMARTYautoliteral\s+SMARTYliteral~
- char = ~[\S\s]~
- textdoublequoted = ~([^"\\]*?)((?:\\.[^"\\]*?)*?)(?=((SMARTYldel)SMARTYal|\$|`\$|"SMARTYliteral))~
- namespace = ~([0-9]*[a-zA-Z_]\w*)?(\\[0-9]*[a-zA-Z_]\w*)+~
- emptyjava = ~[{][}]~
- slash = ~[/]~
- ldel = ~(SMARTYldel)SMARTYal~
- rdel = ~\s*SMARTYrdel~
- nocacherdel = ~(\s+nocache)?\s*SMARTYrdel~
- smartyblockchildparent = ~[\$]smarty\.block\.(child|parent)~
- integer = ~\d+~
- hex = ~0[xX][0-9a-fA-F]+~
- math = ~\s*([*]{1,2}|[%/^&]|[<>]{2})\s*~
- comment = ~(SMARTYldel)SMARTYal[*]~
- incdec = ~([+]|[-]){2}~
- unimath = ~\s*([+]|[-])\s*~
- openP = ~\s*[(]\s*~
- closeP = ~\s*[)]~
- openB = ~\[\s*~
- closeB = ~\s*\]~
- dollar = ~[$]~
- dot = ~[.]~
- comma = ~\s*[,]\s*~
- doublecolon = ~[:]{2}~
- colon = ~\s*[:]\s*~
- at = ~[@]~
- hatch = ~[#]~
- semicolon = ~\s*[;]\s*~
- equal = ~\s*[=]\s*~
- space = ~\s+~
- ptr = ~\s*[-][>]\s*~
- aptr = ~\s*[=][>]\s*~
- singlequotestring = ~'[^'\\]*(?:\\.[^'\\]*)*'~
- backtick = ~[`]~
- vert = ~[|][@]?~
- qmark = ~\s*[?]\s*~
- constant = ~[_]+[A-Z0-9][0-9A-Z_]*|[A-Z][0-9A-Z_]*(?![0-9A-Z_]*[a-z])~
- attr = ~\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\s*[=]\s*~
- id = ~[0-9]*[a-zA-Z_]\w*~
- literal = ~literal~
- strip = ~strip~
- lop = ~\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\s*~
- slop = ~\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\s+~
- tlop = ~\s+is\s+(not\s+)?(odd|even|div)\s+by\s+~
- scond = ~\s+is\s+(not\s+)?(odd|even)~
- isin = ~\s+is\s+in\s+~
- as = ~\s+as\s+~
- to = ~\s+to\s+~
- step = ~\s+step\s+~
- if = ~(if|elseif|else if|while)\s+~
- for = ~for\s+~
- makenocache = ~make_nocache\s+~
- array = ~array~
- foreach = ~foreach(?![^\s])~
- setfilter = ~setfilter\s+~
- instanceof = ~\s+instanceof\s+~
- not = ~[!]\s*|not\s+~
- typecast = ~[(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\s*~
- double_quote = ~["]~
- */
- /*!lex2php
- %statename TEXT
- emptyjava {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- comment {
- $to = $this->dataLength;
- preg_match("/[*]{$this->compiler->getRdelPreg()}[\n]?/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1] + strlen($match[0][0]);
- } else {
- $this->compiler->trigger_template_error ("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'");
- }
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- return false;
- }
- userliteral {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- ldel literal rdel {
- $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
- $this->yypushstate(self::LITERAL);
- }
- ldel slash literal rdel {
- $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
- $this->yypushstate(self::LITERAL);
- }
- ldel {
- $this->yypushstate(self::TAG);
- return true;
- }
- char {
- if (!isset($this->yy_global_text)) {
- $this->yy_global_text = $this->replace('/(SMARTYldel)SMARTYal/isS');
- }
- $to = $this->dataLength;
- preg_match($this->yy_global_text, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1];
- }
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- */
- /*!lex2php
- %statename TAG
- ldel if {
- $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- ldel for {
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- ldel foreach {
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- ldel setfilter {
- $this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- ldel makenocache {
- $this->token = Smarty_Internal_Templateparser::TP_LDELMAKENOCACHE;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- ldel id nocacherdel {
- $this->yypopstate();
- $this->token = Smarty_Internal_Templateparser::TP_SIMPLETAG;
- $this->taglineno = $this->line;
- }
- ldel smartyblockchildparent rdel {
- $this->yypopstate();
- $this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILDPARENT;
- $this->taglineno = $this->line;
- }
- ldel slash id rdel {
- $this->yypopstate();
- $this->token = Smarty_Internal_Templateparser::TP_CLOSETAG;
- $this->taglineno = $this->line;
- }
- ldel dollar id nocacherdel {
- if ($this->_yy_stack[count($this->_yy_stack)-1] === self::TEXT) {
- $this->yypopstate();
- $this->token = Smarty_Internal_Templateparser::TP_SIMPELOUTPUT;
- $this->taglineno = $this->line;
- } else {
- $this->value = $this->smarty->getLeftDelimiter();
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- }
- ldel slash {
- $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- ldel {
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- */
- /*!lex2php
- %statename TAGBODY
- rdel {
- $this->token = Smarty_Internal_Templateparser::TP_RDEL;
- $this->yypopstate();
- }
- ldel {
- $this->yypushstate(self::TAG);
- return true;
- }
- double_quote {
- $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
- $this->yypushstate(self::DOUBLEQUOTEDSTRING);
- $this->compiler->enterDoubleQuote();
- }
- singlequotestring {
- $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING;
- }
- dollar id {
- $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
- }
- dollar {
- $this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
- }
- isin {
- $this->token = Smarty_Internal_Templateparser::TP_ISIN;
- }
- as {
- $this->token = Smarty_Internal_Templateparser::TP_AS;
- }
- to {
- $this->token = Smarty_Internal_Templateparser::TP_TO;
- }
- step {
- $this->token = Smarty_Internal_Templateparser::TP_STEP;
- }
- instanceof {
- $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
- }
- lop {
- $this->token = Smarty_Internal_Templateparser::TP_LOGOP;
- }
- slop {
- $this->token = Smarty_Internal_Templateparser::TP_SLOGOP;
- }
- tlop {
- $this->token = Smarty_Internal_Templateparser::TP_TLOGOP;
- }
- scond {
- $this->token = Smarty_Internal_Templateparser::TP_SINGLECOND;
- }
- not{
- $this->token = Smarty_Internal_Templateparser::TP_NOT;
- }
- typecast {
- $this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
- }
- openP {
- $this->token = Smarty_Internal_Templateparser::TP_OPENP;
- }
- closeP {
- $this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
- }
- openB {
- $this->token = Smarty_Internal_Templateparser::TP_OPENB;
- }
- closeB {
- $this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
- }
- ptr {
- $this->token = Smarty_Internal_Templateparser::TP_PTR;
- }
- aptr {
- $this->token = Smarty_Internal_Templateparser::TP_APTR;
- }
- equal {
- $this->token = Smarty_Internal_Templateparser::TP_EQUAL;
- }
- incdec {
- $this->token = Smarty_Internal_Templateparser::TP_INCDEC;
- }
- unimath {
- $this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
- }
- math {
- $this->token = Smarty_Internal_Templateparser::TP_MATH;
- }
- at {
- $this->token = Smarty_Internal_Templateparser::TP_AT;
- }
- array openP {
- $this->token = Smarty_Internal_Templateparser::TP_ARRAYOPEN;
- }
- hatch {
- $this->token = Smarty_Internal_Templateparser::TP_HATCH;
- }
- attr {
- // resolve conflicts with shorttag and right_delimiter starting with '='
- if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->compiler->getRdelLength()) === $this->smarty->getRightDelimiter()) {
- preg_match('/\s+/',$this->value,$match);
- $this->value = $match[0];
- $this->token = Smarty_Internal_Templateparser::TP_SPACE;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_ATTR;
- }
- }
- namespace {
- $this->token = Smarty_Internal_Templateparser::TP_NAMESPACE;
- }
- id {
- $this->token = Smarty_Internal_Templateparser::TP_ID;
- }
- integer {
- $this->token = Smarty_Internal_Templateparser::TP_INTEGER;
- }
- backtick {
- $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
- $this->yypopstate();
- }
- vert {
- $this->token = Smarty_Internal_Templateparser::TP_VERT;
- }
- dot {
- $this->token = Smarty_Internal_Templateparser::TP_DOT;
- }
- comma {
- $this->token = Smarty_Internal_Templateparser::TP_COMMA;
- }
- semicolon {
- $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
- }
- doublecolon {
- $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
- }
- colon {
- $this->token = Smarty_Internal_Templateparser::TP_COLON;
- }
- qmark {
- $this->token = Smarty_Internal_Templateparser::TP_QMARK;
- }
- hex {
- $this->token = Smarty_Internal_Templateparser::TP_HEX;
- }
- space {
- $this->token = Smarty_Internal_Templateparser::TP_SPACE;
- }
- char {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- */
-
- /*!lex2php
- %statename LITERAL
- ldel literal rdel {
- $this->literal_cnt++;
- $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
- }
- ldel slash literal rdel {
- if ($this->literal_cnt) {
- $this->literal_cnt--;
- $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
- $this->yypopstate();
- }
- }
- char {
- if (!isset($this->yy_global_literal)) {
- $this->yy_global_literal = $this->replace('/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS');
- }
- $to = $this->dataLength;
- preg_match($this->yy_global_literal, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1];
- } else {
- $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
- }
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
- }
- */
- /*!lex2php
- %statename DOUBLEQUOTEDSTRING
- userliteral {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- ldel literal rdel {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- ldel slash literal rdel {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- ldel slash {
- $this->yypushstate(self::TAG);
- return true;
- }
- ldel id {
- $this->yypushstate(self::TAG);
- return true;
- }
- ldel {
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->taglineno = $this->line;
- $this->yypushstate(self::TAGBODY);
- }
- double_quote {
- $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
- $this->yypopstate();
- }
- backtick dollar {
- $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
- $this->value = substr($this->value,0,-1);
- $this->yypushstate(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- dollar id {
- $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
- }
- dollar {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- textdoublequoted {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- char {
- $to = $this->dataLength;
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- */
- }
-
- \ No newline at end of file
diff --git a/vendor/smarty/smarty/lexer/smarty_internal_templateparser.y b/vendor/smarty/smarty/lexer/smarty_internal_templateparser.y
deleted file mode 100644
index 620498765..000000000
--- a/vendor/smarty/smarty/lexer/smarty_internal_templateparser.y
+++ /dev/null
@@ -1,1269 +0,0 @@
-/*
- * This file is part of Smarty.
- *
- * (c) 2015 Uwe Tews
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-%stack_size 500
-%name TP_
-%declare_class {
-/**
-* Smarty Template Parser Class
-*
-* This is the template parser.
-* It is generated from the smarty_internal_templateparser.y file
-*
-* @author Uwe Tews <uwe.tews@googlemail.com>
-*/
-class Smarty_Internal_Templateparser
-}
-%include_class
-{
- const ERR1 = 'Security error: Call to private object member not allowed';
- const ERR2 = 'Security error: Call to dynamic object member not allowed';
-
- /**
- * result status
- *
- * @var bool
- */
- public $successful = true;
-
- /**
- * return value
- *
- * @var mixed
- */
- public $retvalue = 0;
-
- /**
- * @var
- */
- public $yymajor;
-
- /**
- * last index of array variable
- *
- * @var mixed
- */
- public $last_index;
-
- /**
- * last variable name
- *
- * @var string
- */
- public $last_variable;
-
- /**
- * root parse tree buffer
- *
- * @var Smarty_Internal_ParseTree_Template
- */
- public $root_buffer;
-
- /**
- * current parse tree object
- *
- * @var Smarty_Internal_ParseTree
- */
- public $current_buffer;
-
- /**
- * lexer object
- *
- * @var Smarty_Internal_Templatelexer
- */
- public $lex;
-
- /**
- * internal error flag
- *
- * @var bool
- */
- private $internalError = false;
-
- /**
- * {strip} status
- *
- * @var bool
- */
- public $strip = false;
- /**
- * compiler object
- *
- * @var Smarty_Internal_TemplateCompilerBase
- */
- public $compiler = null;
-
- /**
- * smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * template object
- *
- * @var Smarty_Internal_Template
- */
- public $template = null;
-
- /**
- * block nesting level
- *
- * @var int
- */
- public $block_nesting_level = 0;
-
- /**
- * security object
- *
- * @var Smarty_Security
- */
- public $security = null;
-
- /**
- * template prefix array
- *
- * @var \Smarty_Internal_ParseTree[]
- */
- public $template_prefix = array();
-
- /**
- * template prefix array
- *
- * @var \Smarty_Internal_ParseTree[]
- */
- public $template_postfix = array();
-
- /**
- * constructor
- *
- * @param Smarty_Internal_Templatelexer $lex
- * @param Smarty_Internal_TemplateCompilerBase $compiler
- */
- public function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->lex = $lex;
- $this->compiler = $compiler;
- $this->template = $this->compiler->template;
- $this->smarty = $this->template->smarty;
- $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
- $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
- }
-
- /**
- * insert PHP code in current buffer
- *
- * @param string $code
- */
- public function insertPhpCode($code)
- {
- $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
- }
-
- /**
- * error rundown
- *
- */
- public function errorRunDown()
- {
- while ($this->yystack !== array()) {
- $this->yy_pop_parser_stack();
- }
- if (is_resource($this->yyTraceFILE)) {
- fclose($this->yyTraceFILE);
- }
- }
-
- /**
- * merge PHP code with prefix code and return parse tree tag object
- *
- * @param string $code
- *
- * @return Smarty_Internal_ParseTree_Tag
- */
- public function mergePrefixCode($code)
- {
- $tmp = '';
- foreach ($this->compiler->prefix_code as $preCode) {
- $tmp .= $preCode;
- }
- $this->compiler->prefix_code = array();
- $tmp .= $code;
- return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
- }
-
-}
-
-%token_prefix TP_
-
-%parse_accept
-{
- $this->successful = !$this->internalError;
- $this->internalError = false;
- $this->retvalue = $this->_retvalue;
-}
-
-%syntax_error
-{
- $this->internalError = true;
- $this->yymajor = $yymajor;
- $this->compiler->trigger_template_error();
-}
-
-%stack_overflow
-{
- $this->internalError = true;
- $this->compiler->trigger_template_error('Stack overflow in template parser');
-}
-
-
-%right VERT.
-%left COLON.
-
-
- //
- // complete template
- //
-start(res) ::= template. {
- $this->root_buffer->prepend_array($this, $this->template_prefix);
- $this->root_buffer->append_array($this, $this->template_postfix);
- res = $this->root_buffer->to_smarty_php($this);
-}
-
- // template text
-template ::= template TEXT(B). {
- $text = $this->yystack[ $this->yyidx + 0 ]->minor;
-
- if ((string)$text == '') {
- $this->current_buffer->append_subtree($this, null);
- }
-
- $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text($text, $this->strip));
-}
- // strip on
-template ::= template STRIPON. {
- $this->strip = true;
-}
- // strip off
-template ::= template STRIPOFF. {
- $this->strip = false;
-}
-
- // Literal
-template ::= template LITERALSTART literal_e2(B) LITERALEND. {
- $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text(B));
-}
-
-
-literal_e2(A) ::= literal_e1(B) LITERALSTART literal_e1(C) LITERALEND. {
- A = B.C;
-}
-literal_e2(A) ::= literal_e1(B). {
- A = B;
-}
-
-literal_e1(A) ::= literal_e1(B) LITERAL(C). {
- A = B.C;
-
-}
-
-literal_e1(A) ::= . {
- A = '';
-}
- // Smarty tag
-template ::= template smartytag(B). {
- if ($this->compiler->has_code) {
- $this->current_buffer->append_subtree($this, $this->mergePrefixCode(B));
- }
- $this->compiler->has_variable_string = false;
- $this->block_nesting_level = count($this->compiler->_tag_stack);
-}
-
-
- // empty template
-template ::= .
-
-smartytag(A) ::= SIMPELOUTPUT(B). {
- $var = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
- if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
- A = $this->compiler->compileTag('private_print_expression',array('nocache'),array('value'=>$this->compiler->compileVariable('\''.$match[1].'\'')));
- } else {
- A = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->compiler->compileVariable('\''.$var.'\'')));
- }
-}
-
-// simple tag like {name}
-smartytag(A)::= SIMPLETAG(B). {
- $tag = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()));
- if ($tag == 'strip') {
- $this->strip = true;
- A = null;
- } else {
- if (defined($tag)) {
- if ($this->security) {
- $this->security->isTrustedConstant($tag, $this->compiler);
- }
- A = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$tag));
- } else {
- if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
- A = $this->compiler->compileTag($match[1],array('\'nocache\''));
- } else {
- A = $this->compiler->compileTag($tag,array());
- }
- }
- }
-}
- // {$smarty.block.child} or {$smarty.block.parent}
-smartytag(A) ::= SMARTYBLOCKCHILDPARENT(i). {
- $j = strrpos(i,'.');
- if (i[$j+1] == 'c') {
- // {$smarty.block.child}
- A = $this->compiler->compileTag('child',array(),array(i));
- } else {
- // {$smarty.block.parent}
- A = $this->compiler->compileTag('parent',array(),array(i));
- }
-}
-
-smartytag(A) ::= LDEL tagbody(B) RDEL. {
- A = B;
-}
-
- smartytag(A) ::= tag(B) RDEL. {
- A = B;
- }
- // output with optional attributes
-tagbody(A) ::= outattr(B). {
- A = $this->compiler->compileTag('private_print_expression',B[1],array('value'=>B[0]));
-}
-
-//
-// Smarty tags start here
-//
-
- // assign new style
-tagbody(A) ::= DOLLARID(B) eqoutattr(C). {
- A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>'\''.substr(B,1).'\'')),C[1]));
-}
-
-tagbody(A) ::= varindexed(B) eqoutattr(C). {
- A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>B['var'])),C[1]),array('smarty_internal_index'=>B['smarty_internal_index']));
-}
-
-eqoutattr(A) ::= EQUAL outattr(B). {
- A = B;
-}
-
-outattr(A) ::= output(B) attributes(C). {
- A = array(B,C);
-}
-
-output(A) ::= variable(B). {
- A = B;
-}
-output(A) ::= value(B). {
- A = B;
-}
-output(A) ::= expr(B). {
- A = B;
-}
-
- // tag with optional Smarty2 style attributes
-tag(res) ::= LDEL ID(i) attributes(a). {
- if (defined(i)) {
- if ($this->security) {
- $this->security->isTrustedConstant(i, $this->compiler);
- }
- res = $this->compiler->compileTag('private_print_expression',a,array('value'=>i));
- } else {
- res = $this->compiler->compileTag(i,a);
- }
-}
-tag(res) ::= LDEL ID(i). {
- if (defined(i)) {
- if ($this->security) {
- $this->security->isTrustedConstant(i, $this->compiler);
- }
- res = $this->compiler->compileTag('private_print_expression',array(),array('value'=>i));
- } else {
- res = $this->compiler->compileTag(i,array());
- }
-}
-
-
- // tag with modifier and optional Smarty2 style attributes
-tag(res) ::= LDEL ID(i) modifierlist(l)attributes(a). {
- if (defined(i)) {
- if ($this->security) {
- $this->security->isTrustedConstant(i, $this->compiler);
- }
- res = $this->compiler->compileTag('private_print_expression',a,array('value'=>i, 'modifierlist'=>l));
- } else {
- res = $this->compiler->compileTag(i,a, array('modifierlist'=>l));
- }
-}
-
- // registered object tag
-tag(res) ::= LDEL ID(i) PTR ID(m) attributes(a). {
- res = $this->compiler->compileTag(i,a,array('object_method'=>m));
-}
-
- // registered object tag with modifiers
-tag(res) ::= LDEL ID(i) PTR ID(me) modifierlist(l) attributes(a). {
- res = $this->compiler->compileTag(i,a,array('modifierlist'=>l, 'object_method'=>me));
-}
-
- // nocache tag
-tag(res) ::= LDELMAKENOCACHE DOLLARID(i). {
- res = $this->compiler->compileTag('make_nocache',array(array('var'=>'\''.substr(i,1).'\'')));
-}
-
- // {if}, {elseif} and {while} tag
-tag(res) ::= LDELIF(i) expr(ie). {
- $tag = trim(substr(i,$this->compiler->getLdelLength()));
- res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>ie));
-}
-
-tag(res) ::= LDELIF(i) expr(ie) attributes(a). {
- $tag = trim(substr(i,$this->compiler->getLdelLength()));
- res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,a,array('if condition'=>ie));
-}
-
-tag(res) ::= LDELIF(i) statement(ie). {
- $tag = trim(substr(i,$this->compiler->getLdelLength()));
- res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>ie));
-}
-
-tag(res) ::= LDELIF(i) statement(ie) attributes(a). {
- $tag = trim(substr(i,$this->compiler->getLdelLength()));
- res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,a,array('if condition'=>ie));
-}
-
- // {for} tag
-tag(res) ::= LDELFOR statements(st) SEMICOLON expr(ie) SEMICOLON varindexed(v2) foraction(e2) attributes(a). {
- res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('ifexp'=>ie),array('var'=>v2),array('step'=>e2))),1);
-}
-
- foraction(res) ::= EQUAL expr(e). {
- res = '='.e;
-}
-
- foraction(res) ::= INCDEC(e). {
- res = e;
-}
-
-tag(res) ::= LDELFOR statement(st) TO expr(v) attributes(a). {
- res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('to'=>v))),0);
-}
-
-tag(res) ::= LDELFOR statement(st) TO expr(v) STEP expr(v2) attributes(a). {
- res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('to'=>v),array('step'=>v2))),0);
-}
-
- // {foreach} tag
-tag(res) ::= LDELFOREACH SPACE expr(e) AS varvar(v0) attributes(a). {
- res = $this->compiler->compileTag('foreach',array_merge(a,array(array('from'=>e),array('item'=>v0))));
-}
-
-tag(res) ::= LDELFOREACH SPACE expr(e) AS varvar(v1) APTR varvar(v0) attributes(a). {
- res = $this->compiler->compileTag('foreach',array_merge(a,array(array('from'=>e),array('item'=>v0),array('key'=>v1))));
-}
-tag(res) ::= LDELFOREACH attributes(a). {
- res = $this->compiler->compileTag('foreach',a);
-}
-
- // {setfilter}
-tag(res) ::= LDELSETFILTER ID(m) modparameters(p). {
- res = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array(m),p))));
-}
-
-tag(res) ::= LDELSETFILTER ID(m) modparameters(p) modifierlist(l). {
- res = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array(m),p)),l)));
-}
-
-
- // end of block tag {/....}
-smartytag(res)::= CLOSETAG(t). {
- $tag = trim(substr(t, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /');
- if ($tag === 'strip') {
- $this->strip = false;
- res = null;
- } else {
- res = $this->compiler->compileTag($tag.'close',array());
- }
- }
-tag(res) ::= LDELSLASH ID(i). {
- res = $this->compiler->compileTag(i.'close',array());
-}
-
-tag(res) ::= LDELSLASH ID(i) modifierlist(l). {
- res = $this->compiler->compileTag(i.'close',array(),array('modifier_list'=>l));
-}
-
- // end of block object tag {/....}
-tag(res) ::= LDELSLASH ID(i) PTR ID(m). {
- res = $this->compiler->compileTag(i.'close',array(),array('object_method'=>m));
-}
-
-tag(res) ::= LDELSLASH ID(i) PTR ID(m) modifierlist(l). {
- res = $this->compiler->compileTag(i.'close',array(),array('object_method'=>m, 'modifier_list'=>l));
-}
-
-//
-//Attributes of Smarty tags
-//
- // list of attributes
-attributes(res) ::= attributes(a1) attribute(a2). {
- res = a1;
- res[] = a2;
-}
-
- // single attribute
-attributes(res) ::= attribute(a). {
- res = array(a);
-}
-
- // no attributes
-attributes(res) ::= . {
- res = array();
-}
-
- // attribute
-attribute(res) ::= SPACE ID(v) EQUAL ID(id). {
- if (defined(id)) {
- if ($this->security) {
- $this->security->isTrustedConstant(id, $this->compiler);
- }
- res = array(v=>id);
- } else {
- res = array(v=>'\''.id.'\'');
- }
-}
-
-attribute(res) ::= ATTR(v) expr(e). {
- res = array(trim(v," =\n\r\t")=>e);
-}
-
-attribute(res) ::= ATTR(v) value(e). {
- res = array(trim(v," =\n\r\t")=>e);
-}
-
-attribute(res) ::= SPACE ID(v). {
- res = '\''.v.'\'';
-}
-
-attribute(res) ::= SPACE expr(e). {
- res = e;
-}
-
-attribute(res) ::= SPACE value(v). {
- res = v;
-}
-
-attribute(res) ::= SPACE INTEGER(i) EQUAL expr(e). {
- res = array(i=>e);
-}
-
-
-
-//
-// statement
-//
-statements(res) ::= statement(s). {
- res = array(s);
-}
-
-statements(res) ::= statements(s1) COMMA statement(s). {
- s1[]=s;
- res = s1;
-}
-
-statement(res) ::= DOLLARID(i) EQUAL INTEGER(e). {
- res = array('var' => '\''.substr(i,1).'\'', 'value'=>e);
-}
-statement(res) ::= DOLLARID(i) EQUAL expr(e). {
- res = array('var' => '\''.substr(i,1).'\'', 'value'=>e);
-}
-
-statement(res) ::= varindexed(vi) EQUAL expr(e). {
- res = array('var' => vi, 'value'=>e);
-}
-
-statement(res) ::= OPENP statement(st) CLOSEP. {
- res = st;
-}
-
-
-//
-// expressions
-//
-
- // single value
-expr(res) ::= value(v). {
- res = v;
-}
-
- // ternary
-expr(res) ::= ternary(v). {
- res = v;
-}
-
- // resources/streams
-expr(res) ::= DOLLARID(i) COLON ID(i2). {
- res = '$_smarty_tpl->getStreamVariable(\''.substr(i,1).'://' . i2 . '\')';
-}
-
- // arithmetic expression
-expr(res) ::= expr(e) MATH(m) value(v). {
- res = e . trim(m) . v;
-}
-
-expr(res) ::= expr(e) UNIMATH(m) value(v). {
- res = e . trim(m) . v;
-}
-
-// if expression
- // special conditions
-expr(res) ::= expr(e1) tlop(c) value(e2). {
- res = c['pre']. e1.c['op'].e2 .')';
-}
- // simple expression
-expr(res) ::= expr(e1) lop(c) expr(e2). {
- res = e1.c.e2;
-}
-
-expr(res) ::= expr(e1) scond(c). {
- res = c . e1 . ')';
-}
-
-expr(res) ::= expr(e1) ISIN array(a). {
- res = 'in_array('.e1.','.a.')';
-}
-
-expr(res) ::= expr(e1) ISIN value(v). {
- res = 'in_array('.e1.',(array)'.v.')';
-}
-
-
-//
-// ternary
-//
-ternary(res) ::= OPENP expr(v) CLOSEP QMARK DOLLARID(e1) COLON expr(e2). {
- res = v.' ? '. $this->compiler->compileVariable('\''.substr(e1,1).'\'') . ' : '.e2;
-}
-
-ternary(res) ::= OPENP expr(v) CLOSEP QMARK expr(e1) COLON expr(e2). {
- res = v.' ? '.e1.' : '.e2;
-}
-
- // value
-value(res) ::= variable(v). {
- res = v;
-}
-
- // +/- value
-value(res) ::= UNIMATH(m) value(v). {
- res = m.v;
-}
-
- // logical negation
-value(res) ::= NOT value(v). {
- res = '!'.v;
-}
-
-value(res) ::= TYPECAST(t) value(v). {
- res = t.v;
-}
-
-value(res) ::= variable(v) INCDEC(o). {
- res = v.o;
-}
-
- // numeric
-value(res) ::= HEX(n). {
- res = n;
-}
-
-value(res) ::= INTEGER(n). {
- res = n;
-}
-
-value(res) ::= INTEGER(n1) DOT INTEGER(n2). {
- res = n1.'.'.n2;
-}
-
-value(res) ::= INTEGER(n1) DOT. {
- res = n1.'.';
-}
-
-value(res) ::= DOT INTEGER(n1). {
- res = '.'.n1;
-}
-
- // ID, true, false, null
-value(res) ::= ID(id). {
- if (defined(id)) {
- if ($this->security) {
- $this->security->isTrustedConstant(id, $this->compiler);
- }
- res = id;
- } else {
- res = '\''.id.'\'';
- }
-}
-
- // function call
-value(res) ::= function(f). {
- res = f;
-}
-
- // expression
-value(res) ::= OPENP expr(e) CLOSEP. {
- res = '('. e .')';
-}
-
-value(res) ::= variable(v1) INSTANCEOF(i) ns1(v2). {
- res = v1.i.v2;
-}
-value(res) ::= variable(v1) INSTANCEOF(i) variable(v2). {
- res = v1.i.v2;
-}
-
- // singele quoted string
-value(res) ::= SINGLEQUOTESTRING(t). {
- res = t;
-}
-
- // double quoted string
-value(res) ::= doublequoted_with_quotes(s). {
- res = s;
-}
-
-
-value(res) ::= varindexed(vi) DOUBLECOLON static_class_access(r). {
- if ($this->security && $this->security->static_classes !== array()) {
- $this->compiler->trigger_template_error('dynamic static class not allowed by security setting');
- }
- $prefixVar = $this->compiler->getNewPrefixVariable();
- if (vi['var'] === '\'smarty\'') {
- $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". $this->compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']).';?>');
- } else {
- $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'].';?>');
- }
- res = $prefixVar .'::'.r[0].r[1];
-}
-
- // Smarty tag
-value(res) ::= smartytag(st). {
- $prefixVar = $this->compiler->getNewPrefixVariable();
- $tmp = $this->compiler->appendCode('<?php ob_start();?>', st);
- $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php {$prefixVar} = ob_get_clean();?>"));
- res = $prefixVar;
-}
-
-value(res) ::= value(v) modifierlist(l). {
- res = $this->compiler->compileTag('private_modifier',array(),array('value'=>v,'modifierlist'=>l));
-}
- // name space constant
-value(res) ::= NAMESPACE(c). {
- res = c;
-}
-
- // array
-value(res) ::= arraydef(a). {
- res = a;
-}
- // static class access
-value(res) ::= ns1(c)DOUBLECOLON static_class_access(s). {
- if (!in_array(strtolower(c), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess(c, s, $this->compiler))) {
- if (isset($this->smarty->registered_classes[c])) {
- res = $this->smarty->registered_classes[c].'::'.s[0].s[1];
- } else {
- res = c.'::'.s[0].s[1];
- }
- } else {
- $this->compiler->trigger_template_error ('static class \''.c.'\' is undefined or not allowed by security setting');
- }
-}
-//
-// namespace stuff
-//
-
-ns1(res) ::= ID(i). {
- res = i;
-}
-
-ns1(res) ::= NAMESPACE(i). {
- res = i;
- }
-
-
-
-
-//
-// variables
-//
- // Smarty variable (optional array)
-variable(res) ::= DOLLARID(i). {
- res = $this->compiler->compileVariable('\''.substr(i,1).'\'');
-}
-variable(res) ::= varindexed(vi). {
- if (vi['var'] === '\'smarty\'') {
- $smarty_var = $this->compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']);
- res = $smarty_var;
- } else {
- // used for array reset,next,prev,end,current
- $this->last_variable = vi['var'];
- $this->last_index = vi['smarty_internal_index'];
- res = $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'];
- }
-}
-
- // variable with property
-variable(res) ::= varvar(v) AT ID(p). {
- res = '$_smarty_tpl->tpl_vars['. v .']->'.p;
-}
-
- // object
-variable(res) ::= object(o). {
- res = o;
-}
-
- // config variable
-variable(res) ::= HATCH ID(i) HATCH. {
- res = $this->compiler->compileConfigVariable('\'' . i . '\'');
-}
-
-variable(res) ::= HATCH ID(i) HATCH arrayindex(a). {
- res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . i . '\'') . ') ? $tmp'.a.' :null)';
-}
-
-variable(res) ::= HATCH variable(v) HATCH. {
- res = $this->compiler->compileConfigVariable(v);
-}
-
-variable(res) ::= HATCH variable(v) HATCH arrayindex(a). {
- res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable(v) . ') ? $tmp'.a.' : null)';
-}
-
-varindexed(res) ::= DOLLARID(i) arrayindex(a). {
- res = array('var'=>'\''.substr(i,1).'\'', 'smarty_internal_index'=>a);
-}
-varindexed(res) ::= varvar(v) arrayindex(a). {
- res = array('var'=>v, 'smarty_internal_index'=>a);
-}
-
-//
-// array index
-//
- // multiple array index
-arrayindex(res) ::= arrayindex(a1) indexdef(a2). {
- res = a1.a2;
-}
-
- // no array index
-arrayindex ::= . {
- return;
-}
-
-// single index definition
- // Smarty2 style index
-indexdef(res) ::= DOT DOLLARID(i). {
- res = '['.$this->compiler->compileVariable('\''.substr(i,1).'\'').']';
-}
-indexdef(res) ::= DOT varvar(v). {
- res = '['.$this->compiler->compileVariable(v).']';
-}
-
-indexdef(res) ::= DOT varvar(v) AT ID(p). {
- res = '['.$this->compiler->compileVariable(v).'->'.p.']';
-}
-
-indexdef(res) ::= DOT ID(i). {
- res = '[\''. i .'\']';
-}
-
-indexdef(res) ::= DOT INTEGER(n). {
- res = '['. n .']';
-}
-
-
-indexdef(res) ::= DOT LDEL expr(e) RDEL. {
- res = '['. e .']';
-}
-
- // section tag index
-indexdef(res) ::= OPENB ID(i)CLOSEB. {
- res = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.i.'\'][\'index\']').']';
-}
-
-indexdef(res) ::= OPENB ID(i) DOT ID(i2) CLOSEB. {
- res = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.i.'\'][\''.i2.'\']').']';
-}
-indexdef(res) ::= OPENB SINGLEQUOTESTRING(s) CLOSEB. {
- res = '['.s.']';
-}
-indexdef(res) ::= OPENB INTEGER(n) CLOSEB. {
- res = '['.n.']';
-}
-indexdef(res) ::= OPENB DOLLARID(i) CLOSEB. {
- res = '['.$this->compiler->compileVariable('\''.substr(i,1).'\'').']';
-}
-indexdef(res) ::= OPENB variable(v) CLOSEB. {
- res = '['.v.']';
-}
-indexdef(res) ::= OPENB value(v) CLOSEB. {
- res = '['.v.']';
-}
-
- // PHP style index
-indexdef(res) ::= OPENB expr(e) CLOSEB. {
- res = '['. e .']';
-}
-
- // for assign append array
-indexdef(res) ::= OPENB CLOSEB. {
- res = '[]';
-}
-
-
-//
-// variable variable names
-//
-
- // singel identifier element
-varvar(res) ::= DOLLARID(i). {
- res = '\''.substr(i,1).'\'';
-}
- // single $
-varvar(res) ::= DOLLAR. {
- res = '\'\'';
-}
-
- // sequence of identifier elements
-varvar(res) ::= varvar(v1) varvarele(v2). {
- res = v1.'.'.v2;
-}
-
- // fix sections of element
-varvarele(res) ::= ID(s). {
- res = '\''.s.'\'';
-}
-varvarele(res) ::= SIMPELOUTPUT(i). {
- $var = trim(substr(i, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
- res = $this->compiler->compileVariable('\''.$var.'\'');
-}
-
- // variable sections of element
-varvarele(res) ::= LDEL expr(e) RDEL. {
- res = '('.e.')';
-}
-
-//
-// objects
-//
-object(res) ::= varindexed(vi) objectchain(oc). {
- if (vi['var'] === '\'smarty\'') {
- res = $this->compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']).oc;
- } else {
- res = $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'].oc;
- }
-}
-
- // single element
-objectchain(res) ::= objectelement(oe). {
- res = oe;
-}
-
- // chain of elements
-objectchain(res) ::= objectchain(oc) objectelement(oe). {
- res = oc.oe;
-}
-
- // variable
-objectelement(res)::= PTR ID(i) arrayindex(a). {
- if ($this->security && substr(i,0,1) === '_') {
- $this->compiler->trigger_template_error (self::ERR1);
- }
- res = '->'.i.a;
-}
-
-objectelement(res)::= PTR varvar(v) arrayindex(a). {
- if ($this->security) {
- $this->compiler->trigger_template_error (self::ERR2);
- }
- res = '->{'.$this->compiler->compileVariable(v).a.'}';
-}
-
-objectelement(res)::= PTR LDEL expr(e) RDEL arrayindex(a). {
- if ($this->security) {
- $this->compiler->trigger_template_error (self::ERR2);
- }
- res = '->{'.e.a.'}';
-}
-
-objectelement(res)::= PTR ID(ii) LDEL expr(e) RDEL arrayindex(a). {
- if ($this->security) {
- $this->compiler->trigger_template_error (self::ERR2);
- }
- res = '->{\''.ii.'\'.'.e.a.'}';
-}
-
- // method
-objectelement(res)::= PTR method(f). {
- res = '->'.f;
-}
-
-
-//
-// function
-//
-function(res) ::= ns1(f) OPENP params(p) CLOSEP. {
- res = $this->compiler->compilePHPFunctionCall(f, p);
-}
-
-
-//
-// method
-//
-method(res) ::= ID(f) OPENP params(p) CLOSEP. {
- if ($this->security && substr(f,0,1) === '_') {
- $this->compiler->trigger_template_error (self::ERR1);
- }
- res = f . '('. implode(',',p) .')';
-}
-
-method(res) ::= DOLLARID(f) OPENP params(p) CLOSEP. {
- if ($this->security) {
- $this->compiler->trigger_template_error (self::ERR2);
- }
- $prefixVar = $this->compiler->getNewPrefixVariable();
- $this->compiler->appendPrefixCode("<?php {$prefixVar} = ".$this->compiler->compileVariable('\''.substr(f,1).'\'').';?>');
- res = $prefixVar .'('. implode(',',p) .')';
-}
-
-// function/method parameter
- // multiple parameters
-params(res) ::= params(p) COMMA expr(e). {
- res = array_merge(p,array(e));
-}
-
- // single parameter
-params(res) ::= expr(e). {
- res = array(e);
-}
-
- // kein parameter
-params(res) ::= . {
- res = array();
-}
-
-//
-// modifier
-//
-modifierlist(res) ::= modifierlist(l) modifier(m) modparameters(p). {
- res = array_merge(l,array(array_merge(m,p)));
-}
-
-modifierlist(res) ::= modifier(m) modparameters(p). {
- res = array(array_merge(m,p));
-}
-
-modifier(res) ::= VERT AT ID(m). {
- res = array(m);
-}
-
-modifier(res) ::= VERT ID(m). {
- res = array(m);
-}
-
-//
-// modifier parameter
-//
- // multiple parameter
-modparameters(res) ::= modparameters(mps) modparameter(mp). {
- res = array_merge(mps,mp);
-}
-
- // no parameter
-modparameters(res) ::= . {
- res = array();
-}
-
- // parameter expression
-modparameter(res) ::= COLON value(mp). {
- res = array(mp);
-}
-modparameter(res) ::= COLON UNIMATH(m) value(mp). {
- res = array(trim(m).mp);
-}
-
-modparameter(res) ::= COLON array(mp). {
- res = array(mp);
-}
-
- // static class methode call
-static_class_access(res) ::= method(m). {
- res = array(m, '', 'method');
-}
-
- // static class methode call with object chainig
-static_class_access(res) ::= method(m) objectchain(oc). {
- res = array(m, oc, 'method');
-}
-
- // static class constant
-static_class_access(res) ::= ID(v). {
- res = array(v, '');
-}
-
- // static class variables
-static_class_access(res) ::= DOLLARID(v) arrayindex(a). {
- res = array(v, a, 'property');
-}
-
- // static class variables with object chain
-static_class_access(res) ::= DOLLARID(v) arrayindex(a) objectchain(oc). {
- res = array(v, a.oc, 'property');
-}
-
-
-// if conditions and operators
-lop(res) ::= LOGOP(o). {
- res = ' '. trim(o) . ' ';
-}
-
-lop(res) ::= SLOGOP(o). {
- static $lops = array(
- 'eq' => ' == ',
- 'ne' => ' != ',
- 'neq' => ' != ',
- 'gt' => ' > ',
- 'ge' => ' >= ',
- 'gte' => ' >= ',
- 'lt' => ' < ',
- 'le' => ' <= ',
- 'lte' => ' <= ',
- 'mod' => ' % ',
- 'and' => ' && ',
- 'or' => ' || ',
- 'xor' => ' xor ',
- );
- $op = strtolower(preg_replace('/\s*/', '', o));
- res = $lops[$op];
-}
-tlop(res) ::= TLOGOP(o). {
- static $tlops = array(
- 'isdivby' => array('op' => ' % ', 'pre' => '!('),
- 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
- 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
- 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
- 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
- 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),
- );
- $op = strtolower(preg_replace('/\s*/', '', o));
- res = $tlops[$op];
- }
-
-scond(res) ::= SINGLECOND(o). {
- static $scond = array (
- 'iseven' => '!(1 & ',
- 'isnoteven' => '(1 & ',
- 'isodd' => '(1 & ',
- 'isnotodd' => '!(1 & ',
- );
- $op = strtolower(str_replace(' ', '', o));
- res = $scond[$op];
-}
-
-//
-// ARRAY element assignment
-//
-arraydef(res) ::= OPENB arrayelements(a) CLOSEB. {
- res = 'array('.a.')';
-}
-arraydef(res) ::= ARRAYOPEN arrayelements(a) CLOSEP. {
- res = 'array('.a.')';
-}
-
-arrayelements(res) ::= arrayelement(a). {
- res = a;
-}
-
-arrayelements(res) ::= arrayelements(a1) COMMA arrayelement(a). {
- res = a1.','.a;
-}
-
-arrayelements ::= . {
- return;
-}
-
-arrayelement(res) ::= value(e1) APTR expr(e2). {
- res = e1.'=>'.e2;
-}
-
-arrayelement(res) ::= ID(i) APTR expr(e2). {
- res = '\''.i.'\'=>'.e2;
-}
-
-arrayelement(res) ::= expr(e). {
- res = e;
-}
-
-
-//
-// double quoted strings
-//
-doublequoted_with_quotes(res) ::= QUOTE QUOTE. {
- res = '\'\'';
-}
-
-doublequoted_with_quotes(res) ::= QUOTE doublequoted(s) QUOTE. {
- $this->compiler->leaveDoubleQuote();
- res = s->to_smarty_php($this);
-}
-
-
-doublequoted(res) ::= doublequoted(o1) doublequotedcontent(o2). {
- o1->append_subtree($this, o2);
- res = o1;
-}
-
-doublequoted(res) ::= doublequotedcontent(o). {
- res = new Smarty_Internal_ParseTree_Dq($this, o);
-}
-
-doublequotedcontent(res) ::= BACKTICK variable(v) BACKTICK. {
- res = new Smarty_Internal_ParseTree_Code('(string)'.v);
-}
-
-doublequotedcontent(res) ::= BACKTICK expr(e) BACKTICK. {
- res = new Smarty_Internal_ParseTree_Code('(string)('.e.')');
-}
-
-doublequotedcontent(res) ::= DOLLARID(i). {
- res = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\''. substr(i,1) .'\']->value');
-}
-
-doublequotedcontent(res) ::= LDEL variable(v) RDEL. {
- res = new Smarty_Internal_ParseTree_Code('(string)'.v);
-}
-
-doublequotedcontent(res) ::= LDEL expr(e) RDEL. {
- res = new Smarty_Internal_ParseTree_Code('(string)('.e.')');
-}
-
-doublequotedcontent(res) ::= smartytag(st). {
- res = new Smarty_Internal_ParseTree_Tag($this, st);
-}
-
-doublequotedcontent(res) ::= TEXT(o). {
- res = new Smarty_Internal_ParseTree_DqContent(o);
-}
-
diff --git a/vendor/smarty/smarty/libs/Autoloader.php b/vendor/smarty/smarty/libs/Autoloader.php
deleted file mode 100644
index da7e32abf..000000000
--- a/vendor/smarty/smarty/libs/Autoloader.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/**
- * Smarty Autoloader
- *
- * @package Smarty
- */
-
-
-if (!defined('SMARTY_HELPER_FUNCTIONS_LOADED')) {
- include __DIR__ . '/functions.php';
-}
-
-/**
- * Smarty Autoloader
- *
- * @package Smarty
- * @author Uwe Tews
- * Usage:
- * require_once '...path/Autoloader.php';
- * Smarty_Autoloader::register();
- * or
- * include '...path/bootstrap.php';
- *
- * $smarty = new Smarty();
- */
-class Smarty_Autoloader
-{
- /**
- * Filepath to Smarty root
- *
- * @var string
- */
- public static $SMARTY_DIR = null;
-
- /**
- * Filepath to Smarty internal plugins
- *
- * @var string
- */
- public static $SMARTY_SYSPLUGINS_DIR = null;
-
- /**
- * Array with Smarty core classes and their filename
- *
- * @var array
- */
- public static $rootClasses = array('smarty' => 'Smarty.class.php');
-
- /**
- * Registers Smarty_Autoloader backward compatible to older installations.
- *
- * @param bool $prepend Whether to prepend the autoloader or not.
- */
- public static function registerBC($prepend = false)
- {
- /**
- * register the class autoloader
- */
- if (!defined('SMARTY_SPL_AUTOLOAD')) {
- define('SMARTY_SPL_AUTOLOAD', 0);
- }
- if (SMARTY_SPL_AUTOLOAD
- && set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false
- ) {
- $registeredAutoLoadFunctions = spl_autoload_functions();
- if (!isset($registeredAutoLoadFunctions[ 'spl_autoload' ])) {
- spl_autoload_register();
- }
- } else {
- self::register($prepend);
- }
- }
-
- /**
- * Registers Smarty_Autoloader as an SPL autoloader.
- *
- * @param bool $prepend Whether to prepend the autoloader or not.
- */
- public static function register($prepend = false)
- {
- self::$SMARTY_DIR = defined('SMARTY_DIR') ? SMARTY_DIR : __DIR__ . DIRECTORY_SEPARATOR;
- self::$SMARTY_SYSPLUGINS_DIR = defined('SMARTY_SYSPLUGINS_DIR') ? SMARTY_SYSPLUGINS_DIR :
- self::$SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR;
- spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
- }
-
- /**
- * Handles auto loading of classes.
- *
- * @param string $class A class name.
- */
- public static function autoload($class)
- {
- if ($class[ 0 ] !== 'S' || strpos($class, 'Smarty') !== 0) {
- return;
- }
- $_class = smarty_strtolower_ascii($class);
- if (isset(self::$rootClasses[ $_class ])) {
- $file = self::$SMARTY_DIR . self::$rootClasses[ $_class ];
- if (is_file($file)) {
- include $file;
- }
- } else {
- $file = self::$SMARTY_SYSPLUGINS_DIR . $_class . '.php';
- if (is_file($file)) {
- include $file;
- }
- }
- return;
- }
-}
diff --git a/vendor/smarty/smarty/libs/Smarty.class.php b/vendor/smarty/smarty/libs/Smarty.class.php
index 0a47c8350..459fe2cfb 100644
--- a/vendor/smarty/smarty/libs/Smarty.class.php
+++ b/vendor/smarty/smarty/libs/Smarty.class.php
@@ -1,1405 +1,42 @@
<?php
-/**
- * Project: Smarty: the PHP compiling template engine
- * File: Smarty.class.php
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3.0 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- * For questions, help, comments, discussion, etc., please join the
- * Smarty mailing list. Send a blank e-mail to
- * smarty-discussion-subscribe@googlegroups.com
- *
- * @link https://www.smarty.net/
- * @copyright 2018 New Digital Group, Inc.
- * @copyright 2018 Uwe Tews
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews <uwe dot tews at gmail dot com>
- * @author Rodney Rehm
- * @package Smarty
- */
-/**
- * set SMARTY_DIR to absolute path to Smarty library files.
- * Sets SMARTY_DIR only if user application has not already defined it.
- */
-if (!defined('SMARTY_DIR')) {
- /**
- *
- */
- define('SMARTY_DIR', __DIR__ . DIRECTORY_SEPARATOR);
-}
-/**
- * set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins.
- * Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it.
- */
-if (!defined('SMARTY_SYSPLUGINS_DIR')) {
- /**
- *
- */
- define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR);
-}
-if (!defined('SMARTY_PLUGINS_DIR')) {
- /**
- *
- */
- define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DIRECTORY_SEPARATOR);
-}
-if (!defined('SMARTY_MBSTRING')) {
- /**
- *
- */
- define('SMARTY_MBSTRING', function_exists('mb_get_info'));
-}
-/**
- * Load helper functions
- */
-if (!defined('SMARTY_HELPER_FUNCTIONS_LOADED')) {
- include __DIR__ . '/functions.php';
-}
-
-/**
- * Load Smarty_Autoloader
- */
-if (!class_exists('Smarty_Autoloader')) {
- include __DIR__ . '/bootstrap.php';
-}
-
-/**
- * Load always needed external class files
- */
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_data.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_extension_handler.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_templatebase.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_template.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_resource.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_variable.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_source.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_resource_base.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_resource_file.php';
-
-/**
- * This is the main Smarty class
- *
- * @package Smarty
- *
- * The following methods will be dynamically loaded by the extension handler when they are called.
- * They are located in a corresponding Smarty_Internal_Method_xxxx class
- *
- * @method int clearAllCache(int $exp_time = null, string $type = null)
- * @method int clearCache(string $template_name, string $cache_id = null, string $compile_id = null, int $exp_time = null, string $type = null)
- * @method int compileAllTemplates(string $extension = '.tpl', bool $force_compile = false, int $time_limit = 0, $max_errors = null)
- * @method int compileAllConfig(string $extension = '.conf', bool $force_compile = false, int $time_limit = 0, $max_errors = null)
- * @method int clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null)
- */
-class Smarty extends Smarty_Internal_TemplateBase
-{
- /**
- * smarty version
- */
- const SMARTY_VERSION = '4.4.1';
- /**
- * define variable scopes
- */
- const SCOPE_LOCAL = 1;
- const SCOPE_PARENT = 2;
- const SCOPE_TPL_ROOT = 4;
- const SCOPE_ROOT = 8;
- const SCOPE_SMARTY = 16;
- const SCOPE_GLOBAL = 32;
- /**
- * define caching modes
- */
- const CACHING_OFF = 0;
- const CACHING_LIFETIME_CURRENT = 1;
- const CACHING_LIFETIME_SAVED = 2;
- /**
- * define constant for clearing cache files be saved expiration dates
- */
- const CLEAR_EXPIRED = -1;
- /**
- * define compile check modes
- */
- const COMPILECHECK_OFF = 0;
- const COMPILECHECK_ON = 1;
- const COMPILECHECK_CACHEMISS = 2;
- /**
- * define debug modes
- */
- const DEBUG_OFF = 0;
- const DEBUG_ON = 1;
- const DEBUG_INDIVIDUAL = 2;
-
- /**
- * filter types
- */
- const FILTER_POST = 'post';
- const FILTER_PRE = 'pre';
- const FILTER_OUTPUT = 'output';
- const FILTER_VARIABLE = 'variable';
- /**
- * plugin types
- */
- const PLUGIN_FUNCTION = 'function';
- const PLUGIN_BLOCK = 'block';
- const PLUGIN_COMPILER = 'compiler';
- const PLUGIN_MODIFIER = 'modifier';
- const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler';
-
- /**
- * assigned global tpl vars
- */
- public static $global_tpl_vars = array();
-
- /**
- * Flag denoting if Multibyte String functions are available
- */
- public static $_MBSTRING = SMARTY_MBSTRING;
-
- /**
- * The character set to adhere to (e.g. "UTF-8")
- */
- public static $_CHARSET = SMARTY_MBSTRING ? 'UTF-8' : 'ISO-8859-1';
-
- /**
- * The date format to be used internally
- * (accepts date() and strftime())
- */
- public static $_DATE_FORMAT = '%b %e, %Y';
-
- /**
- * Flag denoting if PCRE should run in UTF-8 mode
- */
- public static $_UTF8_MODIFIER = 'u';
-
- /**
- * Flag denoting if operating system is windows
- */
- public static $_IS_WINDOWS = false;
-
- /**
- * auto literal on delimiters with whitespace
- *
- * @var boolean
- */
- public $auto_literal = true;
-
- /**
- * display error on not assigned variables
- *
- * @var boolean
- */
- public $error_unassigned = false;
-
- /**
- * look up relative file path in include_path
- *
- * @var boolean
- */
- public $use_include_path = false;
-
- /**
- * flag if template_dir is normalized
- *
- * @var bool
- */
- public $_templateDirNormalized = false;
-
- /**
- * joined template directory string used in cache keys
- *
- * @var string
- */
- public $_joined_template_dir = null;
-
- /**
- * flag if config_dir is normalized
- *
- * @var bool
- */
- public $_configDirNormalized = false;
-
- /**
- * joined config directory string used in cache keys
- *
- * @var string
- */
- public $_joined_config_dir = null;
-
- /**
- * default template handler
- *
- * @var callable
- */
- public $default_template_handler_func = null;
-
- /**
- * default config handler
- *
- * @var callable
- */
- public $default_config_handler_func = null;
-
- /**
- * default plugin handler
- *
- * @var callable
- */
- public $default_plugin_handler_func = null;
-
- /**
- * flag if template_dir is normalized
- *
- * @var bool
- */
- public $_compileDirNormalized = false;
-
- /**
- * flag if plugins_dir is normalized
- *
- * @var bool
- */
- public $_pluginsDirNormalized = false;
-
- /**
- * flag if template_dir is normalized
- *
- * @var bool
- */
- public $_cacheDirNormalized = false;
-
- /**
- * force template compiling?
- *
- * @var boolean
- */
- public $force_compile = false;
-
- /**
- * use sub dirs for compiled/cached files?
- *
- * @var boolean
- */
- public $use_sub_dirs = false;
-
- /**
- * allow ambiguous resources (that are made unique by the resource handler)
- *
- * @var boolean
- */
- public $allow_ambiguous_resources = false;
-
- /**
- * merge compiled includes
- *
- * @var boolean
- */
- public $merge_compiled_includes = false;
-
- /*
- * flag for behaviour when extends: resource and {extends} tag are used simultaneous
- * if false disable execution of {extends} in templates called by extends resource.
- * (behaviour as versions < 3.1.28)
- *
- * @var boolean
- */
- public $extends_recursion = true;
-
- /**
- * force cache file creation
- *
- * @var boolean
- */
- public $force_cache = false;
-
- /**
- * template left-delimiter
- *
- * @var string
- */
- public $left_delimiter = "{";
-
- /**
- * template right-delimiter
- *
- * @var string
- */
- public $right_delimiter = "}";
-
- /**
- * array of strings which shall be treated as literal by compiler
- *
- * @var array string
- */
- public $literals = array();
-
- /**
- * class name
- * This should be instance of Smarty_Security.
- *
- * @var string
- * @see Smarty_Security
- */
- public $security_class = 'Smarty_Security';
-
- /**
- * implementation of security class
- *
- * @var Smarty_Security
- */
- public $security_policy = null;
-
- /**
- * controls if the php template file resource is allowed
- *
- * @var bool
- */
- public $allow_php_templates = false;
-
- /**
- * debug mode
- * Setting this to true enables the debug-console.
- *
- * @var boolean
- */
- public $debugging = false;
-
- /**
- * This determines if debugging is enable-able from the browser.
- * <ul>
- * <li>NONE => no debugging control allowed</li>
- * <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li>
- * </ul>
- *
- * @var string
- */
- public $debugging_ctrl = 'NONE';
-
- /**
- * Name of debugging URL-param.
- * Only used when $debugging_ctrl is set to 'URL'.
- * The name of the URL-parameter that activates debugging.
- *
- * @var string
- */
- public $smarty_debug_id = 'SMARTY_DEBUG';
-
- /**
- * Path of debug template.
- *
- * @var string
- */
- public $debug_tpl = null;
-
- /**
- * When set, smarty uses this value as error_reporting-level.
- *
- * @var int
- */
- public $error_reporting = null;
-
- /**
- * Controls whether variables with the same name overwrite each other.
- *
- * @var boolean
- */
- public $config_overwrite = true;
-
- /**
- * Controls whether config values of on/true/yes and off/false/no get converted to boolean.
- *
- * @var boolean
- */
- public $config_booleanize = true;
-
- /**
- * Controls whether hidden config sections/vars are read from the file.
- *
- * @var boolean
- */
- public $config_read_hidden = false;
-
- /**
- * locking concurrent compiles
- *
- * @var boolean
- */
- public $compile_locking = true;
-
- /**
- * Controls whether cache resources should use locking mechanism
- *
- * @var boolean
- */
- public $cache_locking = false;
-
- /**
- * seconds to wait for acquiring a lock before ignoring the write lock
- *
- * @var float
- */
- public $locking_timeout = 10;
-
- /**
- * resource type used if none given
- * Must be an valid key of $registered_resources.
- *
- * @var string
- */
- public $default_resource_type = 'file';
-
- /**
- * caching type
- * Must be an element of $cache_resource_types.
- *
- * @var string
- */
- public $caching_type = 'file';
-
- /**
- * config type
- *
- * @var string
- */
- public $default_config_type = 'file';
-
- /**
- * check If-Modified-Since headers
- *
- * @var boolean
- */
- public $cache_modified_check = false;
-
- /**
- * registered plugins
- *
- * @var array
- */
- public $registered_plugins = array();
-
- /**
- * registered objects
- *
- * @var array
- */
- public $registered_objects = array();
-
- /**
- * registered classes
- *
- * @var array
- */
- public $registered_classes = array();
-
- /**
- * registered filters
- *
- * @var array
- */
- public $registered_filters = array();
-
- /**
- * registered resources
- *
- * @var array
- */
- public $registered_resources = array();
-
- /**
- * registered cache resources
- *
- * @var array
- */
- public $registered_cache_resources = array();
-
- /**
- * autoload filter
- *
- * @var array
- */
- public $autoload_filters = array();
-
- /**
- * default modifier
- *
- * @var array
- */
- public $default_modifiers = array();
-
- /**
- * autoescape variable output
- *
- * @var boolean
- */
- public $escape_html = false;
-
- /**
- * start time for execution time calculation
- *
- * @var int
- */
- public $start_time = 0;
-
- /**
- * required by the compiler for BC
- *
- * @var string
- */
- public $_current_file = null;
-
- /**
- * internal flag to enable parser debugging
- *
- * @var bool
- */
- public $_parserdebug = false;
-
- /**
- * This object type (Smarty = 1, template = 2, data = 4)
- *
- * @var int
- */
- public $_objType = 1;
-
- /**
- * Debug object
- *
- * @var Smarty_Internal_Debug
- */
- public $_debug = null;
-
- /**
- * template directory
- *
- * @var array
- */
- protected $template_dir = array('./templates/');
-
- /**
- * flags for normalized template directory entries
- *
- * @var array
- */
- protected $_processedTemplateDir = array();
-
- /**
- * config directory
- *
- * @var array
- */
- protected $config_dir = array('./configs/');
-
- /**
- * flags for normalized template directory entries
- *
- * @var array
- */
- protected $_processedConfigDir = array();
-
- /**
- * compile directory
- *
- * @var string
- */
- protected $compile_dir = './templates_c/';
-
- /**
- * plugins directory
- *
- * @var array
- */
- protected $plugins_dir = array();
-
- /**
- * cache directory
- *
- * @var string
- */
- protected $cache_dir = './cache/';
-
- /**
- * removed properties
- *
- * @var string[]
- */
- protected $obsoleteProperties = array(
- 'resource_caching', 'template_resource_caching', 'direct_access_security',
- '_dir_perms', '_file_perms', 'plugin_search_order',
- 'inheritance_merge_compiled_includes', 'resource_cache_mode',
- );
-
- /**
- * List of private properties which will call getter/setter on a direct access
- *
- * @var string[]
- */
- protected $accessMap = array(
- 'template_dir' => 'TemplateDir', 'config_dir' => 'ConfigDir',
- 'plugins_dir' => 'PluginsDir', 'compile_dir' => 'CompileDir',
- 'cache_dir' => 'CacheDir',
- );
-
- /**
- * PHP7 Compatibility mode
- * @var bool
- */
- private $isMutingUndefinedOrNullWarnings = false;
-
- /**
- * Initialize new Smarty object
- */
- public function __construct()
- {
- $this->_clearTemplateCache();
- parent::__construct();
- if (is_callable('mb_internal_encoding')) {
- mb_internal_encoding(Smarty::$_CHARSET);
- }
- $this->start_time = microtime(true);
- if (isset($_SERVER[ 'SCRIPT_NAME' ])) {
- Smarty::$global_tpl_vars[ 'SCRIPT_NAME' ] = new Smarty_Variable($_SERVER[ 'SCRIPT_NAME' ]);
- }
- // Check if we're running on windows
- Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
- // let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8
- if (Smarty::$_CHARSET !== 'UTF-8') {
- Smarty::$_UTF8_MODIFIER = '';
- }
- }
-
- /**
- * Check if a template resource exists
- *
- * @param string $resource_name template name
- *
- * @return bool status
- * @throws \SmartyException
- */
- public function templateExists($resource_name)
- {
- // create source object
- $source = Smarty_Template_Source::load(null, $this, $resource_name);
- return $source->exists;
- }
-
- /**
- * Loads security class and enables security
- *
- * @param string|Smarty_Security $security_class if a string is used, it must be class-name
- *
- * @return Smarty current Smarty instance for chaining
- * @throws \SmartyException
- */
- public function enableSecurity($security_class = null)
- {
- Smarty_Security::enableSecurity($this, $security_class);
- return $this;
- }
-
- /**
- * Disable security
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function disableSecurity()
- {
- $this->security_policy = null;
- return $this;
- }
-
- /**
- * Add template directory(s)
- *
- * @param string|array $template_dir directory(s) of template sources
- * @param string $key of the array element to assign the template dir to
- * @param bool $isConfig true for config_dir
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function addTemplateDir($template_dir, $key = null, $isConfig = false)
- {
- if ($isConfig) {
- $processed = &$this->_processedConfigDir;
- $dir = &$this->config_dir;
- $this->_configDirNormalized = false;
- } else {
- $processed = &$this->_processedTemplateDir;
- $dir = &$this->template_dir;
- $this->_templateDirNormalized = false;
- }
- if (is_array($template_dir)) {
- foreach ($template_dir as $k => $v) {
- if (is_int($k)) {
- // indexes are not merged but appended
- $dir[] = $v;
- } else {
- // string indexes are overridden
- $dir[ $k ] = $v;
- unset($processed[ $key ]);
- }
- }
- } else {
- if ($key !== null) {
- // override directory at specified index
- $dir[ $key ] = $template_dir;
- unset($processed[ $key ]);
- } else {
- // append new directory
- $dir[] = $template_dir;
- }
- }
- return $this;
- }
-
- /**
- * Get template directories
- *
- * @param mixed $index index of directory to get, null to get all
- * @param bool $isConfig true for config_dir
- *
- * @return array|string list of template directories, or directory of $index
- */
- public function getTemplateDir($index = null, $isConfig = false)
- {
- if ($isConfig) {
- $dir = &$this->config_dir;
- } else {
- $dir = &$this->template_dir;
- }
- if ($isConfig ? !$this->_configDirNormalized : !$this->_templateDirNormalized) {
- $this->_normalizeTemplateConfig($isConfig);
- }
- if ($index !== null) {
- return isset($dir[ $index ]) ? $dir[ $index ] : null;
- }
- return $dir;
- }
-
- /**
- * Set template directory
- *
- * @param string|array $template_dir directory(s) of template sources
- * @param bool $isConfig true for config_dir
- *
- * @return \Smarty current Smarty instance for chaining
- */
- public function setTemplateDir($template_dir, $isConfig = false)
- {
- if ($isConfig) {
- $this->config_dir = array();
- $this->_processedConfigDir = array();
- } else {
- $this->template_dir = array();
- $this->_processedTemplateDir = array();
- }
- $this->addTemplateDir($template_dir, null, $isConfig);
- return $this;
- }
-
- /**
- * Add config directory(s)
- *
- * @param string|array $config_dir directory(s) of config sources
- * @param mixed $key key of the array element to assign the config dir to
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function addConfigDir($config_dir, $key = null)
- {
- return $this->addTemplateDir($config_dir, $key, true);
- }
-
- /**
- * Get config directory
- *
- * @param mixed $index index of directory to get, null to get all
- *
- * @return array configuration directory
- */
- public function getConfigDir($index = null)
- {
- return $this->getTemplateDir($index, true);
- }
-
- /**
- * Set config directory
- *
- * @param $config_dir
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function setConfigDir($config_dir)
- {
- return $this->setTemplateDir($config_dir, true);
- }
-
- /**
- * Adds directory of plugin files
- *
- * @param null|array|string $plugins_dir
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function addPluginsDir($plugins_dir)
- {
- if (empty($this->plugins_dir)) {
- $this->plugins_dir[] = SMARTY_PLUGINS_DIR;
- }
- $this->plugins_dir = array_merge($this->plugins_dir, (array)$plugins_dir);
- $this->_pluginsDirNormalized = false;
- return $this;
- }
-
- /**
- * Get plugin directories
- *
- * @return array list of plugin directories
- */
- public function getPluginsDir()
- {
- if (empty($this->plugins_dir)) {
- $this->plugins_dir[] = SMARTY_PLUGINS_DIR;
- $this->_pluginsDirNormalized = false;
- }
- if (!$this->_pluginsDirNormalized) {
- if (!is_array($this->plugins_dir)) {
- $this->plugins_dir = (array)$this->plugins_dir;
- }
- foreach ($this->plugins_dir as $k => $v) {
- $this->plugins_dir[ $k ] = $this->_realpath(rtrim($v ?? '', '/\\') . DIRECTORY_SEPARATOR, true);
- }
- $this->_cache[ 'plugin_files' ] = array();
- $this->_pluginsDirNormalized = true;
- }
- return $this->plugins_dir;
- }
-
- /**
- * Set plugins directory
- *
- * @param string|array $plugins_dir directory(s) of plugins
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function setPluginsDir($plugins_dir)
- {
- $this->plugins_dir = (array)$plugins_dir;
- $this->_pluginsDirNormalized = false;
- return $this;
- }
-
- /**
- * Get compiled directory
- *
- * @return string path to compiled templates
- */
- public function getCompileDir()
- {
- if (!$this->_compileDirNormalized) {
- $this->_normalizeDir('compile_dir', $this->compile_dir);
- $this->_compileDirNormalized = true;
- }
- return $this->compile_dir;
- }
-
- /**
- *
- * @param string $compile_dir directory to store compiled templates in
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function setCompileDir($compile_dir)
- {
- $this->_normalizeDir('compile_dir', $compile_dir);
- $this->_compileDirNormalized = true;
- return $this;
- }
-
- /**
- * Get cache directory
- *
- * @return string path of cache directory
- */
- public function getCacheDir()
- {
- if (!$this->_cacheDirNormalized) {
- $this->_normalizeDir('cache_dir', $this->cache_dir);
- $this->_cacheDirNormalized = true;
- }
- return $this->cache_dir;
- }
-
- /**
- * Set cache directory
- *
- * @param string $cache_dir directory to store cached templates in
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function setCacheDir($cache_dir)
- {
- $this->_normalizeDir('cache_dir', $cache_dir);
- $this->_cacheDirNormalized = true;
- return $this;
- }
-
- /**
- * creates a template object
- *
- * @param string $template the resource handle of the template file
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- * @param boolean $do_clone flag is Smarty object shall be cloned
- *
- * @return \Smarty_Internal_Template template object
- * @throws \SmartyException
- */
- public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true)
- {
- if ($cache_id !== null && (is_object($cache_id) || is_array($cache_id))) {
- $parent = $cache_id;
- $cache_id = null;
- }
- if ($parent !== null && is_array($parent)) {
- $data = $parent;
- $parent = null;
- } else {
- $data = null;
- }
- if (!$this->_templateDirNormalized) {
- $this->_normalizeTemplateConfig(false);
- }
- $_templateId = $this->_getTemplateId($template, $cache_id, $compile_id);
- $tpl = null;
- if ($this->caching && isset(Smarty_Internal_Template::$isCacheTplObj[ $_templateId ])) {
- $tpl = $do_clone ? clone Smarty_Internal_Template::$isCacheTplObj[ $_templateId ] :
- Smarty_Internal_Template::$isCacheTplObj[ $_templateId ];
- $tpl->inheritance = null;
- $tpl->tpl_vars = $tpl->config_vars = array();
- } elseif (!$do_clone && isset(Smarty_Internal_Template::$tplObjCache[ $_templateId ])) {
- $tpl = clone Smarty_Internal_Template::$tplObjCache[ $_templateId ];
- $tpl->inheritance = null;
- $tpl->tpl_vars = $tpl->config_vars = array();
- } else {
- /* @var Smarty_Internal_Template $tpl */
- $tpl = new $this->template_class($template, $this, null, $cache_id, $compile_id, null, null);
- $tpl->templateId = $_templateId;
- }
- if ($do_clone) {
- $tpl->smarty = clone $tpl->smarty;
- }
- $tpl->parent = $parent ? $parent : $this;
- // fill data if present
- if (!empty($data) && is_array($data)) {
- // set up variable values
- foreach ($data as $_key => $_val) {
- $tpl->tpl_vars[ $_key ] = new Smarty_Variable($_val);
- }
- }
- if ($this->debugging || $this->debugging_ctrl === 'URL') {
- $tpl->smarty->_debug = new Smarty_Internal_Debug();
- // check URL debugging control
- if (!$this->debugging && $this->debugging_ctrl === 'URL') {
- $tpl->smarty->_debug->debugUrl($tpl->smarty);
- }
- }
- return $tpl;
- }
-
- /**
- * Takes unknown classes and loads plugin files for them
- * class name format: Smarty_PluginType_PluginName
- * plugin filename format: plugintype.pluginname.php
- *
- * @param string $plugin_name class plugin name to load
- * @param bool $check check if already loaded
- *
- * @return string |boolean filepath of loaded file or false
- * @throws \SmartyException
- */
- public function loadPlugin($plugin_name, $check = true)
- {
- return $this->ext->loadPlugin->loadPlugin($this, $plugin_name, $check);
- }
-
- /**
- * Get unique template id
- *
- * @param string $template_name
- * @param null|mixed $cache_id
- * @param null|mixed $compile_id
- * @param null $caching
- * @param \Smarty_Internal_Template $template
- *
- * @return string
- * @throws \SmartyException
- */
- public function _getTemplateId(
- $template_name,
- $cache_id = null,
- $compile_id = null,
- $caching = null,
- Smarty_Internal_Template $template = null
- ) {
- $template_name = (strpos($template_name, ':') === false) ? "{$this->default_resource_type}:{$template_name}" :
- $template_name;
- $cache_id = $cache_id === null ? $this->cache_id : $cache_id;
- $compile_id = $compile_id === null ? $this->compile_id : $compile_id;
- $caching = (int)($caching === null ? $this->caching : $caching);
- if ((isset($template) && strpos($template_name, ':.') !== false) || $this->allow_ambiguous_resources) {
- $_templateId =
- Smarty_Resource::getUniqueTemplateName((isset($template) ? $template : $this), $template_name) .
- "#{$cache_id}#{$compile_id}#{$caching}";
- } else {
- $_templateId = $this->_joined_template_dir . "#{$template_name}#{$cache_id}#{$compile_id}#{$caching}";
- }
- if (isset($_templateId[ 150 ])) {
- $_templateId = sha1($_templateId);
- }
- return $_templateId;
- }
-
- /**
- * Normalize path
- * - remove /./ and /../
- * - make it absolute if required
- *
- * @param string $path file path
- * @param bool $realpath if true - convert to absolute
- * false - convert to relative
- * null - keep as it is but
- * remove /./ /../
- *
- * @return string
- */
- public function _realpath($path, $realpath = null)
- {
- $nds = array('/' => '\\', '\\' => '/');
- preg_match(
- '%^(?<root>(?:[[:alpha:]]:[\\\\/]|/|[\\\\]{2}[[:alpha:]]+|[[:print:]]{2,}:[/]{2}|[\\\\])?)(?<path>(.*))$%u',
- $path,
- $parts
- );
- $path = $parts[ 'path' ];
- if ($parts[ 'root' ] === '\\') {
- $parts[ 'root' ] = substr(getcwd(), 0, 2) . $parts[ 'root' ];
- } else {
- if ($realpath !== null && !$parts[ 'root' ]) {
- $path = getcwd() . DIRECTORY_SEPARATOR . $path;
- }
- }
- // normalize DIRECTORY_SEPARATOR
- $path = str_replace($nds[ DIRECTORY_SEPARATOR ], DIRECTORY_SEPARATOR, $path);
- $parts[ 'root' ] = str_replace($nds[ DIRECTORY_SEPARATOR ], DIRECTORY_SEPARATOR, $parts[ 'root' ]);
- do {
- $path = preg_replace(
- array('#[\\\\/]{2}#', '#[\\\\/][.][\\\\/]#', '#[\\\\/]([^\\\\/.]+)[\\\\/][.][.][\\\\/]#'),
- DIRECTORY_SEPARATOR,
- $path,
- -1,
- $count
- );
- } while ($count > 0);
- return $realpath !== false ? $parts[ 'root' ] . $path : str_ireplace(getcwd(), '.', $parts[ 'root' ] . $path);
- }
-
- /**
- * Empty template objects cache
- */
- public function _clearTemplateCache()
- {
- Smarty_Internal_Template::$isCacheTplObj = array();
- Smarty_Internal_Template::$tplObjCache = array();
- }
-
- /**
- * @param boolean $use_sub_dirs
- */
- public function setUseSubDirs($use_sub_dirs)
- {
- $this->use_sub_dirs = $use_sub_dirs;
- }
-
- /**
- * @param int $error_reporting
- */
- public function setErrorReporting($error_reporting)
- {
- $this->error_reporting = $error_reporting;
- }
-
- /**
- * @param boolean $escape_html
- */
- public function setEscapeHtml($escape_html)
- {
- $this->escape_html = $escape_html;
- }
-
- /**
- * Return auto_literal flag
- *
- * @return boolean
- */
- public function getAutoLiteral()
- {
- return $this->auto_literal;
- }
-
- /**
- * Set auto_literal flag
- *
- * @param boolean $auto_literal
- */
- public function setAutoLiteral($auto_literal = true)
- {
- $this->auto_literal = $auto_literal;
- }
-
- /**
- * @param boolean $force_compile
- */
- public function setForceCompile($force_compile)
- {
- $this->force_compile = $force_compile;
- }
-
- /**
- * @param boolean $merge_compiled_includes
- */
- public function setMergeCompiledIncludes($merge_compiled_includes)
- {
- $this->merge_compiled_includes = $merge_compiled_includes;
- }
-
- /**
- * Get left delimiter
- *
- * @return string
- */
- public function getLeftDelimiter()
- {
- return $this->left_delimiter;
- }
-
- /**
- * Set left delimiter
- *
- * @param string $left_delimiter
- */
- public function setLeftDelimiter($left_delimiter)
- {
- $this->left_delimiter = $left_delimiter;
- }
-
- /**
- * Get right delimiter
- *
- * @return string $right_delimiter
- */
- public function getRightDelimiter()
- {
- return $this->right_delimiter;
- }
-
- /**
- * Set right delimiter
- *
- * @param string
- */
- public function setRightDelimiter($right_delimiter)
- {
- $this->right_delimiter = $right_delimiter;
- }
-
- /**
- * @param boolean $debugging
- */
- public function setDebugging($debugging)
- {
- $this->debugging = $debugging;
- }
-
- /**
- * @param boolean $config_overwrite
- */
- public function setConfigOverwrite($config_overwrite)
- {
- $this->config_overwrite = $config_overwrite;
- }
-
- /**
- * @param boolean $config_booleanize
- */
- public function setConfigBooleanize($config_booleanize)
- {
- $this->config_booleanize = $config_booleanize;
- }
-
- /**
- * @param boolean $config_read_hidden
- */
- public function setConfigReadHidden($config_read_hidden)
- {
- $this->config_read_hidden = $config_read_hidden;
- }
-
- /**
- * @param boolean $compile_locking
- */
- public function setCompileLocking($compile_locking)
- {
- $this->compile_locking = $compile_locking;
- }
-
- /**
- * @param string $default_resource_type
- */
- public function setDefaultResourceType($default_resource_type)
- {
- $this->default_resource_type = $default_resource_type;
- }
-
- /**
- * @param string $caching_type
- */
- public function setCachingType($caching_type)
- {
- $this->caching_type = $caching_type;
- }
-
- /**
- * Test install
- *
- * @param null $errors
- */
- public function testInstall(&$errors = null)
- {
- Smarty_Internal_TestInstall::testInstall($this, $errors);
- }
-
- /**
- * Get Smarty object
- *
- * @return Smarty
- */
- public function _getSmartyObj()
- {
- return $this;
- }
-
- /**
- * <<magic>> Generic getter.
- * Calls the appropriate getter function.
- * Issues an E_USER_NOTICE if no valid getter is found.
- *
- * @param string $name property name
- *
- * @return mixed
- */
- public function __get($name)
- {
- if (isset($this->accessMap[ $name ])) {
- $method = 'get' . $this->accessMap[ $name ];
- return $this->{$method}();
- } elseif (isset($this->_cache[ $name ])) {
- return $this->_cache[ $name ];
- } elseif (in_array($name, $this->obsoleteProperties)) {
- return null;
- } else {
- trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
- }
- return null;
- }
-
- /**
- * <<magic>> Generic setter.
- * Calls the appropriate setter function.
- * Issues an E_USER_NOTICE if no valid setter is found.
- *
- * @param string $name property name
- * @param mixed $value parameter passed to setter
- *
- */
- public function __set($name, $value)
- {
- if (isset($this->accessMap[ $name ])) {
- $method = 'set' . $this->accessMap[ $name ];
- $this->{$method}($value);
- } elseif (in_array($name, $this->obsoleteProperties)) {
- return;
- } elseif (is_object($value) && method_exists($value, $name)) {
- $this->$name = $value;
- } else {
- trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
- }
- }
-
- /**
- * Normalize and set directory string
- *
- * @param string $dirName cache_dir or compile_dir
- * @param string $dir filepath of folder
- */
- private function _normalizeDir($dirName, $dir)
- {
- $this->{$dirName} = $this->_realpath(rtrim($dir ?? '', "/\\") . DIRECTORY_SEPARATOR, true);
- }
-
- /**
- * Normalize template_dir or config_dir
- *
- * @param bool $isConfig true for config_dir
- */
- private function _normalizeTemplateConfig($isConfig)
- {
- if ($isConfig) {
- $processed = &$this->_processedConfigDir;
- $dir = &$this->config_dir;
- } else {
- $processed = &$this->_processedTemplateDir;
- $dir = &$this->template_dir;
- }
- if (!is_array($dir)) {
- $dir = (array)$dir;
- }
- foreach ($dir as $k => $v) {
- if (!isset($processed[ $k ])) {
- $dir[ $k ] = $v = $this->_realpath(rtrim($v ?? '', "/\\") . DIRECTORY_SEPARATOR, true);
- $processed[ $k ] = true;
- }
- }
- $isConfig ? $this->_configDirNormalized = true : $this->_templateDirNormalized = true;
- $isConfig ? $this->_joined_config_dir = join('#', $this->config_dir) :
- $this->_joined_template_dir = join('#', $this->template_dir);
- }
-
- /**
- * Mutes errors for "undefined index", "undefined array key" and "trying to read property of null".
- *
- * @void
- */
- public function muteUndefinedOrNullWarnings(): void {
- $this->isMutingUndefinedOrNullWarnings = true;
- }
-
- /**
- * Indicates if Smarty will mute errors for "undefined index", "undefined array key" and "trying to read property of null".
- * @bool
- */
- public function isMutingUndefinedOrNullWarnings(): bool {
- return $this->isMutingUndefinedOrNullWarnings;
- }
-
-}
+/////////////////////////////////////////////////////////////////////
+// This is a stub PSR-4 loading script that gets all the pieces of //
+// Smarty 5.x loaded without requiring the use of composer. It's //
+// not really a 'class' file, but the name is used so we're //
+// backwards compatible with previous versions of Smarty. //
+// //
+// Example: //
+// require_once("/path/to/smarty/libs/Smarty.class.php"); //
+// //
+// $smarty = new Smarty\Smarty; //
+// $smarty->testInstall(); //
+/////////////////////////////////////////////////////////////////////
+
+define('__SMARTY_DIR', __DIR__ . '/../src/');
+
+// Global function declarations
+require_once(__SMARTY_DIR . "/functions.php");
+
+spl_autoload_register(function ($class) {
+ // Class prefix
+ $prefix = 'Smarty\\';
+
+ // Does the class use the namespace prefix?
+ $len = strlen($prefix);
+ if (strncmp($prefix, $class, $len) !== 0) {
+ // If not, move to the next registered autoloader
+ return;
+ }
+
+ // Hack off the prefix part
+ $relative_class = substr($class, $len);
+
+ // Build a path to the include file
+ $file = __SMARTY_DIR . str_replace('\\', '/', $relative_class) . '.php';
+
+ // If the file exists, require it
+ if (file_exists($file)) {
+ require_once($file);
+ }
+});
diff --git a/vendor/smarty/smarty/libs/bootstrap.php b/vendor/smarty/smarty/libs/bootstrap.php
deleted file mode 100644
index a226ac04e..000000000
--- a/vendor/smarty/smarty/libs/bootstrap.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * This file is part of the Smarty package.
- *
- * (c) Sebastian Bergmann <sebastian@phpunit.de>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-/**
- * Load and register Smarty Autoloader
- */
-if (!class_exists('Smarty_Autoloader')) {
- include __DIR__ . '/Autoloader.php';
-}
-Smarty_Autoloader::register(true);
diff --git a/vendor/smarty/smarty/libs/debug.tpl b/vendor/smarty/smarty/libs/debug.tpl
deleted file mode 100644
index cd9325668..000000000
--- a/vendor/smarty/smarty/libs/debug.tpl
+++ /dev/null
@@ -1,173 +0,0 @@
-{capture name='_smarty_debug' assign=debug_output}
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <title>Smarty Debug Console</title>
- <style>
- {literal}
- body, h1, h2, h3, td, th, p {
- font-family: sans-serif;
- font-weight: normal;
- font-size: 0.9em;
- margin: 1px;
- padding: 0;
- }
-
- h1 {
- margin: 0;
- text-align: left;
- padding: 2px;
- background-color: #f0c040;
- color: black;
- font-weight: bold;
- font-size: 1.2em;
- }
-
- h2 {
- background-color: #9B410E;
- color: white;
- text-align: left;
- font-weight: bold;
- padding: 2px;
- border-top: 1px solid black;
- }
-
- h3 {
- text-align: left;
- font-weight: bold;
- color: black;
- font-size: 0.7em;
- padding: 2px;
- }
-
- body {
- background: black;
- }
-
- p, table, div {
- background: #f0ead8;
- }
-
- p {
- margin: 0;
- font-style: italic;
- text-align: center;
- }
-
- table {
- width: 100%;
- }
-
- th, td {
- font-family: monospace;
- vertical-align: top;
- text-align: left;
- }
-
- td {
- color: green;
- }
-
- tr:nth-child(odd) {
- background-color: #eeeeee;
- }
-
- tr:nth-child(even) {
- background-color: #fafafa;
- }
-
- .exectime {
- font-size: 0.8em;
- font-style: italic;
- }
-
- #bold div {
- color: black;
- font-weight: bold;
- }
-
- #blue h3 {
- color: blue;
- }
-
- #normal div {
- color: black;
- font-weight: normal;
- }
-
- #table_assigned_vars th {
- color: blue;
- font-weight: bold;
- }
-
- #table_config_vars th {
- color: maroon;
- }
- {/literal}
- </style>
- </head>
- <body>
-
- <h1>Smarty {Smarty::SMARTY_VERSION} Debug Console
- - {if isset($template_name)}{$template_name|debug_print_var nofilter} {/if}{if !empty($template_data)}Total Time {$execution_time|string_format:"%.5f"}{/if}</h1>
-
- {if !empty($template_data)}
- <h2>included templates &amp; config files (load time in seconds)</h2>
- <div>
- {foreach $template_data as $template}
- <span style="color: brown;">{$template.name}</span>
- <br>&nbsp;&nbsp;<span class="exectime">
- (compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"})
- </span>
- <br>
- {/foreach}
- </div>
- {/if}
-
- <h2>assigned template variables</h2>
-
- <table id="table_assigned_vars">
- {foreach $assigned_vars as $vars}
- <tr>
- <td>
- <h3 style="color: blue;">${$vars@key}</h3>
- {if isset($vars['nocache'])}<strong>Nocache</strong><br>{/if}
- {if isset($vars['scope'])}<strong>Origin:</strong> {$vars['scope']|debug_print_var nofilter}{/if}
- </td>
- <td>
- <h3>Value</h3>
- {$vars['value']|debug_print_var:10:80 nofilter}
- </td>
- <td>
- {if isset($vars['attributes'])}
- <h3>Attributes</h3>
- {$vars['attributes']|debug_print_var nofilter}
- {/if}
- </td>
- {/foreach}
- </table>
-
- <h2>assigned config file variables</h2>
-
- <table id="table_config_vars">
- {foreach $config_vars as $vars}
- <tr>
- <td>
- <h3 style="color: blue;">#{$vars@key}#</h3>
- {if isset($vars['scope'])}<strong>Origin:</strong> {$vars['scope']|debug_print_var nofilter}{/if}
- </td>
- <td>
- {$vars['value']|debug_print_var:10:80 nofilter}
- </td>
- </tr>
- {/foreach}
-
- </table>
- </body>
- </html>
-{/capture}
-<script type="text/javascript">
- _smarty_console = window.open("", "console{$targetWindow}", "width=1024,height=600,left={$offset},top={$offset},resizable,scrollbars=yes");
- _smarty_console.document.write("{$debug_output|escape:'javascript' nofilter}");
- _smarty_console.document.close();
-</script>
diff --git a/vendor/smarty/smarty/libs/functions.php b/vendor/smarty/smarty/libs/functions.php
deleted file mode 100644
index bac00e521..000000000
--- a/vendor/smarty/smarty/libs/functions.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * This file is part of the Smarty package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-/**
- * Registers some helper/polyfill functions.
- */
-
-const SMARTY_HELPER_FUNCTIONS_LOADED = true;
-
-/**
- * Converts the first characters in $string to uppercase (A-Z) if it is an ASCII lowercase character (a-z).
- *
- * May not be required when running PHP8.2+: https://wiki.php.net/rfc/strtolower-ascii
- *
- * @param $string
- *
- * @return string
- */
-function smarty_ucfirst_ascii($string): string {
- return smarty_strtoupper_ascii(substr($string, 0, 1)) . substr($string, 1);
-}
-
-/**
- * Converts all uppercase ASCII characters (A-Z) in $string to lowercase (a-z).
- *
- * May not be required when running PHP8.2+: https://wiki.php.net/rfc/strtolower-ascii
- *
- * @param $string
- *
- * @return string
- */
-function smarty_strtolower_ascii($string): string {
- return strtr($string, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
-}
-
-/**
- * Converts all lowercase ASCII characters (a-z) in $string to uppercase (A-Z).
- *
- * May not be required when running PHP8.2+: https://wiki.php.net/rfc/strtolower-ascii
- *
- * @param $string
- *
- * @return string
- */
-function smarty_strtoupper_ascii($string): string {
- return strtr($string, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ');
-} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/plugins/block.textformat.php b/vendor/smarty/smarty/libs/plugins/block.textformat.php
deleted file mode 100644
index fed090e4d..000000000
--- a/vendor/smarty/smarty/libs/plugins/block.textformat.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-/**
- * Smarty plugin to format text blocks
- *
- * @package Smarty
- * @subpackage PluginsBlock
- */
-/**
- * Smarty {textformat}{/textformat} block plugin
- * Type: block function
- * Name: textformat
- * Purpose: format text a certain way with preset styles
- * or custom wrap/indent settings
- * Params:
- *
- * - style - string (email)
- * - indent - integer (0)
- * - wrap - integer (80)
- * - wrap_char - string ("\n")
- * - indent_char - string (" ")
- * - wrap_boundary - boolean (true)
- *
- * @link https://www.smarty.net/manual/en/language.function.textformat.php {textformat}
- * (Smarty online manual)
- *
- * @param array $params parameters
- * @param string $content contents of the block
- * @param Smarty_Internal_Template $template template object
- * @param boolean &$repeat repeat flag
- *
- * @return string content re-formatted
- * @author Monte Ohrt <monte at ohrt dot com>
- * @throws \SmartyException
- */
-function smarty_block_textformat($params, $content, Smarty_Internal_Template $template, &$repeat)
-{
- if (is_null($content)) {
- return;
- }
- if (Smarty::$_MBSTRING) {
- $template->_checkPlugins(
- array(
- array(
- 'function' => 'smarty_modifier_mb_wordwrap',
- 'file' => SMARTY_PLUGINS_DIR . 'modifier.mb_wordwrap.php'
- )
- )
- );
- }
- $style = null;
- $indent = 0;
- $indent_first = 0;
- $indent_char = ' ';
- $wrap = 80;
- $wrap_char = "\n";
- $wrap_cut = false;
- $assign = null;
- foreach ($params as $_key => $_val) {
- switch ($_key) {
- case 'style':
- case 'indent_char':
- case 'wrap_char':
- case 'assign':
- $$_key = (string)$_val;
- break;
- case 'indent':
- case 'indent_first':
- case 'wrap':
- $$_key = (int)$_val;
- break;
- case 'wrap_cut':
- $$_key = (bool)$_val;
- break;
- default:
- trigger_error("textformat: unknown attribute '{$_key}'");
- }
- }
- if ($style === 'email') {
- $wrap = 72;
- }
- // split into paragraphs
- $_paragraphs = preg_split('![\r\n]{2}!', $content);
- foreach ($_paragraphs as &$_paragraph) {
- if (!$_paragraph) {
- continue;
- }
- // convert mult. spaces & special chars to single space
- $_paragraph =
- preg_replace(
- array(
- '!\s+!' . Smarty::$_UTF8_MODIFIER,
- '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER
- ),
- array(
- ' ',
- ''
- ),
- $_paragraph
- );
- // indent first line
- if ($indent_first > 0) {
- $_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph;
- }
- // wordwrap sentences
- if (Smarty::$_MBSTRING) {
- $_paragraph = smarty_modifier_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
- } else {
- $_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
- }
- // indent lines
- if ($indent > 0) {
- $_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph);
- }
- }
- $_output = implode($wrap_char . $wrap_char, $_paragraphs);
- if ($assign) {
- $template->assign($assign, $_output);
- } else {
- return $_output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.counter.php b/vendor/smarty/smarty/libs/plugins/function.counter.php
deleted file mode 100644
index 54795459c..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.counter.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {counter} function plugin
- * Type: function
- * Name: counter
- * Purpose: print out a counter value
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- * @link https://www.smarty.net/manual/en/language.function.counter.php {counter}
- * (Smarty online manual)
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @return string|null
- */
-function smarty_function_counter($params, $template)
-{
- static $counters = array();
- $name = (isset($params[ 'name' ])) ? $params[ 'name' ] : 'default';
- if (!isset($counters[ $name ])) {
- $counters[ $name ] = array('start' => 1, 'skip' => 1, 'direction' => 'up', 'count' => 1);
- }
- $counter =& $counters[ $name ];
- if (isset($params[ 'start' ])) {
- $counter[ 'start' ] = $counter[ 'count' ] = (int)$params[ 'start' ];
- }
- if (!empty($params[ 'assign' ])) {
- $counter[ 'assign' ] = $params[ 'assign' ];
- }
- if (isset($counter[ 'assign' ])) {
- $template->assign($counter[ 'assign' ], $counter[ 'count' ]);
- }
- if (isset($params[ 'print' ])) {
- $print = (bool)$params[ 'print' ];
- } else {
- $print = empty($counter[ 'assign' ]);
- }
- if ($print) {
- $retval = $counter[ 'count' ];
- } else {
- $retval = null;
- }
- if (isset($params[ 'skip' ])) {
- $counter[ 'skip' ] = $params[ 'skip' ];
- }
- if (isset($params[ 'direction' ])) {
- $counter[ 'direction' ] = $params[ 'direction' ];
- }
- if ($counter[ 'direction' ] === 'down') {
- $counter[ 'count' ] -= $counter[ 'skip' ];
- } else {
- $counter[ 'count' ] += $counter[ 'skip' ];
- }
- return $retval;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.cycle.php b/vendor/smarty/smarty/libs/plugins/function.cycle.php
deleted file mode 100644
index 793569991..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.cycle.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {cycle} function plugin
- * Type: function
- * Name: cycle
- * Date: May 3, 2002
- * Purpose: cycle through given values
- * Params:
- *
- * - name - name of cycle (optional)
- * - values - comma separated list of values to cycle, or an array of values to cycle
- * (this can be left out for subsequent calls)
- * - reset - boolean - resets given var to true
- * - print - boolean - print var or not. default is true
- * - advance - boolean - whether or not to advance the cycle
- * - delimiter - the value delimiter, default is ","
- * - assign - boolean, assigns to template var instead of printed.
- *
- * Examples:
- *
- * {cycle values="#eeeeee,#d0d0d0d"}
- * {cycle name=row values="one,two,three" reset=true}
- * {cycle name=row}
- *
- * @link https://www.smarty.net/manual/en/language.function.cycle.php {cycle}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credit to Mark Priatel <mpriatel@rogers.com>
- * @author credit to Gerard <gerard@interfold.com>
- * @author credit to Jason Sweat <jsweat_php@yahoo.com>
- * @version 1.3
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @return string|null
- */
-function smarty_function_cycle($params, $template)
-{
- static $cycle_vars;
- $name = (empty($params[ 'name' ])) ? 'default' : $params[ 'name' ];
- $print = (isset($params[ 'print' ])) ? (bool)$params[ 'print' ] : true;
- $advance = (isset($params[ 'advance' ])) ? (bool)$params[ 'advance' ] : true;
- $reset = (isset($params[ 'reset' ])) ? (bool)$params[ 'reset' ] : false;
- if (!isset($params[ 'values' ])) {
- if (!isset($cycle_vars[ $name ][ 'values' ])) {
- trigger_error('cycle: missing \'values\' parameter');
- return;
- }
- } else {
- if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] !== $params[ 'values' ]) {
- $cycle_vars[ $name ][ 'index' ] = 0;
- }
- $cycle_vars[ $name ][ 'values' ] = $params[ 'values' ];
- }
- if (isset($params[ 'delimiter' ])) {
- $cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ];
- } elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) {
- $cycle_vars[ $name ][ 'delimiter' ] = ',';
- }
- if (is_array($cycle_vars[ $name ][ 'values' ])) {
- $cycle_array = $cycle_vars[ $name ][ 'values' ];
- } else {
- $cycle_array = explode($cycle_vars[ $name ][ 'delimiter' ], $cycle_vars[ $name ][ 'values' ]);
- }
- if (!isset($cycle_vars[ $name ][ 'index' ]) || $reset) {
- $cycle_vars[ $name ][ 'index' ] = 0;
- }
- if (isset($params[ 'assign' ])) {
- $print = false;
- $template->assign($params[ 'assign' ], $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]);
- }
- if ($print) {
- $retval = $cycle_array[ $cycle_vars[ $name ][ 'index' ] ];
- } else {
- $retval = null;
- }
- if ($advance) {
- if ($cycle_vars[ $name ][ 'index' ] >= count($cycle_array) - 1) {
- $cycle_vars[ $name ][ 'index' ] = 0;
- } else {
- $cycle_vars[ $name ][ 'index' ]++;
- }
- }
- return $retval;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.fetch.php b/vendor/smarty/smarty/libs/plugins/function.fetch.php
deleted file mode 100644
index 4a3e88196..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.fetch.php
+++ /dev/null
@@ -1,204 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {fetch} plugin
- * Type: function
- * Name: fetch
- * Purpose: fetch file, web or ftp data and display results
- *
- * @link https://www.smarty.net/manual/en/language.function.fetch.php {fetch}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @throws SmartyException
- * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable
- */
-function smarty_function_fetch($params, $template)
-{
- if (empty($params[ 'file' ])) {
- trigger_error('[plugin] fetch parameter \'file\' cannot be empty', E_USER_NOTICE);
- return;
- }
- // strip file protocol
- if (stripos($params[ 'file' ], 'file://') === 0) {
- $params[ 'file' ] = substr($params[ 'file' ], 7);
- }
- $protocol = strpos($params[ 'file' ], '://');
- if ($protocol !== false) {
- $protocol = strtolower(substr($params[ 'file' ], 0, $protocol));
- }
- if (isset($template->smarty->security_policy)) {
- if ($protocol) {
- // remote resource (or php stream, …)
- if (!$template->smarty->security_policy->isTrustedUri($params[ 'file' ])) {
- return;
- }
- } else {
- // local file
- if (!$template->smarty->security_policy->isTrustedResourceDir($params[ 'file' ])) {
- return;
- }
- }
- }
- $content = '';
- if ($protocol === 'http') {
- // http fetch
- if ($uri_parts = parse_url($params[ 'file' ])) {
- // set defaults
- $host = $server_name = $uri_parts[ 'host' ];
- $timeout = 30;
- $accept = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
- $agent = 'Smarty Template Engine ' . Smarty::SMARTY_VERSION;
- $referer = '';
- $uri = !empty($uri_parts[ 'path' ]) ? $uri_parts[ 'path' ] : '/';
- $uri .= !empty($uri_parts[ 'query' ]) ? '?' . $uri_parts[ 'query' ] : '';
- $_is_proxy = false;
- if (empty($uri_parts[ 'port' ])) {
- $port = 80;
- } else {
- $port = $uri_parts[ 'port' ];
- }
- if (!empty($uri_parts[ 'user' ])) {
- $user = $uri_parts[ 'user' ];
- }
- if (!empty($uri_parts[ 'pass' ])) {
- $pass = $uri_parts[ 'pass' ];
- }
- // loop through parameters, setup headers
- foreach ($params as $param_key => $param_value) {
- switch ($param_key) {
- case 'file':
- case 'assign':
- case 'assign_headers':
- break;
- case 'user':
- if (!empty($param_value)) {
- $user = $param_value;
- }
- break;
- case 'pass':
- if (!empty($param_value)) {
- $pass = $param_value;
- }
- break;
- case 'accept':
- if (!empty($param_value)) {
- $accept = $param_value;
- }
- break;
- case 'header':
- if (!empty($param_value)) {
- if (!preg_match('![\w\d-]+: .+!', $param_value)) {
- trigger_error("[plugin] invalid header format '{$param_value}'", E_USER_NOTICE);
- return;
- } else {
- $extra_headers[] = $param_value;
- }
- }
- break;
- case 'proxy_host':
- if (!empty($param_value)) {
- $proxy_host = $param_value;
- }
- break;
- case 'proxy_port':
- if (!preg_match('!\D!', $param_value)) {
- $proxy_port = (int)$param_value;
- } else {
- trigger_error("[plugin] invalid value for attribute '{$param_key }'", E_USER_NOTICE);
- return;
- }
- break;
- case 'agent':
- if (!empty($param_value)) {
- $agent = $param_value;
- }
- break;
- case 'referer':
- if (!empty($param_value)) {
- $referer = $param_value;
- }
- break;
- case 'timeout':
- if (!preg_match('!\D!', $param_value)) {
- $timeout = (int)$param_value;
- } else {
- trigger_error("[plugin] invalid value for attribute '{$param_key}'", E_USER_NOTICE);
- return;
- }
- break;
- default:
- trigger_error("[plugin] unrecognized attribute '{$param_key}'", E_USER_NOTICE);
- return;
- }
- }
- if (!empty($proxy_host) && !empty($proxy_port)) {
- $_is_proxy = true;
- $fp = fsockopen($proxy_host, $proxy_port, $errno, $errstr, $timeout);
- } else {
- $fp = fsockopen($server_name, $port, $errno, $errstr, $timeout);
- }
- if (!$fp) {
- trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE);
- return;
- } else {
- if ($_is_proxy) {
- fputs($fp, 'GET ' . $params[ 'file' ] . " HTTP/1.0\r\n");
- } else {
- fputs($fp, "GET $uri HTTP/1.0\r\n");
- }
- if (!empty($host)) {
- fputs($fp, "Host: $host\r\n");
- }
- if (!empty($accept)) {
- fputs($fp, "Accept: $accept\r\n");
- }
- if (!empty($agent)) {
- fputs($fp, "User-Agent: $agent\r\n");
- }
- if (!empty($referer)) {
- fputs($fp, "Referer: $referer\r\n");
- }
- if (isset($extra_headers) && is_array($extra_headers)) {
- foreach ($extra_headers as $curr_header) {
- fputs($fp, $curr_header . "\r\n");
- }
- }
- if (!empty($user) && !empty($pass)) {
- fputs($fp, 'Authorization: BASIC ' . base64_encode("$user:$pass") . "\r\n");
- }
- fputs($fp, "\r\n");
- while (!feof($fp)) {
- $content .= fgets($fp, 4096);
- }
- fclose($fp);
- $csplit = preg_split("!\r\n\r\n!", $content, 2);
- $content = $csplit[ 1 ];
- if (!empty($params[ 'assign_headers' ])) {
- $template->assign($params[ 'assign_headers' ], preg_split("!\r\n!", $csplit[ 0 ]));
- }
- }
- } else {
- trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE);
- return;
- }
- } else {
- $content = @file_get_contents($params[ 'file' ]);
- if ($content === false) {
- throw new SmartyException("{fetch} cannot read resource '" . $params[ 'file' ] . "'");
- }
- }
- if (!empty($params[ 'assign' ])) {
- $template->assign($params[ 'assign' ], $content);
- } else {
- return $content;
- }
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php b/vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php
deleted file mode 100644
index a8e7a07d8..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php
+++ /dev/null
@@ -1,286 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {html_checkboxes} function plugin
- * File: function.html_checkboxes.php
- * Type: function
- * Name: html_checkboxes
- * Date: 24.Feb.2003
- * Purpose: Prints out a list of checkbox input types
- * Examples:
- *
- * {html_checkboxes values=$ids output=$names}
- * {html_checkboxes values=$ids name='box' separator='<br>' output=$names}
- * {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}
- *
- * Params:
- *
- * - name (optional) - string default "checkbox"
- * - values (required) - array
- * - options (optional) - associative array
- * - checked (optional) - array default not set
- * - separator (optional) - ie <br> or &nbsp;
- * - output (optional) - the output next to each checkbox
- * - assign (optional) - assign the output as an array to this variable
- * - escape (optional) - escape the content (not value), defaults to true
- *
- * @link https://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
- * (Smarty online manual)
- * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
- * @author credits to Monte Ohrt <monte at ohrt dot com>
- * @version 1.0
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @return string
- * @uses smarty_function_escape_special_chars()
- * @throws \SmartyException
- */
-function smarty_function_html_checkboxes($params, Smarty_Internal_Template $template)
-{
- $template->_checkPlugins(
- array(
- array(
- 'function' => 'smarty_function_escape_special_chars',
- 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
- )
- )
- );
- $name = 'checkbox';
- $values = null;
- $options = null;
- $selected = array();
- $separator = '';
- $escape = true;
- $labels = true;
- $label_ids = false;
- $output = null;
- $extra = '';
- foreach ($params as $_key => $_val) {
- switch ($_key) {
- case 'name':
- case 'separator':
- $$_key = (string)$_val;
- break;
- case 'escape':
- case 'labels':
- case 'label_ids':
- $$_key = (bool)$_val;
- break;
- case 'options':
- $$_key = (array)$_val;
- break;
- case 'values':
- case 'output':
- $$_key = array_values((array)$_val);
- break;
- case 'checked':
- case 'selected':
- if (is_array($_val)) {
- $selected = array();
- foreach ($_val as $_sel) {
- if (is_object($_sel)) {
- if (method_exists($_sel, '__toString')) {
- $_sel = smarty_function_escape_special_chars((string)$_sel->__toString());
- } else {
- trigger_error(
- 'html_checkboxes: selected attribute contains an object of class \'' .
- get_class($_sel) . '\' without __toString() method',
- E_USER_NOTICE
- );
- continue;
- }
- } else {
- $_sel = smarty_function_escape_special_chars((string)$_sel);
- }
- $selected[ $_sel ] = true;
- }
- } elseif (is_object($_val)) {
- if (method_exists($_val, '__toString')) {
- $selected = smarty_function_escape_special_chars((string)$_val->__toString());
- } else {
- trigger_error(
- 'html_checkboxes: selected attribute is an object of class \'' . get_class($_val) .
- '\' without __toString() method',
- E_USER_NOTICE
- );
- }
- } else {
- $selected = smarty_function_escape_special_chars((string)$_val);
- }
- break;
- case 'checkboxes':
- trigger_error(
- 'html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead',
- E_USER_WARNING
- );
- $options = (array)$_val;
- break;
- case 'assign':
- break;
- case 'strict':
- break;
- case 'disabled':
- case 'readonly':
- if (!empty($params[ 'strict' ])) {
- if (!is_scalar($_val)) {
- trigger_error(
- "html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
- E_USER_NOTICE
- );
- }
- if ($_val === true || $_val === $_key) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
- }
- break;
- }
- // omit break; to fall through!
- // no break
- default:
- if (!is_array($_val)) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
- } else {
- trigger_error("html_checkboxes: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
- if (!isset($options) && !isset($values)) {
- return '';
- } /* raise error here? */
- $_html_result = array();
- if (isset($options)) {
- foreach ($options as $_key => $_val) {
- $_html_result[] =
- smarty_function_html_checkboxes_output(
- $name,
- $_key,
- $_val,
- $selected,
- $extra,
- $separator,
- $labels,
- $label_ids,
- $escape
- );
- }
- } else {
- foreach ($values as $_i => $_key) {
- $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
- $_html_result[] =
- smarty_function_html_checkboxes_output(
- $name,
- $_key,
- $_val,
- $selected,
- $extra,
- $separator,
- $labels,
- $label_ids,
- $escape
- );
- }
- }
- if (!empty($params[ 'assign' ])) {
- $template->assign($params[ 'assign' ], $_html_result);
- } else {
- return implode("\n", $_html_result);
- }
-}
-
-/**
- * @param $name
- * @param $value
- * @param $output
- * @param $selected
- * @param $extra
- * @param $separator
- * @param $labels
- * @param $label_ids
- * @param bool $escape
- *
- * @return string
- */
-function smarty_function_html_checkboxes_output(
- $name,
- $value,
- $output,
- $selected,
- $extra,
- $separator,
- $labels,
- $label_ids,
- $escape = true
-) {
- $_output = '';
- if (is_object($value)) {
- if (method_exists($value, '__toString')) {
- $value = (string)$value->__toString();
- } else {
- trigger_error(
- 'html_options: value is an object of class \'' . get_class($value) .
- '\' without __toString() method',
- E_USER_NOTICE
- );
- return '';
- }
- } else {
- $value = (string)$value;
- }
- if (is_object($output)) {
- if (method_exists($output, '__toString')) {
- $output = (string)$output->__toString();
- } else {
- trigger_error(
- 'html_options: output is an object of class \'' . get_class($output) .
- '\' without __toString() method',
- E_USER_NOTICE
- );
- return '';
- }
- } else {
- $output = (string)$output;
- }
- if ($labels) {
- if ($label_ids) {
- $_id = smarty_function_escape_special_chars(
- preg_replace(
- '![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER,
- '_',
- $name . '_' . $value
- )
- );
- $_output .= '<label for="' . $_id . '">';
- } else {
- $_output .= '<label>';
- }
- }
- $name = smarty_function_escape_special_chars($name);
- $value = smarty_function_escape_special_chars($value);
- if ($escape) {
- $output = smarty_function_escape_special_chars($output);
- }
- $_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"';
- if ($labels && $label_ids) {
- $_output .= ' id="' . $_id . '"';
- }
- if (is_array($selected)) {
- if (isset($selected[ $value ])) {
- $_output .= ' checked="checked"';
- }
- } elseif ($value === $selected) {
- $_output .= ' checked="checked"';
- }
- $_output .= $extra . ' />' . $output;
- if ($labels) {
- $_output .= '</label>';
- }
- $_output .= $separator;
- return $_output;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_image.php b/vendor/smarty/smarty/libs/plugins/function.html_image.php
deleted file mode 100644
index 71bc63864..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.html_image.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {html_image} function plugin
- * Type: function
- * Name: html_image
- * Date: Feb 24, 2003
- * Purpose: format HTML tags for the image
- * Examples: {html_image file="/images/masthead.gif"}
- * Output: <img src="/images/masthead.gif" width=400 height=23>
- * Params:
- *
- * - file - (required) - file (and path) of image
- * - height - (optional) - image height (default actual height)
- * - width - (optional) - image width (default actual width)
- * - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
- * - path_prefix - prefix for path output (optional, default empty)
- *
- * @link https://www.smarty.net/manual/en/language.function.html.image.php {html_image}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credits to Duda <duda@big.hu>
- * @version 1.0
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @throws SmartyException
- * @return string
- * @uses smarty_function_escape_special_chars()
- */
-function smarty_function_html_image($params, Smarty_Internal_Template $template)
-{
- $template->_checkPlugins(
- array(
- array(
- 'function' => 'smarty_function_escape_special_chars',
- 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
- )
- )
- );
- $alt = '';
- $file = '';
- $height = '';
- $width = '';
- $extra = '';
- $prefix = '';
- $suffix = '';
- $path_prefix = '';
- $basedir = isset($_SERVER[ 'DOCUMENT_ROOT' ]) ? $_SERVER[ 'DOCUMENT_ROOT' ] : '';
- foreach ($params as $_key => $_val) {
- switch ($_key) {
- case 'file':
- case 'height':
- case 'width':
- case 'dpi':
- case 'path_prefix':
- case 'basedir':
- $$_key = $_val;
- break;
- case 'alt':
- if (!is_array($_val)) {
- $$_key = smarty_function_escape_special_chars($_val);
- } else {
- throw new SmartyException(
- "html_image: extra attribute '{$_key}' cannot be an array",
- E_USER_NOTICE
- );
- }
- break;
- case 'link':
- case 'href':
- $prefix = '<a href="' . $_val . '">';
- $suffix = '</a>';
- break;
- default:
- if (!is_array($_val)) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
- } else {
- throw new SmartyException(
- "html_image: extra attribute '{$_key}' cannot be an array",
- E_USER_NOTICE
- );
- }
- break;
- }
- }
- if (empty($file)) {
- trigger_error('html_image: missing \'file\' parameter', E_USER_NOTICE);
- return;
- }
- if ($file[ 0 ] === '/') {
- $_image_path = $basedir . $file;
- } else {
- $_image_path = $file;
- }
- // strip file protocol
- if (stripos($params[ 'file' ], 'file://') === 0) {
- $params[ 'file' ] = substr($params[ 'file' ], 7);
- }
- $protocol = strpos($params[ 'file' ], '://');
- if ($protocol !== false) {
- $protocol = strtolower(substr($params[ 'file' ], 0, $protocol));
- }
- if (isset($template->smarty->security_policy)) {
- if ($protocol) {
- // remote resource (or php stream, …)
- if (!$template->smarty->security_policy->isTrustedUri($params[ 'file' ])) {
- return;
- }
- } else {
- // local file
- if (!$template->smarty->security_policy->isTrustedResourceDir($_image_path)) {
- return;
- }
- }
- }
- if (!isset($params[ 'width' ]) || !isset($params[ 'height' ])) {
- // FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
- if (!$_image_data = @getimagesize($_image_path)) {
- if (!file_exists($_image_path)) {
- trigger_error("html_image: unable to find '{$_image_path}'", E_USER_NOTICE);
- return;
- } elseif (!is_readable($_image_path)) {
- trigger_error("html_image: unable to read '{$_image_path}'", E_USER_NOTICE);
- return;
- } else {
- trigger_error("html_image: '{$_image_path}' is not a valid image file", E_USER_NOTICE);
- return;
- }
- }
- if (!isset($params[ 'width' ])) {
- $width = $_image_data[ 0 ];
- }
- if (!isset($params[ 'height' ])) {
- $height = $_image_data[ 1 ];
- }
- }
- if (isset($params[ 'dpi' ])) {
- if (strstr($_SERVER[ 'HTTP_USER_AGENT' ], 'Mac')) {
- // FIXME: (rodneyrehm) wrong dpi assumption
- // don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011.
- $dpi_default = 72;
- } else {
- $dpi_default = 96;
- }
- $_resize = $dpi_default / $params[ 'dpi' ];
- $width = round($width * $_resize);
- $height = round($height * $_resize);
- }
- return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' .
- $height . '"' . $extra . ' />' . $suffix;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_options.php b/vendor/smarty/smarty/libs/plugins/function.html_options.php
deleted file mode 100644
index 3e4335340..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.html_options.php
+++ /dev/null
@@ -1,230 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {html_options} function plugin
- * Type: function
- * Name: html_options
- * Purpose: Prints the list of <option> tags generated from
- * the passed parameters
- * Params:
- *
- * - name (optional) - string default "select"
- * - values (required) - if no options supplied) - array
- * - options (required) - if no values supplied) - associative array
- * - selected (optional) - string default not set
- * - output (required) - if not options supplied) - array
- * - id (optional) - string default not set
- * - class (optional) - string default not set
- *
- * @link https://www.smarty.net/manual/en/language.function.html.options.php {html_image}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
- *
- * @param array $params parameters
- *
- * @param \Smarty_Internal_Template $template
- *
- * @return string
- * @uses smarty_function_escape_special_chars()
- * @throws \SmartyException
- */
-function smarty_function_html_options($params, Smarty_Internal_Template $template)
-{
- $template->_checkPlugins(
- array(
- array(
- 'function' => 'smarty_function_escape_special_chars',
- 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
- )
- )
- );
- $name = null;
- $values = null;
- $options = null;
- $selected = null;
- $output = null;
- $id = null;
- $class = null;
- $extra = '';
- foreach ($params as $_key => $_val) {
- switch ($_key) {
- case 'name':
- case 'class':
- case 'id':
- $$_key = (string)$_val;
- break;
- case 'options':
- $options = (array)$_val;
- break;
- case 'values':
- case 'output':
- $$_key = array_values((array)$_val);
- break;
- case 'selected':
- if (is_array($_val)) {
- $selected = array();
- foreach ($_val as $_sel) {
- if (is_object($_sel)) {
- if (method_exists($_sel, '__toString')) {
- $_sel = smarty_function_escape_special_chars((string)$_sel->__toString());
- } else {
- trigger_error(
- 'html_options: selected attribute contains an object of class \'' .
- get_class($_sel) . '\' without __toString() method',
- E_USER_NOTICE
- );
- continue;
- }
- } else {
- $_sel = smarty_function_escape_special_chars((string)$_sel);
- }
- $selected[ $_sel ] = true;
- }
- } elseif (is_object($_val)) {
- if (method_exists($_val, '__toString')) {
- $selected = smarty_function_escape_special_chars((string)$_val->__toString());
- } else {
- trigger_error(
- 'html_options: selected attribute is an object of class \'' . get_class($_val) .
- '\' without __toString() method',
- E_USER_NOTICE
- );
- }
- } else {
- $selected = smarty_function_escape_special_chars((string)$_val);
- }
- break;
- case 'strict':
- break;
- case 'disabled':
- case 'readonly':
- if (!empty($params[ 'strict' ])) {
- if (!is_scalar($_val)) {
- trigger_error(
- "html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
- E_USER_NOTICE
- );
- }
- if ($_val === true || $_val === $_key) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
- }
- break;
- }
- // omit break; to fall through!
- // no break
- default:
- if (!is_array($_val)) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
- } else {
- trigger_error("html_options: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
- if (!isset($options) && !isset($values)) {
- /* raise error here? */
- return '';
- }
- $_html_result = '';
- $_idx = 0;
- if (isset($options)) {
- foreach ($options as $_key => $_val) {
- $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
- }
- } else {
- foreach ($values as $_i => $_key) {
- $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
- $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
- }
- }
- if (!empty($name)) {
- $_html_class = !empty($class) ? ' class="' . $class . '"' : '';
- $_html_id = !empty($id) ? ' id="' . $id . '"' : '';
- $_html_result =
- '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result .
- '</select>' . "\n";
- }
- return $_html_result;
-}
-
-/**
- * @param $key
- * @param $value
- * @param $selected
- * @param $id
- * @param $class
- * @param $idx
- *
- * @return string
- */
-function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx)
-{
- if (!is_array($value)) {
- $_key = smarty_function_escape_special_chars($key);
- $_html_result = '<option value="' . $_key . '"';
- if (is_array($selected)) {
- if (isset($selected[ $_key ])) {
- $_html_result .= ' selected="selected"';
- }
- } elseif ($_key === $selected) {
- $_html_result .= ' selected="selected"';
- }
- $_html_class = !empty($class) ? ' class="' . $class . ' option"' : '';
- $_html_id = !empty($id) ? ' id="' . $id . '-' . $idx . '"' : '';
- if (is_object($value)) {
- if (method_exists($value, '__toString')) {
- $value = smarty_function_escape_special_chars((string)$value->__toString());
- } else {
- trigger_error(
- 'html_options: value is an object of class \'' . get_class($value) .
- '\' without __toString() method',
- E_USER_NOTICE
- );
- return '';
- }
- } else {
- $value = smarty_function_escape_special_chars((string)$value);
- }
- $_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n";
- $idx++;
- } else {
- $_idx = 0;
- $_html_result =
- smarty_function_html_options_optgroup(
- $key,
- $value,
- $selected,
- !empty($id) ? ($id . '-' . $idx) : null,
- $class,
- $_idx
- );
- $idx++;
- }
- return $_html_result;
-}
-
-/**
- * @param $key
- * @param $values
- * @param $selected
- * @param $id
- * @param $class
- * @param $idx
- *
- * @return string
- */
-function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx)
-{
- $optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n";
- foreach ($values as $key => $value) {
- $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx);
- }
- $optgroup_html .= "</optgroup>\n";
- return $optgroup_html;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_radios.php b/vendor/smarty/smarty/libs/plugins/function.html_radios.php
deleted file mode 100644
index 2223ff7ee..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.html_radios.php
+++ /dev/null
@@ -1,266 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {html_radios} function plugin
- * File: function.html_radios.php
- * Type: function
- * Name: html_radios
- * Date: 24.Feb.2003
- * Purpose: Prints out a list of radio input types
- * Params:
- *
- * - name (optional) - string default "radio"
- * - values (required) - array
- * - options (required) - associative array
- * - checked (optional) - array default not set
- * - separator (optional) - ie <br> or &nbsp;
- * - output (optional) - the output next to each radio button
- * - assign (optional) - assign the output as an array to this variable
- * - escape (optional) - escape the content (not value), defaults to true
- *
- * Examples:
- *
- * {html_radios values=$ids output=$names}
- * {html_radios values=$ids name='box' separator='<br>' output=$names}
- * {html_radios values=$ids checked=$checked separator='<br>' output=$names}
- *
- * @link https://www.smarty.net/manual/en/language.function.html.radios.php {html_radios}
- * (Smarty online manual)
- * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
- * @author credits to Monte Ohrt <monte at ohrt dot com>
- * @version 1.0
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @return string
- * @uses smarty_function_escape_special_chars()
- * @throws \SmartyException
- */
-function smarty_function_html_radios($params, Smarty_Internal_Template $template)
-{
- $template->_checkPlugins(
- array(
- array(
- 'function' => 'smarty_function_escape_special_chars',
- 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
- )
- )
- );
- $name = 'radio';
- $values = null;
- $options = null;
- $selected = null;
- $separator = '';
- $escape = true;
- $labels = true;
- $label_ids = false;
- $output = null;
- $extra = '';
- foreach ($params as $_key => $_val) {
- switch ($_key) {
- case 'name':
- case 'separator':
- $$_key = (string)$_val;
- break;
- case 'checked':
- case 'selected':
- if (is_array($_val)) {
- trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
- } elseif (is_object($_val)) {
- if (method_exists($_val, '__toString')) {
- $selected = smarty_function_escape_special_chars((string)$_val->__toString());
- } else {
- trigger_error(
- 'html_radios: selected attribute is an object of class \'' . get_class($_val) .
- '\' without __toString() method',
- E_USER_NOTICE
- );
- }
- } else {
- $selected = (string)$_val;
- }
- break;
- case 'escape':
- case 'labels':
- case 'label_ids':
- $$_key = (bool)$_val;
- break;
- case 'options':
- $$_key = (array)$_val;
- break;
- case 'values':
- case 'output':
- $$_key = array_values((array)$_val);
- break;
- case 'radios':
- trigger_error(
- 'html_radios: the use of the "radios" attribute is deprecated, use "options" instead',
- E_USER_WARNING
- );
- $options = (array)$_val;
- break;
- case 'assign':
- break;
- case 'strict':
- break;
- case 'disabled':
- case 'readonly':
- if (!empty($params[ 'strict' ])) {
- if (!is_scalar($_val)) {
- trigger_error(
- "html_options: {$_key} attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
- E_USER_NOTICE
- );
- }
- if ($_val === true || $_val === $_key) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
- }
- break;
- }
- // omit break; to fall through!
- // no break
- default:
- if (!is_array($_val)) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
- } else {
- trigger_error("html_radios: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
- if (!isset($options) && !isset($values)) {
- /* raise error here? */
- return '';
- }
- $_html_result = array();
- if (isset($options)) {
- foreach ($options as $_key => $_val) {
- $_html_result[] =
- smarty_function_html_radios_output(
- $name,
- $_key,
- $_val,
- $selected,
- $extra,
- $separator,
- $labels,
- $label_ids,
- $escape
- );
- }
- } else {
- foreach ($values as $_i => $_key) {
- $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
- $_html_result[] =
- smarty_function_html_radios_output(
- $name,
- $_key,
- $_val,
- $selected,
- $extra,
- $separator,
- $labels,
- $label_ids,
- $escape
- );
- }
- }
- if (!empty($params[ 'assign' ])) {
- $template->assign($params[ 'assign' ], $_html_result);
- } else {
- return implode("\n", $_html_result);
- }
-}
-
-/**
- * @param $name
- * @param $value
- * @param $output
- * @param $selected
- * @param $extra
- * @param $separator
- * @param $labels
- * @param $label_ids
- * @param $escape
- *
- * @return string
- */
-function smarty_function_html_radios_output(
- $name,
- $value,
- $output,
- $selected,
- $extra,
- $separator,
- $labels,
- $label_ids,
- $escape
-) {
- $_output = '';
- if (is_object($value)) {
- if (method_exists($value, '__toString')) {
- $value = (string)$value->__toString();
- } else {
- trigger_error(
- 'html_options: value is an object of class \'' . get_class($value) .
- '\' without __toString() method',
- E_USER_NOTICE
- );
- return '';
- }
- } else {
- $value = (string)$value;
- }
- if (is_object($output)) {
- if (method_exists($output, '__toString')) {
- $output = (string)$output->__toString();
- } else {
- trigger_error(
- 'html_options: output is an object of class \'' . get_class($output) .
- '\' without __toString() method',
- E_USER_NOTICE
- );
- return '';
- }
- } else {
- $output = (string)$output;
- }
- if ($labels) {
- if ($label_ids) {
- $_id = smarty_function_escape_special_chars(
- preg_replace(
- '![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER,
- '_',
- $name . '_' . $value
- )
- );
- $_output .= '<label for="' . $_id . '">';
- } else {
- $_output .= '<label>';
- }
- }
- $name = smarty_function_escape_special_chars($name);
- $value = smarty_function_escape_special_chars($value);
- if ($escape) {
- $output = smarty_function_escape_special_chars($output);
- }
- $_output .= '<input type="radio" name="' . $name . '" value="' . $value . '"';
- if ($labels && $label_ids) {
- $_output .= ' id="' . $_id . '"';
- }
- if ($value === $selected) {
- $_output .= ' checked="checked"';
- }
- $_output .= $extra . ' />' . $output;
- if ($labels) {
- $_output .= '</label>';
- }
- $_output .= $separator;
- return $_output;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_select_date.php b/vendor/smarty/smarty/libs/plugins/function.html_select_date.php
deleted file mode 100644
index d9c571976..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.html_select_date.php
+++ /dev/null
@@ -1,395 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {html_select_date} plugin
- * Type: function
- * Name: html_select_date
- * Purpose: Prints the dropdowns for date selection.
- * ChangeLog:
- *
- * - 1.0 initial release
- * - 1.1 added support for +/- N syntax for begin
- * and end year values. (Monte)
- * - 1.2 added support for yyyy-mm-dd syntax for
- * time value. (Jan Rosier)
- * - 1.3 added support for choosing format for
- * month values (Gary Loescher)
- * - 1.3.1 added support for choosing format for
- * day values (Marcus Bointon)
- * - 1.3.2 support negative timestamps, force year
- * dropdown to include given date unless explicitly set (Monte)
- * - 1.3.4 fix behaviour of 0000-00-00 00:00:00 dates to match that
- * of 0000-00-00 dates (cybot, boots)
- * - 2.0 complete rewrite for performance,
- * added attributes month_names, *_id
- *
- * @link https://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date}
- * (Smarty online manual)
- * @version 2.0
- * @author Andrei Zmievski
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Rodney Rehm
- *
- * @param array $params parameters
- *
- * @param \Smarty_Internal_Template $template
- *
- * @return string
- * @throws \SmartyException
- */
-function smarty_function_html_select_date($params, Smarty_Internal_Template $template)
-{
- $template->_checkPlugins(
- array(
- array(
- 'function' => 'smarty_function_escape_special_chars',
- 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
- )
- )
- );
- // generate timestamps used for month names only
- static $_month_timestamps = null;
- static $_current_year = null;
- if ($_month_timestamps === null) {
- $_current_year = date('Y');
- $_month_timestamps = array();
- for ($i = 1; $i <= 12; $i++) {
- $_month_timestamps[ $i ] = mktime(0, 0, 0, $i, 1, 2000);
- }
- }
- /* Default values. */
- $prefix = 'Date_';
- $start_year = null;
- $end_year = null;
- $display_days = true;
- $display_months = true;
- $display_years = true;
- $month_format = '%B';
- /* Write months as numbers by default GL */
- $month_value_format = '%m';
- $day_format = '%02d';
- /* Write day values using this format MB */
- $day_value_format = '%d';
- $year_as_text = false;
- /* Display years in reverse order? Ie. 2000,1999,.... */
- $reverse_years = false;
- /* Should the select boxes be part of an array when returned from PHP?
- e.g. setting it to "birthday", would create "birthday[Day]",
- "birthday[Month]" & "birthday[Year]". Can be combined with prefix */
- $field_array = null;
- /* <select size>'s of the different <select> tags.
- If not set, uses default dropdown. */
- $day_size = null;
- $month_size = null;
- $year_size = null;
- /* Unparsed attributes common to *ALL* the <select>/<input> tags.
- An example might be in the template: all_extra ='class ="foo"'. */
- $all_extra = null;
- /* Separate attributes for the tags. */
- $day_extra = null;
- $month_extra = null;
- $year_extra = null;
- /* Order in which to display the fields.
- "D" -> day, "M" -> month, "Y" -> year. */
- $field_order = 'MDY';
- /* String printed between the different fields. */
- $field_separator = "\n";
- $option_separator = "\n";
- $time = null;
-
- // $all_empty = null;
- // $day_empty = null;
- // $month_empty = null;
- // $year_empty = null;
- $extra_attrs = '';
- $all_id = null;
- $day_id = null;
- $month_id = null;
- $year_id = null;
- foreach ($params as $_key => $_value) {
- switch ($_key) {
- case 'time':
- $$_key = $_value; // we'll handle conversion below
- break;
- case 'month_names':
- if (is_array($_value) && count($_value) === 12) {
- $$_key = $_value;
- } else {
- trigger_error('html_select_date: month_names must be an array of 12 strings', E_USER_NOTICE);
- }
- break;
- case 'prefix':
- case 'field_array':
- case 'start_year':
- case 'end_year':
- case 'day_format':
- case 'day_value_format':
- case 'month_format':
- case 'month_value_format':
- case 'day_size':
- case 'month_size':
- case 'year_size':
- case 'all_extra':
- case 'day_extra':
- case 'month_extra':
- case 'year_extra':
- case 'field_order':
- case 'field_separator':
- case 'option_separator':
- case 'all_empty':
- case 'month_empty':
- case 'day_empty':
- case 'year_empty':
- case 'all_id':
- case 'month_id':
- case 'day_id':
- case 'year_id':
- $$_key = (string)$_value;
- break;
- case 'display_days':
- case 'display_months':
- case 'display_years':
- case 'year_as_text':
- case 'reverse_years':
- $$_key = (bool)$_value;
- break;
- default:
- if (!is_array($_value)) {
- $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
- } else {
- trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
- // Note: date() is faster than strftime()
- // Note: explode(date()) is faster than date() date() date()
-
- if (isset($time) && is_array($time)) {
- if (isset($time[$prefix . 'Year'])) {
- // $_REQUEST[$field_array] given
- foreach ([
- 'Y' => 'Year',
- 'm' => 'Month',
- 'd' => 'Day'
- ] as $_elementKey => $_elementName) {
- $_variableName = '_' . strtolower($_elementName);
- $$_variableName =
- isset($time[$prefix . $_elementName]) ? $time[$prefix . $_elementName] :
- date($_elementKey);
- }
- } elseif (isset($time[$field_array][$prefix . 'Year'])) {
- // $_REQUEST given
- foreach ([
- 'Y' => 'Year',
- 'm' => 'Month',
- 'd' => 'Day'
- ] as $_elementKey => $_elementName) {
- $_variableName = '_' . strtolower($_elementName);
- $$_variableName = isset($time[$field_array][$prefix . $_elementName]) ?
- $time[$field_array][$prefix . $_elementName] : date($_elementKey);
- }
- } else {
- // no date found, use NOW
- [$_year, $_month, $_day] = explode('-', date('Y-m-d'));
- }
- } elseif (isset($time) && preg_match("/(\d*)-(\d*)-(\d*)/", $time, $matches)) {
- $_year = $_month = $_day = null;
- if ($matches[1] > '') $_year = (int) $matches[1];
- if ($matches[2] > '') $_month = (int) $matches[2];
- if ($matches[3] > '') $_day = (int) $matches[3];
- } elseif ($time === null) {
- if (array_key_exists('time', $params)) {
- $_year = $_month = $_day = null;
- } else {
- [$_year, $_month, $_day] = explode('-', date('Y-m-d'));
- }
- } else {
- $template->_checkPlugins(
- array(
- array(
- 'function' => 'smarty_make_timestamp',
- 'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'
- )
- )
- );
- $time = smarty_make_timestamp($time);
- [$_year, $_month, $_day] = explode('-', date('Y-m-d', $time));
- }
-
- // make syntax "+N" or "-N" work with $start_year and $end_year
- // Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr
- foreach (array(
- 'start',
- 'end'
- ) as $key) {
- $key .= '_year';
- $t = $$key;
- if ($t === null) {
- $$key = (int)$_current_year;
- } elseif ($t[ 0 ] === '+') {
- $$key = (int)($_current_year + (int)trim(substr($t, 1)));
- } elseif ($t[ 0 ] === '-') {
- $$key = (int)($_current_year - (int)trim(substr($t, 1)));
- } else {
- $$key = (int)$$key;
- }
- }
- // flip for ascending or descending
- if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) {
- $t = $end_year;
- $end_year = $start_year;
- $start_year = $t;
- }
- // generate year <select> or <input>
- if ($display_years) {
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($year_extra) {
- $_extra .= ' ' . $year_extra;
- }
- if ($year_as_text) {
- $_html_years =
- '<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra .
- $extra_attrs . ' />';
- } else {
- $_html_years = '<select name="' . $_name . '"';
- if ($year_id !== null || $all_id !== null) {
- $_html_years .= ' id="' . smarty_function_escape_special_chars(
- $year_id !== null ?
- ($year_id ? $year_id : $_name) :
- ($all_id ? ($all_id . $_name) :
- $_name)
- ) . '"';
- }
- if ($year_size) {
- $_html_years .= ' size="' . $year_size . '"';
- }
- $_html_years .= $_extra . $extra_attrs . '>' . $option_separator;
- if (isset($year_empty) || isset($all_empty)) {
- $_html_years .= '<option value="">' . (isset($year_empty) ? $year_empty : $all_empty) . '</option>' .
- $option_separator;
- }
- $op = $start_year > $end_year ? -1 : 1;
- for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
- $_html_years .= '<option value="' . $i . '"' . ($_year == $i ? ' selected="selected"' : '') . '>' . $i .
- '</option>' . $option_separator;
- }
- $_html_years .= '</select>';
- }
- }
- // generate month <select> or <input>
- if ($display_months) {
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($month_extra) {
- $_extra .= ' ' . $month_extra;
- }
- $_html_months = '<select name="' . $_name . '"';
- if ($month_id !== null || $all_id !== null) {
- $_html_months .= ' id="' . smarty_function_escape_special_chars(
- $month_id !== null ?
- ($month_id ? $month_id : $_name) :
- ($all_id ? ($all_id . $_name) :
- $_name)
- ) . '"';
- }
- if ($month_size) {
- $_html_months .= ' size="' . $month_size . '"';
- }
- $_html_months .= $_extra . $extra_attrs . '>' . $option_separator;
- if (isset($month_empty) || isset($all_empty)) {
- $_html_months .= '<option value="">' . (isset($month_empty) ? $month_empty : $all_empty) . '</option>' .
- $option_separator;
- }
- for ($i = 1; $i <= 12; $i++) {
- $_val = sprintf('%02d', $i);
- $_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[ $i ]) :
- ($month_format === '%m' ? $_val : @strftime($month_format, $_month_timestamps[ $i ]));
- $_value = $month_value_format === '%m' ? $_val : @strftime($month_value_format, $_month_timestamps[ $i ]);
- $_html_months .= '<option value="' . $_value . '"' . ($_val == $_month ? ' selected="selected"' : '') .
- '>' . $_text . '</option>' . $option_separator;
- }
- $_html_months .= '</select>';
- }
- // generate day <select> or <input>
- if ($display_days) {
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($day_extra) {
- $_extra .= ' ' . $day_extra;
- }
- $_html_days = '<select name="' . $_name . '"';
- if ($day_id !== null || $all_id !== null) {
- $_html_days .= ' id="' .
- smarty_function_escape_special_chars(
- $day_id !== null ? ($day_id ? $day_id : $_name) :
- ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
- }
- if ($day_size) {
- $_html_days .= ' size="' . $day_size . '"';
- }
- $_html_days .= $_extra . $extra_attrs . '>' . $option_separator;
- if (isset($day_empty) || isset($all_empty)) {
- $_html_days .= '<option value="">' . (isset($day_empty) ? $day_empty : $all_empty) . '</option>' .
- $option_separator;
- }
- for ($i = 1; $i <= 31; $i++) {
- $_val = sprintf('%02d', $i);
- $_text = $day_format === '%02d' ? $_val : sprintf($day_format, $i);
- $_value = $day_value_format === '%02d' ? $_val : sprintf($day_value_format, $i);
- $_html_days .= '<option value="' . $_value . '"' . ($_val == $_day ? ' selected="selected"' : '') . '>' .
- $_text . '</option>' . $option_separator;
- }
- $_html_days .= '</select>';
- }
- // order the fields for output
- $_html = '';
- for ($i = 0; $i <= 2; $i++) {
- switch ($field_order[ $i ]) {
- case 'Y':
- case 'y':
- if (isset($_html_years)) {
- if ($_html) {
- $_html .= $field_separator;
- }
- $_html .= $_html_years;
- }
- break;
- case 'm':
- case 'M':
- if (isset($_html_months)) {
- if ($_html) {
- $_html .= $field_separator;
- }
- $_html .= $_html_months;
- }
- break;
- case 'd':
- case 'D':
- if (isset($_html_days)) {
- if ($_html) {
- $_html .= $field_separator;
- }
- $_html .= $_html_days;
- }
- break;
- }
- }
- return $_html;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_select_time.php b/vendor/smarty/smarty/libs/plugins/function.html_select_time.php
deleted file mode 100644
index 256b56b1c..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.html_select_time.php
+++ /dev/null
@@ -1,354 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {html_select_time} function plugin
- * Type: function
- * Name: html_select_time
- * Purpose: Prints the dropdowns for time selection
- *
- * @link https://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time}
- * (Smarty online manual)
- * @author Roberto Berto <roberto@berto.net>
- * @author Monte Ohrt <monte AT ohrt DOT com>
- *
- * @param array $params parameters
- *
- * @param \Smarty_Internal_Template $template
- *
- * @return string
- * @uses smarty_make_timestamp()
- * @throws \SmartyException
- */
-function smarty_function_html_select_time($params, Smarty_Internal_Template $template)
-{
- $template->_checkPlugins(
- array(
- array(
- 'function' => 'smarty_function_escape_special_chars',
- 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
- )
- )
- );
- $prefix = 'Time_';
- $field_array = null;
- $field_separator = "\n";
- $option_separator = "\n";
- $time = null;
- $display_hours = true;
- $display_minutes = true;
- $display_seconds = true;
- $display_meridian = true;
- $hour_format = '%02d';
- $hour_value_format = '%02d';
- $minute_format = '%02d';
- $minute_value_format = '%02d';
- $second_format = '%02d';
- $second_value_format = '%02d';
- $hour_size = null;
- $minute_size = null;
- $second_size = null;
- $meridian_size = null;
- $all_empty = null;
- $hour_empty = null;
- $minute_empty = null;
- $second_empty = null;
- $meridian_empty = null;
- $all_id = null;
- $hour_id = null;
- $minute_id = null;
- $second_id = null;
- $meridian_id = null;
- $use_24_hours = true;
- $minute_interval = 1;
- $second_interval = 1;
- $extra_attrs = '';
- $all_extra = null;
- $hour_extra = null;
- $minute_extra = null;
- $second_extra = null;
- $meridian_extra = null;
- foreach ($params as $_key => $_value) {
- switch ($_key) {
- case 'time':
- if (!is_array($_value) && $_value !== null) {
- $template->_checkPlugins(
- array(
- array(
- 'function' => 'smarty_make_timestamp',
- 'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'
- )
- )
- );
- $time = smarty_make_timestamp($_value);
- }
- break;
- case 'prefix':
- case 'field_array':
- case 'field_separator':
- case 'option_separator':
- case 'all_extra':
- case 'hour_extra':
- case 'minute_extra':
- case 'second_extra':
- case 'meridian_extra':
- case 'all_empty':
- case 'hour_empty':
- case 'minute_empty':
- case 'second_empty':
- case 'meridian_empty':
- case 'all_id':
- case 'hour_id':
- case 'minute_id':
- case 'second_id':
- case 'meridian_id':
- case 'hour_format':
- case 'hour_value_format':
- case 'minute_format':
- case 'minute_value_format':
- case 'second_format':
- case 'second_value_format':
- $$_key = (string)$_value;
- break;
- case 'display_hours':
- case 'display_minutes':
- case 'display_seconds':
- case 'display_meridian':
- case 'use_24_hours':
- $$_key = (bool)$_value;
- break;
- case 'minute_interval':
- case 'second_interval':
- case 'hour_size':
- case 'minute_size':
- case 'second_size':
- case 'meridian_size':
- $$_key = (int)$_value;
- break;
- default:
- if (!is_array($_value)) {
- $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
- } else {
- trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
- if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) {
- if (isset($params[ 'time' ][ $prefix . 'Hour' ])) {
- // $_REQUEST[$field_array] given
- foreach (array(
- 'H' => 'Hour',
- 'i' => 'Minute',
- 's' => 'Second'
- ) as $_elementKey => $_elementName) {
- $_variableName = '_' . strtolower($_elementName);
- $$_variableName =
- isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] :
- date($_elementKey);
- }
- $_meridian =
- isset($params[ 'time' ][ $prefix . 'Meridian' ]) ? (' ' . $params[ 'time' ][ $prefix . 'Meridian' ]) :
- '';
- $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
- list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
- } elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Hour' ])) {
- // $_REQUEST given
- foreach (array(
- 'H' => 'Hour',
- 'i' => 'Minute',
- 's' => 'Second'
- ) as $_elementKey => $_elementName) {
- $_variableName = '_' . strtolower($_elementName);
- $$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ?
- $params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey);
- }
- $_meridian = isset($params[ 'time' ][ $field_array ][ $prefix . 'Meridian' ]) ?
- (' ' . $params[ 'time' ][ $field_array ][ $prefix . 'Meridian' ]) : '';
- $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
- list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
- } else {
- // no date found, use NOW
- list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
- }
- } elseif ($time === null) {
- if (array_key_exists('time', $params)) {
- $_hour = $_minute = $_second = $time = null;
- } else {
- list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s'));
- }
- } else {
- list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
- }
- // generate hour <select>
- if ($display_hours) {
- $_html_hours = '';
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Hour]') : ($prefix . 'Hour');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($hour_extra) {
- $_extra .= ' ' . $hour_extra;
- }
- $_html_hours = '<select name="' . $_name . '"';
- if ($hour_id !== null || $all_id !== null) {
- $_html_hours .= ' id="' .
- smarty_function_escape_special_chars(
- $hour_id !== null ? ($hour_id ? $hour_id : $_name) :
- ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
- }
- if ($hour_size) {
- $_html_hours .= ' size="' . $hour_size . '"';
- }
- $_html_hours .= $_extra . $extra_attrs . '>' . $option_separator;
- if (isset($hour_empty) || isset($all_empty)) {
- $_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty : $all_empty) . '</option>' .
- $option_separator;
- }
- $start = $use_24_hours ? 0 : 1;
- $end = $use_24_hours ? 23 : 12;
- for ($i = $start; $i <= $end; $i++) {
- $_val = sprintf('%02d', $i);
- $_text = $hour_format === '%02d' ? $_val : sprintf($hour_format, $i);
- $_value = $hour_value_format === '%02d' ? $_val : sprintf($hour_value_format, $i);
- if (!$use_24_hours) {
- $_hour12 = $_hour == 0 ? 12 : ($_hour <= 12 ? $_hour : $_hour - 12);
- }
- $selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null;
- $_html_hours .= '<option value="' . $_value . '"' . ($selected ? ' selected="selected"' : '') . '>' .
- $_text . '</option>' . $option_separator;
- }
- $_html_hours .= '</select>';
- }
- // generate minute <select>
- if ($display_minutes) {
- $_html_minutes = '';
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Minute]') : ($prefix . 'Minute');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($minute_extra) {
- $_extra .= ' ' . $minute_extra;
- }
- $_html_minutes = '<select name="' . $_name . '"';
- if ($minute_id !== null || $all_id !== null) {
- $_html_minutes .= ' id="' . smarty_function_escape_special_chars(
- $minute_id !== null ?
- ($minute_id ? $minute_id : $_name) :
- ($all_id ? ($all_id . $_name) :
- $_name)
- ) . '"';
- }
- if ($minute_size) {
- $_html_minutes .= ' size="' . $minute_size . '"';
- }
- $_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator;
- if (isset($minute_empty) || isset($all_empty)) {
- $_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty : $all_empty) . '</option>' .
- $option_separator;
- }
- $selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
- for ($i = 0; $i <= 59; $i += $minute_interval) {
- $_val = sprintf('%02d', $i);
- $_text = $minute_format === '%02d' ? $_val : sprintf($minute_format, $i);
- $_value = $minute_value_format === '%02d' ? $_val : sprintf($minute_value_format, $i);
- $_html_minutes .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
- '>' . $_text . '</option>' . $option_separator;
- }
- $_html_minutes .= '</select>';
- }
- // generate second <select>
- if ($display_seconds) {
- $_html_seconds = '';
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Second]') : ($prefix . 'Second');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($second_extra) {
- $_extra .= ' ' . $second_extra;
- }
- $_html_seconds = '<select name="' . $_name . '"';
- if ($second_id !== null || $all_id !== null) {
- $_html_seconds .= ' id="' . smarty_function_escape_special_chars(
- $second_id !== null ?
- ($second_id ? $second_id : $_name) :
- ($all_id ? ($all_id . $_name) :
- $_name)
- ) . '"';
- }
- if ($second_size) {
- $_html_seconds .= ' size="' . $second_size . '"';
- }
- $_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator;
- if (isset($second_empty) || isset($all_empty)) {
- $_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty : $all_empty) . '</option>' .
- $option_separator;
- }
- $selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
- for ($i = 0; $i <= 59; $i += $second_interval) {
- $_val = sprintf('%02d', $i);
- $_text = $second_format === '%02d' ? $_val : sprintf($second_format, $i);
- $_value = $second_value_format === '%02d' ? $_val : sprintf($second_value_format, $i);
- $_html_seconds .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
- '>' . $_text . '</option>' . $option_separator;
- }
- $_html_seconds .= '</select>';
- }
- // generate meridian <select>
- if ($display_meridian && !$use_24_hours) {
- $_html_meridian = '';
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Meridian]') : ($prefix . 'Meridian');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($meridian_extra) {
- $_extra .= ' ' . $meridian_extra;
- }
- $_html_meridian = '<select name="' . $_name . '"';
- if ($meridian_id !== null || $all_id !== null) {
- $_html_meridian .= ' id="' . smarty_function_escape_special_chars(
- $meridian_id !== null ?
- ($meridian_id ? $meridian_id :
- $_name) :
- ($all_id ? ($all_id . $_name) :
- $_name)
- ) . '"';
- }
- if ($meridian_size) {
- $_html_meridian .= ' size="' . $meridian_size . '"';
- }
- $_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator;
- if (isset($meridian_empty) || isset($all_empty)) {
- $_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty : $all_empty) .
- '</option>' . $option_separator;
- }
- $_html_meridian .= '<option value="am"' . ($_hour > 0 && $_hour < 12 ? ' selected="selected"' : '') .
- '>AM</option>' . $option_separator . '<option value="pm"' .
- ($_hour < 12 ? '' : ' selected="selected"') . '>PM</option>' . $option_separator .
- '</select>';
- }
- $_html = '';
- foreach (array(
- '_html_hours',
- '_html_minutes',
- '_html_seconds',
- '_html_meridian'
- ) as $k) {
- if (isset($$k)) {
- if ($_html) {
- $_html .= $field_separator;
- }
- $_html .= $$k;
- }
- }
- return $_html;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_table.php b/vendor/smarty/smarty/libs/plugins/function.html_table.php
deleted file mode 100644
index 17b0586e2..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.html_table.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {html_table} function plugin
- * Type: function
- * Name: html_table
- * Date: Feb 17, 2003
- * Purpose: make an html table from an array of data
- * Params:
- *
- * - loop - array to loop through
- * - cols - number of columns, comma separated list of column names
- * or array of column names
- * - rows - number of rows
- * - table_attr - table attributes
- * - th_attr - table heading attributes (arrays are cycled)
- * - tr_attr - table row attributes (arrays are cycled)
- * - td_attr - table cell attributes (arrays are cycled)
- * - trailpad - value to pad trailing cells with
- * - caption - text for caption element
- * - vdir - vertical direction (default: "down", means top-to-bottom)
- * - hdir - horizontal direction (default: "right", means left-to-right)
- * - inner - inner loop (default "cols": print $loop line by line,
- * $loop will be printed column by column otherwise)
- *
- * Examples:
- *
- * {table loop=$data}
- * {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
- * {table loop=$data cols="first,second,third" tr_attr=$colors}
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credit to Messju Mohr <messju at lammfellpuschen dot de>
- * @author credit to boots <boots dot smarty at yahoo dot com>
- * @version 1.1
- * @link https://www.smarty.net/manual/en/language.function.html.table.php {html_table}
- * (Smarty online manual)
- *
- * @param array $params parameters
- *
- * @return string
- */
-function smarty_function_html_table($params)
-{
- $table_attr = 'border="1"';
- $tr_attr = '';
- $th_attr = '';
- $td_attr = '';
- $cols = $cols_count = 3;
- $rows = 3;
- $trailpad = '&nbsp;';
- $vdir = 'down';
- $hdir = 'right';
- $inner = 'cols';
- $caption = '';
- $loop = null;
- if (!isset($params[ 'loop' ])) {
- trigger_error("html_table: missing 'loop' parameter", E_USER_WARNING);
- return;
- }
- foreach ($params as $_key => $_value) {
- switch ($_key) {
- case 'loop':
- $$_key = (array)$_value;
- break;
- case 'cols':
- if (is_array($_value) && !empty($_value)) {
- $cols = $_value;
- $cols_count = count($_value);
- } elseif (!is_numeric($_value) && is_string($_value) && !empty($_value)) {
- $cols = explode(',', $_value);
- $cols_count = count($cols);
- } elseif (!empty($_value)) {
- $cols_count = (int)$_value;
- } else {
- $cols_count = $cols;
- }
- break;
- case 'rows':
- $$_key = (int)$_value;
- break;
- case 'table_attr':
- case 'trailpad':
- case 'hdir':
- case 'vdir':
- case 'inner':
- case 'caption':
- $$_key = (string)$_value;
- break;
- case 'tr_attr':
- case 'td_attr':
- case 'th_attr':
- $$_key = $_value;
- break;
- }
- }
- $loop_count = count($loop);
- if (empty($params[ 'rows' ])) {
- /* no rows specified */
- $rows = ceil($loop_count / $cols_count);
- } elseif (empty($params[ 'cols' ])) {
- if (!empty($params[ 'rows' ])) {
- /* no cols specified, but rows */
- $cols_count = ceil($loop_count / $rows);
- }
- }
- $output = "<table $table_attr>\n";
- if (!empty($caption)) {
- $output .= '<caption>' . $caption . "</caption>\n";
- }
- if (is_array($cols)) {
- $cols = ($hdir === 'right') ? $cols : array_reverse($cols);
- $output .= "<thead><tr>\n";
- for ($r = 0; $r < $cols_count; $r++) {
- $output .= '<th' . smarty_function_html_table_cycle('th', $th_attr, $r) . '>';
- $output .= $cols[ $r ];
- $output .= "</th>\n";
- }
- $output .= "</tr></thead>\n";
- }
- $output .= "<tbody>\n";
- for ($r = 0; $r < $rows; $r++) {
- $output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n";
- $rx = ($vdir === 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count;
- for ($c = 0; $c < $cols_count; $c++) {
- $x = ($hdir === 'right') ? $rx + $c : $rx + $cols_count - 1 - $c;
- if ($inner !== 'cols') {
- /* shuffle x to loop over rows*/
- $x = floor($x / $cols_count) + ($x % $cols_count) * $rows;
- }
- if ($x < $loop_count) {
- $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[ $x ] . "</td>\n";
- } else {
- $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">$trailpad</td>\n";
- }
- }
- $output .= "</tr>\n";
- }
- $output .= "</tbody>\n";
- $output .= "</table>\n";
- return $output;
-}
-
-/**
- * @param $name
- * @param $var
- * @param $no
- *
- * @return string
- */
-function smarty_function_html_table_cycle($name, $var, $no)
-{
- if (!is_array($var)) {
- $ret = $var;
- } else {
- $ret = $var[ $no % count($var) ];
- }
- return ($ret) ? ' ' . $ret : '';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.mailto.php b/vendor/smarty/smarty/libs/plugins/function.mailto.php
deleted file mode 100644
index 671ac0694..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.mailto.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {mailto} function plugin
- * Type: function
- * Name: mailto
- * Date: May 21, 2002
- * Purpose: automate mailto address link creation, and optionally encode them.
- * Params:
- *
- * - address - (required) - e-mail address
- * - text - (optional) - text to display, default is address
- * - encode - (optional) - can be one of:
- * * none : no encoding (default)
- * * javascript : encode with javascript
- * * javascript_charcode : encode with javascript charcode
- * * hex : encode with hexadecimal (no javascript)
- * - cc - (optional) - address(es) to carbon copy
- * - bcc - (optional) - address(es) to blind carbon copy
- * - subject - (optional) - e-mail subject
- * - newsgroups - (optional) - newsgroup(s) to post to
- * - followupto - (optional) - address(es) to follow up to
- * - extra - (optional) - extra tags for the href link
- *
- * Examples:
- *
- * {mailto address="me@domain.com"}
- * {mailto address="me@domain.com" encode="javascript"}
- * {mailto address="me@domain.com" encode="hex"}
- * {mailto address="me@domain.com" subject="Hello to you!"}
- * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
- * {mailto address="me@domain.com" extra='class="mailto"'}
- *
- * @link https://www.smarty.net/manual/en/language.function.mailto.php {mailto}
- * (Smarty online manual)
- * @version 1.2
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credits to Jason Sweat (added cc, bcc and subject functionality)
- *
- * @param array $params parameters
- *
- * @return string
- */
-function smarty_function_mailto($params)
-{
- static $_allowed_encoding = [
- 'javascript' => true,
- 'javascript_charcode' => true,
- 'hex' => true,
- 'none' => true
- ];
-
- $extra = '';
- if (empty($params[ 'address' ])) {
- trigger_error("mailto: missing 'address' parameter", E_USER_WARNING);
- return;
- } else {
- $address = $params[ 'address' ];
- }
-
- $text = $address;
-
- // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
- // so, don't encode it.
- $mail_parms = [];
- foreach ($params as $var => $value) {
- switch ($var) {
- case 'cc':
- case 'bcc':
- case 'followupto':
- if (!empty($value)) {
- $mail_parms[] = $var . '=' . str_replace(['%40', '%2C'], ['@', ','], rawurlencode($value));
- }
- break;
- case 'subject':
- case 'newsgroups':
- $mail_parms[] = $var . '=' . rawurlencode($value);
- break;
- case 'extra':
- case 'text':
- $$var = $value;
- // no break
- default:
- }
- }
-
- if ($mail_parms) {
- $address .= '?' . join('&', $mail_parms);
- }
- $encode = (empty($params[ 'encode' ])) ? 'none' : $params[ 'encode' ];
- if (!isset($_allowed_encoding[ $encode ])) {
- trigger_error(
- "mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex",
- E_USER_WARNING
- );
- return;
- }
-
- $string = '<a href="mailto:' . htmlspecialchars($address, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, Smarty::$_CHARSET) .
- '" ' . $extra . '>' . htmlspecialchars($text, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, Smarty::$_CHARSET) . '</a>';
-
- if ($encode === 'javascript') {
- $js_encode = '';
- for ($x = 0, $_length = strlen($string); $x < $_length; $x++) {
- $js_encode .= '%' . bin2hex($string[ $x ]);
- }
- return '<script type="text/javascript">document.write(unescape(\'' . $js_encode . '\'))</script>';
- } elseif ($encode === 'javascript_charcode') {
- for ($x = 0, $_length = strlen($string); $x < $_length; $x++) {
- $ord[] = ord($string[ $x ]);
- }
- return '<script type="text/javascript">document.write(String.fromCharCode(' . implode(',', $ord) . '))</script>';
- } elseif ($encode === 'hex') {
- preg_match('!^(.*)(\?.*)$!', $address, $match);
- if (!empty($match[ 2 ])) {
- trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING);
- return;
- }
- $address_encode = '';
- for ($x = 0, $_length = strlen($address); $x < $_length; $x++) {
- if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[ $x ])) {
- $address_encode .= '%' . bin2hex($address[ $x ]);
- } else {
- $address_encode .= $address[ $x ];
- }
- }
- $text_encode = '';
- for ($x = 0, $_length = strlen($text); $x < $_length; $x++) {
- $text_encode .= '&#x' . bin2hex($text[ $x ]) . ';';
- }
- $mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
- return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>';
- } else {
- // no encoding
- return $string;
- }
-}
diff --git a/vendor/smarty/smarty/libs/plugins/function.math.php b/vendor/smarty/smarty/libs/plugins/function.math.php
deleted file mode 100644
index 34912d239..000000000
--- a/vendor/smarty/smarty/libs/plugins/function.math.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * This plugin is only for Smarty2 BC
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-/**
- * Smarty {math} function plugin
- * Type: function
- * Name: math
- * Purpose: handle math computations in template
- *
- * @link https://www.smarty.net/manual/en/language.function.math.php {math}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @return string|null
- */
-function smarty_function_math($params, $template)
-{
- static $_allowed_funcs =
- array(
- 'int' => true,
- 'abs' => true,
- 'ceil' => true,
- 'acos' => true,
- 'acosh' => true,
- 'cos' => true,
- 'cosh' => true,
- 'deg2rad' => true,
- 'rad2deg' => true,
- 'exp' => true,
- 'floor' => true,
- 'log' => true,
- 'log10' => true,
- 'max' => true,
- 'min' => true,
- 'pi' => true,
- 'pow' => true,
- 'rand' => true,
- 'round' => true,
- 'asin' => true,
- 'asinh' => true,
- 'sin' => true,
- 'sinh' => true,
- 'sqrt' => true,
- 'srand' => true,
- 'atan' => true,
- 'atanh' => true,
- 'tan' => true,
- 'tanh' => true
- );
-
- // be sure equation parameter is present
- if (empty($params[ 'equation' ])) {
- trigger_error("math: missing equation parameter", E_USER_WARNING);
- return;
- }
- $equation = $params[ 'equation' ];
-
- // Remove whitespaces
- $equation = preg_replace('/\s+/', '', $equation);
-
- // Adapted from https://www.php.net/manual/en/function.eval.php#107377
- $number = '-?(?:\d+(?:[,.]\d+)?|pi|π)'; // What is a number
- $functionsOrVars = '((?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*))';
- $operators = '[,+\/*\^%-]'; // Allowed math operators
- $regexp = '/^(('.$number.'|'.$functionsOrVars.'|('.$functionsOrVars.'\s*\((?1)*\)|\((?1)*\)))(?:'.$operators.'(?1))?)+$/';
-
- if (!preg_match($regexp, $equation)) {
- trigger_error("math: illegal characters", E_USER_WARNING);
- return;
- }
-
- // make sure parenthesis are balanced
- if (substr_count($equation, '(') !== substr_count($equation, ')')) {
- trigger_error("math: unbalanced parenthesis", E_USER_WARNING);
- return;
- }
-
- // disallow backticks
- if (strpos($equation, '`') !== false) {
- trigger_error("math: backtick character not allowed in equation", E_USER_WARNING);
- return;
- }
-
- // also disallow dollar signs
- if (strpos($equation, '$') !== false) {
- trigger_error("math: dollar signs not allowed in equation", E_USER_WARNING);
- return;
- }
- foreach ($params as $key => $val) {
- if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
- // make sure value is not empty
- if (strlen($val) === 0) {
- trigger_error("math: parameter '{$key}' is empty", E_USER_WARNING);
- return;
- }
- if (!is_numeric($val)) {
- trigger_error("math: parameter '{$key}' is not numeric", E_USER_WARNING);
- return;
- }
- }
- }
- // match all vars in equation, make sure all are passed
- preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match);
- foreach ($match[ 1 ] as $curr_var) {
- if ($curr_var && !isset($params[ $curr_var ]) && !isset($_allowed_funcs[ $curr_var ])) {
- trigger_error(
- "math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'",
- E_USER_WARNING
- );
- return;
- }
- }
- foreach ($params as $key => $val) {
- if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
- $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
- }
- }
- $smarty_math_result = null;
- eval("\$smarty_math_result = " . $equation . ";");
-
- if (empty($params[ 'format' ])) {
- if (empty($params[ 'assign' ])) {
- return $smarty_math_result;
- } else {
- $template->assign($params[ 'assign' ], $smarty_math_result);
- }
- } else {
- if (empty($params[ 'assign' ])) {
- printf($params[ 'format' ], $smarty_math_result);
- } else {
- $template->assign($params[ 'assign' ], sprintf($params[ 'format' ], $smarty_math_result));
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.capitalize.php b/vendor/smarty/smarty/libs/plugins/modifier.capitalize.php
deleted file mode 100644
index 2903d61d7..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.capitalize.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-/**
- * Smarty capitalize modifier plugin
- * Type: modifier
- * Name: capitalize
- * Purpose: capitalize words in the string
- * {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }}
- *
- * @param string $string string to capitalize
- * @param boolean $uc_digits also capitalize "x123" to "X123"
- * @param boolean $lc_rest capitalize first letters, lowercase all following letters "aAa" to "Aaa"
- *
- * @return string capitalized string
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Rodney Rehm
- */
-function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = false)
-{
- $string = (string) $string;
-
- if (Smarty::$_MBSTRING) {
- if ($lc_rest) {
- // uppercase (including hyphenated words)
- $upper_string = mb_convert_case($string, MB_CASE_TITLE, Smarty::$_CHARSET);
- } else {
- // uppercase word breaks
- $upper_string = preg_replace_callback(
- "!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER,
- 'smarty_mod_cap_mbconvert_cb',
- $string
- );
- }
- // check uc_digits case
- if (!$uc_digits) {
- if (preg_match_all(
- "!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER,
- $string,
- $matches,
- PREG_OFFSET_CAPTURE
- )
- ) {
- foreach ($matches[ 1 ] as $match) {
- $upper_string =
- substr_replace(
- $upper_string,
- mb_strtolower($match[ 0 ], Smarty::$_CHARSET),
- $match[ 1 ],
- strlen($match[ 0 ])
- );
- }
- }
- }
- $upper_string =
- preg_replace_callback(
- "!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER,
- 'smarty_mod_cap_mbconvert2_cb',
- $upper_string
- );
- return $upper_string;
- }
- // lowercase first
- if ($lc_rest) {
- $string = strtolower($string);
- }
- // uppercase (including hyphenated words)
- $upper_string =
- preg_replace_callback(
- "!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER,
- 'smarty_mod_cap_ucfirst_cb',
- $string
- );
- // check uc_digits case
- if (!$uc_digits) {
- if (preg_match_all(
- "!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER,
- $string,
- $matches,
- PREG_OFFSET_CAPTURE
- )
- ) {
- foreach ($matches[ 1 ] as $match) {
- $upper_string =
- substr_replace($upper_string, strtolower($match[ 0 ]), $match[ 1 ], strlen($match[ 0 ]));
- }
- }
- }
- $upper_string = preg_replace_callback(
- "!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER,
- 'smarty_mod_cap_ucfirst2_cb',
- $upper_string
- );
- return $upper_string;
-}
-
-/**
- *
- * Bug: create_function() use exhausts memory when used in long loops
- * Fix: use declared functions for callbacks instead of using create_function()
- * Note: This can be fixed using anonymous functions instead, but that requires PHP >= 5.3
- *
- * @author Kyle Renfrow
- */
-/**
- * @param $matches
- *
- * @return string
- */
-function smarty_mod_cap_mbconvert_cb($matches)
-{
- return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 2 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
-}
-
-/**
- * @param $matches
- *
- * @return string
- */
-function smarty_mod_cap_mbconvert2_cb($matches)
-{
- return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 3 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
-}
-
-/**
- * @param $matches
- *
- * @return string
- */
-function smarty_mod_cap_ucfirst_cb($matches)
-{
- return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 2 ]));
-}
-
-/**
- * @param $matches
- *
- * @return string
- */
-function smarty_mod_cap_ucfirst2_cb($matches)
-{
- return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 3 ]));
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.count.php b/vendor/smarty/smarty/libs/plugins/modifier.count.php
deleted file mode 100644
index ca35fc115..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.count.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-/**
- * Smarty count modifier plugin
- * Type: modifier
- * Name: count
- * Purpose: counts all elements in an array or in a Countable object
- * Input:
- * - Countable|array: array or object to count
- * - mode: int defaults to 0 for normal count mode, if set to 1 counts recursive
- *
- * @param mixed $arrayOrObject input array/object
- * @param int $mode count mode
- *
- * @return int
- */
-function smarty_modifier_count($arrayOrObject, $mode = 0)
-{
- /*
- * @see https://www.php.net/count
- * > Prior to PHP 8.0.0, if the parameter was neither an array nor an object that implements the Countable interface,
- * > 1 would be returned, unless value was null, in which case 0 would be returned.
- */
-
- if ($arrayOrObject instanceof Countable || is_array($arrayOrObject)) {
- return count($arrayOrObject, (int) $mode);
- } elseif ($arrayOrObject === null) {
- return 0;
- }
- return 1;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.date_format.php b/vendor/smarty/smarty/libs/plugins/modifier.date_format.php
deleted file mode 100644
index e3589fd07..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.date_format.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-/**
- * Smarty date_format modifier plugin
- * Type: modifier
- * Name: date_format
- * Purpose: format datestamps via strftime
- * Input:
- * - string: input date string
- * - format: strftime format for output
- * - default_date: default date if $string is empty
- *
- * @link https://www.smarty.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string input date string
- * @param string $format strftime format for output
- * @param string $default_date default date if $string is empty
- * @param string $formatter either 'strftime' or 'auto'
- *
- * @return string |void
- * @uses smarty_make_timestamp()
- */
-function smarty_modifier_date_format($string, $format = null, $default_date = '', $formatter = 'auto')
-{
- if ($format === null) {
- $format = Smarty::$_DATE_FORMAT;
- }
- /**
- * require_once the {@link shared.make_timestamp.php} plugin
- */
- static $is_loaded = false;
- if (!$is_loaded) {
- if (!is_callable('smarty_make_timestamp')) {
- include_once SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php';
- }
- $is_loaded = true;
- }
- if (!empty($string) && $string !== '0000-00-00' && $string !== '0000-00-00 00:00:00') {
- $timestamp = smarty_make_timestamp($string);
- } elseif (!empty($default_date)) {
- $timestamp = smarty_make_timestamp($default_date);
- } else {
- return;
- }
- if ($formatter === 'strftime' || ($formatter === 'auto' && strpos($format, '%') !== false)) {
- if (Smarty::$_IS_WINDOWS) {
- $_win_from = array(
- '%D',
- '%h',
- '%n',
- '%r',
- '%R',
- '%t',
- '%T'
- );
- $_win_to = array(
- '%m/%d/%y',
- '%b',
- "\n",
- '%I:%M:%S %p',
- '%H:%M',
- "\t",
- '%H:%M:%S'
- );
- if (strpos($format, '%e') !== false) {
- $_win_from[] = '%e';
- $_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
- }
- if (strpos($format, '%l') !== false) {
- $_win_from[] = '%l';
- $_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
- }
- $format = str_replace($_win_from, $_win_to, $format);
- }
- // @ to suppress deprecation errors when running in PHP8.1 or higher.
- return @strftime($format, $timestamp);
- } else {
- return date($format, $timestamp);
- }
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php b/vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php
deleted file mode 100644
index 78397d017..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage Debug
- */
-/**
- * Smarty debug_print_var modifier plugin
- * Type: modifier
- * Name: debug_print_var
- * Purpose: formats variable contents for display in the console
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param array|object $var variable to be formatted
- * @param int $max maximum recursion depth if $var is an array or object
- * @param int $length maximum string length if $var is a string
- * @param int $depth actual recursion depth
- * @param array $objects processed objects in actual depth to prevent recursive object processing
- *
- * @return string
- */
-function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = 0, $objects = array())
-{
- $_replace = array("\n" => '\n', "\r" => '\r', "\t" => '\t');
- switch (gettype($var)) {
- case 'array':
- $results = '<b>Array (' . count($var) . ')</b>';
- if ($depth === $max) {
- break;
- }
- foreach ($var as $curr_key => $curr_val) {
- $results .= '<br>' . str_repeat('&nbsp;', $depth * 2) . '<b>' . strtr($curr_key, $_replace) .
- '</b> =&gt; ' .
- smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects);
- $depth--;
- }
- break;
- case 'object':
- $object_vars = get_object_vars($var);
- $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>';
- if (in_array($var, $objects)) {
- $results .= ' called recursive';
- break;
- }
- if ($depth === $max) {
- break;
- }
- $objects[] = $var;
- foreach ($object_vars as $curr_key => $curr_val) {
- $results .= '<br>' . str_repeat('&nbsp;', $depth * 2) . '<b> -&gt;' . strtr($curr_key, $_replace) .
- '</b> = ' . smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects);
- $depth--;
- }
- break;
- case 'boolean':
- case 'NULL':
- case 'resource':
- if (true === $var) {
- $results = 'true';
- } elseif (false === $var) {
- $results = 'false';
- } elseif (null === $var) {
- $results = 'null';
- } else {
- $results = htmlspecialchars((string)$var);
- }
- $results = '<i>' . $results . '</i>';
- break;
- case 'integer':
- case 'float':
- $results = htmlspecialchars((string)$var);
- break;
- case 'string':
- $results = strtr($var, $_replace);
- if (Smarty::$_MBSTRING) {
- if (mb_strlen($var, Smarty::$_CHARSET) > $length) {
- $results = mb_substr($var, 0, $length - 3, Smarty::$_CHARSET) . '...';
- }
- } else {
- if (isset($var[ $length ])) {
- $results = substr($var, 0, $length - 3) . '...';
- }
- }
- $results = htmlspecialchars('"' . $results . '"', ENT_QUOTES, Smarty::$_CHARSET);
- break;
- case 'unknown type':
- default:
- $results = strtr((string)$var, $_replace);
- if (Smarty::$_MBSTRING) {
- if (mb_strlen($results, Smarty::$_CHARSET) > $length) {
- $results = mb_substr($results, 0, $length - 3, Smarty::$_CHARSET) . '...';
- }
- } else {
- if (strlen($results) > $length) {
- $results = substr($results, 0, $length - 3) . '...';
- }
- }
- $results = htmlspecialchars($results, ENT_QUOTES, Smarty::$_CHARSET);
- }
- return $results;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.escape.php b/vendor/smarty/smarty/libs/plugins/modifier.escape.php
deleted file mode 100644
index e168679c3..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.escape.php
+++ /dev/null
@@ -1,189 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-/**
- * Smarty escape modifier plugin
- * Type: modifier
- * Name: escape
- * Purpose: escape string for output
- *
- * @link https://www.smarty.net/docs/en/language.modifier.escape
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string input string
- * @param string $esc_type escape type
- * @param string $char_set character set, used for htmlspecialchars() or htmlentities()
- * @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities()
- *
- * @return string escaped input string
- */
-function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)
-{
- static $is_loaded_1 = false;
- static $is_loaded_2 = false;
- if (!$char_set) {
- $char_set = Smarty::$_CHARSET;
- }
-
- $string = (string)$string;
-
- switch ($esc_type) {
- case 'html':
- return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
- // no break
- case 'htmlall':
- if (Smarty::$_MBSTRING) {
- $string = mb_convert_encoding($string, 'UTF-8', $char_set);
- return htmlentities($string, ENT_QUOTES, 'UTF-8', $double_encode);
- }
- // no MBString fallback
- return htmlentities($string, ENT_QUOTES, $char_set, $double_encode);
- // no break
- case 'url':
- return rawurlencode($string);
- case 'urlpathinfo':
- return str_replace('%2F', '/', rawurlencode($string));
- case 'quotes':
- // escape unescaped single quotes
- return preg_replace("%(?<!\\\\)'%", "\\'", $string);
- case 'hex':
- // escape every byte into hex
- // Note that the UTF-8 encoded character ä will be represented as %c3%a4
- $return = '';
- $_length = strlen($string);
- for ($x = 0; $x < $_length; $x++) {
- $return .= '%' . bin2hex($string[ $x ]);
- }
- return $return;
- case 'hexentity':
- $return = '';
- if (Smarty::$_MBSTRING) {
- if (!$is_loaded_1) {
- if (!is_callable('smarty_mb_to_unicode')) {
- include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php';
- }
- $is_loaded_1 = true;
- }
- $return = '';
- foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
- $return .= '&#x' . strtoupper(dechex($unicode)) . ';';
- }
- return $return;
- }
- // no MBString fallback
- $_length = strlen($string);
- for ($x = 0; $x < $_length; $x++) {
- $return .= '&#x' . bin2hex($string[ $x ]) . ';';
- }
- return $return;
- case 'decentity':
- $return = '';
- if (Smarty::$_MBSTRING) {
- if (!$is_loaded_1) {
- if (!is_callable('smarty_mb_to_unicode')) {
- include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php';
- }
- $is_loaded_1 = true;
- }
- $return = '';
- foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
- $return .= '&#' . $unicode . ';';
- }
- return $return;
- }
- // no MBString fallback
- $_length = strlen($string);
- for ($x = 0; $x < $_length; $x++) {
- $return .= '&#' . ord($string[ $x ]) . ';';
- }
- return $return;
- case 'javascript':
- // escape quotes and backslashes, newlines, etc.
- return strtr(
- $string,
- array(
- '\\' => '\\\\',
- "'" => "\\'",
- '"' => '\\"',
- "\r" => '\\r',
- "\n" => '\\n',
- '</' => '<\/',
- // see https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements
- '<!--' => '<\!--',
- '<s' => '<\s',
- '<S' => '<\S',
- "`" => "\\\\`",
- "\${" => "\\\\\\$\\{"
- )
- );
- case 'mail':
- if (Smarty::$_MBSTRING) {
- if (!$is_loaded_2) {
- if (!is_callable('smarty_mb_str_replace')) {
- include_once SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php';
- }
- $is_loaded_2 = true;
- }
- return smarty_mb_str_replace(
- array(
- '@',
- '.'
- ),
- array(
- ' [AT] ',
- ' [DOT] '
- ),
- $string
- );
- }
- // no MBString fallback
- return str_replace(
- array(
- '@',
- '.'
- ),
- array(
- ' [AT] ',
- ' [DOT] '
- ),
- $string
- );
- case 'nonstd':
- // escape non-standard chars, such as ms document quotes
- $return = '';
- if (Smarty::$_MBSTRING) {
- if (!$is_loaded_1) {
- if (!is_callable('smarty_mb_to_unicode')) {
- include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php';
- }
- $is_loaded_1 = true;
- }
- foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
- if ($unicode >= 126) {
- $return .= '&#' . $unicode . ';';
- } else {
- $return .= chr($unicode);
- }
- }
- return $return;
- }
- $_length = strlen($string);
- for ($_i = 0; $_i < $_length; $_i++) {
- $_ord = ord(substr($string, $_i, 1));
- // non-standard char, escape it
- if ($_ord >= 126) {
- $return .= '&#' . $_ord . ';';
- } else {
- $return .= substr($string, $_i, 1);
- }
- }
- return $return;
- default:
- trigger_error("escape: unsupported type: $esc_type - returning unmodified string", E_USER_NOTICE);
- return $string;
- }
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.explode.php b/vendor/smarty/smarty/libs/plugins/modifier.explode.php
deleted file mode 100644
index 5186fde3d..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.explode.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-
-/**
- * Smarty explode modifier plugin
- * Type: modifier
- * Name: explode
- * Purpose: split a string by a string
- *
- * @param string $separator
- * @param string $string
- * @param int|null $limit
- *
- * @return array
- */
-function smarty_modifier_explode($separator, $string, ?int $limit = null)
-{
- // provide $string default to prevent deprecation errors in PHP >=8.1
- return explode($separator, $string ?? '', $limit ?? PHP_INT_MAX);
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.implode.php b/vendor/smarty/smarty/libs/plugins/modifier.implode.php
deleted file mode 100644
index 679d71d72..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.implode.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-
-function smarty_modifier_implode($values, $separator = '')
-{
- if (is_array($separator)) {
- return implode((string) ($values ?? ''), (array) $separator);
- }
- return implode((string) ($separator ?? ''), (array) $values);
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.mb_wordwrap.php b/vendor/smarty/smarty/libs/plugins/modifier.mb_wordwrap.php
deleted file mode 100644
index 7c7bd875f..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.mb_wordwrap.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-/**
- * Smarty wordwrap modifier plugin
- * Type: modifier
- * Name: mb_wordwrap
- * Purpose: Wrap a string to a given number of characters
- *
- * @link https://php.net/manual/en/function.wordwrap.php for similarity
- *
- * @param string $str the string to wrap
- * @param int $width the width of the output
- * @param string $break the character used to break the line
- * @param boolean $cut ignored parameter, just for the sake of
- *
- * @return string wrapped string
- * @author Rodney Rehm
- */
-function smarty_modifier_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
-{
- // break words into tokens using white space as a delimiter
- $tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
- $length = 0;
- $t = '';
- $_previous = false;
- $_space = false;
- foreach ($tokens as $_token) {
- $token_length = mb_strlen($_token, Smarty::$_CHARSET);
- $_tokens = array($_token);
- if ($token_length > $width) {
- if ($cut) {
- $_tokens = preg_split(
- '!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER,
- $_token,
- -1,
- PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE
- );
- }
- }
- foreach ($_tokens as $token) {
- $_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token);
- $token_length = mb_strlen($token, Smarty::$_CHARSET);
- $length += $token_length;
- if ($length > $width) {
- // remove space before inserted break
- if ($_previous) {
- $t = mb_substr($t, 0, -1, Smarty::$_CHARSET);
- }
- if (!$_space) {
- // add the break before the token
- if (!empty($t)) {
- $t .= $break;
- }
- $length = $token_length;
- }
- } elseif ($token === "\n") {
- // hard break must reset counters
- $length = 0;
- }
- $_previous = $_space;
- // add the token
- $t .= $token;
- }
- }
- return $t;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.number_format.php b/vendor/smarty/smarty/libs/plugins/modifier.number_format.php
deleted file mode 100644
index 8c612601f..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.number_format.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-
-/**
- * Smarty number_format modifier plugin
- * Type: modifier
- * Name: number_format
- * Purpose: Format a number with grouped thousands
- *
- * @param float|null $num
- * @param int $decimals
- * @param string|null $decimal_separator
- * @param string|null $thousands_separator
- *
- * @return string
- */
-function smarty_modifier_number_format(?float $num, int $decimals = 0, ?string $decimal_separator = ".", ?string $thousands_separator = ",")
-{
- // provide $num default to prevent deprecation errors in PHP >=8.1
- return number_format($num ?? 0.0, $decimals, $decimal_separator, $thousands_separator);
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php b/vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php
deleted file mode 100644
index cd57cdf33..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-/**
- * Smarty regex_replace modifier plugin
- * Type: modifier
- * Name: regex_replace
- * Purpose: regular expression search/replace
- *
- * @link https://www.smarty.net/manual/en/language.modifier.regex.replace.php
- * regex_replace (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string input string
- * @param string|array $search regular expression(s) to search for
- * @param string|array $replace string(s) that should be replaced
- * @param int $limit the maximum number of replacements
- *
- * @return string
- */
-function smarty_modifier_regex_replace($string, $search, $replace, $limit = -1)
-{
- if (is_array($search)) {
- foreach ($search as $idx => $s) {
- $search[ $idx ] = _smarty_regex_replace_check($s);
- }
- } else {
- $search = _smarty_regex_replace_check($search);
- }
- return preg_replace($search, $replace, $string, $limit);
-}
-
-/**
- * @param string $search string(s) that should be replaced
- *
- * @return string
- * @ignore
- */
-function _smarty_regex_replace_check($search)
-{
- // null-byte injection detection
- // anything behind the first null-byte is ignored
- if (($pos = strpos($search, "\0")) !== false) {
- $search = substr($search, 0, $pos);
- }
- // remove eval-modifier from $search
- if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[ 1 ], 'e') !== false)) {
- $search = substr($search, 0, -strlen($match[ 1 ])) . preg_replace('![e\s]+!', '', $match[ 1 ]);
- }
- return $search;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.replace.php b/vendor/smarty/smarty/libs/plugins/modifier.replace.php
deleted file mode 100644
index 71a7c632a..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.replace.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-/**
- * Smarty replace modifier plugin
- * Type: modifier
- * Name: replace
- * Purpose: simple search/replace
- *
- * @link https://www.smarty.net/manual/en/language.modifier.replace.php replace (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews
- *
- * @param string $string input string
- * @param string $search text to search for
- * @param string $replace replacement text
- *
- * @return string
- */
-function smarty_modifier_replace($string, $search, $replace)
-{
- static $is_loaded = false;
- if (Smarty::$_MBSTRING) {
- if (!$is_loaded) {
- if (!is_callable('smarty_mb_str_replace')) {
- include_once SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php';
- }
- $is_loaded = true;
- }
- return smarty_mb_str_replace($search, $replace, $string);
- }
- return str_replace($search, $replace, $string);
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.spacify.php b/vendor/smarty/smarty/libs/plugins/modifier.spacify.php
deleted file mode 100644
index 251dbe71b..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.spacify.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-/**
- * Smarty spacify modifier plugin
- * Type: modifier
- * Name: spacify
- * Purpose: add spaces between characters in a string
- *
- * @link https://www.smarty.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string input string
- * @param string $spacify_char string to insert between characters.
- *
- * @return string
- */
-function smarty_modifier_spacify($string, $spacify_char = ' ')
-{
- // well… what about charsets besides latin and UTF-8?
- return implode($spacify_char, preg_split('//' . Smarty::$_UTF8_MODIFIER, $string, -1, PREG_SPLIT_NO_EMPTY));
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.truncate.php b/vendor/smarty/smarty/libs/plugins/modifier.truncate.php
deleted file mode 100644
index d253e4a61..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifier.truncate.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-/**
- * Smarty truncate modifier plugin
- * Type: modifier
- * Name: truncate
- * Purpose: Truncate a string to a certain length if necessary,
- * optionally splitting in the middle of a word, and
- * appending the $etc string or inserting $etc into the middle.
- *
- * @link https://www.smarty.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string input string
- * @param integer $length length of truncated text
- * @param string $etc end string
- * @param boolean $break_words truncate at word boundary
- * @param boolean $middle truncate in the middle of text
- *
- * @return string truncated string
- */
-function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
-{
- if ($length === 0 || $string === null) {
- return '';
- }
- if (Smarty::$_MBSTRING) {
- if (mb_strlen($string, Smarty::$_CHARSET) > $length) {
- $length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));
- if (!$break_words && !$middle) {
- $string = preg_replace(
- '/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER,
- '',
- mb_substr($string, 0, $length + 1, Smarty::$_CHARSET)
- );
- }
- if (!$middle) {
- return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;
- }
- return mb_substr($string, 0, intval($length / 2), Smarty::$_CHARSET) . $etc .
- mb_substr($string, -intval($length / 2), $length, Smarty::$_CHARSET);
- }
- return $string;
- }
- // no MBString fallback
- if (isset($string[ $length ])) {
- $length -= min($length, strlen($etc));
- if (!$break_words && !$middle) {
- $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
- }
- if (!$middle) {
- return substr($string, 0, $length) . $etc;
- }
- return substr($string, 0, intval($length / 2)) . $etc . substr($string, -intval($length / 2));
- }
- return $string;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php
deleted file mode 100644
index 2c3a8b2a4..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty cat modifier plugin
- * Type: modifier
- * Name: cat
- * Date: Feb 24, 2003
- * Purpose: catenate a value to a variable
- * Input: string to catenate
- * Example: {$var|cat:"foo"}
- *
- * @link https://www.smarty.net/manual/en/language.modifier.cat.php cat
- * (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_cat($params)
-{
- return '(' . implode(').(', $params) . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php
deleted file mode 100644
index 7798cabc1..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty count_characters modifier plugin
- * Type: modifier
- * Name: count_characters
- * Purpose: count the number of characters in a text
- *
- * @link https://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online
- * manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_count_characters($params)
-{
- if (!isset($params[ 1 ]) || $params[ 1 ] !== 'true') {
- return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[ 0 ] . ', $tmp)';
- }
- if (Smarty::$_MBSTRING) {
- return 'mb_strlen((string) ' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
- }
- // no MBString fallback
- return 'strlen((string) ' . $params[ 0 ] . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php
deleted file mode 100644
index 332402968..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty count_paragraphs modifier plugin
- * Type: modifier
- * Name: count_paragraphs
- * Purpose: count the number of paragraphs in a text
- *
- * @link https://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
- * count_paragraphs (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_count_paragraphs($params)
-{
- // count \r or \n characters
- return '(preg_match_all(\'#[\r\n]+#\', ' . $params[ 0 ] . ', $tmp)+1)';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php
deleted file mode 100644
index 30e36e5f0..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty count_sentences modifier plugin
- * Type: modifier
- * Name: count_sentences
- * Purpose: count the number of sentences in a text
- *
- * @link https://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
- * count_sentences (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_count_sentences($params)
-{
- // find periods, question marks, exclamation marks with a word before but not after.
- return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[ 0 ] . ', $tmp)';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php
deleted file mode 100644
index 48a3daa17..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty count_words modifier plugin
- * Type: modifier
- * Name: count_words
- * Purpose: count the number of words in a text
- *
- * @link https://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_count_words($params)
-{
- if (Smarty::$_MBSTRING) {
- // return 'preg_match_all(\'#[\w\pL]+#' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
- // expression taken from http://de.php.net/manual/en/function.str-word-count.php#85592
- return 'preg_match_all(\'/\p{L}[\p{L}\p{Mn}\p{Pd}\\\'\x{2019}]*/' . Smarty::$_UTF8_MODIFIER . '\', ' .
- $params[ 0 ] . ', $tmp)';
- }
- // no MBString fallback
- return 'str_word_count((string) ' . $params[ 0 ] . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php
deleted file mode 100644
index dffa7a986..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty default modifier plugin
- * Type: modifier
- * Name: default
- * Purpose: designate default value for empty variables
- *
- * @link https://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_default($params)
-{
- $output = $params[ 0 ];
- if (!isset($params[ 1 ])) {
- $params[ 1 ] = "''";
- }
- array_shift($params);
- foreach ($params as $param) {
- $output = '(($tmp = ' . $output . ' ?? null)===null||$tmp===\'\' ? ' . $param . ' ?? null : $tmp)';
- }
- return $output;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php
deleted file mode 100644
index 21b1b4c2a..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty escape modifier plugin
- * Type: modifier
- * Name: escape
- * Purpose: escape string for output
- *
- * @link https://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual)
- * @author Rodney Rehm
- *
- * @param array $params parameters
- * @param Smarty_Internal_TemplateCompilerBase $compiler
- *
- * @return string with compiled code
- * @throws SmartyException
- */
-function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompilerBase $compiler)
-{
- $compiler->template->_checkPlugins(
- array(
- array(
- 'function' => 'smarty_literal_compiler_param',
- 'file' => SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php'
- )
- )
- );
- try {
- $esc_type = smarty_literal_compiler_param($params, 1, 'html');
- $char_set = smarty_literal_compiler_param($params, 2, Smarty::$_CHARSET);
- $double_encode = smarty_literal_compiler_param($params, 3, true);
- if (!$char_set) {
- $char_set = Smarty::$_CHARSET;
- }
- switch ($esc_type) {
- case 'html':
- return 'htmlspecialchars((string)' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ', ' .
- var_export($double_encode, true) . ')';
- // no break
- case 'htmlall':
- if (Smarty::$_MBSTRING) {
- return 'htmlentities(mb_convert_encoding((string)' . $params[ 0 ] . ', \'UTF-8\', ' .
- var_export($char_set, true) . '), ENT_QUOTES, \'UTF-8\', ' .
- var_export($double_encode, true) . ')';
- }
- // no MBString fallback
- return 'htmlentities((string)' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ', ' .
- var_export($double_encode, true) . ')';
- // no break
- case 'url':
- return 'rawurlencode((string)' . $params[ 0 ] . ')';
- case 'urlpathinfo':
- return 'str_replace("%2F", "/", rawurlencode((string)' . $params[ 0 ] . '))';
- case 'quotes':
- // escape unescaped single quotes
- return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'", (string)' . $params[ 0 ] . ')';
- case 'javascript':
- // escape quotes and backslashes, newlines, etc.
- // see https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements
- return 'strtr((string)' .
- $params[ 0 ] .
- ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r",
- "\\n" => "\\\n", "</" => "<\/", "<!--" => "<\!--", "<s" => "<\s", "<S" => "<\S",
- "`" => "\\\\`", "\${" => "\\\\\\$\\{"))';
- }
- } catch (SmartyException $e) {
- // pass through to regular plugin fallback
- }
- // could not optimize |escape call, so fallback to regular plugin
- if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
- $compiler->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'file' ] =
- SMARTY_PLUGINS_DIR . 'modifier.escape.php';
- $compiler->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'function' ] =
- 'smarty_modifier_escape';
- } else {
- $compiler->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'file' ] =
- SMARTY_PLUGINS_DIR . 'modifier.escape.php';
- $compiler->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'function' ] =
- 'smarty_modifier_escape';
- }
- return 'smarty_modifier_escape(' . join(', ', $params) . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php
deleted file mode 100644
index acce7784b..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty from_charset modifier plugin
- * Type: modifier
- * Name: from_charset
- * Purpose: convert character encoding from $charset to internal encoding
- *
- * @author Rodney Rehm
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_from_charset($params)
-{
- if (!Smarty::$_MBSTRING) {
- // FIXME: (rodneyrehm) shouldn't this throw an error?
- return $params[ 0 ];
- }
- if (!isset($params[ 1 ])) {
- $params[ 1 ] = '"ISO-8859-1"';
- }
- return 'mb_convert_encoding(' . $params[ 0 ] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[ 1 ] . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php
deleted file mode 100644
index 636f0edf1..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty indent modifier plugin
- * Type: modifier
- * Name: indent
- * Purpose: indent lines of text
- *
- * @link https://www.smarty.net/manual/en/language.modifier.indent.php indent (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_indent($params)
-{
- if (!isset($params[ 1 ])) {
- $params[ 1 ] = 4;
- }
- if (!isset($params[ 2 ])) {
- $params[ 2 ] = "' '";
- }
- return 'preg_replace(\'!^!m\',str_repeat(' . $params[ 2 ] . ',' . $params[ 1 ] . '),' . $params[ 0 ] . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.json_encode.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.json_encode.php
deleted file mode 100644
index 629277f28..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.json_encode.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-function smarty_modifiercompiler_json_encode($params) {
- return 'json_encode(' . $params[0] . (isset($params[1]) ? ', (int) ' . $params[1] : '') . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php
deleted file mode 100644
index 4144e5619..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty lower modifier plugin
- * Type: modifier
- * Name: lower
- * Purpose: convert string to lowercase
- *
- * @link https://www.smarty.net/manual/en/language.modifier.lower.php lower (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_lower($params)
-{
- if (Smarty::$_MBSTRING) {
- return 'mb_strtolower((string) ' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
- }
- // no MBString fallback
- return 'strtolower((string) ' . $params[ 0 ] . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.nl2br.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.nl2br.php
deleted file mode 100644
index 308c00e42..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.nl2br.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty nl2br modifier plugin
- * Type: modifier
- * Name: nl2br
- * Purpose: insert HTML line breaks before all newlines in a string
- *
- * @link https://www.smarty.net/docs/en/language.modifier.nl2br.tpl nl2br (Smarty online manual)
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_nl2br($params) {
- return 'nl2br((string) ' . $params[0] . ', (bool) ' . ($params[1] ?? true) . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php
deleted file mode 100644
index 1275190e0..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty noprint modifier plugin
- * Type: modifier
- * Name: noprint
- * Purpose: return an empty string
- *
- * @author Uwe Tews
- * @return string with compiled code
- */
-function smarty_modifiercompiler_noprint()
-{
- return "''";
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.round.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.round.php
deleted file mode 100644
index 97f072f00..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.round.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty round modifier plugin
- * Type: modifier
- * Name: round
- * Purpose: Returns the rounded value of num to specified precision (number of digits after the decimal point)
- *
- * @link https://www.smarty.net/docs/en/language.modifier.round.tpl round (Smarty online manual)
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_round($params) {
- return 'round((float) ' . $params[0] . ', (int) ' . ($params[1] ?? 0) . ', (int) ' . ($params[2] ?? PHP_ROUND_HALF_UP) . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.str_repeat.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.str_repeat.php
deleted file mode 100644
index 18eb7a762..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.str_repeat.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty str_repeat modifier plugin
- * Type: modifier
- * Name: str_repeat
- * Purpose: returns string repeated times times
- *
- * @link https://www.smarty.net/docs/en/language.modifier.str_repeat.tpl str_repeat (Smarty online manual)
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_str_repeat($params) {
- return 'str_repeat((string) ' . $params[0] . ', (int) ' . $params[1] . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php
deleted file mode 100644
index 8df5632c5..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty string_format modifier plugin
- * Type: modifier
- * Name: string_format
- * Purpose: format strings via sprintf
- *
- * @link https://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_string_format($params)
-{
- return 'sprintf(' . $params[ 1 ] . ',' . $params[ 0 ] . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php
deleted file mode 100644
index 51944bde6..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty strip modifier plugin
- * Type: modifier
- * Name: strip
- * Purpose: Replace all repeated spaces, newlines, tabs
- * with a single space or supplied replacement string.
- * Example: {$var|strip} {$var|strip:"&nbsp;"}
- * Date: September 25th, 2002
- *
- * @link https://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_strip($params)
-{
- if (!isset($params[ 1 ])) {
- $params[ 1 ] = "' '";
- }
- return "preg_replace('!\s+!" . Smarty::$_UTF8_MODIFIER . "', {$params[1]},{$params[0]})";
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php
deleted file mode 100644
index fd6cc7251..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty strip_tags modifier plugin
- * Type: modifier
- * Name: strip_tags
- * Purpose: strip html tags from text
- *
- * @link https://www.smarty.net/docs/en/language.modifier.strip.tags.tpl strip_tags (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_strip_tags($params)
-{
- if (!isset($params[ 1 ]) || $params[ 1 ] === true || trim($params[ 1 ], '"') === 'true') {
- return "preg_replace('!<[^>]*?>!', ' ', (string) {$params[0]})";
- } else {
- return 'strip_tags((string) ' . $params[ 0 ] . ')';
- }
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.strlen.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.strlen.php
deleted file mode 100644
index d43e8ef1c..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.strlen.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty strlen modifier plugin
- * Type: modifier
- * Name: strlen
- * Purpose: return the length of the given string
- *
- * @link https://www.smarty.net/docs/en/language.modifier.strlen.tpl strlen (Smarty online manual)
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_strlen($params) {
- return 'strlen((string) ' . $params[0] . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.substr.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.substr.php
deleted file mode 100644
index 17721f52b..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.substr.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-function smarty_modifiercompiler_substr($params) {
- return 'substr((string) ' . $params[0] . ', (int) ' . $params[1] .
- (isset($params[2]) ? ', (int) ' . $params[2] : '') . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php
deleted file mode 100644
index d652eab1b..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty to_charset modifier plugin
- * Type: modifier
- * Name: to_charset
- * Purpose: convert character encoding from internal encoding to $charset
- *
- * @author Rodney Rehm
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_to_charset($params)
-{
- if (!Smarty::$_MBSTRING) {
- // FIXME: (rodneyrehm) shouldn't this throw an error?
- return $params[ 0 ];
- }
- if (!isset($params[ 1 ])) {
- $params[ 1 ] = '"ISO-8859-1"';
- }
- return 'mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 1 ] . ', "' . addslashes(Smarty::$_CHARSET) . '")';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php
deleted file mode 100644
index 9e1f06d67..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty unescape modifier plugin
- * Type: modifier
- * Name: unescape
- * Purpose: unescape html entities
- *
- * @author Rodney Rehm
- *
- * @param array $params parameters
- * @param Smarty_Internal_TemplateCompilerBase $compiler
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_unescape($params, Smarty_Internal_TemplateCompilerBase $compiler)
-{
- $compiler->template->_checkPlugins(
- array(
- array(
- 'function' => 'smarty_literal_compiler_param',
- 'file' => SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php'
- )
- )
- );
-
- $esc_type = smarty_literal_compiler_param($params, 1, 'html');
-
- if (!isset($params[ 2 ])) {
- $params[ 2 ] = '\'' . addslashes(Smarty::$_CHARSET) . '\'';
- }
-
- switch ($esc_type) {
- case 'entity':
- case 'htmlall':
- if (Smarty::$_MBSTRING) {
- return 'html_entity_decode(mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 2 ] . ', \'UTF-8\'), ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ' . $params[ 2 ] . ')';
- }
- return 'html_entity_decode(' . $params[ 0 ] . ', ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ' . $params[ 2 ] . ')';
- case 'html':
- return 'htmlspecialchars_decode(' . $params[ 0 ] . ', ENT_QUOTES)';
- case 'url':
- return 'rawurldecode(' . $params[ 0 ] . ')';
- default:
- return $params[ 0 ];
- }
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php
deleted file mode 100644
index 96030518e..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty upper modifier plugin
- * Type: modifier
- * Name: lower
- * Purpose: convert string to uppercase
- *
- * @link https://www.smarty.net/manual/en/language.modifier.upper.php lower (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_upper($params)
-{
- if (Smarty::$_MBSTRING) {
- return 'mb_strtoupper((string) ' . $params[ 0 ] . ' ?? \'\', \'' . addslashes(Smarty::$_CHARSET) . '\')';
- }
- // no MBString fallback
- return 'strtoupper((string) ' . $params[ 0 ] . ' ?? \'\')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php
deleted file mode 100644
index 49cb40b0f..000000000
--- a/vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-/**
- * Smarty wordwrap modifier plugin
- * Type: modifier
- * Name: wordwrap
- * Purpose: wrap a string of text at a given length
- *
- * @link https://www.smarty.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- *
- * @return string with compiled code
- * @throws \SmartyException
- */
-function smarty_modifiercompiler_wordwrap($params, Smarty_Internal_TemplateCompilerBase $compiler)
-{
- if (!isset($params[ 1 ])) {
- $params[ 1 ] = 80;
- }
- if (!isset($params[ 2 ])) {
- $params[ 2 ] = '"\n"';
- }
- if (!isset($params[ 3 ])) {
- $params[ 3 ] = 'false';
- }
- $function = 'wordwrap';
- if (Smarty::$_MBSTRING) {
- $function = $compiler->getPlugin('mb_wordwrap', 'modifier');
- }
- return $function . '(' . $params[ 0 ] . ',' . $params[ 1 ] . ',' . $params[ 2 ] . ',' . $params[ 3 ] . ')';
-}
diff --git a/vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php b/vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php
deleted file mode 100644
index 180cdd081..000000000
--- a/vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFilter
- */
-/**
- * Smarty trimwhitespace outputfilter plugin
- * Trim unnecessary whitespace from HTML markup.
- *
- * @author Rodney Rehm
- *
- * @param string $source input string
- *
- * @return string filtered output
- * @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail!
- */
-function smarty_outputfilter_trimwhitespace($source)
-{
- $store = array();
- $_store = 0;
- $_offset = 0;
- // Unify Line-Breaks to \n
- $source = preg_replace('/\015\012|\015|\012/', "\n", $source);
- // capture Internet Explorer and KnockoutJS Conditional Comments
- if (preg_match_all(
- '#<!--((\[[^\]]+\]>.*?<!\[[^\]]+\])|(\s*/?ko\s+.+))-->#is',
- $source,
- $matches,
- PREG_OFFSET_CAPTURE | PREG_SET_ORDER
- )
- ) {
- foreach ($matches as $match) {
- $store[] = $match[ 0 ][ 0 ];
- $_length = strlen($match[ 0 ][ 0 ]);
- $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
- $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
- $_offset += $_length - strlen($replace);
- $_store++;
- }
- }
- // Strip all HTML-Comments
- // yes, even the ones in <script> - see https://stackoverflow.com/a/808850/515124
- $source = preg_replace('#<!--.*?-->#ms', '', $source);
- // capture html elements not to be messed with
- $_offset = 0;
- if (preg_match_all(
- '#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is',
- $source,
- $matches,
- PREG_OFFSET_CAPTURE | PREG_SET_ORDER
- )
- ) {
- foreach ($matches as $match) {
- $store[] = $match[ 0 ][ 0 ];
- $_length = strlen($match[ 0 ][ 0 ]);
- $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
- $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
- $_offset += $_length - strlen($replace);
- $_store++;
- }
- }
- $expressions = array(// replace multiple spaces between tags by a single space
- // can't remove them entirely, because that might break poorly implemented CSS display:inline-block elements
- '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
- // remove spaces between attributes (but not in attribute values!)
- '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
- // note: for some very weird reason trim() seems to remove spaces inside attributes.
- // maybe a \0 byte or something is interfering?
- '#^\s+<#Ss' => '<',
- '#>\s+$#Ss' => '>',
- );
- $source = preg_replace(array_keys($expressions), array_values($expressions), $source);
- // note: for some very weird reason trim() seems to remove spaces inside attributes.
- // maybe a \0 byte or something is interfering?
- // $source = trim( $source );
- $_offset = 0;
- if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
- foreach ($matches as $match) {
- $_length = strlen($match[ 0 ][ 0 ]);
- $replace = $store[ $match[ 1 ][ 0 ] ];
- $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] + $_offset, $_length);
- $_offset += strlen($replace) - $_length;
- $_store++;
- }
- }
- return $source;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php b/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php
deleted file mode 100644
index 355b02b57..000000000
--- a/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * Smarty shared plugin
- *
- * @package Smarty
- * @subpackage PluginsShared
- */
-/**
- * escape_special_chars common function
- * Function: smarty_function_escape_special_chars
- * Purpose: used by other smarty functions to escape
- * special chars except for already escaped ones
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string text that should by escaped
- *
- * @return string
- */
-function smarty_function_escape_special_chars($string)
-{
- if (!is_array($string)) {
- $string = htmlspecialchars((string) $string, ENT_COMPAT, Smarty::$_CHARSET, false);
- }
- return $string;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php b/vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php
deleted file mode 100644
index 65caf03c8..000000000
--- a/vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsShared
- */
-/**
- * evaluate compiler parameter
- *
- * @param array $params parameter array as given to the compiler function
- * @param integer $index array index of the parameter to convert
- * @param mixed $default value to be returned if the parameter is not present
- *
- * @return mixed evaluated value of parameter or $default
- * @throws SmartyException if parameter is not a literal (but an expression, variable, …)
- * @author Rodney Rehm
- */
-function smarty_literal_compiler_param($params, $index, $default = null)
-{
- // not set, go default
- if (!isset($params[ $index ])) {
- return $default;
- }
- // test if param is a literal
- if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[ $index ])) {
- throw new SmartyException(
- '$param[' . $index .
- '] is not a literal and is thus not evaluatable at compile time'
- );
- }
- $t = null;
- eval("\$t = " . $params[ $index ] . ";");
- return $t;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php b/vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php
deleted file mode 100644
index 9626dc68e..000000000
--- a/vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * Smarty shared plugin
- *
- * @package Smarty
- * @subpackage PluginsShared
- */
-/**
- * Function: smarty_make_timestamp
- * Purpose: used by other smarty functions to make a timestamp from a string.
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime()
- *
- * @return int
- */
-function smarty_make_timestamp($string)
-{
- if (empty($string)) {
- // use "now":
- return time();
- } elseif ($string instanceof DateTime
- || (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface)
- ) {
- return (int)$string->format('U'); // PHP 5.2 BC
- } elseif (strlen($string) === 14 && ctype_digit($string)) {
- // it is mysql timestamp format of YYYYMMDDHHMMSS?
- return mktime(
- substr($string, 8, 2),
- substr($string, 10, 2),
- substr($string, 12, 2),
- substr($string, 4, 2),
- substr($string, 6, 2),
- substr($string, 0, 4)
- );
- } elseif (is_numeric($string)) {
- // it is a numeric string, we handle it as timestamp
- return (int)$string;
- } else {
- // strtotime should handle it
- $time = strtotime($string);
- if ($time === -1 || $time === false) {
- // strtotime() was not able to parse $string, use "now":
- return time();
- }
- return $time;
- }
-}
diff --git a/vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php b/vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php
deleted file mode 100644
index 7e85f7aae..000000000
--- a/vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-/**
- * Smarty shared plugin
- *
- * @package Smarty
- * @subpackage PluginsShared
- */
-if (!function_exists('smarty_mb_str_replace')) {
- /**
- * Multibyte string replace
- *
- * @param string|string[] $search the string to be searched
- * @param string|string[] $replace the replacement string
- * @param string $subject the source string
- * @param int &$count number of matches found
- *
- * @return string replaced string
- * @author Rodney Rehm
- */
- function smarty_mb_str_replace($search, $replace, $subject, &$count = 0)
- {
- if (!is_array($search) && is_array($replace)) {
- return false;
- }
- if (is_array($subject)) {
- // call mb_replace for each single string in $subject
- foreach ($subject as &$string) {
- $string = smarty_mb_str_replace($search, $replace, $string, $c);
- $count += $c;
- }
- } elseif (is_array($search)) {
- if (!is_array($replace)) {
- foreach ($search as &$string) {
- $subject = smarty_mb_str_replace($string, $replace, $subject, $c);
- $count += $c;
- }
- } else {
- $n = max(count($search), count($replace));
- while ($n--) {
- $subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c);
- $count += $c;
- next($search);
- next($replace);
- }
- }
- } else {
- $mb_reg_charset = mb_regex_encoding();
- // Check if mbstring regex is using UTF-8
- $reg_is_unicode = !strcasecmp($mb_reg_charset, "UTF-8");
- if(!$reg_is_unicode) {
- // ...and set to UTF-8 if not
- mb_regex_encoding("UTF-8");
- }
-
- // See if charset used by Smarty is matching one used by regex...
- $current_charset = mb_regex_encoding();
- $convert_result = (bool)strcasecmp(Smarty::$_CHARSET, $current_charset);
- if($convert_result) {
- // ...convert to it if not.
- $subject = mb_convert_encoding($subject, $current_charset, Smarty::$_CHARSET);
- $search = mb_convert_encoding($search, $current_charset, Smarty::$_CHARSET);
- $replace = mb_convert_encoding($replace, $current_charset, Smarty::$_CHARSET);
- }
-
- $parts = mb_split(preg_quote($search), $subject ?? "") ?: array();
- // If original regex encoding was not unicode...
- if(!$reg_is_unicode) {
- // ...restore original regex encoding to avoid breaking the system.
- mb_regex_encoding($mb_reg_charset);
- }
- if($parts === false) {
- // This exception is thrown if call to mb_split failed.
- // Usually it happens, when $search or $replace are not valid for given mb_regex_encoding().
- // There may be other cases for it to fail, please file an issue if you find a reproducible one.
- throw new SmartyException("Source string is not a valid $current_charset sequence (probably)");
- }
-
- $count = count($parts) - 1;
- $subject = implode($replace, $parts);
- // Convert results back to charset used by Smarty, if needed.
- if($convert_result) {
- $subject = mb_convert_encoding($subject, Smarty::$_CHARSET, $current_charset);
- }
- }
- return $subject;
- }
-}
diff --git a/vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php b/vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php
deleted file mode 100644
index 7d1206506..000000000
--- a/vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * Smarty shared plugin
- *
- * @package Smarty
- * @subpackage PluginsShared
- */
-/**
- * convert characters to their decimal unicode equivalents
- *
- * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
- *
- * @param string $string characters to calculate unicode of
- * @param string $encoding encoding of $string, if null mb_internal_encoding() is used
- *
- * @return array sequence of unicodes
- * @author Rodney Rehm
- */
-function smarty_mb_to_unicode($string, $encoding = null)
-{
- if ($encoding) {
- $expanded = mb_convert_encoding($string, 'UTF-32BE', $encoding);
- } else {
- $expanded = mb_convert_encoding($string, 'UTF-32BE');
- }
- return unpack('N*', $expanded);
-}
-
-/**
- * convert unicodes to the character of given encoding
- *
- * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
- *
- * @param integer|array $unicode single unicode or list of unicodes to convert
- * @param string $encoding encoding of returned string, if null mb_internal_encoding() is used
- *
- * @return string unicode as character sequence in given $encoding
- * @author Rodney Rehm
- */
-function smarty_mb_from_unicode($unicode, $encoding = null)
-{
- $t = '';
- if (!$encoding) {
- $encoding = mb_internal_encoding();
- }
- foreach ((array)$unicode as $utf32be) {
- $character = pack('N*', $utf32be);
- $t .= mb_convert_encoding($character, $encoding, 'UTF-32BE');
- }
- return $t;
-}
diff --git a/vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php b/vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php
deleted file mode 100644
index 2eb12d20a..000000000
--- a/vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFilter
- */
-/**
- * Smarty htmlspecialchars variablefilter plugin
- *
- * @param string $source input string
- * @param \Smarty_Internal_Template $template
- *
- * @return string filtered output
- */
-function smarty_variablefilter_htmlspecialchars($source, Smarty_Internal_Template $template)
-{
- return htmlspecialchars((string) $source, ENT_QUOTES, Smarty::$_CHARSET);
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php
deleted file mode 100644
index db68f9bfd..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php
+++ /dev/null
@@ -1,219 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin
- *
- * @package Smarty
- * @subpackage Cacher
- */
-
-/**
- * Cache Handler API
- *
- * @package Smarty
- * @subpackage Cacher
- * @author Rodney Rehm
- */
-abstract class Smarty_CacheResource
-{
- /**
- * resource types provided by the core
- *
- * @var array
- */
- protected static $sysplugins = array('file' => 'smarty_internal_cacheresource_file.php',);
-
- /**
- * populate Cached Object with meta data from Resource
- *
- * @param \Smarty_Template_Cached $cached cached object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- abstract public function populate(\Smarty_Template_Cached $cached, Smarty_Internal_Template $_template);
-
- /**
- * populate Cached Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Cached $cached
- *
- * @return void
- */
- abstract public function populateTimestamp(Smarty_Template_Cached $cached);
-
- /**
- * Read the cached template and process header
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @param boolean $update flag if called because cache update
- *
- * @return boolean true or false if the cached content does not exist
- */
- abstract public function process(
- Smarty_Internal_Template $_template,
- Smarty_Template_Cached $cached = null,
- $update = false
- );
-
- /**
- * Write the rendered template output to cache
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- *
- * @return boolean success
- */
- abstract public function writeCachedContent(Smarty_Internal_Template $_template, $content);
-
- /**
- * Read cached template from cache
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string content
- */
- abstract public function readCachedContent(Smarty_Internal_Template $_template);
-
- /**
- * Return cached content
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return null|string
- */
- public function getCachedContent(Smarty_Internal_Template $_template)
- {
- if ($_template->cached->handler->process($_template)) {
- ob_start();
- $unifunc = $_template->cached->unifunc;
- $unifunc($_template);
- return ob_get_clean();
- }
- return null;
- }
-
- /**
- * Empty cache
- *
- * @param Smarty $smarty Smarty object
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- abstract public function clearAll(Smarty $smarty, $exp_time = null);
-
- /**
- * Empty cache for a specific template
- *
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- abstract public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time);
-
- /**
- * @param Smarty $smarty
- * @param Smarty_Template_Cached $cached
- *
- * @return bool|null
- */
- public function locked(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- // theoretically locking_timeout should be checked against time_limit (max_execution_time)
- $start = microtime(true);
- $hadLock = null;
- while ($this->hasLock($smarty, $cached)) {
- $hadLock = true;
- if (microtime(true) - $start > $smarty->locking_timeout) {
- // abort waiting for lock release
- return false;
- }
- sleep(1);
- }
- return $hadLock;
- }
-
- /**
- * Check is cache is locked for this template
- *
- * @param Smarty $smarty
- * @param Smarty_Template_Cached $cached
- *
- * @return bool
- */
- public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- // check if lock exists
- return false;
- }
-
- /**
- * Lock cache for this template
- *
- * @param Smarty $smarty
- * @param Smarty_Template_Cached $cached
- *
- * @return bool
- */
- public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- // create lock
- return true;
- }
-
- /**
- * Unlock cache for this template
- *
- * @param Smarty $smarty
- * @param Smarty_Template_Cached $cached
- *
- * @return bool
- */
- public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- // release lock
- return true;
- }
-
- /**
- * Load Cache Resource Handler
- *
- * @param Smarty $smarty Smarty object
- * @param string $type name of the cache resource
- *
- * @throws SmartyException
- * @return Smarty_CacheResource Cache Resource Handler
- */
- public static function load(Smarty $smarty, $type = null)
- {
- if (!isset($type)) {
- $type = $smarty->caching_type;
- }
- // try smarty's cache
- if (isset($smarty->_cache[ 'cacheresource_handlers' ][ $type ])) {
- return $smarty->_cache[ 'cacheresource_handlers' ][ $type ];
- }
- // try registered resource
- if (isset($smarty->registered_cache_resources[ $type ])) {
- // do not cache these instances as they may vary from instance to instance
- return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = $smarty->registered_cache_resources[ $type ];
- }
- // try sysplugins dir
- if (isset(self::$sysplugins[ $type ])) {
- $cache_resource_class = 'Smarty_Internal_CacheResource_' . smarty_ucfirst_ascii($type);
- return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class();
- }
- // try plugins dir
- $cache_resource_class = 'Smarty_CacheResource_' . smarty_ucfirst_ascii($type);
- if ($smarty->loadPlugin($cache_resource_class)) {
- return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class();
- }
- // give up
- throw new SmartyException("Unable to load cache resource '{$type}'");
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
deleted file mode 100644
index 68ad11289..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
+++ /dev/null
@@ -1,297 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin
- *
- * @package Smarty
- * @subpackage Cacher
- */
-
-/**
- * Cache Handler API
- *
- * @package Smarty
- * @subpackage Cacher
- * @author Rodney Rehm
- */
-abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
-{
- /**
- * fetch cached content and its modification time from data source
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer $mtime cache modification timestamp (epoch)
- *
- * @return void
- */
- abstract protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime);
-
- /**
- * Fetch cached content's modification timestamp from data source
- * {@internal implementing this method is optional.
- * Only implement it if modification times can be accessed faster than loading the complete cached content.}}
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- *
- * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
- */
- protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
- {
- return false;
- }
-
- /**
- * Save content to cache
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration or null
- * @param string $content content to cache
- *
- * @return boolean success
- */
- abstract protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content);
-
- /**
- * Delete content from cache
- *
- * @param string|null $name template name
- * @param string|null $cache_id cache id
- * @param string|null $compile_id compile id
- * @param integer|null $exp_time seconds till expiration time in seconds or null
- *
- * @return integer number of deleted caches
- */
- abstract protected function delete($name, $cache_id, $compile_id, $exp_time);
-
- /**
- * populate Cached Object with meta data from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
- {
- $_cache_id = isset($cached->cache_id) ? preg_replace('![^\w\|]+!', '_', $cached->cache_id) : null;
- $_compile_id = isset($cached->compile_id) ? preg_replace('![^\w]+!', '_', $cached->compile_id) : null;
- $path = $cached->source->uid . $_cache_id . $_compile_id;
- $cached->filepath = sha1($path);
- if ($_template->smarty->cache_locking) {
- $cached->lock_id = sha1('lock.' . $path);
- }
- $this->populateTimestamp($cached);
- }
-
- /**
- * populate Cached Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Cached $cached
- *
- * @return void
- */
- public function populateTimestamp(Smarty_Template_Cached $cached)
- {
- $mtime =
- $this->fetchTimestamp($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id);
- if ($mtime !== null) {
- $cached->timestamp = $mtime;
- $cached->exists = !!$cached->timestamp;
- return;
- }
- $timestamp = null;
- $this->fetch(
- $cached->filepath,
- $cached->source->name,
- $cached->cache_id,
- $cached->compile_id,
- $cached->content,
- $timestamp
- );
- $cached->timestamp = isset($timestamp) ? $timestamp : false;
- $cached->exists = !!$cached->timestamp;
- }
-
- /**
- * Read the cached template and process the header
- *
- * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
- * @param Smarty_Template_Cached $cached cached object
- * @param boolean $update flag if called because cache update
- *
- * @return boolean true or false if the cached content does not exist
- */
- public function process(
- Smarty_Internal_Template $_smarty_tpl,
- Smarty_Template_Cached $cached = null,
- $update = false
- ) {
- if (!$cached) {
- $cached = $_smarty_tpl->cached;
- }
- $content = $cached->content ? $cached->content : null;
- $timestamp = $cached->timestamp ? $cached->timestamp : null;
- if ($content === null || !$timestamp) {
- $this->fetch(
- $_smarty_tpl->cached->filepath,
- $_smarty_tpl->source->name,
- $_smarty_tpl->cache_id,
- $_smarty_tpl->compile_id,
- $content,
- $timestamp
- );
- }
- if (isset($content)) {
- eval('?>' . $content);
- $cached->content = null;
- return true;
- }
- return false;
- }
-
- /**
- * Write the rendered template output to cache
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- *
- * @return boolean success
- */
- public function writeCachedContent(Smarty_Internal_Template $_template, $content)
- {
- return $this->save(
- $_template->cached->filepath,
- $_template->source->name,
- $_template->cache_id,
- $_template->compile_id,
- $_template->cache_lifetime,
- $content
- );
- }
-
- /**
- * Read cached template from cache
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string|boolean content
- */
- public function readCachedContent(Smarty_Internal_Template $_template)
- {
- $content = $_template->cached->content ? $_template->cached->content : null;
- $timestamp = null;
- if ($content === null) {
- $timestamp = null;
- $this->fetch(
- $_template->cached->filepath,
- $_template->source->name,
- $_template->cache_id,
- $_template->compile_id,
- $content,
- $timestamp
- );
- }
- if (isset($content)) {
- return $content;
- }
- return false;
- }
-
- /**
- * Empty cache
- *
- * @param Smarty $smarty Smarty object
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- public function clearAll(Smarty $smarty, $exp_time = null)
- {
- return $this->delete(null, null, null, $exp_time);
- }
-
- /**
- * Empty cache for a specific template
- *
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return int number of cache files deleted
- * @throws \SmartyException
- */
- public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
- {
- $cache_name = null;
- if (isset($resource_name)) {
- $source = Smarty_Template_Source::load(null, $smarty, $resource_name);
- if ($source->exists) {
- $cache_name = $source->name;
- } else {
- return 0;
- }
- }
- return $this->delete($cache_name, $cache_id, $compile_id, $exp_time);
- }
-
- /**
- * Check is cache is locked for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return boolean true or false if cache is locked
- */
- public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $id = $cached->lock_id;
- $name = $cached->source->name . '.lock';
- $mtime = $this->fetchTimestamp($id, $name, $cached->cache_id, $cached->compile_id);
- if ($mtime === null) {
- $this->fetch($id, $name, $cached->cache_id, $cached->compile_id, $content, $mtime);
- }
- return $mtime && ($t = time()) - $mtime < $smarty->locking_timeout;
- }
-
- /**
- * Lock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = true;
- $id = $cached->lock_id;
- $name = $cached->source->name . '.lock';
- $this->save($id, $name, $cached->cache_id, $cached->compile_id, $smarty->locking_timeout, '');
- }
-
- /**
- * Unlock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = false;
- $name = $cached->source->name . '.lock';
- $this->delete($name, $cached->cache_id, $cached->compile_id, null);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
deleted file mode 100644
index 4b1c0f6d8..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
+++ /dev/null
@@ -1,538 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin
- *
- * @package Smarty
- * @subpackage Cacher
- */
-
-/**
- * Smarty Cache Handler Base for Key/Value Storage Implementations
- * This class implements the functionality required to use simple key/value stores
- * for hierarchical cache groups. key/value stores like memcache or APC do not support
- * wildcards in keys, therefore a cache group cannot be cleared like "a|*" - which
- * is no problem to filesystem and RDBMS implementations.
- * This implementation is based on the concept of invalidation. While one specific cache
- * can be identified and cleared, any range of caches cannot be identified. For this reason
- * each level of the cache group hierarchy can have its own value in the store. These values
- * are nothing but microtimes, telling us when a particular cache group was cleared for the
- * last time. These keys are evaluated for every cache read to determine if the cache has
- * been invalidated since it was created and should hence be treated as inexistent.
- * Although deep hierarchies are possible, they are not recommended. Try to keep your
- * cache groups as shallow as possible. Anything up 3-5 parents should be ok. So
- * »a|b|c« is a good depth where »a|b|c|d|e|f|g|h|i|j|k« isn't. Try to join correlating
- * cache groups: if your cache groups look somewhat like »a|b|$page|$items|$whatever«
- * consider using »a|b|c|$page-$items-$whatever« instead.
- *
- * @package Smarty
- * @subpackage Cacher
- * @author Rodney Rehm
- */
-abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
-{
- /**
- * cache for contents
- *
- * @var array
- */
- protected $contents = array();
-
- /**
- * cache for timestamps
- *
- * @var array
- */
- protected $timestamps = array();
-
- /**
- * populate Cached Object with meta data from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
- {
- $cached->filepath = $_template->source->uid . '#' . $this->sanitize($cached->source->resource) . '#' .
- $this->sanitize($cached->cache_id) . '#' . $this->sanitize($cached->compile_id);
- $this->populateTimestamp($cached);
- }
-
- /**
- * populate Cached Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return void
- */
- public function populateTimestamp(Smarty_Template_Cached $cached)
- {
- if (!$this->fetch(
- $cached->filepath,
- $cached->source->name,
- $cached->cache_id,
- $cached->compile_id,
- $content,
- $timestamp,
- $cached->source->uid
- )
- ) {
- return;
- }
- $cached->content = $content;
- $cached->timestamp = (int)$timestamp;
- $cached->exists = !!$cached->timestamp;
- }
-
- /**
- * Read the cached template and process the header
- *
- * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
- * @param Smarty_Template_Cached $cached cached object
- * @param boolean $update flag if called because cache update
- *
- * @return boolean true or false if the cached content does not exist
- */
- public function process(
- Smarty_Internal_Template $_smarty_tpl,
- Smarty_Template_Cached $cached = null,
- $update = false
- ) {
- if (!$cached) {
- $cached = $_smarty_tpl->cached;
- }
- $content = $cached->content ? $cached->content : null;
- $timestamp = $cached->timestamp ? $cached->timestamp : null;
- if ($content === null || !$timestamp) {
- if (!$this->fetch(
- $_smarty_tpl->cached->filepath,
- $_smarty_tpl->source->name,
- $_smarty_tpl->cache_id,
- $_smarty_tpl->compile_id,
- $content,
- $timestamp,
- $_smarty_tpl->source->uid
- )
- ) {
- return false;
- }
- }
- if (isset($content)) {
- eval('?>' . $content);
- return true;
- }
- return false;
- }
-
- /**
- * Write the rendered template output to cache
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- *
- * @return boolean success
- */
- public function writeCachedContent(Smarty_Internal_Template $_template, $content)
- {
- $this->addMetaTimestamp($content);
- return $this->write(array($_template->cached->filepath => $content), $_template->cache_lifetime);
- }
-
- /**
- * Read cached template from cache
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string|false content
- */
- public function readCachedContent(Smarty_Internal_Template $_template)
- {
- $content = $_template->cached->content ? $_template->cached->content : null;
- $timestamp = null;
- if ($content === null) {
- if (!$this->fetch(
- $_template->cached->filepath,
- $_template->source->name,
- $_template->cache_id,
- $_template->compile_id,
- $content,
- $timestamp,
- $_template->source->uid
- )
- ) {
- return false;
- }
- }
- if (isset($content)) {
- return $content;
- }
- return false;
- }
-
- /**
- * Empty cache
- * {@internal the $exp_time argument is ignored altogether }}
- *
- * @param Smarty $smarty Smarty object
- * @param integer $exp_time expiration time [being ignored]
- *
- * @return integer number of cache files deleted [always -1]
- * @uses purge() to clear the whole store
- * @uses invalidate() to mark everything outdated if purge() is inapplicable
- */
- public function clearAll(Smarty $smarty, $exp_time = null)
- {
- if (!$this->purge()) {
- $this->invalidate(null);
- }
- return -1;
- }
-
- /**
- * Empty cache for a specific template
- * {@internal the $exp_time argument is ignored altogether}}
- *
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time [being ignored]
- *
- * @return int number of cache files deleted [always -1]
- * @throws \SmartyException
- * @uses buildCachedFilepath() to generate the CacheID
- * @uses invalidate() to mark CacheIDs parent chain as outdated
- * @uses delete() to remove CacheID from cache
- */
- public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
- {
- $uid = $this->getTemplateUid($smarty, $resource_name);
- $cid = $uid . '#' . $this->sanitize($resource_name) . '#' . $this->sanitize($cache_id) . '#' .
- $this->sanitize($compile_id);
- $this->delete(array($cid));
- $this->invalidate($cid, $resource_name, $cache_id, $compile_id, $uid);
- return -1;
- }
-
- /**
- * Get template's unique ID
- *
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- *
- * @return string filepath of cache file
- * @throws \SmartyException
- */
- protected function getTemplateUid(Smarty $smarty, $resource_name)
- {
- if (isset($resource_name)) {
- $source = Smarty_Template_Source::load(null, $smarty, $resource_name);
- if ($source->exists) {
- return $source->uid;
- }
- }
- return '';
- }
-
- /**
- * Sanitize CacheID components
- *
- * @param string $string CacheID component to sanitize
- *
- * @return string sanitized CacheID component
- */
- protected function sanitize($string)
- {
- $string = trim((string)$string, '|');
- if (!$string) {
- return '';
- }
- return preg_replace('#[^\w\|]+#S', '_', $string);
- }
-
- /**
- * Fetch and prepare a cache object.
- *
- * @param string $cid CacheID to fetch
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer &$timestamp cached timestamp (epoch)
- * @param string $resource_uid resource's uid
- *
- * @return boolean success
- */
- protected function fetch(
- $cid,
- $resource_name = null,
- $cache_id = null,
- $compile_id = null,
- &$content = null,
- &$timestamp = null,
- $resource_uid = null
- ) {
- $t = $this->read(array($cid));
- $content = !empty($t[ $cid ]) ? $t[ $cid ] : null;
- $timestamp = null;
- if ($content && ($timestamp = $this->getMetaTimestamp($content))) {
- $invalidated =
- $this->getLatestInvalidationTimestamp($cid, $resource_name, $cache_id, $compile_id, $resource_uid);
- if ($invalidated > $timestamp) {
- $timestamp = null;
- $content = null;
- }
- }
- return !!$content;
- }
-
- /**
- * Add current microtime to the beginning of $cache_content
- * {@internal the header uses 8 Bytes, the first 4 Bytes are the seconds, the second 4 Bytes are the microseconds}}
- *
- * @param string &$content the content to be cached
- */
- protected function addMetaTimestamp(&$content)
- {
- $mt = explode(' ', microtime());
- $ts = pack('NN', $mt[ 1 ], (int)($mt[ 0 ] * 100000000));
- $content = $ts . $content;
- }
-
- /**
- * Extract the timestamp the $content was cached
- *
- * @param string &$content the cached content
- *
- * @return float the microtime the content was cached
- */
- protected function getMetaTimestamp(&$content)
- {
- extract(unpack('N1s/N1m/a*content', $content));
- /**
- * @var int $s
- * @var int $m
- */
- return $s + ($m / 100000000);
- }
-
- /**
- * Invalidate CacheID
- *
- * @param string $cid CacheID
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $resource_uid source's uid
- *
- * @return void
- */
- protected function invalidate(
- $cid = null,
- $resource_name = null,
- $cache_id = null,
- $compile_id = null,
- $resource_uid = null
- ) {
- $now = microtime(true);
- $key = null;
- // invalidate everything
- if (!$resource_name && !$cache_id && !$compile_id) {
- $key = 'IVK#ALL';
- } // invalidate all caches by template
- else {
- if ($resource_name && !$cache_id && !$compile_id) {
- $key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name);
- } // invalidate all caches by cache group
- else {
- if (!$resource_name && $cache_id && !$compile_id) {
- $key = 'IVK#CACHE#' . $this->sanitize($cache_id);
- } // invalidate all caches by compile id
- else {
- if (!$resource_name && !$cache_id && $compile_id) {
- $key = 'IVK#COMPILE#' . $this->sanitize($compile_id);
- } // invalidate by combination
- else {
- $key = 'IVK#CID#' . $cid;
- }
- }
- }
- }
- $this->write(array($key => $now));
- }
-
- /**
- * Determine the latest timestamp known to the invalidation chain
- *
- * @param string $cid CacheID to determine latest invalidation timestamp of
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $resource_uid source's filepath
- *
- * @return float the microtime the CacheID was invalidated
- */
- protected function getLatestInvalidationTimestamp(
- $cid,
- $resource_name = null,
- $cache_id = null,
- $compile_id = null,
- $resource_uid = null
- ) {
- // abort if there is no CacheID
- if (false && !$cid) {
- return 0;
- }
- // abort if there are no InvalidationKeys to check
- if (!($_cid = $this->listInvalidationKeys($cid, $resource_name, $cache_id, $compile_id, $resource_uid))) {
- return 0;
- }
- // there are no InValidationKeys
- if (!($values = $this->read($_cid))) {
- return 0;
- }
- // make sure we're dealing with floats
- $values = array_map('floatval', $values);
- return max($values);
- }
-
- /**
- * Translate a CacheID into the list of applicable InvalidationKeys.
- * Splits 'some|chain|into|an|array' into array( '#clearAll#', 'some', 'some|chain', 'some|chain|into', ... )
- *
- * @param string $cid CacheID to translate
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $resource_uid source's filepath
- *
- * @return array list of InvalidationKeys
- * @uses $invalidationKeyPrefix to prepend to each InvalidationKey
- */
- protected function listInvalidationKeys(
- $cid,
- $resource_name = null,
- $cache_id = null,
- $compile_id = null,
- $resource_uid = null
- ) {
- $t = array('IVK#ALL');
- $_name = $_compile = '#';
- if ($resource_name) {
- $_name .= $resource_uid . '#' . $this->sanitize($resource_name);
- $t[] = 'IVK#TEMPLATE' . $_name;
- }
- if ($compile_id) {
- $_compile .= $this->sanitize($compile_id);
- $t[] = 'IVK#COMPILE' . $_compile;
- }
- $_name .= '#';
- $cid = trim((string)$cache_id, '|');
- if (!$cid) {
- return $t;
- }
- $i = 0;
- while (true) {
- // determine next delimiter position
- $i = strpos($cid, '|', $i);
- // add complete CacheID if there are no more delimiters
- if ($i === false) {
- $t[] = 'IVK#CACHE#' . $cid;
- $t[] = 'IVK#CID' . $_name . $cid . $_compile;
- $t[] = 'IVK#CID' . $_name . $_compile;
- break;
- }
- $part = substr($cid, 0, $i);
- // add slice to list
- $t[] = 'IVK#CACHE#' . $part;
- $t[] = 'IVK#CID' . $_name . $part . $_compile;
- // skip past delimiter position
- $i++;
- }
- return $t;
- }
-
- /**
- * Check is cache is locked for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return boolean true or false if cache is locked
- */
- public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $key = 'LOCK#' . $cached->filepath;
- $data = $this->read(array($key));
- return $data && time() - $data[ $key ] < $smarty->locking_timeout;
- }
-
- /**
- * Lock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = true;
- $key = 'LOCK#' . $cached->filepath;
- $this->write(array($key => time()), $smarty->locking_timeout);
- }
-
- /**
- * Unlock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = false;
- $key = 'LOCK#' . $cached->filepath;
- $this->delete(array($key));
- }
-
- /**
- * Read values for a set of keys from cache
- *
- * @param array $keys list of keys to fetch
- *
- * @return array list of values with the given keys used as indexes
- */
- abstract protected function read(array $keys);
-
- /**
- * Save values for a set of keys to cache
- *
- * @param array $keys list of values to save
- * @param int $expire expiration time
- *
- * @return boolean true on success, false on failure
- */
- abstract protected function write(array $keys, $expire = null);
-
- /**
- * Remove values from cache
- *
- * @param array $keys list of keys to delete
- *
- * @return boolean true on success, false on failure
- */
- abstract protected function delete(array $keys);
-
- /**
- * Remove *all* values from cache
- *
- * @return boolean true on success, false on failure
- */
- protected function purge()
- {
- return false;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_data.php b/vendor/smarty/smarty/libs/sysplugins/smarty_data.php
deleted file mode 100644
index 2545ed3a8..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_data.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/**
- * Smarty Plugin Data
- * This file contains the data object
- *
- * @package Smarty
- * @subpackage Template
- * @author Uwe Tews
- */
-
-/**
- * class for the Smarty data object
- * The Smarty data object will hold Smarty variables in the current scope
- *
- * @package Smarty
- * @subpackage Template
- */
-class Smarty_Data extends Smarty_Internal_Data
-{
- /**
- * Counter
- *
- * @var int
- */
- public static $count = 0;
-
- /**
- * Data block name
- *
- * @var string
- */
- public $dataObjectName = '';
-
- /**
- * Smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * create Smarty data object
- *
- * @param Smarty|array $_parent parent template
- * @param Smarty|Smarty_Internal_Template $smarty global smarty instance
- * @param string $name optional data block name
- *
- * @throws SmartyException
- */
- public function __construct($_parent = null, $smarty = null, $name = null)
- {
- parent::__construct();
- self::$count++;
- $this->dataObjectName = 'Data_object ' . (isset($name) ? "'{$name}'" : self::$count);
- $this->smarty = $smarty;
- if (is_object($_parent)) {
- // when object set up back pointer
- $this->parent = $_parent;
- } elseif (is_array($_parent)) {
- // set up variable values
- foreach ($_parent as $_key => $_val) {
- $this->tpl_vars[ $_key ] = new Smarty_Variable($_val);
- }
- } elseif ($_parent !== null) {
- throw new SmartyException('Wrong type for template variables');
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php
deleted file mode 100644
index 9956d642b..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-/**
- * Smarty {block} tag class
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Block
-{
- /**
- * Block name
- *
- * @var string
- */
- public $name = '';
-
- /**
- * Hide attribute
- *
- * @var bool
- */
- public $hide = false;
-
- /**
- * Append attribute
- *
- * @var bool
- */
- public $append = false;
-
- /**
- * prepend attribute
- *
- * @var bool
- */
- public $prepend = false;
-
- /**
- * Block calls $smarty.block.child
- *
- * @var bool
- */
- public $callsChild = false;
-
- /**
- * Inheritance child block
- *
- * @var Smarty_Internal_Block|null
- */
- public $child = null;
-
- /**
- * Inheritance calling parent block
- *
- * @var Smarty_Internal_Block|null
- */
- public $parent = null;
-
- /**
- * Inheritance Template index
- *
- * @var int
- */
- public $tplIndex = 0;
-
- /**
- * Smarty_Internal_Block constructor.
- * - if outer level {block} of child template ($state === 1) save it as child root block
- * - otherwise process inheritance and render
- *
- * @param string $name block name
- * @param int|null $tplIndex index of outer level {block} if nested
- */
- public function __construct($name, $tplIndex)
- {
- $this->name = $name;
- $this->tplIndex = $tplIndex;
- }
-
- /**
- * Compiled block code overloaded by {block} class
- *
- * @param \Smarty_Internal_Template $tpl
- */
- public function callBlock(Smarty_Internal_Template $tpl)
- {
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
deleted file mode 100644
index c77ae9e17..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
+++ /dev/null
@@ -1,235 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin CacheResource File
- *
- * @package Smarty
- * @subpackage Cacher
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * This class does contain all necessary methods for the HTML cache on file system
- * Implements the file system as resource for the HTML cache Version ussing nocache inserts.
- *
- * @package Smarty
- * @subpackage Cacher
- */
-class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
-{
- /**
- * populate Cached Object with meta data from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
- {
- $source = &$_template->source;
- $smarty = &$_template->smarty;
- $_compile_dir_sep = $smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^';
- $_filepath = sha1($source->uid . $smarty->_joined_template_dir);
- $cached->filepath = $smarty->getCacheDir();
- if (isset($_template->cache_id)) {
- $cached->filepath .= preg_replace(
- array(
- '![^\w|]+!',
- '![|]+!'
- ),
- array(
- '_',
- $_compile_dir_sep
- ),
- $_template->cache_id
- ) . $_compile_dir_sep;
- }
- if (isset($_template->compile_id)) {
- $cached->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) . $_compile_dir_sep;
- }
- // if use_sub_dirs, break file into directories
- if ($smarty->use_sub_dirs) {
- $cached->filepath .= $_filepath[ 0 ] . $_filepath[ 1 ] . DIRECTORY_SEPARATOR . $_filepath[ 2 ] .
- $_filepath[ 3 ] .
- DIRECTORY_SEPARATOR .
- $_filepath[ 4 ] . $_filepath[ 5 ] . DIRECTORY_SEPARATOR;
- }
- $cached->filepath .= $_filepath;
- $basename = $source->handler->getBasename($source);
- if (!empty($basename)) {
- $cached->filepath .= '.' . $basename;
- }
- if ($smarty->cache_locking) {
- $cached->lock_id = $cached->filepath . '.lock';
- }
- $cached->filepath .= '.php';
- $cached->timestamp = $cached->exists = is_file($cached->filepath);
- if ($cached->exists) {
- $cached->timestamp = filemtime($cached->filepath);
- }
- }
-
- /**
- * populate Cached Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return void
- */
- public function populateTimestamp(Smarty_Template_Cached $cached)
- {
- $cached->timestamp = $cached->exists = is_file($cached->filepath);
- if ($cached->exists) {
- $cached->timestamp = filemtime($cached->filepath);
- }
- }
-
- /**
- * Read the cached template and process its header
- *
- * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
- * @param Smarty_Template_Cached $cached cached object
- * @param bool $update flag if called because cache update
- *
- * @return boolean true or false if the cached content does not exist
- */
- public function process(
- Smarty_Internal_Template $_smarty_tpl,
- Smarty_Template_Cached $cached = null,
- $update = false
- ) {
- $_smarty_tpl->cached->valid = false;
- if ($update && defined('HHVM_VERSION')) {
- eval('?>' . file_get_contents($_smarty_tpl->cached->filepath));
- return true;
- } else {
- return @include $_smarty_tpl->cached->filepath;
- }
- }
-
- /**
- * Write the rendered template output to cache
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- *
- * @return bool success
- * @throws \SmartyException
- */
- public function writeCachedContent(Smarty_Internal_Template $_template, $content)
- {
- if ($_template->smarty->ext->_writeFile->writeFile(
- $_template->cached->filepath,
- $content,
- $_template->smarty
- ) === true
- ) {
- if (function_exists('opcache_invalidate')
- && (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api'))) < 1
- ) {
- opcache_invalidate($_template->cached->filepath, true);
- } elseif (function_exists('apc_compile_file')) {
- apc_compile_file($_template->cached->filepath);
- }
- $cached = $_template->cached;
- $cached->timestamp = $cached->exists = is_file($cached->filepath);
- if ($cached->exists) {
- $cached->timestamp = filemtime($cached->filepath);
- return true;
- }
- }
- return false;
- }
-
- /**
- * Read cached template from cache
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string content
- */
- public function readCachedContent(Smarty_Internal_Template $_template)
- {
- if (is_file($_template->cached->filepath)) {
- return file_get_contents($_template->cached->filepath);
- }
- return false;
- }
-
- /**
- * Empty cache
- *
- * @param Smarty $smarty
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- public function clearAll(Smarty $smarty, $exp_time = null)
- {
- return $smarty->ext->_cacheResourceFile->clear($smarty, null, null, null, $exp_time);
- }
-
- /**
- * Empty cache for a specific template
- *
- * @param Smarty $smarty
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
- {
- return $smarty->ext->_cacheResourceFile->clear($smarty, $resource_name, $cache_id, $compile_id, $exp_time);
- }
-
- /**
- * Check is cache is locked for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return boolean true or false if cache is locked
- */
- public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- clearstatcache(true, $cached->lock_id ?? '');
- if (null !== $cached->lock_id && is_file($cached->lock_id)) {
- $t = filemtime($cached->lock_id);
- return $t && (time() - $t < $smarty->locking_timeout);
- } else {
- return false;
- }
- }
-
- /**
- * Lock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = true;
- touch($cached->lock_id);
- }
-
- /**
- * Unlock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = false;
- @unlink($cached->lock_id);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php
deleted file mode 100644
index 1a9befbf6..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Append
- * Compiles the {append} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Append Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign
-{
- /**
- * Compiles code for the {append} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // the following must be assigned at runtime because it will be overwritten in parent class
- $this->required_attributes = array('var', 'value');
- $this->shorttag_order = array('var', 'value');
- $this->optional_attributes = array('scope', 'index');
- $this->mapCache = array();
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // map to compile assign attributes
- if (isset($_attr[ 'index' ])) {
- $_params[ 'smarty_internal_index' ] = '[' . $_attr[ 'index' ] . ']';
- unset($_attr[ 'index' ]);
- } else {
- $_params[ 'smarty_internal_index' ] = '[]';
- }
- $_new_attr = array();
- foreach ($_attr as $key => $value) {
- $_new_attr[] = array($key => $value);
- }
- // call compile assign
- return parent::compile($_new_attr, $compiler, $_params);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php
deleted file mode 100644
index 1f0ab9b7d..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Assign
- * Compiles the {assign} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Assign Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $option_flags = array('nocache', 'noscope');
-
- /**
- * Valid scope names
- *
- * @var array
- */
- public $valid_scopes = array(
- 'local' => Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT,
- 'root' => Smarty::SCOPE_ROOT, 'global' => Smarty::SCOPE_GLOBAL,
- 'tpl_root' => Smarty::SCOPE_TPL_ROOT, 'smarty' => Smarty::SCOPE_SMARTY
- );
-
- /**
- * Compiles code for the {assign} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // the following must be assigned at runtime because it will be overwritten in Smarty_Internal_Compile_Append
- $this->required_attributes = array('var', 'value');
- $this->shorttag_order = array('var', 'value');
- $this->optional_attributes = array('scope');
- $this->mapCache = array();
- $_nocache = false;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // nocache ?
- if ($_var = $compiler->getId($_attr[ 'var' ])) {
- $_var = "'{$_var}'";
- } else {
- $_var = $_attr[ 'var' ];
- }
- if ($compiler->tag_nocache || $compiler->nocache) {
- $_nocache = true;
- // create nocache var to make it know for further compiling
- $compiler->setNocacheInVariable($_attr[ 'var' ]);
- }
- // scope setup
- if ($_attr[ 'noscope' ]) {
- $_scope = -1;
- } else {
- $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
- }
- // optional parameter
- $_params = '';
- if ($_nocache || $_scope) {
- $_params .= ' ,' . var_export($_nocache, true);
- }
- if ($_scope) {
- $_params .= ' ,' . $_scope;
- }
- if (isset($parameter[ 'smarty_internal_index' ])) {
- $output =
- "<?php \$_tmp_array = isset(\$_smarty_tpl->tpl_vars[{$_var}]) ? \$_smarty_tpl->tpl_vars[{$_var}]->value : array();\n";
- $output .= "if (!(is_array(\$_tmp_array) || \$_tmp_array instanceof ArrayAccess)) {\n";
- $output .= "settype(\$_tmp_array, 'array');\n";
- $output .= "}\n";
- $output .= "\$_tmp_array{$parameter['smarty_internal_index']} = {$_attr['value']};\n";
- $output .= "\$_smarty_tpl->_assignInScope({$_var}, \$_tmp_array{$_params});?>";
- } else {
- $output = "<?php \$_smarty_tpl->_assignInScope({$_var}, {$_attr['value']}{$_params});?>";
- }
- return $output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
deleted file mode 100644
index cbaccd2b3..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
+++ /dev/null
@@ -1,189 +0,0 @@
-<?php
-/**
- * This file is part of Smarty.
- *
- * (c) 2015 Uwe Tews
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Smarty Internal Plugin Compile Block Class
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Compile_Block extends Smarty_Internal_Compile_Shared_Inheritance
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $option_flags = array('hide', 'nocache');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('assign');
-
- /**
- * Compiles code for the {block} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- if (!isset($compiler->_cache[ 'blockNesting' ])) {
- $compiler->_cache[ 'blockNesting' ] = 0;
- }
- if ($compiler->_cache[ 'blockNesting' ] === 0) {
- // make sure that inheritance gets initialized in template code
- $this->registerInit($compiler);
- $this->option_flags = array('hide', 'nocache', 'append', 'prepend');
- } else {
- $this->option_flags = array('hide', 'nocache');
- }
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- ++$compiler->_cache[ 'blockNesting' ];
- $_className = 'Block_' . preg_replace('![^\w]+!', '_', uniqid(mt_rand(), true));
- $compiler->_cache[ 'blockName' ][ $compiler->_cache[ 'blockNesting' ] ] = $_attr[ 'name' ];
- $compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ] = $_className;
- $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ] = array();
- $compiler->_cache[ 'blockParams' ][ 1 ][ 'subBlocks' ][ trim($_attr[ 'name' ], '"\'') ][] = $_className;
- $this->openTag(
- $compiler,
- 'block',
- array(
- $_attr, $compiler->nocache, $compiler->parser->current_buffer,
- $compiler->template->compiled->has_nocache_code,
- $compiler->template->caching
- )
- );
- $compiler->saveRequiredPlugins(true);
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
- $compiler->template->compiled->has_nocache_code = false;
- $compiler->suppressNocacheProcessing = true;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile BlockClose Class
- */
-class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_Compile_Shared_Inheritance
-{
- /**
- * Compiles code for the {/block} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return bool true
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- list($_attr, $_nocache, $_buffer, $_has_nocache_code, $_caching) = $this->closeTag($compiler, array('block'));
- // init block parameter
- $_block = $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ];
- unset($compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ]);
- $_name = $_attr[ 'name' ];
- $_assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : null;
- unset($_attr[ 'assign' ], $_attr[ 'name' ]);
- foreach ($_attr as $name => $stat) {
- if ((is_bool($stat) && $stat !== false) || (!is_bool($stat) && $stat !== 'false')) {
- $_block[ $name ] = 'true';
- }
- }
- $_className = $compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ];
- // get compiled block code
- $_functionCode = $compiler->parser->current_buffer;
- // setup buffer for template function code
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
- $output = "<?php\n";
- $output .= $compiler->cStyleComment(" {block {$_name}} ") . "\n";
- $output .= "class {$_className} extends Smarty_Internal_Block\n";
- $output .= "{\n";
- foreach ($_block as $property => $value) {
- $output .= "public \${$property} = " . var_export($value, true) . ";\n";
- }
- $output .= "public function callBlock(Smarty_Internal_Template \$_smarty_tpl) {\n";
- $output .= $compiler->compileRequiredPlugins();
- $compiler->restoreRequiredPlugins();
- if ($compiler->template->compiled->has_nocache_code) {
- $output .= "\$_smarty_tpl->cached->hashes['{$compiler->template->compiled->nocache_hash}'] = true;\n";
- }
- if (isset($_assign)) {
- $output .= "ob_start();\n";
- }
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree(
- $compiler->parser,
- new Smarty_Internal_ParseTree_Tag(
- $compiler->parser,
- $output
- )
- );
- $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
- $output = "<?php\n";
- if (isset($_assign)) {
- $output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
- }
- $output .= "}\n";
- $output .= "}\n";
- $output .= $compiler->cStyleComment(" {/block {$_name}} ") . "\n\n";
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree(
- $compiler->parser,
- new Smarty_Internal_ParseTree_Tag(
- $compiler->parser,
- $output
- )
- );
- $compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
- // restore old status
- $compiler->template->compiled->has_nocache_code = $_has_nocache_code;
- $compiler->tag_nocache = $compiler->nocache;
- $compiler->nocache = $_nocache;
- $compiler->parser->current_buffer = $_buffer;
- $output = "<?php \n";
- if ($compiler->_cache[ 'blockNesting' ] === 1) {
- $output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name);\n";
- } else {
- $output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name, \$this->tplIndex);\n";
- }
- $output .= "?>\n";
- --$compiler->_cache[ 'blockNesting' ];
- if ($compiler->_cache[ 'blockNesting' ] === 0) {
- unset($compiler->_cache[ 'blockNesting' ]);
- }
- $compiler->has_code = true;
- $compiler->suppressNocacheProcessing = true;
- return $output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php
deleted file mode 100644
index 588d18628..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * This file is part of Smarty.
- *
- * (c) 2015 Uwe Tews
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Smarty Internal Plugin Compile Block Child Class
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Compile_Block_Child extends Smarty_Internal_Compile_Child
-{
- /**
- * Tag name
- *
- * @var string
- */
- public $tag = 'block_child';
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php
deleted file mode 100644
index 97f11ca43..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * This file is part of Smarty.
- *
- * (c) 2015 Uwe Tews
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Smarty Internal Plugin Compile Block Parent Class
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Compile_Block_Parent extends Smarty_Internal_Compile_Child
-{
- /**
- * Tag name
- *
- * @var string
- */
- public $tag = 'block_parent';
-
- /**
- * Block type
- *
- * @var string
- */
- public $blockType = 'Parent';
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php
deleted file mode 100644
index 1ee8d75d7..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Break
- * Compiles the {break} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Break Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('levels');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('levels');
-
- /**
- * Tag name may be overloaded by Smarty_Internal_Compile_Continue
- *
- * @var string
- */
- public $tag = 'break';
-
- /**
- * Compiles code for the {break} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- list($levels, $foreachLevels) = $this->checkLevels($args, $compiler);
- $output = "<?php ";
- if ($foreachLevels > 0 && $this->tag === 'continue') {
- $foreachLevels--;
- }
- if ($foreachLevels > 0) {
- /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */
- $foreachCompiler = $compiler->getTagCompiler('foreach');
- $output .= $foreachCompiler->compileRestore($foreachLevels);
- }
- $output .= "{$this->tag} {$levels};?>";
- return $output;
- }
-
- /**
- * check attributes and return array of break and foreach levels
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return array
- * @throws \SmartyCompilerException
- */
- public function checkLevels($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr[ 'nocache' ] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
- if (isset($_attr[ 'levels' ])) {
- if (!is_numeric($_attr[ 'levels' ])) {
- $compiler->trigger_template_error('level attribute must be a numeric constant', null, true);
- }
- $levels = $_attr[ 'levels' ];
- } else {
- $levels = 1;
- }
- $level_count = $levels;
- $stack_count = count($compiler->_tag_stack) - 1;
- $foreachLevels = 0;
- $lastTag = '';
- while ($level_count > 0 && $stack_count >= 0) {
- if (isset($_is_loopy[ $compiler->_tag_stack[ $stack_count ][ 0 ] ])) {
- $lastTag = $compiler->_tag_stack[ $stack_count ][ 0 ];
- if ($level_count === 0) {
- break;
- }
- $level_count--;
- if ($compiler->_tag_stack[ $stack_count ][ 0 ] === 'foreach') {
- $foreachLevels++;
- }
- }
- $stack_count--;
- }
- if ($level_count !== 0) {
- $compiler->trigger_template_error("cannot {$this->tag} {$levels} level(s)", null, true);
- }
- if ($lastTag === 'foreach' && $this->tag === 'break' && $foreachLevels > 0) {
- $foreachLevels--;
- }
- return array($levels, $foreachLevels);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php
deleted file mode 100644
index 445cabc60..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Function_Call
- * Compiles the calls of user defined tags defined by {function}
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Function_Call Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles the calls of user defined tags defined by {function}
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // save possible attributes
- if (isset($_attr[ 'assign' ])) {
- // output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr[ 'assign' ];
- }
- //$_name = trim($_attr['name'], "''");
- $_name = $_attr[ 'name' ];
- unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'nocache' ]);
- // set flag (compiled code of {function} must be included in cache file
- if (!$compiler->template->caching || $compiler->nocache || $compiler->tag_nocache) {
- $_nocache = 'true';
- } else {
- $_nocache = 'false';
- }
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(',', $_paramsArray) . ')';
- //$compiler->suppressNocacheProcessing = true;
- // was there an assign attribute
- if (isset($_assign)) {
- $_output =
- "<?php ob_start();\n\$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});\n\$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n";
- } else {
- $_output =
- "<?php \$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});?>\n";
- }
- return $_output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php
deleted file mode 100644
index a4ffbc9ea..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Capture
- * Compiles the {capture} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Capture Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('name', 'assign', 'append');
-
- /**
- * Compiles code for the {$smarty.capture.xxx}
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public static function compileSpecialVariable(
- $args,
- Smarty_Internal_TemplateCompilerBase $compiler,
- $parameter = null
- ) {
- return '$_smarty_tpl->smarty->ext->_capture->getBuffer($_smarty_tpl' .
- (isset($parameter[ 1 ]) ? ", {$parameter[ 1 ]})" : ')');
- }
-
- /**
- * Compiles code for the {capture} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param null $parameter
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter = null)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args, $parameter, 'capture');
- $buffer = isset($_attr[ 'name' ]) ? $_attr[ 'name' ] : "'default'";
- $assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : 'null';
- $append = isset($_attr[ 'append' ]) ? $_attr[ 'append' ] : 'null';
- $compiler->_cache[ 'capture_stack' ][] = array($compiler->nocache);
- // maybe nocache because of nocache variables
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- $_output = "<?php \$_smarty_tpl->smarty->ext->_capture->open(\$_smarty_tpl, $buffer, $assign, $append);?>";
- return $_output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Captureclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/capture} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param null $parameter
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args, $parameter, '/capture');
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- list($compiler->nocache) = array_pop($compiler->_cache[ 'capture_stack' ]);
- return "<?php \$_smarty_tpl->smarty->ext->_capture->close(\$_smarty_tpl);?>";
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php
deleted file mode 100644
index f728c18bf..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * This file is part of Smarty.
- *
- * (c) 2015 Uwe Tews
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Smarty Internal Plugin Compile Child Class
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Compile_Child extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('assign');
-
- /**
- * Tag name
- *
- * @var string
- */
- public $tag = 'child';
-
- /**
- * Block type
- *
- * @var string
- */
- public $blockType = 'Child';
-
- /**
- * Compiles code for the {child} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $tag = isset($parameter[ 0 ]) ? "'{$parameter[0]}'" : "'{{$this->tag}}'";
- if (!isset($compiler->_cache[ 'blockNesting' ])) {
- $compiler->trigger_template_error(
- "{$tag} used outside {block} tags ",
- $compiler->parser->lex->taglineno
- );
- }
- $compiler->has_code = true;
- $compiler->suppressNocacheProcessing = true;
- if ($this->blockType === 'Child') {
- $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ][ 'callsChild' ] = 'true';
- }
- $_assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : null;
- $output = "<?php \n";
- if (isset($_assign)) {
- $output .= "ob_start();\n";
- }
- $output .= '$_smarty_tpl->inheritance->call' . $this->blockType . '($_smarty_tpl, $this' .
- ($this->blockType === 'Child' ? '' : ", {$tag}") . ");\n";
- if (isset($_assign)) {
- $output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
- }
- $output .= "?>\n";
- return $output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php
deleted file mode 100644
index 8fe64ee10..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Config Load
- * Compiles the {config load} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Config Load Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('file');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('file', 'section');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('section', 'scope');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $option_flags = array('nocache', 'noscope');
-
- /**
- * Valid scope names
- *
- * @var array
- */
- public $valid_scopes = array(
- 'local' => Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT,
- 'root' => Smarty::SCOPE_ROOT, 'tpl_root' => Smarty::SCOPE_TPL_ROOT,
- 'smarty' => Smarty::SCOPE_SMARTY, 'global' => Smarty::SCOPE_SMARTY
- );
-
- /**
- * Compiles code for the {config_load} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr[ 'nocache' ] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
- // save possible attributes
- $conf_file = $_attr[ 'file' ];
- if (isset($_attr[ 'section' ])) {
- $section = $_attr[ 'section' ];
- } else {
- $section = 'null';
- }
- // scope setup
- if ($_attr[ 'noscope' ]) {
- $_scope = -1;
- } else {
- $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
- }
- // create config object
- $_output =
- "<?php\n\$_smarty_tpl->smarty->ext->configLoad->_loadConfigFile(\$_smarty_tpl, {$conf_file}, {$section}, {$_scope});\n?>\n";
- return $_output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php
deleted file mode 100644
index e545728ee..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Continue
- * Compiles the {continue} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Continue Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Continue extends Smarty_Internal_Compile_Break
-{
- /**
- * Tag name
- *
- * @var string
- */
- public $tag = 'continue';
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php
deleted file mode 100644
index 799416689..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Debug
- * Compiles the {debug} tag.
- * It opens a window the the Smarty Debugging Console.
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Debug Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {debug} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // compile always as nocache
- $compiler->tag_nocache = true;
- // display debug template
- $_output =
- "<?php \$_smarty_debug = new Smarty_Internal_Debug;\n \$_smarty_debug->display_debug(\$_smarty_tpl);\n";
- $_output .= "unset(\$_smarty_debug);\n?>";
- return $_output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php
deleted file mode 100644
index 8e0174e3e..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Eval
- * Compiles the {eval} tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Eval Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('var');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('assign');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('var', 'assign');
-
- /**
- * Compiles code for the {eval} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if (isset($_attr[ 'assign' ])) {
- // output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr[ 'assign' ];
- }
- // create template object
- $_output =
- "\$_template = new {$compiler->smarty->template_class}('eval:'.{$_attr[ 'var' ]}, \$_smarty_tpl->smarty, \$_smarty_tpl);";
- //was there an assign attribute?
- if (isset($_assign)) {
- $_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());";
- } else {
- $_output .= 'echo $_template->fetch();';
- }
- return "<?php $_output ?>";
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php
deleted file mode 100644
index d72d2b76f..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile extend
- * Compiles the {extends} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile extend Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Extends extends Smarty_Internal_Compile_Shared_Inheritance
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('file');
-
- /**
- * Array of names of optional attribute required by tag
- * use array('_any') if there is no restriction of attributes names
- *
- * @var array
- */
- public $optional_attributes = array('extends_resource');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('file');
-
- /**
- * Compiles code for the {extends} tag extends: resource
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr[ 'nocache' ] === true) {
- $compiler->trigger_template_error('nocache option not allowed', $compiler->parser->lex->line - 1);
- }
- if (strpos($_attr[ 'file' ], '$_tmp') !== false) {
- $compiler->trigger_template_error('illegal value for file attribute', $compiler->parser->lex->line - 1);
- }
- // add code to initialize inheritance
- $this->registerInit($compiler, true);
- $file = trim($_attr[ 'file' ], '\'"');
- if (strlen($file) > 8 && substr($file, 0, 8) === 'extends:') {
- // generate code for each template
- $files = array_reverse(explode('|', substr($file, 8)));
- $i = 0;
- foreach ($files as $file) {
- if ($file[ 0 ] === '"') {
- $file = trim($file, '".');
- } else {
- $file = "'{$file}'";
- }
- $i++;
- if ($i === count($files) && isset($_attr[ 'extends_resource' ])) {
- $this->compileEndChild($compiler);
- }
- $this->compileInclude($compiler, $file);
- }
- if (!isset($_attr[ 'extends_resource' ])) {
- $this->compileEndChild($compiler);
- }
- } else {
- $this->compileEndChild($compiler, $_attr[ 'file' ]);
- }
- $compiler->has_code = false;
- return '';
- }
-
- /**
- * Add code for inheritance endChild() method to end of template
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- * @param null|string $template optional inheritance parent template
- *
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- private function compileEndChild(Smarty_Internal_TemplateCompilerBase $compiler, $template = null)
- {
- $inlineUids = '';
- if (isset($template) && $compiler->smarty->merge_compiled_includes) {
- $code = $compiler->compileTag('include', array($template, array('scope' => 'parent')));
- if (preg_match('/([,][\s]*[\'][a-z0-9]+[\'][,][\s]*[\']content.*[\'])[)]/', $code, $match)) {
- $inlineUids = $match[ 1 ];
- }
- }
- $compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag(
- $compiler->parser,
- '<?php $_smarty_tpl->inheritance->endChild($_smarty_tpl' .
- (isset($template) ?
- ", {$template}{$inlineUids}" :
- '') . ");\n?>"
- );
- }
-
- /**
- * Add code for including subtemplate to end of template
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- * @param string $template subtemplate name
- *
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- private function compileInclude(Smarty_Internal_TemplateCompilerBase $compiler, $template)
- {
- $compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag(
- $compiler->parser,
- $compiler->compileTag(
- 'include',
- array(
- $template,
- array('scope' => 'parent')
- )
- )
- );
- }
-
- /**
- * Create source code for {extends} from source components array
- *
- * @param \Smarty_Internal_Template $template
- *
- * @return string
- */
- public static function extendsSourceArrayCode(Smarty_Internal_Template $template)
- {
- $resources = array();
- foreach ($template->source->components as $source) {
- $resources[] = $source->resource;
- }
- return $template->smarty->left_delimiter . 'extends file=\'extends:' . join('|', $resources) .
- '\' extends_resource=true' . $template->smarty->right_delimiter;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php
deleted file mode 100644
index 969e22c1a..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile For
- * Compiles the {for} {forelse} {/for} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile For Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {for} tag
- * Smarty supports two different syntax's:
- * - {for $var in $array}
- * For looping over arrays or iterators
- * - {for $x=0; $x<$y; $x++}
- * For general loops
- * The parser is generating different sets of attribute by which this compiler can
- * determine which syntax is used.
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter)
- {
- $compiler->loopNesting++;
- if ($parameter === 0) {
- $this->required_attributes = array('start', 'to');
- $this->optional_attributes = array('max', 'step');
- } else {
- $this->required_attributes = array('start', 'ifexp', 'var', 'step');
- $this->optional_attributes = array();
- }
- $this->mapCache = array();
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $output = "<?php\n";
- if ($parameter === 1) {
- foreach ($_attr[ 'start' ] as $_statement) {
- if (is_array($_statement[ 'var' ])) {
- $var = $_statement[ 'var' ][ 'var' ];
- $index = $_statement[ 'var' ][ 'smarty_internal_index' ];
- } else {
- $var = $_statement[ 'var' ];
- $index = '';
- }
- $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);\n";
- $output .= "\$_smarty_tpl->tpl_vars[$var]->value{$index} = {$_statement['value']};\n";
- }
- if (is_array($_attr[ 'var' ])) {
- $var = $_attr[ 'var' ][ 'var' ];
- $index = $_attr[ 'var' ][ 'smarty_internal_index' ];
- } else {
- $var = $_attr[ 'var' ];
- $index = '';
- }
- $output .= "if ($_attr[ifexp]) {\nfor (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$var]->value{$index}$_attr[step]) {\n";
- } else {
- $_statement = $_attr[ 'start' ];
- if (is_array($_statement[ 'var' ])) {
- $var = $_statement[ 'var' ][ 'var' ];
- $index = $_statement[ 'var' ][ 'smarty_internal_index' ];
- } else {
- $var = $_statement[ 'var' ];
- $index = '';
- }
- $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);";
- if (isset($_attr[ 'step' ])) {
- $output .= "\$_smarty_tpl->tpl_vars[$var]->step = $_attr[step];";
- } else {
- $output .= "\$_smarty_tpl->tpl_vars[$var]->step = 1;";
- }
- if (isset($_attr[ 'max' ])) {
- $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) min(ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step)),$_attr[max]);\n";
- } else {
- $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step));\n";
- }
- $output .= "if (\$_smarty_tpl->tpl_vars[$var]->total > 0) {\n";
- $output .= "for (\$_smarty_tpl->tpl_vars[$var]->value{$index} = $_statement[value], \$_smarty_tpl->tpl_vars[$var]->iteration = 1;\$_smarty_tpl->tpl_vars[$var]->iteration <= \$_smarty_tpl->tpl_vars[$var]->total;\$_smarty_tpl->tpl_vars[$var]->value{$index} += \$_smarty_tpl->tpl_vars[$var]->step, \$_smarty_tpl->tpl_vars[$var]->iteration++) {\n";
- $output .= "\$_smarty_tpl->tpl_vars[$var]->first = \$_smarty_tpl->tpl_vars[$var]->iteration === 1;";
- $output .= "\$_smarty_tpl->tpl_vars[$var]->last = \$_smarty_tpl->tpl_vars[$var]->iteration === \$_smarty_tpl->tpl_vars[$var]->total;";
- }
- $output .= '?>';
- $this->openTag($compiler, 'for', array('for', $compiler->nocache));
- // maybe nocache because of nocache variables
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- // return compiled code
- return $output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Forelse Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {forelse} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- list($openTag, $nocache) = $this->closeTag($compiler, array('for'));
- $this->openTag($compiler, 'forelse', array('forelse', $nocache));
- return "<?php }} else { ?>";
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Forclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/for} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter)
- {
- $compiler->loopNesting--;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- list($openTag, $compiler->nocache) = $this->closeTag($compiler, array('for', 'forelse'));
- $output = "<?php }\n";
- if ($openTag !== 'forelse') {
- $output .= "}\n";
- }
- $output .= "?>";
- return $output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php
deleted file mode 100644
index edfe358be..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php
+++ /dev/null
@@ -1,343 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Foreach
- * Compiles the {foreach} {foreachelse} {/foreach} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Foreach Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Foreach extends Smarty_Internal_Compile_Private_ForeachSection
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('from', 'item');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('name', 'key', 'properties');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('from', 'item', 'key', 'name');
-
- /**
- * counter
- *
- * @var int
- */
- public $counter = 0;
-
- /**
- * Name of this tag
- *
- * @var string
- */
- public $tagName = 'foreach';
-
- /**
- * Valid properties of $smarty.foreach.name.xxx variable
- *
- * @var array
- */
- public $nameProperties = array('first', 'last', 'index', 'iteration', 'show', 'total');
-
- /**
- * Valid properties of $item@xxx variable
- *
- * @var array
- */
- public $itemProperties = array('first', 'last', 'index', 'iteration', 'show', 'total', 'key');
-
- /**
- * Flag if tag had name attribute
- *
- * @var bool
- */
- public $isNamed = false;
-
- /**
- * Compiles code for the {foreach} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $compiler->loopNesting++;
- // init
- $this->isNamed = false;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $from = $_attr[ 'from' ];
- $item = $compiler->getId($_attr[ 'item' ]);
- if ($item === false) {
- $item = $compiler->getVariableName($_attr[ 'item' ]);
- }
- $key = $name = null;
- $attributes = array('item' => $item);
- if (isset($_attr[ 'key' ])) {
- $key = $compiler->getId($_attr[ 'key' ]);
- if ($key === false) {
- $key = $compiler->getVariableName($_attr[ 'key' ]);
- }
- $attributes[ 'key' ] = $key;
- }
- if (isset($_attr[ 'name' ])) {
- $this->isNamed = true;
- $name = $attributes[ 'name' ] = $compiler->getId($_attr[ 'name' ]);
- }
- foreach ($attributes as $a => $v) {
- if ($v === false) {
- $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
- }
- }
- $fromName = $compiler->getVariableName($_attr[ 'from' ]);
- if ($fromName) {
- foreach (array('item', 'key') as $a) {
- if (isset($attributes[ $a ]) && $attributes[ $a ] === $fromName) {
- $compiler->trigger_template_error(
- "'{$a}' and 'from' may not have same variable name '{$fromName}'",
- null,
- true
- );
- }
- }
- }
- $itemVar = "\$_smarty_tpl->tpl_vars['{$item}']";
- $local = '$__foreach_' . $attributes[ 'item' ] . '_' . $this->counter++ . '_';
- // search for used tag attributes
- $itemAttr = array();
- $namedAttr = array();
- $this->scanForProperties($attributes, $compiler);
- if (!empty($this->matchResults[ 'item' ])) {
- $itemAttr = $this->matchResults[ 'item' ];
- }
- if (!empty($this->matchResults[ 'named' ])) {
- $namedAttr = $this->matchResults[ 'named' ];
- }
- if (isset($_attr[ 'properties' ]) && preg_match_all('/[\'](.*?)[\']/', $_attr[ 'properties' ], $match)) {
- foreach ($match[ 1 ] as $prop) {
- if (in_array($prop, $this->itemProperties)) {
- $itemAttr[ $prop ] = true;
- } else {
- $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
- }
- }
- if ($this->isNamed) {
- foreach ($match[ 1 ] as $prop) {
- if (in_array($prop, $this->nameProperties)) {
- $nameAttr[ $prop ] = true;
- } else {
- $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
- }
- }
- }
- }
- if (isset($itemAttr[ 'first' ])) {
- $itemAttr[ 'index' ] = true;
- }
- if (isset($namedAttr[ 'first' ])) {
- $namedAttr[ 'index' ] = true;
- }
- if (isset($namedAttr[ 'last' ])) {
- $namedAttr[ 'iteration' ] = true;
- $namedAttr[ 'total' ] = true;
- }
- if (isset($itemAttr[ 'last' ])) {
- $itemAttr[ 'iteration' ] = true;
- $itemAttr[ 'total' ] = true;
- }
- if (isset($namedAttr[ 'show' ])) {
- $namedAttr[ 'total' ] = true;
- }
- if (isset($itemAttr[ 'show' ])) {
- $itemAttr[ 'total' ] = true;
- }
- $keyTerm = '';
- if (isset($attributes[ 'key' ])) {
- $keyTerm = "\$_smarty_tpl->tpl_vars['{$key}']->value => ";
- }
- if (isset($itemAttr[ 'key' ])) {
- $keyTerm = "{$itemVar}->key => ";
- }
- if ($this->isNamed) {
- $foreachVar = "\$_smarty_tpl->tpl_vars['__smarty_foreach_{$attributes['name']}']";
- }
- $needTotal = isset($itemAttr[ 'total' ]);
- // Register tag
- $this->openTag(
- $compiler,
- 'foreach',
- array('foreach', $compiler->nocache, $local, $itemVar, empty($itemAttr) ? 1 : 2)
- );
- // maybe nocache because of nocache variables
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- // generate output code
- $output = "<?php\n";
- $output .= "\$_from = \$_smarty_tpl->smarty->ext->_foreach->init(\$_smarty_tpl, $from, " .
- var_export($item, true);
- if ($name || $needTotal || $key) {
- $output .= ', ' . var_export($needTotal, true);
- }
- if ($name || $key) {
- $output .= ', ' . var_export($key, true);
- }
- if ($name) {
- $output .= ', ' . var_export($name, true) . ', ' . var_export($namedAttr, true);
- }
- $output .= ");\n";
- if (isset($itemAttr[ 'show' ])) {
- $output .= "{$itemVar}->show = ({$itemVar}->total > 0);\n";
- }
- if (isset($itemAttr[ 'iteration' ])) {
- $output .= "{$itemVar}->iteration = 0;\n";
- }
- if (isset($itemAttr[ 'index' ])) {
- $output .= "{$itemVar}->index = -1;\n";
- }
- $output .= "{$itemVar}->do_else = true;\n";
- $output .= "if (\$_from !== null) foreach (\$_from as {$keyTerm}{$itemVar}->value) {\n";
- $output .= "{$itemVar}->do_else = false;\n";
- if (isset($attributes[ 'key' ]) && isset($itemAttr[ 'key' ])) {
- $output .= "\$_smarty_tpl->tpl_vars['{$key}']->value = {$itemVar}->key;\n";
- }
- if (isset($itemAttr[ 'iteration' ])) {
- $output .= "{$itemVar}->iteration++;\n";
- }
- if (isset($itemAttr[ 'index' ])) {
- $output .= "{$itemVar}->index++;\n";
- }
- if (isset($itemAttr[ 'first' ])) {
- $output .= "{$itemVar}->first = !{$itemVar}->index;\n";
- }
- if (isset($itemAttr[ 'last' ])) {
- $output .= "{$itemVar}->last = {$itemVar}->iteration === {$itemVar}->total;\n";
- }
- if (isset($foreachVar)) {
- if (isset($namedAttr[ 'iteration' ])) {
- $output .= "{$foreachVar}->value['iteration']++;\n";
- }
- if (isset($namedAttr[ 'index' ])) {
- $output .= "{$foreachVar}->value['index']++;\n";
- }
- if (isset($namedAttr[ 'first' ])) {
- $output .= "{$foreachVar}->value['first'] = !{$foreachVar}->value['index'];\n";
- }
- if (isset($namedAttr[ 'last' ])) {
- $output .= "{$foreachVar}->value['last'] = {$foreachVar}->value['iteration'] === {$foreachVar}->value['total'];\n";
- }
- }
- if (!empty($itemAttr)) {
- $output .= "{$local}saved = {$itemVar};\n";
- }
- $output .= '?>';
- return $output;
- }
-
- /**
- * Compiles code for to restore saved template variables
- *
- * @param int $levels number of levels to restore
- *
- * @return string compiled code
- */
- public function compileRestore($levels)
- {
- return "\$_smarty_tpl->smarty->ext->_foreach->restore(\$_smarty_tpl, {$levels});";
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Foreachelse Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {foreachelse} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- list($openTag, $nocache, $local, $itemVar, $restore) = $this->closeTag($compiler, array('foreach'));
- $this->openTag($compiler, 'foreachelse', array('foreachelse', $nocache, $local, $itemVar, 0));
- $output = "<?php\n";
- if ($restore === 2) {
- $output .= "{$itemVar} = {$local}saved;\n";
- }
- $output .= "}\nif ({$itemVar}->do_else) {\n?>";
- return $output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Foreachclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/foreach} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $compiler->loopNesting--;
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- list(
- $openTag, $compiler->nocache, $local, $itemVar, $restore
- ) = $this->closeTag($compiler, array('foreach', 'foreachelse'));
- $output = "<?php\n";
- if ($restore === 2) {
- $output .= "{$itemVar} = {$local}saved;\n";
- }
- $output .= "}\n";
- /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */
- $foreachCompiler = $compiler->getTagCompiler('foreach');
- $output .= $foreachCompiler->compileRestore(1);
- $output .= "?>";
- return $output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
deleted file mode 100644
index b05a82b74..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
+++ /dev/null
@@ -1,236 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Function
- * Compiles the {function} {/function} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Function Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the {function} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return bool true
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr[ 'nocache' ] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
- unset($_attr[ 'nocache' ]);
- $_name = trim($_attr[ 'name' ], '\'"');
-
- if (!preg_match('/^[a-zA-Z0-9_\x80-\xff]+$/', $_name)) {
- $compiler->trigger_template_error("Function name contains invalid characters: {$_name}", null, true);
- }
-
- $compiler->parent_compiler->tpl_function[ $_name ] = array();
- $save = array(
- $_attr, $compiler->parser->current_buffer, $compiler->template->compiled->has_nocache_code,
- $compiler->template->caching
- );
- $this->openTag($compiler, 'function', $save);
- // Init temporary context
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
- $compiler->template->compiled->has_nocache_code = false;
- $compiler->saveRequiredPlugins(true);
- return true;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Functionclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiler object
- *
- * @var object
- */
- private $compiler = null;
-
- /**
- * Compiles code for the {/function} tag
- *
- * @param array $args array with attributes from parser
- * @param object|\Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return bool true
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->compiler = $compiler;
- $saved_data = $this->closeTag($compiler, array('function'));
- $_attr = $saved_data[ 0 ];
- $_name = trim($_attr[ 'name' ], '\'"');
- $compiler->parent_compiler->tpl_function[ $_name ][ 'compiled_filepath' ] =
- $compiler->parent_compiler->template->compiled->filepath;
- $compiler->parent_compiler->tpl_function[ $_name ][ 'uid' ] = $compiler->template->source->uid;
- $_parameter = $_attr;
- unset($_parameter[ 'name' ]);
- // default parameter
- $_paramsArray = array();
- foreach ($_parameter as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- if (!empty($_paramsArray)) {
- $_params = 'array(' . implode(',', $_paramsArray) . ')';
- $_paramsCode = "\$params = array_merge($_params, \$params);\n";
- } else {
- $_paramsCode = '';
- }
- $_functionCode = $compiler->parser->current_buffer;
- // setup buffer for template function code
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
- $_funcName = "smarty_template_function_{$_name}_{$compiler->template->compiled->nocache_hash}";
- $_funcNameCaching = $_funcName . '_nocache';
- if ($compiler->template->compiled->has_nocache_code) {
- $compiler->parent_compiler->tpl_function[ $_name ][ 'call_name_caching' ] = $_funcNameCaching;
- $output = "<?php\n";
- $output .= $compiler->cStyleComment(" {$_funcNameCaching} ") . "\n";
- $output .= "if (!function_exists('{$_funcNameCaching}')) {\n";
- $output .= "function {$_funcNameCaching} (Smarty_Internal_Template \$_smarty_tpl,\$params) {\n";
- $output .= "ob_start();\n";
- $output .= $compiler->compileRequiredPlugins();
- $output .= "\$_smarty_tpl->compiled->has_nocache_code = true;\n";
- $output .= $_paramsCode;
- $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}\n";
- $output .= "\$params = var_export(\$params, true);\n";
- $output .= "echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php ";
- $output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->saveTemplateVariables(\\\$_smarty_tpl, '{$_name}');\nforeach (\$params as \\\$key => \\\$value) {\n\\\$_smarty_tpl->tpl_vars[\\\$key] = new Smarty_Variable(\\\$value, \\\$_smarty_tpl->isRenderingCache);\n}\n?>";
- $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";?>";
- $compiler->parser->current_buffer->append_subtree(
- $compiler->parser,
- new Smarty_Internal_ParseTree_Tag(
- $compiler->parser,
- $output
- )
- );
- $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
- $output = "<?php echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php ";
- $output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->restoreTemplateVariables(\\\$_smarty_tpl, '{$_name}');?>\n";
- $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";\n?>";
- $output .= "<?php echo str_replace('{$compiler->template->compiled->nocache_hash}', \$_smarty_tpl->compiled->nocache_hash ?? '', ob_get_clean());\n";
- $output .= "}\n}\n";
- $output .= $compiler->cStyleComment("/ {$_funcName}_nocache ") . "\n\n";
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree(
- $compiler->parser,
- new Smarty_Internal_ParseTree_Tag(
- $compiler->parser,
- $output
- )
- );
- $_functionCode = new Smarty_Internal_ParseTree_Tag(
- $compiler->parser,
- preg_replace_callback(
- "/((<\?php )?echo '\/\*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/([\S\s]*?)\/\*\/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
- array($this, 'removeNocache'),
- $_functionCode->to_smarty_php($compiler->parser)
- )
- );
- }
- $compiler->parent_compiler->tpl_function[ $_name ][ 'call_name' ] = $_funcName;
- $output = "<?php\n";
- $output .= $compiler->cStyleComment(" {$_funcName} ") . "\n";
- $output .= "if (!function_exists('{$_funcName}')) {\n";
- $output .= "function {$_funcName}(Smarty_Internal_Template \$_smarty_tpl,\$params) {\n";
- $output .= $_paramsCode;
- $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}\n";
- $output .= $compiler->compileCheckPlugins(array_merge($compiler->required_plugins[ 'compiled' ],
- $compiler->required_plugins[ 'nocache' ]));
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree(
- $compiler->parser,
- new Smarty_Internal_ParseTree_Tag(
- $compiler->parser,
- $output
- )
- );
- $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
- $output = "<?php\n}}\n";
- $output .= $compiler->cStyleComment("/ {$_funcName} ") . "\n\n";
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree(
- $compiler->parser,
- new Smarty_Internal_ParseTree_Tag(
- $compiler->parser,
- $output
- )
- );
- $compiler->parent_compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
- // restore old buffer
- $compiler->parser->current_buffer = $saved_data[ 1 ];
- // restore old status
- $compiler->restoreRequiredPlugins();
- $compiler->template->compiled->has_nocache_code = $saved_data[ 2 ];
- $compiler->template->caching = $saved_data[ 3 ];
- return true;
- }
-
- /**
- * Remove nocache code
- *
- * @param $match
- *
- * @return string
- */
- public function removeNocache($match)
- {
- $code =
- preg_replace(
- "/((<\?php )?echo '\/\*%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/)|(\/\*\/%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
- '',
- $match[ 0 ]
- );
- $code = str_replace(array('\\\'', '\\\\\''), array('\'', '\\\''), $code);
- return $code;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php
deleted file mode 100644
index df3dc3fad..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php
+++ /dev/null
@@ -1,207 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile If
- * Compiles the {if} {else} {elseif} {/if} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile If Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {if} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $this->openTag($compiler, 'if', array(1, $compiler->nocache));
- // must whole block be nocache ?
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- if (!isset($parameter[ 'if condition' ])) {
- $compiler->trigger_template_error('missing if condition', null, true);
- }
- if (is_array($parameter[ 'if condition' ])) {
- if (is_array($parameter[ 'if condition' ][ 'var' ])) {
- $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
- } else {
- $var = $parameter[ 'if condition' ][ 'var' ];
- }
- if ($compiler->nocache) {
- // create nocache var to make it know for further compiling
- $compiler->setNocacheInVariable($var);
- }
- $prefixVar = $compiler->getNewPrefixVariable();
- $_output = "<?php {$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]};?>\n";
- $assignAttr = array();
- $assignAttr[][ 'value' ] = $prefixVar;
- $assignCompiler = new Smarty_Internal_Compile_Assign();
- if (is_array($parameter[ 'if condition' ][ 'var' ])) {
- $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
- $_output .= $assignCompiler->compile(
- $assignAttr,
- $compiler,
- array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ])
- );
- } else {
- $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
- $_output .= $assignCompiler->compile($assignAttr, $compiler, array());
- }
- $_output .= "<?php if ({$prefixVar}) {?>";
- return $_output;
- } else {
- return "<?php if ({$parameter['if condition']}) {?>";
- }
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Else Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {else} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
- $this->openTag($compiler, 'else', array($nesting, $compiler->tag_nocache));
- return '<?php } else { ?>';
- }
-}
-
-/**
- * Smarty Internal Plugin Compile ElseIf Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {elseif} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
- if (!isset($parameter[ 'if condition' ])) {
- $compiler->trigger_template_error('missing elseif condition', null, true);
- }
- $assignCode = '';
- $var = '';
- if (is_array($parameter[ 'if condition' ])) {
- $condition_by_assign = true;
- if (is_array($parameter[ 'if condition' ][ 'var' ])) {
- $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
- } else {
- $var = $parameter[ 'if condition' ][ 'var' ];
- }
- if ($compiler->nocache) {
- // create nocache var to make it know for further compiling
- $compiler->setNocacheInVariable($var);
- }
- $prefixVar = $compiler->getNewPrefixVariable();
- $assignCode = "<?php {$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]};?>\n";
- $assignCompiler = new Smarty_Internal_Compile_Assign();
- $assignAttr = array();
- $assignAttr[][ 'value' ] = $prefixVar;
- if (is_array($parameter[ 'if condition' ][ 'var' ])) {
- $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
- $assignCode .= $assignCompiler->compile(
- $assignAttr,
- $compiler,
- array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ])
- );
- } else {
- $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
- $assignCode .= $assignCompiler->compile($assignAttr, $compiler, array());
- }
- } else {
- $condition_by_assign = false;
- }
- $prefixCode = $compiler->getPrefixCode();
- if (empty($prefixCode)) {
- if ($condition_by_assign) {
- $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
- $_output = $compiler->appendCode("<?php } else {\n?>", $assignCode);
- return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>");
- } else {
- $this->openTag($compiler, 'elseif', array($nesting, $compiler->tag_nocache));
- return "<?php } elseif ({$parameter['if condition']}) {?>";
- }
- } else {
- $_output = $compiler->appendCode("<?php } else {\n?>", $prefixCode);
- $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
- if ($condition_by_assign) {
- $_output = $compiler->appendCode($_output, $assignCode);
- return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>");
- } else {
- return $compiler->appendCode($_output, "<?php if ({$parameter['if condition']}) {?>");
- }
- }
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Ifclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/if} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- list($nesting, $compiler->nocache) = $this->closeTag($compiler, array('if', 'else', 'elseif'));
- $tmp = '';
- for ($i = 0; $i < $nesting; $i++) {
- $tmp .= '}';
- }
- return "<?php {$tmp}?>";
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
deleted file mode 100644
index bf62461bc..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
+++ /dev/null
@@ -1,347 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Include
- * Compiles the {include} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Include Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
-{
- /**
- * caching mode to create nocache code but no cache file
- */
- const CACHING_NOCACHE_CODE = 9999;
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('file');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('file');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $option_flags = array('nocache', 'inline', 'caching');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Valid scope names
- *
- * @var array
- */
- public $valid_scopes = array(
- 'parent' => Smarty::SCOPE_PARENT, 'root' => Smarty::SCOPE_ROOT,
- 'global' => Smarty::SCOPE_GLOBAL, 'tpl_root' => Smarty::SCOPE_TPL_ROOT,
- 'smarty' => Smarty::SCOPE_SMARTY
- );
-
- /**
- * Compiles code for the {include} tag
- *
- * @param array $args array with attributes from parser
- * @param Smarty_Internal_SmartyTemplateCompiler $compiler compiler object
- *
- * @return string
- * @throws \Exception
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_SmartyTemplateCompiler $compiler)
- {
- $uid = $t_hash = null;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $fullResourceName = $source_resource = $_attr[ 'file' ];
- $variable_template = false;
- $cache_tpl = false;
- // parse resource_name
- if (preg_match('/^([\'"])(([A-Za-z0-9_\-]{2,})[:])?(([^$()]+)|(.+))\1$/', $source_resource, $match)) {
- $type = !empty($match[ 3 ]) ? $match[ 3 ] : $compiler->template->smarty->default_resource_type;
- $name = !empty($match[ 5 ]) ? $match[ 5 ] : $match[ 6 ];
- $handler = Smarty_Resource::load($compiler->smarty, $type);
- if ($handler->recompiled || $handler->uncompiled) {
- $variable_template = true;
- }
- if (!$variable_template) {
- if ($type !== 'string') {
- $fullResourceName = "{$type}:{$name}";
- $compiled = $compiler->parent_compiler->template->compiled;
- if (isset($compiled->includes[ $fullResourceName ])) {
- $compiled->includes[ $fullResourceName ]++;
- $cache_tpl = true;
- } else {
- if ("{$compiler->template->source->type}:{$compiler->template->source->name}" ==
- $fullResourceName
- ) {
- // recursive call of current template
- $compiled->includes[ $fullResourceName ] = 2;
- $cache_tpl = true;
- } else {
- $compiled->includes[ $fullResourceName ] = 1;
- }
- }
- $fullResourceName = $match[ 1 ] . $fullResourceName . $match[ 1 ];
- }
- }
- if (empty($match[ 5 ])) {
- $variable_template = true;
- }
- } else {
- $variable_template = true;
- }
- // scope setup
- $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
- // set flag to cache subtemplate object when called within loop or template name is variable.
- if ($cache_tpl || $variable_template || $compiler->loopNesting > 0) {
- $_cache_tpl = 'true';
- } else {
- $_cache_tpl = 'false';
- }
- // assume caching is off
- $_caching = Smarty::CACHING_OFF;
- $call_nocache = $compiler->tag_nocache || $compiler->nocache;
- // caching was on and {include} is not in nocache mode
- if ($compiler->template->caching && !$compiler->nocache && !$compiler->tag_nocache) {
- $_caching = self::CACHING_NOCACHE_CODE;
- }
- // flag if included template code should be merged into caller
- $merge_compiled_includes = ($compiler->smarty->merge_compiled_includes || $_attr[ 'inline' ] === true) &&
- !$compiler->template->source->handler->recompiled;
- if ($merge_compiled_includes) {
- // variable template name ?
- if ($variable_template) {
- $merge_compiled_includes = false;
- }
- // variable compile_id?
- if (isset($_attr[ 'compile_id' ]) && $compiler->isVariable($_attr[ 'compile_id' ])) {
- $merge_compiled_includes = false;
- }
- }
- /*
- * if the {include} tag provides individual parameter for caching or compile_id
- * the subtemplate must not be included into the common cache file and is treated like
- * a call in nocache mode.
- *
- */
- if ($_attr[ 'nocache' ] !== true && $_attr[ 'caching' ]) {
- $_caching = $_new_caching = (int)$_attr[ 'caching' ];
- $call_nocache = true;
- } else {
- $_new_caching = Smarty::CACHING_LIFETIME_CURRENT;
- }
- if (isset($_attr[ 'cache_lifetime' ])) {
- $_cache_lifetime = $_attr[ 'cache_lifetime' ];
- $call_nocache = true;
- $_caching = $_new_caching;
- } else {
- $_cache_lifetime = '$_smarty_tpl->cache_lifetime';
- }
- if (isset($_attr[ 'cache_id' ])) {
- $_cache_id = $_attr[ 'cache_id' ];
- $call_nocache = true;
- $_caching = $_new_caching;
- } else {
- $_cache_id = '$_smarty_tpl->cache_id';
- }
- if (isset($_attr[ 'compile_id' ])) {
- $_compile_id = $_attr[ 'compile_id' ];
- } else {
- $_compile_id = '$_smarty_tpl->compile_id';
- }
- // if subtemplate will be called in nocache mode do not merge
- if ($compiler->template->caching && $call_nocache) {
- $merge_compiled_includes = false;
- }
- // assign attribute
- if (isset($_attr[ 'assign' ])) {
- // output will be stored in a smarty variable instead of being displayed
- if ($_assign = $compiler->getId($_attr[ 'assign' ])) {
- $_assign = "'{$_assign}'";
- if ($compiler->tag_nocache || $compiler->nocache || $call_nocache) {
- // create nocache var to make it know for further compiling
- $compiler->setNocacheInVariable($_attr[ 'assign' ]);
- }
- } else {
- $_assign = $_attr[ 'assign' ];
- }
- }
- $has_compiled_template = false;
- if ($merge_compiled_includes) {
- $c_id = isset($_attr[ 'compile_id' ]) ? $_attr[ 'compile_id' ] : $compiler->template->compile_id;
- // we must observe different compile_id and caching
- $t_hash = sha1($c_id . ($_caching ? '--caching' : '--nocaching'));
- $compiler->smarty->allow_ambiguous_resources = true;
- /* @var Smarty_Internal_Template $tpl */
- $tpl = new $compiler->smarty->template_class(
- trim($fullResourceName, '"\''),
- $compiler->smarty,
- $compiler->template,
- $compiler->template->cache_id,
- $c_id,
- $_caching
- );
- $uid = $tpl->source->type . $tpl->source->uid;
- if (!isset($compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ])) {
- $has_compiled_template = $this->compileInlineTemplate($compiler, $tpl, $t_hash);
- } else {
- $has_compiled_template = true;
- }
- unset($tpl);
- }
- // delete {include} standard attributes
- unset($_attr[ 'file' ], $_attr[ 'assign' ], $_attr[ 'cache_id' ], $_attr[ 'compile_id' ], $_attr[ 'cache_lifetime' ], $_attr[ 'nocache' ], $_attr[ 'caching' ], $_attr[ 'scope' ], $_attr[ 'inline' ]);
- // remaining attributes must be assigned as smarty variable
- $_vars = 'array()';
- if (!empty($_attr)) {
- $_pairs = array();
- // create variables
- foreach ($_attr as $key => $value) {
- $_pairs[] = "'$key'=>$value";
- }
- $_vars = 'array(' . join(',', $_pairs) . ')';
- }
- $update_compile_id = $compiler->template->caching && !$compiler->tag_nocache && !$compiler->nocache &&
- $_compile_id !== '$_smarty_tpl->compile_id';
- if ($has_compiled_template && !$call_nocache) {
- $_output = "<?php\n";
- if ($update_compile_id) {
- $_output .= $compiler->makeNocacheCode("\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n");
- }
- if (!empty($_attr) && $_caching === 9999 && $compiler->template->caching) {
- $_vars_nc = "foreach ($_vars as \$ik => \$iv) {\n";
- $_vars_nc .= "\$_smarty_tpl->tpl_vars[\$ik] = new Smarty_Variable(\$iv);\n";
- $_vars_nc .= "}\n";
- $_output .= substr($compiler->processNocacheCode('<?php ' . $_vars_nc . "?>\n", true), 6, -3);
- }
- if (isset($_assign)) {
- $_output .= "ob_start();\n";
- }
- $_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, {$_cache_id}, {$_compile_id}, {$_caching}, {$_cache_lifetime}, {$_vars}, {$_scope}, {$_cache_tpl}, '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['uid']}', '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['func']}');\n";
- if (isset($_assign)) {
- $_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
- }
- if ($update_compile_id) {
- $_output .= $compiler->makeNocacheCode("\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n");
- }
- $_output .= "?>";
- return $_output;
- }
- if ($call_nocache) {
- $compiler->tag_nocache = true;
- }
- $_output = "<?php ";
- if ($update_compile_id) {
- $_output .= "\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n";
- }
- // was there an assign attribute
- if (isset($_assign)) {
- $_output .= "ob_start();\n";
- }
- $_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_scope, {$_cache_tpl});\n";
- if (isset($_assign)) {
- $_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
- }
- if ($update_compile_id) {
- $_output .= "\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n";
- }
- $_output .= "?>";
- return $_output;
- }
-
- /**
- * Compile inline sub template
- *
- * @param \Smarty_Internal_SmartyTemplateCompiler $compiler
- * @param \Smarty_Internal_Template $tpl
- * @param string $t_hash
- *
- * @return bool
- * @throws \Exception
- * @throws \SmartyException
- */
- public function compileInlineTemplate(
- Smarty_Internal_SmartyTemplateCompiler $compiler,
- Smarty_Internal_Template $tpl,
- $t_hash
- ) {
- $uid = $tpl->source->type . $tpl->source->uid;
- if (!($tpl->source->handler->uncompiled) && $tpl->source->exists) {
- $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'uid' ] = $tpl->source->uid;
- if (isset($compiler->template->inheritance)) {
- $tpl->inheritance = clone $compiler->template->inheritance;
- }
- $tpl->compiled = new Smarty_Template_Compiled();
- $tpl->compiled->nocache_hash = $compiler->parent_compiler->template->compiled->nocache_hash;
- $tpl->loadCompiler();
- // save unique function name
- $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'func' ] =
- $tpl->compiled->unifunc = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
- // make sure whole chain gets compiled
- $tpl->mustCompile = true;
- $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'nocache_hash' ] =
- $tpl->compiled->nocache_hash;
- if ($tpl->source->type === 'file') {
- $sourceInfo = $tpl->source->filepath;
- } else {
- $basename = $tpl->source->handler->getBasename($tpl->source);
- $sourceInfo = $tpl->source->type . ':' .
- ($basename ? $basename : $tpl->source->name);
- }
- // get compiled code
- $compiled_code = "<?php\n\n";
- $compiled_code .= $compiler->cStyleComment(" Start inline template \"{$sourceInfo}\" =============================") . "\n";
- $compiled_code .= "function {$tpl->compiled->unifunc} (Smarty_Internal_Template \$_smarty_tpl) {\n";
- $compiled_code .= "?>\n" . $tpl->compiler->compileTemplateSource($tpl, null, $compiler->parent_compiler);
- $compiled_code .= "<?php\n";
- $compiled_code .= "}\n?>\n";
- $compiled_code .= $tpl->compiler->postFilter($tpl->compiler->blockOrFunctionCode);
- $compiled_code .= "<?php\n\n";
- $compiled_code .= $compiler->cStyleComment(" End inline template \"{$sourceInfo}\" =============================") . "\n";
- $compiled_code .= '?>';
- unset($tpl->compiler);
- if ($tpl->compiled->has_nocache_code) {
- // replace nocache_hash
- $compiled_code =
- str_replace(
- "{$tpl->compiled->nocache_hash}",
- $compiler->template->compiled->nocache_hash,
- $compiled_code
- );
- $compiler->template->compiled->has_nocache_code = true;
- }
- $compiler->parent_compiler->mergedSubTemplatesCode[ $tpl->compiled->unifunc ] = $compiled_code;
- return true;
- } else {
- return false;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
deleted file mode 100644
index 29031d910..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Insert
- * Compiles the {insert} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Insert Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the {insert} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $nocacheParam = $compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache);
- if (!$nocacheParam) {
- // do not compile as nocache code
- $compiler->suppressNocacheProcessing = true;
- }
- $compiler->tag_nocache = true;
- $_smarty_tpl = $compiler->template;
- $_name = null;
- $_script = null;
- $_output = '<?php ';
- // save possible attributes
- eval('$_name = @' . $_attr[ 'name' ] . ';');
- if (isset($_attr[ 'assign' ])) {
- // output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr[ 'assign' ];
- // create variable to make sure that the compiler knows about its nocache status
- $var = trim($_attr[ 'assign' ], '\'');
- if (isset($compiler->template->tpl_vars[ $var ])) {
- $compiler->template->tpl_vars[ $var ]->nocache = true;
- } else {
- $compiler->template->tpl_vars[ $var ] = new Smarty_Variable(null, true);
- }
- }
- if (isset($_attr[ 'script' ])) {
- // script which must be included
- $_function = "smarty_insert_{$_name}";
- $_smarty_tpl = $compiler->template;
- $_filepath = false;
- eval('$_script = @' . $_attr[ 'script' ] . ';');
- if (!isset($compiler->smarty->security_policy) && file_exists($_script)) {
- $_filepath = $_script;
- } else {
- if (isset($compiler->smarty->security_policy)) {
- $_dir = $compiler->smarty->security_policy->trusted_dir;
- } else {
- $_dir = null;
- }
- if (!empty($_dir)) {
- foreach ((array)$_dir as $_script_dir) {
- $_script_dir = rtrim($_script_dir ?? '', '/\\') . DIRECTORY_SEPARATOR;
- if (file_exists($_script_dir . $_script)) {
- $_filepath = $_script_dir . $_script;
- break;
- }
- }
- }
- }
- if ($_filepath === false) {
- $compiler->trigger_template_error("{insert} missing script file '{$_script}'", null, true);
- }
- // code for script file loading
- $_output .= "require_once '{$_filepath}' ;";
- include_once $_filepath;
- if (!is_callable($_function)) {
- $compiler->trigger_template_error(
- " {insert} function '{$_function}' is not callable in script file '{$_script}'",
- null,
- true
- );
- }
- } else {
- $_filepath = 'null';
- $_function = "insert_{$_name}";
- // function in PHP script ?
- if (!is_callable($_function)) {
- // try plugin
- if (!$_function = $compiler->getPlugin($_name, 'insert')) {
- $compiler->trigger_template_error(
- "{insert} no function or plugin found for '{$_name}'",
- null,
- true
- );
- }
- }
- }
- // delete {insert} standard attributes
- unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'script' ], $_attr[ 'nocache' ]);
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- $_paramsArray[] = "'$_key' => $_value";
- }
- $_params = 'array(' . implode(", ", $_paramsArray) . ')';
- // call insert
- if (isset($_assign)) {
- if ($_smarty_tpl->caching && !$nocacheParam) {
- $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}',{$_assign});?>";
- } else {
- $_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl), true);?>";
- }
- } else {
- if ($_smarty_tpl->caching && !$nocacheParam) {
- $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}');?>";
- } else {
- $_output .= "echo {$_function}({$_params},\$_smarty_tpl);?>";
- }
- }
- $compiler->template->compiled->has_nocache_code = true;
- return $_output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
deleted file mode 100644
index 5493d4ecc..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Ldelim
- * Compiles the {ldelim} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Ldelim Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {ldelim} tag
- * This tag does output the left delimiter
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr[ 'nocache' ] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
- return $compiler->smarty->left_delimiter;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php
deleted file mode 100644
index 8a34ccd0a..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Make_Nocache
- * Compiles the {make_nocache} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Make_Nocache Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Make_Nocache extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $option_flags = array();
-
- /**
- * Array of names of required attribute required by tag
- *
- * @var array
- */
- public $required_attributes = array('var');
-
- /**
- * Shorttag attribute order defined by its names
- *
- * @var array
- */
- public $shorttag_order = array('var');
-
- /**
- * Compiles code for the {make_nocache} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($compiler->template->caching) {
- $output = "<?php \$_smarty_tpl->smarty->ext->_make_nocache->save(\$_smarty_tpl, {$_attr[ 'var' ]});\n?>\n";
- $compiler->template->compiled->has_nocache_code = true;
- $compiler->suppressNocacheProcessing = true;
- return $output;
- } else {
- return true;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php
deleted file mode 100644
index 12f64ed2e..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Nocache
- * Compiles the {nocache} {/nocache} tags.
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Nocache Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Nocache extends Smarty_Internal_CompileBase
-{
- /**
- * Array of names of valid option flags
- *
- * @var array
- */
- public $option_flags = array();
-
- /**
- * Compiles code for the {nocache} tag
- * This tag does not generate compiled output. It only sets a compiler flag.
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return bool
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $_attr = $this->getAttributes($compiler, $args);
- $this->openTag($compiler, 'nocache', array($compiler->nocache));
- // enter nocache mode
- $compiler->nocache = true;
- // this tag does not return compiled code
- $compiler->has_code = false;
- return true;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Nocacheclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Nocacheclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/nocache} tag
- * This tag does not generate compiled output. It only sets a compiler flag.
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return bool
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $_attr = $this->getAttributes($compiler, $args);
- // leave nocache mode
- list($compiler->nocache) = $this->closeTag($compiler, array('nocache'));
- // this tag does not return compiled code
- $compiler->has_code = false;
- return true;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php
deleted file mode 100644
index ff23edf73..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * This file is part of Smarty.
- *
- * (c) 2015 Uwe Tews
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Smarty Internal Plugin Compile Parent Class
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Compile_Parent extends Smarty_Internal_Compile_Child
-{
- /**
- * Tag name
- *
- * @var string
- */
- public $tag = 'parent';
-
- /**
- * Block type
- *
- * @var string
- */
- public $blockType = 'Parent';
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
deleted file mode 100644
index 199a296c8..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Block Plugin
- * Compiles code for the execution of block plugin
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Block Plugin Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * nesting level
- *
- * @var int
- */
- public $nesting = 0;
-
- /**
- * Compiles code for the execution of block plugin
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of block plugin
- * @param string $function PHP function name
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function = null)
- {
- if (!isset($tag[ 5 ]) || substr($tag, -5) !== 'close') {
- // opening tag of block plugin
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $this->nesting++;
- unset($_attr[ 'nocache' ]);
- list($callback, $_paramsArray, $callable) = $this->setup($compiler, $_attr, $tag, $function);
- $_params = 'array(' . implode(',', $_paramsArray) . ')';
- // compile code
- $output = "<?php ";
- if (is_array($callback)) {
- $output .= "\$_block_plugin{$this->nesting} = isset({$callback[0]}) ? {$callback[0]} : null;\n";
- $callback = "\$_block_plugin{$this->nesting}{$callback[1]}";
- }
- if (isset($callable)) {
- $output .= "if (!is_callable({$callable})) {\nthrow new SmartyException('block tag \'{$tag}\' not callable or registered');\n}\n";
- }
- $output .= "\$_smarty_tpl->smarty->_cache['_tag_stack'][] = array('{$tag}', {$_params});\n";
- $output .= "\$_block_repeat=true;\necho {$callback}({$_params}, null, \$_smarty_tpl, \$_block_repeat);\nwhile (\$_block_repeat) {\nob_start();?>";
- $this->openTag($compiler, $tag, array($_params, $compiler->nocache, $callback));
- // maybe nocache because of nocache variables or nocache plugin
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- } else {
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- // closing tag of block plugin, restore nocache
- list($_params, $compiler->nocache, $callback) = $this->closeTag($compiler, substr($tag, 0, -5));
- // compile code
- if (!isset($parameter[ 'modifier_list' ])) {
- $mod_pre = $mod_post = $mod_content = '';
- $mod_content2 = 'ob_get_clean()';
- } else {
- $mod_content2 = "\$_block_content{$this->nesting}";
- $mod_content = "\$_block_content{$this->nesting} = ob_get_clean();\n";
- $mod_pre = "ob_start();\n";
- $mod_post = 'echo ' . $compiler->compileTag(
- 'private_modifier',
- array(),
- array(
- 'modifierlist' => $parameter[ 'modifier_list' ],
- 'value' => 'ob_get_clean()'
- )
- ) . ";\n";
- }
- $output =
- "<?php {$mod_content}\$_block_repeat=false;\n{$mod_pre}echo {$callback}({$_params}, {$mod_content2}, \$_smarty_tpl, \$_block_repeat);\n{$mod_post}}\n";
- $output .= 'array_pop($_smarty_tpl->smarty->_cache[\'_tag_stack\']);?>';
- }
- return $output;
- }
-
- /**
- * Setup callback and parameter array
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- * @param array $_attr attributes
- * @param string $tag
- * @param string $function
- *
- * @return array
- */
- public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function)
- {
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- return array($function, $_paramsArray, null);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
deleted file mode 100644
index 246350dc8..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
+++ /dev/null
@@ -1,228 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile ForeachSection
- * Shared methods for {foreach} {section} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile ForeachSection Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_ForeachSection extends Smarty_Internal_CompileBase
-{
- /**
- * Name of this tag
- *
- * @var string
- */
- public $tagName = '';
-
- /**
- * Valid properties of $smarty.xxx variable
- *
- * @var array
- */
- public $nameProperties = array();
-
- /**
- * {section} tag has no item properties
- *
- * @var array
- */
- public $itemProperties = null;
-
- /**
- * {section} tag has always name attribute
- *
- * @var bool
- */
- public $isNamed = true;
-
- /**
- * @var array
- */
- public $matchResults = array();
-
- /**
- * Preg search pattern
- *
- * @var string
- */
- private $propertyPreg = '';
-
- /**
- * Offsets in preg match result
- *
- * @var array
- */
- private $resultOffsets = array();
-
- /**
- * Start offset
- *
- * @var int
- */
- private $startOffset = 0;
-
- /**
- * Scan sources for used tag attributes
- *
- * @param array $attributes
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- *
- * @throws \SmartyException
- */
- public function scanForProperties($attributes, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->propertyPreg = '~(';
- $this->startOffset = 1;
- $this->resultOffsets = array();
- $this->matchResults = array('named' => array(), 'item' => array());
- if (isset($attributes[ 'name' ])) {
- $this->buildPropertyPreg(true, $attributes);
- }
- if (isset($this->itemProperties)) {
- if ($this->isNamed) {
- $this->propertyPreg .= '|';
- }
- $this->buildPropertyPreg(false, $attributes);
- }
- $this->propertyPreg .= ')\W~i';
- // Template source
- $this->matchTemplateSource($compiler);
- // Parent template source
- $this->matchParentTemplateSource($compiler);
- // {block} source
- $this->matchBlockSource($compiler);
- }
-
- /**
- * Build property preg string
- *
- * @param bool $named
- * @param array $attributes
- */
- public function buildPropertyPreg($named, $attributes)
- {
- if ($named) {
- $this->resultOffsets[ 'named' ] = $this->startOffset = $this->startOffset + 3;
- $this->propertyPreg .= "(([\$]smarty[.]{$this->tagName}[.]" .
- ($this->tagName === 'section' ? "|[\[]\s*" : '') .
- "){$attributes['name']}[.](";
- $properties = $this->nameProperties;
- } else {
- $this->resultOffsets[ 'item' ] = $this->startOffset = $this->startOffset + 2;
- $this->propertyPreg .= "([\$]{$attributes['item']}[@](";
- $properties = $this->itemProperties;
- }
- $propName = reset($properties);
- while ($propName) {
- $this->propertyPreg .= "{$propName}";
- $propName = next($properties);
- if ($propName) {
- $this->propertyPreg .= '|';
- }
- }
- $this->propertyPreg .= '))';
- }
-
- /**
- * Find matches in source string
- *
- * @param string $source
- */
- public function matchProperty($source)
- {
- preg_match_all($this->propertyPreg, $source, $match);
- foreach ($this->resultOffsets as $key => $offset) {
- foreach ($match[ $offset ] as $m) {
- if (!empty($m)) {
- $this->matchResults[ $key ][ smarty_strtolower_ascii($m) ] = true;
- }
- }
- }
- }
-
- /**
- * Find matches in template source
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- */
- public function matchTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->matchProperty($compiler->parser->lex->data);
- }
-
- /**
- * Find matches in all parent template source
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- *
- * @throws \SmartyException
- */
- public function matchParentTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // search parent compiler template source
- $nextCompiler = $compiler;
- while ($nextCompiler !== $nextCompiler->parent_compiler) {
- $nextCompiler = $nextCompiler->parent_compiler;
- if ($compiler !== $nextCompiler) {
- // get template source
- $_content = $nextCompiler->template->source->getContent();
- if ($_content !== '') {
- // run pre filter if required
- if ((isset($nextCompiler->smarty->autoload_filters[ 'pre' ]) ||
- isset($nextCompiler->smarty->registered_filters[ 'pre' ]))
- ) {
- $_content = $nextCompiler->smarty->ext->_filterHandler->runFilter(
- 'pre',
- $_content,
- $nextCompiler->template
- );
- }
- $this->matchProperty($_content);
- }
- }
- }
- }
-
- /**
- * Find matches in {block} tag source
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- */
- public function matchBlockSource(Smarty_Internal_TemplateCompilerBase $compiler)
- {
- }
-
- /**
- * Compiles code for the {$smarty.foreach.xxx} or {$smarty.section.xxx}tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compileSpecialVariable($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $tag = smarty_strtolower_ascii(trim($parameter[ 0 ], '"\''));
- $name = isset($parameter[ 1 ]) ? $compiler->getId($parameter[ 1 ]) : false;
- if (!$name) {
- $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} name attribute", null, true);
- }
- $property = isset($parameter[ 2 ]) ? smarty_strtolower_ascii($compiler->getId($parameter[ 2 ])) : false;
- if (!$property || !in_array($property, $this->nameProperties)) {
- $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} property attribute", null, true);
- }
- $tagVar = "'__smarty_{$tag}_{$name}'";
- return "(isset(\$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}']) ? \$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}'] : null)";
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
deleted file mode 100644
index 055823423..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Function Plugin
- * Compiles code for the execution of function plugin
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Function Plugin Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array();
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of function plugin
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function plugin
- * @param string $function PHP function name
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- unset($_attr[ 'nocache' ]);
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(',', $_paramsArray) . ')';
- // compile code
- $output = "{$function}({$_params},\$_smarty_tpl)";
- if (!empty($parameter[ 'modifierlist' ])) {
- $output = $compiler->compileTag(
- 'private_modifier',
- array(),
- array(
- 'modifierlist' => $parameter[ 'modifierlist' ],
- 'value' => $output
- )
- );
- }
- $output = "<?php echo {$output};?>\n";
- return $output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
deleted file mode 100644
index aea082f01..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Modifier
- * Compiles code for modifier execution
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Modifier Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for modifier execution
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $output = $parameter[ 'value' ];
- // loop over list of modifiers
- foreach ($parameter[ 'modifierlist' ] as $single_modifier) {
- /* @var string $modifier */
- $modifier = $single_modifier[ 0 ];
- $single_modifier[ 0 ] = $output;
- $params = implode(',', $single_modifier);
- // check if we know already the type of modifier
- if (isset($compiler->known_modifier_type[ $modifier ])) {
- $modifier_types = array($compiler->known_modifier_type[ $modifier ]);
- } else {
- $modifier_types = array(1, 2, 3, 4, 5, 6);
- }
- foreach ($modifier_types as $type) {
- switch ($type) {
- case 1:
- // registered modifier
- if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ])) {
- if (is_callable($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ])) {
- $output =
- sprintf(
- 'call_user_func_array($_smarty_tpl->registered_plugins[ \'%s\' ][ %s ][ 0 ], array( %s ))',
- Smarty::PLUGIN_MODIFIER,
- var_export($modifier, true),
- $params
- );
- $compiler->known_modifier_type[ $modifier ] = $type;
- break 2;
- }
- }
- break;
- case 2:
- // registered modifier compiler
- if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ])) {
- $output =
- call_user_func(
- $compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ],
- $single_modifier,
- $compiler->smarty
- );
- $compiler->known_modifier_type[ $modifier ] = $type;
- break 2;
- }
- break;
- case 3:
- // modifiercompiler plugin
- if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) {
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy)
- || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
- ) {
- $plugin = 'smarty_modifiercompiler_' . $modifier;
- $output = $plugin($single_modifier, $compiler);
- }
- $compiler->known_modifier_type[ $modifier ] = $type;
- break 2;
- }
- break;
- case 4:
- // modifier plugin
- if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) {
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy)
- || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
- ) {
- $output = "{$function}({$params})";
- }
- $compiler->known_modifier_type[ $modifier ] = $type;
- break 2;
- }
- break;
- case 5:
- // PHP function
- if (is_callable($modifier)) {
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy)
- || $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler)
- ) {
- trigger_error('Using php-function "' . $modifier . '" as a modifier is deprecated and will be ' .
- 'removed in a future release. Use Smarty::registerPlugin to explicitly register ' .
- 'a custom modifier.', E_USER_DEPRECATED);
- $output = "{$modifier}({$params})";
- }
- $compiler->known_modifier_type[ $modifier ] = $type;
- break 2;
- }
- break;
- case 6:
- // default plugin handler
- if (isset($compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ])
- || (is_callable($compiler->smarty->default_plugin_handler_func)
- && $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER))
- ) {
- $function = $compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ];
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy)
- || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
- ) {
- if (!is_array($function)) {
- $output = "{$function}({$params})";
- } else {
- if (is_object($function[ 0 ])) {
- $output = $function[ 0 ] . '->' . $function[ 1 ] . '(' . $params . ')';
- } else {
- $output = $function[ 0 ] . '::' . $function[ 1 ] . '(' . $params . ')';
- }
- }
- }
- if (isset($compiler->required_plugins[ 'nocache' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ])
- ||
- isset($compiler->required_plugins[ 'compiled' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ])
- ) {
- // was a plugin
- $compiler->known_modifier_type[ $modifier ] = 4;
- } else {
- $compiler->known_modifier_type[ $modifier ] = $type;
- }
- break 2;
- }
- }
- }
- if (!isset($compiler->known_modifier_type[ $modifier ])) {
- $compiler->trigger_template_error("unknown modifier '{$modifier}'", null, true);
- }
- }
- return $output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
deleted file mode 100644
index baac51b28..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Object Block Function
- * Compiles code for registered objects as block function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Object Block Function Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_Compile_Private_Block_Plugin
-{
- /**
- * Setup callback and parameter array
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- * @param array $_attr attributes
- * @param string $tag
- * @param string $method
- *
- * @return array
- */
- public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $method)
- {
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $callback = array("\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]", "->{$method}");
- return array($callback, $_paramsArray, "array(\$_block_plugin{$this->nesting}, '{$method}')");
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
deleted file mode 100644
index 2a763c6e3..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Object Function
- * Compiles code for registered objects as function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Object Function Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of function plugin
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function
- * @param string $method name of method to call
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $method)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- unset($_attr[ 'nocache' ]);
- $_assign = null;
- if (isset($_attr[ 'assign' ])) {
- $_assign = $_attr[ 'assign' ];
- unset($_attr[ 'assign' ]);
- }
- // method or property ?
- if (is_callable(array($compiler->smarty->registered_objects[ $tag ][ 0 ], $method))) {
- // convert attributes into parameter array string
- if ($compiler->smarty->registered_objects[ $tag ][ 2 ]) {
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(',', $_paramsArray) . ')';
- $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)";
- } else {
- $_params = implode(',', $_attr);
- $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})";
- }
- } else {
- // object property
- $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}";
- }
- if (!empty($parameter[ 'modifierlist' ])) {
- $output = $compiler->compileTag(
- 'private_modifier',
- array(),
- array('modifierlist' => $parameter[ 'modifierlist' ], 'value' => $output)
- );
- }
- if (empty($_assign)) {
- return "<?php echo {$output};?>\n";
- } else {
- return "<?php \$_smarty_tpl->assign({$_assign},{$output});?>\n";
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
deleted file mode 100644
index 78f1c0763..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Print Expression
- * Compiles any tag which will output an expression or variable
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Print Expression Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('assign');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $option_flags = array('nocache', 'nofilter');
-
- /**
- * Compiles code for generating output from any expression
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $output = $parameter[ 'value' ];
- // tag modifier
- if (!empty($parameter[ 'modifierlist' ])) {
- $output = $compiler->compileTag(
- 'private_modifier',
- array(),
- array(
- 'modifierlist' => $parameter[ 'modifierlist' ],
- 'value' => $output
- )
- );
- }
- if (isset($_attr[ 'assign' ])) {
- // assign output to variable
- return "<?php \$_smarty_tpl->assign({$_attr['assign']},{$output});?>";
- } else {
- // display value
- if (!$_attr[ 'nofilter' ]) {
- // default modifier
- if (!empty($compiler->smarty->default_modifiers)) {
- if (empty($compiler->default_modifier_list)) {
- $modifierlist = array();
- foreach ($compiler->smarty->default_modifiers as $key => $single_default_modifier) {
- preg_match_all(
- '/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/',
- $single_default_modifier,
- $mod_array
- );
- for ($i = 0, $count = count($mod_array[ 0 ]); $i < $count; $i++) {
- if ($mod_array[ 0 ][ $i ] !== ':') {
- $modifierlist[ $key ][] = $mod_array[ 0 ][ $i ];
- }
- }
- }
- $compiler->default_modifier_list = $modifierlist;
- }
- $output = $compiler->compileTag(
- 'private_modifier',
- array(),
- array(
- 'modifierlist' => $compiler->default_modifier_list,
- 'value' => $output
- )
- );
- }
- // autoescape html
- if ($compiler->template->smarty->escape_html) {
- $output = "htmlspecialchars((string) ({$output}), ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')";
- }
- // loop over registered filters
- if (!empty($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ])) {
- foreach ($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ] as $key =>
- $function) {
- if (!is_array($function)) {
- $output = "{$function}({$output},\$_smarty_tpl)";
- } elseif (is_object($function[ 0 ])) {
- $output =
- "\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE]['{$key}'][0]->{$function[1]}({$output},\$_smarty_tpl)";
- } else {
- $output = "{$function[0]}::{$function[1]}({$output},\$_smarty_tpl)";
- }
- }
- }
- // auto loaded filters
- if (isset($compiler->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ])) {
- foreach ((array)$compiler->template->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ] as $name) {
- $result = $this->compile_variable_filter($compiler, $name, $output);
- if ($result !== false) {
- $output = $result;
- } else {
- // not found, throw exception
- throw new SmartyException("Unable to load variable filter '{$name}'");
- }
- }
- }
- foreach ($compiler->variable_filters as $filter) {
- if (count($filter) === 1
- && ($result = $this->compile_variable_filter($compiler, $filter[ 0 ], $output)) !== false
- ) {
- $output = $result;
- } else {
- $output = $compiler->compileTag(
- 'private_modifier',
- array(),
- array('modifierlist' => array($filter), 'value' => $output)
- );
- }
- }
- }
- $output = "<?php echo {$output};?>\n";
- }
- return $output;
- }
-
- /**
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param string $name name of variable filter
- * @param string $output embedded output
- *
- * @return string
- * @throws \SmartyException
- */
- private function compile_variable_filter(Smarty_Internal_TemplateCompilerBase $compiler, $name, $output)
- {
- $function = $compiler->getPlugin($name, 'variablefilter');
- if ($function) {
- return "{$function}({$output},\$_smarty_tpl)";
- } else {
- // not found
- return false;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
deleted file mode 100644
index 0f818d1b3..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Registered Block
- * Compiles code for the execution of a registered block function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Registered Block Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_Compile_Private_Block_Plugin
-{
- /**
- * Setup callback, parameter array and nocache mode
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- * @param array $_attr attributes
- * @param string $tag
- * @param null $function
- *
- * @return array
- */
- public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function)
- {
- if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ])) {
- $tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ];
- $callback = $tag_info[ 0 ];
- if (is_array($callback)) {
- if (is_object($callback[ 0 ])) {
- $callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')";
- $callback =
- array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "->{$callback[1]}");
- } else {
- $callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')";
- $callback =
- array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "::{$callback[1]}");
- }
- } else {
- $callable = "\$_block_plugin{$this->nesting}";
- $callback = array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0]", '');
- }
- } else {
- $tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ];
- $callback = $tag_info[ 0 ];
- if (is_array($callback)) {
- $callable = "array('{$callback[0]}', '{$callback[1]}')";
- $callback = "{$callback[1]}::{$callback[1]}";
- } else {
- $callable = null;
- }
- }
- $compiler->tag_nocache = !$tag_info[ 1 ] | $compiler->tag_nocache;
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) {
- $_value = str_replace('\'', "^#^", $_value);
- $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- return array($callback, $_paramsArray, $callable);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
deleted file mode 100644
index 2591107d2..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Registered Function
- * Compiles code for the execution of a registered function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Registered Function Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of a registered function
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- unset($_attr[ 'nocache' ]);
- if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) {
- $tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ];
- $is_registered = true;
- } else {
- $tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ];
- $is_registered = false;
- }
- // not cacheable?
- $compiler->tag_nocache = $compiler->tag_nocache || !$tag_info[ 1 ];
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) {
- $_value = str_replace('\'', "^#^", $_value);
- $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(',', $_paramsArray) . ')';
- // compile code
- if ($is_registered) {
- $output =
- "call_user_func_array( \$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0], array( {$_params},\$_smarty_tpl ) )";
- } else {
- $function = $tag_info[ 0 ];
- if (!is_array($function)) {
- $output = "{$function}({$_params},\$_smarty_tpl)";
- } else {
- $output = "{$function[0]}::{$function[1]}({$_params},\$_smarty_tpl)";
- }
- }
- if (!empty($parameter[ 'modifierlist' ])) {
- $output = $compiler->compileTag(
- 'private_modifier',
- array(),
- array(
- 'modifierlist' => $parameter[ 'modifierlist' ],
- 'value' => $output
- )
- );
- }
- $output = "<?php echo {$output};?>\n";
- return $output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
deleted file mode 100644
index 590cba5af..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Special Smarty Variable
- * Compiles the special $smarty variables
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile special Smarty Variable Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the special $smarty variables
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param $parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $_index = preg_split("/\]\[/", substr($parameter, 1, strlen($parameter) - 2));
- $variable = smarty_strtolower_ascii($compiler->getId($_index[ 0 ]));
- if ($variable === false) {
- $compiler->trigger_template_error("special \$Smarty variable name index can not be variable", null, true);
- }
- if (!isset($compiler->smarty->security_policy)
- || $compiler->smarty->security_policy->isTrustedSpecialSmartyVar($variable, $compiler)
- ) {
- switch ($variable) {
- case 'foreach':
- case 'section':
- if (!isset(Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ])) {
- $class = 'Smarty_Internal_Compile_' . smarty_ucfirst_ascii($variable);
- Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ] = new $class;
- }
- return Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ]->compileSpecialVariable(
- array(),
- $compiler,
- $_index
- );
- case 'capture':
- if (class_exists('Smarty_Internal_Compile_Capture')) {
- return Smarty_Internal_Compile_Capture::compileSpecialVariable(array(), $compiler, $_index);
- }
- return '';
- case 'now':
- return 'time()';
- case 'cookies':
- if (isset($compiler->smarty->security_policy)
- && !$compiler->smarty->security_policy->allow_super_globals
- ) {
- $compiler->trigger_template_error("(secure mode) super globals not permitted");
- break;
- }
- $compiled_ref = '$_COOKIE';
- break;
- case 'get':
- case 'post':
- case 'env':
- case 'server':
- case 'session':
- case 'request':
- if (isset($compiler->smarty->security_policy)
- && !$compiler->smarty->security_policy->allow_super_globals
- ) {
- $compiler->trigger_template_error("(secure mode) super globals not permitted");
- break;
- }
- $compiled_ref = '$_' . smarty_strtoupper_ascii($variable);
- break;
- case 'template':
- return 'basename($_smarty_tpl->source->filepath)';
- case 'template_object':
- if (isset($compiler->smarty->security_policy)) {
- $compiler->trigger_template_error("(secure mode) template_object not permitted");
- break;
- }
- return '$_smarty_tpl';
- case 'current_dir':
- return 'dirname($_smarty_tpl->source->filepath)';
- case 'version':
- return "Smarty::SMARTY_VERSION";
- case 'const':
- if (isset($compiler->smarty->security_policy)
- && !$compiler->smarty->security_policy->allow_constants
- ) {
- $compiler->trigger_template_error("(secure mode) constants not permitted");
- break;
- }
- if (strpos($_index[ 1 ], '$') === false && strpos($_index[ 1 ], '\'') === false) {
- return "(defined('{$_index[1]}') ? constant('{$_index[1]}') : null)";
- } else {
- return "(defined({$_index[1]}) ? constant({$_index[1]}) : null)";
- }
- // no break
- case 'config':
- if (isset($_index[ 2 ])) {
- return "(is_array(\$tmp = \$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])) ? \$tmp[$_index[2]] : null)";
- } else {
- return "\$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])";
- }
- // no break
- case 'ldelim':
- return "\$_smarty_tpl->smarty->left_delimiter";
- case 'rdelim':
- return "\$_smarty_tpl->smarty->right_delimiter";
- default:
- $compiler->trigger_template_error('$smarty.' . trim($_index[ 0 ], "'") . ' is not defined');
- break;
- }
- if (isset($_index[ 1 ])) {
- array_shift($_index);
- foreach ($_index as $_ind) {
- $compiled_ref = $compiled_ref . "[$_ind]";
- }
- }
- return $compiled_ref;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
deleted file mode 100644
index 1cc340c18..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Rdelim
- * Compiles the {rdelim} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Rdelim Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_Compile_Ldelim
-{
- /**
- * Compiles code for the {rdelim} tag
- * This tag does output the right delimiter.
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- parent::compile($args, $compiler);
- return $compiler->smarty->right_delimiter;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php
deleted file mode 100644
index 0dee20820..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php
+++ /dev/null
@@ -1,462 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Section
- * Compiles the {section} {sectionelse} {/section} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Section Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_ForeachSection
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('name', 'loop');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name', 'loop');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('start', 'step', 'max', 'show', 'properties');
-
- /**
- * counter
- *
- * @var int
- */
- public $counter = 0;
-
- /**
- * Name of this tag
- *
- * @var string
- */
- public $tagName = 'section';
-
- /**
- * Valid properties of $smarty.section.name.xxx variable
- *
- * @var array
- */
- public $nameProperties = array(
- 'first', 'last', 'index', 'iteration', 'show', 'total', 'rownum', 'index_prev',
- 'index_next', 'loop'
- );
-
- /**
- * {section} tag has no item properties
- *
- * @var array
- */
- public $itemProperties = null;
-
- /**
- * {section} tag has always name attribute
- *
- * @var bool
- */
- public $isNamed = true;
-
- /**
- * Compiles code for the {section} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $compiler->loopNesting++;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $attributes = array('name' => $compiler->getId($_attr[ 'name' ]));
- unset($_attr[ 'name' ]);
- foreach ($attributes as $a => $v) {
- if ($v === false) {
- $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
- }
- }
- $local = "\$__section_{$attributes['name']}_" . $this->counter++ . '_';
- $sectionVar = "\$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}']";
- $this->openTag($compiler, 'section', array('section', $compiler->nocache, $local, $sectionVar));
- // maybe nocache because of nocache variables
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- $initLocal = array();
- $initNamedProperty = array();
- $initFor = array();
- $incFor = array();
- $cmpFor = array();
- $propValue = array(
- 'index' => "{$sectionVar}->value['index']", 'show' => 'true', 'step' => 1,
- 'iteration' => "{$local}iteration",
- );
- $propType = array('index' => 2, 'iteration' => 2, 'show' => 0, 'step' => 0,);
- // search for used tag attributes
- $this->scanForProperties($attributes, $compiler);
- if (!empty($this->matchResults[ 'named' ])) {
- $namedAttr = $this->matchResults[ 'named' ];
- }
- if (isset($_attr[ 'properties' ]) && preg_match_all("/['](.*?)[']/", $_attr[ 'properties' ], $match)) {
- foreach ($match[ 1 ] as $prop) {
- if (in_array($prop, $this->nameProperties)) {
- $namedAttr[ $prop ] = true;
- } else {
- $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
- }
- }
- }
- $namedAttr[ 'index' ] = true;
- $output = "<?php\n";
- foreach ($_attr as $attr_name => $attr_value) {
- switch ($attr_name) {
- case 'loop':
- if (is_numeric($attr_value)) {
- $v = (int)$attr_value;
- $t = 0;
- } else {
- $v = "(is_array(@\$_loop=$attr_value) ? count(\$_loop) : max(0, (int) \$_loop))";
- $t = 1;
- }
- if ($t === 1) {
- $initLocal[ 'loop' ] = $v;
- $v = "{$local}loop";
- }
- break;
- case 'show':
- if (is_bool($attr_value)) {
- $v = $attr_value ? 'true' : 'false';
- $t = 0;
- } else {
- $v = "(bool) $attr_value";
- $t = 3;
- }
- break;
- case 'step':
- if (is_numeric($attr_value)) {
- $v = (int)$attr_value;
- $v = ($v === 0) ? 1 : $v;
- $t = 0;
- break;
- }
- $initLocal[ 'step' ] = "((int)@$attr_value) === 0 ? 1 : (int)@$attr_value";
- $v = "{$local}step";
- $t = 2;
- break;
- case 'max':
- case 'start':
- if (is_numeric($attr_value)) {
- $v = (int)$attr_value;
- $t = 0;
- break;
- }
- $v = "(int)@$attr_value";
- $t = 3;
- break;
- }
- if ($t === 3 && $compiler->getId($attr_value)) {
- $t = 1;
- }
- $propValue[ $attr_name ] = $v;
- $propType[ $attr_name ] = $t;
- }
- if (isset($namedAttr[ 'step' ])) {
- $initNamedProperty[ 'step' ] = $propValue[ 'step' ];
- }
- if (isset($namedAttr[ 'iteration' ])) {
- $propValue[ 'iteration' ] = "{$sectionVar}->value['iteration']";
- }
- $incFor[ 'iteration' ] = "{$propValue['iteration']}++";
- $initFor[ 'iteration' ] = "{$propValue['iteration']} = 1";
- if ($propType[ 'step' ] === 0) {
- if ($propValue[ 'step' ] === 1) {
- $incFor[ 'index' ] = "{$sectionVar}->value['index']++";
- } elseif ($propValue[ 'step' ] > 1) {
- $incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}";
- } else {
- $incFor[ 'index' ] = "{$sectionVar}->value['index'] -= " . -$propValue[ 'step' ];
- }
- } else {
- $incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}";
- }
- if (!isset($propValue[ 'max' ])) {
- $propValue[ 'max' ] = $propValue[ 'loop' ];
- $propType[ 'max' ] = $propType[ 'loop' ];
- } elseif ($propType[ 'max' ] !== 0) {
- $propValue[ 'max' ] = "{$propValue['max']} < 0 ? {$propValue['loop']} : {$propValue['max']}";
- $propType[ 'max' ] = 1;
- } else {
- if ($propValue[ 'max' ] < 0) {
- $propValue[ 'max' ] = $propValue[ 'loop' ];
- $propType[ 'max' ] = $propType[ 'loop' ];
- }
- }
- if (!isset($propValue[ 'start' ])) {
- $start_code =
- array(1 => "{$propValue['step']} > 0 ? ", 2 => '0', 3 => ' : ', 4 => $propValue[ 'loop' ], 5 => ' - 1');
- if ($propType[ 'loop' ] === 0) {
- $start_code[ 5 ] = '';
- $start_code[ 4 ] = $propValue[ 'loop' ] - 1;
- }
- if ($propType[ 'step' ] === 0) {
- if ($propValue[ 'step' ] > 0) {
- $start_code = array(1 => '0');
- $propType[ 'start' ] = 0;
- } else {
- $start_code[ 1 ] = $start_code[ 2 ] = $start_code[ 3 ] = '';
- $propType[ 'start' ] = $propType[ 'loop' ];
- }
- } else {
- $propType[ 'start' ] = 1;
- }
- $propValue[ 'start' ] = join('', $start_code);
- } else {
- $start_code =
- array(
- 1 => "{$propValue['start']} < 0 ? ", 2 => 'max(', 3 => "{$propValue['step']} > 0 ? ", 4 => '0',
- 5 => ' : ', 6 => '-1', 7 => ', ', 8 => "{$propValue['start']} + {$propValue['loop']}", 10 => ')',
- 11 => ' : ', 12 => 'min(', 13 => $propValue[ 'start' ], 14 => ', ',
- 15 => "{$propValue['step']} > 0 ? ", 16 => $propValue[ 'loop' ], 17 => ' : ',
- 18 => $propType[ 'loop' ] === 0 ? $propValue[ 'loop' ] - 1 : "{$propValue['loop']} - 1",
- 19 => ')'
- );
- if ($propType[ 'step' ] === 0) {
- $start_code[ 3 ] = $start_code[ 5 ] = $start_code[ 15 ] = $start_code[ 17 ] = '';
- if ($propValue[ 'step' ] > 0) {
- $start_code[ 6 ] = $start_code[ 18 ] = '';
- } else {
- $start_code[ 4 ] = $start_code[ 16 ] = '';
- }
- }
- if ($propType[ 'start' ] === 0) {
- if ($propType[ 'loop' ] === 0) {
- $start_code[ 8 ] = $propValue[ 'start' ] + $propValue[ 'loop' ];
- }
- $propType[ 'start' ] = $propType[ 'step' ] + $propType[ 'loop' ];
- $start_code[ 1 ] = '';
- if ($propValue[ 'start' ] < 0) {
- for ($i = 11; $i <= 19; $i++) {
- $start_code[ $i ] = '';
- }
- if ($propType[ 'start' ] === 0) {
- $start_code = array(
- max(
- $propValue[ 'step' ] > 0 ? 0 : -1,
- $propValue[ 'start' ] + $propValue[ 'loop' ]
- )
- );
- }
- } else {
- for ($i = 1; $i <= 11; $i++) {
- $start_code[ $i ] = '';
- }
- if ($propType[ 'start' ] === 0) {
- $start_code =
- array(
- min(
- $propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] : $propValue[ 'loop' ] - 1,
- $propValue[ 'start' ]
- )
- );
- }
- }
- }
- $propValue[ 'start' ] = join('', $start_code);
- }
- if ($propType[ 'start' ] !== 0) {
- $initLocal[ 'start' ] = $propValue[ 'start' ];
- $propValue[ 'start' ] = "{$local}start";
- }
- $initFor[ 'index' ] = "{$sectionVar}->value['index'] = {$propValue['start']}";
- if (!isset($_attr[ 'start' ]) && !isset($_attr[ 'step' ]) && !isset($_attr[ 'max' ])) {
- $propValue[ 'total' ] = $propValue[ 'loop' ];
- $propType[ 'total' ] = $propType[ 'loop' ];
- } else {
- $propType[ 'total' ] =
- $propType[ 'start' ] + $propType[ 'loop' ] + $propType[ 'step' ] + $propType[ 'max' ];
- if ($propType[ 'total' ] === 0) {
- $propValue[ 'total' ] =
- min(
- ceil(
- ($propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] - $propValue[ 'start' ] :
- (int)$propValue[ 'start' ] + 1) / abs($propValue[ 'step' ])
- ),
- $propValue[ 'max' ]
- );
- } else {
- $total_code = array(
- 1 => 'min(', 2 => 'ceil(', 3 => '(', 4 => "{$propValue['step']} > 0 ? ",
- 5 => $propValue[ 'loop' ], 6 => ' - ', 7 => $propValue[ 'start' ], 8 => ' : ',
- 9 => $propValue[ 'start' ], 10 => '+ 1', 11 => ')', 12 => '/ ', 13 => 'abs(',
- 14 => $propValue[ 'step' ], 15 => ')', 16 => ')', 17 => ", {$propValue['max']})",
- );
- if (!isset($propValue[ 'max' ])) {
- $total_code[ 1 ] = $total_code[ 17 ] = '';
- }
- if ($propType[ 'loop' ] + $propType[ 'start' ] === 0) {
- $total_code[ 5 ] = $propValue[ 'loop' ] - $propValue[ 'start' ];
- $total_code[ 6 ] = $total_code[ 7 ] = '';
- }
- if ($propType[ 'start' ] === 0) {
- $total_code[ 9 ] = (int)$propValue[ 'start' ] + 1;
- $total_code[ 10 ] = '';
- }
- if ($propType[ 'step' ] === 0) {
- $total_code[ 13 ] = $total_code[ 15 ] = '';
- if ($propValue[ 'step' ] === 1 || $propValue[ 'step' ] === -1) {
- $total_code[ 2 ] = $total_code[ 12 ] = $total_code[ 14 ] = $total_code[ 16 ] = '';
- } elseif ($propValue[ 'step' ] < 0) {
- $total_code[ 14 ] = -$propValue[ 'step' ];
- }
- $total_code[ 4 ] = '';
- if ($propValue[ 'step' ] > 0) {
- $total_code[ 8 ] = $total_code[ 9 ] = $total_code[ 10 ] = '';
- } else {
- $total_code[ 5 ] = $total_code[ 6 ] = $total_code[ 7 ] = $total_code[ 8 ] = '';
- }
- }
- $propValue[ 'total' ] = join('', $total_code);
- }
- }
- if (isset($namedAttr[ 'loop' ])) {
- $initNamedProperty[ 'loop' ] = "'loop' => {$propValue['loop']}";
- }
- if (isset($namedAttr[ 'total' ])) {
- $initNamedProperty[ 'total' ] = "'total' => {$propValue['total']}";
- if ($propType[ 'total' ] > 0) {
- $propValue[ 'total' ] = "{$sectionVar}->value['total']";
- }
- } elseif ($propType[ 'total' ] > 0) {
- $initLocal[ 'total' ] = $propValue[ 'total' ];
- $propValue[ 'total' ] = "{$local}total";
- }
- $cmpFor[ 'iteration' ] = "{$propValue['iteration']} <= {$propValue['total']}";
- foreach ($initLocal as $key => $code) {
- $output .= "{$local}{$key} = {$code};\n";
- }
- $_vars = 'array(' . join(', ', $initNamedProperty) . ')';
- $output .= "{$sectionVar} = new Smarty_Variable({$_vars});\n";
- $cond_code = "{$propValue['total']} !== 0";
- if ($propType[ 'total' ] === 0) {
- if ($propValue[ 'total' ] === 0) {
- $cond_code = 'false';
- } else {
- $cond_code = 'true';
- }
- }
- if ($propType[ 'show' ] > 0) {
- $output .= "{$local}show = {$propValue['show']} ? {$cond_code} : false;\n";
- $output .= "if ({$local}show) {\n";
- } elseif ($propValue[ 'show' ] === 'true') {
- $output .= "if ({$cond_code}) {\n";
- } else {
- $output .= "if (false) {\n";
- }
- $jinit = join(', ', $initFor);
- $jcmp = join(', ', $cmpFor);
- $jinc = join(', ', $incFor);
- $output .= "for ({$jinit}; {$jcmp}; {$jinc}){\n";
- if (isset($namedAttr[ 'rownum' ])) {
- $output .= "{$sectionVar}->value['rownum'] = {$propValue['iteration']};\n";
- }
- if (isset($namedAttr[ 'index_prev' ])) {
- $output .= "{$sectionVar}->value['index_prev'] = {$propValue['index']} - {$propValue['step']};\n";
- }
- if (isset($namedAttr[ 'index_next' ])) {
- $output .= "{$sectionVar}->value['index_next'] = {$propValue['index']} + {$propValue['step']};\n";
- }
- if (isset($namedAttr[ 'first' ])) {
- $output .= "{$sectionVar}->value['first'] = ({$propValue['iteration']} === 1);\n";
- }
- if (isset($namedAttr[ 'last' ])) {
- $output .= "{$sectionVar}->value['last'] = ({$propValue['iteration']} === {$propValue['total']});\n";
- }
- $output .= '?>';
- return $output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Sectionelse Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {sectionelse} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- list($openTag, $nocache, $local, $sectionVar) = $this->closeTag($compiler, array('section'));
- $this->openTag($compiler, 'sectionelse', array('sectionelse', $nocache, $local, $sectionVar));
- return "<?php }} else {\n ?>";
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Sectionclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/section} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $compiler->loopNesting--;
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- list($openTag, $compiler->nocache, $local, $sectionVar) =
- $this->closeTag($compiler, array('section', 'sectionelse'));
- $output = "<?php\n";
- if ($openTag === 'sectionelse') {
- $output .= "}\n";
- } else {
- $output .= "}\n}\n";
- }
- $output .= '?>';
- return $output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
deleted file mode 100644
index 70e2e2f9f..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Setfilter
- * Compiles code for setfilter tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Setfilter Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Setfilter extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for setfilter tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $compiler->variable_filter_stack[] = $compiler->variable_filters;
- $compiler->variable_filters = $parameter[ 'modifier_list' ];
- // this tag does not return compiled code
- $compiler->has_code = false;
- return true;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Setfilterclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/setfilter} tag
- * This tag does not generate compiled output. It resets variable filter.
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $_attr = $this->getAttributes($compiler, $args);
- // reset variable filter to previous state
- if (count($compiler->variable_filter_stack)) {
- $compiler->variable_filters = array_pop($compiler->variable_filter_stack);
- } else {
- $compiler->variable_filters = array();
- }
- // this tag does not return compiled code
- $compiler->has_code = false;
- return true;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
deleted file mode 100644
index d90262e60..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Shared Inheritance
- * Shared methods for {extends} and {block} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Shared Inheritance Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Shared_Inheritance extends Smarty_Internal_CompileBase
-{
- /**
- * Compile inheritance initialization code as prefix
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- * @param bool|false $initChildSequence if true force child template
- */
- public static function postCompile(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
- {
- $compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->_loadInheritance();\n\$_smarty_tpl->inheritance->init(\$_smarty_tpl, " .
- var_export($initChildSequence, true) . ");\n?>\n";
- }
-
- /**
- * Register post compile callback to compile inheritance initialization code
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- * @param bool|false $initChildSequence if true force child template
- */
- public function registerInit(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
- {
- if ($initChildSequence || !isset($compiler->_cache[ 'inheritanceInit' ])) {
- $compiler->registerPostCompileCallback(
- array('Smarty_Internal_Compile_Shared_Inheritance', 'postCompile'),
- array($initChildSequence),
- 'inheritanceInit',
- $initChildSequence
- );
- $compiler->_cache[ 'inheritanceInit' ] = true;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php
deleted file mode 100644
index 5aa3a7330..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile While
- * Compiles the {while} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile While Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {while} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $compiler->loopNesting++;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $this->openTag($compiler, 'while', $compiler->nocache);
- if (!array_key_exists('if condition', $parameter)) {
- $compiler->trigger_template_error('missing while condition', null, true);
- }
- // maybe nocache because of nocache variables
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- if (is_array($parameter[ 'if condition' ])) {
- if ($compiler->nocache) {
- // create nocache var to make it know for further compiling
- if (is_array($parameter[ 'if condition' ][ 'var' ])) {
- $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
- } else {
- $var = $parameter[ 'if condition' ][ 'var' ];
- }
- $compiler->setNocacheInVariable($var);
- }
- $prefixVar = $compiler->getNewPrefixVariable();
- $assignCompiler = new Smarty_Internal_Compile_Assign();
- $assignAttr = array();
- $assignAttr[][ 'value' ] = $prefixVar;
- if (is_array($parameter[ 'if condition' ][ 'var' ])) {
- $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
- $_output = "<?php while ({$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]}) {?>";
- $_output .= $assignCompiler->compile(
- $assignAttr,
- $compiler,
- array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ])
- );
- } else {
- $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
- $_output = "<?php while ({$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]}) {?>";
- $_output .= $assignCompiler->compile($assignAttr, $compiler, array());
- }
- return $_output;
- } else {
- return "<?php\n while ({$parameter['if condition']}) {?>";
- }
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Whileclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/while} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $compiler->loopNesting--;
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- $compiler->nocache = $this->closeTag($compiler, array('while'));
- return "<?php }?>\n";
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php
deleted file mode 100644
index 2a32e4373..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin CompileBase
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * This class does extend all internal compile plugins
- *
- * @package Smarty
- * @subpackage Compiler
- */
-abstract class Smarty_Internal_CompileBase
-{
- /**
- * Array of names of required attribute required by tag
- *
- * @var array
- */
- public $required_attributes = array();
-
- /**
- * Array of names of optional attribute required by tag
- * use array('_any') if there is no restriction of attributes names
- *
- * @var array
- */
- public $optional_attributes = array();
-
- /**
- * Shorttag attribute order defined by its names
- *
- * @var array
- */
- public $shorttag_order = array();
-
- /**
- * Array of names of valid option flags
- *
- * @var array
- */
- public $option_flags = array('nocache');
-
- /**
- * Mapping array for boolean option value
- *
- * @var array
- */
- public $optionMap = array(1 => true, 0 => false, 'true' => true, 'false' => false);
-
- /**
- * Mapping array with attributes as key
- *
- * @var array
- */
- public $mapCache = array();
-
- /**
- * This function checks if the attributes passed are valid
- * The attributes passed for the tag to compile are checked against the list of required and
- * optional attributes. Required attributes must be present. Optional attributes are check against
- * the corresponding list. The keyword '_any' specifies that any attribute will be accepted
- * as valid
- *
- * @param object $compiler compiler object
- * @param array $attributes attributes applied to the tag
- *
- * @return array of mapped attributes for further processing
- */
- public function getAttributes($compiler, $attributes)
- {
- $_indexed_attr = array();
- if (!isset($this->mapCache[ 'option' ])) {
- $this->mapCache[ 'option' ] = array_fill_keys($this->option_flags, true);
- }
- foreach ($attributes as $key => $mixed) {
- // shorthand ?
- if (!is_array($mixed)) {
- // option flag ?
- if (isset($this->mapCache[ 'option' ][ trim($mixed, '\'"') ])) {
- $_indexed_attr[ trim($mixed, '\'"') ] = true;
- // shorthand attribute ?
- } elseif (isset($this->shorttag_order[ $key ])) {
- $_indexed_attr[ $this->shorttag_order[ $key ] ] = $mixed;
- } else {
- // too many shorthands
- $compiler->trigger_template_error('too many shorthand attributes', null, true);
- }
- // named attribute
- } else {
- foreach ($mixed as $k => $v) {
- // option flag?
- if (isset($this->mapCache[ 'option' ][ $k ])) {
- if (is_bool($v)) {
- $_indexed_attr[ $k ] = $v;
- } else {
- if (is_string($v)) {
- $v = trim($v, '\'" ');
- }
- if (isset($this->optionMap[ $v ])) {
- $_indexed_attr[ $k ] = $this->optionMap[ $v ];
- } else {
- $compiler->trigger_template_error(
- "illegal value '" . var_export($v, true) .
- "' for option flag '{$k}'",
- null,
- true
- );
- }
- }
- // must be named attribute
- } else {
- $_indexed_attr[ $k ] = $v;
- }
- }
- }
- }
- // check if all required attributes present
- foreach ($this->required_attributes as $attr) {
- if (!isset($_indexed_attr[ $attr ])) {
- $compiler->trigger_template_error("missing '{$attr}' attribute", null, true);
- }
- }
- // check for not allowed attributes
- if ($this->optional_attributes !== array('_any')) {
- if (!isset($this->mapCache[ 'all' ])) {
- $this->mapCache[ 'all' ] =
- array_fill_keys(
- array_merge(
- $this->required_attributes,
- $this->optional_attributes,
- $this->option_flags
- ),
- true
- );
- }
- foreach ($_indexed_attr as $key => $dummy) {
- if (!isset($this->mapCache[ 'all' ][ $key ]) && $key !== 0) {
- $compiler->trigger_template_error("unexpected '{$key}' attribute", null, true);
- }
- }
- }
- // default 'false' for all option flags not set
- foreach ($this->option_flags as $flag) {
- if (!isset($_indexed_attr[ $flag ])) {
- $_indexed_attr[ $flag ] = false;
- }
- }
- if (isset($_indexed_attr[ 'nocache' ]) && $_indexed_attr[ 'nocache' ]) {
- $compiler->tag_nocache = true;
- }
- return $_indexed_attr;
- }
-
- /**
- * Push opening tag name on stack
- * Optionally additional data can be saved on stack
- *
- * @param object $compiler compiler object
- * @param string $openTag the opening tag's name
- * @param mixed $data optional data saved
- */
- public function openTag($compiler, $openTag, $data = null)
- {
- array_push($compiler->_tag_stack, array($openTag, $data));
- }
-
- /**
- * Pop closing tag
- * Raise an error if this stack-top doesn't match with expected opening tags
- *
- * @param object $compiler compiler object
- * @param array|string $expectedTag the expected opening tag names
- *
- * @return mixed any type the opening tag's name or saved data
- */
- public function closeTag($compiler, $expectedTag)
- {
- if (count($compiler->_tag_stack) > 0) {
- // get stacked info
- list($_openTag, $_data) = array_pop($compiler->_tag_stack);
- // open tag must match with the expected ones
- if (in_array($_openTag, (array)$expectedTag)) {
- if (is_null($_data)) {
- // return opening tag
- return $_openTag;
- } else {
- // return restored data
- return $_data;
- }
- }
- // wrong nesting of tags
- $compiler->trigger_template_error("unclosed '{$compiler->smarty->left_delimiter}{$_openTag}{$compiler->smarty->right_delimiter}' tag");
- return;
- }
- // wrong nesting of tags
- $compiler->trigger_template_error('unexpected closing tag', null, true);
- return;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
deleted file mode 100644
index 469b9667a..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
+++ /dev/null
@@ -1,211 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Config File Compiler
- * This is the config file compiler class. It calls the lexer and parser to
- * perform the compiling.
- *
- * @package Smarty
- * @subpackage Config
- * @author Uwe Tews
- */
-
-/**
- * Main config file compiler class
- *
- * @package Smarty
- * @subpackage Config
- */
-class Smarty_Internal_Config_File_Compiler
-{
- /**
- * Lexer class name
- *
- * @var string
- */
- public $lexer_class;
-
- /**
- * Parser class name
- *
- * @var string
- */
- public $parser_class;
-
- /**
- * Lexer object
- *
- * @var object
- */
- public $lex;
-
- /**
- * Parser object
- *
- * @var object
- */
- public $parser;
-
- /**
- * Smarty object
- *
- * @var Smarty object
- */
- public $smarty;
-
- /**
- * Smarty object
- *
- * @var Smarty_Internal_Template object
- */
- public $template;
-
- /**
- * Compiled config data sections and variables
- *
- * @var array
- */
- public $config_data = array();
-
- /**
- * compiled config data must always be written
- *
- * @var bool
- */
- public $write_compiled_code = true;
-
- /**
- * Initialize compiler
- *
- * @param string $lexer_class class name
- * @param string $parser_class class name
- * @param Smarty $smarty global instance
- */
- public function __construct($lexer_class, $parser_class, Smarty $smarty)
- {
- $this->smarty = $smarty;
- // get required plugins
- $this->lexer_class = $lexer_class;
- $this->parser_class = $parser_class;
- $this->smarty = $smarty;
- $this->config_data[ 'sections' ] = array();
- $this->config_data[ 'vars' ] = array();
- }
-
- /**
- * Method to compile Smarty config source.
- *
- * @param Smarty_Internal_Template $template
- *
- * @return bool true if compiling succeeded, false if it failed
- * @throws \SmartyException
- */
- public function compileTemplate(Smarty_Internal_Template $template)
- {
- $this->template = $template;
- $this->template->compiled->file_dependency[ $this->template->source->uid ] =
- array(
- $this->template->source->filepath,
- $this->template->source->getTimeStamp(),
- $this->template->source->type
- );
- if ($this->smarty->debugging) {
- if (!isset($this->smarty->_debug)) {
- $this->smarty->_debug = new Smarty_Internal_Debug();
- }
- $this->smarty->_debug->start_compile($this->template);
- }
- // init the lexer/parser to compile the config file
- /* @var Smarty_Internal_ConfigFileLexer $this->lex */
- $this->lex = new $this->lexer_class(
- str_replace(
- array(
- "\r\n",
- "\r"
- ),
- "\n",
- $template->source->getContent()
- ) . "\n",
- $this
- );
- /* @var Smarty_Internal_ConfigFileParser $this->parser */
- $this->parser = new $this->parser_class($this->lex, $this);
- if (function_exists('mb_internal_encoding')
- && function_exists('ini_get')
- && ((int)ini_get('mbstring.func_overload')) & 2
- ) {
- $mbEncoding = mb_internal_encoding();
- mb_internal_encoding('ASCII');
- } else {
- $mbEncoding = null;
- }
- if ($this->smarty->_parserdebug) {
- $this->parser->PrintTrace();
- }
- // get tokens from lexer and parse them
- while ($this->lex->yylex()) {
- if ($this->smarty->_parserdebug) {
- echo "<br>Parsing {$this->parser->yyTokenName[$this->lex->token]} Token {$this->lex->value} Line {$this->lex->line} \n";
- }
- $this->parser->doParse($this->lex->token, $this->lex->value);
- }
- // finish parsing process
- $this->parser->doParse(0, 0);
- if ($mbEncoding) {
- mb_internal_encoding($mbEncoding);
- }
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_compile($this->template);
- }
- // template header code
- $template_header = sprintf(
- "<?php /* Smarty version %s, created on %s\n compiled from '%s' */ ?>\n",
- Smarty::SMARTY_VERSION,
- date("Y-m-d H:i:s"),
- str_replace('*/', '* /' , $this->template->source->filepath)
- );
- $code = '<?php $_smarty_tpl->smarty->ext->configLoad->_loadConfigVars($_smarty_tpl, ' .
- var_export($this->config_data, true) . '); ?>';
- return $template_header . $this->template->smarty->ext->_codeFrame->create($this->template, $code);
- }
-
- /**
- * display compiler error messages without dying
- * If parameter $args is empty it is a parser detected syntax error.
- * In this case the parser is called to obtain information about expected tokens.
- * If parameter $args contains a string this is used as error message
- *
- * @param string $args individual error message or null
- *
- * @throws SmartyCompilerException
- */
- public function trigger_config_file_error($args = null)
- {
- // get config source line which has error
- $line = $this->lex->line;
- if (isset($args)) {
- // $line--;
- }
- $match = preg_split("/\n/", $this->lex->data);
- $error_text =
- "Syntax error in config file '{$this->template->source->filepath}' on line {$line} '{$match[$line - 1]}' ";
- if (isset($args)) {
- // individual error message
- $error_text .= $args;
- } else {
- // expected token from parser
- foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
- $exp_token = $this->parser->yyTokenName[ $token ];
- if (isset($this->lex->smarty_token_names[ $exp_token ])) {
- // token type from lexer
- $expect[] = '"' . $this->lex->smarty_token_names[ $exp_token ] . '"';
- } else {
- // otherwise internal token name
- $expect[] = $this->parser->yyTokenName[ $token ];
- }
- }
- // output parser error message
- $error_text .= ' - Unexpected "' . $this->lex->value . '", expected one of: ' . implode(' , ', $expect);
- }
- throw new SmartyCompilerException($error_text);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php
deleted file mode 100644
index afb3efcb0..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php
+++ /dev/null
@@ -1,739 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Configfilelexer
- *
- * This is the lexer to break the config file source into tokens
- *
- * @package Smarty
- * @subpackage Config
- * @author Uwe Tews
- */
-
-/**
- * Smarty_Internal_Configfilelexer
- *
- * This is the config file lexer.
- * It is generated from the smarty_internal_configfilelexer.plex file
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-class Smarty_Internal_Configfilelexer
-{
- const START = 1;
- const VALUE = 2;
- const NAKED_STRING_VALUE = 3;
- const COMMENT = 4;
- const SECTION = 5;
- const TRIPPLE = 6;
-
- /**
- * Source
- *
- * @var string
- */
- public $data;
-
- /**
- * Source length
- *
- * @var int
- */
- public $dataLength = null;
-
- /**
- * byte counter
- *
- * @var int
- */
- public $counter;
-
- /**
- * token number
- *
- * @var int
- */
- public $token;
-
- /**
- * token value
- *
- * @var string
- */
- public $value;
-
- /**
- * current line
- *
- * @var int
- */
- public $line;
-
- /**
- * state number
- *
- * @var int
- */
- public $state = 1;
-
- /**
- * Smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * trace file
- *
- * @var resource
- */
- public $yyTraceFILE;
-
- /**
- * trace prompt
- *
- * @var string
- */
- public $yyTracePrompt;
-
- /**
- * state names
- *
- * @var array
- */
- public $state_name = array(
- 1 => 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE'
- );
-
- /**
- * token names
- *
- * @var array
- */
- public $smarty_token_names = array( // Text for parser error messages
- );
-
- /**
- * compiler object
- *
- * @var Smarty_Internal_Config_File_Compiler
- */
- private $compiler = null;
-
- /**
- * copy of config_booleanize
- *
- * @var bool
- */
- private $configBooleanize = false;
-
- /**
- * storage for assembled token patterns
- *
- * @var string
- */
- private $yy_global_pattern1 = null;
-
- private $yy_global_pattern2 = null;
-
- private $yy_global_pattern3 = null;
-
- private $yy_global_pattern4 = null;
-
- private $yy_global_pattern5 = null;
-
- private $yy_global_pattern6 = null;
-
- private $_yy_state = 1;
-
- private $_yy_stack = array();
-
- /**
- * constructor
- *
- * @param string $data template source
- * @param Smarty_Internal_Config_File_Compiler $compiler
- */
- public function __construct($data, Smarty_Internal_Config_File_Compiler $compiler)
- {
- $this->data = $data . "\n"; //now all lines are \n-terminated
- $this->dataLength = strlen($data);
- $this->counter = 0;
- if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
- $this->counter += strlen($match[ 0 ]);
- }
- $this->line = 1;
- $this->compiler = $compiler;
- $this->smarty = $compiler->smarty;
- $this->configBooleanize = $this->smarty->config_booleanize;
- }
-
- public function replace($input)
- {
- return $input;
- } // end function
-
- public function PrintTrace()
- {
- $this->yyTraceFILE = fopen('php://output', 'w');
- $this->yyTracePrompt = '<br>';
- }
-
- public function yylex()
- {
- return $this->{'yylex' . $this->_yy_state}();
- }
-
- public function yypushstate($state)
- {
- if ($this->yyTraceFILE) {
- fprintf(
- $this->yyTraceFILE,
- "%sState push %s\n",
- $this->yyTracePrompt,
- isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
- );
- }
- array_push($this->_yy_stack, $this->_yy_state);
- $this->_yy_state = $state;
- if ($this->yyTraceFILE) {
- fprintf(
- $this->yyTraceFILE,
- "%snew State %s\n",
- $this->yyTracePrompt,
- isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
- );
- }
- }
-
- public function yypopstate()
- {
- if ($this->yyTraceFILE) {
- fprintf(
- $this->yyTraceFILE,
- "%sState pop %s\n",
- $this->yyTracePrompt,
- isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
- );
- }
- $this->_yy_state = array_pop($this->_yy_stack);
- if ($this->yyTraceFILE) {
- fprintf(
- $this->yyTraceFILE,
- "%snew State %s\n",
- $this->yyTracePrompt,
- isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
- );
- }
- }
-
- public function yybegin($state)
- {
- $this->_yy_state = $state;
- if ($this->yyTraceFILE) {
- fprintf(
- $this->yyTraceFILE,
- "%sState set %s\n",
- $this->yyTracePrompt,
- isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
- );
- }
- }
-
- public function yylex1()
- {
- if (!isset($this->yy_global_pattern1)) {
- $this->yy_global_pattern1 =
- $this->replace("/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/isS");
- }
- if (!isset($this->dataLength)) {
- $this->dataLength = strlen($this->data);
- }
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- do {
- if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, 0, $this->counter)) {
- if (!isset($yymatches[ 0 ][ 1 ])) {
- $yymatches = preg_grep("/(.|\s)+/", $yymatches);
- } else {
- $yymatches = array_filter($yymatches);
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr(
- $this->data,
- $this->counter,
- 5
- ) . '... state START');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r1_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[ $this->counter ]);
- }
- break;
- } while (true);
- }
-
- public function yy_r1_1()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
- $this->yypushstate(self::COMMENT);
- }
-
- public function yy_r1_2()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
- $this->yypushstate(self::SECTION);
- }
-
- public function yy_r1_3()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
- }
-
- public function yy_r1_4()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
- $this->yypushstate(self::VALUE);
- } // end function
-
- public function yy_r1_5()
- {
- return false;
- }
-
- public function yy_r1_6()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
- }
-
- public function yy_r1_7()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_ID;
- }
-
- public function yy_r1_8()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_OTHER;
- }
-
- public function yylex2()
- {
- if (!isset($this->yy_global_pattern2)) {
- $this->yy_global_pattern2 =
- $this->replace("/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS");
- }
- if (!isset($this->dataLength)) {
- $this->dataLength = strlen($this->data);
- }
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- do {
- if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, 0, $this->counter)) {
- if (!isset($yymatches[ 0 ][ 1 ])) {
- $yymatches = preg_grep("/(.|\s)+/", $yymatches);
- } else {
- $yymatches = array_filter($yymatches);
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr(
- $this->data,
- $this->counter,
- 5
- ) . '... state VALUE');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r2_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[ $this->counter ]);
- }
- break;
- } while (true);
- }
-
- public function yy_r2_1()
- {
- return false;
- }
-
- public function yy_r2_2()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT;
- $this->yypopstate();
- }
-
- public function yy_r2_3()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_INT;
- $this->yypopstate();
- }
-
- public function yy_r2_4()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES;
- $this->yypushstate(self::TRIPPLE);
- }
-
- public function yy_r2_5()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING;
- $this->yypopstate();
- }
-
- public function yy_r2_6()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING;
- $this->yypopstate();
- } // end function
-
- public function yy_r2_7()
- {
- if (!$this->configBooleanize ||
- !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no'))) {
- $this->yypopstate();
- $this->yypushstate(self::NAKED_STRING_VALUE);
- return true; //reprocess in new state
- } else {
- $this->token = Smarty_Internal_Configfileparser::TPC_BOOL;
- $this->yypopstate();
- }
- }
-
- public function yy_r2_8()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->yypopstate();
- }
-
- public function yy_r2_9()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->value = '';
- $this->yypopstate();
- } // end function
-
- public function yylex3()
- {
- if (!isset($this->yy_global_pattern3)) {
- $this->yy_global_pattern3 = $this->replace("/\G([^\n]+?(?=[ \t\r]*\n))/isS");
- }
- if (!isset($this->dataLength)) {
- $this->dataLength = strlen($this->data);
- }
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- do {
- if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, 0, $this->counter)) {
- if (!isset($yymatches[ 0 ][ 1 ])) {
- $yymatches = preg_grep("/(.|\s)+/", $yymatches);
- } else {
- $yymatches = array_filter($yymatches);
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr(
- $this->data,
- $this->counter,
- 5
- ) . '... state NAKED_STRING_VALUE');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r3_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[ $this->counter ]);
- }
- break;
- } while (true);
- }
-
- public function yy_r3_1()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->yypopstate();
- }
-
- public function yylex4()
- {
- if (!isset($this->yy_global_pattern4)) {
- $this->yy_global_pattern4 = $this->replace("/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS");
- }
- if (!isset($this->dataLength)) {
- $this->dataLength = strlen($this->data);
- }
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- do {
- if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, 0, $this->counter)) {
- if (!isset($yymatches[ 0 ][ 1 ])) {
- $yymatches = preg_grep("/(.|\s)+/", $yymatches);
- } else {
- $yymatches = array_filter($yymatches);
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr(
- $this->data,
- $this->counter,
- 5
- ) . '... state COMMENT');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r4_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[ $this->counter ]);
- }
- break;
- } while (true);
- }
-
- public function yy_r4_1()
- {
- return false;
- }
-
- public function yy_r4_2()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- } // end function
-
- public function yy_r4_3()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
- $this->yypopstate();
- }
-
- public function yylex5()
- {
- if (!isset($this->yy_global_pattern5)) {
- $this->yy_global_pattern5 = $this->replace("/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/isS");
- }
- if (!isset($this->dataLength)) {
- $this->dataLength = strlen($this->data);
- }
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- do {
- if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, 0, $this->counter)) {
- if (!isset($yymatches[ 0 ][ 1 ])) {
- $yymatches = preg_grep("/(.|\s)+/", $yymatches);
- } else {
- $yymatches = array_filter($yymatches);
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr(
- $this->data,
- $this->counter,
- 5
- ) . '... state SECTION');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r5_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[ $this->counter ]);
- }
- break;
- } while (true);
- }
-
- public function yy_r5_1()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
- }
-
- public function yy_r5_2()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_SECTION;
- $this->yypopstate();
- } // end function
-
- public function yylex6()
- {
- if (!isset($this->yy_global_pattern6)) {
- $this->yy_global_pattern6 = $this->replace("/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/isS");
- }
- if (!isset($this->dataLength)) {
- $this->dataLength = strlen($this->data);
- }
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- do {
- if (preg_match($this->yy_global_pattern6, $this->data, $yymatches, 0, $this->counter)) {
- if (!isset($yymatches[ 0 ][ 1 ])) {
- $yymatches = preg_grep("/(.|\s)+/", $yymatches);
- } else {
- $yymatches = array_filter($yymatches);
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr(
- $this->data,
- $this->counter,
- 5
- ) . '... state TRIPPLE');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r6_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[ $this->counter ]);
- }
- break;
- } while (true);
- }
-
- public function yy_r6_1()
- {
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END;
- $this->yypopstate();
- $this->yypushstate(self::START);
- }
-
- public function yy_r6_2()
- {
- $to = strlen($this->data);
- preg_match("/\"\"\"[ \t\r]*[\n#;]/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
- if (isset($match[ 0 ][ 1 ])) {
- $to = $match[ 0 ][ 1 ];
- } else {
- $this->compiler->trigger_config_file_error('missing or misspelled literal closing tag');
- }
- $this->value = substr($this->data, $this->counter, $to - $this->counter);
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
deleted file mode 100644
index 36fdb76ee..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
+++ /dev/null
@@ -1,1046 +0,0 @@
-<?php
-
-class TPC_yyStackEntry
-{
- public $stateno; /* The state-number */
- public $major; /* The major token value. This is the code
- ** number for the token at this stack level */
- public $minor; /* The user-supplied minor token value. This
- ** is the value of the token */
-}
-
-// line 12 "../smarty/lexer/smarty_internal_configfileparser.y"
-
-/**
- * Smarty Internal Plugin Configfileparse
- *
- * This is the config file parser.
- * It is generated from the smarty_internal_configfileparser.y file
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-class Smarty_Internal_Configfileparser
-{
- // line 25 "../smarty/lexer/smarty_internal_configfileparser.y"
- const TPC_OPENB = 1;
- const TPC_SECTION = 2;
- const TPC_CLOSEB = 3;
- const TPC_DOT = 4;
- const TPC_ID = 5;
- const TPC_EQUAL = 6;
- const TPC_FLOAT = 7;
- const TPC_INT = 8;
- const TPC_BOOL = 9;
- const TPC_SINGLE_QUOTED_STRING = 10;
- const TPC_DOUBLE_QUOTED_STRING = 11;
- const TPC_TRIPPLE_QUOTES = 12;
- const TPC_TRIPPLE_TEXT = 13;
- const TPC_TRIPPLE_QUOTES_END = 14;
- const TPC_NAKED_STRING = 15;
- const TPC_OTHER = 16;
- const TPC_NEWLINE = 17;
- const TPC_COMMENTSTART = 18;
- const YY_NO_ACTION = 60;
- const YY_ACCEPT_ACTION = 59;
- const YY_ERROR_ACTION = 58;
- const YY_SZ_ACTTAB = 38;
- const YY_SHIFT_USE_DFLT = -8;
- const YY_SHIFT_MAX = 19;
- const YY_REDUCE_USE_DFLT = -17;
- const YY_REDUCE_MAX = 10;
- const YYNOCODE = 29;
- const YYSTACKDEPTH = 100;
- const YYNSTATE = 36;
- const YYNRULE = 22;
- const YYERRORSYMBOL = 19;
- const YYERRSYMDT = 'yy0';
- const YYFALLBACK = 0;
-
- public static $yy_action = array(
- 32, 31, 30, 29, 35, 13, 19, 3, 24, 26,
- 59, 9, 14, 1, 16, 25, 11, 28, 25, 11,
- 17, 27, 34, 20, 18, 15, 23, 5, 6, 22,
- 10, 8, 4, 12, 2, 33, 7, 21,
- );
-
- public static $yy_lookahead = array(
- 7, 8, 9, 10, 11, 12, 5, 23, 15, 16,
- 20, 21, 2, 23, 4, 17, 18, 14, 17, 18,
- 13, 14, 25, 26, 15, 2, 17, 3, 3, 17,
- 25, 25, 6, 1, 23, 27, 22, 24,
- );
-
- public static $yy_shift_ofst = array(
- -8, 1, 1, 1, -7, -2, -2, 32, -8, -8,
- -8, 9, 10, 7, 25, 24, 23, 3, 12, 26,
- );
-
- public static $yy_reduce_ofst = array(
- -10, -3, -3, -3, 8, 6, 5, 13, 11, 14,
- -16,
- );
-
- public static $yyExpectedTokens = array(
- array(),
- array(5, 17, 18,),
- array(5, 17, 18,),
- array(5, 17, 18,),
- array(7, 8, 9, 10, 11, 12, 15, 16,),
- array(17, 18,),
- array(17, 18,),
- array(1,),
- array(),
- array(),
- array(),
- array(15, 17,),
- array(2, 4,),
- array(13, 14,),
- array(3,),
- array(3,),
- array(2,),
- array(14,),
- array(17,),
- array(6,),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- );
-
- public static $yy_default = array(
- 44, 37, 41, 40, 58, 58, 58, 36, 44, 39,
- 44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 43, 38, 57, 56, 53, 55, 54, 52, 51, 49,
- 48, 47, 46, 45, 42, 50,
- );
-
- public static $yyFallback = array();
-
- public static $yyRuleName = array(
- 'start ::= global_vars sections',
- 'global_vars ::= var_list',
- 'sections ::= sections section',
- 'sections ::=',
- 'section ::= OPENB SECTION CLOSEB newline var_list',
- 'section ::= OPENB DOT SECTION CLOSEB newline var_list',
- 'var_list ::= var_list newline',
- 'var_list ::= var_list var',
- 'var_list ::=',
- 'var ::= ID EQUAL value',
- 'value ::= FLOAT',
- 'value ::= INT',
- 'value ::= BOOL',
- 'value ::= SINGLE_QUOTED_STRING',
- 'value ::= DOUBLE_QUOTED_STRING',
- 'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END',
- 'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END',
- 'value ::= NAKED_STRING',
- 'value ::= OTHER',
- 'newline ::= NEWLINE',
- 'newline ::= COMMENTSTART NEWLINE',
- 'newline ::= COMMENTSTART NAKED_STRING NEWLINE',
- );
-
- public static $yyRuleInfo = array(
- array(0 => 20, 1 => 2),
- array(0 => 21, 1 => 1),
- array(0 => 22, 1 => 2),
- array(0 => 22, 1 => 0),
- array(0 => 24, 1 => 5),
- array(0 => 24, 1 => 6),
- array(0 => 23, 1 => 2),
- array(0 => 23, 1 => 2),
- array(0 => 23, 1 => 0),
- array(0 => 26, 1 => 3),
- array(0 => 27, 1 => 1),
- array(0 => 27, 1 => 1),
- array(0 => 27, 1 => 1),
- array(0 => 27, 1 => 1),
- array(0 => 27, 1 => 1),
- array(0 => 27, 1 => 3),
- array(0 => 27, 1 => 2),
- array(0 => 27, 1 => 1),
- array(0 => 27, 1 => 1),
- array(0 => 25, 1 => 1),
- array(0 => 25, 1 => 2),
- array(0 => 25, 1 => 3),
- );
-
- public static $yyReduceMap = array(
- 0 => 0,
- 2 => 0,
- 3 => 0,
- 19 => 0,
- 20 => 0,
- 21 => 0,
- 1 => 1,
- 4 => 4,
- 5 => 5,
- 6 => 6,
- 7 => 7,
- 8 => 8,
- 9 => 9,
- 10 => 10,
- 11 => 11,
- 12 => 12,
- 13 => 13,
- 14 => 14,
- 15 => 15,
- 16 => 16,
- 17 => 17,
- 18 => 17,
- );
-
- /**
- * helper map
- *
- * @var array
- */
- private static $escapes_single = array(
- '\\' => '\\',
- '\'' => '\''
- );
-
- /**
- * result status
- *
- * @var bool
- */
- public $successful = true;
-
- /**
- * return value
- *
- * @var mixed
- */
- public $retvalue = 0;
-
- /**
- * @var
- */
- public $yymajor;
-
- /**
- * compiler object
- *
- * @var Smarty_Internal_Config_File_Compiler
- */
- public $compiler = null;
-
- /**
- * smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- public $yyTraceFILE;
-
- public $yyTracePrompt;
-
- public $yyidx;
-
- public $yyerrcnt;
-
- public $yystack = array();
-
- public $yyTokenName = array(
- '$', 'OPENB', 'SECTION', 'CLOSEB',
- 'DOT', 'ID', 'EQUAL', 'FLOAT',
- 'INT', 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING',
- 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END', 'NAKED_STRING',
- 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error',
- 'start', 'global_vars', 'sections', 'var_list',
- 'section', 'newline', 'var', 'value',
- );
-
- /**
- * lexer object
- *
- * @var Smarty_Internal_Configfilelexer
- */
- private $lex;
-
- /**
- * internal error flag
- *
- * @var bool
- */
- private $internalError = false;
-
- /**
- * copy of config_overwrite property
- *
- * @var bool
- */
- private $configOverwrite = false;
-
- /**
- * copy of config_read_hidden property
- *
- * @var bool
- */
- private $configReadHidden = false;
-
- private $_retvalue;
-
- /**
- * constructor
- *
- * @param Smarty_Internal_Configfilelexer $lex
- * @param Smarty_Internal_Config_File_Compiler $compiler
- */
- public function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Config_File_Compiler $compiler)
- {
- $this->lex = $lex;
- $this->smarty = $compiler->smarty;
- $this->compiler = $compiler;
- $this->configOverwrite = $this->smarty->config_overwrite;
- $this->configReadHidden = $this->smarty->config_read_hidden;
- }
-
- public static function yy_destructor($yymajor, $yypminor)
- {
- switch ($yymajor) {
- default:
- break; /* If no destructor action specified: do nothing */
- }
- }
-
- /**
- * parse single quoted string
- * remove outer quotes
- * unescape inner quotes
- *
- * @param string $qstr
- *
- * @return string
- */
- private static function parse_single_quoted_string($qstr)
- {
- $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
- $ss = preg_split('/(\\\\.)/', $escaped_string, -1, PREG_SPLIT_DELIM_CAPTURE);
- $str = '';
- foreach ($ss as $s) {
- if (strlen($s) === 2 && $s[ 0 ] === '\\') {
- if (isset(self::$escapes_single[ $s[ 1 ] ])) {
- $s = self::$escapes_single[ $s[ 1 ] ];
- }
- }
- $str .= $s;
- }
- return $str;
- } /* Index of top element in stack */
- /**
- * parse double quoted string
- *
- * @param string $qstr
- *
- * @return string
- */
- private static function parse_double_quoted_string($qstr)
- {
- $inner_str = substr($qstr, 1, strlen($qstr) - 2);
- return stripcslashes($inner_str);
- } /* Shifts left before out of the error */
- /**
- * parse triple quoted string
- *
- * @param string $qstr
- *
- * @return string
- */
- private static function parse_tripple_double_quoted_string($qstr)
- {
- return stripcslashes($qstr);
- } /* The parser's stack */
- public function Trace($TraceFILE, $zTracePrompt)
- {
- if (!$TraceFILE) {
- $zTracePrompt = 0;
- } elseif (!$zTracePrompt) {
- $TraceFILE = 0;
- }
- $this->yyTraceFILE = $TraceFILE;
- $this->yyTracePrompt = $zTracePrompt;
- }
-
- public function PrintTrace()
- {
- $this->yyTraceFILE = fopen('php://output', 'w');
- $this->yyTracePrompt = '<br>';
- }
-
- public function tokenName($tokenType)
- {
- if ($tokenType === 0) {
- return 'End of Input';
- }
- if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
- return $this->yyTokenName[ $tokenType ];
- } else {
- return 'Unknown';
- }
- }
-
- public function yy_pop_parser_stack()
- {
- if (empty($this->yystack)) {
- return;
- }
- $yytos = array_pop($this->yystack);
- if ($this->yyTraceFILE && $this->yyidx >= 0) {
- fwrite(
- $this->yyTraceFILE,
- $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] .
- "\n"
- );
- }
- $yymajor = $yytos->major;
- self::yy_destructor($yymajor, $yytos->minor);
- $this->yyidx--;
- return $yymajor;
- }
-
- public function __destruct()
- {
- while ($this->yystack !== array()) {
- $this->yy_pop_parser_stack();
- }
- if (is_resource($this->yyTraceFILE)) {
- fclose($this->yyTraceFILE);
- }
- }
-
- public function yy_get_expected_tokens($token)
- {
- static $res3 = array();
- static $res4 = array();
- $state = $this->yystack[ $this->yyidx ]->stateno;
- $expected = self::$yyExpectedTokens[ $state ];
- if (isset($res3[ $state ][ $token ])) {
- if ($res3[ $state ][ $token ]) {
- return $expected;
- }
- } else {
- if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
- return $expected;
- }
- }
- $stack = $this->yystack;
- $yyidx = $this->yyidx;
- do {
- $yyact = $this->yy_find_shift_action($token);
- if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
- // reduce action
- $done = 0;
- do {
- if ($done++ === 100) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // too much recursion prevents proper detection
- // so give up
- return array_unique($expected);
- }
- $yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
- $nextstate = $this->yy_find_reduce_action(
- $this->yystack[ $this->yyidx ]->stateno,
- self::$yyRuleInfo[ $yyruleno ][ 0 ]
- );
- if (isset(self::$yyExpectedTokens[ $nextstate ])) {
- $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
- if (isset($res4[ $nextstate ][ $token ])) {
- if ($res4[ $nextstate ][ $token ]) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return array_unique($expected);
- }
- } else {
- if ($res4[ $nextstate ][ $token ] =
- in_array($token, self::$yyExpectedTokens[ $nextstate ], true)) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return array_unique($expected);
- }
- }
- }
- if ($nextstate < self::YYNSTATE) {
- // we need to shift a non-terminal
- $this->yyidx++;
- $x = new TPC_yyStackEntry;
- $x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
- $this->yystack[ $this->yyidx ] = $x;
- continue 2;
- } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // the last token was just ignored, we can't accept
- // by ignoring input, this is in essence ignoring a
- // syntax error!
- return array_unique($expected);
- } elseif ($nextstate === self::YY_NO_ACTION) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // input accepted, but not shifted (I guess)
- return $expected;
- } else {
- $yyact = $nextstate;
- }
- } while (true);
- }
- break;
- } while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return array_unique($expected);
- }
-
- public function yy_is_expected_token($token)
- {
- static $res = array();
- static $res2 = array();
- if ($token === 0) {
- return true; // 0 is not part of this
- }
- $state = $this->yystack[ $this->yyidx ]->stateno;
- if (isset($res[ $state ][ $token ])) {
- if ($res[ $state ][ $token ]) {
- return true;
- }
- } else {
- if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
- return true;
- }
- }
- $stack = $this->yystack;
- $yyidx = $this->yyidx;
- do {
- $yyact = $this->yy_find_shift_action($token);
- if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
- // reduce action
- $done = 0;
- do {
- if ($done++ === 100) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // too much recursion prevents proper detection
- // so give up
- return true;
- }
- $yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
- $nextstate = $this->yy_find_reduce_action(
- $this->yystack[ $this->yyidx ]->stateno,
- self::$yyRuleInfo[ $yyruleno ][ 0 ]
- );
- if (isset($res2[ $nextstate ][ $token ])) {
- if ($res2[ $nextstate ][ $token ]) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return true;
- }
- } else {
- if ($res2[ $nextstate ][ $token ] =
- (isset(self::$yyExpectedTokens[ $nextstate ]) &&
- in_array($token, self::$yyExpectedTokens[ $nextstate ], true))) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return true;
- }
- }
- if ($nextstate < self::YYNSTATE) {
- // we need to shift a non-terminal
- $this->yyidx++;
- $x = new TPC_yyStackEntry;
- $x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
- $this->yystack[ $this->yyidx ] = $x;
- continue 2;
- } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- if (!$token) {
- // end of input: this is valid
- return true;
- }
- // the last token was just ignored, we can't accept
- // by ignoring input, this is in essence ignoring a
- // syntax error!
- return false;
- } elseif ($nextstate === self::YY_NO_ACTION) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // input accepted, but not shifted (I guess)
- return true;
- } else {
- $yyact = $nextstate;
- }
- } while (true);
- }
- break;
- } while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return true;
- }
-
- public function yy_find_shift_action($iLookAhead)
- {
- $stateno = $this->yystack[ $this->yyidx ]->stateno;
- /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
- if (!isset(self::$yy_shift_ofst[ $stateno ])) {
- // no shift actions
- return self::$yy_default[ $stateno ];
- }
- $i = self::$yy_shift_ofst[ $stateno ];
- if ($i === self::YY_SHIFT_USE_DFLT) {
- return self::$yy_default[ $stateno ];
- }
- if ($iLookAhead === self::YYNOCODE) {
- return self::YY_NO_ACTION;
- }
- $i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
- self::$yy_lookahead[ $i ] != $iLookAhead) {
- if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
- && ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0) {
- if ($this->yyTraceFILE) {
- fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
- $this->yyTokenName[ $iLookAhead ] . ' => ' .
- $this->yyTokenName[ $iFallback ] . "\n");
- }
- return $this->yy_find_shift_action($iFallback);
- }
- return self::$yy_default[ $stateno ];
- } else {
- return self::$yy_action[ $i ];
- }
- }
-
- public function yy_find_reduce_action($stateno, $iLookAhead)
- {
- /* $stateno = $this->yystack[$this->yyidx]->stateno; */
- if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
- return self::$yy_default[ $stateno ];
- }
- $i = self::$yy_reduce_ofst[ $stateno ];
- if ($i === self::YY_REDUCE_USE_DFLT) {
- return self::$yy_default[ $stateno ];
- }
- if ($iLookAhead === self::YYNOCODE) {
- return self::YY_NO_ACTION;
- }
- $i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
- self::$yy_lookahead[ $i ] != $iLookAhead) {
- return self::$yy_default[ $stateno ];
- } else {
- return self::$yy_action[ $i ];
- }
- }
-
- public function yy_shift($yyNewState, $yyMajor, $yypMinor)
- {
- $this->yyidx++;
- if ($this->yyidx >= self::YYSTACKDEPTH) {
- $this->yyidx--;
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- // line 239 "../smarty/lexer/smarty_internal_configfileparser.y"
- $this->internalError = true;
- $this->compiler->trigger_config_file_error('Stack overflow in configfile parser');
- return;
- }
- $yytos = new TPC_yyStackEntry;
- $yytos->stateno = $yyNewState;
- $yytos->major = $yyMajor;
- $yytos->minor = $yypMinor;
- $this->yystack[] = $yytos;
- if ($this->yyTraceFILE && $this->yyidx > 0) {
- fprintf(
- $this->yyTraceFILE,
- "%sShift %d\n",
- $this->yyTracePrompt,
- $yyNewState
- );
- fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
- for ($i = 1; $i <= $this->yyidx; $i++) {
- fprintf(
- $this->yyTraceFILE,
- " %s",
- $this->yyTokenName[ $this->yystack[ $i ]->major ]
- );
- }
- fwrite($this->yyTraceFILE, "\n");
- }
- }
-
- public function yy_r0()
- {
- $this->_retvalue = null;
- }
-
- public function yy_r1()
- {
- $this->add_global_vars($this->yystack[ $this->yyidx + 0 ]->minor);
- $this->_retvalue = null;
- }
-
- public function yy_r4()
- {
- $this->add_section_vars($this->yystack[ $this->yyidx + -3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
- $this->_retvalue = null;
- }
-
- // line 245 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r5()
- {
- if ($this->configReadHidden) {
- $this->add_section_vars(
- $this->yystack[ $this->yyidx + -3 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor
- );
- }
- $this->_retvalue = null;
- }
-
- // line 250 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r6()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
- }
-
- // line 264 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r7()
- {
- $this->_retvalue =
- array_merge($this->yystack[ $this->yyidx + -1 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
- }
-
- // line 269 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r8()
- {
- $this->_retvalue = array();
- }
-
- // line 277 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r9()
- {
- $this->_retvalue =
- array(
- 'key' => $this->yystack[ $this->yyidx + -2 ]->minor,
- 'value' => $this->yystack[ $this->yyidx + 0 ]->minor
- );
- }
-
- // line 281 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r10()
- {
- $this->_retvalue = (float)$this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- // line 285 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r11()
- {
- $this->_retvalue = (int)$this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- // line 291 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r12()
- {
- $this->_retvalue = $this->parse_bool($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- // line 296 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r13()
- {
- $this->_retvalue = self::parse_single_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- // line 300 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r14()
- {
- $this->_retvalue = self::parse_double_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- // line 304 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r15()
- {
- $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[ $this->yyidx + -1 ]->minor);
- }
-
- // line 308 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r16()
- {
- $this->_retvalue = '';
- }
-
- // line 312 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_r17()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- // line 316 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_reduce($yyruleno)
- {
- if ($this->yyTraceFILE && $yyruleno >= 0
- && $yyruleno < count(self::$yyRuleName)) {
- fprintf(
- $this->yyTraceFILE,
- "%sReduce (%d) [%s].\n",
- $this->yyTracePrompt,
- $yyruleno,
- self::$yyRuleName[ $yyruleno ]
- );
- }
- $this->_retvalue = $yy_lefthand_side = null;
- if (isset(self::$yyReduceMap[ $yyruleno ])) {
- // call the action
- $this->_retvalue = null;
- $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
- $yy_lefthand_side = $this->_retvalue;
- }
- $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
- $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
- $this->yyidx -= $yysize;
- for ($i = $yysize; $i; $i--) {
- // pop all of the right-hand side parameters
- array_pop($this->yystack);
- }
- $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
- if ($yyact < self::YYNSTATE) {
- if (!$this->yyTraceFILE && $yysize) {
- $this->yyidx++;
- $x = new TPC_yyStackEntry;
- $x->stateno = $yyact;
- $x->major = $yygoto;
- $x->minor = $yy_lefthand_side;
- $this->yystack[ $this->yyidx ] = $x;
- } else {
- $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
- }
- } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
- $this->yy_accept();
- }
- }
-
- // line 320 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_parse_failed()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- }
-
- // line 324 "../smarty/lexer/smarty_internal_configfileparser.y"
- public function yy_syntax_error($yymajor, $TOKEN)
- {
- // line 232 "../smarty/lexer/smarty_internal_configfileparser.y"
- $this->internalError = true;
- $this->yymajor = $yymajor;
- $this->compiler->trigger_config_file_error();
- }
-
- public function yy_accept()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- // line 225 "../smarty/lexer/smarty_internal_configfileparser.y"
- $this->successful = !$this->internalError;
- $this->internalError = false;
- $this->retvalue = $this->_retvalue;
- }
-
- public function doParse($yymajor, $yytokenvalue)
- {
- $yyerrorhit = 0; /* True if yymajor has invoked an error */
- if ($this->yyidx === null || $this->yyidx < 0) {
- $this->yyidx = 0;
- $this->yyerrcnt = -1;
- $x = new TPC_yyStackEntry;
- $x->stateno = 0;
- $x->major = 0;
- $this->yystack = array();
- $this->yystack[] = $x;
- }
- $yyendofinput = ($yymajor == 0);
- if ($this->yyTraceFILE) {
- fprintf(
- $this->yyTraceFILE,
- "%sInput %s\n",
- $this->yyTracePrompt,
- $this->yyTokenName[ $yymajor ]
- );
- }
- do {
- $yyact = $this->yy_find_shift_action($yymajor);
- if ($yymajor < self::YYERRORSYMBOL &&
- !$this->yy_is_expected_token($yymajor)) {
- // force a syntax error
- $yyact = self::YY_ERROR_ACTION;
- }
- if ($yyact < self::YYNSTATE) {
- $this->yy_shift($yyact, $yymajor, $yytokenvalue);
- $this->yyerrcnt--;
- if ($yyendofinput && $this->yyidx >= 0) {
- $yymajor = 0;
- } else {
- $yymajor = self::YYNOCODE;
- }
- } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
- $this->yy_reduce($yyact - self::YYNSTATE);
- } elseif ($yyact === self::YY_ERROR_ACTION) {
- if ($this->yyTraceFILE) {
- fprintf(
- $this->yyTraceFILE,
- "%sSyntax Error!\n",
- $this->yyTracePrompt
- );
- }
- if (self::YYERRORSYMBOL) {
- if ($this->yyerrcnt < 0) {
- $this->yy_syntax_error($yymajor, $yytokenvalue);
- }
- $yymx = $this->yystack[ $this->yyidx ]->major;
- if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
- if ($this->yyTraceFILE) {
- fprintf(
- $this->yyTraceFILE,
- "%sDiscard input token %s\n",
- $this->yyTracePrompt,
- $this->yyTokenName[ $yymajor ]
- );
- }
- $this->yy_destructor($yymajor, $yytokenvalue);
- $yymajor = self::YYNOCODE;
- } else {
- while ($this->yyidx >= 0 &&
- $yymx !== self::YYERRORSYMBOL &&
- ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
- ) {
- $this->yy_pop_parser_stack();
- }
- if ($this->yyidx < 0 || $yymajor == 0) {
- $this->yy_destructor($yymajor, $yytokenvalue);
- $this->yy_parse_failed();
- $yymajor = self::YYNOCODE;
- } elseif ($yymx !== self::YYERRORSYMBOL) {
- $u2 = 0;
- $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
- }
- }
- $this->yyerrcnt = 3;
- $yyerrorhit = 1;
- } else {
- if ($this->yyerrcnt <= 0) {
- $this->yy_syntax_error($yymajor, $yytokenvalue);
- }
- $this->yyerrcnt = 3;
- $this->yy_destructor($yymajor, $yytokenvalue);
- if ($yyendofinput) {
- $this->yy_parse_failed();
- }
- $yymajor = self::YYNOCODE;
- }
- } else {
- $this->yy_accept();
- $yymajor = self::YYNOCODE;
- }
- } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
- }
-
- /**
- * parse optional boolean keywords
- *
- * @param string $str
- *
- * @return bool
- */
- private function parse_bool($str)
- {
- $str = strtolower($str);
- if (in_array($str, array('on', 'yes', 'true'))) {
- $res = true;
- } else {
- $res = false;
- }
- return $res;
- }
-
- /**
- * set a config variable in target array
- *
- * @param array $var
- * @param array $target_array
- */
- private function set_var(array $var, array &$target_array)
- {
- $key = $var[ 'key' ];
- $value = $var[ 'value' ];
- if ($this->configOverwrite || !isset($target_array[ 'vars' ][ $key ])) {
- $target_array[ 'vars' ][ $key ] = $value;
- } else {
- settype($target_array[ 'vars' ][ $key ], 'array');
- $target_array[ 'vars' ][ $key ][] = $value;
- }
- }
-
- /**
- * add config variable to global vars
- *
- * @param array $vars
- */
- private function add_global_vars(array $vars)
- {
- if (!isset($this->compiler->config_data[ 'vars' ])) {
- $this->compiler->config_data[ 'vars' ] = array();
- }
- foreach ($vars as $var) {
- $this->set_var($var, $this->compiler->config_data);
- }
- }
-
- /**
- * add config variable to section
- *
- * @param string $section_name
- * @param array $vars
- */
- private function add_section_vars($section_name, array $vars)
- {
- if (!isset($this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ])) {
- $this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ] = array();
- }
- foreach ($vars as $var) {
- $this->set_var($var, $this->compiler->config_data[ 'sections' ][ $section_name ]);
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
deleted file mode 100644
index 1b64185b8..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
+++ /dev/null
@@ -1,272 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Data
- * This file contains the basic classes and methods for template and variable creation
- *
- * @package Smarty
- * @subpackage Template
- * @author Uwe Tews
- */
-
-/**
- * Base class with template and variable methods
- *
- * @package Smarty
- * @subpackage Template
- *
- * @property int $scope
- * @property Smarty $smarty
- * The following methods will be dynamically loaded by the extension handler when they are called.
- * They are located in a corresponding Smarty_Internal_Method_xxxx class
- *
- * @method mixed _getConfigVariable(string $varName, bool $errorEnable = true)
- * @method mixed getConfigVariable(string $varName, bool $errorEnable = true)
- * @method mixed getConfigVars(string $varName = null, bool $searchParents = true)
- * @method mixed getGlobal(string $varName = null)
- * @method mixed getStreamVariable(string $variable)
- * @method Smarty_Internal_Data clearAssign(mixed $tpl_var)
- * @method Smarty_Internal_Data clearAllAssign()
- * @method Smarty_Internal_Data clearConfig(string $varName = null)
- * @method Smarty_Internal_Data configLoad(string $config_file, mixed $sections = null, string $scope = 'local')
- */
-abstract class Smarty_Internal_Data
-{
- /**
- * This object type (Smarty = 1, template = 2, data = 4)
- *
- * @var int
- */
- public $_objType = 4;
-
- /**
- * name of class used for templates
- *
- * @var string
- */
- public $template_class = 'Smarty_Internal_Template';
-
- /**
- * template variables
- *
- * @var Smarty_Variable[]
- */
- public $tpl_vars = array();
-
- /**
- * parent template (if any)
- *
- * @var Smarty|Smarty_Internal_Template|Smarty_Data
- */
- public $parent = null;
-
- /**
- * configuration settings
- *
- * @var string[]
- */
- public $config_vars = array();
-
- /**
- * extension handler
- *
- * @var Smarty_Internal_Extension_Handler
- */
- public $ext = null;
-
- /**
- * Smarty_Internal_Data constructor.
- *
- * Install extension handler
- */
- public function __construct()
- {
- $this->ext = new Smarty_Internal_Extension_Handler();
- $this->ext->objType = $this->_objType;
- }
-
- /**
- * assigns a Smarty variable
- *
- * @param array|string $tpl_var the template variable name(s)
- * @param mixed $value the value to assign
- * @param boolean $nocache if true any output of this variable will be not cached
- *
- * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for
- * chaining
- */
- public function assign($tpl_var, $value = null, $nocache = false)
- {
- if (is_array($tpl_var)) {
- foreach ($tpl_var as $_key => $_val) {
- $this->assign($_key, $_val, $nocache);
- }
- } else {
- if ($tpl_var !== '') {
- if ($this->_objType === 2) {
- /**
- *
- *
- * @var Smarty_Internal_Template $this
- */
- $this->_assignInScope($tpl_var, $value, $nocache);
- } else {
- $this->tpl_vars[ $tpl_var ] = new Smarty_Variable($value, $nocache);
- }
- }
- }
- return $this;
- }
-
- /**
- * appends values to template variables
- *
- * @api Smarty::append()
- * @link https://www.smarty.net/docs/en/api.append.tpl
- *
- * @param array|string $tpl_var the template variable name(s)
- * @param mixed $value the value to append
- * @param bool $merge flag if array elements shall be merged
- * @param bool $nocache if true any output of this variable will
- * be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function append($tpl_var, $value = null, $merge = false, $nocache = false)
- {
- return $this->ext->append->append($this, $tpl_var, $value, $merge, $nocache);
- }
-
- /**
- * assigns a global Smarty variable
- *
- * @param string $varName the global variable name
- * @param mixed $value the value to assign
- * @param boolean $nocache if true any output of this variable will be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function assignGlobal($varName, $value = null, $nocache = false)
- {
- return $this->ext->assignGlobal->assignGlobal($this, $varName, $value, $nocache);
- }
-
- /**
- * appends values to template variables by reference
- *
- * @param string $tpl_var the template variable name
- * @param mixed &$value the referenced value to append
- * @param boolean $merge flag if array elements shall be merged
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function appendByRef($tpl_var, &$value, $merge = false)
- {
- return $this->ext->appendByRef->appendByRef($this, $tpl_var, $value, $merge);
- }
-
- /**
- * assigns values to template variables by reference
- *
- * @param string $tpl_var the template variable name
- * @param $value
- * @param boolean $nocache if true any output of this variable will be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function assignByRef($tpl_var, &$value, $nocache = false)
- {
- return $this->ext->assignByRef->assignByRef($this, $tpl_var, $value, $nocache);
- }
-
- /**
- * Returns a single or all template variables
- *
- * @api Smarty::getTemplateVars()
- * @link https://www.smarty.net/docs/en/api.get.template.vars.tpl
- *
- * @param string $varName variable name or null
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
- * @param bool $searchParents include parent templates?
- *
- * @return mixed variable value or or array of variables
- */
- public function getTemplateVars($varName = null, Smarty_Internal_Data $_ptr = null, $searchParents = true)
- {
- return $this->ext->getTemplateVars->getTemplateVars($this, $varName, $_ptr, $searchParents);
- }
-
- /**
- * Follow the parent chain an merge template and config variables
- *
- * @param \Smarty_Internal_Data|null $data
- */
- public function _mergeVars(Smarty_Internal_Data $data = null)
- {
- if (isset($data)) {
- if (!empty($this->tpl_vars)) {
- $data->tpl_vars = array_merge($this->tpl_vars, $data->tpl_vars);
- }
- if (!empty($this->config_vars)) {
- $data->config_vars = array_merge($this->config_vars, $data->config_vars);
- }
- } else {
- $data = $this;
- }
- if (isset($this->parent)) {
- $this->parent->_mergeVars($data);
- }
- }
-
- /**
- * Return true if this instance is a Data obj
- *
- * @return bool
- */
- public function _isDataObj()
- {
- return $this->_objType === 4;
- }
-
- /**
- * Return true if this instance is a template obj
- *
- * @return bool
- */
- public function _isTplObj()
- {
- return $this->_objType === 2;
- }
-
- /**
- * Return true if this instance is a Smarty obj
- *
- * @return bool
- */
- public function _isSmartyObj()
- {
- return $this->_objType === 1;
- }
-
- /**
- * Get Smarty object
- *
- * @return Smarty
- */
- public function _getSmartyObj()
- {
- return $this->smarty;
- }
-
- /**
- * Handle unknown class methods
- *
- * @param string $name unknown method-name
- * @param array $args argument array
- *
- * @return mixed
- */
- public function __call($name, $args)
- {
- return $this->ext->_callExternalMethod($this, $name, $args);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php
deleted file mode 100644
index da67904c5..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php
+++ /dev/null
@@ -1,428 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Debug
- * Class to collect data for the Smarty Debugging Console
- *
- * @package Smarty
- * @subpackage Debug
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Debug Class
- *
- * @package Smarty
- * @subpackage Debug
- */
-class Smarty_Internal_Debug extends Smarty_Internal_Data
-{
- /**
- * template data
- *
- * @var array
- */
- public $template_data = array();
-
- /**
- * List of uid's which shall be ignored
- *
- * @var array
- */
- public $ignore_uid = array();
-
- /**
- * Index of display() and fetch() calls
- *
- * @var int
- */
- public $index = 0;
-
- /**
- * Counter for window offset
- *
- * @var int
- */
- public $offset = 0;
-
- /**
- * Start logging template
- *
- * @param \Smarty_Internal_Template $template template
- * @param null $mode true: display false: fetch null: subtemplate
- */
- public function start_template(Smarty_Internal_Template $template, $mode = null)
- {
- if (isset($mode) && !$template->_isSubTpl()) {
- $this->index++;
- $this->offset++;
- $this->template_data[ $this->index ] = null;
- }
- $key = $this->get_key($template);
- $this->template_data[ $this->index ][ $key ][ 'start_template_time' ] = microtime(true);
- }
-
- /**
- * End logging of cache time
- *
- * @param \Smarty_Internal_Template $template cached template
- */
- public function end_template(Smarty_Internal_Template $template)
- {
- $key = $this->get_key($template);
- $this->template_data[ $this->index ][ $key ][ 'total_time' ] +=
- microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_template_time' ];
- //$this->template_data[$this->index][$key]['properties'] = $template->properties;
- }
-
- /**
- * Start logging of compile time
- *
- * @param \Smarty_Internal_Template $template
- */
- public function start_compile(Smarty_Internal_Template $template)
- {
- static $_is_stringy = array('string' => true, 'eval' => true);
- if (!empty($template->compiler->trace_uid)) {
- $key = $template->compiler->trace_uid;
- if (!isset($this->template_data[ $this->index ][ $key ])) {
- if (isset($_is_stringy[ $template->source->type ])) {
- $this->template_data[ $this->index ][ $key ][ 'name' ] =
- '\'' . substr($template->source->name, 0, 25) . '...\'';
- } else {
- $this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath;
- }
- $this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0;
- $this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0;
- $this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0;
- }
- } else {
- if (isset($this->ignore_uid[ $template->source->uid ])) {
- return;
- }
- $key = $this->get_key($template);
- }
- $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
- }
-
- /**
- * End logging of compile time
- *
- * @param \Smarty_Internal_Template $template
- */
- public function end_compile(Smarty_Internal_Template $template)
- {
- if (!empty($template->compiler->trace_uid)) {
- $key = $template->compiler->trace_uid;
- } else {
- if (isset($this->ignore_uid[ $template->source->uid ])) {
- return;
- }
- $key = $this->get_key($template);
- }
- $this->template_data[ $this->index ][ $key ][ 'compile_time' ] +=
- microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
- }
-
- /**
- * Start logging of render time
- *
- * @param \Smarty_Internal_Template $template
- */
- public function start_render(Smarty_Internal_Template $template)
- {
- $key = $this->get_key($template);
- $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
- }
-
- /**
- * End logging of compile time
- *
- * @param \Smarty_Internal_Template $template
- */
- public function end_render(Smarty_Internal_Template $template)
- {
- $key = $this->get_key($template);
- $this->template_data[ $this->index ][ $key ][ 'render_time' ] +=
- microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
- }
-
- /**
- * Start logging of cache time
- *
- * @param \Smarty_Internal_Template $template cached template
- */
- public function start_cache(Smarty_Internal_Template $template)
- {
- $key = $this->get_key($template);
- $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
- }
-
- /**
- * End logging of cache time
- *
- * @param \Smarty_Internal_Template $template cached template
- */
- public function end_cache(Smarty_Internal_Template $template)
- {
- $key = $this->get_key($template);
- $this->template_data[ $this->index ][ $key ][ 'cache_time' ] +=
- microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
- }
-
- /**
- * Register template object
- *
- * @param \Smarty_Internal_Template $template cached template
- */
- public function register_template(Smarty_Internal_Template $template)
- {
- }
-
- /**
- * Register data object
- *
- * @param \Smarty_Data $data data object
- */
- public static function register_data(Smarty_Data $data)
- {
- }
-
- /**
- * Opens a window for the Smarty Debugging Console and display the data
- *
- * @param Smarty_Internal_Template|Smarty $obj object to debug
- * @param bool $full
- *
- * @throws \Exception
- * @throws \SmartyException
- */
- public function display_debug($obj, $full = false)
- {
- if (!$full) {
- $this->offset++;
- $savedIndex = $this->index;
- $this->index = 9999;
- }
- $smarty = $obj->_getSmartyObj();
- // create fresh instance of smarty for displaying the debug console
- // to avoid problems if the application did overload the Smarty class
- $debObj = new Smarty();
- // copy the working dirs from application
- $debObj->setCompileDir($smarty->getCompileDir());
- // init properties by hand as user may have edited the original Smarty class
- $debObj->setPluginsDir(is_dir(__DIR__ . '/../plugins') ? __DIR__ .
- '/../plugins' : $smarty->getPluginsDir());
- $debObj->force_compile = false;
- $debObj->compile_check = Smarty::COMPILECHECK_ON;
- $debObj->left_delimiter = '{';
- $debObj->right_delimiter = '}';
- $debObj->security_policy = null;
- $debObj->debugging = false;
- $debObj->debugging_ctrl = 'NONE';
- $debObj->error_reporting = E_ALL & ~E_NOTICE;
- $debObj->debug_tpl =
- isset($smarty->debug_tpl) ? $smarty->debug_tpl : 'file:' . __DIR__ . '/../debug.tpl';
- $debObj->registered_plugins = array();
- $debObj->registered_resources = array();
- $debObj->registered_filters = array();
- $debObj->autoload_filters = array();
- $debObj->default_modifiers = array();
- $debObj->escape_html = true;
- $debObj->caching = Smarty::CACHING_OFF;
- $debObj->compile_id = null;
- $debObj->cache_id = null;
- // prepare information of assigned variables
- $ptr = $this->get_debug_vars($obj);
- $_assigned_vars = $ptr->tpl_vars;
- ksort($_assigned_vars);
- $_config_vars = $ptr->config_vars;
- ksort($_config_vars);
- $debugging = $smarty->debugging;
- $templateName = $obj->source->type . ':' . $obj->source->name;
- $displayMode = $debugging === 2 || !$full;
- $offset = $this->offset * 50;
- $_template = new Smarty_Internal_Template($debObj->debug_tpl, $debObj);
- if ($obj->_isTplObj()) {
- $_template->assign('template_name', $templateName);
- }
- if ($obj->_objType === 1 || $full) {
- $_template->assign('template_data', $this->template_data[ $this->index ]);
- } else {
- $_template->assign('template_data', null);
- }
- $_template->assign('assigned_vars', $_assigned_vars);
- $_template->assign('config_vars', $_config_vars);
- $_template->assign('execution_time', microtime(true) - $smarty->start_time);
- $_template->assign('targetWindow', $displayMode ? md5("$offset$templateName") : '__Smarty__');
- $_template->assign('offset', $offset);
- echo $_template->fetch();
- if (isset($full)) {
- $this->index--;
- }
- if (!$full) {
- $this->index = $savedIndex;
- }
- }
-
- /**
- * Recursively gets variables from all template/data scopes
- *
- * @param Smarty_Internal_Template|Smarty_Data $obj object to debug
- *
- * @return StdClass
- */
- public function get_debug_vars($obj)
- {
- $config_vars = array();
- foreach ($obj->config_vars as $key => $var) {
- $config_vars[ $key ][ 'value' ] = $var;
- if ($obj->_isTplObj()) {
- $config_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name;
- } elseif ($obj->_isDataObj()) {
- $tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName;
- } else {
- $config_vars[ $key ][ 'scope' ] = 'Smarty object';
- }
- }
- $tpl_vars = array();
- foreach ($obj->tpl_vars as $key => $var) {
- foreach ($var as $varkey => $varvalue) {
- if ($varkey === 'value') {
- $tpl_vars[ $key ][ $varkey ] = $varvalue;
- } else {
- if ($varkey === 'nocache') {
- if ($varvalue === true) {
- $tpl_vars[ $key ][ $varkey ] = $varvalue;
- }
- } else {
- if ($varkey !== 'scope' || $varvalue !== 0) {
- $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue;
- }
- }
- }
- }
- if ($obj->_isTplObj()) {
- $tpl_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name;
- } elseif ($obj->_isDataObj()) {
- $tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName;
- } else {
- $tpl_vars[ $key ][ 'scope' ] = 'Smarty object';
- }
- }
- if (isset($obj->parent)) {
- $parent = $this->get_debug_vars($obj->parent);
- foreach ($parent->tpl_vars as $name => $pvar) {
- if (isset($tpl_vars[ $name ]) && $tpl_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
- $tpl_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
- }
- }
- $tpl_vars = array_merge($parent->tpl_vars, $tpl_vars);
- foreach ($parent->config_vars as $name => $pvar) {
- if (isset($config_vars[ $name ]) && $config_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
- $config_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
- }
- }
- $config_vars = array_merge($parent->config_vars, $config_vars);
- } else {
- foreach (Smarty::$global_tpl_vars as $key => $var) {
- if (!array_key_exists($key, $tpl_vars)) {
- foreach ($var as $varkey => $varvalue) {
- if ($varkey === 'value') {
- $tpl_vars[ $key ][ $varkey ] = $varvalue;
- } else {
- if ($varkey === 'nocache') {
- if ($varvalue === true) {
- $tpl_vars[ $key ][ $varkey ] = $varvalue;
- }
- } else {
- if ($varkey !== 'scope' || $varvalue !== 0) {
- $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue;
- }
- }
- }
- }
- $tpl_vars[ $key ][ 'scope' ] = 'Global';
- }
- }
- }
- return (object)array('tpl_vars' => $tpl_vars, 'config_vars' => $config_vars);
- }
-
- /**
- * Return key into $template_data for template
- *
- * @param \Smarty_Internal_Template $template template object
- *
- * @return string key into $template_data
- */
- private function get_key(Smarty_Internal_Template $template)
- {
- static $_is_stringy = array('string' => true, 'eval' => true);
- // calculate Uid if not already done
- if ($template->source->uid === '') {
- $template->source->filepath;
- }
- $key = $template->source->uid;
- if (isset($this->template_data[ $this->index ][ $key ])) {
- return $key;
- } else {
- if (isset($_is_stringy[ $template->source->type ])) {
- $this->template_data[ $this->index ][ $key ][ 'name' ] =
- '\'' . substr($template->source->name, 0, 25) . '...\'';
- } else {
- $this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath;
- }
- $this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0;
- $this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0;
- $this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0;
- $this->template_data[ $this->index ][ $key ][ 'total_time' ] = 0;
- return $key;
- }
- }
-
- /**
- * Ignore template
- *
- * @param \Smarty_Internal_Template $template
- */
- public function ignore(Smarty_Internal_Template $template)
- {
- // calculate Uid if not already done
- if ($template->source->uid === '') {
- $template->source->filepath;
- }
- $this->ignore_uid[ $template->source->uid ] = true;
- }
-
- /**
- * handle 'URL' debugging mode
- *
- * @param Smarty $smarty
- */
- public function debugUrl(Smarty $smarty)
- {
- if (isset($_SERVER[ 'QUERY_STRING' ])) {
- $_query_string = $_SERVER[ 'QUERY_STRING' ];
- } else {
- $_query_string = '';
- }
- if (false !== strpos($_query_string, $smarty->smarty_debug_id)) {
- if (false !== strpos($_query_string, $smarty->smarty_debug_id . '=on')) {
- // enable debugging for this browser session
- setcookie('SMARTY_DEBUG', true);
- $smarty->debugging = true;
- } elseif (false !== strpos($_query_string, $smarty->smarty_debug_id . '=off')) {
- // disable debugging for this browser session
- setcookie('SMARTY_DEBUG', false);
- $smarty->debugging = false;
- } else {
- // enable debugging for this page
- $smarty->debugging = true;
- }
- } else {
- if (isset($_COOKIE[ 'SMARTY_DEBUG' ])) {
- $smarty->debugging = true;
- }
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php
deleted file mode 100644
index 4ddcfcd11..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-
-/**
- * Smarty error handler to fix new error levels in PHP8 for backwards compatibility
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Simon Wisselink
- *
- */
-class Smarty_Internal_ErrorHandler
-{
-
- /**
- * Allows {$foo} where foo is unset.
- * @var bool
- */
- public $allowUndefinedVars = true;
-
- /**
- * Allows {$foo->propName} where propName is undefined.
- * @var bool
- */
- public $allowUndefinedProperties = true;
-
- /**
- * Allows {$foo.bar} where bar is unset and {$foo.bar1.bar2} where either bar1 or bar2 is unset.
- * @var bool
- */
- public $allowUndefinedArrayKeys = true;
-
- /**
- * Allows {$foo->bar} where bar is not an object (e.g. null or false).
- * @var bool
- */
- public $allowDereferencingNonObjects = true;
-
- private $previousErrorHandler = null;
-
- /**
- * Enable error handler to intercept errors
- */
- public function activate() {
- /*
- Error muting is done because some people implemented custom error_handlers using
- https://php.net/set_error_handler and for some reason did not understand the following paragraph:
-
- It is important to remember that the standard PHP error handler is completely bypassed for the
- error types specified by error_types unless the callback function returns FALSE.
- error_reporting() settings will have no effect and your error handler will be called regardless -
- however you are still able to read the current value of error_reporting and act appropriately.
- Of particular note is that this value will be 0 if the statement that caused the error was
- prepended by the @ error-control operator.
- */
- $this->previousErrorHandler = set_error_handler([$this, 'handleError']);
- }
-
- /**
- * Disable error handler
- */
- public function deactivate() {
- restore_error_handler();
- $this->previousErrorHandler = null;
- }
-
- /**
- * Error Handler to mute expected messages
- *
- * @link https://php.net/set_error_handler
- *
- * @param integer $errno Error level
- * @param $errstr
- * @param $errfile
- * @param $errline
- * @param $errcontext
- *
- * @return bool
- */
- public function handleError($errno, $errstr, $errfile, $errline, $errcontext = [])
- {
-
- if ($this->allowUndefinedVars && preg_match(
- '/^(Attempt to read property "value" on null|Trying to get property (\'value\' )?of non-object)/',
- $errstr
- )) {
- return; // suppresses this error
- }
-
- if ($this->allowUndefinedProperties && preg_match(
- '/^(Undefined property)/',
- $errstr
- )) {
- return; // suppresses this error
- }
-
- if ($this->allowUndefinedArrayKeys && preg_match(
- '/^(Undefined index|Undefined array key|Trying to access array offset on)/',
- $errstr
- )) {
- return; // suppresses this error
- }
-
- if ($this->allowDereferencingNonObjects && preg_match(
- '/^Attempt to read property ".+?" on/',
- $errstr
- )) {
- return; // suppresses this error
- }
-
- // pass all other errors through to the previous error handler or to the default PHP error handler
- return $this->previousErrorHandler ?
- call_user_func($this->previousErrorHandler, $errno, $errstr, $errfile, $errline, $errcontext) : false;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php
deleted file mode 100644
index 3ef040ab1..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php
+++ /dev/null
@@ -1,197 +0,0 @@
-<?php
-
-/**
- * Smarty Extension handler
- *
- * Load extensions dynamically
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- * Runtime extensions
- * @property Smarty_Internal_Runtime_CacheModify $_cacheModify
- * @property Smarty_Internal_Runtime_CacheResourceFile $_cacheResourceFile
- * @property Smarty_Internal_Runtime_Capture $_capture
- * @property Smarty_Internal_Runtime_CodeFrame $_codeFrame
- * @property Smarty_Internal_Runtime_FilterHandler $_filterHandler
- * @property Smarty_Internal_Runtime_Foreach $_foreach
- * @property Smarty_Internal_Runtime_GetIncludePath $_getIncludePath
- * @property Smarty_Internal_Runtime_Make_Nocache $_make_nocache
- * @property Smarty_Internal_Runtime_UpdateCache $_updateCache
- * @property Smarty_Internal_Runtime_UpdateScope $_updateScope
- * @property Smarty_Internal_Runtime_TplFunction $_tplFunction
- * @property Smarty_Internal_Runtime_WriteFile $_writeFile
- *
- * Method extensions
- * @property Smarty_Internal_Method_GetTemplateVars $getTemplateVars
- * @property Smarty_Internal_Method_Append $append
- * @property Smarty_Internal_Method_AppendByRef $appendByRef
- * @property Smarty_Internal_Method_AssignGlobal $assignGlobal
- * @property Smarty_Internal_Method_AssignByRef $assignByRef
- * @property Smarty_Internal_Method_LoadFilter $loadFilter
- * @property Smarty_Internal_Method_LoadPlugin $loadPlugin
- * @property Smarty_Internal_Method_RegisterFilter $registerFilter
- * @property Smarty_Internal_Method_RegisterObject $registerObject
- * @property Smarty_Internal_Method_RegisterPlugin $registerPlugin
- * @property mixed|\Smarty_Template_Cached configLoad
- */
-#[\AllowDynamicProperties]
-class Smarty_Internal_Extension_Handler
-{
- public $objType = null;
-
- /**
- * Cache for property information from generic getter/setter
- * Preloaded with names which should not use with generic getter/setter
- *
- * @var array
- */
- private $_property_info = array(
- 'AutoloadFilters' => 0, 'DefaultModifiers' => 0, 'ConfigVars' => 0,
- 'DebugTemplate' => 0, 'RegisteredObject' => 0, 'StreamVariable' => 0,
- 'TemplateVars' => 0, 'Literals' => 'Literals',
- );//
-
- private $resolvedProperties = array();
-
- /**
- * Call external Method
- *
- * @param \Smarty_Internal_Data $data
- * @param string $name external method names
- * @param array $args argument array
- *
- * @return mixed
- */
- public function _callExternalMethod(Smarty_Internal_Data $data, $name, $args)
- {
- /* @var Smarty $data ->smarty */
- $smarty = isset($data->smarty) ? $data->smarty : $data;
- if (!isset($smarty->ext->$name)) {
- if (preg_match('/^((set|get)|(.*?))([A-Z].*)$/', $name, $match)) {
- $basename = $this->upperCase($match[ 4 ]);
- if (!isset($smarty->ext->$basename) && isset($this->_property_info[ $basename ])
- && is_string($this->_property_info[ $basename ])
- ) {
- $class = 'Smarty_Internal_Method_' . $this->_property_info[ $basename ];
- if (class_exists($class)) {
- $classObj = new $class();
- $methodes = get_class_methods($classObj);
- foreach ($methodes as $method) {
- $smarty->ext->$method = $classObj;
- }
- }
- }
- if (!empty($match[ 2 ]) && !isset($smarty->ext->$name)) {
- $class = 'Smarty_Internal_Method_' . $this->upperCase($name);
- if (!class_exists($class)) {
- $objType = $data->_objType;
- $propertyType = false;
- if (!isset($this->resolvedProperties[ $match[ 0 ] ][ $objType ])) {
- $property = $this->resolvedProperties['property'][$basename] ??
- $this->resolvedProperties['property'][$basename] = smarty_strtolower_ascii(
- join(
- '_',
- preg_split(
- '/([A-Z][^A-Z]*)/',
- $basename,
- -1,
- PREG_SPLIT_NO_EMPTY |
- PREG_SPLIT_DELIM_CAPTURE
- )
- )
- );
- if ($property !== false) {
- if (property_exists($data, $property)) {
- $propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ] = 1;
- } elseif (property_exists($smarty, $property)) {
- $propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ] = 2;
- } else {
- $this->resolvedProperties[ 'property' ][ $basename ] = $property = false;
- }
- }
- } else {
- $propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ];
- $property = $this->resolvedProperties[ 'property' ][ $basename ];
- }
- if ($propertyType) {
- $obj = $propertyType === 1 ? $data : $smarty;
- if ($match[ 2 ] === 'get') {
- return $obj->$property;
- } elseif ($match[ 2 ] === 'set') {
- return $obj->$property = $args[ 0 ];
- }
- }
- }
- }
- }
- }
- $callback = array($smarty->ext->$name, $name);
- array_unshift($args, $data);
- if (isset($callback) && $callback[ 0 ]->objMap | $data->_objType) {
- return call_user_func_array($callback, $args);
- }
- return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), $args);
- }
-
- /**
- * Make first character of name parts upper case
- *
- * @param string $name
- *
- * @return string
- */
- public function upperCase($name)
- {
- $_name = explode('_', $name);
- $_name = array_map('smarty_ucfirst_ascii', $_name);
- return implode('_', $_name);
- }
-
- /**
- * get extension object
- *
- * @param string $property_name property name
- *
- * @return mixed|Smarty_Template_Cached
- */
- public function __get($property_name)
- {
- // object properties of runtime template extensions will start with '_'
- if ($property_name[ 0 ] === '_') {
- $class = 'Smarty_Internal_Runtime' . $this->upperCase($property_name);
- } else {
- $class = 'Smarty_Internal_Method_' . $this->upperCase($property_name);
- }
- if (!class_exists($class)) {
- return $this->$property_name = new Smarty_Internal_Undefined($class);
- }
- return $this->$property_name = new $class();
- }
-
- /**
- * set extension property
- *
- * @param string $property_name property name
- * @param mixed $value value
- *
- */
- public function __set($property_name, $value)
- {
- $this->$property_name = $value;
- }
-
- /**
- * Call error handler for undefined method
- *
- * @param string $name unknown method-name
- * @param array $args argument array
- *
- * @return mixed
- */
- public function __call($name, $args)
- {
- return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), array($this));
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
deleted file mode 100644
index a05f55a82..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/**
- * Smarty Method AddAutoloadFilters
- *
- * Smarty::addAutoloadFilters() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_AddAutoloadFilters extends Smarty_Internal_Method_SetAutoloadFilters
-{
- /**
- * Add autoload filters
- *
- * @api Smarty::setAutoloadFilters()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param array $filters filters to load automatically
- * @param string $type "pre", "output", … specify
- * the filter type to set.
- * Defaults to none treating
- * $filters' keys as the
- * appropriate types
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function addAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null)
- {
- $smarty = $obj->_getSmartyObj();
- if ($type !== null) {
- $this->_checkFilterType($type);
- if (!empty($smarty->autoload_filters[ $type ])) {
- $smarty->autoload_filters[ $type ] = array_merge($smarty->autoload_filters[ $type ], (array)$filters);
- } else {
- $smarty->autoload_filters[ $type ] = (array)$filters;
- }
- } else {
- foreach ((array)$filters as $type => $value) {
- $this->_checkFilterType($type);
- if (!empty($smarty->autoload_filters[ $type ])) {
- $smarty->autoload_filters[ $type ] =
- array_merge($smarty->autoload_filters[ $type ], (array)$value);
- } else {
- $smarty->autoload_filters[ $type ] = (array)$value;
- }
- }
- }
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
deleted file mode 100644
index c3feb3d8b..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * Smarty Method AddDefaultModifiers
- *
- * Smarty::addDefaultModifiers() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_AddDefaultModifiers
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Add default modifiers
- *
- * @api Smarty::addDefaultModifiers()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param array|string $modifiers modifier or list of modifiers
- * to add
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function addDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers)
- {
- $smarty = $obj->_getSmartyObj();
- if (is_array($modifiers)) {
- $smarty->default_modifiers = array_merge($smarty->default_modifiers, $modifiers);
- } else {
- $smarty->default_modifiers[] = $modifiers;
- }
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php
deleted file mode 100644
index e207734e8..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/**
- * Smarty Method Append
- *
- * Smarty::append() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_Append
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * appends values to template variables
- *
- * @api Smarty::append()
- * @link https://www.smarty.net/docs/en/api.append.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param array|string $tpl_var the template variable name(s)
- * @param mixed $value the value to append
- * @param bool $merge flag if array elements shall be merged
- * @param bool $nocache if true any output of this variable will
- * be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function append(Smarty_Internal_Data $data, $tpl_var, $value = null, $merge = false, $nocache = false)
- {
- if (is_array($tpl_var)) {
- // $tpl_var is an array, ignore $value
- foreach ($tpl_var as $_key => $_val) {
- if ($_key !== '') {
- $this->append($data, $_key, $_val, $merge, $nocache);
- }
- }
- } else {
- if ($tpl_var !== '' && isset($value)) {
- if (!isset($data->tpl_vars[ $tpl_var ])) {
- $tpl_var_inst = $data->ext->getTemplateVars->_getVariable($data, $tpl_var, null, true, false);
- if ($tpl_var_inst instanceof Smarty_Undefined_Variable) {
- $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache);
- } else {
- $data->tpl_vars[ $tpl_var ] = clone $tpl_var_inst;
- }
- }
- if (!(is_array($data->tpl_vars[ $tpl_var ]->value)
- || $data->tpl_vars[ $tpl_var ]->value instanceof ArrayAccess)
- ) {
- settype($data->tpl_vars[ $tpl_var ]->value, 'array');
- }
- if ($merge && is_array($value)) {
- foreach ($value as $_mkey => $_mval) {
- $data->tpl_vars[ $tpl_var ]->value[ $_mkey ] = $_mval;
- }
- } else {
- $data->tpl_vars[ $tpl_var ]->value[] = $value;
- }
- }
- if ($data->_isTplObj() && $data->scope) {
- $data->ext->_updateScope->_updateScope($data, $tpl_var);
- }
- }
- return $data;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
deleted file mode 100644
index b5be69b54..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/**
- * Smarty Method AppendByRef
- *
- * Smarty::appendByRef() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_AppendByRef
-{
- /**
- * appends values to template variables by reference
- *
- * @api Smarty::appendByRef()
- * @link https://www.smarty.net/docs/en/api.append.by.ref.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $tpl_var the template variable name
- * @param mixed &$value the referenced value to append
- * @param bool $merge flag if array elements shall be merged
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public static function appendByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $merge = false)
- {
- if ($tpl_var !== '' && isset($value)) {
- if (!isset($data->tpl_vars[ $tpl_var ])) {
- $data->tpl_vars[ $tpl_var ] = new Smarty_Variable();
- }
- if (!is_array($data->tpl_vars[ $tpl_var ]->value)) {
- settype($data->tpl_vars[ $tpl_var ]->value, 'array');
- }
- if ($merge && is_array($value)) {
- foreach ($value as $_key => $_val) {
- $data->tpl_vars[ $tpl_var ]->value[ $_key ] = &$value[ $_key ];
- }
- } else {
- $data->tpl_vars[ $tpl_var ]->value[] = &$value;
- }
- if ($data->_isTplObj() && $data->scope) {
- $data->ext->_updateScope->_updateScope($data, $tpl_var);
- }
- }
- return $data;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
deleted file mode 100644
index fa705bb80..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/**
- * Smarty Method AssignByRef
- *
- * Smarty::assignByRef() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_AssignByRef
-{
- /**
- * assigns values to template variables by reference
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $tpl_var the template variable name
- * @param $value
- * @param boolean $nocache if true any output of this variable will
- * be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function assignByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $nocache)
- {
- if ($tpl_var !== '') {
- $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache);
- $data->tpl_vars[ $tpl_var ]->value = &$value;
- if ($data->_isTplObj() && $data->scope) {
- $data->ext->_updateScope->_updateScope($data, $tpl_var);
- }
- }
- return $data;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
deleted file mode 100644
index 08cfa4693..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * Smarty Method AssignGlobal
- *
- * Smarty::assignGlobal() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_AssignGlobal
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * assigns a global Smarty variable
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varName the global variable name
- * @param mixed $value the value to assign
- * @param boolean $nocache if true any output of this variable will
- * be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function assignGlobal(Smarty_Internal_Data $data, $varName, $value = null, $nocache = false)
- {
- if ($varName !== '') {
- Smarty::$global_tpl_vars[ $varName ] = new Smarty_Variable($value, $nocache);
- $ptr = $data;
- while ($ptr->_isTplObj()) {
- $ptr->tpl_vars[ $varName ] = clone Smarty::$global_tpl_vars[ $varName ];
- $ptr = $ptr->parent;
- }
- }
- return $data;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php
deleted file mode 100644
index 6fb0c8f3d..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/**
- * Smarty Method ClearAllAssign
- *
- * Smarty::clearAllAssign() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ClearAllAssign
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * clear all the assigned template variables.
- *
- * @api Smarty::clearAllAssign()
- * @link https://www.smarty.net/docs/en/api.clear.all.assign.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function clearAllAssign(Smarty_Internal_Data $data)
- {
- $data->tpl_vars = array();
- return $data;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
deleted file mode 100644
index b74d30580..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/**
- * Smarty Method ClearAllCache
- *
- * Smarty::clearAllCache() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ClearAllCache
-{
- /**
- * Valid for Smarty object
- *
- * @var int
- */
- public $objMap = 1;
-
- /**
- * Empty cache folder
- *
- * @api Smarty::clearAllCache()
- * @link https://www.smarty.net/docs/en/api.clear.all.cache.tpl
- *
- * @param \Smarty $smarty
- * @param integer $exp_time expiration time
- * @param string $type resource type
- *
- * @return int number of cache files deleted
- * @throws \SmartyException
- */
- public function clearAllCache(Smarty $smarty, $exp_time = null, $type = null)
- {
- $smarty->_clearTemplateCache();
- // load cache resource and call clearAll
- $_cache_resource = Smarty_CacheResource::load($smarty, $type);
- return $_cache_resource->clearAll($smarty, $exp_time);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php
deleted file mode 100644
index 12b755c06..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/**
- * Smarty Method ClearAssign
- *
- * Smarty::clearAssign() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ClearAssign
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * clear the given assigned template variable(s).
- *
- * @api Smarty::clearAssign()
- * @link https://www.smarty.net/docs/en/api.clear.assign.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string|array $tpl_var the template variable(s) to clear
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function clearAssign(Smarty_Internal_Data $data, $tpl_var)
- {
- if (is_array($tpl_var)) {
- foreach ($tpl_var as $curr_var) {
- unset($data->tpl_vars[ $curr_var ]);
- }
- } else {
- unset($data->tpl_vars[ $tpl_var ]);
- }
- return $data;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php
deleted file mode 100644
index df766eee8..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/**
- * Smarty Method ClearCache
- *
- * Smarty::clearCache() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ClearCache
-{
- /**
- * Valid for Smarty object
- *
- * @var int
- */
- public $objMap = 1;
-
- /**
- * Empty cache for a specific template
- *
- * @api Smarty::clearCache()
- * @link https://www.smarty.net/docs/en/api.clear.cache.tpl
- *
- * @param \Smarty $smarty
- * @param string $template_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time
- * @param string $type resource type
- *
- * @return int number of cache files deleted
- * @throws \SmartyException
- */
- public function clearCache(
- Smarty $smarty,
- $template_name,
- $cache_id = null,
- $compile_id = null,
- $exp_time = null,
- $type = null
- ) {
- $smarty->_clearTemplateCache();
- // load cache resource and call clear
- $_cache_resource = Smarty_CacheResource::load($smarty, $type);
- return $_cache_resource->clear($smarty, $template_name, $cache_id, $compile_id, $exp_time);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
deleted file mode 100644
index db0a49b00..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-
-/**
- * Smarty Method ClearCompiledTemplate
- *
- * Smarty::clearCompiledTemplate() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ClearCompiledTemplate
-{
- /**
- * Valid for Smarty object
- *
- * @var int
- */
- public $objMap = 1;
-
- /**
- * Delete compiled template file
- *
- * @api Smarty::clearCompiledTemplate()
- * @link https://www.smarty.net/docs/en/api.clear.compiled.template.tpl
- *
- * @param \Smarty $smarty
- * @param string $resource_name template name
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time
- *
- * @return int number of template files deleted
- * @throws \SmartyException
- */
- public function clearCompiledTemplate(Smarty $smarty, $resource_name = null, $compile_id = null, $exp_time = null)
- {
- // clear template objects cache
- $smarty->_clearTemplateCache();
- $_compile_dir = $smarty->getCompileDir();
- if ($_compile_dir === '/') { //We should never want to delete this!
- return 0;
- }
- $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
- $_dir_sep = $smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^';
- if (isset($resource_name)) {
- $_save_stat = $smarty->caching;
- $smarty->caching = Smarty::CACHING_OFF;
- /* @var Smarty_Internal_Template $tpl */
- $tpl = $smarty->createTemplate($resource_name);
- $smarty->caching = $_save_stat;
- if (!$tpl->source->handler->uncompiled && !$tpl->source->handler->recompiled && $tpl->source->exists) {
- $_resource_part_1 = basename(str_replace('^', DIRECTORY_SEPARATOR, $tpl->compiled->filepath));
- $_resource_part_1_length = strlen($_resource_part_1);
- } else {
- return 0;
- }
- $_resource_part_2 = str_replace('.php', '.cache.php', $_resource_part_1);
- $_resource_part_2_length = strlen($_resource_part_2);
- }
- $_dir = $_compile_dir;
- if ($smarty->use_sub_dirs && isset($_compile_id)) {
- $_dir .= $_compile_id . $_dir_sep;
- }
- if (isset($_compile_id)) {
- $_compile_id_part = $_compile_dir . $_compile_id . $_dir_sep;
- $_compile_id_part_length = strlen($_compile_id_part);
- }
- $_count = 0;
- try {
- $_compileDirs = new RecursiveDirectoryIterator($_dir);
- // NOTE: UnexpectedValueException thrown for PHP >= 5.3
- } catch (Exception $e) {
- return 0;
- }
- $_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST);
- foreach ($_compile as $_file) {
- if (substr(basename($_file->getPathname()), 0, 1) === '.') {
- continue;
- }
- $_filepath = (string)$_file;
- if ($_file->isDir()) {
- if (!$_compile->isDot()) {
- // delete folder if empty
- @rmdir($_file->getPathname());
- }
- } else {
- // delete only php files
- if (substr($_filepath, -4) !== '.php') {
- continue;
- }
- $unlink = false;
- if ((!isset($_compile_id) ||
- (isset($_filepath[ $_compile_id_part_length ]) &&
- $a = !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length)))
- && (!isset($resource_name) || (isset($_filepath[ $_resource_part_1_length ])
- && substr_compare(
- $_filepath,
- $_resource_part_1,
- -$_resource_part_1_length,
- $_resource_part_1_length
- ) === 0) || (isset($_filepath[ $_resource_part_2_length ])
- && substr_compare(
- $_filepath,
- $_resource_part_2,
- -$_resource_part_2_length,
- $_resource_part_2_length
- ) === 0))
- ) {
- if (isset($exp_time)) {
- if (is_file($_filepath) && time() - filemtime($_filepath) >= $exp_time) {
- $unlink = true;
- }
- } else {
- $unlink = true;
- }
- }
- if ($unlink && is_file($_filepath) && @unlink($_filepath)) {
- $_count++;
- if (function_exists('opcache_invalidate')
- && (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api')) < 1)
- ) {
- opcache_invalidate($_filepath, true);
- } elseif (function_exists('apc_delete_file')) {
- apc_delete_file($_filepath);
- }
- }
- }
- }
- return $_count;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
deleted file mode 100644
index d1b730322..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/**
- * Smarty Method ClearConfig
- *
- * Smarty::clearConfig() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ClearConfig
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * clear a single or all config variables
- *
- * @api Smarty::clearConfig()
- * @link https://www.smarty.net/docs/en/api.clear.config.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string|null $name variable name or null
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function clearConfig(Smarty_Internal_Data $data, $name = null)
- {
- if (isset($name)) {
- unset($data->config_vars[ $name ]);
- } else {
- $data->config_vars = array();
- }
- return $data;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
deleted file mode 100644
index 3934ca042..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/**
- * Smarty Method CompileAllConfig
- *
- * Smarty::compileAllConfig() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_CompileAllConfig extends Smarty_Internal_Method_CompileAllTemplates
-{
- /**
- * Compile all config files
- *
- * @api Smarty::compileAllConfig()
- *
- * @param \Smarty $smarty passed smarty object
- * @param string $extension file extension
- * @param bool $force_compile force all to recompile
- * @param int $time_limit
- * @param int $max_errors
- *
- * @return int number of template files recompiled
- */
- public function compileAllConfig(
- Smarty $smarty,
- $extension = '.conf',
- $force_compile = false,
- $time_limit = 0,
- $max_errors = null
- ) {
- return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors, true);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
deleted file mode 100644
index 5c046da40..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-
-/**
- * Smarty Method CompileAllTemplates
- *
- * Smarty::compileAllTemplates() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_CompileAllTemplates
-{
- /**
- * Valid for Smarty object
- *
- * @var int
- */
- public $objMap = 1;
-
- /**
- * Compile all template files
- *
- * @api Smarty::compileAllTemplates()
- *
- * @param \Smarty $smarty passed smarty object
- * @param string $extension file extension
- * @param bool $force_compile force all to recompile
- * @param int $time_limit
- * @param int $max_errors
- *
- * @return integer number of template files recompiled
- */
- public function compileAllTemplates(
- Smarty $smarty,
- $extension = '.tpl',
- $force_compile = false,
- $time_limit = 0,
- $max_errors = null
- ) {
- return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors);
- }
-
- /**
- * Compile all template or config files
- *
- * @param \Smarty $smarty
- * @param string $extension template file name extension
- * @param bool $force_compile force all to recompile
- * @param int $time_limit set maximum execution time
- * @param int $max_errors set maximum allowed errors
- * @param bool $isConfig flag true if called for config files
- *
- * @return int number of template files compiled
- */
- protected function compileAll(
- Smarty $smarty,
- $extension,
- $force_compile,
- $time_limit,
- $max_errors,
- $isConfig = false
- ) {
- // switch off time limit
- if (function_exists('set_time_limit')) {
- @set_time_limit($time_limit);
- }
- $_count = 0;
- $_error_count = 0;
- $sourceDir = $isConfig ? $smarty->getConfigDir() : $smarty->getTemplateDir();
- // loop over array of source directories
- foreach ($sourceDir as $_dir) {
- $_dir_1 = new RecursiveDirectoryIterator(
- $_dir,
- defined('FilesystemIterator::FOLLOW_SYMLINKS') ?
- FilesystemIterator::FOLLOW_SYMLINKS : 0
- );
- $_dir_2 = new RecursiveIteratorIterator($_dir_1);
- foreach ($_dir_2 as $_fileinfo) {
- $_file = $_fileinfo->getFilename();
- if (substr(basename($_fileinfo->getPathname()), 0, 1) === '.' || strpos($_file, '.svn') !== false) {
- continue;
- }
- if (substr_compare($_file, $extension, -strlen($extension)) !== 0) {
- continue;
- }
- if ($_fileinfo->getPath() !== substr($_dir, 0, -1)) {
- $_file = substr($_fileinfo->getPath(), strlen($_dir)) . DIRECTORY_SEPARATOR . $_file;
- }
- echo "\n<br>", $_dir, '---', $_file;
- flush();
- $_start_time = microtime(true);
- $_smarty = clone $smarty;
- //
- $_smarty->_cache = array();
- $_smarty->ext = new Smarty_Internal_Extension_Handler();
- $_smarty->ext->objType = $_smarty->_objType;
- $_smarty->force_compile = $force_compile;
- try {
- /* @var Smarty_Internal_Template $_tpl */
- $_tpl = new $smarty->template_class($_file, $_smarty);
- $_tpl->caching = Smarty::CACHING_OFF;
- $_tpl->source =
- $isConfig ? Smarty_Template_Config::load($_tpl) : Smarty_Template_Source::load($_tpl);
- if ($_tpl->mustCompile()) {
- $_tpl->compileTemplateSource();
- $_count++;
- echo ' compiled in ', microtime(true) - $_start_time, ' seconds';
- flush();
- } else {
- echo ' is up to date';
- flush();
- }
- } catch (Exception $e) {
- echo "\n<br> ------>Error: ", $e->getMessage(), "<br><br>\n";
- $_error_count++;
- }
- // free memory
- unset($_tpl);
- $_smarty->_clearTemplateCache();
- if ($max_errors !== null && $_error_count === $max_errors) {
- echo "\n<br><br>too many errors\n";
- exit(1);
- }
- }
- }
- echo "\n<br>";
- return $_count;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php
deleted file mode 100644
index c3174d2d0..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-
-/**
- * Smarty Method ConfigLoad
- *
- * Smarty::configLoad() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ConfigLoad
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * load a config file, optionally load just selected sections
- *
- * @api Smarty::configLoad()
- * @link https://www.smarty.net/docs/en/api.config.load.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $config_file filename
- * @param mixed $sections array of section names, single
- * section or null
- *
- * @return \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template
- * @throws \Exception
- */
- public function configLoad(Smarty_Internal_Data $data, $config_file, $sections = null)
- {
- $this->_loadConfigFile($data, $config_file, $sections, null);
- return $data;
- }
-
- /**
- * load a config file, optionally load just selected sections
- *
- * @api Smarty::configLoad()
- * @link https://www.smarty.net/docs/en/api.config.load.tpl
- *
- * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data
- * @param string $config_file filename
- * @param mixed $sections array of section names, single
- * section or null
- * @param int $scope scope into which config variables
- * shall be loaded
- *
- * @throws \Exception
- */
- public function _loadConfigFile(Smarty_Internal_Data $data, $config_file, $sections = null, $scope = 0)
- {
- /* @var \Smarty $smarty */
- $smarty = $data->_getSmartyObj();
- /* @var \Smarty_Internal_Template $confObj */
- $confObj = new Smarty_Internal_Template($config_file, $smarty, $data, null, null, null, null, true);
- $confObj->caching = Smarty::CACHING_OFF;
- $confObj->source->config_sections = $sections;
- $confObj->source->scope = $scope;
- $confObj->compiled = Smarty_Template_Compiled::load($confObj);
- $confObj->compiled->render($confObj);
- if ($data->_isTplObj()) {
- $data->compiled->file_dependency[ $confObj->source->uid ] =
- array($confObj->source->filepath, $confObj->source->getTimeStamp(), $confObj->source->type);
- }
- }
-
- /**
- * load config variables into template object
- *
- * @param \Smarty_Internal_Template $tpl
- * @param array $new_config_vars
- */
- public function _loadConfigVars(Smarty_Internal_Template $tpl, $new_config_vars)
- {
- $this->_assignConfigVars($tpl->parent->config_vars, $tpl, $new_config_vars);
- $tagScope = $tpl->source->scope;
- if ($tagScope >= 0) {
- if ($tagScope === Smarty::SCOPE_LOCAL) {
- $this->_updateVarStack($tpl, $new_config_vars);
- $tagScope = 0;
- if (!$tpl->scope) {
- return;
- }
- }
- if ($tpl->parent->_isTplObj() && ($tagScope || $tpl->parent->scope)) {
- $mergedScope = $tagScope | $tpl->scope;
- if ($mergedScope) {
- // update scopes
- /* @var \Smarty_Internal_Template|\Smarty|\Smarty_Internal_Data $ptr */
- foreach ($tpl->smarty->ext->_updateScope->_getAffectedScopes($tpl->parent, $mergedScope) as $ptr) {
- $this->_assignConfigVars($ptr->config_vars, $tpl, $new_config_vars);
- if ($tagScope && $ptr->_isTplObj() && isset($tpl->_cache[ 'varStack' ])) {
- $this->_updateVarStack($tpl, $new_config_vars);
- }
- }
- }
- }
- }
- }
-
- /**
- * Assign all config variables in given scope
- *
- * @param array $config_vars config variables in scope
- * @param \Smarty_Internal_Template $tpl
- * @param array $new_config_vars loaded config variables
- */
- public function _assignConfigVars(&$config_vars, Smarty_Internal_Template $tpl, $new_config_vars)
- {
- // copy global config vars
- foreach ($new_config_vars[ 'vars' ] as $variable => $value) {
- if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) {
- $config_vars[ $variable ] = $value;
- } else {
- $config_vars[ $variable ] = array_merge((array)$config_vars[ $variable ], (array)$value);
- }
- }
- // scan sections
- $sections = $tpl->source->config_sections;
- if (!empty($sections)) {
- foreach ((array)$sections as $tpl_section) {
- if (isset($new_config_vars[ 'sections' ][ $tpl_section ])) {
- foreach ($new_config_vars[ 'sections' ][ $tpl_section ][ 'vars' ] as $variable => $value) {
- if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) {
- $config_vars[ $variable ] = $value;
- } else {
- $config_vars[ $variable ] = array_merge((array)$config_vars[ $variable ], (array)$value);
- }
- }
- }
- }
- }
- }
-
- /**
- * Update config variables in template local variable stack
- *
- * @param \Smarty_Internal_Template $tpl
- * @param array $config_vars
- */
- public function _updateVarStack(Smarty_Internal_Template $tpl, $config_vars)
- {
- $i = 0;
- while (isset($tpl->_cache[ 'varStack' ][ $i ])) {
- $this->_assignConfigVars($tpl->_cache[ 'varStack' ][ $i ][ 'config' ], $tpl, $config_vars);
- $i++;
- }
- }
-
- /**
- * gets a config variable value
- *
- * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data
- * @param string $varName the name of the config variable
- * @param bool $errorEnable
- *
- * @return null|string the value of the config variable
- */
- public function _getConfigVariable(Smarty_Internal_Data $data, $varName, $errorEnable = true)
- {
- $_ptr = $data;
- while ($_ptr !== null) {
- if (isset($_ptr->config_vars[ $varName ])) {
- // found it, return it
- return $_ptr->config_vars[ $varName ];
- }
- // not found, try at parent
- $_ptr = $_ptr->parent;
- }
- if ($data->smarty->error_unassigned && $errorEnable) {
- // force a notice
- $x = $$varName;
- }
- return null;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
deleted file mode 100644
index c684c0870..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * Smarty Method CreateData
- *
- * Smarty::createData() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_CreateData
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * creates a data object
- *
- * @api Smarty::createData()
- * @link https://www.smarty.net/docs/en/api.create.data.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param \Smarty_Internal_Template|\Smarty_Internal_Data|\Smarty_Data|\Smarty $parent next higher level of Smarty
- * variables
- * @param string $name optional data block name
- *
- * @return \Smarty_Data data object
- */
- public function createData(Smarty_Internal_TemplateBase $obj, Smarty_Internal_Data $parent = null, $name = null)
- {
- /* @var Smarty $smarty */
- $smarty = $obj->_getSmartyObj();
- $dataObj = new Smarty_Data($parent, $smarty, $name);
- if ($smarty->debugging) {
- Smarty_Internal_Debug::register_data($dataObj);
- }
- return $dataObj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
deleted file mode 100644
index 4145db10b..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetAutoloadFilters
- *
- * Smarty::getAutoloadFilters() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetAutoloadFilters extends Smarty_Internal_Method_SetAutoloadFilters
-{
- /**
- * Get autoload filters
- *
- * @api Smarty::getAutoloadFilters()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type type of filter to get auto loads
- * for. Defaults to all autoload
- * filters
- *
- * @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type
- * was specified
- * @throws \SmartyException
- */
- public function getAutoloadFilters(Smarty_Internal_TemplateBase $obj, $type = null)
- {
- $smarty = $obj->_getSmartyObj();
- if ($type !== null) {
- $this->_checkFilterType($type);
- return isset($smarty->autoload_filters[ $type ]) ? $smarty->autoload_filters[ $type ] : array();
- }
- return $smarty->autoload_filters;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php
deleted file mode 100644
index b54815123..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetConfigVariable
- *
- * Smarty::getConfigVariable() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetConfigVariable
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * gets a config variable value
- *
- * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data
- * @param string $varName the name of the config variable
- * @param bool $errorEnable
- *
- * @return null|string the value of the config variable
- */
- public function getConfigVariable(Smarty_Internal_Data $data, $varName = null, $errorEnable = true)
- {
- return $data->ext->configLoad->_getConfigVariable($data, $varName, $errorEnable);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
deleted file mode 100644
index 763bdf989..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetConfigVars
- *
- * Smarty::getConfigVars() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetConfigVars
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * Returns a single or all config variables
- *
- * @api Smarty::getConfigVars()
- * @link https://www.smarty.net/docs/en/api.get.config.vars.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varname variable name or null
- * @param bool $search_parents include parent templates?
- *
- * @return mixed variable value or or array of variables
- */
- public function getConfigVars(Smarty_Internal_Data $data, $varname = null, $search_parents = true)
- {
- $_ptr = $data;
- $var_array = array();
- while ($_ptr !== null) {
- if (isset($varname)) {
- if (isset($_ptr->config_vars[ $varname ])) {
- return $_ptr->config_vars[ $varname ];
- }
- } else {
- $var_array = array_merge($_ptr->config_vars, $var_array);
- }
- // not found, try at parent
- if ($search_parents) {
- $_ptr = $_ptr->parent;
- } else {
- $_ptr = null;
- }
- }
- if (isset($varname)) {
- return '';
- } else {
- return $var_array;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
deleted file mode 100644
index 77d908c15..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetDebugTemplate
- *
- * Smarty::getDebugTemplate() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetDebugTemplate
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * return name of debugging template
- *
- * @api Smarty::getDebugTemplate()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- *
- * @return string
- */
- public function getDebugTemplate(Smarty_Internal_TemplateBase $obj)
- {
- $smarty = $obj->_getSmartyObj();
- return $smarty->debug_tpl;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
deleted file mode 100644
index 57da85c49..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetDefaultModifiers
- *
- * Smarty::getDefaultModifiers() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetDefaultModifiers
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Get default modifiers
- *
- * @api Smarty::getDefaultModifiers()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- *
- * @return array list of default modifiers
- */
- public function getDefaultModifiers(Smarty_Internal_TemplateBase $obj)
- {
- $smarty = $obj->_getSmartyObj();
- return $smarty->default_modifiers;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php
deleted file mode 100644
index 2be11d7e8..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetGlobal
- *
- * Smarty::getGlobal() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetGlobal
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * Returns a single or all global variables
- *
- * @api Smarty::getGlobal()
- *
- * @param \Smarty_Internal_Data $data
- * @param string $varName variable name or null
- *
- * @return string|array variable value or or array of variables
- */
- public function getGlobal(Smarty_Internal_Data $data, $varName = null)
- {
- if (isset($varName)) {
- if (isset(Smarty::$global_tpl_vars[ $varName ])) {
- return Smarty::$global_tpl_vars[ $varName ]->value;
- } else {
- return '';
- }
- } else {
- $_result = array();
- foreach (Smarty::$global_tpl_vars as $key => $var) {
- $_result[ $key ] = $var->value;
- }
- return $_result;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
deleted file mode 100644
index 0b3a071d3..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetRegisteredObject
- *
- * Smarty::getRegisteredObject() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetRegisteredObject
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * return a reference to a registered object
- *
- * @api Smarty::getRegisteredObject()
- * @link https://www.smarty.net/docs/en/api.get.registered.object.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $object_name object name
- *
- * @return object
- * @throws \SmartyException if no such object is found
- */
- public function getRegisteredObject(Smarty_Internal_TemplateBase $obj, $object_name)
- {
- $smarty = $obj->_getSmartyObj();
- if (!isset($smarty->registered_objects[ $object_name ])) {
- throw new SmartyException("'$object_name' is not a registered object");
- }
- if (!is_object($smarty->registered_objects[ $object_name ][ 0 ])) {
- throw new SmartyException("registered '$object_name' is not an object");
- }
- return $smarty->registered_objects[ $object_name ][ 0 ];
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php
deleted file mode 100644
index 8db39c525..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetStreamVariable
- *
- * Smarty::getStreamVariable() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetStreamVariable
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * gets a stream variable
- *
- * @api Smarty::getStreamVariable()
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $variable the stream of the variable
- *
- * @return mixed
- * @throws \SmartyException
- */
- public function getStreamVariable(Smarty_Internal_Data $data, $variable)
- {
- $_result = '';
- $fp = fopen($variable, 'r+');
- if ($fp) {
- while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
- $_result .= $current_line;
- }
- fclose($fp);
- return $_result;
- }
- $smarty = isset($data->smarty) ? $data->smarty : $data;
- if ($smarty->error_unassigned) {
- throw new SmartyException('Undefined stream variable "' . $variable . '"');
- } else {
- return null;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php
deleted file mode 100644
index 0d1335a8d..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetTags
- *
- * Smarty::getTags() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetTags
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Return array of tag/attributes of all tags used by an template
- *
- * @api Smarty::getTags()
- * @link https://www.smarty.net/docs/en/api.get.tags.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param null|string|Smarty_Internal_Template $template
- *
- * @return array of tag/attributes
- * @throws \Exception
- * @throws \SmartyException
- */
- public function getTags(Smarty_Internal_TemplateBase $obj, $template = null)
- {
- /* @var Smarty $smarty */
- $smarty = $obj->_getSmartyObj();
- if ($obj->_isTplObj() && !isset($template)) {
- $tpl = clone $obj;
- } elseif (isset($template) && $template->_isTplObj()) {
- $tpl = clone $template;
- } elseif (isset($template) && is_string($template)) {
- /* @var Smarty_Internal_Template $tpl */
- $tpl = new $smarty->template_class($template, $smarty);
- // checks if template exists
- if (!$tpl->source->exists) {
- throw new SmartyException("Unable to load template {$tpl->source->type} '{$tpl->source->name}'");
- }
- }
- if (isset($tpl)) {
- $tpl->smarty = clone $tpl->smarty;
- $tpl->smarty->_cache[ 'get_used_tags' ] = true;
- $tpl->_cache[ 'used_tags' ] = array();
- $tpl->smarty->merge_compiled_includes = false;
- $tpl->smarty->disableSecurity();
- $tpl->caching = Smarty::CACHING_OFF;
- $tpl->loadCompiler();
- $tpl->compiler->compileTemplate($tpl);
- return $tpl->_cache[ 'used_tags' ];
- }
- throw new SmartyException('Missing template specification');
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
deleted file mode 100644
index 0470785b1..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetTemplateVars
- *
- * Smarty::getTemplateVars() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetTemplateVars
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * Returns a single or all template variables
- *
- * @api Smarty::getTemplateVars()
- * @link https://www.smarty.net/docs/en/api.get.template.vars.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varName variable name or null
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
- * @param bool $searchParents include parent templates?
- *
- * @return mixed variable value or or array of variables
- */
- public function getTemplateVars(
- Smarty_Internal_Data $data,
- $varName = null,
- Smarty_Internal_Data $_ptr = null,
- $searchParents = true
- ) {
- if (isset($varName)) {
- $_var = $this->_getVariable($data, $varName, $_ptr, $searchParents, false);
- if (is_object($_var)) {
- return $_var->value;
- } else {
- return null;
- }
- } else {
- $_result = array();
- if ($_ptr === null) {
- $_ptr = $data;
- }
- while ($_ptr !== null) {
- foreach ($_ptr->tpl_vars as $key => $var) {
- if (!array_key_exists($key, $_result)) {
- $_result[ $key ] = $var->value;
- }
- }
- // not found, try at parent
- if ($searchParents && isset($_ptr->parent)) {
- $_ptr = $_ptr->parent;
- } else {
- $_ptr = null;
- }
- }
- if ($searchParents && isset(Smarty::$global_tpl_vars)) {
- foreach (Smarty::$global_tpl_vars as $key => $var) {
- if (!array_key_exists($key, $_result)) {
- $_result[ $key ] = $var->value;
- }
- }
- }
- return $_result;
- }
- }
-
- /**
- * gets the object of a Smarty variable
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varName the name of the Smarty variable
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
- * @param bool $searchParents search also in parent data
- * @param bool $errorEnable
- *
- * @return \Smarty_Variable
- */
- public function _getVariable(
- Smarty_Internal_Data $data,
- $varName,
- Smarty_Internal_Data $_ptr = null,
- $searchParents = true,
- $errorEnable = true
- ) {
- if ($_ptr === null) {
- $_ptr = $data;
- }
- while ($_ptr !== null) {
- if (isset($_ptr->tpl_vars[ $varName ])) {
- // found it, return it
- return $_ptr->tpl_vars[ $varName ];
- }
- // not found, try at parent
- if ($searchParents && isset($_ptr->parent)) {
- $_ptr = $_ptr->parent;
- } else {
- $_ptr = null;
- }
- }
- if (isset(Smarty::$global_tpl_vars[ $varName ])) {
- // found it, return it
- return Smarty::$global_tpl_vars[ $varName ];
- }
- if ($errorEnable && $data->_getSmartyObj()->error_unassigned) {
- // force a notice
- $x = $$varName;
- }
- return new Smarty_Undefined_Variable;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php
deleted file mode 100644
index bfa3f58ec..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetLiterals
- *
- * Smarty::getLiterals() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_Literals
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Get literals
- *
- * @api Smarty::getLiterals()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- *
- * @return array list of literals
- */
- public function getLiterals(Smarty_Internal_TemplateBase $obj)
- {
- $smarty = $obj->_getSmartyObj();
- return (array)$smarty->literals;
- }
-
- /**
- * Add literals
- *
- * @api Smarty::addLiterals()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param array|string $literals literal or list of literals
- * to addto add
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function addLiterals(Smarty_Internal_TemplateBase $obj, $literals = null)
- {
- if (isset($literals)) {
- $this->set($obj->_getSmartyObj(), (array)$literals);
- }
- return $obj;
- }
-
- /**
- * Set literals
- *
- * @api Smarty::setLiterals()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param array|string $literals literal or list of literals
- * to setto set
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function setLiterals(Smarty_Internal_TemplateBase $obj, $literals = null)
- {
- $smarty = $obj->_getSmartyObj();
- $smarty->literals = array();
- if (!empty($literals)) {
- $this->set($smarty, (array)$literals);
- }
- return $obj;
- }
-
- /**
- * common setter for literals for easier handling of duplicates the
- * Smarty::$literals array gets filled with identical key values
- *
- * @param \Smarty $smarty
- * @param array $literals
- *
- * @throws \SmartyException
- */
- private function set(Smarty $smarty, $literals)
- {
- $literals = array_combine($literals, $literals);
- $error = isset($literals[ $smarty->left_delimiter ]) ? array($smarty->left_delimiter) : array();
- $error = isset($literals[ $smarty->right_delimiter ]) ? $error[] = $smarty->right_delimiter : $error;
- if (!empty($error)) {
- throw new SmartyException(
- 'User defined literal(s) "' . $error .
- '" may not be identical with left or right delimiter'
- );
- }
- $smarty->literals = array_merge((array)$smarty->literals, (array)$literals);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
deleted file mode 100644
index af788a24e..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/**
- * Smarty Method LoadFilter
- *
- * Smarty::loadFilter() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_LoadFilter
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Valid filter types
- *
- * @var array
- */
- private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true);
-
- /**
- * load a filter of specified type and name
- *
- * @api Smarty::loadFilter()
- *
- * @link https://www.smarty.net/docs/en/api.load.filter.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type filter type
- * @param string $name filter name
- *
- * @return bool
- * @throws SmartyException if filter could not be loaded
- */
- public function loadFilter(Smarty_Internal_TemplateBase $obj, $type, $name)
- {
- $smarty = $obj->_getSmartyObj();
- $this->_checkFilterType($type);
- $_plugin = "smarty_{$type}filter_{$name}";
- $_filter_name = $_plugin;
- if (is_callable($_plugin)) {
- $smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin;
- return true;
- }
- if ($smarty->loadPlugin($_plugin)) {
- if (class_exists($_plugin, false)) {
- $_plugin = array($_plugin, 'execute');
- }
- if (is_callable($_plugin)) {
- $smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin;
- return true;
- }
- }
- throw new SmartyException("{$type}filter '{$name}' not found or callable");
- }
-
- /**
- * Check if filter type is valid
- *
- * @param string $type
- *
- * @throws \SmartyException
- */
- public function _checkFilterType($type)
- {
- if (!isset($this->filterTypes[ $type ])) {
- throw new SmartyException("Illegal filter type '{$type}'");
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
deleted file mode 100644
index 6ddcaec94..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-/**
- * Smarty Extension Loadplugin
- *
- * $smarty->loadPlugin() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_LoadPlugin
-{
- /**
- * Cache of searched plugin files
- *
- * @var array
- */
- public $plugin_files = array();
-
- /**
- * Takes unknown classes and loads plugin files for them
- * class name format: Smarty_PluginType_PluginName
- * plugin filename format: plugintype.pluginname.php
- *
- * @param \Smarty $smarty
- * @param string $plugin_name class plugin name to load
- * @param bool $check check if already loaded
- *
- * @return bool|string
- * @throws \SmartyException
- */
- public function loadPlugin(Smarty $smarty, $plugin_name, $check)
- {
- // if function or class exists, exit silently (already loaded)
- if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) {
- return true;
- }
- if (!preg_match('#^smarty_((internal)|([^_]+))_(.+)$#i', $plugin_name, $match)) {
- throw new SmartyException("plugin {$plugin_name} is not a valid name format");
- }
- if (!empty($match[ 2 ])) {
- $file = SMARTY_SYSPLUGINS_DIR . smarty_strtolower_ascii($plugin_name) . '.php';
- if (isset($this->plugin_files[ $file ])) {
- if ($this->plugin_files[ $file ] !== false) {
- return $this->plugin_files[ $file ];
- } else {
- return false;
- }
- } else {
- if (is_file($file)) {
- $this->plugin_files[ $file ] = $file;
- include_once $file;
- return $file;
- } else {
- $this->plugin_files[ $file ] = false;
- return false;
- }
- }
- }
- // plugin filename is expected to be: [type].[name].php
- $_plugin_filename = "{$match[1]}.{$match[4]}.php";
- $_lower_filename = smarty_strtolower_ascii($_plugin_filename);
- if (isset($this->plugin_files)) {
- if (isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) {
- if (!$smarty->use_include_path || $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] !== false) {
- return $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ];
- }
- }
- if (!$smarty->use_include_path || $smarty->ext->_getIncludePath->isNewIncludePath($smarty)) {
- unset($this->plugin_files[ 'include_path' ]);
- } else {
- if (isset($this->plugin_files[ 'include_path' ][ $_lower_filename ])) {
- return $this->plugin_files[ 'include_path' ][ $_lower_filename ];
- }
- }
- }
- $_file_names = array($_plugin_filename);
- if ($_lower_filename !== $_plugin_filename) {
- $_file_names[] = $_lower_filename;
- }
- $_p_dirs = $smarty->getPluginsDir();
- if (!isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) {
- // loop through plugin dirs and find the plugin
- foreach ($_p_dirs as $_plugin_dir) {
- foreach ($_file_names as $name) {
- $file = $_plugin_dir . $name;
- if (is_file($file)) {
- $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = $file;
- include_once $file;
- return $file;
- }
- $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = false;
- }
- }
- }
- if ($smarty->use_include_path) {
- foreach ($_file_names as $_file_name) {
- // try PHP include_path
- $file = $smarty->ext->_getIncludePath->getIncludePath($_p_dirs, $_file_name, $smarty);
- $this->plugin_files[ 'include_path' ][ $_lower_filename ] = $file;
- if ($file !== false) {
- include_once $file;
- return $file;
- }
- }
- }
- // no plugin loaded
- return false;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
deleted file mode 100644
index 381346c8f..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/**
- * Smarty Method MustCompile
- *
- * Smarty_Internal_Template::mustCompile() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_MustCompile
-{
- /**
- * Valid for template object
- *
- * @var int
- */
- public $objMap = 2;
-
- /**
- * Returns if the current template must be compiled by the Smarty compiler
- * It does compare the timestamps of template source and the compiled templates and checks the force compile
- * configuration
- *
- * @param \Smarty_Internal_Template $_template
- *
- * @return bool
- * @throws \SmartyException
- */
- public function mustCompile(Smarty_Internal_Template $_template)
- {
- if (!$_template->source->exists) {
- if ($_template->_isSubTpl()) {
- $parent_resource = " in '{$_template->parent->template_resource}'";
- } else {
- $parent_resource = '';
- }
- throw new SmartyException("Unable to load template {$_template->source->type} '{$_template->source->name}'{$parent_resource}");
- }
- if ($_template->mustCompile === null) {
- $_template->mustCompile = (!$_template->source->handler->uncompiled &&
- ($_template->smarty->force_compile || $_template->source->handler->recompiled ||
- !$_template->compiled->exists || ($_template->compile_check &&
- $_template->compiled->getTimeStamp() <
- $_template->source->getTimeStamp())));
- }
- return $_template->mustCompile;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
deleted file mode 100644
index 5608b3fd0..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterCacheResource
- *
- * Smarty::registerCacheResource() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterCacheResource
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers a resource to fetch a template
- *
- * @api Smarty::registerCacheResource()
- * @link https://www.smarty.net/docs/en/api.register.cacheresource.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $name name of resource type
- * @param \Smarty_CacheResource $resource_handler
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function registerCacheResource(
- Smarty_Internal_TemplateBase $obj,
- $name,
- Smarty_CacheResource $resource_handler
- ) {
- $smarty = $obj->_getSmartyObj();
- $smarty->registered_cache_resources[ $name ] = $resource_handler;
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php
deleted file mode 100644
index 76a69c6e5..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterClass
- *
- * Smarty::registerClass() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterClass
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers static classes to be used in templates
- *
- * @api Smarty::registerClass()
- * @link https://www.smarty.net/docs/en/api.register.class.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $class_name
- * @param string $class_impl the referenced PHP class to
- * register
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function registerClass(Smarty_Internal_TemplateBase $obj, $class_name, $class_impl)
- {
- $smarty = $obj->_getSmartyObj();
- // test if exists
- if (!class_exists($class_impl)) {
- throw new SmartyException("Undefined class '$class_impl' in register template class");
- }
- // register the class
- $smarty->registered_classes[ $class_name ] = $class_impl;
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
deleted file mode 100644
index b340f178d..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterDefaultConfigHandler
- *
- * Smarty::registerDefaultConfigHandler() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterDefaultConfigHandler
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Register config default handler
- *
- * @api Smarty::registerDefaultConfigHandler()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param callable $callback class/method name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws SmartyException if $callback is not callable
- */
- public function registerDefaultConfigHandler(Smarty_Internal_TemplateBase $obj, $callback)
- {
- $smarty = $obj->_getSmartyObj();
- if (is_callable($callback)) {
- $smarty->default_config_handler_func = $callback;
- } else {
- throw new SmartyException('Default config handler not callable');
- }
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
deleted file mode 100644
index 4cda5b056..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterDefaultPluginHandler
- *
- * Smarty::registerDefaultPluginHandler() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterDefaultPluginHandler
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers a default plugin handler
- *
- * @api Smarty::registerDefaultPluginHandler()
- * @link https://www.smarty.net/docs/en/api.register.default.plugin.handler.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param callable $callback class/method name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws SmartyException if $callback is not callable
- */
- public function registerDefaultPluginHandler(Smarty_Internal_TemplateBase $obj, $callback)
- {
- $smarty = $obj->_getSmartyObj();
- if (is_callable($callback)) {
- $smarty->default_plugin_handler_func = $callback;
- } else {
- throw new SmartyException("Default plugin handler '$callback' not callable");
- }
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
deleted file mode 100644
index cbc133ccd..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterDefaultTemplateHandler
- *
- * Smarty::registerDefaultTemplateHandler() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterDefaultTemplateHandler
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Register template default handler
- *
- * @api Smarty::registerDefaultTemplateHandler()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param callable $callback class/method name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws SmartyException if $callback is not callable
- */
- public function registerDefaultTemplateHandler(Smarty_Internal_TemplateBase $obj, $callback)
- {
- $smarty = $obj->_getSmartyObj();
- if (is_callable($callback)) {
- $smarty->default_template_handler_func = $callback;
- } else {
- throw new SmartyException('Default template handler not callable');
- }
- return $obj;
- }
-
- /**
- * get default content from template or config resource handler
- *
- * @param Smarty_Template_Source $source
- *
- * @throws \SmartyException
- */
- public static function _getDefaultTemplate(Smarty_Template_Source $source)
- {
- if ($source->isConfig) {
- $default_handler = $source->smarty->default_config_handler_func;
- } else {
- $default_handler = $source->smarty->default_template_handler_func;
- }
- $_content = $_timestamp = null;
- $_return = call_user_func_array(
- $default_handler,
- array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty)
- );
- if (is_string($_return)) {
- $source->exists = is_file($_return);
- if ($source->exists) {
- $source->timestamp = filemtime($_return);
- } else {
- throw new SmartyException(
- 'Default handler: Unable to load ' .
- ($source->isConfig ? 'config' : 'template') .
- " default file '{$_return}' for '{$source->type}:{$source->name}'"
- );
- }
- $source->name = $source->filepath = $_return;
- $source->uid = sha1($source->filepath);
- } elseif ($_return === true) {
- $source->content = $_content;
- $source->exists = true;
- $source->uid = $source->name = sha1($_content);
- $source->handler = Smarty_Resource::load($source->smarty, 'eval');
- } else {
- $source->exists = false;
- throw new SmartyException(
- 'Default handler: No ' . ($source->isConfig ? 'config' : 'template') .
- " default content for '{$source->type}:{$source->name}'"
- );
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
deleted file mode 100644
index 9719eb2b6..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterFilter
- *
- * Smarty::registerFilter() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterFilter
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Valid filter types
- *
- * @var array
- */
- private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true);
-
- /**
- * Registers a filter function
- *
- * @api Smarty::registerFilter()
- *
- * @link https://www.smarty.net/docs/en/api.register.filter.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type filter type
- * @param callback $callback
- * @param string|null $name optional filter name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function registerFilter(Smarty_Internal_TemplateBase $obj, $type, $callback, $name = null)
- {
- $smarty = $obj->_getSmartyObj();
- $this->_checkFilterType($type);
- $name = isset($name) ? $name : $this->_getFilterName($callback);
- if (!is_callable($callback)) {
- throw new SmartyException("{$type}filter '{$name}' not callable");
- }
- $smarty->registered_filters[ $type ][ $name ] = $callback;
- return $obj;
- }
-
- /**
- * Return internal filter name
- *
- * @param callback $function_name
- *
- * @return string internal filter name
- */
- public function _getFilterName($function_name)
- {
- if (is_array($function_name)) {
- $_class_name = (is_object($function_name[ 0 ]) ? get_class($function_name[ 0 ]) : $function_name[ 0 ]);
- return $_class_name . '_' . $function_name[ 1 ];
- } elseif (is_string($function_name)) {
- return $function_name;
- } else {
- return 'closure';
- }
- }
-
- /**
- * Check if filter type is valid
- *
- * @param string $type
- *
- * @throws \SmartyException
- */
- public function _checkFilterType($type)
- {
- if (!isset($this->filterTypes[ $type ])) {
- throw new SmartyException("Illegal filter type '{$type}'");
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php
deleted file mode 100644
index 8e6fe0521..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterObject
- *
- * Smarty::registerObject() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterObject
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers object to be used in templates
- *
- * @api Smarty::registerObject()
- * @link https://www.smarty.net/docs/en/api.register.object.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $object_name
- * @param object $object the
- * referenced
- * PHP
- * object
- * to
- * register
- *
- * @param array $allowed_methods_properties list of
- * allowed
- * methods
- * (empty
- * = all)
- *
- * @param bool $format smarty
- * argument
- * format,
- * else
- * traditional
- *
- * @param array $block_methods list of
- * block-methods
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function registerObject(
- Smarty_Internal_TemplateBase $obj,
- $object_name,
- $object,
- $allowed_methods_properties = array(),
- $format = true,
- $block_methods = array()
- ) {
- $smarty = $obj->_getSmartyObj();
- // test if allowed methods callable
- if (!empty($allowed_methods_properties)) {
- foreach ((array)$allowed_methods_properties as $method) {
- if (!is_callable(array($object, $method)) && !property_exists($object, $method)) {
- throw new SmartyException("Undefined method or property '$method' in registered object");
- }
- }
- }
- // test if block methods callable
- if (!empty($block_methods)) {
- foreach ((array)$block_methods as $method) {
- if (!is_callable(array($object, $method))) {
- throw new SmartyException("Undefined method '$method' in registered object");
- }
- }
- }
- // register the object
- $smarty->registered_objects[ $object_name ] =
- array($object, (array)$allowed_methods_properties, (boolean)$format, (array)$block_methods);
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
deleted file mode 100644
index 74c0ae908..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterPlugin
- *
- * Smarty::registerPlugin() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterPlugin
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers plugin to be used in templates
- *
- * @api Smarty::registerPlugin()
- * @link https://www.smarty.net/docs/en/api.register.plugin.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type plugin type
- * @param string $name name of template tag
- * @param callback $callback PHP callback to register
- * @param bool $cacheable if true (default) this
- * function is cache able
- * @param mixed $cache_attr caching attributes if any
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws SmartyException when the plugin tag is invalid
- */
- public function registerPlugin(
- Smarty_Internal_TemplateBase $obj,
- $type,
- $name,
- $callback,
- $cacheable = true,
- $cache_attr = null
- ) {
- $smarty = $obj->_getSmartyObj();
- if (isset($smarty->registered_plugins[ $type ][ $name ])) {
- throw new SmartyException("Plugin tag '{$name}' already registered");
- } elseif (!is_callable($callback)) {
- throw new SmartyException("Plugin '{$name}' not callable");
- } elseif ($cacheable && $cache_attr) {
- throw new SmartyException("Cannot set caching attributes for plugin '{$name}' when it is cacheable.");
- } else {
- $smarty->registered_plugins[ $type ][ $name ] = array($callback, (bool)$cacheable, (array)$cache_attr);
- }
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php
deleted file mode 100644
index 302657ae0..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterResource
- *
- * Smarty::registerResource() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterResource
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers a resource to fetch a template
- *
- * @api Smarty::registerResource()
- * @link https://www.smarty.net/docs/en/api.register.resource.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $name name of resource type
- * @param Smarty_Resource $resource_handler instance of Smarty_Resource
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function registerResource(Smarty_Internal_TemplateBase $obj, $name, Smarty_Resource $resource_handler)
- {
- $smarty = $obj->_getSmartyObj();
- $smarty->registered_resources[ $name ] = $resource_handler;
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
deleted file mode 100644
index 2972f3ce1..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/**
- * Smarty Method SetAutoloadFilters
- *
- * Smarty::setAutoloadFilters() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_SetAutoloadFilters
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Valid filter types
- *
- * @var array
- */
- private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true);
-
- /**
- * Set autoload filters
- *
- * @api Smarty::setAutoloadFilters()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param array $filters filters to load automatically
- * @param string $type "pre", "output", … specify
- * the filter type to set.
- * Defaults to none treating
- * $filters' keys as the
- * appropriate types
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function setAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null)
- {
- $smarty = $obj->_getSmartyObj();
- if ($type !== null) {
- $this->_checkFilterType($type);
- $smarty->autoload_filters[ $type ] = (array)$filters;
- } else {
- foreach ((array)$filters as $type => $value) {
- $this->_checkFilterType($type);
- }
- $smarty->autoload_filters = (array)$filters;
- }
- return $obj;
- }
-
- /**
- * Check if filter type is valid
- *
- * @param string $type
- *
- * @throws \SmartyException
- */
- public function _checkFilterType($type)
- {
- if (!isset($this->filterTypes[ $type ])) {
- throw new SmartyException("Illegal filter type '{$type}'");
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
deleted file mode 100644
index cc9d23e2a..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/**
- * Smarty Method SetDebugTemplate
- *
- * Smarty::setDebugTemplate() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_SetDebugTemplate
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * set the debug template
- *
- * @api Smarty::setDebugTemplate()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $tpl_name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws SmartyException if file is not readable
- */
- public function setDebugTemplate(Smarty_Internal_TemplateBase $obj, $tpl_name)
- {
- $smarty = $obj->_getSmartyObj();
- if (!is_readable($tpl_name)) {
- throw new SmartyException("Unknown file '{$tpl_name}'");
- }
- $smarty->debug_tpl = $tpl_name;
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
deleted file mode 100644
index eadc2de1b..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/**
- * Smarty Method SetDefaultModifiers
- *
- * Smarty::setDefaultModifiers() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_SetDefaultModifiers
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Set default modifiers
- *
- * @api Smarty::setDefaultModifiers()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param array|string $modifiers modifier or list of modifiers
- * to set
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function setDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers)
- {
- $smarty = $obj->_getSmartyObj();
- $smarty->default_modifiers = (array)$modifiers;
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
deleted file mode 100644
index e41e8dffc..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnloadFilter
- *
- * Smarty::unloadFilter() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnloadFilter extends Smarty_Internal_Method_LoadFilter
-{
- /**
- * load a filter of specified type and name
- *
- * @api Smarty::unloadFilter()
- *
- * @link https://www.smarty.net/docs/en/api.unload.filter.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type filter type
- * @param string $name filter name
- *
- * @return Smarty_Internal_TemplateBase
- * @throws \SmartyException
- */
- public function unloadFilter(Smarty_Internal_TemplateBase $obj, $type, $name)
- {
- $smarty = $obj->_getSmartyObj();
- $this->_checkFilterType($type);
- if (isset($smarty->registered_filters[ $type ])) {
- $_filter_name = "smarty_{$type}filter_{$name}";
- if (isset($smarty->registered_filters[ $type ][ $_filter_name ])) {
- unset($smarty->registered_filters[ $type ][ $_filter_name ]);
- if (empty($smarty->registered_filters[ $type ])) {
- unset($smarty->registered_filters[ $type ]);
- }
- }
- }
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
deleted file mode 100644
index 377397e97..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnregisterCacheResource
- *
- * Smarty::unregisterCacheResource() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnregisterCacheResource
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers a resource to fetch a template
- *
- * @api Smarty::unregisterCacheResource()
- * @link https://www.smarty.net/docs/en/api.unregister.cacheresource.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param $name
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function unregisterCacheResource(Smarty_Internal_TemplateBase $obj, $name)
- {
- $smarty = $obj->_getSmartyObj();
- if (isset($smarty->registered_cache_resources[ $name ])) {
- unset($smarty->registered_cache_resources[ $name ]);
- }
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
deleted file mode 100644
index ebc9337d0..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnregisterFilter
- *
- * Smarty::unregisterFilter() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnregisterFilter extends Smarty_Internal_Method_RegisterFilter
-{
- /**
- * Unregisters a filter function
- *
- * @api Smarty::unregisterFilter()
- *
- * @link https://www.smarty.net/docs/en/api.unregister.filter.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type filter type
- * @param callback|string $callback
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function unregisterFilter(Smarty_Internal_TemplateBase $obj, $type, $callback)
- {
- $smarty = $obj->_getSmartyObj();
- $this->_checkFilterType($type);
- if (isset($smarty->registered_filters[ $type ])) {
- $name = is_string($callback) ? $callback : $this->_getFilterName($callback);
- if (isset($smarty->registered_filters[ $type ][ $name ])) {
- unset($smarty->registered_filters[ $type ][ $name ]);
- if (empty($smarty->registered_filters[ $type ])) {
- unset($smarty->registered_filters[ $type ]);
- }
- }
- }
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
deleted file mode 100644
index 77d619637..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnregisterObject
- *
- * Smarty::unregisterObject() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnregisterObject
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers plugin to be used in templates
- *
- * @api Smarty::unregisterObject()
- * @link https://www.smarty.net/docs/en/api.unregister.object.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $object_name name of object
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function unregisterObject(Smarty_Internal_TemplateBase $obj, $object_name)
- {
- $smarty = $obj->_getSmartyObj();
- if (isset($smarty->registered_objects[ $object_name ])) {
- unset($smarty->registered_objects[ $object_name ]);
- }
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
deleted file mode 100644
index 2431d5c23..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnregisterPlugin
- *
- * Smarty::unregisterPlugin() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnregisterPlugin
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers plugin to be used in templates
- *
- * @api Smarty::unregisterPlugin()
- * @link https://www.smarty.net/docs/en/api.unregister.plugin.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type plugin type
- * @param string $name name of template tag
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function unregisterPlugin(Smarty_Internal_TemplateBase $obj, $type, $name)
- {
- $smarty = $obj->_getSmartyObj();
- if (isset($smarty->registered_plugins[ $type ][ $name ])) {
- unset($smarty->registered_plugins[ $type ][ $name ]);
- }
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
deleted file mode 100644
index bbb6a861d..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnregisterResource
- *
- * Smarty::unregisterResource() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnregisterResource
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers a resource to fetch a template
- *
- * @api Smarty::unregisterResource()
- * @link https://www.smarty.net/docs/en/api.unregister.resource.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type name of resource type
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function unregisterResource(Smarty_Internal_TemplateBase $obj, $type)
- {
- $smarty = $obj->_getSmartyObj();
- if (isset($smarty->registered_resources[ $type ])) {
- unset($smarty->registered_resources[ $type ]);
- }
- return $obj;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php
deleted file mode 100644
index 88694dcfd..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Nocache Insert
- * Compiles the {insert} tag into the cache file
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Insert Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Nocache_Insert
-{
- /**
- * Compiles code for the {insert} tag into cache file
- *
- * @param string $_function insert function name
- * @param array $_attr array with parameter
- * @param Smarty_Internal_Template $_template template object
- * @param string $_script script name to load or 'null'
- * @param string $_assign optional variable name
- *
- * @return string compiled code
- */
- public static function compile($_function, $_attr, $_template, $_script, $_assign = null)
- {
- $_output = '<?php ';
- if ($_script !== 'null') {
- // script which must be included
- // code for script file loading
- $_output .= "require_once '{$_script}';";
- }
- // call insert
- if (isset($_assign)) {
- $_output .= "\$_smarty_tpl->assign('{$_assign}' , {$_function} (" . var_export($_attr, true) .
- ',\$_smarty_tpl), true);?>';
- } else {
- $_output .= "echo {$_function}(" . var_export($_attr, true) . ',$_smarty_tpl);?>';
- }
- $_tpl = $_template;
- while ($_tpl->_isSubTpl()) {
- $_tpl = $_tpl->parent;
- }
- return "/*%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/{$_output}/*/%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/";
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php
deleted file mode 100644
index 9f7678526..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Templateparser Parsetree
- * These are classes to build parsetree in the template parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Thue Kristensen
- * @author Uwe Tews
- */
-
-/**
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-abstract class Smarty_Internal_ParseTree
-{
- /**
- * Buffer content
- *
- * @var mixed
- */
- public $data;
-
- /**
- * Subtree array
- *
- * @var array
- */
- public $subtrees = array();
-
- /**
- * Return buffer
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string buffer content
- */
- abstract public function to_smarty_php(Smarty_Internal_Templateparser $parser);
-
- /**
- * Template data object destructor
- */
- public function __destruct()
- {
- $this->data = null;
- $this->subtrees = null;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php
deleted file mode 100644
index 7bd0bc45c..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Templateparser Parse Tree
- * These are classes to build parse trees in the template parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Thue Kristensen
- * @author Uwe Tews
- */
-
-/**
- * Code fragment inside a tag .
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class Smarty_Internal_ParseTree_Code extends Smarty_Internal_ParseTree
-{
- /**
- * Create parse tree buffer for code fragment
- *
- * @param string $data content
- */
- public function __construct($data)
- {
- $this->data = $data;
- }
-
- /**
- * Return buffer content in parentheses
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string content
- */
- public function to_smarty_php(Smarty_Internal_Templateparser $parser)
- {
- return sprintf('(%s)', $this->data);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
deleted file mode 100644
index 8655f5869..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-/**
- * Double quoted string inside a tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-
-/**
- * Double quoted string inside a tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class Smarty_Internal_ParseTree_Dq extends Smarty_Internal_ParseTree
-{
- /**
- * Create parse tree buffer for double quoted string subtrees
- *
- * @param object $parser parser object
- * @param Smarty_Internal_ParseTree $subtree parse tree buffer
- */
- public function __construct($parser, Smarty_Internal_ParseTree $subtree)
- {
- $this->subtrees[] = $subtree;
- if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
- $parser->block_nesting_level = count($parser->compiler->_tag_stack);
- }
- }
-
- /**
- * Append buffer to subtree
- *
- * @param \Smarty_Internal_Templateparser $parser
- * @param Smarty_Internal_ParseTree $subtree parse tree buffer
- */
- public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree)
- {
- $last_subtree = count($this->subtrees) - 1;
- if ($last_subtree >= 0 && $this->subtrees[ $last_subtree ] instanceof Smarty_Internal_ParseTree_Tag
- && $this->subtrees[ $last_subtree ]->saved_block_nesting < $parser->block_nesting_level
- ) {
- if ($subtree instanceof Smarty_Internal_ParseTree_Code) {
- $this->subtrees[ $last_subtree ]->data =
- $parser->compiler->appendCode(
- $this->subtrees[ $last_subtree ]->data,
- '<?php echo ' . $subtree->data . ';?>'
- );
- } elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent) {
- $this->subtrees[ $last_subtree ]->data =
- $parser->compiler->appendCode(
- $this->subtrees[ $last_subtree ]->data,
- '<?php echo "' . $subtree->data . '";?>'
- );
- } else {
- $this->subtrees[ $last_subtree ]->data =
- $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data, $subtree->data);
- }
- } else {
- $this->subtrees[] = $subtree;
- }
- if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
- $parser->block_nesting_level = count($parser->compiler->_tag_stack);
- }
- }
-
- /**
- * Merge subtree buffer content together
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string compiled template code
- */
- public function to_smarty_php(Smarty_Internal_Templateparser $parser)
- {
- $code = '';
- foreach ($this->subtrees as $subtree) {
- if ($code !== '') {
- $code .= '.';
- }
- if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
- $more_php = $subtree->assign_to_var($parser);
- } else {
- $more_php = $subtree->to_smarty_php($parser);
- }
- $code .= $more_php;
- if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent) {
- $parser->compiler->has_variable_string = true;
- }
- }
- return $code;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php
deleted file mode 100644
index a8ca389d9..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Templateparser Parse Tree
- * These are classes to build parse tree in the template parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Thue Kristensen
- * @author Uwe Tews
- */
-
-/**
- * Raw chars as part of a double quoted string.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class Smarty_Internal_ParseTree_DqContent extends Smarty_Internal_ParseTree
-{
- /**
- * Create parse tree buffer with string content
- *
- * @param string $data string section
- */
- public function __construct($data)
- {
- $this->data = $data;
- }
-
- /**
- * Return content as double quoted string
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string doubled quoted string
- */
- public function to_smarty_php(Smarty_Internal_Templateparser $parser)
- {
- return '"' . $this->data . '"';
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
deleted file mode 100644
index e6c755604..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Templateparser Parse Tree
- * These are classes to build parse tree in the template parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Thue Kristensen
- * @author Uwe Tews
- */
-
-/**
- * A complete smarty tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class Smarty_Internal_ParseTree_Tag extends Smarty_Internal_ParseTree
-{
- /**
- * Saved block nesting level
- *
- * @var int
- */
- public $saved_block_nesting;
-
- /**
- * Create parse tree buffer for Smarty tag
- *
- * @param \Smarty_Internal_Templateparser $parser parser object
- * @param string $data content
- */
- public function __construct(Smarty_Internal_Templateparser $parser, $data)
- {
- $this->data = $data;
- $this->saved_block_nesting = $parser->block_nesting_level;
- }
-
- /**
- * Return buffer content
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string content
- */
- public function to_smarty_php(Smarty_Internal_Templateparser $parser)
- {
- return $this->data;
- }
-
- /**
- * Return complied code that loads the evaluated output of buffer content into a temporary variable
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string template code
- */
- public function assign_to_var(Smarty_Internal_Templateparser $parser)
- {
- $var = $parser->compiler->getNewPrefixVariable();
- $tmp = $parser->compiler->appendCode('<?php ob_start();?>', $this->data);
- $tmp = $parser->compiler->appendCode($tmp, "<?php {$var}=ob_get_clean();?>");
- $parser->compiler->prefix_code[] = sprintf('%s', $tmp);
- return $var;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php
deleted file mode 100644
index 829c420fe..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php
+++ /dev/null
@@ -1,169 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Templateparser Parse Tree
- * These are classes to build parse tree in the template parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Thue Kristensen
- * @author Uwe Tews
- */
-
-/**
- * Template element
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class Smarty_Internal_ParseTree_Template extends Smarty_Internal_ParseTree
-{
- /**
- * Array of template elements
- *
- * @var array
- */
- public $subtrees = array();
-
- /**
- * Create root of parse tree for template elements
- */
- public function __construct()
- {
- }
-
- /**
- * Append buffer to subtree
- *
- * @param \Smarty_Internal_Templateparser $parser
- * @param Smarty_Internal_ParseTree $subtree
- */
- public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree)
- {
- if (!empty($subtree->subtrees)) {
- $this->subtrees = array_merge($this->subtrees, $subtree->subtrees);
- } else {
- if ($subtree->data !== '') {
- $this->subtrees[] = $subtree;
- }
- }
- }
-
- /**
- * Append array to subtree
- *
- * @param \Smarty_Internal_Templateparser $parser
- * @param \Smarty_Internal_ParseTree[] $array
- */
- public function append_array(Smarty_Internal_Templateparser $parser, $array = array())
- {
- if (!empty($array)) {
- $this->subtrees = array_merge($this->subtrees, (array)$array);
- }
- }
-
- /**
- * Prepend array to subtree
- *
- * @param \Smarty_Internal_Templateparser $parser
- * @param \Smarty_Internal_ParseTree[] $array
- */
- public function prepend_array(Smarty_Internal_Templateparser $parser, $array = array())
- {
- if (!empty($array)) {
- $this->subtrees = array_merge((array)$array, $this->subtrees);
- }
- }
-
- /**
- * Sanitize and merge subtree buffers together
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string template code content
- */
- public function to_smarty_php(Smarty_Internal_Templateparser $parser)
- {
- $code = '';
-
- foreach ($this->getChunkedSubtrees() as $chunk) {
- $text = '';
- switch ($chunk['mode']) {
- case 'textstripped':
- foreach ($chunk['subtrees'] as $subtree) {
- $text .= $subtree->to_smarty_php($parser);
- }
- $code .= preg_replace(
- '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/',
- "<?php echo '\$1'; ?>\n",
- $parser->compiler->processText($text)
- );
- break;
- case 'text':
- foreach ($chunk['subtrees'] as $subtree) {
- $text .= $subtree->to_smarty_php($parser);
- }
- $code .= preg_replace(
- '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/',
- "<?php echo '\$1'; ?>\n",
- $text
- );
- break;
- case 'tag':
- foreach ($chunk['subtrees'] as $subtree) {
- $text = $parser->compiler->appendCode($text, $subtree->to_smarty_php($parser));
- }
- $code .= $text;
- break;
- default:
- foreach ($chunk['subtrees'] as $subtree) {
- $text = $subtree->to_smarty_php($parser);
- }
- $code .= $text;
-
- }
- }
- return $code;
- }
-
- private function getChunkedSubtrees() {
- $chunks = array();
- $currentMode = null;
- $currentChunk = array();
- for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key++) {
-
- if ($this->subtrees[ $key ]->data === '' && in_array($currentMode, array('textstripped', 'text', 'tag'))) {
- continue;
- }
-
- if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text
- && $this->subtrees[ $key ]->isToBeStripped()) {
- $newMode = 'textstripped';
- } elseif ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text) {
- $newMode = 'text';
- } elseif ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Tag) {
- $newMode = 'tag';
- } else {
- $newMode = 'other';
- }
-
- if ($newMode == $currentMode) {
- $currentChunk[] = $this->subtrees[ $key ];
- } else {
- $chunks[] = array(
- 'mode' => $currentMode,
- 'subtrees' => $currentChunk
- );
- $currentMode = $newMode;
- $currentChunk = array($this->subtrees[ $key ]);
- }
- }
- if ($currentMode && $currentChunk) {
- $chunks[] = array(
- 'mode' => $currentMode,
- 'subtrees' => $currentChunk
- );
- }
- return $chunks;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php
deleted file mode 100644
index 58116c811..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/**
- * Smarty Internal Plugin Templateparser Parse Tree
- * These are classes to build parse tree in the template parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Thue Kristensen
- * @author Uwe Tews
- * *
- * template text
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class Smarty_Internal_ParseTree_Text extends Smarty_Internal_ParseTree
-{
-
- /**
- * Wether this section should be stripped on output to smarty php
- * @var bool
- */
- private $toBeStripped = false;
-
- /**
- * Create template text buffer
- *
- * @param string $data text
- * @param bool $toBeStripped wether this section should be stripped on output to smarty php
- */
- public function __construct($data, $toBeStripped = false)
- {
- $this->data = $data;
- $this->toBeStripped = $toBeStripped;
- }
-
- /**
- * Wether this section should be stripped on output to smarty php
- * @return bool
- */
- public function isToBeStripped() {
- return $this->toBeStripped;
- }
-
- /**
- * Return buffer content
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string text
- */
- public function to_smarty_php(Smarty_Internal_Templateparser $parser)
- {
- return $this->data;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
deleted file mode 100644
index 3b552a589..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Resource Eval
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource Eval
- * Implements the strings as resource for Smarty template
- * {@internal unlike string-resources the compiled state of eval-resources is NOT saved for subsequent access}}
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-class Smarty_Internal_Resource_Eval extends Smarty_Resource_Recompiled
-{
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $source->uid = $source->filepath = sha1($source->name);
- $source->timestamp = $source->exists = true;
- }
-
- /**
- * Load template's source from $resource_name into current template object
- *
- * @uses decode() to decode base64 and urlencoded template_resources
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- */
- public function getContent(Smarty_Template_Source $source)
- {
- return $this->decode($source->name);
- }
-
- /**
- * decode base64 and urlencode
- *
- * @param string $string template_resource to decode
- *
- * @return string decoded template_resource
- */
- protected function decode($string)
- {
- // decode if specified
- if (($pos = strpos($string, ':')) !== false) {
- if (!strncmp($string, 'base64', 6)) {
- return base64_decode(substr($string, 7));
- } elseif (!strncmp($string, 'urlencode', 9)) {
- return urldecode(substr($string, 10));
- }
- }
- return $string;
- }
-
- /**
- * modify resource_name according to resource handlers specifications
- *
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
- * @param boolean $isConfig flag for config resource
- *
- * @return string unique resource name
- */
- public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
- {
- return get_class($this) . '#' . $this->decode($resource_name);
- }
-
- /**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return '';
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
deleted file mode 100644
index 80946932e..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Resource Extends
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource Extends
- * Implements the file system as resource for Smarty which {extend}s a chain of template files templates
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-class Smarty_Internal_Resource_Extends extends Smarty_Resource
-{
- /**
- * mbstring.overload flag
- *
- * @var int
- */
- public $mbstring_overload = 0;
-
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @throws SmartyException
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $uid = '';
- $sources = array();
- $components = explode('|', $source->name);
- $smarty = &$source->smarty;
- $exists = true;
- foreach ($components as $component) {
- /* @var \Smarty_Template_Source $_s */
- $_s = Smarty_Template_Source::load(null, $smarty, $component);
- if ($_s->type === 'php') {
- throw new SmartyException("Resource type {$_s->type} cannot be used with the extends resource type");
- }
- $sources[ $_s->uid ] = $_s;
- $uid .= $_s->filepath;
- if ($_template) {
- $exists = $exists && $_s->exists;
- }
- }
- $source->components = $sources;
- $source->filepath = $_s->filepath;
- $source->uid = sha1($uid . $source->smarty->_joined_template_dir);
- $source->exists = $exists;
- if ($_template) {
- $source->timestamp = $_s->timestamp;
- }
- }
-
- /**
- * populate Source Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Source $source source object
- */
- public function populateTimestamp(Smarty_Template_Source $source)
- {
- $source->exists = true;
- /* @var \Smarty_Template_Source $_s */
- foreach ($source->components as $_s) {
- $source->exists = $source->exists && $_s->exists;
- }
- $source->timestamp = $source->exists ? $_s->getTimeStamp() : false;
- }
-
- /**
- * Load template's source from files into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- public function getContent(Smarty_Template_Source $source)
- {
- if (!$source->exists) {
- throw new SmartyException("Unable to load template '{$source->type}:{$source->name}'");
- }
- $_components = array_reverse($source->components);
- $_content = '';
- /* @var \Smarty_Template_Source $_s */
- foreach ($_components as $_s) {
- // read content
- $_content .= $_s->getContent();
- }
- return $_content;
- }
-
- /**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return str_replace(':', '.', basename($source->filepath));
- }
-
- /*
- * Disable timestamp checks for extends resource.
- * The individual source components will be checked.
- *
- * @return bool
- */
- /**
- * @return bool
- */
- public function checkTimestamps()
- {
- return false;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
deleted file mode 100644
index ae2060673..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
+++ /dev/null
@@ -1,180 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Resource File
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource File
- * Implements the file system as resource for Smarty templates
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-class Smarty_Internal_Resource_File extends Smarty_Resource
-{
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @throws \SmartyException
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $source->filepath = $this->buildFilepath($source, $_template);
- if ($source->filepath !== false) {
- if (isset($source->smarty->security_policy) && is_object($source->smarty->security_policy)) {
- $source->smarty->security_policy->isTrustedResourceDir($source->filepath, $source->isConfig);
- }
- $source->exists = true;
- $source->uid = sha1(
- $source->filepath . ($source->isConfig ? $source->smarty->_joined_config_dir :
- $source->smarty->_joined_template_dir)
- );
- $source->timestamp = filemtime($source->filepath);
- } else {
- $source->timestamp = $source->exists = false;
- }
- }
-
- /**
- * populate Source Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Source $source source object
- */
- public function populateTimestamp(Smarty_Template_Source $source)
- {
- if (!$source->exists) {
- $source->timestamp = $source->exists = is_file($source->filepath);
- }
- if ($source->exists) {
- $source->timestamp = filemtime($source->filepath);
- }
- }
-
- /**
- * Load template's source from file into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- public function getContent(Smarty_Template_Source $source)
- {
- if ($source->exists) {
- return file_get_contents($source->filepath);
- }
- throw new SmartyException(
- 'Unable to read ' . ($source->isConfig ? 'config' : 'template') .
- " {$source->type} '{$source->name}'"
- );
- }
-
- /**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return basename($source->filepath);
- }
-
- /**
- * build template filepath by traversing the template_dir array
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string fully qualified filepath
- * @throws SmartyException
- */
- protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $file = $source->name;
- // absolute file ?
- if ($file[ 0 ] === '/' || $file[ 1 ] === ':') {
- $file = $source->smarty->_realpath($file, true);
- return is_file($file) ? $file : false;
- }
- // go relative to a given template?
- if ($file[ 0 ] === '.' && $_template && $_template->_isSubTpl()
- && preg_match('#^[.]{1,2}[\\\/]#', $file)
- ) {
- if ($_template->parent->source->type !== 'file' && $_template->parent->source->type !== 'extends'
- && !isset($_template->parent->_cache[ 'allow_relative_path' ])
- ) {
- throw new SmartyException("Template '{$file}' cannot be relative to template of resource type '{$_template->parent->source->type}'");
- }
- // normalize path
- $path =
- $source->smarty->_realpath(dirname($_template->parent->source->filepath) . DIRECTORY_SEPARATOR . $file);
- // files relative to a template only get one shot
- return is_file($path) ? $path : false;
- }
- // normalize DIRECTORY_SEPARATOR
- if (strpos($file, DIRECTORY_SEPARATOR === '/' ? '\\' : '/') !== false) {
- $file = str_replace(DIRECTORY_SEPARATOR === '/' ? '\\' : '/', DIRECTORY_SEPARATOR, $file);
- }
- $_directories = $source->smarty->getTemplateDir(null, $source->isConfig);
- // template_dir index?
- if ($file[ 0 ] === '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) {
- $file = $fileMatch[ 2 ];
- $_indices = explode(',', $fileMatch[ 1 ]);
- $_index_dirs = array();
- foreach ($_indices as $index) {
- $index = trim($index);
- // try string indexes
- if (isset($_directories[ $index ])) {
- $_index_dirs[] = $_directories[ $index ];
- } elseif (is_numeric($index)) {
- // try numeric index
- $index = (int)$index;
- if (isset($_directories[ $index ])) {
- $_index_dirs[] = $_directories[ $index ];
- } else {
- // try at location index
- $keys = array_keys($_directories);
- if (isset($_directories[ $keys[ $index ] ])) {
- $_index_dirs[] = $_directories[ $keys[ $index ] ];
- }
- }
- }
- }
- if (empty($_index_dirs)) {
- // index not found
- return false;
- } else {
- $_directories = $_index_dirs;
- }
- }
- // relative file name?
- foreach ($_directories as $_directory) {
- $path = $_directory . $file;
- if (is_file($path)) {
- return (strpos($path, '.' . DIRECTORY_SEPARATOR) !== false) ? $source->smarty->_realpath($path) : $path;
- }
- }
- if (!isset($_index_dirs)) {
- // Could be relative to cwd
- $path = $source->smarty->_realpath($file, true);
- if (is_file($path)) {
- return $path;
- }
- }
- // Use include path ?
- if ($source->smarty->use_include_path) {
- return $source->smarty->ext->_getIncludePath->getIncludePath($_directories, $file, $source->smarty);
- }
- return false;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php
deleted file mode 100644
index 9d98ae181..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-
-/**
- * Smarty Internal Plugin Resource PHP
- * Implements the file system as resource for PHP templates
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-class Smarty_Internal_Resource_Php extends Smarty_Internal_Resource_File
-{
- /**
- * Flag that it's an uncompiled resource
- *
- * @var bool
- */
- public $uncompiled = true;
-
- /**
- * Resource does implement populateCompiledFilepath() method
- *
- * @var bool
- */
- public $hasCompiledHandler = true;
-
- /**
- * container for short_open_tag directive's value before executing PHP templates
- *
- * @var string
- */
- protected $short_open_tag;
-
- /**
- * Create a new PHP Resource
- */
- public function __construct()
- {
- $this->short_open_tag = function_exists('ini_get') ? ini_get('short_open_tag') : 1;
- }
-
- /**
- * Load template's source from file into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- public function getContent(Smarty_Template_Source $source)
- {
- if ($source->exists) {
- return '';
- }
- throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
- }
-
- /**
- * populate compiled object with compiled filepath
- *
- * @param Smarty_Template_Compiled $compiled compiled object
- * @param Smarty_Internal_Template $_template template object (is ignored)
- */
- public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
- {
- $compiled->filepath = $_template->source->filepath;
- $compiled->timestamp = $_template->source->timestamp;
- $compiled->exists = $_template->source->exists;
- $compiled->file_dependency[ $_template->source->uid ] =
- array(
- $compiled->filepath,
- $compiled->timestamp,
- $_template->source->type,
- );
- }
-
- /**
- * Render and output the template (without using the compiler)
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- * @throws SmartyException if template cannot be loaded or allow_php_templates is disabled
- */
- public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
- {
- if (!$source->smarty->allow_php_templates) {
- throw new SmartyException('PHP templates are disabled');
- }
- if (!$source->exists) {
- throw new SmartyException(
- "Unable to load template '{$source->type}:{$source->name}'" .
- ($_template->_isSubTpl() ? " in '{$_template->parent->template_resource}'" : '')
- );
- }
- // prepare variables
- extract($_template->getTemplateVars());
- // include PHP template with short open tags enabled
- if (function_exists('ini_set')) {
- ini_set('short_open_tag', '1');
- }
- /**
- *
- *
- * @var Smarty_Internal_Template $_smarty_template
- * used in included file
- */
- $_smarty_template = $_template;
- include $source->filepath;
- if (function_exists('ini_set')) {
- ini_set('short_open_tag', $this->short_open_tag);
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
deleted file mode 100644
index 5f0203498..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Resource Stream
- * Implements the streams as resource for Smarty template
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource Stream
- * Implements the streams as resource for Smarty template
- *
- * @link https://php.net/streams
- * @package Smarty
- * @subpackage TemplateResources
- */
-class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled
-{
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- if (strpos($source->resource, '://') !== false) {
- $source->filepath = $source->resource;
- } else {
- $source->filepath = str_replace(':', '://', $source->resource);
- }
- $source->uid = false;
- $source->content = $this->getContent($source);
- $source->timestamp = $source->exists = !!$source->content;
- }
-
- /**
- * Load template's source from stream into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- */
- public function getContent(Smarty_Template_Source $source)
- {
- $t = '';
- // the availability of the stream has already been checked in Smarty_Resource::fetch()
- $fp = fopen($source->filepath, 'r+');
- if ($fp) {
- while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
- $t .= $current_line;
- }
- fclose($fp);
- return $t;
- } else {
- return false;
- }
- }
-
- /**
- * modify resource_name according to resource handlers specifications
- *
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
- * @param boolean $isConfig flag for config resource
- *
- * @return string unique resource name
- */
- public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
- {
- return get_class($this) . '#' . $resource_name;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
deleted file mode 100644
index 3fecbb7ef..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Resource String
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource String
- * Implements the strings as resource for Smarty template
- * {@internal unlike eval-resources the compiled state of string-resources is saved for subsequent access}}
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-class Smarty_Internal_Resource_String extends Smarty_Resource
-{
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $source->uid = $source->filepath = sha1($source->name . $source->smarty->_joined_template_dir);
- $source->timestamp = $source->exists = true;
- }
-
- /**
- * Load template's source from $resource_name into current template object
- *
- * @uses decode() to decode base64 and urlencoded template_resources
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- */
- public function getContent(Smarty_Template_Source $source)
- {
- return $this->decode($source->name);
- }
-
- /**
- * decode base64 and urlencode
- *
- * @param string $string template_resource to decode
- *
- * @return string decoded template_resource
- */
- protected function decode($string)
- {
- // decode if specified
- if (($pos = strpos($string, ':')) !== false) {
- if (!strncmp($string, 'base64', 6)) {
- return base64_decode(substr($string, 7));
- } elseif (!strncmp($string, 'urlencode', 9)) {
- return urldecode(substr($string, 10));
- }
- }
- return $string;
- }
-
- /**
- * modify resource_name according to resource handlers specifications
- *
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
- * @param boolean $isConfig flag for config resource
- *
- * @return string unique resource name
- */
- public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
- {
- return get_class($this) . '#' . $this->decode($resource_name);
- }
-
- /**
- * Determine basename for compiled filename
- * Always returns an empty string.
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return '';
- }
-
- /*
- * Disable timestamp checks for string resource.
- *
- * @return bool
- */
- /**
- * @return bool
- */
- public function checkTimestamps()
- {
- return false;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
deleted file mode 100644
index 6e12d2ae1..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/**
- * Inline Runtime Methods render, setSourceByUid, setupSubTemplate
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- **/
-class Smarty_Internal_Runtime_CacheModify
-{
- /**
- * check client side cache
- *
- * @param \Smarty_Template_Cached $cached
- * @param \Smarty_Internal_Template $_template
- * @param string $content
- *
- * @throws \Exception
- * @throws \SmartyException
- */
- public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
- {
- $_isCached = $_template->isCached() && !$_template->compiled->has_nocache_code;
- $_last_modified_date =
- @substr($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 0, strpos($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 'GMT') + 3);
- if ($_isCached && $cached->timestamp <= strtotime($_last_modified_date)) {
- switch (PHP_SAPI) {
- case 'cgi': // php-cgi < 5.3
- case 'cgi-fcgi': // php-cgi >= 5.3
- case 'fpm-fcgi': // php-fpm >= 5.3.3
- header('Status: 304 Not Modified');
- break;
- case 'cli':
- if (/* ^phpunit */
- !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
- ) {
- $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified';
- }
- break;
- default:
- if (/* ^phpunit */
- !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
- ) {
- $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified';
- } else {
- header($_SERVER[ 'SERVER_PROTOCOL' ] . ' 304 Not Modified');
- }
- break;
- }
- } else {
- switch (PHP_SAPI) {
- case 'cli':
- if (/* ^phpunit */
- !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
- ) {
- $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] =
- 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT';
- }
- break;
- default:
- header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT');
- break;
- }
- echo $content;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php
deleted file mode 100644
index 287096438..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-/**
- * Smarty cache resource file clear method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Runtime Cache Resource File Class
- *
- * @package Smarty
- * @subpackage PluginsInternal
- */
-class Smarty_Internal_Runtime_CacheResourceFile
-{
- /**
- * Empty cache for a specific template
- *
- * @param Smarty $smarty
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
- {
- $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null;
- $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
- $_dir_sep = $smarty->use_sub_dirs ? '/' : '^';
- $_compile_id_offset = $smarty->use_sub_dirs ? 3 : 0;
- $_dir = $smarty->getCacheDir();
- if ($_dir === '/') { //We should never want to delete this!
- return 0;
- }
- $_dir_length = strlen($_dir);
- if (isset($_cache_id)) {
- $_cache_id_parts = explode('|', $_cache_id);
- $_cache_id_parts_count = count($_cache_id_parts);
- if ($smarty->use_sub_dirs) {
- foreach ($_cache_id_parts as $id_part) {
- $_dir .= $id_part . '/';
- }
- }
- }
- if (isset($resource_name)) {
- $_save_stat = $smarty->caching;
- $smarty->caching = Smarty::CACHING_LIFETIME_CURRENT;
- $tpl = new $smarty->template_class($resource_name, $smarty);
- $smarty->caching = $_save_stat;
- // remove from template cache
- $tpl->source; // have the template registered before unset()
- if ($tpl->source->exists) {
- $_resourcename_parts = basename(str_replace('^', '/', $tpl->cached->filepath));
- } else {
- return 0;
- }
- }
- $_count = 0;
- $_time = time();
- if (file_exists($_dir)) {
- $_cacheDirs = new RecursiveDirectoryIterator($_dir);
- $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
- foreach ($_cache as $_file) {
- if (substr(basename($_file->getPathname()), 0, 1) === '.') {
- continue;
- }
- $_filepath = (string)$_file;
- // directory ?
- if ($_file->isDir()) {
- if (!$_cache->isDot()) {
- // delete folder if empty
- @rmdir($_file->getPathname());
- }
- } else {
- // delete only php files
- if (substr($_filepath, -4) !== '.php') {
- continue;
- }
- $_parts = explode($_dir_sep, str_replace('\\', '/', substr($_filepath, $_dir_length)));
- $_parts_count = count($_parts);
- // check name
- if (isset($resource_name)) {
- if ($_parts[ $_parts_count - 1 ] !== $_resourcename_parts) {
- continue;
- }
- }
- // check compile id
- if (isset($_compile_id) && (!isset($_parts[ $_parts_count - 2 - $_compile_id_offset ])
- || $_parts[ $_parts_count - 2 - $_compile_id_offset ] !== $_compile_id)
- ) {
- continue;
- }
- // check cache id
- if (isset($_cache_id)) {
- // count of cache id parts
- $_parts_count = (isset($_compile_id)) ? $_parts_count - 2 - $_compile_id_offset :
- $_parts_count - 1 - $_compile_id_offset;
- if ($_parts_count < $_cache_id_parts_count) {
- continue;
- }
- for ($i = 0; $i < $_cache_id_parts_count; $i++) {
- if ($_parts[ $i ] !== $_cache_id_parts[ $i ]) {
- continue 2;
- }
- }
- }
- if (is_file($_filepath)) {
- // expired ?
- if (isset($exp_time)) {
- if ($exp_time < 0) {
- preg_match('#\'cache_lifetime\' =>\s*(\d*)#', file_get_contents($_filepath), $match);
- if ($_time < (filemtime($_filepath) + $match[ 1 ])) {
- continue;
- }
- } else {
- if ($_time - filemtime($_filepath) < $exp_time) {
- continue;
- }
- }
- }
- $_count += @unlink($_filepath) ? 1 : 0;
- if (function_exists('opcache_invalidate')
- && (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1)
- ) {
- opcache_invalidate($_filepath, true);
- } elseif (function_exists('apc_delete_file')) {
- apc_delete_file($_filepath);
- }
- }
- }
- }
- }
- return $_count;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php
deleted file mode 100644
index c9dca83d9..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php
+++ /dev/null
@@ -1,174 +0,0 @@
-<?php
-
-/**
- * Runtime Extension Capture
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Runtime_Capture
-{
- /**
- * Flag that this instance will not be cached
- *
- * @var bool
- */
- public $isPrivateExtension = true;
-
- /**
- * Stack of capture parameter
- *
- * @var array
- */
- private $captureStack = array();
-
- /**
- * Current open capture sections
- *
- * @var int
- */
- private $captureCount = 0;
-
- /**
- * Count stack
- *
- * @var int[]
- */
- private $countStack = array();
-
- /**
- * Named buffer
- *
- * @var string[]
- */
- private $namedBuffer = array();
-
- /**
- * Flag if callbacks are registered
- *
- * @var bool
- */
- private $isRegistered = false;
-
- /**
- * Open capture section
- *
- * @param \Smarty_Internal_Template $_template
- * @param string $buffer capture name
- * @param string $assign variable name
- * @param string $append variable name
- */
- public function open(Smarty_Internal_Template $_template, $buffer, $assign, $append)
- {
- if (!$this->isRegistered) {
- $this->register($_template);
- }
- $this->captureStack[] = array(
- $buffer,
- $assign,
- $append
- );
- $this->captureCount++;
- ob_start();
- }
-
- /**
- * Register callbacks in template class
- *
- * @param \Smarty_Internal_Template $_template
- */
- private function register(Smarty_Internal_Template $_template)
- {
- $_template->startRenderCallbacks[] = array(
- $this,
- 'startRender'
- );
- $_template->endRenderCallbacks[] = array(
- $this,
- 'endRender'
- );
- $this->startRender($_template);
- $this->isRegistered = true;
- }
-
- /**
- * Start render callback
- *
- * @param \Smarty_Internal_Template $_template
- */
- public function startRender(Smarty_Internal_Template $_template)
- {
- $this->countStack[] = $this->captureCount;
- $this->captureCount = 0;
- }
-
- /**
- * Close capture section
- *
- * @param \Smarty_Internal_Template $_template
- *
- * @throws \SmartyException
- */
- public function close(Smarty_Internal_Template $_template)
- {
- if ($this->captureCount) {
- list($buffer, $assign, $append) = array_pop($this->captureStack);
- $this->captureCount--;
- if (isset($assign)) {
- $_template->assign($assign, ob_get_contents());
- }
- if (isset($append)) {
- $_template->append($append, ob_get_contents());
- }
- $this->namedBuffer[ $buffer ] = ob_get_clean();
- } else {
- $this->error($_template);
- }
- }
-
- /**
- * Error exception on not matching {capture}{/capture}
- *
- * @param \Smarty_Internal_Template $_template
- *
- * @throws \SmartyException
- */
- public function error(Smarty_Internal_Template $_template)
- {
- throw new SmartyException("Not matching {capture}{/capture} in '{$_template->template_resource}'");
- }
-
- /**
- * Return content of named capture buffer by key or as array
- *
- * @param \Smarty_Internal_Template $_template
- * @param string|null $name
- *
- * @return string|string[]|null
- */
- public function getBuffer(Smarty_Internal_Template $_template, $name = null)
- {
- if (isset($name)) {
- return isset($this->namedBuffer[ $name ]) ? $this->namedBuffer[ $name ] : null;
- } else {
- return $this->namedBuffer;
- }
- }
-
- /**
- * End render callback
- *
- * @param \Smarty_Internal_Template $_template
- *
- * @throws \SmartyException
- */
- public function endRender(Smarty_Internal_Template $_template)
- {
- if ($this->captureCount) {
- $this->error($_template);
- } else {
- $this->captureCount = array_pop($this->countStack);
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
deleted file mode 100644
index d0ca751e2..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-/**
- * Smarty Internal Extension
- * This file contains the Smarty template extension to create a code frame
- *
- * @package Smarty
- * @subpackage Template
- * @author Uwe Tews
- */
-
-/**
- * Class Smarty_Internal_Extension_CodeFrame
- * Create code frame for compiled and cached templates
- */
-class Smarty_Internal_Runtime_CodeFrame
-{
- /**
- * Create code frame for compiled and cached templates
- *
- * @param Smarty_Internal_Template $_template
- * @param string $content optional template content
- * @param string $functions compiled template function and block code
- * @param bool $cache flag for cache file
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- *
- * @return string
- */
- public function create(
- Smarty_Internal_Template $_template,
- $content = '',
- $functions = '',
- $cache = false,
- Smarty_Internal_TemplateCompilerBase $compiler = null
- ) {
- // build property code
- $properties[ 'version' ] = Smarty::SMARTY_VERSION;
- $properties[ 'unifunc' ] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
- if (!$cache) {
- $properties[ 'has_nocache_code' ] = $_template->compiled->has_nocache_code;
- $properties[ 'file_dependency' ] = $_template->compiled->file_dependency;
- $properties[ 'includes' ] = $_template->compiled->includes;
- } else {
- $properties[ 'has_nocache_code' ] = $_template->cached->has_nocache_code;
- $properties[ 'file_dependency' ] = $_template->cached->file_dependency;
- $properties[ 'cache_lifetime' ] = $_template->cache_lifetime;
- }
- $output = sprintf(
- "<?php\n/* Smarty version %s, created on %s\n from '%s' */\n\n",
- $properties[ 'version' ],
- date("Y-m-d H:i:s"),
- str_replace('*/', '* /', $_template->source->filepath)
- );
- $output .= "/* @var Smarty_Internal_Template \$_smarty_tpl */\n";
- $dec = "\$_smarty_tpl->_decodeProperties(\$_smarty_tpl, " . var_export($properties, true) . ',' .
- ($cache ? 'true' : 'false') . ')';
- $output .= "if ({$dec}) {\n";
- $output .= "function {$properties['unifunc']} (Smarty_Internal_Template \$_smarty_tpl) {\n";
- if (!$cache && !empty($compiler->tpl_function)) {
- $output .= '$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions($_smarty_tpl, ';
- $output .= var_export($compiler->tpl_function, true);
- $output .= ");\n";
- }
- if ($cache && isset($_template->smarty->ext->_tplFunction)) {
- $output .= "\$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions(\$_smarty_tpl, " .
- var_export($_template->smarty->ext->_tplFunction->getTplFunction($_template), true) . ");\n";
- }
- $output .= "?>";
- $output .= $content;
- $output .= "<?php }\n?>";
- $output .= $functions;
- $output .= "<?php }\n";
- // remove unneeded PHP tags
- if (preg_match('/\s*\?>[\n]?<\?php\s*/', $output)) {
- $curr_split = preg_split(
- '/\s*\?>[\n]?<\?php\s*/',
- $output
- );
- preg_match_all(
- '/\s*\?>[\n]?<\?php\s*/',
- $output,
- $curr_parts
- );
- $output = '';
- foreach ($curr_split as $idx => $curr_output) {
- $output .= $curr_output;
- if (isset($curr_parts[ 0 ][ $idx ])) {
- $output .= "\n";
- }
- }
- }
- if (preg_match('/\?>\s*$/', $output)) {
- $curr_split = preg_split(
- '/\?>\s*$/',
- $output
- );
- $output = '';
- foreach ($curr_split as $idx => $curr_output) {
- $output .= $curr_output;
- }
- }
- return $output;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
deleted file mode 100644
index 9f868e1a4..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Filter Handler
- * Smarty filter handler class
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-
-/**
- * Class for filter processing
- *
- * @package Smarty
- * @subpackage PluginsInternal
- */
-class Smarty_Internal_Runtime_FilterHandler
-{
- /**
- * Run filters over content
- * The filters will be lazy loaded if required
- * class name format: Smarty_FilterType_FilterName
- * plugin filename format: filtertype.filtername.php
- * Smarty2 filter plugins could be used
- *
- * @param string $type the type of filter ('pre','post','output') which shall run
- * @param string $content the content which shall be processed by the filters
- * @param Smarty_Internal_Template $template template object
- *
- * @throws SmartyException
- * @return string the filtered content
- */
- public function runFilter($type, $content, Smarty_Internal_Template $template)
- {
- // loop over autoload filters of specified type
- if (!empty($template->smarty->autoload_filters[ $type ])) {
- foreach ((array)$template->smarty->autoload_filters[ $type ] as $name) {
- $plugin_name = "Smarty_{$type}filter_{$name}";
- if (function_exists($plugin_name)) {
- $callback = $plugin_name;
- } elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) {
- $callback = array($plugin_name, 'execute');
- } elseif ($template->smarty->loadPlugin($plugin_name, false)) {
- if (function_exists($plugin_name)) {
- // use loaded Smarty2 style plugin
- $callback = $plugin_name;
- } elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) {
- // loaded class of filter plugin
- $callback = array($plugin_name, 'execute');
- } else {
- throw new SmartyException("Auto load {$type}-filter plugin method '{$plugin_name}::execute' not callable");
- }
- } else {
- // nothing found, throw exception
- throw new SmartyException("Unable to auto load {$type}-filter plugin '{$plugin_name}'");
- }
- $content = call_user_func($callback, $content, $template);
- }
- }
- // loop over registered filters of specified type
- if (!empty($template->smarty->registered_filters[ $type ])) {
- foreach ($template->smarty->registered_filters[ $type ] as $key => $name) {
- $content = call_user_func($template->smarty->registered_filters[ $type ][ $key ], $content, $template);
- }
- }
- // return filtered output
- return $content;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
deleted file mode 100644
index badead165..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?php
-
-/**
- * Foreach Runtime Methods count(), init(), restore()
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Runtime_Foreach
-{
- /**
- * Stack of saved variables
- *
- * @var array
- */
- private $stack = array();
-
- /**
- * Init foreach loop
- * - save item and key variables, named foreach property data if defined
- * - init item and key variables, named foreach property data if required
- * - count total if required
- *
- * @param \Smarty_Internal_Template $tpl
- * @param mixed $from values to loop over
- * @param string $item variable name
- * @param bool $needTotal flag if we need to count values
- * @param null|string $key variable name
- * @param null|string $name of named foreach
- * @param array $properties of named foreach
- *
- * @return mixed $from
- */
- public function init(
- Smarty_Internal_Template $tpl,
- $from,
- $item,
- $needTotal = false,
- $key = null,
- $name = null,
- $properties = array()
- ) {
- $needTotal = $needTotal || isset($properties[ 'total' ]);
- $saveVars = array();
- $total = null;
- if (!is_array($from)) {
- if (is_object($from)) {
- if ($needTotal) {
- $total = $this->count($from);
- }
- } else {
- settype($from, 'array');
- }
- }
- if (!isset($total)) {
- $total = empty($from) ? 0 : ($needTotal ? count($from) : 1);
- }
- if (isset($tpl->tpl_vars[ $item ])) {
- $saveVars[ 'item' ] = array(
- $item,
- $tpl->tpl_vars[ $item ]
- );
- }
- $tpl->tpl_vars[ $item ] = new Smarty_Variable(null, $tpl->isRenderingCache);
- if ($total === 0) {
- $from = null;
- } else {
- if ($key) {
- if (isset($tpl->tpl_vars[ $key ])) {
- $saveVars[ 'key' ] = array(
- $key,
- $tpl->tpl_vars[ $key ]
- );
- }
- $tpl->tpl_vars[ $key ] = new Smarty_Variable(null, $tpl->isRenderingCache);
- }
- }
- if ($needTotal) {
- $tpl->tpl_vars[ $item ]->total = $total;
- }
- if ($name) {
- $namedVar = "__smarty_foreach_{$name}";
- if (isset($tpl->tpl_vars[ $namedVar ])) {
- $saveVars[ 'named' ] = array(
- $namedVar,
- $tpl->tpl_vars[ $namedVar ]
- );
- }
- $namedProp = array();
- if (isset($properties[ 'total' ])) {
- $namedProp[ 'total' ] = $total;
- }
- if (isset($properties[ 'iteration' ])) {
- $namedProp[ 'iteration' ] = 0;
- }
- if (isset($properties[ 'index' ])) {
- $namedProp[ 'index' ] = -1;
- }
- if (isset($properties[ 'show' ])) {
- $namedProp[ 'show' ] = ($total > 0);
- }
- $tpl->tpl_vars[ $namedVar ] = new Smarty_Variable($namedProp);
- }
- $this->stack[] = $saveVars;
- return $from;
- }
-
- /**
- * [util function] counts an array, arrayAccess/traversable or PDOStatement object
- *
- * @param mixed $value
- *
- * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0
- * for empty elements
- */
- public function count($value)
- {
- if ($value instanceof IteratorAggregate) {
- // Note: getIterator() returns a Traversable, not an Iterator
- // thus rewind() and valid() methods may not be present
- return iterator_count($value->getIterator());
- } elseif ($value instanceof Iterator) {
- return $value instanceof Generator ? 1 : iterator_count($value);
- } elseif ($value instanceof Countable) {
- return count($value);
- } elseif ($value instanceof PDOStatement) {
- return $value->rowCount();
- } elseif ($value instanceof Traversable) {
- return iterator_count($value);
- }
- return count((array)$value);
- }
-
- /**
- * Restore saved variables
- *
- * will be called by {break n} or {continue n} for the required number of levels
- *
- * @param \Smarty_Internal_Template $tpl
- * @param int $levels number of levels
- */
- public function restore(Smarty_Internal_Template $tpl, $levels = 1)
- {
- while ($levels) {
- $saveVars = array_pop($this->stack);
- if (!empty($saveVars)) {
- if (isset($saveVars[ 'item' ])) {
- $item = &$saveVars[ 'item' ];
- $tpl->tpl_vars[ $item[ 0 ] ]->value = $item[ 1 ]->value;
- }
- if (isset($saveVars[ 'key' ])) {
- $tpl->tpl_vars[ $saveVars[ 'key' ][ 0 ] ] = $saveVars[ 'key' ][ 1 ];
- }
- if (isset($saveVars[ 'named' ])) {
- $tpl->tpl_vars[ $saveVars[ 'named' ][ 0 ] ] = $saveVars[ 'named' ][ 1 ];
- }
- }
- $levels--;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
deleted file mode 100644
index 5ae98304e..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-/**
- * Smarty read include path plugin
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Monte Ohrt
- */
-
-/**
- * Smarty Internal Read Include Path Class
- *
- * @package Smarty
- * @subpackage PluginsInternal
- */
-class Smarty_Internal_Runtime_GetIncludePath
-{
- /**
- * include path cache
- *
- * @var string
- */
- public $_include_path = '';
-
- /**
- * include path directory cache
- *
- * @var array
- */
- public $_include_dirs = array();
-
- /**
- * include path directory cache
- *
- * @var array
- */
- public $_user_dirs = array();
-
- /**
- * stream cache
- *
- * @var string[][]
- */
- public $isFile = array();
-
- /**
- * stream cache
- *
- * @var string[]
- */
- public $isPath = array();
-
- /**
- * stream cache
- *
- * @var int[]
- */
- public $number = array();
-
- /**
- * status cache
- *
- * @var bool
- */
- public $_has_stream_include = null;
-
- /**
- * Number for array index
- *
- * @var int
- */
- public $counter = 0;
-
- /**
- * Check if include path was updated
- *
- * @param \Smarty $smarty
- *
- * @return bool
- */
- public function isNewIncludePath(Smarty $smarty)
- {
- $_i_path = get_include_path();
- if ($this->_include_path !== $_i_path) {
- $this->_include_dirs = array();
- $this->_include_path = $_i_path;
- $_dirs = (array)explode(PATH_SEPARATOR, $_i_path);
- foreach ($_dirs as $_path) {
- if (is_dir($_path)) {
- $this->_include_dirs[] = $smarty->_realpath($_path . DIRECTORY_SEPARATOR, true);
- }
- }
- return true;
- }
- return false;
- }
-
- /**
- * return array with include path directories
- *
- * @param \Smarty $smarty
- *
- * @return array
- */
- public function getIncludePathDirs(Smarty $smarty)
- {
- $this->isNewIncludePath($smarty);
- return $this->_include_dirs;
- }
-
- /**
- * Return full file path from PHP include_path
- *
- * @param string[] $dirs
- * @param string $file
- * @param \Smarty $smarty
- *
- * @return bool|string full filepath or false
- */
- public function getIncludePath($dirs, $file, Smarty $smarty)
- {
- //if (!(isset($this->_has_stream_include) ? $this->_has_stream_include : $this->_has_stream_include = false)) {
- if (!(isset($this->_has_stream_include) ? $this->_has_stream_include :
- $this->_has_stream_include = function_exists('stream_resolve_include_path'))
- ) {
- $this->isNewIncludePath($smarty);
- }
- // try PHP include_path
- foreach ($dirs as $dir) {
- $dir_n = isset($this->number[ $dir ]) ? $this->number[ $dir ] : $this->number[ $dir ] = $this->counter++;
- if (isset($this->isFile[ $dir_n ][ $file ])) {
- if ($this->isFile[ $dir_n ][ $file ]) {
- return $this->isFile[ $dir_n ][ $file ];
- } else {
- continue;
- }
- }
- if (isset($this->_user_dirs[ $dir_n ])) {
- if (false === $this->_user_dirs[ $dir_n ]) {
- continue;
- } else {
- $dir = $this->_user_dirs[ $dir_n ];
- }
- } else {
- if ($dir[ 0 ] === '/' || $dir[ 1 ] === ':') {
- $dir = str_ireplace(getcwd(), '.', $dir);
- if ($dir[ 0 ] === '/' || $dir[ 1 ] === ':') {
- $this->_user_dirs[ $dir_n ] = false;
- continue;
- }
- }
- $dir = substr($dir, 2);
- $this->_user_dirs[ $dir_n ] = $dir;
- }
- if ($this->_has_stream_include) {
- $path = stream_resolve_include_path($dir . (isset($file) ? $file : ''));
- if ($path) {
- return $this->isFile[ $dir_n ][ $file ] = $path;
- }
- } else {
- foreach ($this->_include_dirs as $key => $_i_path) {
- $path = isset($this->isPath[ $key ][ $dir_n ]) ? $this->isPath[ $key ][ $dir_n ] :
- $this->isPath[ $key ][ $dir_n ] = is_dir($_dir_path = $_i_path . $dir) ? $_dir_path : false;
- if ($path === false) {
- continue;
- }
- if (isset($file)) {
- $_file = $this->isFile[ $dir_n ][ $file ] = (is_file($path . $file)) ? $path . $file : false;
- if ($_file) {
- return $_file;
- }
- } else {
- // no file was given return directory path
- return $path;
- }
- }
- }
- }
- return false;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
deleted file mode 100644
index 8f7f02d59..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
+++ /dev/null
@@ -1,251 +0,0 @@
-<?php
-
-/**
- * Inheritance Runtime Methods processBlock, endChild, init
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- **/
-class Smarty_Internal_Runtime_Inheritance
-{
- /**
- * State machine
- * - 0 idle next extends will create a new inheritance tree
- * - 1 processing child template
- * - 2 wait for next inheritance template
- * - 3 assume parent template, if child will loaded goto state 1
- * a call to a sub template resets the state to 0
- *
- * @var int
- */
- public $state = 0;
-
- /**
- * Array of root child {block} objects
- *
- * @var Smarty_Internal_Block[]
- */
- public $childRoot = array();
-
- /**
- * inheritance template nesting level
- *
- * @var int
- */
- public $inheritanceLevel = 0;
-
- /**
- * inheritance template index
- *
- * @var int
- */
- public $tplIndex = -1;
-
- /**
- * Array of template source objects
- *
- * @var Smarty_Template_Source[]
- */
- public $sources = array();
-
- /**
- * Stack of source objects while executing block code
- *
- * @var Smarty_Template_Source[]
- */
- public $sourceStack = array();
-
- /**
- * Initialize inheritance
- *
- * @param \Smarty_Internal_Template $tpl template object of caller
- * @param bool $initChild if true init for child template
- * @param array $blockNames outer level block name
- */
- public function init(Smarty_Internal_Template $tpl, $initChild, $blockNames = array())
- {
- // if called while executing parent template it must be a sub-template with new inheritance root
- if ($initChild && $this->state === 3 && (strpos($tpl->template_resource, 'extendsall') === false)) {
- $tpl->inheritance = new Smarty_Internal_Runtime_Inheritance();
- $tpl->inheritance->init($tpl, $initChild, $blockNames);
- return;
- }
- ++$this->tplIndex;
- $this->sources[ $this->tplIndex ] = $tpl->source;
- // start of child sub template(s)
- if ($initChild) {
- $this->state = 1;
- if (!$this->inheritanceLevel) {
- //grab any output of child templates
- ob_start();
- }
- ++$this->inheritanceLevel;
- // $tpl->startRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateStart');
- // $tpl->endRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateEnd');
- }
- // if state was waiting for parent change state to parent
- if ($this->state === 2) {
- $this->state = 3;
- }
- }
-
- /**
- * End of child template(s)
- * - if outer level is reached flush output buffer and switch to wait for parent template state
- *
- * @param \Smarty_Internal_Template $tpl
- * @param null|string $template optional name of inheritance parent template
- * @param null|string $uid uid of inline template
- * @param null|string $func function call name of inline template
- *
- * @throws \Exception
- * @throws \SmartyException
- */
- public function endChild(Smarty_Internal_Template $tpl, $template = null, $uid = null, $func = null)
- {
- --$this->inheritanceLevel;
- if (!$this->inheritanceLevel) {
- ob_end_clean();
- $this->state = 2;
- }
- if (isset($template) && (($tpl->parent->_isTplObj() && $tpl->parent->source->type !== 'extends')
- || $tpl->smarty->extends_recursion)
- ) {
- $tpl->_subTemplateRender(
- $template,
- $tpl->cache_id,
- $tpl->compile_id,
- $tpl->caching ? 9999 : 0,
- $tpl->cache_lifetime,
- array(),
- 2,
- false,
- $uid,
- $func
- );
- }
- }
-
- /**
- * Smarty_Internal_Block constructor.
- * - if outer level {block} of child template ($state === 1) save it as child root block
- * - otherwise process inheritance and render
- *
- * @param \Smarty_Internal_Template $tpl
- * @param $className
- * @param string $name
- * @param int|null $tplIndex index of outer level {block} if nested
- *
- * @throws \SmartyException
- */
- public function instanceBlock(Smarty_Internal_Template $tpl, $className, $name, $tplIndex = null)
- {
- $block = new $className($name, isset($tplIndex) ? $tplIndex : $this->tplIndex);
- if (isset($this->childRoot[ $name ])) {
- $block->child = $this->childRoot[ $name ];
- }
- if ($this->state === 1) {
- $this->childRoot[ $name ] = $block;
- return;
- }
- // make sure we got child block of child template of current block
- while ($block->child && $block->child->child && $block->tplIndex <= $block->child->tplIndex) {
- $block->child = $block->child->child;
- }
- $this->process($tpl, $block);
- }
-
- /**
- * Goto child block or render this
- *
- * @param \Smarty_Internal_Template $tpl
- * @param \Smarty_Internal_Block $block
- * @param \Smarty_Internal_Block|null $parent
- *
- * @throws \SmartyException
- */
- public function process(
- Smarty_Internal_Template $tpl,
- Smarty_Internal_Block $block,
- Smarty_Internal_Block $parent = null
- ) {
- if ($block->hide && !isset($block->child)) {
- return;
- }
- if (isset($block->child) && $block->child->hide && !isset($block->child->child)) {
- $block->child = null;
- }
- $block->parent = $parent;
- if ($block->append && !$block->prepend && isset($parent)) {
- $this->callParent($tpl, $block, '\'{block append}\'');
- }
- if ($block->callsChild || !isset($block->child) || ($block->child->hide && !isset($block->child->child))) {
- $this->callBlock($block, $tpl);
- } else {
- $this->process($tpl, $block->child, $block);
- }
- if ($block->prepend && isset($parent)) {
- $this->callParent($tpl, $block, '{block prepend}');
- if ($block->append) {
- if ($block->callsChild || !isset($block->child)
- || ($block->child->hide && !isset($block->child->child))
- ) {
- $this->callBlock($block, $tpl);
- } else {
- $this->process($tpl, $block->child, $block);
- }
- }
- }
- $block->parent = null;
- }
-
- /**
- * Render child on \$smarty.block.child
- *
- * @param \Smarty_Internal_Template $tpl
- * @param \Smarty_Internal_Block $block
- *
- * @return null|string block content
- * @throws \SmartyException
- */
- public function callChild(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block)
- {
- if (isset($block->child)) {
- $this->process($tpl, $block->child, $block);
- }
- }
-
- /**
- * Render parent block on \$smarty.block.parent or {block append/prepend}
- *
- * @param \Smarty_Internal_Template $tpl
- * @param \Smarty_Internal_Block $block
- * @param string $tag
- *
- * @return null|string block content
- * @throws \SmartyException
- */
- public function callParent(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block, $tag)
- {
- if (isset($block->parent)) {
- $this->callBlock($block->parent, $tpl);
- } else {
- throw new SmartyException("inheritance: illegal '{$tag}' used in child template '{$tpl->inheritance->sources[$block->tplIndex]->filepath}' block '{$block->name}'");
- }
- }
-
- /**
- * render block
- *
- * @param \Smarty_Internal_Block $block
- * @param \Smarty_Internal_Template $tpl
- */
- public function callBlock(Smarty_Internal_Block $block, Smarty_Internal_Template $tpl)
- {
- $this->sourceStack[] = $tpl->source;
- $tpl->source = $this->sources[ $block->tplIndex ];
- $block->callBlock($tpl);
- $tpl->source = array_pop($this->sourceStack);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php
deleted file mode 100644
index 7994aa048..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/**
- * {make_nocache} Runtime Methods save(), store()
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Runtime_Make_Nocache
-{
- /**
- * Save current variable value while rendering compiled template and inject nocache code to
- * assign variable value in cahed template
- *
- * @param \Smarty_Internal_Template $tpl
- * @param string $var variable name
- *
- * @throws \SmartyException
- */
- public function save(Smarty_Internal_Template $tpl, $var)
- {
- if (isset($tpl->tpl_vars[ $var ])) {
- $export =
- preg_replace('/^\\\\?Smarty_Variable::__set_state[(]|[)]$/', '', var_export($tpl->tpl_vars[ $var ], true));
- if (preg_match('/(\w+)::__set_state/', $export, $match)) {
- throw new SmartyException("{make_nocache \${$var}} in template '{$tpl->source->name}': variable does contain object '{$match[1]}' not implementing method '__set_state'");
- }
- echo "/*%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/<?php " .
- addcslashes("\$_smarty_tpl->smarty->ext->_make_nocache->store(\$_smarty_tpl, '{$var}', ", '\\') .
- $export . ");?>\n/*/%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/";
- }
- }
-
- /**
- * Store variable value saved while rendering compiled template in cached template context
- *
- * @param \Smarty_Internal_Template $tpl
- * @param string $var variable name
- * @param array $properties
- */
- public function store(Smarty_Internal_Template $tpl, $var, $properties)
- {
- // do not overwrite existing nocache variables
- if (!isset($tpl->tpl_vars[ $var ]) || !$tpl->tpl_vars[ $var ]->nocache) {
- $newVar = new Smarty_Variable();
- unset($properties[ 'nocache' ]);
- foreach ($properties as $k => $v) {
- $newVar->$k = $v;
- }
- $tpl->tpl_vars[ $var ] = $newVar;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
deleted file mode 100644
index e5f8e48f7..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-
-/**
- * TplFunction Runtime Methods callTemplateFunction
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- **/
-class Smarty_Internal_Runtime_TplFunction
-{
- /**
- * Call template function
- *
- * @param \Smarty_Internal_Template $tpl template object
- * @param string $name template function name
- * @param array $params parameter array
- * @param bool $nocache true if called nocache
- *
- * @throws \SmartyException
- */
- public function callTemplateFunction(Smarty_Internal_Template $tpl, $name, $params, $nocache)
- {
- $funcParam = isset($tpl->tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] :
- (isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : null);
- if (isset($funcParam)) {
- if (!$tpl->caching || ($tpl->caching && $nocache)) {
- $function = $funcParam[ 'call_name' ];
- } else {
- if (isset($funcParam[ 'call_name_caching' ])) {
- $function = $funcParam[ 'call_name_caching' ];
- } else {
- $function = $funcParam[ 'call_name' ];
- }
- }
- if (function_exists($function)) {
- $this->saveTemplateVariables($tpl, $name);
- $function($tpl, $params);
- $this->restoreTemplateVariables($tpl, $name);
- return;
- }
- // try to load template function dynamically
- if ($this->addTplFuncToCache($tpl, $name, $function)) {
- $this->saveTemplateVariables($tpl, $name);
- $function($tpl, $params);
- $this->restoreTemplateVariables($tpl, $name);
- return;
- }
- }
- throw new SmartyException("Unable to find template function '{$name}'");
- }
-
- /**
- * Register template functions defined by template
- *
- * @param \Smarty|\Smarty_Internal_Template|\Smarty_Internal_TemplateBase $obj
- * @param array $tplFunctions source information array of
- * template functions defined
- * in template
- * @param bool $override if true replace existing
- * functions with same name
- */
- public function registerTplFunctions(Smarty_Internal_TemplateBase $obj, $tplFunctions, $override = true)
- {
- $obj->tplFunctions =
- $override ? array_merge($obj->tplFunctions, $tplFunctions) : array_merge($tplFunctions, $obj->tplFunctions);
- // make sure that the template functions are known in parent templates
- if ($obj->_isSubTpl()) {
- $obj->smarty->ext->_tplFunction->registerTplFunctions($obj->parent, $tplFunctions, false);
- } else {
- $obj->smarty->tplFunctions = $override ? array_merge($obj->smarty->tplFunctions, $tplFunctions) :
- array_merge($tplFunctions, $obj->smarty->tplFunctions);
- }
- }
-
- /**
- * Return source parameter array for single or all template functions
- *
- * @param \Smarty_Internal_Template $tpl template object
- * @param null|string $name template function name
- *
- * @return array|bool|mixed
- */
- public function getTplFunction(Smarty_Internal_Template $tpl, $name = null)
- {
- if (isset($name)) {
- return isset($tpl->tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] :
- (isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : false);
- } else {
- return empty($tpl->tplFunctions) ? $tpl->smarty->tplFunctions : $tpl->tplFunctions;
- }
- }
-
- /**
- * Add template function to cache file for nocache calls
- *
- * @param Smarty_Internal_Template $tpl
- * @param string $_name template function name
- * @param string $_function PHP function name
- *
- * @return bool
- */
- public function addTplFuncToCache(Smarty_Internal_Template $tpl, $_name, $_function)
- {
- $funcParam = $tpl->tplFunctions[ $_name ];
- if (is_file($funcParam[ 'compiled_filepath' ])) {
- // read compiled file
- $code = file_get_contents($funcParam[ 'compiled_filepath' ]);
- // grab template function
- if (preg_match("/\/\* {$_function} \*\/([\S\s]*?)\/\*\/ {$_function} \*\//", $code, $match)) {
- // grab source info from file dependency
- preg_match("/\s*'{$funcParam['uid']}'([\S\s]*?)\),/", $code, $match1);
- unset($code);
- // make PHP function known
- eval($match[ 0 ]);
- if (function_exists($_function)) {
- // search cache file template
- $tplPtr = $tpl;
- while (!isset($tplPtr->cached) && isset($tplPtr->parent)) {
- $tplPtr = $tplPtr->parent;
- }
- // add template function code to cache file
- if (isset($tplPtr->cached)) {
- $content = $tplPtr->cached->read($tplPtr);
- if ($content) {
- // check if we must update file dependency
- if (!preg_match("/'{$funcParam['uid']}'(.*?)'nocache_hash'/", $content, $match2)) {
- $content = preg_replace("/('file_dependency'(.*?)\()/", "\\1{$match1[0]}", $content);
- }
- $tplPtr->smarty->ext->_updateCache->write(
- $tplPtr,
- preg_replace('/\s*\?>\s*$/', "\n", $content) .
- "\n" . preg_replace(
- array(
- '/^\s*<\?php\s+/',
- '/\s*\?>\s*$/',
- ),
- "\n",
- $match[ 0 ]
- )
- );
- }
- }
- return true;
- }
- }
- }
- return false;
- }
-
- /**
- * Save current template variables on stack
- *
- * @param \Smarty_Internal_Template $tpl
- * @param string $name stack name
- */
- public function saveTemplateVariables(Smarty_Internal_Template $tpl, $name)
- {
- $tpl->_cache[ 'varStack' ][] =
- array('tpl' => $tpl->tpl_vars, 'config' => $tpl->config_vars, 'name' => "_tplFunction_{$name}");
- }
-
- /**
- * Restore saved variables into template objects
- *
- * @param \Smarty_Internal_Template $tpl
- * @param string $name stack name
- */
- public function restoreTemplateVariables(Smarty_Internal_Template $tpl, $name)
- {
- if (isset($tpl->_cache[ 'varStack' ])) {
- $vars = array_pop($tpl->_cache[ 'varStack' ]);
- $tpl->tpl_vars = $vars[ 'tpl' ];
- $tpl->config_vars = $vars[ 'config' ];
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
deleted file mode 100644
index c1abbb321..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php
-
-/**
- * Inline Runtime Methods render, setSourceByUid, setupSubTemplate
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- **/
-class Smarty_Internal_Runtime_UpdateCache
-{
- /**
- * check client side cache
- *
- * @param \Smarty_Template_Cached $cached
- * @param Smarty_Internal_Template $_template
- * @param string $content
- */
- public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
- {
- }
-
- /**
- * Cache was invalid , so render from compiled and write to cache
- *
- * @param \Smarty_Template_Cached $cached
- * @param \Smarty_Internal_Template $_template
- * @param $no_output_filter
- *
- * @throws \Exception
- */
- public function updateCache(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $no_output_filter)
- {
- ob_start();
- if (!isset($_template->compiled)) {
- $_template->loadCompiled();
- }
- $_template->compiled->render($_template);
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->start_cache($_template);
- }
- $this->removeNoCacheHash($cached, $_template, $no_output_filter);
- $compile_check = (int)$_template->compile_check;
- $_template->compile_check = Smarty::COMPILECHECK_OFF;
- if ($_template->_isSubTpl()) {
- $_template->compiled->unifunc = $_template->parent->compiled->unifunc;
- }
- if (!$_template->cached->processed) {
- $_template->cached->process($_template, true);
- }
- $_template->compile_check = $compile_check;
- $cached->getRenderedTemplateCode($_template);
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->end_cache($_template);
- }
- }
-
- /**
- * Sanitize content and write it to cache resource
- *
- * @param \Smarty_Template_Cached $cached
- * @param Smarty_Internal_Template $_template
- * @param bool $no_output_filter
- *
- * @throws \SmartyException
- */
- public function removeNoCacheHash(
- Smarty_Template_Cached $cached,
- Smarty_Internal_Template $_template,
- $no_output_filter
- ) {
- $php_pattern = '/(<%|%>|<\?php|<\?|\?>|<script\s+language\s*=\s*[\"\']?\s*php\s*[\"\']?\s*>)/';
- $content = ob_get_clean();
- $hash_array = $cached->hashes;
- $hash_array[ $_template->compiled->nocache_hash ] = true;
- $hash_array = array_keys($hash_array);
- $nocache_hash = '(' . implode('|', $hash_array) . ')';
- $_template->cached->has_nocache_code = false;
- // get text between non-cached items
- $cache_split =
- preg_split(
- "!/\*%%SmartyNocache:{$nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$nocache_hash}%%\*/!s",
- $content
- );
- // get non-cached items
- preg_match_all(
- "!/\*%%SmartyNocache:{$nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$nocache_hash}%%\*/!s",
- $content,
- $cache_parts
- );
- $content = '';
- // loop over items, stitch back together
- foreach ($cache_split as $curr_idx => $curr_split) {
- if (preg_match($php_pattern, $curr_split)) {
- // escape PHP tags in template content
- $php_split = preg_split(
- $php_pattern,
- $curr_split
- );
- preg_match_all(
- $php_pattern,
- $curr_split,
- $php_parts
- );
- foreach ($php_split as $idx_php => $curr_php) {
- $content .= $curr_php;
- if (isset($php_parts[ 0 ][ $idx_php ])) {
- $content .= "<?php echo '{$php_parts[ 1 ][ $idx_php ]}'; ?>\n";
- }
- }
- } else {
- $content .= $curr_split;
- }
- if (isset($cache_parts[ 0 ][ $curr_idx ])) {
- $_template->cached->has_nocache_code = true;
- $content .= $cache_parts[ 2 ][ $curr_idx ];
- }
- }
- if (!$no_output_filter && !$_template->cached->has_nocache_code
- && (isset($_template->smarty->autoload_filters[ 'output' ])
- || isset($_template->smarty->registered_filters[ 'output' ]))
- ) {
- $content = $_template->smarty->ext->_filterHandler->runFilter('output', $content, $_template);
- }
- // write cache file content
- $this->writeCachedContent($_template, $content);
- }
-
- /**
- * Writes the content to cache resource
- *
- * @param Smarty_Internal_Template $_template
- * @param string $content
- *
- * @return bool
- */
- public function writeCachedContent(Smarty_Internal_Template $_template, $content)
- {
- if ($_template->source->handler->recompiled || !$_template->caching
- ) {
- // don't write cache file
- return false;
- }
- if (!isset($_template->cached)) {
- $_template->loadCached();
- }
- $content = $_template->smarty->ext->_codeFrame->create($_template, $content, '', true);
- return $this->write($_template, $content);
- }
-
- /**
- * Write this cache object to handler
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- *
- * @return bool success
- */
- public function write(Smarty_Internal_Template $_template, $content)
- {
- if (!$_template->source->handler->recompiled) {
- $cached = $_template->cached;
- if ($cached->handler->writeCachedContent($_template, $content)) {
- $cached->content = null;
- $cached->timestamp = time();
- $cached->exists = true;
- $cached->valid = true;
- $cached->cache_lifetime = $_template->cache_lifetime;
- $cached->processed = false;
- if ($_template->smarty->cache_locking) {
- $cached->handler->releaseLock($_template->smarty, $cached);
- }
- return true;
- }
- $cached->content = null;
- $cached->timestamp = false;
- $cached->exists = false;
- $cached->valid = false;
- $cached->processed = false;
- }
- return false;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
deleted file mode 100644
index 2240f97ca..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-
-/**
- * Runtime Extension updateScope
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- **/
-class Smarty_Internal_Runtime_UpdateScope
-{
- /**
- * Update new assigned template or config variable in other effected scopes
- *
- * @param Smarty_Internal_Template $tpl data object
- * @param string|null $varName variable name
- * @param int $tagScope tag scope to which bubble up variable value
- */
- public function _updateScope(Smarty_Internal_Template $tpl, $varName, $tagScope = 0)
- {
- if ($tagScope) {
- $this->_updateVarStack($tpl, $varName);
- $tagScope = $tagScope & ~Smarty::SCOPE_LOCAL;
- if (!$tpl->scope && !$tagScope) {
- return;
- }
- }
- $mergedScope = $tagScope | $tpl->scope;
- if ($mergedScope) {
- if ($mergedScope & Smarty::SCOPE_GLOBAL && $varName) {
- Smarty::$global_tpl_vars[ $varName ] = $tpl->tpl_vars[ $varName ];
- }
- // update scopes
- foreach ($this->_getAffectedScopes($tpl, $mergedScope) as $ptr) {
- $this->_updateVariableInOtherScope($ptr->tpl_vars, $tpl, $varName);
- if ($tagScope && $ptr->_isTplObj() && isset($tpl->_cache[ 'varStack' ])) {
- $this->_updateVarStack($ptr, $varName);
- }
- }
- }
- }
-
- /**
- * Get array of objects which needs to be updated by given scope value
- *
- * @param Smarty_Internal_Template $tpl
- * @param int $mergedScope merged tag and template scope to which bubble up variable value
- *
- * @return array
- */
- public function _getAffectedScopes(Smarty_Internal_Template $tpl, $mergedScope)
- {
- $_stack = array();
- $ptr = $tpl->parent;
- if ($mergedScope && isset($ptr) && $ptr->_isTplObj()) {
- $_stack[] = $ptr;
- $mergedScope = $mergedScope & ~Smarty::SCOPE_PARENT;
- if (!$mergedScope) {
- // only parent was set, we are done
- return $_stack;
- }
- $ptr = $ptr->parent;
- }
- while (isset($ptr) && $ptr->_isTplObj()) {
- $_stack[] = $ptr;
- $ptr = $ptr->parent;
- }
- if ($mergedScope & Smarty::SCOPE_SMARTY) {
- if (isset($tpl->smarty)) {
- $_stack[] = $tpl->smarty;
- }
- } elseif ($mergedScope & Smarty::SCOPE_ROOT) {
- while (isset($ptr)) {
- if (!$ptr->_isTplObj()) {
- $_stack[] = $ptr;
- break;
- }
- $ptr = $ptr->parent;
- }
- }
- return $_stack;
- }
-
- /**
- * Update variable in other scope
- *
- * @param array $tpl_vars template variable array
- * @param \Smarty_Internal_Template $from
- * @param string $varName variable name
- */
- public function _updateVariableInOtherScope(&$tpl_vars, Smarty_Internal_Template $from, $varName)
- {
- if (!isset($tpl_vars[ $varName ])) {
- $tpl_vars[ $varName ] = clone $from->tpl_vars[ $varName ];
- } else {
- $tpl_vars[ $varName ] = clone $tpl_vars[ $varName ];
- $tpl_vars[ $varName ]->value = $from->tpl_vars[ $varName ]->value;
- }
- }
-
- /**
- * Update variable in template local variable stack
- *
- * @param \Smarty_Internal_Template $tpl
- * @param string|null $varName variable name or null for config variables
- */
- public function _updateVarStack(Smarty_Internal_Template $tpl, $varName)
- {
- $i = 0;
- while (isset($tpl->_cache[ 'varStack' ][ $i ])) {
- $this->_updateVariableInOtherScope($tpl->_cache[ 'varStack' ][ $i ][ 'tpl' ], $tpl, $varName);
- $i++;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php
deleted file mode 100644
index 492d5eb25..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/**
- * Smarty write file plugin
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Monte Ohrt
- */
-
-/**
- * Smarty Internal Write File Class
- *
- * @package Smarty
- * @subpackage PluginsInternal
- */
-class Smarty_Internal_Runtime_WriteFile
-{
- /**
- * Writes file in a safe way to disk
- *
- * @param string $_filepath complete filepath
- * @param string $_contents file content
- * @param Smarty $smarty smarty instance
- *
- * @throws SmartyException
- * @return boolean true
- */
- public function writeFile($_filepath, $_contents, Smarty $smarty)
- {
- $_error_reporting = error_reporting();
- error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING);
- $_dirpath = dirname($_filepath);
- // if subdirs, create dir structure
- if ($_dirpath !== '.') {
- $i = 0;
- // loop if concurrency problem occurs
- // see https://bugs.php.net/bug.php?id=35326
- while (!is_dir($_dirpath)) {
- if (@mkdir($_dirpath, 0777, true)) {
- break;
- }
- clearstatcache();
- if (++$i === 3) {
- error_reporting($_error_reporting);
- throw new SmartyException("unable to create directory {$_dirpath}");
- }
- sleep(1);
- }
- }
- // write to tmp file, then move to overt file lock race condition
- $_tmp_file = $_dirpath . DIRECTORY_SEPARATOR . str_replace(array('.', ','), '_', uniqid('wrt', true));
- if (!file_put_contents($_tmp_file, $_contents)) {
- error_reporting($_error_reporting);
- throw new SmartyException("unable to write file {$_tmp_file}");
- }
- /*
- * Windows' rename() fails if the destination exists,
- * Linux' rename() properly handles the overwrite.
- * Simply unlink()ing a file might cause other processes
- * currently reading that file to fail, but linux' rename()
- * seems to be smart enough to handle that for us.
- */
- if (Smarty::$_IS_WINDOWS) {
- // remove original file
- if (is_file($_filepath)) {
- @unlink($_filepath);
- }
- // rename tmp file
- $success = @rename($_tmp_file, $_filepath);
- } else {
- // rename tmp file
- $success = @rename($_tmp_file, $_filepath);
- if (!$success) {
- // remove original file
- if (is_file($_filepath)) {
- @unlink($_filepath);
- }
- // rename tmp file
- $success = @rename($_tmp_file, $_filepath);
- }
- }
- if (!$success) {
- error_reporting($_error_reporting);
- throw new SmartyException("unable to write file {$_filepath}");
- }
- // set file permissions
- @chmod($_filepath, 0666 & ~umask());
- error_reporting($_error_reporting);
- return true;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
deleted file mode 100644
index 21f4e3fdd..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
+++ /dev/null
@@ -1,184 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Smarty Template Compiler Base
- * This file contains the basic classes and methods for compiling Smarty templates with lexer/parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Class SmartyTemplateCompiler
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCompilerBase
-{
- /**
- * Lexer class name
- *
- * @var string
- */
- public $lexer_class;
-
- /**
- * Parser class name
- *
- * @var string
- */
- public $parser_class;
-
- /**
- * array of vars which can be compiled in local scope
- *
- * @var array
- */
- public $local_var = array();
-
- /**
- * array of callbacks called when the normal compile process of template is finished
- *
- * @var array
- */
- public $postCompileCallbacks = array();
-
- /**
- * prefix code
- *
- * @var string
- */
- public $prefixCompiledCode = '';
-
- /**
- * postfix code
- *
- * @var string
- */
- public $postfixCompiledCode = '';
-
- /**
- * Initialize compiler
- *
- * @param string $lexer_class class name
- * @param string $parser_class class name
- * @param Smarty $smarty global instance
- */
- public function __construct($lexer_class, $parser_class, Smarty $smarty)
- {
- parent::__construct($smarty);
- // get required plugins
- $this->lexer_class = $lexer_class;
- $this->parser_class = $parser_class;
- }
-
- /**
- * method to compile a Smarty template
- *
- * @param mixed $_content template source
- * @param bool $isTemplateSource
- *
- * @return bool true if compiling succeeded, false if it failed
- * @throws \SmartyCompilerException
- */
- protected function doCompile($_content, $isTemplateSource = false)
- {
- /* here is where the compiling takes place. Smarty
- tags in the templates are replaces with PHP code,
- then written to compiled files. */
- // init the lexer/parser to compile the template
- $this->parser =
- new $this->parser_class(
- new $this->lexer_class(
- str_replace(
- array(
- "\r\n",
- "\r"
- ),
- "\n",
- $_content
- ),
- $this
- ),
- $this
- );
- if ($isTemplateSource && $this->template->caching) {
- $this->parser->insertPhpCode("<?php\n\$_smarty_tpl->compiled->nocache_hash = '{$this->nocache_hash}';\n?>\n");
- }
- if (function_exists('mb_internal_encoding')
- && function_exists('ini_get')
- && ((int)ini_get('mbstring.func_overload')) & 2
- ) {
- $mbEncoding = mb_internal_encoding();
- mb_internal_encoding('ASCII');
- } else {
- $mbEncoding = null;
- }
- if ($this->smarty->_parserdebug) {
- $this->parser->PrintTrace();
- $this->parser->lex->PrintTrace();
- }
- // get tokens from lexer and parse them
- while ($this->parser->lex->yylex()) {
- if ($this->smarty->_parserdebug) {
- echo "<pre>Line {$this->parser->lex->line} Parsing {$this->parser->yyTokenName[$this->parser->lex->token]} Token " .
- htmlentities($this->parser->lex->value) . "</pre>";
- }
- $this->parser->doParse($this->parser->lex->token, $this->parser->lex->value);
- }
- // finish parsing process
- $this->parser->doParse(0, 0);
- if ($mbEncoding) {
- mb_internal_encoding($mbEncoding);
- }
- // check for unclosed tags
- if (count($this->_tag_stack) > 0) {
- // get stacked info
- list($openTag, $_data) = array_pop($this->_tag_stack);
- $this->trigger_template_error(
- "unclosed {$this->smarty->left_delimiter}" . $openTag .
- "{$this->smarty->right_delimiter} tag"
- );
- }
- // call post compile callbacks
- foreach ($this->postCompileCallbacks as $cb) {
- $parameter = $cb;
- $parameter[ 0 ] = $this;
- call_user_func_array($cb[ 0 ], $parameter);
- }
- // return compiled code
- return $this->prefixCompiledCode . $this->parser->retvalue . $this->postfixCompiledCode;
- }
-
- /**
- * Register a post compile callback
- * - when the callback is called after template compiling the compiler object will be inserted as first parameter
- *
- * @param callback $callback
- * @param array $parameter optional parameter array
- * @param string $key optional key for callback
- * @param bool $replace if true replace existing keyed callback
- */
- public function registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false)
- {
- array_unshift($parameter, $callback);
- if (isset($key)) {
- if ($replace || !isset($this->postCompileCallbacks[ $key ])) {
- $this->postCompileCallbacks[ $key ] = $parameter;
- }
- } else {
- $this->postCompileCallbacks[] = $parameter;
- }
- }
-
- /**
- * Remove a post compile callback
- *
- * @param string $key callback key
- */
- public function unregisterPostCompileCallback($key)
- {
- unset($this->postCompileCallbacks[ $key ]);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php
deleted file mode 100644
index 72d1d52e0..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php
+++ /dev/null
@@ -1,741 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Template
- * This file contains the Smarty template engine
- *
- * @package Smarty
- * @subpackage Template
- * @author Uwe Tews
- */
-
-/**
- * Main class with template data structures and methods
- *
- * @package Smarty
- * @subpackage Template
- *
- * @property Smarty_Template_Compiled $compiled
- * @property Smarty_Template_Cached $cached
- * @property Smarty_Internal_TemplateCompilerBase $compiler
- * @property mixed|\Smarty_Template_Cached registered_plugins
- *
- * The following methods will be dynamically loaded by the extension handler when they are called.
- * They are located in a corresponding Smarty_Internal_Method_xxxx class
- *
- * @method bool mustCompile()
- */
-#[\AllowDynamicProperties]
-class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
-{
- /**
- * Template object cache
- *
- * @var Smarty_Internal_Template[]
- */
- public static $tplObjCache = array();
-
- /**
- * Template object cache for Smarty::isCached() === true
- *
- * @var Smarty_Internal_Template[]
- */
- public static $isCacheTplObj = array();
-
- /**
- * Sub template Info Cache
- * - index name
- * - value use count
- *
- * @var int[]
- */
- public static $subTplInfo = array();
-
- /**
- * This object type (Smarty = 1, template = 2, data = 4)
- *
- * @var int
- */
- public $_objType = 2;
-
- /**
- * Global smarty instance
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * Source instance
- *
- * @var Smarty_Template_Source|Smarty_Template_Config
- */
- public $source = null;
-
- /**
- * Inheritance runtime extension
- *
- * @var Smarty_Internal_Runtime_Inheritance
- */
- public $inheritance = null;
-
- /**
- * Template resource
- *
- * @var string
- */
- public $template_resource = null;
-
- /**
- * flag if compiled template is invalid and must be (re)compiled
- *
- * @var bool
- */
- public $mustCompile = null;
-
- /**
- * Template Id
- *
- * @var null|string
- */
- public $templateId = null;
-
- /**
- * Scope in which variables shall be assigned
- *
- * @var int
- */
- public $scope = 0;
-
- /**
- * Flag which is set while rending a cache file
- *
- * @var bool
- */
- public $isRenderingCache = false;
-
- /**
- * Callbacks called before rendering template
- *
- * @var callback[]
- */
- public $startRenderCallbacks = array();
-
- /**
- * Callbacks called after rendering template
- *
- * @var callback[]
- */
- public $endRenderCallbacks = array();
-
- /**
- * Create template data object
- * Some of the global Smarty settings copied to template scope
- * It load the required template resources and caching plugins
- *
- * @param string $template_resource template resource string
- * @param Smarty $smarty Smarty instance
- * @param null|\Smarty_Internal_Template|\Smarty|\Smarty_Internal_Data $_parent back pointer to parent
- * object with variables or
- * null
- * @param mixed $_cache_id cache id or null
- * @param mixed $_compile_id compile id or null
- * @param bool|int|null $_caching use caching?
- * @param int|null $_cache_lifetime cache life-time in
- * seconds
- * @param bool $_isConfig
- *
- * @throws \SmartyException
- */
- public function __construct(
- $template_resource,
- Smarty $smarty,
- Smarty_Internal_Data $_parent = null,
- $_cache_id = null,
- $_compile_id = null,
- $_caching = null,
- $_cache_lifetime = null,
- $_isConfig = false
- ) {
- $this->smarty = $smarty;
- // Smarty parameter
- $this->cache_id = $_cache_id === null ? $this->smarty->cache_id : $_cache_id;
- $this->compile_id = $_compile_id === null ? $this->smarty->compile_id : $_compile_id;
- $this->caching = (int)($_caching === null ? $this->smarty->caching : $_caching);
- $this->cache_lifetime = $_cache_lifetime === null ? $this->smarty->cache_lifetime : $_cache_lifetime;
- $this->compile_check = (int)$smarty->compile_check;
- $this->parent = $_parent;
- // Template resource
- $this->template_resource = $template_resource;
- $this->source = $_isConfig ? Smarty_Template_Config::load($this) : Smarty_Template_Source::load($this);
- parent::__construct();
- if ($smarty->security_policy && method_exists($smarty->security_policy, 'registerCallBacks')) {
- $smarty->security_policy->registerCallBacks($this);
- }
- }
-
- /**
- * render template
- *
- * @param bool $no_output_filter if true do not run output filter
- * @param null|bool $display true: display, false: fetch null: sub-template
- *
- * @return string
- * @throws \Exception
- * @throws \SmartyException
- */
- public function render($no_output_filter = true, $display = null)
- {
- if ($this->smarty->debugging) {
- if (!isset($this->smarty->_debug)) {
- $this->smarty->_debug = new Smarty_Internal_Debug();
- }
- $this->smarty->_debug->start_template($this, $display);
- }
- // checks if template exists
- if (!$this->source->exists) {
- throw new SmartyException(
- "Unable to load template '{$this->source->type}:{$this->source->name}'" .
- ($this->_isSubTpl() ? " in '{$this->parent->template_resource}'" : '')
- );
- }
- // disable caching for evaluated code
- if ($this->source->handler->recompiled) {
- $this->caching = Smarty::CACHING_OFF;
- }
- // read from cache or render
- if ($this->caching === Smarty::CACHING_LIFETIME_CURRENT || $this->caching === Smarty::CACHING_LIFETIME_SAVED) {
- if (!isset($this->cached) || $this->cached->cache_id !== $this->cache_id
- || $this->cached->compile_id !== $this->compile_id
- ) {
- $this->loadCached(true);
- }
- $this->cached->render($this, $no_output_filter);
- } else {
- if (!isset($this->compiled) || $this->compiled->compile_id !== $this->compile_id) {
- $this->loadCompiled(true);
- }
- $this->compiled->render($this);
- }
- // display or fetch
- if ($display) {
- if ($this->caching && $this->smarty->cache_modified_check) {
- $this->smarty->ext->_cacheModify->cacheModifiedCheck(
- $this->cached,
- $this,
- isset($content) ? $content : ob_get_clean()
- );
- } else {
- if ((!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled)
- && !$no_output_filter && (isset($this->smarty->autoload_filters[ 'output' ])
- || isset($this->smarty->registered_filters[ 'output' ]))
- ) {
- echo $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this);
- } else {
- echo ob_get_clean();
- }
- }
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_template($this);
- // debug output
- $this->smarty->_debug->display_debug($this, true);
- }
- return '';
- } else {
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_template($this);
- if ($this->smarty->debugging === 2 && $display === false) {
- $this->smarty->_debug->display_debug($this, true);
- }
- }
- if (!$no_output_filter
- && (!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled)
- && (isset($this->smarty->autoload_filters[ 'output' ])
- || isset($this->smarty->registered_filters[ 'output' ]))
- ) {
- return $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this);
- }
- // return cache content
- return null;
- }
- }
-
- /**
- * Runtime function to render sub-template
- *
- * @param string $template template name
- * @param mixed $cache_id cache id
- * @param mixed $compile_id compile id
- * @param integer $caching cache mode
- * @param integer $cache_lifetime life time of cache data
- * @param array $data passed parameter template variables
- * @param int $scope scope in which {include} should execute
- * @param bool $forceTplCache cache template object
- * @param string $uid file dependency uid
- * @param string $content_func function name
- *
- * @throws \Exception
- * @throws \SmartyException
- */
- public function _subTemplateRender(
- $template,
- $cache_id,
- $compile_id,
- $caching,
- $cache_lifetime,
- $data,
- $scope,
- $forceTplCache,
- $uid = null,
- $content_func = null
- ) {
- $tpl = clone $this;
- $tpl->parent = $this;
- $smarty = &$this->smarty;
- $_templateId = $smarty->_getTemplateId($template, $cache_id, $compile_id, $caching, $tpl);
- // recursive call ?
- if ((isset($tpl->templateId) ? $tpl->templateId : $tpl->_getTemplateId()) !== $_templateId) {
- // already in template cache?
- if (isset(self::$tplObjCache[ $_templateId ])) {
- // copy data from cached object
- $cachedTpl = &self::$tplObjCache[ $_templateId ];
- $tpl->templateId = $cachedTpl->templateId;
- $tpl->template_resource = $cachedTpl->template_resource;
- $tpl->cache_id = $cachedTpl->cache_id;
- $tpl->compile_id = $cachedTpl->compile_id;
- $tpl->source = $cachedTpl->source;
- if (isset($cachedTpl->compiled)) {
- $tpl->compiled = $cachedTpl->compiled;
- } else {
- unset($tpl->compiled);
- }
- if ($caching !== 9999 && isset($cachedTpl->cached)) {
- $tpl->cached = $cachedTpl->cached;
- } else {
- unset($tpl->cached);
- }
- } else {
- $tpl->templateId = $_templateId;
- $tpl->template_resource = $template;
- $tpl->cache_id = $cache_id;
- $tpl->compile_id = $compile_id;
- if (isset($uid)) {
- // for inline templates we can get all resource information from file dependency
- list($filepath, $timestamp, $type) = $tpl->compiled->file_dependency[ $uid ];
- $tpl->source = new Smarty_Template_Source($smarty, $filepath, $type, $filepath);
- $tpl->source->filepath = $filepath;
- $tpl->source->timestamp = $timestamp;
- $tpl->source->exists = true;
- $tpl->source->uid = $uid;
- } else {
- $tpl->source = Smarty_Template_Source::load($tpl);
- unset($tpl->compiled);
- }
- if ($caching !== 9999) {
- unset($tpl->cached);
- }
- }
- } else {
- // on recursive calls force caching
- $forceTplCache = true;
- }
- $tpl->caching = $caching;
- $tpl->cache_lifetime = $cache_lifetime;
- // set template scope
- $tpl->scope = $scope;
- if (!isset(self::$tplObjCache[ $tpl->templateId ]) && !$tpl->source->handler->recompiled) {
- // check if template object should be cached
- if ($forceTplCache || (isset(self::$subTplInfo[ $tpl->template_resource ])
- && self::$subTplInfo[ $tpl->template_resource ] > 1)
- || ($tpl->_isSubTpl() && isset(self::$tplObjCache[ $tpl->parent->templateId ]))
- ) {
- self::$tplObjCache[ $tpl->templateId ] = $tpl;
- }
- }
- if (!empty($data)) {
- // set up variable values
- foreach ($data as $_key => $_val) {
- $tpl->tpl_vars[ $_key ] = new Smarty_Variable($_val, $this->isRenderingCache);
- }
- }
- if ($tpl->caching === 9999) {
- if (!isset($tpl->compiled)) {
- $tpl->loadCompiled(true);
- }
- if ($tpl->compiled->has_nocache_code) {
- $this->cached->hashes[ $tpl->compiled->nocache_hash ] = true;
- }
- }
- $tpl->_cache = array();
- if (isset($uid)) {
- if ($smarty->debugging) {
- if (!isset($smarty->_debug)) {
- $smarty->_debug = new Smarty_Internal_Debug();
- }
- $smarty->_debug->start_template($tpl);
- $smarty->_debug->start_render($tpl);
- }
- $tpl->compiled->getRenderedTemplateCode($tpl, $content_func);
- if ($smarty->debugging) {
- $smarty->_debug->end_template($tpl);
- $smarty->_debug->end_render($tpl);
- }
- } else {
- if (isset($tpl->compiled)) {
- $tpl->compiled->render($tpl);
- } else {
- $tpl->render();
- }
- }
- }
-
- /**
- * Get called sub-templates and save call count
- */
- public function _subTemplateRegister()
- {
- foreach ($this->compiled->includes as $name => $count) {
- if (isset(self::$subTplInfo[ $name ])) {
- self::$subTplInfo[ $name ] += $count;
- } else {
- self::$subTplInfo[ $name ] = $count;
- }
- }
- }
-
- /**
- * Check if this is a sub template
- *
- * @return bool true is sub template
- */
- public function _isSubTpl()
- {
- return isset($this->parent) && $this->parent->_isTplObj();
- }
-
- /**
- * Assign variable in scope
- *
- * @param string $varName variable name
- * @param mixed $value value
- * @param bool $nocache nocache flag
- * @param int $scope scope into which variable shall be assigned
- */
- public function _assignInScope($varName, $value, $nocache = false, $scope = 0)
- {
- if (isset($this->tpl_vars[ $varName ])) {
- $this->tpl_vars[ $varName ] = clone $this->tpl_vars[ $varName ];
- $this->tpl_vars[ $varName ]->value = $value;
- if ($nocache || $this->isRenderingCache) {
- $this->tpl_vars[ $varName ]->nocache = true;
- }
- } else {
- $this->tpl_vars[ $varName ] = new Smarty_Variable($value, $nocache || $this->isRenderingCache);
- }
- if ($scope >= 0) {
- if ($scope > 0 || $this->scope > 0) {
- $this->smarty->ext->_updateScope->_updateScope($this, $varName, $scope);
- }
- }
- }
-
- /**
- * Check if plugins are callable require file otherwise
- *
- * @param array $plugins required plugins
- *
- * @throws \SmartyException
- */
- public function _checkPlugins($plugins)
- {
- static $checked = array();
- foreach ($plugins as $plugin) {
- $name = join('::', (array)$plugin[ 'function' ]);
- if (!isset($checked[ $name ])) {
- if (!is_callable($plugin[ 'function' ])) {
- if (is_file($plugin[ 'file' ])) {
- include_once $plugin[ 'file' ];
- if (is_callable($plugin[ 'function' ])) {
- $checked[ $name ] = true;
- }
- }
- } else {
- $checked[ $name ] = true;
- }
- }
- if (!isset($checked[ $name ])) {
- if (false !== $this->smarty->loadPlugin($name)) {
- $checked[ $name ] = true;
- } else {
- throw new SmartyException("Plugin '{$name}' not callable");
- }
- }
- }
- }
-
- /**
- * This function is executed automatically when a compiled or cached template file is included
- * - Decode saved properties from compiled template and cache files
- * - Check if compiled or cache file is valid
- *
- * @param \Smarty_Internal_Template $tpl
- * @param array $properties special template properties
- * @param bool $cache flag if called from cache file
- *
- * @return bool flag if compiled or cache file is valid
- * @throws \SmartyException
- */
- public function _decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false)
- {
- // on cache resources other than file check version stored in cache code
- if (!isset($properties[ 'version' ]) || Smarty::SMARTY_VERSION !== $properties[ 'version' ]) {
- if ($cache) {
- $tpl->smarty->clearAllCache();
- } else {
- $tpl->smarty->clearCompiledTemplate();
- }
- return false;
- }
- $is_valid = true;
- if (!empty($properties[ 'file_dependency' ])
- && ((!$cache && $tpl->compile_check) || $tpl->compile_check === Smarty::COMPILECHECK_ON)
- ) {
- // check file dependencies at compiled code
- foreach ($properties[ 'file_dependency' ] as $_file_to_check) {
- if ($_file_to_check[ 2 ] === 'file' || $_file_to_check[ 2 ] === 'php') {
- if ($tpl->source->filepath === $_file_to_check[ 0 ]) {
- // do not recheck current template
- continue;
- //$mtime = $tpl->source->getTimeStamp();
- } else {
- // file and php types can be checked without loading the respective resource handlers
- $mtime = is_file($_file_to_check[ 0 ]) ? filemtime($_file_to_check[ 0 ]) : false;
- }
- } else {
- $handler = Smarty_Resource::load($tpl->smarty, $_file_to_check[ 2 ]);
- if ($handler->checkTimestamps()) {
- $source = Smarty_Template_Source::load($tpl, $tpl->smarty, $_file_to_check[ 0 ]);
- $mtime = $source->getTimeStamp();
- } else {
- continue;
- }
- }
- if ($mtime === false || $mtime > $_file_to_check[ 1 ]) {
- $is_valid = false;
- break;
- }
- }
- }
- if ($cache) {
- // CACHING_LIFETIME_SAVED cache expiry has to be validated here since otherwise we'd define the unifunc
- if ($tpl->caching === Smarty::CACHING_LIFETIME_SAVED && $properties[ 'cache_lifetime' ] >= 0
- && (time() > ($tpl->cached->timestamp + $properties[ 'cache_lifetime' ]))
- ) {
- $is_valid = false;
- }
- $tpl->cached->cache_lifetime = $properties[ 'cache_lifetime' ];
- $tpl->cached->valid = $is_valid;
- $resource = $tpl->cached;
- } else {
- $tpl->mustCompile = !$is_valid;
- $resource = $tpl->compiled;
- $resource->includes = isset($properties[ 'includes' ]) ? $properties[ 'includes' ] : array();
- }
- if ($is_valid) {
- $resource->unifunc = $properties[ 'unifunc' ];
- $resource->has_nocache_code = $properties[ 'has_nocache_code' ];
- // $tpl->compiled->nocache_hash = $properties['nocache_hash'];
- $resource->file_dependency = $properties[ 'file_dependency' ];
- }
- return $is_valid && !function_exists($properties[ 'unifunc' ]);
- }
-
- /**
- * Compiles the template
- * If the template is not evaluated the compiled template is saved on disk
- *
- * @throws \Exception
- */
- public function compileTemplateSource()
- {
- return $this->compiled->compileTemplateSource($this);
- }
-
- /**
- * Writes the content to cache resource
- *
- * @param string $content
- *
- * @return bool
- */
- public function writeCachedContent($content)
- {
- return $this->smarty->ext->_updateCache->writeCachedContent($this, $content);
- }
-
- /**
- * Get unique template id
- *
- * @return string
- * @throws \SmartyException
- */
- public function _getTemplateId()
- {
- return isset($this->templateId) ? $this->templateId : $this->templateId =
- $this->smarty->_getTemplateId($this->template_resource, $this->cache_id, $this->compile_id);
- }
-
- /**
- * runtime error not matching capture tags
- *
- * @throws \SmartyException
- */
- public function capture_error()
- {
- throw new SmartyException("Not matching {capture} open/close in '{$this->template_resource}'");
- }
-
- /**
- * Load compiled object
- *
- * @param bool $force force new compiled object
- */
- public function loadCompiled($force = false)
- {
- if ($force || !isset($this->compiled)) {
- $this->compiled = Smarty_Template_Compiled::load($this);
- }
- }
-
- /**
- * Load cached object
- *
- * @param bool $force force new cached object
- */
- public function loadCached($force = false)
- {
- if ($force || !isset($this->cached)) {
- $this->cached = Smarty_Template_Cached::load($this);
- }
- }
-
- /**
- * Load inheritance object
- */
- public function _loadInheritance()
- {
- if (!isset($this->inheritance)) {
- $this->inheritance = new Smarty_Internal_Runtime_Inheritance();
- }
- }
-
- /**
- * Unload inheritance object
- */
- public function _cleanUp()
- {
- $this->startRenderCallbacks = array();
- $this->endRenderCallbacks = array();
- $this->inheritance = null;
- }
-
- /**
- * Load compiler object
- *
- * @throws \SmartyException
- */
- public function loadCompiler()
- {
- if (!class_exists($this->source->compiler_class)) {
- $this->smarty->loadPlugin($this->source->compiler_class);
- }
- $this->compiler =
- new $this->source->compiler_class(
- $this->source->template_lexer_class,
- $this->source->template_parser_class,
- $this->smarty
- );
- }
-
- /**
- * Handle unknown class methods
- *
- * @param string $name unknown method-name
- * @param array $args argument array
- *
- * @return mixed
- */
- public function __call($name, $args)
- {
- // method of Smarty object?
- if (method_exists($this->smarty, $name)) {
- return call_user_func_array(array($this->smarty, $name), $args);
- }
- // parent
- return parent::__call($name, $args);
- }
-
- /**
- * get Smarty property in template context
- *
- * @param string $property_name property name
- *
- * @return mixed|Smarty_Template_Cached
- * @throws SmartyException
- */
- public function __get($property_name)
- {
- switch ($property_name) {
- case 'compiled':
- $this->loadCompiled();
- return $this->compiled;
- case 'cached':
- $this->loadCached();
- return $this->cached;
- case 'compiler':
- $this->loadCompiler();
- return $this->compiler;
- default:
- // Smarty property ?
- if (property_exists($this->smarty, $property_name)) {
- return $this->smarty->$property_name;
- }
- }
- throw new SmartyException("template property '$property_name' does not exist.");
- }
-
- /**
- * set Smarty property in template context
- *
- * @param string $property_name property name
- * @param mixed $value value
- *
- * @throws SmartyException
- */
- public function __set($property_name, $value)
- {
- switch ($property_name) {
- case 'compiled':
- case 'cached':
- case 'compiler':
- $this->$property_name = $value;
- return;
- default:
- // Smarty property ?
- if (property_exists($this->smarty, $property_name)) {
- $this->smarty->$property_name = $value;
- return;
- }
- }
- throw new SmartyException("invalid template property '$property_name'.");
- }
-
- /**
- * Template data object destructor
- */
- public function __destruct()
- {
- if ($this->smarty->cache_locking && isset($this->cached) && $this->cached->is_locked) {
- $this->cached->handler->releaseLock($this->smarty, $this->cached);
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php
deleted file mode 100644
index 918362e91..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php
+++ /dev/null
@@ -1,401 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Smarty Template Base
- * This file contains the basic shared methods for template handling
- *
- * @package Smarty
- * @subpackage Template
- * @author Uwe Tews
- */
-
-/**
- * Class with shared smarty/template methods
- *
- * @package Smarty
- * @subpackage Template
- *
- * @property int $_objType
- *
- * The following methods will be dynamically loaded by the extension handler when they are called.
- * They are located in a corresponding Smarty_Internal_Method_xxxx class
- *
- * @method Smarty_Internal_TemplateBase addAutoloadFilters(mixed $filters, string $type = null)
- * @method Smarty_Internal_TemplateBase addDefaultModifiers(mixed $modifiers)
- * @method Smarty_Internal_TemplateBase addLiterals(mixed $literals)
- * @method Smarty_Internal_TemplateBase createData(Smarty_Internal_Data $parent = null, string $name = null)
- * @method array getAutoloadFilters(string $type = null)
- * @method string getDebugTemplate()
- * @method array getDefaultModifier()
- * @method array getLiterals()
- * @method array getTags(mixed $template = null)
- * @method object getRegisteredObject(string $object_name)
- * @method Smarty_Internal_TemplateBase registerCacheResource(string $name, Smarty_CacheResource $resource_handler)
- * @method Smarty_Internal_TemplateBase registerClass(string $class_name, string $class_impl)
- * @method Smarty_Internal_TemplateBase registerDefaultConfigHandler(callback $callback)
- * @method Smarty_Internal_TemplateBase registerDefaultPluginHandler(callback $callback)
- * @method Smarty_Internal_TemplateBase registerDefaultTemplateHandler(callback $callback)
- * @method Smarty_Internal_TemplateBase registerResource(string $name, mixed $resource_handler)
- * @method Smarty_Internal_TemplateBase setAutoloadFilters(mixed $filters, string $type = null)
- * @method Smarty_Internal_TemplateBase setDebugTemplate(string $tpl_name)
- * @method Smarty_Internal_TemplateBase setDefaultModifiers(mixed $modifiers)
- * @method Smarty_Internal_TemplateBase setLiterals(mixed $literals)
- * @method Smarty_Internal_TemplateBase unloadFilter(string $type, string $name)
- * @method Smarty_Internal_TemplateBase unregisterCacheResource(string $name)
- * @method Smarty_Internal_TemplateBase unregisterObject(string $object_name)
- * @method Smarty_Internal_TemplateBase unregisterPlugin(string $type, string $name)
- * @method Smarty_Internal_TemplateBase unregisterFilter(string $type, mixed $callback)
- * @method Smarty_Internal_TemplateBase unregisterResource(string $name)
- */
-abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
-{
- /**
- * Set this if you want different sets of cache files for the same
- * templates.
- *
- * @var string
- */
- public $cache_id = null;
-
- /**
- * Set this if you want different sets of compiled files for the same
- * templates.
- *
- * @var string
- */
- public $compile_id = null;
-
- /**
- * caching enabled
- *
- * @var int
- */
- public $caching = Smarty::CACHING_OFF;
-
- /**
- * check template for modifications?
- *
- * @var int
- */
- public $compile_check = Smarty::COMPILECHECK_ON;
-
- /**
- * cache lifetime in seconds
- *
- * @var integer
- */
- public $cache_lifetime = 3600;
-
- /**
- * Array of source information for known template functions
- *
- * @var array
- */
- public $tplFunctions = array();
-
- /**
- * universal cache
- *
- * @var array()
- */
- public $_cache = array();
-
- /**
- * fetches a rendered Smarty template
- *
- * @param string $template the resource handle of the template file or template object
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- *
- * @throws Exception
- * @throws SmartyException
- * @return string rendered template output
- */
- public function fetch($template = null, $cache_id = null, $compile_id = null, $parent = null)
- {
- $result = $this->_execute($template, $cache_id, $compile_id, $parent, 0);
- return $result === null ? ob_get_clean() : $result;
- }
-
- /**
- * displays a Smarty template
- *
- * @param string $template the resource handle of the template file or template object
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- *
- * @throws \Exception
- * @throws \SmartyException
- */
- public function display($template = null, $cache_id = null, $compile_id = null, $parent = null)
- {
- // display template
- $this->_execute($template, $cache_id, $compile_id, $parent, 1);
- }
-
- /**
- * test if cache is valid
- *
- * @api Smarty::isCached()
- * @link https://www.smarty.net/docs/en/api.is.cached.tpl
- *
- * @param null|string|\Smarty_Internal_Template $template the resource handle of the template file or template
- * object
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- *
- * @return bool cache status
- * @throws \Exception
- * @throws \SmartyException
- */
- public function isCached($template = null, $cache_id = null, $compile_id = null, $parent = null)
- {
- return $this->_execute($template, $cache_id, $compile_id, $parent, 2);
- }
-
- /**
- * fetches a rendered Smarty template
- *
- * @param string $template the resource handle of the template file or template object
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- * @param string $function function type 0 = fetch, 1 = display, 2 = isCache
- *
- * @return mixed
- * @throws \Exception
- * @throws \SmartyException
- */
- private function _execute($template, $cache_id, $compile_id, $parent, $function)
- {
- $smarty = $this->_getSmartyObj();
- $saveVars = true;
- if ($template === null) {
- if (!$this->_isTplObj()) {
- throw new SmartyException($function . '():Missing \'$template\' parameter');
- } else {
- $template = $this;
- }
- } elseif (is_object($template)) {
- /* @var Smarty_Internal_Template $template */
- if (!isset($template->_objType) || !$template->_isTplObj()) {
- throw new SmartyException($function . '():Template object expected');
- }
- } else {
- // get template object
- $saveVars = false;
- $template = $smarty->createTemplate($template, $cache_id, $compile_id, $parent ? $parent : $this, false);
- if ($this->_objType === 1) {
- // set caching in template object
- $template->caching = $this->caching;
- }
- }
- // make sure we have integer values
- $template->caching = (int)$template->caching;
- // fetch template content
- $level = ob_get_level();
- try {
- $_smarty_old_error_level =
- isset($smarty->error_reporting) ? error_reporting($smarty->error_reporting) : null;
-
- if ($smarty->isMutingUndefinedOrNullWarnings()) {
- $errorHandler = new Smarty_Internal_ErrorHandler();
- $errorHandler->activate();
- }
-
- if ($this->_objType === 2) {
- /* @var Smarty_Internal_Template $this */
- $template->tplFunctions = $this->tplFunctions;
- $template->inheritance = $this->inheritance;
- }
- /* @var Smarty_Internal_Template $parent */
- if (isset($parent->_objType) && ($parent->_objType === 2) && !empty($parent->tplFunctions)) {
- $template->tplFunctions = array_merge($parent->tplFunctions, $template->tplFunctions);
- }
- if ($function === 2) {
- if ($template->caching) {
- // return cache status of template
- if (!isset($template->cached)) {
- $template->loadCached();
- }
- $result = $template->cached->isCached($template);
- Smarty_Internal_Template::$isCacheTplObj[ $template->_getTemplateId() ] = $template;
- } else {
- return false;
- }
- } else {
- if ($saveVars) {
- $savedTplVars = $template->tpl_vars;
- $savedConfigVars = $template->config_vars;
- }
- ob_start();
- $template->_mergeVars();
- if (!empty(Smarty::$global_tpl_vars)) {
- $template->tpl_vars = array_merge(Smarty::$global_tpl_vars, $template->tpl_vars);
- }
- $result = $template->render(false, $function);
- $template->_cleanUp();
- if ($saveVars) {
- $template->tpl_vars = $savedTplVars;
- $template->config_vars = $savedConfigVars;
- } else {
- if (!$function && !isset(Smarty_Internal_Template::$tplObjCache[ $template->templateId ])) {
- $template->parent = null;
- $template->tpl_vars = $template->config_vars = array();
- Smarty_Internal_Template::$tplObjCache[ $template->templateId ] = $template;
- }
- }
- }
-
- if (isset($errorHandler)) {
- $errorHandler->deactivate();
- }
-
- if (isset($_smarty_old_error_level)) {
- error_reporting($_smarty_old_error_level);
- }
- return $result;
- } catch (Throwable $e) {
- while (ob_get_level() > $level) {
- ob_end_clean();
- }
- if (isset($errorHandler)) {
- $errorHandler->deactivate();
- }
-
- if (isset($_smarty_old_error_level)) {
- error_reporting($_smarty_old_error_level);
- }
- throw $e;
- }
- }
-
- /**
- * Registers plugin to be used in templates
- *
- * @api Smarty::registerPlugin()
- * @link https://www.smarty.net/docs/en/api.register.plugin.tpl
- *
- * @param string $type plugin type
- * @param string $name name of template tag
- * @param callable $callback PHP callback to register
- * @param bool $cacheable if true (default) this function is cache able
- * @param mixed $cache_attr caching attributes if any
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function registerPlugin($type, $name, $callback, $cacheable = true, $cache_attr = null)
- {
- return $this->ext->registerPlugin->registerPlugin($this, $type, $name, $callback, $cacheable, $cache_attr);
- }
-
- /**
- * load a filter of specified type and name
- *
- * @api Smarty::loadFilter()
- * @link https://www.smarty.net/docs/en/api.load.filter.tpl
- *
- * @param string $type filter type
- * @param string $name filter name
- *
- * @return bool
- * @throws \SmartyException
- */
- public function loadFilter($type, $name)
- {
- return $this->ext->loadFilter->loadFilter($this, $type, $name);
- }
-
- /**
- * Registers a filter function
- *
- * @api Smarty::registerFilter()
- * @link https://www.smarty.net/docs/en/api.register.filter.tpl
- *
- * @param string $type filter type
- * @param callable $callback
- * @param string|null $name optional filter name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function registerFilter($type, $callback, $name = null)
- {
- return $this->ext->registerFilter->registerFilter($this, $type, $callback, $name);
- }
-
- /**
- * Registers object to be used in templates
- *
- * @api Smarty::registerObject()
- * @link https://www.smarty.net/docs/en/api.register.object.tpl
- *
- * @param string $object_name
- * @param object $object the referenced PHP object to register
- * @param array $allowed_methods_properties list of allowed methods (empty = all)
- * @param bool $format smarty argument format, else traditional
- * @param array $block_methods list of block-methods
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function registerObject(
- $object_name,
- $object,
- $allowed_methods_properties = array(),
- $format = true,
- $block_methods = array()
- ) {
- return $this->ext->registerObject->registerObject(
- $this,
- $object_name,
- $object,
- $allowed_methods_properties,
- $format,
- $block_methods
- );
- }
-
- /**
- * @param int $compile_check
- */
- public function setCompileCheck($compile_check)
- {
- $this->compile_check = (int)$compile_check;
- }
-
- /**
- * @param int $caching
- */
- public function setCaching($caching)
- {
- $this->caching = (int)$caching;
- }
-
- /**
- * @param int $cache_lifetime
- */
- public function setCacheLifetime($cache_lifetime)
- {
- $this->cache_lifetime = $cache_lifetime;
- }
-
- /**
- * @param string $compile_id
- */
- public function setCompileId($compile_id)
- {
- $this->compile_id = $compile_id;
- }
-
- /**
- * @param string $cache_id
- */
- public function setCacheId($cache_id)
- {
- $this->cache_id = $cache_id;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
deleted file mode 100644
index d5c18d31a..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
+++ /dev/null
@@ -1,1749 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Smarty Template Compiler Base
- * This file contains the basic classes and methods for compiling Smarty templates with lexer/parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Main abstract compiler class
- *
- * @package Smarty
- * @subpackage Compiler
- *
- * @property Smarty_Internal_SmartyTemplateCompiler $prefixCompiledCode = ''
- * @property Smarty_Internal_SmartyTemplateCompiler $postfixCompiledCode = ''
- * @method registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false)
- * @method unregisterPostCompileCallback($key)
- */
-abstract class Smarty_Internal_TemplateCompilerBase
-{
- /**
- * compile tag objects cache
- *
- * @var array
- */
- public static $_tag_objects = array();
-
- /**
- * counter for prefix variable number
- *
- * @var int
- */
- public static $prefixVariableNumber = 0;
-
- /**
- * Smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * Parser object
- *
- * @var Smarty_Internal_Templateparser
- */
- public $parser = null;
-
- /**
- * hash for nocache sections
- *
- * @var mixed
- */
- public $nocache_hash = null;
-
- /**
- * suppress generation of nocache code
- *
- * @var bool
- */
- public $suppressNocacheProcessing = false;
-
- /**
- * caching enabled (copied from template object)
- *
- * @var int
- */
- public $caching = 0;
-
- /**
- * tag stack
- *
- * @var array
- */
- public $_tag_stack = array();
-
- /**
- * tag stack count
- *
- * @var array
- */
- public $_tag_stack_count = array();
-
- /**
- * Plugins used by template
- *
- * @var array
- */
- public $required_plugins = array('compiled' => array(), 'nocache' => array());
-
- /**
- * Required plugins stack
- *
- * @var array
- */
- public $required_plugins_stack = array();
-
- /**
- * current template
- *
- * @var Smarty_Internal_Template
- */
- public $template = null;
-
- /**
- * merged included sub template data
- *
- * @var array
- */
- public $mergedSubTemplatesData = array();
-
- /**
- * merged sub template code
- *
- * @var array
- */
- public $mergedSubTemplatesCode = array();
-
- /**
- * collected template properties during compilation
- *
- * @var array
- */
- public $templateProperties = array();
-
- /**
- * source line offset for error messages
- *
- * @var int
- */
- public $trace_line_offset = 0;
-
- /**
- * trace uid
- *
- * @var string
- */
- public $trace_uid = '';
-
- /**
- * trace file path
- *
- * @var string
- */
- public $trace_filepath = '';
-
- /**
- * stack for tracing file and line of nested {block} tags
- *
- * @var array
- */
- public $trace_stack = array();
-
- /**
- * plugins loaded by default plugin handler
- *
- * @var array
- */
- public $default_handler_plugins = array();
-
- /**
- * saved preprocessed modifier list
- *
- * @var mixed
- */
- public $default_modifier_list = null;
-
- /**
- * force compilation of complete template as nocache
- *
- * @var boolean
- */
- public $forceNocache = false;
-
- /**
- * flag if compiled template file shall we written
- *
- * @var bool
- */
- public $write_compiled_code = true;
-
- /**
- * Template functions
- *
- * @var array
- */
- public $tpl_function = array();
-
- /**
- * called sub functions from template function
- *
- * @var array
- */
- public $called_functions = array();
-
- /**
- * compiled template or block function code
- *
- * @var string
- */
- public $blockOrFunctionCode = '';
-
- /**
- * flags for used modifier plugins
- *
- * @var array
- */
- public $modifier_plugins = array();
-
- /**
- * type of already compiled modifier
- *
- * @var array
- */
- public $known_modifier_type = array();
-
- /**
- * parent compiler object for merged subtemplates and template functions
- *
- * @var Smarty_Internal_TemplateCompilerBase
- */
- public $parent_compiler = null;
-
- /**
- * Flag true when compiling nocache section
- *
- * @var bool
- */
- public $nocache = false;
-
- /**
- * Flag true when tag is compiled as nocache
- *
- * @var bool
- */
- public $tag_nocache = false;
-
- /**
- * Compiled tag prefix code
- *
- * @var array
- */
- public $prefix_code = array();
-
- /**
- * used prefix variables by current compiled tag
- *
- * @var array
- */
- public $usedPrefixVariables = array();
-
- /**
- * Prefix code stack
- *
- * @var array
- */
- public $prefixCodeStack = array();
-
- /**
- * Tag has compiled code
- *
- * @var bool
- */
- public $has_code = false;
-
- /**
- * A variable string was compiled
- *
- * @var bool
- */
- public $has_variable_string = false;
-
- /**
- * Stack for {setfilter} {/setfilter}
- *
- * @var array
- */
- public $variable_filter_stack = array();
-
- /**
- * variable filters for {setfilter} {/setfilter}
- *
- * @var array
- */
- public $variable_filters = array();
-
- /**
- * Nesting count of looping tags like {foreach}, {for}, {section}, {while}
- *
- * @var int
- */
- public $loopNesting = 0;
-
- /**
- * Strip preg pattern
- *
- * @var string
- */
- public $stripRegEx = '![\t ]*[\r\n]+[\t ]*!';
-
- /**
- * plugin search order
- *
- * @var array
- */
- public $plugin_search_order = array(
- 'function',
- 'block',
- 'compiler',
- 'class'
- );
-
- /**
- * General storage area for tag compiler plugins
- *
- * @var array
- */
- public $_cache = array();
-
- /**
- * Lexer preg pattern for left delimiter
- *
- * @var string
- */
- private $ldelPreg = '[{]';
-
- /**
- * Lexer preg pattern for right delimiter
- *
- * @var string
- */
- private $rdelPreg = '[}]';
-
- /**
- * Length of right delimiter
- *
- * @var int
- */
- private $rdelLength = 0;
-
- /**
- * Length of left delimiter
- *
- * @var int
- */
- private $ldelLength = 0;
-
- /**
- * Lexer preg pattern for user literals
- *
- * @var string
- */
- private $literalPreg = '';
-
- /**
- * Initialize compiler
- *
- * @param Smarty $smarty global instance
- */
- public function __construct(Smarty $smarty)
- {
- $this->smarty = $smarty;
- $this->nocache_hash = str_replace(
- array(
- '.',
- ','
- ),
- '_',
- uniqid(mt_rand(), true)
- );
- }
-
- /**
- * Method to compile a Smarty template
- *
- * @param Smarty_Internal_Template $template template object to compile
- * @param bool $nocache true is shall be compiled in nocache mode
- * @param null|Smarty_Internal_TemplateCompilerBase $parent_compiler
- *
- * @return bool true if compiling succeeded, false if it failed
- * @throws \Exception
- */
- public function compileTemplate(
- Smarty_Internal_Template $template,
- $nocache = null,
- Smarty_Internal_TemplateCompilerBase $parent_compiler = null
- ) {
- // get code frame of compiled template
- $_compiled_code = $template->smarty->ext->_codeFrame->create(
- $template,
- $this->compileTemplateSource(
- $template,
- $nocache,
- $parent_compiler
- ),
- $this->postFilter($this->blockOrFunctionCode) .
- join('', $this->mergedSubTemplatesCode),
- false,
- $this
- );
- return $_compiled_code;
- }
-
- /**
- * Compile template source and run optional post filter
- *
- * @param \Smarty_Internal_Template $template
- * @param null|bool $nocache flag if template must be compiled in nocache mode
- * @param \Smarty_Internal_TemplateCompilerBase $parent_compiler
- *
- * @return string
- * @throws \Exception
- */
- public function compileTemplateSource(
- Smarty_Internal_Template $template,
- $nocache = null,
- Smarty_Internal_TemplateCompilerBase $parent_compiler = null
- ) {
- try {
- // save template object in compiler class
- $this->template = $template;
- if ($this->smarty->debugging) {
- if (!isset($this->smarty->_debug)) {
- $this->smarty->_debug = new Smarty_Internal_Debug();
- }
- $this->smarty->_debug->start_compile($this->template);
- }
- $this->parent_compiler = $parent_compiler ? $parent_compiler : $this;
- $nocache = isset($nocache) ? $nocache : false;
- if (empty($template->compiled->nocache_hash)) {
- $template->compiled->nocache_hash = $this->nocache_hash;
- } else {
- $this->nocache_hash = $template->compiled->nocache_hash;
- }
- $this->caching = $template->caching;
- // flag for nocache sections
- $this->nocache = $nocache;
- $this->tag_nocache = false;
- // reset has nocache code flag
- $this->template->compiled->has_nocache_code = false;
- $this->has_variable_string = false;
- $this->prefix_code = array();
- // add file dependency
- if ($this->smarty->merge_compiled_includes || $this->template->source->handler->checkTimestamps()) {
- $this->parent_compiler->template->compiled->file_dependency[ $this->template->source->uid ] =
- array(
- $this->template->source->filepath,
- $this->template->source->getTimeStamp(),
- $this->template->source->type,
- );
- }
- $this->smarty->_current_file = $this->template->source->filepath;
- // get template source
- if (!empty($this->template->source->components)) {
- // we have array of inheritance templates by extends: resource
- // generate corresponding source code sequence
- $_content =
- Smarty_Internal_Compile_Extends::extendsSourceArrayCode($this->template);
- } else {
- // get template source
- $_content = $this->template->source->getContent();
- }
- $_compiled_code = $this->postFilter($this->doCompile($this->preFilter($_content), true));
- if (!empty($this->required_plugins[ 'compiled' ]) || !empty($this->required_plugins[ 'nocache' ])) {
- $_compiled_code = '<?php ' . $this->compileRequiredPlugins() . "?>\n" . $_compiled_code;
- }
- } catch (Exception $e) {
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_compile($this->template);
- }
- $this->_tag_stack = array();
- // free memory
- $this->parent_compiler = null;
- $this->template = null;
- $this->parser = null;
- throw $e;
- }
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_compile($this->template);
- }
- $this->parent_compiler = null;
- $this->parser = null;
- return $_compiled_code;
- }
-
- /**
- * Optionally process compiled code by post filter
- *
- * @param string $code compiled code
- *
- * @return string
- * @throws \SmartyException
- */
- public function postFilter($code)
- {
- // run post filter if on code
- if (!empty($code)
- && (isset($this->smarty->autoload_filters[ 'post' ]) || isset($this->smarty->registered_filters[ 'post' ]))
- ) {
- return $this->smarty->ext->_filterHandler->runFilter('post', $code, $this->template);
- } else {
- return $code;
- }
- }
-
- /**
- * Run optional prefilter
- *
- * @param string $_content template source
- *
- * @return string
- * @throws \SmartyException
- */
- public function preFilter($_content)
- {
- // run pre filter if required
- if ($_content !== ''
- && ((isset($this->smarty->autoload_filters[ 'pre' ]) || isset($this->smarty->registered_filters[ 'pre' ])))
- ) {
- return $this->smarty->ext->_filterHandler->runFilter('pre', $_content, $this->template);
- } else {
- return $_content;
- }
- }
-
- /**
- * Compile Tag
- * This is a call back from the lexer/parser
- *
- * Save current prefix code
- * Compile tag
- * Merge tag prefix code with saved one
- * (required nested tags in attributes)
- *
- * @param string $tag tag name
- * @param array $args array with tag attributes
- * @param array $parameter array with compilation parameter
- *
- * @throws SmartyCompilerException
- * @throws SmartyException
- * @return string compiled code
- */
- public function compileTag($tag, $args, $parameter = array())
- {
- $this->prefixCodeStack[] = $this->prefix_code;
- $this->prefix_code = array();
- $result = $this->compileTag2($tag, $args, $parameter);
- $this->prefix_code = array_merge($this->prefix_code, array_pop($this->prefixCodeStack));
- return $result;
- }
-
- /**
- * compile variable
- *
- * @param string $variable
- *
- * @return string
- */
- public function compileVariable($variable)
- {
- if (!strpos($variable, '(')) {
- // not a variable variable
- $var = trim($variable, '\'');
- $this->tag_nocache = $this->tag_nocache |
- $this->template->ext->getTemplateVars->_getVariable(
- $this->template,
- $var,
- null,
- true,
- false
- )->nocache;
- // todo $this->template->compiled->properties['variables'][$var] = $this->tag_nocache | $this->nocache;
- }
- return '$_smarty_tpl->tpl_vars[' . $variable . ']->value';
- }
-
- /**
- * compile config variable
- *
- * @param string $variable
- *
- * @return string
- */
- public function compileConfigVariable($variable)
- {
- // return '$_smarty_tpl->config_vars[' . $variable . ']';
- return '$_smarty_tpl->smarty->ext->configLoad->_getConfigVariable($_smarty_tpl, ' . $variable . ')';
- }
-
- /**
- * compile PHP function call
- *
- * @param string $name
- * @param array $parameter
- *
- * @return string
- * @throws \SmartyCompilerException
- */
- public function compilePHPFunctionCall($name, $parameter)
- {
- if (!$this->smarty->security_policy || $this->smarty->security_policy->isTrustedPhpFunction($name, $this)) {
- if (strcasecmp($name, 'isset') === 0 || strcasecmp($name, 'empty') === 0
- || strcasecmp($name, 'array') === 0 || is_callable($name)
- ) {
- $func_name = smarty_strtolower_ascii($name);
-
- if ($func_name === 'isset') {
- if (count($parameter) === 0) {
- $this->trigger_template_error('Illegal number of parameter in "isset()"');
- }
-
- $pa = array();
- foreach ($parameter as $p) {
- $pa[] = $this->syntaxMatchesVariable($p) ? 'isset(' . $p . ')' : '(' . $p . ' !== null )';
- }
- return '(' . implode(' && ', $pa) . ')';
-
- } elseif (in_array(
- $func_name,
- array(
- 'empty',
- 'reset',
- 'current',
- 'end',
- 'prev',
- 'next'
- )
- )
- ) {
- if (count($parameter) !== 1) {
- $this->trigger_template_error("Illegal number of parameter in '{$func_name()}'");
- }
- if ($func_name === 'empty') {
- return $func_name . '(' .
- str_replace("')->value", "',null,true,false)->value", $parameter[ 0 ]) . ')';
- } else {
- return $func_name . '(' . $parameter[ 0 ] . ')';
- }
- } else {
- return $name . '(' . implode(',', $parameter) . ')';
- }
- } else {
- $this->trigger_template_error("unknown function '{$name}'");
- }
- }
- }
-
- /**
- * Determines whether the passed string represents a valid (PHP) variable.
- * This is important, because `isset()` only works on variables and `empty()` can only be passed
- * a variable prior to php5.5
- * @param $string
- * @return bool
- */
- private function syntaxMatchesVariable($string) {
- static $regex_pattern = '/^\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*((->)[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*|\[.*]*\])*$/';
- return 1 === preg_match($regex_pattern, trim($string));
- }
-
- /**
- * This method is called from parser to process a text content section if strip is enabled
- * - remove text from inheritance child templates as they may generate output
- *
- * @param string $text
- *
- * @return string
- */
- public function processText($text)
- {
-
- if (strpos($text, '<') === false) {
- return preg_replace($this->stripRegEx, '', $text);
- }
-
- $store = array();
- $_store = 0;
-
- // capture html elements not to be messed with
- $_offset = 0;
- if (preg_match_all(
- '#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is',
- $text,
- $matches,
- PREG_OFFSET_CAPTURE | PREG_SET_ORDER
- )
- ) {
- foreach ($matches as $match) {
- $store[] = $match[ 0 ][ 0 ];
- $_length = strlen($match[ 0 ][ 0 ]);
- $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
- $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
- $_offset += $_length - strlen($replace);
- $_store++;
- }
- }
- $expressions = array(// replace multiple spaces between tags by a single space
- '#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2',
- // remove newline between tags
- '#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2',
- // remove multiple spaces between attributes (but not in attribute values!)
- '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
- '#>[\040\011]+$#Ss' => '> ',
- '#>[\040\011]*[\n]\s*$#Ss' => '>',
- $this->stripRegEx => '',
- );
- $text = preg_replace(array_keys($expressions), array_values($expressions), $text);
- $_offset = 0;
- if (preg_match_all(
- '#@!@SMARTY:([0-9]+):SMARTY@!@#is',
- $text,
- $matches,
- PREG_OFFSET_CAPTURE | PREG_SET_ORDER
- )
- ) {
- foreach ($matches as $match) {
- $_length = strlen($match[ 0 ][ 0 ]);
- $replace = $store[ $match[ 1 ][ 0 ] ];
- $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] + $_offset, $_length);
- $_offset += strlen($replace) - $_length;
- $_store++;
- }
- }
- return $text;
- }
-
- /**
- * lazy loads internal compile plugin for tag and calls the compile method
- * compile objects cached for reuse.
- * class name format: Smarty_Internal_Compile_TagName
- * plugin filename format: Smarty_Internal_TagName.php
- *
- * @param string $tag tag name
- * @param array $args list of tag attributes
- * @param mixed $param1 optional parameter
- * @param mixed $param2 optional parameter
- * @param mixed $param3 optional parameter
- *
- * @return bool|string compiled code or false
- * @throws \SmartyCompilerException
- */
- public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null)
- {
- /* @var Smarty_Internal_CompileBase $tagCompiler */
- $tagCompiler = $this->getTagCompiler($tag);
- // compile this tag
- return $tagCompiler === false ? false : $tagCompiler->compile($args, $this, $param1, $param2, $param3);
- }
-
- /**
- * lazy loads internal compile plugin for tag compile objects cached for reuse.
- *
- * class name format: Smarty_Internal_Compile_TagName
- * plugin filename format: Smarty_Internal_TagName.php
- *
- * @param string $tag tag name
- *
- * @return bool|\Smarty_Internal_CompileBase tag compiler object or false if not found
- */
- public function getTagCompiler($tag)
- {
- // re-use object if already exists
- if (!isset(self::$_tag_objects[ $tag ])) {
- // lazy load internal compiler plugin
- $_tag = explode('_', $tag);
- $_tag = array_map('smarty_ucfirst_ascii', $_tag);
- $class_name = 'Smarty_Internal_Compile_' . implode('_', $_tag);
- if (class_exists($class_name)
- && (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this))
- ) {
- self::$_tag_objects[ $tag ] = new $class_name;
- } else {
- self::$_tag_objects[ $tag ] = false;
- }
- }
- return self::$_tag_objects[ $tag ];
- }
-
- /**
- * Check for plugins and return function name
- *
- * @param $plugin_name
- * @param string $plugin_type type of plugin
- *
- * @return string call name of function
- * @throws \SmartyException
- */
- public function getPlugin($plugin_name, $plugin_type)
- {
- $function = null;
- if ($this->caching && ($this->nocache || $this->tag_nocache)) {
- if (isset($this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) {
- $function =
- $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ];
- } elseif (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) {
- $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ] =
- $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ];
- $function =
- $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ];
- }
- } else {
- if (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) {
- $function =
- $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ];
- } elseif (isset($this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) {
- $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ] =
- $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ];
- $function =
- $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ];
- }
- }
- if (isset($function)) {
- if ($plugin_type === 'modifier') {
- $this->modifier_plugins[ $plugin_name ] = true;
- }
- return $function;
- }
- // loop through plugin dirs and find the plugin
- $function = 'smarty_' . $plugin_type . '_' . $plugin_name;
- $file = $this->smarty->loadPlugin($function, false);
- if (is_string($file)) {
- if ($this->caching && ($this->nocache || $this->tag_nocache)) {
- $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'file' ] =
- $file;
- $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ] =
- $function;
- } else {
- $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'file' ] =
- $file;
- $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ] =
- $function;
- }
- if ($plugin_type === 'modifier') {
- $this->modifier_plugins[ $plugin_name ] = true;
- }
- return $function;
- }
- if (is_callable($function)) {
- // plugin function is defined in the script
- return $function;
- }
- return false;
- }
-
- /**
- * Check for plugins by default plugin handler
- *
- * @param string $tag name of tag
- * @param string $plugin_type type of plugin
- *
- * @return bool true if found
- * @throws \SmartyCompilerException
- */
- public function getPluginFromDefaultHandler($tag, $plugin_type)
- {
- $callback = null;
- $script = null;
- $cacheable = true;
- $result = call_user_func_array(
- $this->smarty->default_plugin_handler_func,
- array(
- $tag,
- $plugin_type,
- $this->template,
- &$callback,
- &$script,
- &$cacheable,
- )
- );
- if ($result) {
- $this->tag_nocache = $this->tag_nocache || !$cacheable;
- if ($script !== null) {
- if (is_file($script)) {
- if ($this->caching && ($this->nocache || $this->tag_nocache)) {
- $this->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'file' ] =
- $script;
- $this->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'function' ] =
- $callback;
- } else {
- $this->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'file' ] =
- $script;
- $this->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'function' ] =
- $callback;
- }
- include_once $script;
- } else {
- $this->trigger_template_error("Default plugin handler: Returned script file '{$script}' for '{$tag}' not found");
- }
- }
- if (is_callable($callback)) {
- $this->default_handler_plugins[ $plugin_type ][ $tag ] = array(
- $callback,
- true,
- array()
- );
- return true;
- } else {
- $this->trigger_template_error("Default plugin handler: Returned callback for '{$tag}' not callable");
- }
- }
- return false;
- }
-
- /**
- * Append code segments and remove unneeded ?> <?php transitions
- *
- * @param string $left
- * @param string $right
- *
- * @return string
- */
- public function appendCode($left, $right)
- {
- if (preg_match('/\s*\?>\s?$/D', $left) && preg_match('/^<\?php\s+/', $right)) {
- $left = preg_replace('/\s*\?>\s?$/D', "\n", $left);
- $left .= preg_replace('/^<\?php\s+/', '', $right);
- } else {
- $left .= $right;
- }
- return $left;
- }
-
- /**
- * Inject inline code for nocache template sections
- * This method gets the content of each template element from the parser.
- * If the content is compiled code and it should be not cached the code is injected
- * into the rendered output.
- *
- * @param string $content content of template element
- * @param boolean $is_code true if content is compiled code
- *
- * @return string content
- */
- public function processNocacheCode($content, $is_code)
- {
- // If the template is not evaluated and we have a nocache section and or a nocache tag
- if ($is_code && !empty($content)) {
- // generate replacement code
- if ((!($this->template->source->handler->recompiled) || $this->forceNocache) && $this->caching
- && !$this->suppressNocacheProcessing && ($this->nocache || $this->tag_nocache)
- ) {
- $this->template->compiled->has_nocache_code = true;
- $_output = addcslashes($content, '\'\\');
- $_output = str_replace('^#^', '\'', $_output);
- $_output =
- "<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/{$_output}/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
- // make sure we include modifier plugins for nocache code
- foreach ($this->modifier_plugins as $plugin_name => $dummy) {
- if (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ])) {
- $this->required_plugins[ 'nocache' ][ $plugin_name ][ 'modifier' ] =
- $this->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ];
- }
- }
- } else {
- $_output = $content;
- }
- } else {
- $_output = $content;
- }
- $this->modifier_plugins = array();
- $this->suppressNocacheProcessing = false;
- $this->tag_nocache = false;
- return $_output;
- }
-
- /**
- * Get Id
- *
- * @param string $input
- *
- * @return bool|string
- */
- public function getId($input)
- {
- if (preg_match('~^([\'"]*)([0-9]*[a-zA-Z_]\w*)\1$~', $input, $match)) {
- return $match[ 2 ];
- }
- return false;
- }
-
- /**
- * Get variable name from string
- *
- * @param string $input
- *
- * @return bool|string
- */
- public function getVariableName($input)
- {
- if (preg_match('~^[$]_smarty_tpl->tpl_vars\[[\'"]*([0-9]*[a-zA-Z_]\w*)[\'"]*\]->value$~', $input, $match)) {
- return $match[ 1 ];
- }
- return false;
- }
-
- /**
- * Set nocache flag in variable or create new variable
- *
- * @param string $varName
- */
- public function setNocacheInVariable($varName)
- {
- // create nocache var to make it know for further compiling
- if ($_var = $this->getId($varName)) {
- if (isset($this->template->tpl_vars[ $_var ])) {
- $this->template->tpl_vars[ $_var ] = clone $this->template->tpl_vars[ $_var ];
- $this->template->tpl_vars[ $_var ]->nocache = true;
- } else {
- $this->template->tpl_vars[ $_var ] = new Smarty_Variable(null, true);
- }
- }
- }
-
- /**
- * @param array $_attr tag attributes
- * @param array $validScopes
- *
- * @return int|string
- * @throws \SmartyCompilerException
- */
- public function convertScope($_attr, $validScopes)
- {
- $_scope = 0;
- if (isset($_attr[ 'scope' ])) {
- $_scopeName = trim($_attr[ 'scope' ], '\'"');
- if (is_numeric($_scopeName) && in_array($_scopeName, $validScopes)) {
- $_scope = $_scopeName;
- } elseif (is_string($_scopeName)) {
- $_scopeName = trim($_scopeName, '\'"');
- $_scope = isset($validScopes[ $_scopeName ]) ? $validScopes[ $_scopeName ] : false;
- } else {
- $_scope = false;
- }
- if ($_scope === false) {
- $err = var_export($_scopeName, true);
- $this->trigger_template_error("illegal value '{$err}' for \"scope\" attribute", null, true);
- }
- }
- return $_scope;
- }
-
- /**
- * Generate nocache code string
- *
- * @param string $code PHP code
- *
- * @return string
- */
- public function makeNocacheCode($code)
- {
- return "echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/<?php " .
- str_replace('^#^', '\'', addcslashes($code, '\'\\')) .
- "?>/*/%%SmartyNocache:{$this->nocache_hash}%%*/';\n";
- }
-
- /**
- * display compiler error messages without dying
- * If parameter $args is empty it is a parser detected syntax error.
- * In this case the parser is called to obtain information about expected tokens.
- * If parameter $args contains a string this is used as error message
- *
- * @param string $args individual error message or null
- * @param string $line line-number
- * @param null|bool $tagline if true the line number of last tag
- *
- * @throws \SmartyCompilerException when an unexpected token is found
- */
- public function trigger_template_error($args = null, $line = null, $tagline = null)
- {
- $lex = $this->parser->lex;
- if ($tagline === true) {
- // get line number of Tag
- $line = $lex->taglineno;
- } elseif (!isset($line)) {
- // get template source line which has error
- $line = $lex->line;
- } else {
- $line = (int)$line;
- }
- if (in_array(
- $this->template->source->type,
- array(
- 'eval',
- 'string'
- )
- )
- ) {
- $templateName = $this->template->source->type . ':' . trim(
- preg_replace(
- '![\t\r\n]+!',
- ' ',
- strlen($lex->data) > 40 ?
- substr($lex->data, 0, 40) .
- '...' : $lex->data
- )
- );
- } else {
- $templateName = $this->template->source->type . ':' . $this->template->source->filepath;
- }
- // $line += $this->trace_line_offset;
- $match = preg_split("/\n/", $lex->data);
- $error_text =
- 'Syntax error in template "' . (empty($this->trace_filepath) ? $templateName : $this->trace_filepath) .
- '" on line ' . ($line + $this->trace_line_offset) . ' "' .
- trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ])) . '" ';
- if (isset($args)) {
- // individual error message
- $error_text .= $args;
- } else {
- $expect = array();
- // expected token from parser
- $error_text .= ' - Unexpected "' . $lex->value . '"';
- if (count($this->parser->yy_get_expected_tokens($this->parser->yymajor)) <= 4) {
- foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
- $exp_token = $this->parser->yyTokenName[ $token ];
- if (isset($lex->smarty_token_names[ $exp_token ])) {
- // token type from lexer
- $expect[] = '"' . $lex->smarty_token_names[ $exp_token ] . '"';
- } else {
- // otherwise internal token name
- $expect[] = $this->parser->yyTokenName[ $token ];
- }
- }
- $error_text .= ', expected one of: ' . implode(' , ', $expect);
- }
- }
- if ($this->smarty->_parserdebug) {
- $this->parser->errorRunDown();
- echo ob_get_clean();
- flush();
- }
- $e = new SmartyCompilerException(
- $error_text,
- 0,
- $this->template->source->filepath,
- $line
- );
- $e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ]));
- $e->desc = $args;
- $e->template = $this->template->source->filepath;
- throw $e;
- }
-
- /**
- * Return var_export() value with all white spaces removed
- *
- * @param mixed $value
- *
- * @return string
- */
- public function getVarExport($value)
- {
- return preg_replace('/\s/', '', var_export($value, true));
- }
-
- /**
- * enter double quoted string
- * - save tag stack count
- */
- public function enterDoubleQuote()
- {
- array_push($this->_tag_stack_count, $this->getTagStackCount());
- }
-
- /**
- * Return tag stack count
- *
- * @return int
- */
- public function getTagStackCount()
- {
- return count($this->_tag_stack);
- }
-
- /**
- * @param $lexerPreg
- *
- * @return mixed
- */
- public function replaceDelimiter($lexerPreg)
- {
- return str_replace(
- array('SMARTYldel', 'SMARTYliteral', 'SMARTYrdel', 'SMARTYautoliteral', 'SMARTYal'),
- array(
- $this->ldelPreg, $this->literalPreg, $this->rdelPreg,
- $this->smarty->getAutoLiteral() ? '{1,}' : '{9}',
- $this->smarty->getAutoLiteral() ? '' : '\\s*'
- ),
- $lexerPreg
- );
- }
-
- /**
- * Build lexer regular expressions for left and right delimiter and user defined literals
- */
- public function initDelimiterPreg()
- {
- $ldel = $this->smarty->getLeftDelimiter();
- $this->ldelLength = strlen($ldel);
- $this->ldelPreg = '';
- foreach (str_split($ldel, 1) as $chr) {
- $this->ldelPreg .= '[' . preg_quote($chr,'/') . ']';
- }
- $rdel = $this->smarty->getRightDelimiter();
- $this->rdelLength = strlen($rdel);
- $this->rdelPreg = '';
- foreach (str_split($rdel, 1) as $chr) {
- $this->rdelPreg .= '[' . preg_quote($chr,'/') . ']';
- }
- $literals = $this->smarty->getLiterals();
- if (!empty($literals)) {
- foreach ($literals as $key => $literal) {
- $literalPreg = '';
- foreach (str_split($literal, 1) as $chr) {
- $literalPreg .= '[' . preg_quote($chr,'/') . ']';
- }
- $literals[ $key ] = $literalPreg;
- }
- $this->literalPreg = '|' . implode('|', $literals);
- } else {
- $this->literalPreg = '';
- }
- }
-
- /**
- * leave double quoted string
- * - throw exception if block in string was not closed
- *
- * @throws \SmartyCompilerException
- */
- public function leaveDoubleQuote()
- {
- if (array_pop($this->_tag_stack_count) !== $this->getTagStackCount()) {
- $tag = $this->getOpenBlockTag();
- $this->trigger_template_error(
- "unclosed '{{$tag}}' in doubled quoted string",
- null,
- true
- );
- }
- }
-
- /**
- * Get left delimiter preg
- *
- * @return string
- */
- public function getLdelPreg()
- {
- return $this->ldelPreg;
- }
-
- /**
- * Get right delimiter preg
- *
- * @return string
- */
- public function getRdelPreg()
- {
- return $this->rdelPreg;
- }
-
- /**
- * Get length of left delimiter
- *
- * @return int
- */
- public function getLdelLength()
- {
- return $this->ldelLength;
- }
-
- /**
- * Get length of right delimiter
- *
- * @return int
- */
- public function getRdelLength()
- {
- return $this->rdelLength;
- }
-
- /**
- * Get name of current open block tag
- *
- * @return string|boolean
- */
- public function getOpenBlockTag()
- {
- $tagCount = $this->getTagStackCount();
- if ($tagCount) {
- return $this->_tag_stack[ $tagCount - 1 ][ 0 ];
- } else {
- return false;
- }
- }
-
- /**
- * Check if $value contains variable elements
- *
- * @param mixed $value
- *
- * @return bool|int
- */
- public function isVariable($value)
- {
- if (is_string($value)) {
- return preg_match('/[$(]/', $value);
- }
- if (is_bool($value) || is_numeric($value)) {
- return false;
- }
- if (is_array($value)) {
- foreach ($value as $k => $v) {
- if ($this->isVariable($k) || $this->isVariable($v)) {
- return true;
- }
- }
- return false;
- }
- return false;
- }
-
- /**
- * Get new prefix variable name
- *
- * @return string
- */
- public function getNewPrefixVariable()
- {
- ++self::$prefixVariableNumber;
- return $this->getPrefixVariable();
- }
-
- /**
- * Get current prefix variable name
- *
- * @return string
- */
- public function getPrefixVariable()
- {
- return '$_prefixVariable' . self::$prefixVariableNumber;
- }
-
- /**
- * append code to prefix buffer
- *
- * @param string $code
- */
- public function appendPrefixCode($code)
- {
- $this->prefix_code[] = $code;
- }
-
- /**
- * get prefix code string
- *
- * @return string
- */
- public function getPrefixCode()
- {
- $code = '';
- $prefixArray = array_merge($this->prefix_code, array_pop($this->prefixCodeStack));
- $this->prefixCodeStack[] = array();
- foreach ($prefixArray as $c) {
- $code = $this->appendCode($code, $c);
- }
- $this->prefix_code = array();
- return $code;
- }
-
- /**
- * Save current required plugins
- *
- * @param bool $init if true init required plugins
- */
- public function saveRequiredPlugins($init = false)
- {
- $this->required_plugins_stack[] = $this->required_plugins;
- if ($init) {
- $this->required_plugins = array('compiled' => array(), 'nocache' => array());
- }
- }
-
- /**
- * Restore required plugins
- */
- public function restoreRequiredPlugins()
- {
- $this->required_plugins = array_pop($this->required_plugins_stack);
- }
-
- /**
- * Compile code to call Smarty_Internal_Template::_checkPlugins()
- * for required plugins
- *
- * @return string
- */
- public function compileRequiredPlugins()
- {
- $code = $this->compileCheckPlugins($this->required_plugins[ 'compiled' ]);
- if ($this->caching && !empty($this->required_plugins[ 'nocache' ])) {
- $code .= $this->makeNocacheCode($this->compileCheckPlugins($this->required_plugins[ 'nocache' ]));
- }
- return $code;
- }
-
- /**
- * Compile code to call Smarty_Internal_Template::_checkPlugins
- * - checks if plugin is callable require otherwise
- *
- * @param $requiredPlugins
- *
- * @return string
- */
- public function compileCheckPlugins($requiredPlugins)
- {
- if (!empty($requiredPlugins)) {
- $plugins = array();
- foreach ($requiredPlugins as $plugin) {
- foreach ($plugin as $data) {
- $plugins[] = $data;
- }
- }
- return '$_smarty_tpl->_checkPlugins(' . $this->getVarExport($plugins) . ');' . "\n";
- } else {
- return '';
- }
- }
-
- /**
- * method to compile a Smarty template
- *
- * @param mixed $_content template source
- * @param bool $isTemplateSource
- *
- * @return bool true if compiling succeeded, false if it failed
- */
- abstract protected function doCompile($_content, $isTemplateSource = false);
-
- public function cStyleComment($string) {
- return '/*' . str_replace('*/', '* /' , $string) . '*/';
- }
-
- /**
- * Compile Tag
- *
- * @param string $tag tag name
- * @param array $args array with tag attributes
- * @param array $parameter array with compilation parameter
- *
- * @throws SmartyCompilerException
- * @throws SmartyException
- * @return string compiled code
- */
- private function compileTag2($tag, $args, $parameter)
- {
- $plugin_type = '';
- // $args contains the attributes parsed and compiled by the lexer/parser
- // assume that tag does compile into code, but creates no HTML output
- $this->has_code = true;
- // log tag/attributes
- if (isset($this->smarty->_cache[ 'get_used_tags' ])) {
- $this->template->_cache[ 'used_tags' ][] = array(
- $tag,
- $args
- );
- }
- // check nocache option flag
- foreach ($args as $arg) {
- if (!is_array($arg)) {
- if ($arg === "'nocache'" || $arg === 'nocache') {
- $this->tag_nocache = true;
- }
- } else {
- foreach ($arg as $k => $v) {
- if (($k === "'nocache'" || $k === 'nocache') && (trim($v, "'\" ") === 'true')) {
- $this->tag_nocache = true;
- }
- }
- }
- }
- // compile the smarty tag (required compile classes to compile the tag are auto loaded)
- if (($_output = $this->callTagCompiler($tag, $args, $parameter)) === false) {
- if (isset($this->parent_compiler->tpl_function[ $tag ])
- || (isset($this->template->smarty->ext->_tplFunction)
- && $this->template->smarty->ext->_tplFunction->getTplFunction($this->template, $tag) !== false)
- ) {
- // template defined by {template} tag
- $args[ '_attr' ][ 'name' ] = "'{$tag}'";
- $_output = $this->callTagCompiler('call', $args, $parameter);
- }
- }
- if ($_output !== false) {
- if ($_output !== true) {
- // did we get compiled code
- if ($this->has_code) {
- // return compiled code
- return $_output;
- }
- }
- // tag did not produce compiled code
- return null;
- } else {
- // map_named attributes
- if (isset($args[ '_attr' ])) {
- foreach ($args[ '_attr' ] as $key => $attribute) {
- if (is_array($attribute)) {
- $args = array_merge($args, $attribute);
- }
- }
- }
- // not an internal compiler tag
- if (strlen($tag) < 6 || substr($tag, -5) !== 'close') {
- // check if tag is a registered object
- if (isset($this->smarty->registered_objects[ $tag ]) && isset($parameter[ 'object_method' ])) {
- $method = $parameter[ 'object_method' ];
- if (!in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])
- && (empty($this->smarty->registered_objects[ $tag ][ 1 ])
- || in_array($method, $this->smarty->registered_objects[ $tag ][ 1 ]))
- ) {
- return $this->callTagCompiler('private_object_function', $args, $parameter, $tag, $method);
- } elseif (in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])) {
- return $this->callTagCompiler(
- 'private_object_block_function',
- $args,
- $parameter,
- $tag,
- $method
- );
- } else {
- // throw exception
- $this->trigger_template_error(
- 'not allowed method "' . $method . '" in registered object "' .
- $tag . '"',
- null,
- true
- );
- }
- }
- // check if tag is registered
- foreach (array(
- Smarty::PLUGIN_COMPILER,
- Smarty::PLUGIN_FUNCTION,
- Smarty::PLUGIN_BLOCK,
- ) as $plugin_type) {
- if (isset($this->smarty->registered_plugins[ $plugin_type ][ $tag ])) {
- // if compiler function plugin call it now
- if ($plugin_type === Smarty::PLUGIN_COMPILER) {
- $new_args = array();
- foreach ($args as $key => $mixed) {
- if (is_array($mixed)) {
- $new_args = array_merge($new_args, $mixed);
- } else {
- $new_args[ $key ] = $mixed;
- }
- }
- if (!$this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 1 ]) {
- $this->tag_nocache = true;
- }
- return call_user_func_array(
- $this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 0 ],
- array(
- $new_args,
- $this
- )
- );
- }
- // compile registered function or block function
- if ($plugin_type === Smarty::PLUGIN_FUNCTION || $plugin_type === Smarty::PLUGIN_BLOCK) {
- return $this->callTagCompiler(
- 'private_registered_' . $plugin_type,
- $args,
- $parameter,
- $tag
- );
- }
- }
- }
- // check plugins from plugins folder
- foreach ($this->plugin_search_order as $plugin_type) {
- if ($plugin_type === Smarty::PLUGIN_COMPILER
- && $this->smarty->loadPlugin('smarty_compiler_' . $tag)
- && (!isset($this->smarty->security_policy)
- || $this->smarty->security_policy->isTrustedTag($tag, $this))
- ) {
- $plugin = 'smarty_compiler_' . $tag;
- if (is_callable($plugin)) {
- // convert arguments format for old compiler plugins
- $new_args = array();
- foreach ($args as $key => $mixed) {
- if (is_array($mixed)) {
- $new_args = array_merge($new_args, $mixed);
- } else {
- $new_args[ $key ] = $mixed;
- }
- }
- return $plugin($new_args, $this->smarty);
- }
- if (class_exists($plugin, false)) {
- $plugin_object = new $plugin;
- if (method_exists($plugin_object, 'compile')) {
- return $plugin_object->compile($args, $this);
- }
- }
- throw new SmartyException("Plugin '{$tag}' not callable");
- } else {
- if ($function = $this->getPlugin($tag, $plugin_type)) {
- if (!isset($this->smarty->security_policy)
- || $this->smarty->security_policy->isTrustedTag($tag, $this)
- ) {
- return $this->callTagCompiler(
- 'private_' . $plugin_type . '_plugin',
- $args,
- $parameter,
- $tag,
- $function
- );
- }
- }
- }
- }
- if (is_callable($this->smarty->default_plugin_handler_func)) {
- $found = false;
- // look for already resolved tags
- foreach ($this->plugin_search_order as $plugin_type) {
- if (isset($this->default_handler_plugins[ $plugin_type ][ $tag ])) {
- $found = true;
- break;
- }
- }
- if (!$found) {
- // call default handler
- foreach ($this->plugin_search_order as $plugin_type) {
- if ($this->getPluginFromDefaultHandler($tag, $plugin_type)) {
- $found = true;
- break;
- }
- }
- }
- if ($found) {
- // if compiler function plugin call it now
- if ($plugin_type === Smarty::PLUGIN_COMPILER) {
- $new_args = array();
- foreach ($args as $key => $mixed) {
- if (is_array($mixed)) {
- $new_args = array_merge($new_args, $mixed);
- } else {
- $new_args[ $key ] = $mixed;
- }
- }
- return call_user_func_array(
- $this->default_handler_plugins[ $plugin_type ][ $tag ][ 0 ],
- array(
- $new_args,
- $this
- )
- );
- } else {
- return $this->callTagCompiler(
- 'private_registered_' . $plugin_type,
- $args,
- $parameter,
- $tag
- );
- }
- }
- }
- } else {
- // compile closing tag of block function
- $base_tag = substr($tag, 0, -5);
- // check if closing tag is a registered object
- if (isset($this->smarty->registered_objects[ $base_tag ]) && isset($parameter[ 'object_method' ])) {
- $method = $parameter[ 'object_method' ];
- if (in_array($method, $this->smarty->registered_objects[ $base_tag ][ 3 ])) {
- return $this->callTagCompiler(
- 'private_object_block_function',
- $args,
- $parameter,
- $tag,
- $method
- );
- } else {
- // throw exception
- $this->trigger_template_error(
- 'not allowed closing tag method "' . $method .
- '" in registered object "' . $base_tag . '"',
- null,
- true
- );
- }
- }
- // registered block tag ?
- if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ])
- || isset($this->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ])
- ) {
- return $this->callTagCompiler('private_registered_block', $args, $parameter, $tag);
- }
- // registered function tag ?
- if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) {
- return $this->callTagCompiler('private_registered_function', $args, $parameter, $tag);
- }
- // block plugin?
- if ($function = $this->getPlugin($base_tag, Smarty::PLUGIN_BLOCK)) {
- return $this->callTagCompiler('private_block_plugin', $args, $parameter, $tag, $function);
- }
- // function plugin?
- if ($function = $this->getPlugin($tag, Smarty::PLUGIN_FUNCTION)) {
- if (!isset($this->smarty->security_policy)
- || $this->smarty->security_policy->isTrustedTag($tag, $this)
- ) {
- return $this->callTagCompiler('private_function_plugin', $args, $parameter, $tag, $function);
- }
- }
- // registered compiler plugin ?
- if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ])) {
- // if compiler function plugin call it now
- $args = array();
- if (!$this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 1 ]) {
- $this->tag_nocache = true;
- }
- return call_user_func_array(
- $this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 0 ],
- array(
- $args,
- $this
- )
- );
- }
- if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) {
- $plugin = 'smarty_compiler_' . $tag;
- if (is_callable($plugin)) {
- return $plugin($args, $this->smarty);
- }
- if (class_exists($plugin, false)) {
- $plugin_object = new $plugin;
- if (method_exists($plugin_object, 'compile')) {
- return $plugin_object->compile($args, $this);
- }
- }
- throw new SmartyException("Plugin '{$tag}' not callable");
- }
- }
- $this->trigger_template_error("unknown tag '{$tag}'", null, true);
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php
deleted file mode 100644
index 5ca482058..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php
+++ /dev/null
@@ -1,1095 +0,0 @@
-<?php
-/*
- * This file is part of Smarty.
- *
- * (c) 2015 Uwe Tews
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Smarty_Internal_Templatelexer
- * This is the template file lexer.
- * It is generated from the smarty_internal_templatelexer.plex file
- *
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Templatelexer
-{
- /**
- * Source
- *
- * @var string
- */
- public $data;
-
- /**
- * Source length
- *
- * @var int
- */
- public $dataLength = null;
-
- /**
- * byte counter
- *
- * @var int
- */
- public $counter;
-
- /**
- * token number
- *
- * @var int
- */
- public $token;
-
- /**
- * token value
- *
- * @var string
- */
- public $value;
-
- /**
- * current line
- *
- * @var int
- */
- public $line;
-
- /**
- * tag start line
- *
- * @var
- */
- public $taglineno;
-
- /**
- * php code type
- *
- * @var string
- */
- public $phpType = '';
-
- /**
- * state number
- *
- * @var int
- */
- public $state = 1;
-
- /**
- * Smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * compiler object
- *
- * @var Smarty_Internal_TemplateCompilerBase
- */
- public $compiler = null;
-
- /**
- * trace file
- *
- * @var resource
- */
- public $yyTraceFILE;
-
- /**
- * trace prompt
- *
- * @var string
- */
- public $yyTracePrompt;
-
- /**
- * XML flag true while processing xml
- *
- * @var bool
- */
- public $is_xml = false;
-
- /**
- * state names
- *
- * @var array
- */
- public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',);
-
- /**
- * token names
- *
- * @var array
- */
- public $smarty_token_names = array( // Text for parser error messages
- 'NOT' => '(!,not)',
- 'OPENP' => '(',
- 'CLOSEP' => ')',
- 'OPENB' => '[',
- 'CLOSEB' => ']',
- 'PTR' => '->',
- 'APTR' => '=>',
- 'EQUAL' => '=',
- 'NUMBER' => 'number',
- 'UNIMATH' => '+" , "-',
- 'MATH' => '*" , "/" , "%',
- 'INCDEC' => '++" , "--',
- 'SPACE' => ' ',
- 'DOLLAR' => '$',
- 'SEMICOLON' => ';',
- 'COLON' => ':',
- 'DOUBLECOLON' => '::',
- 'AT' => '@',
- 'HATCH' => '#',
- 'QUOTE' => '"',
- 'BACKTICK' => '`',
- 'VERT' => '"|" modifier',
- 'DOT' => '.',
- 'COMMA' => '","',
- 'QMARK' => '"?"',
- 'ID' => 'id, name',
- 'TEXT' => 'text',
- 'LDELSLASH' => '{/..} closing tag',
- 'LDEL' => '{...} Smarty tag',
- 'COMMENT' => 'comment',
- 'AS' => 'as',
- 'TO' => 'to',
- 'PHP' => '"<?php", "<%", "{php}" tag',
- 'LOGOP' => '"<", "==" ... logical operator',
- 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
- 'SCOND' => '"is even" ... if condition',
- );
-
- /**
- * literal tag nesting level
- *
- * @var int
- */
- private $literal_cnt = 0;
-
- /**
- * preg token pattern for state TEXT
- *
- * @var string
- */
- private $yy_global_pattern1 = null;
-
- /**
- * preg token pattern for state TAG
- *
- * @var string
- */
- private $yy_global_pattern2 = null;
-
- /**
- * preg token pattern for state TAGBODY
- *
- * @var string
- */
- private $yy_global_pattern3 = null;
-
- /**
- * preg token pattern for state LITERAL
- *
- * @var string
- */
- private $yy_global_pattern4 = null;
-
- /**
- * preg token pattern for state DOUBLEQUOTEDSTRING
- *
- * @var null
- */
- private $yy_global_pattern5 = null;
-
- /**
- * preg token pattern for text
- *
- * @var null
- */
- private $yy_global_text = null;
-
- /**
- * preg token pattern for literal
- *
- * @var null
- */
- private $yy_global_literal = null;
-
- /**
- * constructor
- *
- * @param string $source template source
- * @param Smarty_Internal_TemplateCompilerBase $compiler
- */
- public function __construct($source, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->data = $source;
- $this->dataLength = strlen($this->data);
- $this->counter = 0;
- if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) {
- $this->counter += strlen($match[0]);
- }
- $this->line = 1;
- $this->smarty = $compiler->template->smarty;
- $this->compiler = $compiler;
- $this->compiler->initDelimiterPreg();
- $this->smarty_token_names['LDEL'] = $this->smarty->getLeftDelimiter();
- $this->smarty_token_names['RDEL'] = $this->smarty->getRightDelimiter();
- }
-
- /**
- * open lexer/parser trace file
- *
- */
- public function PrintTrace()
- {
- $this->yyTraceFILE = fopen('php://output', 'w');
- $this->yyTracePrompt = '<br>';
- }
-
- /**
- * replace placeholders with runtime preg code
- *
- * @param string $preg
- *
- * @return string
- */
- public function replace($preg)
- {
- return $this->compiler->replaceDelimiter($preg);
- }
-
- /**
- * check if current value is an autoliteral left delimiter
- *
- * @return bool
- */
- public function isAutoLiteral()
- {
- return $this->smarty->getAutoLiteral() && isset($this->value[ $this->compiler->getLdelLength() ]) ?
- strpos(" \n\t\r", $this->value[ $this->compiler->getLdelLength() ]) !== false : false;
- }
-
-
- private $_yy_state = 1;
- private $_yy_stack = array();
-
- public function yylex()
- {
- return $this->{'yylex' . $this->_yy_state}();
- }
-
- public function yypushstate($state)
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
- }
- array_push($this->_yy_stack, $this->_yy_state);
- $this->_yy_state = $state;
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
- }
- }
-
- public function yypopstate()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
- }
- $this->_yy_state = array_pop($this->_yy_stack);
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
- }
-
- }
-
- public function yybegin($state)
- {
- $this->_yy_state = $state;
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
- }
- }
-
-
-
- public function yylex1()
- {
- if (!isset($this->yy_global_pattern1)) {
- $this->yy_global_pattern1 = $this->replace("/\G([{][}])|\G((SMARTYldel)SMARTYal[*])|\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\S\s])/isS");
- }
- if (!isset($this->dataLength)) {
- $this->dataLength = strlen($this->data);
- }
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern1,$this->data, $yymatches, 0, $this->counter)) {
- if (!isset($yymatches[ 0 ][1])) {
- $yymatches = preg_grep("/(.|\s)+/", $yymatches);
- } else {
- $yymatches = array_filter($yymatches);
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state TEXT');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r1_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- // skip this token
- continue;
- } } else {
- throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
- }
- break;
- } while (true);
-
- } // end function
-
-
- const TEXT = 1;
- public function yy_r1_1()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- public function yy_r1_2()
- {
-
- $to = $this->dataLength;
- preg_match("/[*]{$this->compiler->getRdelPreg()}[\n]?/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1] + strlen($match[0][0]);
- } else {
- $this->compiler->trigger_template_error ("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'");
- }
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- return false;
- }
- public function yy_r1_4()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- public function yy_r1_6()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
- $this->yypushstate(self::LITERAL);
- }
- public function yy_r1_8()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
- $this->yypushstate(self::LITERAL);
- }
- public function yy_r1_10()
- {
-
- $this->yypushstate(self::TAG);
- return true;
- }
- public function yy_r1_12()
- {
-
- if (!isset($this->yy_global_text)) {
- $this->yy_global_text = $this->replace('/(SMARTYldel)SMARTYal/isS');
- }
- $to = $this->dataLength;
- preg_match($this->yy_global_text, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1];
- }
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
-
- public function yylex2()
- {
- if (!isset($this->yy_global_pattern2)) {
- $this->yy_global_pattern2 = $this->replace("/\G((SMARTYldel)SMARTYal(if|elseif|else if|while)\\s+)|\G((SMARTYldel)SMARTYalfor\\s+)|\G((SMARTYldel)SMARTYalforeach(?![^\s]))|\G((SMARTYldel)SMARTYalsetfilter\\s+)|\G((SMARTYldel)SMARTYalmake_nocache\\s+)|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$]smarty\\.block\\.(child|parent)\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/][0-9]*[a-zA-Z_]\\w*\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$][0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal)/isS");
- }
- if (!isset($this->dataLength)) {
- $this->dataLength = strlen($this->data);
- }
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern2,$this->data, $yymatches, 0, $this->counter)) {
- if (!isset($yymatches[ 0 ][1])) {
- $yymatches = preg_grep("/(.|\s)+/", $yymatches);
- } else {
- $yymatches = array_filter($yymatches);
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state TAG');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r2_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- // skip this token
- continue;
- } } else {
- throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
- }
- break;
- } while (true);
-
- } // end function
-
-
- const TAG = 2;
- public function yy_r2_1()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- public function yy_r2_4()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- public function yy_r2_6()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- public function yy_r2_8()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- public function yy_r2_10()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDELMAKENOCACHE;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- public function yy_r2_12()
- {
-
- $this->yypopstate();
- $this->token = Smarty_Internal_Templateparser::TP_SIMPLETAG;
- $this->taglineno = $this->line;
- }
- public function yy_r2_15()
- {
-
- $this->yypopstate();
- $this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILDPARENT;
- $this->taglineno = $this->line;
- }
- public function yy_r2_18()
- {
-
- $this->yypopstate();
- $this->token = Smarty_Internal_Templateparser::TP_CLOSETAG;
- $this->taglineno = $this->line;
- }
- public function yy_r2_20()
- {
-
- if ($this->_yy_stack[count($this->_yy_stack)-1] === self::TEXT) {
- $this->yypopstate();
- $this->token = Smarty_Internal_Templateparser::TP_SIMPELOUTPUT;
- $this->taglineno = $this->line;
- } else {
- $this->value = $this->smarty->getLeftDelimiter();
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- }
- public function yy_r2_23()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- public function yy_r2_25()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
-
-
- public function yylex3()
- {
- if (!isset($this->yy_global_pattern3)) {
- $this->yy_global_pattern3 = $this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G(array\\s*[(]\\s*)|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|][@]?)|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS");
- }
- if (!isset($this->dataLength)) {
- $this->dataLength = strlen($this->data);
- }
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern3,$this->data, $yymatches, 0, $this->counter)) {
- if (!isset($yymatches[ 0 ][1])) {
- $yymatches = preg_grep("/(.|\s)+/", $yymatches);
- } else {
- $yymatches = array_filter($yymatches);
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state TAGBODY');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r3_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- // skip this token
- continue;
- } } else {
- throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
- }
- break;
- } while (true);
-
- } // end function
-
-
- const TAGBODY = 3;
- public function yy_r3_1()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_RDEL;
- $this->yypopstate();
- }
- public function yy_r3_2()
- {
-
- $this->yypushstate(self::TAG);
- return true;
- }
- public function yy_r3_4()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
- $this->yypushstate(self::DOUBLEQUOTEDSTRING);
- $this->compiler->enterDoubleQuote();
- }
- public function yy_r3_5()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING;
- }
- public function yy_r3_6()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
- }
- public function yy_r3_7()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
- }
- public function yy_r3_8()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_ISIN;
- }
- public function yy_r3_9()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_AS;
- }
- public function yy_r3_10()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TO;
- }
- public function yy_r3_11()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_STEP;
- }
- public function yy_r3_12()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
- }
- public function yy_r3_13()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LOGOP;
- }
- public function yy_r3_15()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_SLOGOP;
- }
- public function yy_r3_17()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TLOGOP;
- }
- public function yy_r3_20()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_SINGLECOND;
- }
- public function yy_r3_23()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_NOT;
- }
- public function yy_r3_24()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
- }
- public function yy_r3_28()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_OPENP;
- }
- public function yy_r3_29()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
- }
- public function yy_r3_30()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_OPENB;
- }
- public function yy_r3_31()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
- }
- public function yy_r3_32()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_PTR;
- }
- public function yy_r3_33()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_APTR;
- }
- public function yy_r3_34()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_EQUAL;
- }
- public function yy_r3_35()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_INCDEC;
- }
- public function yy_r3_37()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
- }
- public function yy_r3_39()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_MATH;
- }
- public function yy_r3_41()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_AT;
- }
- public function yy_r3_42()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_ARRAYOPEN;
- }
- public function yy_r3_43()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_HATCH;
- }
- public function yy_r3_44()
- {
-
- // resolve conflicts with shorttag and right_delimiter starting with '='
- if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->compiler->getRdelLength()) === $this->smarty->getRightDelimiter()) {
- preg_match('/\s+/',$this->value,$match);
- $this->value = $match[0];
- $this->token = Smarty_Internal_Templateparser::TP_SPACE;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_ATTR;
- }
- }
- public function yy_r3_45()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_NAMESPACE;
- }
- public function yy_r3_48()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_ID;
- }
- public function yy_r3_49()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_INTEGER;
- }
- public function yy_r3_50()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
- $this->yypopstate();
- }
- public function yy_r3_51()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_VERT;
- }
- public function yy_r3_52()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_DOT;
- }
- public function yy_r3_53()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_COMMA;
- }
- public function yy_r3_54()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
- }
- public function yy_r3_55()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
- }
- public function yy_r3_56()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_COLON;
- }
- public function yy_r3_57()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_QMARK;
- }
- public function yy_r3_58()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_HEX;
- }
- public function yy_r3_59()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_SPACE;
- }
- public function yy_r3_60()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
-
-
- public function yylex4()
- {
- if (!isset($this->yy_global_pattern4)) {
- $this->yy_global_pattern4 = $this->replace("/\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G([\S\s])/isS");
- }
- if (!isset($this->dataLength)) {
- $this->dataLength = strlen($this->data);
- }
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern4,$this->data, $yymatches, 0, $this->counter)) {
- if (!isset($yymatches[ 0 ][1])) {
- $yymatches = preg_grep("/(.|\s)+/", $yymatches);
- } else {
- $yymatches = array_filter($yymatches);
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state LITERAL');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r4_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- // skip this token
- continue;
- } } else {
- throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
- }
- break;
- } while (true);
-
- } // end function
-
-
- const LITERAL = 4;
- public function yy_r4_1()
- {
-
- $this->literal_cnt++;
- $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
- }
- public function yy_r4_3()
- {
-
- if ($this->literal_cnt) {
- $this->literal_cnt--;
- $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
- $this->yypopstate();
- }
- }
- public function yy_r4_5()
- {
-
- if (!isset($this->yy_global_literal)) {
- $this->yy_global_literal = $this->replace('/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS');
- }
- $to = $this->dataLength;
- preg_match($this->yy_global_literal, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1];
- } else {
- $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
- }
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
- }
-
-
- public function yylex5()
- {
- if (!isset($this->yy_global_pattern5)) {
- $this->yy_global_pattern5 = $this->replace("/\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G([`][$])|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=((SMARTYldel)SMARTYal|\\$|`\\$|\"SMARTYliteral)))|\G([\S\s])/isS");
- }
- if (!isset($this->dataLength)) {
- $this->dataLength = strlen($this->data);
- }
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern5,$this->data, $yymatches, 0, $this->counter)) {
- if (!isset($yymatches[ 0 ][1])) {
- $yymatches = preg_grep("/(.|\s)+/", $yymatches);
- } else {
- $yymatches = array_filter($yymatches);
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state DOUBLEQUOTEDSTRING');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r5_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= $this->dataLength) {
- return false; // end of input
- }
- // skip this token
- continue;
- } } else {
- throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
- }
- break;
- } while (true);
-
- } // end function
-
-
- const DOUBLEQUOTEDSTRING = 5;
- public function yy_r5_1()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- public function yy_r5_3()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- public function yy_r5_5()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- public function yy_r5_7()
- {
-
- $this->yypushstate(self::TAG);
- return true;
- }
- public function yy_r5_9()
- {
-
- $this->yypushstate(self::TAG);
- return true;
- }
- public function yy_r5_11()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->taglineno = $this->line;
- $this->yypushstate(self::TAGBODY);
- }
- public function yy_r5_13()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
- $this->yypopstate();
- }
- public function yy_r5_14()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
- $this->value = substr($this->value,0,-1);
- $this->yypushstate(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- public function yy_r5_15()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
- }
- public function yy_r5_16()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- public function yy_r5_17()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- public function yy_r5_22()
- {
-
- $to = $this->dataLength;
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
- }
-
- \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php
deleted file mode 100644
index a2dd0d6fb..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php
+++ /dev/null
@@ -1,2926 +0,0 @@
-<?php
-
-class TP_yyStackEntry
-{
- public $stateno; /* The state-number */
- public $major; /* The major token value. This is the code
- ** number for the token at this stack level */
- public $minor; /* The user-supplied minor token value. This
- ** is the value of the token */
-};
-
-
-// line 11 "../smarty/lexer/smarty_internal_templateparser.y"
-
-/**
-* Smarty Template Parser Class
-*
-* This is the template parser.
-* It is generated from the smarty_internal_templateparser.y file
-*
-* @author Uwe Tews <uwe.tews@googlemail.com>
-*/
-class Smarty_Internal_Templateparser
-{
-// line 23 "../smarty/lexer/smarty_internal_templateparser.y"
-
- const ERR1 = 'Security error: Call to private object member not allowed';
- const ERR2 = 'Security error: Call to dynamic object member not allowed';
-
- /**
- * result status
- *
- * @var bool
- */
- public $successful = true;
-
- /**
- * return value
- *
- * @var mixed
- */
- public $retvalue = 0;
-
- /**
- * @var
- */
- public $yymajor;
-
- /**
- * last index of array variable
- *
- * @var mixed
- */
- public $last_index;
-
- /**
- * last variable name
- *
- * @var string
- */
- public $last_variable;
-
- /**
- * root parse tree buffer
- *
- * @var Smarty_Internal_ParseTree_Template
- */
- public $root_buffer;
-
- /**
- * current parse tree object
- *
- * @var Smarty_Internal_ParseTree
- */
- public $current_buffer;
-
- /**
- * lexer object
- *
- * @var Smarty_Internal_Templatelexer
- */
- public $lex;
-
- /**
- * internal error flag
- *
- * @var bool
- */
- private $internalError = false;
-
- /**
- * {strip} status
- *
- * @var bool
- */
- public $strip = false;
- /**
- * compiler object
- *
- * @var Smarty_Internal_TemplateCompilerBase
- */
- public $compiler = null;
-
- /**
- * smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * template object
- *
- * @var Smarty_Internal_Template
- */
- public $template = null;
-
- /**
- * block nesting level
- *
- * @var int
- */
- public $block_nesting_level = 0;
-
- /**
- * security object
- *
- * @var Smarty_Security
- */
- public $security = null;
-
- /**
- * template prefix array
- *
- * @var \Smarty_Internal_ParseTree[]
- */
- public $template_prefix = array();
-
- /**
- * template prefix array
- *
- * @var \Smarty_Internal_ParseTree[]
- */
- public $template_postfix = array();
-
- /**
- * constructor
- *
- * @param Smarty_Internal_Templatelexer $lex
- * @param Smarty_Internal_TemplateCompilerBase $compiler
- */
- public function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->lex = $lex;
- $this->compiler = $compiler;
- $this->template = $this->compiler->template;
- $this->smarty = $this->template->smarty;
- $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
- $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
- }
-
- /**
- * insert PHP code in current buffer
- *
- * @param string $code
- */
- public function insertPhpCode($code)
- {
- $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
- }
-
- /**
- * error rundown
- *
- */
- public function errorRunDown()
- {
- while ($this->yystack !== array()) {
- $this->yy_pop_parser_stack();
- }
- if (is_resource($this->yyTraceFILE)) {
- fclose($this->yyTraceFILE);
- }
- }
-
- /**
- * merge PHP code with prefix code and return parse tree tag object
- *
- * @param string $code
- *
- * @return Smarty_Internal_ParseTree_Tag
- */
- public function mergePrefixCode($code)
- {
- $tmp = '';
- foreach ($this->compiler->prefix_code as $preCode) {
- $tmp .= $preCode;
- }
- $this->compiler->prefix_code = array();
- $tmp .= $code;
- return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
- }
-
-
- const TP_VERT = 1;
- const TP_COLON = 2;
- const TP_TEXT = 3;
- const TP_STRIPON = 4;
- const TP_STRIPOFF = 5;
- const TP_LITERALSTART = 6;
- const TP_LITERALEND = 7;
- const TP_LITERAL = 8;
- const TP_SIMPELOUTPUT = 9;
- const TP_SIMPLETAG = 10;
- const TP_SMARTYBLOCKCHILDPARENT = 11;
- const TP_LDEL = 12;
- const TP_RDEL = 13;
- const TP_DOLLARID = 14;
- const TP_EQUAL = 15;
- const TP_ID = 16;
- const TP_PTR = 17;
- const TP_LDELMAKENOCACHE = 18;
- const TP_LDELIF = 19;
- const TP_LDELFOR = 20;
- const TP_SEMICOLON = 21;
- const TP_INCDEC = 22;
- const TP_TO = 23;
- const TP_STEP = 24;
- const TP_LDELFOREACH = 25;
- const TP_SPACE = 26;
- const TP_AS = 27;
- const TP_APTR = 28;
- const TP_LDELSETFILTER = 29;
- const TP_CLOSETAG = 30;
- const TP_LDELSLASH = 31;
- const TP_ATTR = 32;
- const TP_INTEGER = 33;
- const TP_COMMA = 34;
- const TP_OPENP = 35;
- const TP_CLOSEP = 36;
- const TP_MATH = 37;
- const TP_UNIMATH = 38;
- const TP_ISIN = 39;
- const TP_QMARK = 40;
- const TP_NOT = 41;
- const TP_TYPECAST = 42;
- const TP_HEX = 43;
- const TP_DOT = 44;
- const TP_INSTANCEOF = 45;
- const TP_SINGLEQUOTESTRING = 46;
- const TP_DOUBLECOLON = 47;
- const TP_NAMESPACE = 48;
- const TP_AT = 49;
- const TP_HATCH = 50;
- const TP_OPENB = 51;
- const TP_CLOSEB = 52;
- const TP_DOLLAR = 53;
- const TP_LOGOP = 54;
- const TP_SLOGOP = 55;
- const TP_TLOGOP = 56;
- const TP_SINGLECOND = 57;
- const TP_ARRAYOPEN = 58;
- const TP_QUOTE = 59;
- const TP_BACKTICK = 60;
- const YY_NO_ACTION = 514;
- const YY_ACCEPT_ACTION = 513;
- const YY_ERROR_ACTION = 512;
-
- const YY_SZ_ACTTAB = 1997;
-public static $yy_action = array(
- 249, 250, 239, 1, 27, 127, 220, 184, 160, 213,
- 11, 54, 278, 10, 173, 34, 108, 387, 282, 279,
- 223, 321, 221, 8, 194, 387, 18, 387, 85, 41,
- 387, 285, 42, 44, 264, 222, 387, 209, 387, 198,
- 387, 52, 5, 307, 288, 288, 164, 283, 224, 4,
- 50, 249, 250, 239, 1, 232, 131, 381, 189, 205,
- 213, 11, 54, 39, 35, 243, 31, 108, 94, 17,
- 381, 223, 321, 221, 439, 226, 381, 33, 49, 426,
- 41, 439, 89, 42, 44, 264, 222, 9, 235, 163,
- 198, 426, 52, 5, 131, 288, 212, 284, 102, 106,
- 4, 50, 249, 250, 239, 1, 232, 129, 426, 189,
- 347, 213, 11, 54, 175, 324, 347, 208, 108, 22,
- 426, 301, 223, 321, 221, 302, 226, 135, 18, 49,
- 52, 41, 26, 288, 42, 44, 264, 222, 16, 235,
- 294, 198, 204, 52, 5, 170, 288, 32, 90, 267,
- 268, 4, 50, 249, 250, 239, 1, 20, 129, 185,
- 179, 255, 213, 11, 54, 455, 288, 192, 455, 108,
- 175, 167, 455, 223, 321, 221, 439, 226, 256, 18,
- 55, 292, 41, 439, 132, 42, 44, 264, 222, 427,
- 235, 12, 198, 165, 52, 5, 232, 288, 288, 347,
- 153, 427, 4, 50, 249, 250, 239, 1, 232, 129,
- 286, 181, 347, 213, 11, 54, 24, 13, 347, 49,
- 108, 232, 320, 426, 223, 321, 221, 195, 201, 173,
- 18, 49, 139, 41, 296, 426, 42, 44, 264, 222,
- 7, 235, 286, 198, 49, 52, 5, 147, 288, 117,
- 150, 317, 263, 4, 50, 249, 250, 239, 1, 95,
- 130, 173, 189, 155, 213, 11, 54, 22, 244, 271,
- 192, 108, 323, 286, 101, 223, 321, 221, 294, 226,
- 204, 18, 348, 257, 41, 166, 283, 42, 44, 264,
- 222, 28, 235, 300, 198, 348, 52, 5, 247, 288,
- 117, 348, 94, 206, 4, 50, 249, 250, 239, 1,
- 95, 129, 22, 189, 277, 213, 11, 54, 91, 274,
- 224, 426, 108, 323, 216, 156, 223, 321, 221, 132,
- 180, 262, 18, 426, 100, 41, 12, 288, 42, 44,
- 264, 222, 15, 235, 216, 198, 254, 52, 5, 233,
- 288, 210, 190, 192, 100, 4, 50, 249, 250, 239,
- 1, 3, 131, 94, 189, 192, 213, 11, 54, 269,
- 10, 204, 290, 108, 325, 216, 224, 223, 321, 221,
- 23, 226, 211, 33, 315, 100, 45, 513, 92, 42,
- 44, 264, 222, 102, 235, 178, 198, 268, 52, 5,
- 275, 288, 161, 192, 37, 25, 4, 50, 249, 250,
- 239, 1, 286, 129, 172, 187, 305, 213, 11, 54,
- 164, 283, 310, 141, 108, 281, 281, 236, 223, 321,
- 221, 169, 226, 230, 18, 122, 171, 41, 225, 175,
- 42, 44, 264, 222, 144, 235, 303, 198, 134, 52,
- 5, 265, 288, 151, 286, 192, 175, 4, 50, 249,
- 250, 239, 1, 286, 128, 94, 189, 143, 213, 11,
- 54, 219, 152, 207, 193, 108, 149, 281, 31, 223,
- 321, 221, 100, 226, 21, 6, 286, 288, 41, 158,
- 16, 42, 44, 264, 222, 102, 235, 238, 198, 286,
- 52, 5, 157, 288, 281, 122, 168, 283, 4, 50,
- 249, 250, 239, 1, 30, 93, 308, 51, 215, 213,
- 11, 54, 53, 251, 140, 248, 108, 245, 304, 116,
- 223, 321, 221, 111, 226, 176, 18, 270, 266, 41,
- 224, 322, 42, 44, 264, 222, 7, 235, 259, 198,
- 147, 52, 5, 257, 288, 43, 40, 38, 83, 4,
- 50, 241, 214, 204, 319, 280, 88, 107, 138, 182,
- 97, 64, 311, 312, 313, 316, 95, 281, 298, 258,
- 142, 234, 94, 105, 272, 197, 231, 482, 237, 323,
- 37, 133, 324, 241, 214, 204, 319, 314, 88, 107,
- 296, 183, 97, 82, 84, 43, 40, 38, 95, 296,
- 296, 258, 296, 296, 296, 159, 272, 197, 231, 296,
- 237, 323, 311, 312, 313, 316, 241, 296, 204, 296,
- 296, 103, 296, 296, 199, 104, 77, 296, 296, 110,
- 296, 95, 296, 296, 258, 278, 296, 296, 34, 272,
- 197, 231, 279, 237, 323, 43, 40, 38, 296, 296,
- 296, 241, 26, 204, 196, 276, 103, 296, 16, 199,
- 104, 77, 311, 312, 313, 316, 95, 192, 296, 258,
- 146, 296, 296, 296, 272, 197, 231, 296, 237, 323,
- 286, 393, 39, 35, 243, 296, 296, 296, 296, 191,
- 276, 296, 26, 318, 252, 253, 126, 296, 16, 249,
- 250, 239, 1, 296, 296, 131, 296, 261, 213, 11,
- 54, 296, 296, 296, 426, 108, 393, 393, 393, 223,
- 321, 221, 241, 296, 204, 299, 426, 103, 107, 296,
- 183, 97, 82, 393, 393, 393, 393, 95, 296, 260,
- 258, 52, 296, 296, 288, 272, 197, 231, 296, 237,
- 323, 293, 296, 296, 296, 296, 296, 249, 250, 239,
- 2, 296, 295, 296, 296, 296, 213, 11, 54, 296,
- 296, 177, 296, 108, 136, 296, 296, 223, 321, 221,
- 296, 296, 296, 293, 43, 40, 38, 296, 296, 249,
- 250, 239, 2, 296, 295, 43, 40, 38, 213, 11,
- 54, 311, 312, 313, 316, 108, 296, 291, 14, 223,
- 321, 221, 311, 312, 313, 316, 296, 296, 241, 296,
- 204, 296, 192, 103, 296, 296, 199, 104, 77, 296,
- 296, 296, 296, 95, 383, 296, 258, 296, 296, 297,
- 14, 272, 197, 231, 296, 237, 323, 383, 296, 296,
- 241, 296, 204, 383, 296, 99, 296, 287, 199, 120,
- 48, 241, 112, 204, 296, 95, 103, 296, 258, 199,
- 120, 74, 296, 272, 197, 231, 95, 237, 323, 258,
- 455, 296, 296, 455, 272, 197, 231, 455, 237, 323,
- 241, 296, 204, 296, 296, 103, 200, 296, 199, 120,
- 74, 296, 296, 296, 296, 95, 296, 296, 258, 278,
- 296, 296, 34, 272, 197, 231, 279, 237, 323, 241,
- 455, 204, 296, 296, 99, 202, 296, 199, 120, 56,
- 241, 211, 204, 296, 95, 103, 296, 258, 199, 120,
- 74, 296, 272, 197, 231, 95, 237, 323, 258, 227,
- 296, 296, 296, 272, 197, 231, 296, 237, 323, 241,
- 296, 204, 148, 296, 103, 203, 86, 199, 120, 73,
- 296, 296, 286, 296, 95, 296, 296, 258, 278, 296,
- 296, 34, 272, 197, 231, 279, 237, 323, 241, 296,
- 204, 175, 296, 103, 296, 296, 199, 120, 75, 241,
- 296, 204, 296, 95, 103, 296, 258, 199, 120, 63,
- 296, 272, 197, 231, 95, 237, 323, 258, 229, 192,
- 296, 296, 272, 197, 231, 296, 237, 323, 241, 296,
- 204, 380, 296, 103, 296, 296, 199, 120, 58, 296,
- 296, 296, 296, 95, 380, 296, 258, 296, 296, 296,
- 380, 272, 197, 231, 296, 237, 323, 241, 296, 204,
- 296, 296, 103, 296, 296, 199, 120, 71, 241, 296,
- 204, 296, 95, 103, 296, 258, 199, 120, 79, 296,
- 272, 197, 231, 95, 237, 323, 258, 296, 296, 296,
- 154, 272, 197, 231, 87, 237, 323, 241, 296, 204,
- 286, 296, 103, 296, 296, 199, 120, 70, 296, 296,
- 296, 296, 95, 296, 296, 258, 296, 296, 296, 175,
- 272, 197, 231, 296, 237, 323, 241, 296, 204, 296,
- 296, 103, 296, 296, 199, 120, 56, 241, 296, 204,
- 296, 95, 103, 296, 258, 199, 120, 46, 296, 272,
- 197, 231, 95, 237, 323, 258, 296, 296, 296, 296,
- 272, 197, 231, 296, 237, 323, 241, 296, 204, 296,
- 296, 103, 296, 296, 199, 120, 78, 296, 296, 296,
- 296, 95, 296, 296, 258, 296, 296, 296, 296, 272,
- 197, 231, 296, 237, 323, 241, 296, 204, 296, 296,
- 103, 296, 296, 199, 120, 66, 241, 296, 204, 296,
- 95, 103, 296, 258, 199, 120, 59, 296, 272, 197,
- 231, 95, 237, 323, 258, 296, 296, 296, 296, 272,
- 197, 231, 296, 237, 323, 241, 296, 204, 296, 296,
- 103, 296, 296, 186, 109, 57, 296, 296, 296, 296,
- 95, 296, 296, 258, 296, 296, 296, 296, 272, 197,
- 231, 296, 237, 323, 241, 296, 204, 296, 296, 103,
- 296, 296, 188, 120, 67, 241, 296, 204, 296, 95,
- 103, 296, 258, 199, 96, 62, 296, 272, 197, 231,
- 95, 237, 323, 258, 296, 296, 296, 296, 272, 197,
- 231, 296, 237, 323, 241, 296, 204, 296, 296, 103,
- 296, 296, 199, 120, 80, 296, 296, 296, 296, 95,
- 296, 296, 258, 296, 296, 296, 296, 272, 197, 231,
- 296, 237, 323, 241, 296, 204, 296, 296, 103, 296,
- 296, 199, 120, 76, 241, 296, 204, 296, 95, 103,
- 296, 258, 199, 120, 81, 296, 272, 197, 231, 95,
- 237, 323, 258, 296, 296, 296, 296, 272, 197, 231,
- 296, 237, 323, 241, 296, 204, 296, 296, 103, 296,
- 296, 199, 120, 65, 296, 296, 296, 296, 95, 296,
- 296, 258, 296, 296, 296, 296, 272, 197, 231, 296,
- 237, 323, 241, 296, 204, 296, 296, 103, 296, 296,
- 199, 96, 68, 241, 296, 204, 296, 95, 103, 296,
- 258, 199, 120, 61, 296, 272, 197, 231, 95, 237,
- 323, 258, 296, 296, 296, 296, 272, 197, 231, 296,
- 237, 323, 241, 296, 204, 296, 296, 103, 296, 296,
- 199, 98, 69, 296, 296, 296, 296, 95, 296, 296,
- 258, 296, 296, 296, 296, 272, 197, 231, 296, 237,
- 323, 241, 296, 204, 296, 296, 103, 296, 296, 199,
- 120, 72, 241, 296, 204, 296, 95, 103, 296, 258,
- 199, 120, 47, 296, 272, 197, 231, 95, 237, 323,
- 258, 296, 296, 296, 296, 272, 197, 231, 296, 237,
- 323, 241, 192, 204, 296, 296, 103, 296, 296, 199,
- 120, 60, 296, 296, 351, 296, 95, 296, 217, 258,
- 296, 296, 296, 296, 272, 197, 231, 26, 237, 323,
- 241, 296, 204, 16, 296, 103, 426, 296, 199, 125,
- 296, 241, 296, 204, 296, 95, 103, 296, 426, 199,
- 118, 296, 242, 272, 197, 231, 95, 237, 323, 296,
- 296, 296, 296, 246, 272, 197, 231, 296, 237, 323,
- 241, 296, 204, 278, 296, 103, 34, 296, 199, 121,
- 279, 296, 296, 296, 296, 95, 296, 296, 296, 296,
- 26, 296, 162, 272, 197, 231, 16, 237, 323, 241,
- 296, 204, 296, 296, 103, 296, 296, 199, 123, 296,
- 241, 296, 204, 296, 95, 103, 296, 296, 199, 114,
- 296, 296, 272, 197, 231, 95, 237, 323, 296, 296,
- 296, 296, 296, 272, 197, 231, 296, 237, 323, 241,
- 296, 204, 296, 145, 103, 296, 296, 199, 124, 296,
- 296, 296, 296, 286, 95, 39, 35, 243, 296, 296,
- 296, 296, 272, 197, 231, 296, 237, 323, 241, 296,
- 204, 296, 296, 103, 296, 296, 199, 115, 296, 241,
- 296, 204, 296, 95, 103, 296, 296, 199, 113, 296,
- 296, 272, 197, 231, 95, 237, 323, 296, 296, 296,
- 296, 296, 272, 197, 231, 228, 237, 323, 241, 296,
- 204, 296, 455, 103, 296, 455, 199, 119, 3, 455,
- 439, 296, 296, 95, 296, 296, 296, 296, 296, 296,
- 296, 272, 197, 231, 228, 237, 323, 296, 296, 296,
- 296, 455, 296, 296, 455, 296, 296, 439, 455, 439,
- 439, 228, 455, 296, 439, 296, 296, 137, 455, 296,
- 296, 455, 296, 296, 32, 455, 439, 286, 296, 39,
- 35, 243, 29, 296, 26, 296, 439, 296, 296, 439,
- 16, 455, 296, 439, 306, 43, 40, 38, 296, 296,
- 296, 296, 296, 439, 296, 296, 439, 296, 455, 296,
- 439, 26, 311, 312, 313, 316, 296, 16, 228, 296,
- 296, 296, 43, 40, 38, 455, 296, 296, 455, 296,
- 296, 296, 455, 439, 296, 296, 19, 296, 296, 311,
- 312, 313, 316, 455, 296, 296, 455, 296, 296, 296,
- 455, 439, 296, 296, 296, 43, 40, 38, 296, 296,
- 439, 296, 296, 439, 174, 455, 296, 439, 296, 240,
- 309, 296, 311, 312, 313, 316, 296, 289, 439, 296,
- 36, 439, 296, 455, 296, 439, 296, 296, 43, 40,
- 38, 296, 296, 43, 40, 38, 296, 296, 296, 296,
- 296, 43, 40, 38, 296, 311, 312, 313, 316, 296,
- 311, 312, 313, 316, 296, 43, 40, 38, 311, 312,
- 313, 316, 273, 43, 40, 38, 296, 296, 296, 296,
- 296, 296, 311, 312, 313, 316, 296, 296, 296, 296,
- 311, 312, 313, 316, 455, 296, 296, 455, 43, 40,
- 38, 455, 439, 218, 43, 40, 38, 296, 296, 296,
- 296, 296, 296, 296, 296, 311, 312, 313, 316, 296,
- 296, 311, 312, 313, 316, 296, 296, 296, 296, 439,
- 296, 296, 439, 296, 455, 296, 439,
- );
- public static $yy_lookahead = array(
- 9, 10, 11, 12, 12, 14, 14, 16, 16, 18,
- 19, 20, 9, 34, 102, 12, 25, 13, 70, 16,
- 29, 30, 31, 35, 33, 21, 35, 23, 95, 38,
- 26, 52, 41, 42, 43, 44, 32, 46, 34, 48,
- 36, 50, 51, 52, 53, 53, 98, 99, 44, 58,
- 59, 9, 10, 11, 12, 22, 14, 13, 16, 15,
- 18, 19, 20, 85, 86, 87, 15, 25, 17, 21,
- 26, 29, 30, 31, 44, 33, 32, 35, 45, 35,
- 38, 51, 34, 41, 42, 43, 44, 35, 46, 77,
- 48, 47, 50, 51, 14, 53, 16, 13, 47, 47,
- 58, 59, 9, 10, 11, 12, 22, 14, 35, 16,
- 26, 18, 19, 20, 102, 103, 32, 44, 25, 34,
- 47, 36, 29, 30, 31, 52, 33, 14, 35, 45,
- 50, 38, 26, 53, 41, 42, 43, 44, 32, 46,
- 66, 48, 68, 50, 51, 77, 53, 15, 35, 7,
- 8, 58, 59, 9, 10, 11, 12, 12, 14, 14,
- 16, 16, 18, 19, 20, 9, 53, 1, 12, 25,
- 102, 82, 16, 29, 30, 31, 44, 33, 33, 35,
- 106, 107, 38, 51, 44, 41, 42, 43, 44, 35,
- 46, 51, 48, 82, 50, 51, 22, 53, 53, 13,
- 73, 47, 58, 59, 9, 10, 11, 12, 22, 14,
- 83, 16, 26, 18, 19, 20, 28, 12, 32, 45,
- 25, 22, 70, 35, 29, 30, 31, 65, 33, 102,
- 35, 45, 73, 38, 60, 47, 41, 42, 43, 44,
- 35, 46, 83, 48, 45, 50, 51, 95, 53, 71,
- 95, 52, 74, 58, 59, 9, 10, 11, 12, 81,
- 14, 102, 16, 73, 18, 19, 20, 34, 90, 36,
- 1, 25, 94, 83, 81, 29, 30, 31, 66, 33,
- 68, 35, 13, 96, 38, 98, 99, 41, 42, 43,
- 44, 15, 46, 100, 48, 26, 50, 51, 14, 53,
- 71, 32, 17, 74, 58, 59, 9, 10, 11, 12,
- 81, 14, 34, 16, 36, 18, 19, 20, 82, 107,
- 44, 35, 25, 94, 71, 95, 29, 30, 31, 44,
- 33, 78, 35, 47, 81, 38, 51, 53, 41, 42,
- 43, 44, 15, 46, 71, 48, 16, 50, 51, 22,
- 53, 78, 79, 1, 81, 58, 59, 9, 10, 11,
- 12, 15, 14, 17, 16, 1, 18, 19, 20, 66,
- 34, 68, 36, 25, 16, 71, 44, 29, 30, 31,
- 28, 33, 78, 35, 52, 81, 38, 62, 63, 41,
- 42, 43, 44, 47, 46, 6, 48, 8, 50, 51,
- 16, 53, 73, 1, 2, 40, 58, 59, 9, 10,
- 11, 12, 83, 14, 77, 16, 52, 18, 19, 20,
- 98, 99, 52, 95, 25, 97, 97, 92, 29, 30,
- 31, 77, 33, 49, 35, 100, 14, 38, 16, 102,
- 41, 42, 43, 44, 73, 46, 14, 48, 14, 50,
- 51, 36, 53, 73, 83, 1, 102, 58, 59, 9,
- 10, 11, 12, 83, 14, 17, 16, 50, 18, 19,
- 20, 17, 71, 64, 65, 25, 73, 97, 15, 29,
- 30, 31, 81, 33, 26, 35, 83, 53, 38, 73,
- 32, 41, 42, 43, 44, 47, 46, 92, 48, 83,
- 50, 51, 95, 53, 97, 100, 98, 99, 58, 59,
- 9, 10, 11, 12, 23, 14, 52, 16, 16, 18,
- 19, 20, 16, 7, 50, 16, 25, 13, 13, 16,
- 29, 30, 31, 16, 33, 16, 35, 33, 33, 38,
- 44, 16, 41, 42, 43, 44, 35, 46, 16, 48,
- 95, 50, 51, 96, 53, 37, 38, 39, 81, 58,
- 59, 66, 67, 68, 69, 83, 71, 72, 95, 74,
- 75, 76, 54, 55, 56, 57, 81, 97, 60, 84,
- 95, 13, 17, 80, 89, 90, 91, 1, 93, 94,
- 2, 81, 103, 66, 67, 68, 69, 99, 71, 72,
- 108, 74, 75, 76, 81, 37, 38, 39, 81, 108,
- 108, 84, 108, 108, 108, 95, 89, 90, 91, 108,
- 93, 94, 54, 55, 56, 57, 66, 108, 68, 108,
- 108, 71, 108, 108, 74, 75, 76, 108, 108, 21,
- 108, 81, 108, 108, 84, 9, 108, 108, 12, 89,
- 90, 91, 16, 93, 94, 37, 38, 39, 108, 108,
- 108, 66, 26, 68, 104, 105, 71, 108, 32, 74,
- 75, 76, 54, 55, 56, 57, 81, 1, 108, 84,
- 73, 108, 108, 108, 89, 90, 91, 108, 93, 94,
- 83, 2, 85, 86, 87, 108, 108, 108, 108, 104,
- 105, 108, 26, 3, 4, 5, 6, 108, 32, 9,
- 10, 11, 12, 108, 108, 14, 108, 16, 18, 19,
- 20, 108, 108, 108, 35, 25, 37, 38, 39, 29,
- 30, 31, 66, 108, 68, 69, 47, 71, 72, 108,
- 74, 75, 76, 54, 55, 56, 57, 81, 108, 48,
- 84, 50, 108, 108, 53, 89, 90, 91, 108, 93,
- 94, 3, 108, 108, 108, 108, 108, 9, 10, 11,
- 12, 108, 14, 108, 108, 108, 18, 19, 20, 108,
- 108, 13, 108, 25, 27, 108, 108, 29, 30, 31,
- 108, 108, 108, 3, 37, 38, 39, 108, 108, 9,
- 10, 11, 12, 108, 14, 37, 38, 39, 18, 19,
- 20, 54, 55, 56, 57, 25, 108, 59, 60, 29,
- 30, 31, 54, 55, 56, 57, 108, 108, 66, 108,
- 68, 108, 1, 71, 108, 108, 74, 75, 76, 108,
- 108, 108, 108, 81, 13, 108, 84, 108, 108, 59,
- 60, 89, 90, 91, 108, 93, 94, 26, 108, 108,
- 66, 108, 68, 32, 108, 71, 108, 105, 74, 75,
- 76, 66, 78, 68, 108, 81, 71, 108, 84, 74,
- 75, 76, 108, 89, 90, 91, 81, 93, 94, 84,
- 9, 108, 108, 12, 89, 90, 91, 16, 93, 94,
- 66, 108, 68, 108, 108, 71, 101, 108, 74, 75,
- 76, 108, 108, 108, 108, 81, 108, 108, 84, 9,
- 108, 108, 12, 89, 90, 91, 16, 93, 94, 66,
- 49, 68, 108, 108, 71, 101, 108, 74, 75, 76,
- 66, 78, 68, 108, 81, 71, 108, 84, 74, 75,
- 76, 108, 89, 90, 91, 81, 93, 94, 84, 49,
- 108, 108, 108, 89, 90, 91, 108, 93, 94, 66,
- 108, 68, 73, 108, 71, 101, 77, 74, 75, 76,
- 108, 108, 83, 108, 81, 108, 108, 84, 9, 108,
- 108, 12, 89, 90, 91, 16, 93, 94, 66, 108,
- 68, 102, 108, 71, 108, 108, 74, 75, 76, 66,
- 108, 68, 108, 81, 71, 108, 84, 74, 75, 76,
- 108, 89, 90, 91, 81, 93, 94, 84, 49, 1,
- 108, 108, 89, 90, 91, 108, 93, 94, 66, 108,
- 68, 13, 108, 71, 108, 108, 74, 75, 76, 108,
- 108, 108, 108, 81, 26, 108, 84, 108, 108, 108,
- 32, 89, 90, 91, 108, 93, 94, 66, 108, 68,
- 108, 108, 71, 108, 108, 74, 75, 76, 66, 108,
- 68, 108, 81, 71, 108, 84, 74, 75, 76, 108,
- 89, 90, 91, 81, 93, 94, 84, 108, 108, 108,
- 73, 89, 90, 91, 77, 93, 94, 66, 108, 68,
- 83, 108, 71, 108, 108, 74, 75, 76, 108, 108,
- 108, 108, 81, 108, 108, 84, 108, 108, 108, 102,
- 89, 90, 91, 108, 93, 94, 66, 108, 68, 108,
- 108, 71, 108, 108, 74, 75, 76, 66, 108, 68,
- 108, 81, 71, 108, 84, 74, 75, 76, 108, 89,
- 90, 91, 81, 93, 94, 84, 108, 108, 108, 108,
- 89, 90, 91, 108, 93, 94, 66, 108, 68, 108,
- 108, 71, 108, 108, 74, 75, 76, 108, 108, 108,
- 108, 81, 108, 108, 84, 108, 108, 108, 108, 89,
- 90, 91, 108, 93, 94, 66, 108, 68, 108, 108,
- 71, 108, 108, 74, 75, 76, 66, 108, 68, 108,
- 81, 71, 108, 84, 74, 75, 76, 108, 89, 90,
- 91, 81, 93, 94, 84, 108, 108, 108, 108, 89,
- 90, 91, 108, 93, 94, 66, 108, 68, 108, 108,
- 71, 108, 108, 74, 75, 76, 108, 108, 108, 108,
- 81, 108, 108, 84, 108, 108, 108, 108, 89, 90,
- 91, 108, 93, 94, 66, 108, 68, 108, 108, 71,
- 108, 108, 74, 75, 76, 66, 108, 68, 108, 81,
- 71, 108, 84, 74, 75, 76, 108, 89, 90, 91,
- 81, 93, 94, 84, 108, 108, 108, 108, 89, 90,
- 91, 108, 93, 94, 66, 108, 68, 108, 108, 71,
- 108, 108, 74, 75, 76, 108, 108, 108, 108, 81,
- 108, 108, 84, 108, 108, 108, 108, 89, 90, 91,
- 108, 93, 94, 66, 108, 68, 108, 108, 71, 108,
- 108, 74, 75, 76, 66, 108, 68, 108, 81, 71,
- 108, 84, 74, 75, 76, 108, 89, 90, 91, 81,
- 93, 94, 84, 108, 108, 108, 108, 89, 90, 91,
- 108, 93, 94, 66, 108, 68, 108, 108, 71, 108,
- 108, 74, 75, 76, 108, 108, 108, 108, 81, 108,
- 108, 84, 108, 108, 108, 108, 89, 90, 91, 108,
- 93, 94, 66, 108, 68, 108, 108, 71, 108, 108,
- 74, 75, 76, 66, 108, 68, 108, 81, 71, 108,
- 84, 74, 75, 76, 108, 89, 90, 91, 81, 93,
- 94, 84, 108, 108, 108, 108, 89, 90, 91, 108,
- 93, 94, 66, 108, 68, 108, 108, 71, 108, 108,
- 74, 75, 76, 108, 108, 108, 108, 81, 108, 108,
- 84, 108, 108, 108, 108, 89, 90, 91, 108, 93,
- 94, 66, 108, 68, 108, 108, 71, 108, 108, 74,
- 75, 76, 66, 108, 68, 108, 81, 71, 108, 84,
- 74, 75, 76, 108, 89, 90, 91, 81, 93, 94,
- 84, 108, 108, 108, 108, 89, 90, 91, 108, 93,
- 94, 66, 1, 68, 108, 108, 71, 108, 108, 74,
- 75, 76, 108, 108, 13, 108, 81, 108, 17, 84,
- 108, 108, 108, 108, 89, 90, 91, 26, 93, 94,
- 66, 108, 68, 32, 108, 71, 35, 108, 74, 75,
- 108, 66, 108, 68, 108, 81, 71, 108, 47, 74,
- 75, 108, 88, 89, 90, 91, 81, 93, 94, 108,
- 108, 108, 108, 88, 89, 90, 91, 108, 93, 94,
- 66, 108, 68, 9, 108, 71, 12, 108, 74, 75,
- 16, 108, 108, 108, 108, 81, 108, 108, 108, 108,
- 26, 108, 28, 89, 90, 91, 32, 93, 94, 66,
- 108, 68, 108, 108, 71, 108, 108, 74, 75, 108,
- 66, 108, 68, 108, 81, 71, 108, 108, 74, 75,
- 108, 108, 89, 90, 91, 81, 93, 94, 108, 108,
- 108, 108, 108, 89, 90, 91, 108, 93, 94, 66,
- 108, 68, 108, 73, 71, 108, 108, 74, 75, 108,
- 108, 108, 108, 83, 81, 85, 86, 87, 108, 108,
- 108, 108, 89, 90, 91, 108, 93, 94, 66, 108,
- 68, 108, 108, 71, 108, 108, 74, 75, 108, 66,
- 108, 68, 108, 81, 71, 108, 108, 74, 75, 108,
- 108, 89, 90, 91, 81, 93, 94, 108, 108, 108,
- 108, 108, 89, 90, 91, 2, 93, 94, 66, 108,
- 68, 108, 9, 71, 108, 12, 74, 75, 15, 16,
- 17, 108, 108, 81, 108, 108, 108, 108, 108, 108,
- 108, 89, 90, 91, 2, 93, 94, 108, 108, 108,
- 108, 9, 108, 108, 12, 108, 108, 44, 16, 17,
- 47, 2, 49, 108, 51, 108, 108, 73, 9, 108,
- 108, 12, 108, 108, 15, 16, 17, 83, 108, 85,
- 86, 87, 24, 108, 26, 108, 44, 108, 108, 47,
- 32, 49, 108, 51, 52, 37, 38, 39, 108, 108,
- 108, 108, 108, 44, 108, 108, 47, 108, 49, 108,
- 51, 26, 54, 55, 56, 57, 108, 32, 2, 108,
- 108, 108, 37, 38, 39, 9, 108, 108, 12, 108,
- 108, 108, 16, 17, 108, 108, 2, 108, 108, 54,
- 55, 56, 57, 9, 108, 108, 12, 108, 108, 108,
- 16, 17, 108, 108, 108, 37, 38, 39, 108, 108,
- 44, 108, 108, 47, 13, 49, 108, 51, 108, 13,
- 52, 108, 54, 55, 56, 57, 108, 13, 44, 108,
- 2, 47, 108, 49, 108, 51, 108, 108, 37, 38,
- 39, 108, 108, 37, 38, 39, 108, 108, 108, 108,
- 108, 37, 38, 39, 108, 54, 55, 56, 57, 108,
- 54, 55, 56, 57, 108, 37, 38, 39, 54, 55,
- 56, 57, 36, 37, 38, 39, 108, 108, 108, 108,
- 108, 108, 54, 55, 56, 57, 108, 108, 108, 108,
- 54, 55, 56, 57, 9, 108, 108, 12, 37, 38,
- 39, 16, 17, 36, 37, 38, 39, 108, 108, 108,
- 108, 108, 108, 108, 108, 54, 55, 56, 57, 108,
- 108, 54, 55, 56, 57, 108, 108, 108, 108, 44,
- 108, 108, 47, 108, 49, 108, 51,
-);
- const YY_SHIFT_USE_DFLT = -22;
- const YY_SHIFT_MAX = 230;
- public static $yy_shift_ofst = array(
- -22, 501, 501, 93, 399, 399, 450, 93, 93, 93,
- 399, 450, -9, 93, 93, 93, 93, 93, 93, 144,
- 93, 195, 93, 93, 93, 246, 195, 93, 93, 93,
- 93, 93, 297, 93, 93, 93, 93, 348, 42, 42,
- 42, 42, 42, 42, 42, 42, 1768, 1795, 1795, 701,
- 758, 1521, 80, 676, 113, 790, 1927, 1828, 1896, 568,
- 768, 1861, 757, 1866, 1874, 1888, 618, 518, 1921, 1921,
- 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921,
- 1921, 1921, 1921, 1584, 636, 285, 676, 676, 346, 113,
- 113, 402, 700, 1723, -8, 910, 831, 269, 1028, 51,
- 3, 3, 422, 448, 352, 106, 422, 106, 458, 364,
- 434, 454, 106, 166, 166, 166, 166, 565, 166, 166,
- 166, 586, 565, 166, 166, -22, -22, 1752, 1769, 1826,
- 1844, 1945, 145, 979, 156, 132, 284, 106, 140, 106,
- 30, 140, 140, 30, 106, 106, 106, 140, 106, 106,
- 140, 106, 327, 106, 106, 106, 140, 140, 106, 140,
- 205, 106, 284, 166, 565, 588, 565, 588, 565, 166,
- 166, -12, 166, -22, -22, -22, -22, -22, -22, 689,
- 4, 44, 84, 186, 73, 881, 199, 188, 174, 286,
- 48, 336, 384, 389, 332, 142, -21, 52, 154, 33,
- 85, 276, 278, 233, 515, 509, 474, 516, 502, 464,
- 491, 415, 417, 432, 514, 370, 463, 506, 365, 513,
- -12, 517, 504, 519, 505, 511, 496, 525, 532, 330,
- 358,
-);
- const YY_REDUCE_USE_DFLT = -89;
- const YY_REDUCE_MAX = 178;
- public static $yy_reduce_ofst = array(
- 325, 527, 495, 666, 595, 560, 863, 874, 834, 805,
- 762, 794, 1179, 1455, 1208, 1012, 1386, 1139, 1070, 1110,
- 1150, 1219, 1248, 1277, 1288, 1317, 1346, 1357, 1415, 1426,
- 1081, 1041, 1001, 972, 943, 932, 903, 1484, 1495, 1622,
- 1633, 1662, 1593, 1564, 1553, 1524, 1704, 607, 1590, 178,
- 74, 1027, 229, 899, 273, 212, -22, -22, -22, -22,
- -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
- -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
- -22, -22, -22, 380, 329, 187, 159, 127, -52, 253,
- 304, 12, 303, 152, 193, 328, 68, 68, 68, 322,
- 328, 407, 405, 322, 68, 190, 335, 416, 403, 68,
- 401, 354, 371, 68, 68, 68, 337, 322, 68, 68,
- 68, 68, 408, 68, 68, 68, 409, 455, 455, 455,
- 455, 455, 510, 480, 455, 455, 477, 482, 457, 482,
- 473, 457, 457, 485, 482, 482, 482, 457, 482, 482,
- 457, 482, 503, 482, 482, 482, 457, 457, 482, 457,
- 520, 482, 523, -88, 498, 489, 498, 489, 498, -88,
- -88, -67, -88, 111, 155, 89, 236, 230, 162,
-);
- public static $yyExpectedTokens = array(
- array(),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 52, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
- array(24, 26, 32, 37, 38, 39, 54, 55, 56, 57, ),
- array(26, 32, 37, 38, 39, 54, 55, 56, 57, ),
- array(26, 32, 37, 38, 39, 54, 55, 56, 57, ),
- array(14, 16, 48, 50, 53, ),
- array(3, 9, 10, 11, 12, 14, 18, 19, 20, 25, 29, 30, 31, 59, 60, ),
- array(1, 13, 17, 26, 32, 35, 47, ),
- array(14, 16, 50, 53, ),
- array(1, 26, 32, ),
- array(14, 35, 53, ),
- array(3, 9, 10, 11, 12, 14, 18, 19, 20, 25, 29, 30, 31, 59, 60, ),
- array(36, 37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 52, 54, 55, 56, 57, ),
- array(36, 37, 38, 39, 54, 55, 56, 57, ),
- array(13, 37, 38, 39, 54, 55, 56, 57, ),
- array(13, 37, 38, 39, 54, 55, 56, 57, ),
- array(13, 37, 38, 39, 54, 55, 56, 57, ),
- array(27, 37, 38, 39, 54, 55, 56, 57, ),
- array(13, 37, 38, 39, 54, 55, 56, 57, ),
- array(13, 37, 38, 39, 54, 55, 56, 57, ),
- array(2, 37, 38, 39, 54, 55, 56, 57, ),
- array(21, 37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, 60, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(37, 38, 39, 54, 55, 56, 57, ),
- array(9, 12, 16, 26, 28, 32, ),
- array(9, 12, 16, 26, 32, ),
- array(17, 44, 51, ),
- array(1, 26, 32, ),
- array(1, 26, 32, ),
- array(15, 17, 47, ),
- array(14, 35, 53, ),
- array(14, 35, 53, ),
- array(1, 2, ),
- array(3, 4, 5, 6, 9, 10, 11, 12, 18, 19, 20, 25, 29, 30, 31, ),
- array(2, 9, 12, 15, 16, 17, 44, 47, 49, 51, ),
- array(12, 14, 16, 53, ),
- array(9, 12, 16, 49, ),
- array(1, 13, 26, 32, ),
- array(1, 13, 26, 32, ),
- array(1, 13, 26, 32, ),
- array(15, 17, 47, ),
- array(9, 12, 16, ),
- array(9, 12, 16, ),
- array(14, 16, ),
- array(17, 47, ),
- array(1, 28, ),
- array(26, 32, ),
- array(14, 16, ),
- array(26, 32, ),
- array(26, 32, ),
- array(1, 52, ),
- array(14, 53, ),
- array(1, 17, ),
- array(26, 32, ),
- array(1, ),
- array(1, ),
- array(1, ),
- array(1, ),
- array(17, ),
- array(1, ),
- array(1, ),
- array(1, ),
- array(1, ),
- array(17, ),
- array(1, ),
- array(1, ),
- array(),
- array(),
- array(2, 9, 12, 16, 17, 44, 47, 49, 51, 52, ),
- array(2, 9, 12, 15, 16, 17, 44, 47, 49, 51, ),
- array(2, 9, 12, 16, 17, 44, 47, 49, 51, ),
- array(2, 9, 12, 16, 17, 44, 47, 49, 51, ),
- array(9, 12, 16, 17, 44, 47, 49, 51, ),
- array(12, 14, 16, 33, 53, ),
- array(9, 12, 16, 49, ),
- array(9, 12, 16, ),
- array(15, 44, 51, ),
- array(14, 53, ),
- array(26, 32, ),
- array(44, 51, ),
- array(26, 32, ),
- array(44, 51, ),
- array(44, 51, ),
- array(44, 51, ),
- array(44, 51, ),
- array(26, 32, ),
- array(26, 32, ),
- array(26, 32, ),
- array(44, 51, ),
- array(26, 32, ),
- array(26, 32, ),
- array(44, 51, ),
- array(26, 32, ),
- array(15, 22, ),
- array(26, 32, ),
- array(26, 32, ),
- array(26, 32, ),
- array(44, 51, ),
- array(44, 51, ),
- array(26, 32, ),
- array(44, 51, ),
- array(12, 35, ),
- array(26, 32, ),
- array(14, 53, ),
- array(1, ),
- array(17, ),
- array(2, ),
- array(17, ),
- array(2, ),
- array(17, ),
- array(1, ),
- array(1, ),
- array(35, ),
- array(1, ),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(2, 35, 37, 38, 39, 47, 54, 55, 56, 57, ),
- array(13, 21, 23, 26, 32, 34, 36, 44, ),
- array(13, 15, 26, 32, 35, 47, ),
- array(13, 22, 26, 32, 45, ),
- array(13, 22, 26, 32, 45, ),
- array(35, 44, 47, 52, ),
- array(9, 12, 16, 49, ),
- array(22, 45, 52, ),
- array(28, 35, 47, ),
- array(22, 45, 60, ),
- array(35, 47, ),
- array(21, 34, ),
- array(34, 36, ),
- array(16, 49, ),
- array(6, 8, ),
- array(44, 52, ),
- array(7, 8, ),
- array(34, 52, ),
- array(35, 47, ),
- array(35, 47, ),
- array(22, 45, ),
- array(34, 36, ),
- array(15, 44, ),
- array(34, 36, ),
- array(34, 36, ),
- array(13, ),
- array(16, ),
- array(50, ),
- array(7, ),
- array(16, ),
- array(52, ),
- array(23, ),
- array(36, ),
- array(50, ),
- array(14, ),
- array(13, ),
- array(52, ),
- array(15, ),
- array(16, ),
- array(40, ),
- array(16, ),
- array(35, ),
- array(16, ),
- array(33, ),
- array(16, ),
- array(33, ),
- array(35, ),
- array(44, ),
- array(16, ),
- array(16, ),
- array(16, ),
- array(16, ),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
- array(),
-);
- public static $yy_default = array(
- 336, 512, 512, 512, 497, 497, 512, 474, 474, 474,
- 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
- 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
- 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
- 512, 512, 512, 512, 512, 512, 377, 377, 356, 512,
- 512, 413, 512, 377, 512, 512, 512, 512, 512, 512,
- 512, 512, 382, 512, 349, 512, 512, 512, 382, 379,
- 389, 388, 384, 402, 473, 397, 498, 500, 401, 361,
- 472, 499, 349, 377, 377, 487, 377, 377, 429, 512,
- 512, 368, 326, 428, 512, 439, 391, 391, 391, 429,
- 439, 439, 512, 429, 391, 377, 512, 377, 377, 391,
- 512, 371, 358, 395, 394, 396, 373, 429, 400, 404,
- 391, 404, 484, 406, 405, 481, 334, 428, 428, 428,
- 428, 428, 512, 441, 439, 455, 512, 363, 435, 354,
- 434, 437, 433, 432, 359, 357, 364, 436, 353, 367,
- 466, 365, 512, 352, 350, 360, 467, 465, 346, 464,
- 439, 366, 512, 369, 461, 475, 488, 476, 485, 372,
- 422, 439, 374, 480, 439, 480, 480, 439, 334, 413,
- 409, 413, 403, 403, 413, 440, 403, 413, 403, 413,
- 512, 512, 512, 332, 409, 512, 512, 512, 423, 403,
- 512, 409, 512, 512, 512, 512, 512, 512, 512, 418,
- 385, 512, 512, 512, 512, 512, 512, 512, 415, 512,
- 455, 512, 512, 512, 411, 486, 409, 512, 512, 512,
- 512, 419, 407, 362, 445, 418, 425, 424, 420, 339,
- 460, 421, 483, 398, 416, 340, 399, 455, 378, 337,
- 338, 330, 328, 329, 442, 443, 444, 438, 392, 393,
- 427, 426, 386, 417, 408, 390, 410, 331, 333, 335,
- 412, 470, 414, 415, 503, 478, 495, 471, 459, 458,
- 375, 457, 344, 462, 508, 493, 376, 496, 456, 509,
- 494, 501, 504, 511, 510, 507, 505, 502, 506, 345,
- 468, 469, 446, 355, 341, 452, 450, 454, 448, 453,
- 447, 489, 490, 491, 463, 449, 492, 451, 327, 342,
- 343, 370, 430, 431, 479, 477,
-);
- const YYNOCODE = 109;
- const YYSTACKDEPTH = 500;
- const YYNSTATE = 326;
- const YYNRULE = 186;
- const YYERRORSYMBOL = 61;
- const YYERRSYMDT = 'yy0';
- const YYFALLBACK = 0;
- public static $yyFallback = array(
- );
- public function Trace($TraceFILE, $zTracePrompt)
- {
- if (!$TraceFILE) {
- $zTracePrompt = 0;
- } elseif (!$zTracePrompt) {
- $TraceFILE = 0;
- }
- $this->yyTraceFILE = $TraceFILE;
- $this->yyTracePrompt = $zTracePrompt;
- }
-
- public function PrintTrace()
- {
- $this->yyTraceFILE = fopen('php://output', 'w');
- $this->yyTracePrompt = '<br>';
- }
-
- public $yyTraceFILE;
- public $yyTracePrompt;
- public $yyidx; /* Index of top element in stack */
- public $yyerrcnt; /* Shifts left before out of the error */
- public $yystack = array(); /* The parser's stack */
-
- public $yyTokenName = array(
- '$', 'VERT', 'COLON', 'TEXT',
- 'STRIPON', 'STRIPOFF', 'LITERALSTART', 'LITERALEND',
- 'LITERAL', 'SIMPELOUTPUT', 'SIMPLETAG', 'SMARTYBLOCKCHILDPARENT',
- 'LDEL', 'RDEL', 'DOLLARID', 'EQUAL',
- 'ID', 'PTR', 'LDELMAKENOCACHE', 'LDELIF',
- 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO',
- 'STEP', 'LDELFOREACH', 'SPACE', 'AS',
- 'APTR', 'LDELSETFILTER', 'CLOSETAG', 'LDELSLASH',
- 'ATTR', 'INTEGER', 'COMMA', 'OPENP',
- 'CLOSEP', 'MATH', 'UNIMATH', 'ISIN',
- 'QMARK', 'NOT', 'TYPECAST', 'HEX',
- 'DOT', 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON',
- 'NAMESPACE', 'AT', 'HATCH', 'OPENB',
- 'CLOSEB', 'DOLLAR', 'LOGOP', 'SLOGOP',
- 'TLOGOP', 'SINGLECOND', 'ARRAYOPEN', 'QUOTE',
- 'BACKTICK', 'error', 'start', 'template',
- 'literal_e2', 'literal_e1', 'smartytag', 'tagbody',
- 'tag', 'outattr', 'eqoutattr', 'varindexed',
- 'output', 'attributes', 'variable', 'value',
- 'expr', 'modifierlist', 'statement', 'statements',
- 'foraction', 'varvar', 'modparameters', 'attribute',
- 'ternary', 'tlop', 'lop', 'scond',
- 'array', 'function', 'ns1', 'doublequoted_with_quotes',
- 'static_class_access', 'arraydef', 'object', 'arrayindex',
- 'indexdef', 'varvarele', 'objectchain', 'objectelement',
- 'method', 'params', 'modifier', 'modparameter',
- 'arrayelements', 'arrayelement', 'doublequoted', 'doublequotedcontent',
- );
-
- public static $yyRuleName = array(
- 'start ::= template',
- 'template ::= template TEXT',
- 'template ::= template STRIPON',
- 'template ::= template STRIPOFF',
- 'template ::= template LITERALSTART literal_e2 LITERALEND',
- 'literal_e2 ::= literal_e1 LITERALSTART literal_e1 LITERALEND',
- 'literal_e2 ::= literal_e1',
- 'literal_e1 ::= literal_e1 LITERAL',
- 'literal_e1 ::=',
- 'template ::= template smartytag',
- 'template ::=',
- 'smartytag ::= SIMPELOUTPUT',
- 'smartytag ::= SIMPLETAG',
- 'smartytag ::= SMARTYBLOCKCHILDPARENT',
- 'smartytag ::= LDEL tagbody RDEL',
- 'smartytag ::= tag RDEL',
- 'tagbody ::= outattr',
- 'tagbody ::= DOLLARID eqoutattr',
- 'tagbody ::= varindexed eqoutattr',
- 'eqoutattr ::= EQUAL outattr',
- 'outattr ::= output attributes',
- 'output ::= variable',
- 'output ::= value',
- 'output ::= expr',
- 'tag ::= LDEL ID attributes',
- 'tag ::= LDEL ID',
- 'tag ::= LDEL ID modifierlist attributes',
- 'tag ::= LDEL ID PTR ID attributes',
- 'tag ::= LDEL ID PTR ID modifierlist attributes',
- 'tag ::= LDELMAKENOCACHE DOLLARID',
- 'tag ::= LDELIF expr',
- 'tag ::= LDELIF expr attributes',
- 'tag ::= LDELIF statement',
- 'tag ::= LDELIF statement attributes',
- 'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
- 'foraction ::= EQUAL expr',
- 'foraction ::= INCDEC',
- 'tag ::= LDELFOR statement TO expr attributes',
- 'tag ::= LDELFOR statement TO expr STEP expr attributes',
- 'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
- 'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
- 'tag ::= LDELFOREACH attributes',
- 'tag ::= LDELSETFILTER ID modparameters',
- 'tag ::= LDELSETFILTER ID modparameters modifierlist',
- 'smartytag ::= CLOSETAG',
- 'tag ::= LDELSLASH ID',
- 'tag ::= LDELSLASH ID modifierlist',
- 'tag ::= LDELSLASH ID PTR ID',
- 'tag ::= LDELSLASH ID PTR ID modifierlist',
- 'attributes ::= attributes attribute',
- 'attributes ::= attribute',
- 'attributes ::=',
- 'attribute ::= SPACE ID EQUAL ID',
- 'attribute ::= ATTR expr',
- 'attribute ::= ATTR value',
- 'attribute ::= SPACE ID',
- 'attribute ::= SPACE expr',
- 'attribute ::= SPACE value',
- 'attribute ::= SPACE INTEGER EQUAL expr',
- 'statements ::= statement',
- 'statements ::= statements COMMA statement',
- 'statement ::= DOLLARID EQUAL INTEGER',
- 'statement ::= DOLLARID EQUAL expr',
- 'statement ::= varindexed EQUAL expr',
- 'statement ::= OPENP statement CLOSEP',
- 'expr ::= value',
- 'expr ::= ternary',
- 'expr ::= DOLLARID COLON ID',
- 'expr ::= expr MATH value',
- 'expr ::= expr UNIMATH value',
- 'expr ::= expr tlop value',
- 'expr ::= expr lop expr',
- 'expr ::= expr scond',
- 'expr ::= expr ISIN array',
- 'expr ::= expr ISIN value',
- 'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
- 'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr',
- 'value ::= variable',
- 'value ::= UNIMATH value',
- 'value ::= NOT value',
- 'value ::= TYPECAST value',
- 'value ::= variable INCDEC',
- 'value ::= HEX',
- 'value ::= INTEGER',
- 'value ::= INTEGER DOT INTEGER',
- 'value ::= INTEGER DOT',
- 'value ::= DOT INTEGER',
- 'value ::= ID',
- 'value ::= function',
- 'value ::= OPENP expr CLOSEP',
- 'value ::= variable INSTANCEOF ns1',
- 'value ::= variable INSTANCEOF variable',
- 'value ::= SINGLEQUOTESTRING',
- 'value ::= doublequoted_with_quotes',
- 'value ::= varindexed DOUBLECOLON static_class_access',
- 'value ::= smartytag',
- 'value ::= value modifierlist',
- 'value ::= NAMESPACE',
- 'value ::= arraydef',
- 'value ::= ns1 DOUBLECOLON static_class_access',
- 'ns1 ::= ID',
- 'ns1 ::= NAMESPACE',
- 'variable ::= DOLLARID',
- 'variable ::= varindexed',
- 'variable ::= varvar AT ID',
- 'variable ::= object',
- 'variable ::= HATCH ID HATCH',
- 'variable ::= HATCH ID HATCH arrayindex',
- 'variable ::= HATCH variable HATCH',
- 'variable ::= HATCH variable HATCH arrayindex',
- 'varindexed ::= DOLLARID arrayindex',
- 'varindexed ::= varvar arrayindex',
- 'arrayindex ::= arrayindex indexdef',
- 'arrayindex ::=',
- 'indexdef ::= DOT DOLLARID',
- 'indexdef ::= DOT varvar',
- 'indexdef ::= DOT varvar AT ID',
- 'indexdef ::= DOT ID',
- 'indexdef ::= DOT INTEGER',
- 'indexdef ::= DOT LDEL expr RDEL',
- 'indexdef ::= OPENB ID CLOSEB',
- 'indexdef ::= OPENB ID DOT ID CLOSEB',
- 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
- 'indexdef ::= OPENB INTEGER CLOSEB',
- 'indexdef ::= OPENB DOLLARID CLOSEB',
- 'indexdef ::= OPENB variable CLOSEB',
- 'indexdef ::= OPENB value CLOSEB',
- 'indexdef ::= OPENB expr CLOSEB',
- 'indexdef ::= OPENB CLOSEB',
- 'varvar ::= DOLLARID',
- 'varvar ::= DOLLAR',
- 'varvar ::= varvar varvarele',
- 'varvarele ::= ID',
- 'varvarele ::= SIMPELOUTPUT',
- 'varvarele ::= LDEL expr RDEL',
- 'object ::= varindexed objectchain',
- 'objectchain ::= objectelement',
- 'objectchain ::= objectchain objectelement',
- 'objectelement ::= PTR ID arrayindex',
- 'objectelement ::= PTR varvar arrayindex',
- 'objectelement ::= PTR LDEL expr RDEL arrayindex',
- 'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
- 'objectelement ::= PTR method',
- 'function ::= ns1 OPENP params CLOSEP',
- 'method ::= ID OPENP params CLOSEP',
- 'method ::= DOLLARID OPENP params CLOSEP',
- 'params ::= params COMMA expr',
- 'params ::= expr',
- 'params ::=',
- 'modifierlist ::= modifierlist modifier modparameters',
- 'modifierlist ::= modifier modparameters',
- 'modifier ::= VERT AT ID',
- 'modifier ::= VERT ID',
- 'modparameters ::= modparameters modparameter',
- 'modparameters ::=',
- 'modparameter ::= COLON value',
- 'modparameter ::= COLON UNIMATH value',
- 'modparameter ::= COLON array',
- 'static_class_access ::= method',
- 'static_class_access ::= method objectchain',
- 'static_class_access ::= ID',
- 'static_class_access ::= DOLLARID arrayindex',
- 'static_class_access ::= DOLLARID arrayindex objectchain',
- 'lop ::= LOGOP',
- 'lop ::= SLOGOP',
- 'tlop ::= TLOGOP',
- 'scond ::= SINGLECOND',
- 'arraydef ::= OPENB arrayelements CLOSEB',
- 'arraydef ::= ARRAYOPEN arrayelements CLOSEP',
- 'arrayelements ::= arrayelement',
- 'arrayelements ::= arrayelements COMMA arrayelement',
- 'arrayelements ::=',
- 'arrayelement ::= value APTR expr',
- 'arrayelement ::= ID APTR expr',
- 'arrayelement ::= expr',
- 'doublequoted_with_quotes ::= QUOTE QUOTE',
- 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
- 'doublequoted ::= doublequoted doublequotedcontent',
- 'doublequoted ::= doublequotedcontent',
- 'doublequotedcontent ::= BACKTICK variable BACKTICK',
- 'doublequotedcontent ::= BACKTICK expr BACKTICK',
- 'doublequotedcontent ::= DOLLARID',
- 'doublequotedcontent ::= LDEL variable RDEL',
- 'doublequotedcontent ::= LDEL expr RDEL',
- 'doublequotedcontent ::= smartytag',
- 'doublequotedcontent ::= TEXT',
- );
-
- public function tokenName($tokenType)
- {
- if ($tokenType === 0) {
- return 'End of Input';
- }
- if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
- return $this->yyTokenName[$tokenType];
- } else {
- return 'Unknown';
- }
- }
-
- public static function yy_destructor($yymajor, $yypminor)
- {
- switch ($yymajor) {
- default: break; /* If no destructor action specified: do nothing */
- }
- }
-
- public function yy_pop_parser_stack()
- {
- if (empty($this->yystack)) {
- return;
- }
- $yytos = array_pop($this->yystack);
- if ($this->yyTraceFILE && $this->yyidx >= 0) {
- fwrite($this->yyTraceFILE,
- $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
- "\n");
- }
- $yymajor = $yytos->major;
- self::yy_destructor($yymajor, $yytos->minor);
- $this->yyidx--;
-
- return $yymajor;
- }
-
- public function __destruct()
- {
- while ($this->yystack !== Array()) {
- $this->yy_pop_parser_stack();
- }
- if (is_resource($this->yyTraceFILE)) {
- fclose($this->yyTraceFILE);
- }
- }
-
- public function yy_get_expected_tokens($token)
- {
- static $res3 = array();
- static $res4 = array();
- $state = $this->yystack[$this->yyidx]->stateno;
- $expected = self::$yyExpectedTokens[$state];
- if (isset($res3[$state][$token])) {
- if ($res3[$state][$token]) {
- return $expected;
- }
- } else {
- if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
- return $expected;
- }
- }
- $stack = $this->yystack;
- $yyidx = $this->yyidx;
- do {
- $yyact = $this->yy_find_shift_action($token);
- if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
- // reduce action
- $done = 0;
- do {
- if ($done++ === 100) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // too much recursion prevents proper detection
- // so give up
- return array_unique($expected);
- }
- $yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
- $nextstate = $this->yy_find_reduce_action(
- $this->yystack[$this->yyidx]->stateno,
- self::$yyRuleInfo[$yyruleno][0]);
- if (isset(self::$yyExpectedTokens[$nextstate])) {
- $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
- if (isset($res4[$nextstate][$token])) {
- if ($res4[$nextstate][$token]) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return array_unique($expected);
- }
- } else {
- if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return array_unique($expected);
- }
- }
- }
- if ($nextstate < self::YYNSTATE) {
- // we need to shift a non-terminal
- $this->yyidx++;
- $x = new TP_yyStackEntry;
- $x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[$yyruleno][0];
- $this->yystack[$this->yyidx] = $x;
- continue 2;
- } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // the last token was just ignored, we can't accept
- // by ignoring input, this is in essence ignoring a
- // syntax error!
- return array_unique($expected);
- } elseif ($nextstate === self::YY_NO_ACTION) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // input accepted, but not shifted (I guess)
- return $expected;
- } else {
- $yyact = $nextstate;
- }
- } while (true);
- }
- break;
- } while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
-
- return array_unique($expected);
- }
-
- public function yy_is_expected_token($token)
- {
- static $res = array();
- static $res2 = array();
- if ($token === 0) {
- return true; // 0 is not part of this
- }
- $state = $this->yystack[$this->yyidx]->stateno;
- if (isset($res[$state][$token])) {
- if ($res[$state][$token]) {
- return true;
- }
- } else {
- if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
- return true;
- }
- }
- $stack = $this->yystack;
- $yyidx = $this->yyidx;
- do {
- $yyact = $this->yy_find_shift_action($token);
- if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
- // reduce action
- $done = 0;
- do {
- if ($done++ === 100) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // too much recursion prevents proper detection
- // so give up
- return true;
- }
- $yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
- $nextstate = $this->yy_find_reduce_action(
- $this->yystack[$this->yyidx]->stateno,
- self::$yyRuleInfo[$yyruleno][0]);
- if (isset($res2[$nextstate][$token])) {
- if ($res2[$nextstate][$token]) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return true;
- }
- } else {
- if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return true;
- }
- }
- if ($nextstate < self::YYNSTATE) {
- // we need to shift a non-terminal
- $this->yyidx++;
- $x = new TP_yyStackEntry;
- $x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[$yyruleno][0];
- $this->yystack[$this->yyidx] = $x;
- continue 2;
- } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- if (!$token) {
- // end of input: this is valid
- return true;
- }
- // the last token was just ignored, we can't accept
- // by ignoring input, this is in essence ignoring a
- // syntax error!
- return false;
- } elseif ($nextstate === self::YY_NO_ACTION) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // input accepted, but not shifted (I guess)
- return true;
- } else {
- $yyact = $nextstate;
- }
- } while (true);
- }
- break;
- } while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
-
- return true;
- }
-
- public function yy_find_shift_action($iLookAhead)
- {
- $stateno = $this->yystack[$this->yyidx]->stateno;
-
- /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
- if (!isset(self::$yy_shift_ofst[$stateno])) {
- // no shift actions
- return self::$yy_default[$stateno];
- }
- $i = self::$yy_shift_ofst[$stateno];
- if ($i === self::YY_SHIFT_USE_DFLT) {
- return self::$yy_default[$stateno];
- }
- if ($iLookAhead === self::YYNOCODE) {
- return self::YY_NO_ACTION;
- }
- $i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
- self::$yy_lookahead[$i] != $iLookAhead) {
- if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
- && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
- if ($this->yyTraceFILE) {
- fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
- $this->yyTokenName[$iLookAhead] . ' => ' .
- $this->yyTokenName[$iFallback] . "\n");
- }
-
- return $this->yy_find_shift_action($iFallback);
- }
-
- return self::$yy_default[$stateno];
- } else {
- return self::$yy_action[$i];
- }
- }
-
- public function yy_find_reduce_action($stateno, $iLookAhead)
- {
- /* $stateno = $this->yystack[$this->yyidx]->stateno; */
-
- if (!isset(self::$yy_reduce_ofst[$stateno])) {
- return self::$yy_default[$stateno];
- }
- $i = self::$yy_reduce_ofst[$stateno];
- if ($i === self::YY_REDUCE_USE_DFLT) {
- return self::$yy_default[$stateno];
- }
- if ($iLookAhead === self::YYNOCODE) {
- return self::YY_NO_ACTION;
- }
- $i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
- self::$yy_lookahead[$i] != $iLookAhead) {
- return self::$yy_default[$stateno];
- } else {
- return self::$yy_action[$i];
- }
- }
-
- public function yy_shift($yyNewState, $yyMajor, $yypMinor)
- {
- $this->yyidx++;
- if ($this->yyidx >= self::YYSTACKDEPTH) {
- $this->yyidx--;
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
-// line 220 "../smarty/lexer/smarty_internal_templateparser.y"
-
- $this->internalError = true;
- $this->compiler->trigger_template_error('Stack overflow in template parser');
-
- return;
- }
- $yytos = new TP_yyStackEntry;
- $yytos->stateno = $yyNewState;
- $yytos->major = $yyMajor;
- $yytos->minor = $yypMinor;
- $this->yystack[] = $yytos;
- if ($this->yyTraceFILE && $this->yyidx > 0) {
- fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt,
- $yyNewState);
- fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
- for ($i = 1; $i <= $this->yyidx; $i++) {
- fprintf($this->yyTraceFILE, " %s",
- $this->yyTokenName[$this->yystack[$i]->major]);
- }
- fwrite($this->yyTraceFILE,"\n");
- }
- }
-
- public static $yyRuleInfo = array(
- array( 0 => 62, 1 => 1 ),
- array( 0 => 63, 1 => 2 ),
- array( 0 => 63, 1 => 2 ),
- array( 0 => 63, 1 => 2 ),
- array( 0 => 63, 1 => 4 ),
- array( 0 => 64, 1 => 4 ),
- array( 0 => 64, 1 => 1 ),
- array( 0 => 65, 1 => 2 ),
- array( 0 => 65, 1 => 0 ),
- array( 0 => 63, 1 => 2 ),
- array( 0 => 63, 1 => 0 ),
- array( 0 => 66, 1 => 1 ),
- array( 0 => 66, 1 => 1 ),
- array( 0 => 66, 1 => 1 ),
- array( 0 => 66, 1 => 3 ),
- array( 0 => 66, 1 => 2 ),
- array( 0 => 67, 1 => 1 ),
- array( 0 => 67, 1 => 2 ),
- array( 0 => 67, 1 => 2 ),
- array( 0 => 70, 1 => 2 ),
- array( 0 => 69, 1 => 2 ),
- array( 0 => 72, 1 => 1 ),
- array( 0 => 72, 1 => 1 ),
- array( 0 => 72, 1 => 1 ),
- array( 0 => 68, 1 => 3 ),
- array( 0 => 68, 1 => 2 ),
- array( 0 => 68, 1 => 4 ),
- array( 0 => 68, 1 => 5 ),
- array( 0 => 68, 1 => 6 ),
- array( 0 => 68, 1 => 2 ),
- array( 0 => 68, 1 => 2 ),
- array( 0 => 68, 1 => 3 ),
- array( 0 => 68, 1 => 2 ),
- array( 0 => 68, 1 => 3 ),
- array( 0 => 68, 1 => 8 ),
- array( 0 => 80, 1 => 2 ),
- array( 0 => 80, 1 => 1 ),
- array( 0 => 68, 1 => 5 ),
- array( 0 => 68, 1 => 7 ),
- array( 0 => 68, 1 => 6 ),
- array( 0 => 68, 1 => 8 ),
- array( 0 => 68, 1 => 2 ),
- array( 0 => 68, 1 => 3 ),
- array( 0 => 68, 1 => 4 ),
- array( 0 => 66, 1 => 1 ),
- array( 0 => 68, 1 => 2 ),
- array( 0 => 68, 1 => 3 ),
- array( 0 => 68, 1 => 4 ),
- array( 0 => 68, 1 => 5 ),
- array( 0 => 73, 1 => 2 ),
- array( 0 => 73, 1 => 1 ),
- array( 0 => 73, 1 => 0 ),
- array( 0 => 83, 1 => 4 ),
- array( 0 => 83, 1 => 2 ),
- array( 0 => 83, 1 => 2 ),
- array( 0 => 83, 1 => 2 ),
- array( 0 => 83, 1 => 2 ),
- array( 0 => 83, 1 => 2 ),
- array( 0 => 83, 1 => 4 ),
- array( 0 => 79, 1 => 1 ),
- array( 0 => 79, 1 => 3 ),
- array( 0 => 78, 1 => 3 ),
- array( 0 => 78, 1 => 3 ),
- array( 0 => 78, 1 => 3 ),
- array( 0 => 78, 1 => 3 ),
- array( 0 => 76, 1 => 1 ),
- array( 0 => 76, 1 => 1 ),
- array( 0 => 76, 1 => 3 ),
- array( 0 => 76, 1 => 3 ),
- array( 0 => 76, 1 => 3 ),
- array( 0 => 76, 1 => 3 ),
- array( 0 => 76, 1 => 3 ),
- array( 0 => 76, 1 => 2 ),
- array( 0 => 76, 1 => 3 ),
- array( 0 => 76, 1 => 3 ),
- array( 0 => 84, 1 => 7 ),
- array( 0 => 84, 1 => 7 ),
- array( 0 => 75, 1 => 1 ),
- array( 0 => 75, 1 => 2 ),
- array( 0 => 75, 1 => 2 ),
- array( 0 => 75, 1 => 2 ),
- array( 0 => 75, 1 => 2 ),
- array( 0 => 75, 1 => 1 ),
- array( 0 => 75, 1 => 1 ),
- array( 0 => 75, 1 => 3 ),
- array( 0 => 75, 1 => 2 ),
- array( 0 => 75, 1 => 2 ),
- array( 0 => 75, 1 => 1 ),
- array( 0 => 75, 1 => 1 ),
- array( 0 => 75, 1 => 3 ),
- array( 0 => 75, 1 => 3 ),
- array( 0 => 75, 1 => 3 ),
- array( 0 => 75, 1 => 1 ),
- array( 0 => 75, 1 => 1 ),
- array( 0 => 75, 1 => 3 ),
- array( 0 => 75, 1 => 1 ),
- array( 0 => 75, 1 => 2 ),
- array( 0 => 75, 1 => 1 ),
- array( 0 => 75, 1 => 1 ),
- array( 0 => 75, 1 => 3 ),
- array( 0 => 90, 1 => 1 ),
- array( 0 => 90, 1 => 1 ),
- array( 0 => 74, 1 => 1 ),
- array( 0 => 74, 1 => 1 ),
- array( 0 => 74, 1 => 3 ),
- array( 0 => 74, 1 => 1 ),
- array( 0 => 74, 1 => 3 ),
- array( 0 => 74, 1 => 4 ),
- array( 0 => 74, 1 => 3 ),
- array( 0 => 74, 1 => 4 ),
- array( 0 => 71, 1 => 2 ),
- array( 0 => 71, 1 => 2 ),
- array( 0 => 95, 1 => 2 ),
- array( 0 => 95, 1 => 0 ),
- array( 0 => 96, 1 => 2 ),
- array( 0 => 96, 1 => 2 ),
- array( 0 => 96, 1 => 4 ),
- array( 0 => 96, 1 => 2 ),
- array( 0 => 96, 1 => 2 ),
- array( 0 => 96, 1 => 4 ),
- array( 0 => 96, 1 => 3 ),
- array( 0 => 96, 1 => 5 ),
- array( 0 => 96, 1 => 3 ),
- array( 0 => 96, 1 => 3 ),
- array( 0 => 96, 1 => 3 ),
- array( 0 => 96, 1 => 3 ),
- array( 0 => 96, 1 => 3 ),
- array( 0 => 96, 1 => 3 ),
- array( 0 => 96, 1 => 2 ),
- array( 0 => 81, 1 => 1 ),
- array( 0 => 81, 1 => 1 ),
- array( 0 => 81, 1 => 2 ),
- array( 0 => 97, 1 => 1 ),
- array( 0 => 97, 1 => 1 ),
- array( 0 => 97, 1 => 3 ),
- array( 0 => 94, 1 => 2 ),
- array( 0 => 98, 1 => 1 ),
- array( 0 => 98, 1 => 2 ),
- array( 0 => 99, 1 => 3 ),
- array( 0 => 99, 1 => 3 ),
- array( 0 => 99, 1 => 5 ),
- array( 0 => 99, 1 => 6 ),
- array( 0 => 99, 1 => 2 ),
- array( 0 => 89, 1 => 4 ),
- array( 0 => 100, 1 => 4 ),
- array( 0 => 100, 1 => 4 ),
- array( 0 => 101, 1 => 3 ),
- array( 0 => 101, 1 => 1 ),
- array( 0 => 101, 1 => 0 ),
- array( 0 => 77, 1 => 3 ),
- array( 0 => 77, 1 => 2 ),
- array( 0 => 102, 1 => 3 ),
- array( 0 => 102, 1 => 2 ),
- array( 0 => 82, 1 => 2 ),
- array( 0 => 82, 1 => 0 ),
- array( 0 => 103, 1 => 2 ),
- array( 0 => 103, 1 => 3 ),
- array( 0 => 103, 1 => 2 ),
- array( 0 => 92, 1 => 1 ),
- array( 0 => 92, 1 => 2 ),
- array( 0 => 92, 1 => 1 ),
- array( 0 => 92, 1 => 2 ),
- array( 0 => 92, 1 => 3 ),
- array( 0 => 86, 1 => 1 ),
- array( 0 => 86, 1 => 1 ),
- array( 0 => 85, 1 => 1 ),
- array( 0 => 87, 1 => 1 ),
- array( 0 => 93, 1 => 3 ),
- array( 0 => 93, 1 => 3 ),
- array( 0 => 104, 1 => 1 ),
- array( 0 => 104, 1 => 3 ),
- array( 0 => 104, 1 => 0 ),
- array( 0 => 105, 1 => 3 ),
- array( 0 => 105, 1 => 3 ),
- array( 0 => 105, 1 => 1 ),
- array( 0 => 91, 1 => 2 ),
- array( 0 => 91, 1 => 3 ),
- array( 0 => 106, 1 => 2 ),
- array( 0 => 106, 1 => 1 ),
- array( 0 => 107, 1 => 3 ),
- array( 0 => 107, 1 => 3 ),
- array( 0 => 107, 1 => 1 ),
- array( 0 => 107, 1 => 3 ),
- array( 0 => 107, 1 => 3 ),
- array( 0 => 107, 1 => 1 ),
- array( 0 => 107, 1 => 1 ),
- );
-
- public static $yyReduceMap = array(
- 0 => 0,
- 1 => 1,
- 2 => 2,
- 3 => 3,
- 4 => 4,
- 5 => 5,
- 6 => 6,
- 21 => 6,
- 22 => 6,
- 23 => 6,
- 36 => 6,
- 56 => 6,
- 57 => 6,
- 65 => 6,
- 66 => 6,
- 77 => 6,
- 82 => 6,
- 83 => 6,
- 88 => 6,
- 92 => 6,
- 93 => 6,
- 97 => 6,
- 98 => 6,
- 100 => 6,
- 105 => 6,
- 169 => 6,
- 174 => 6,
- 7 => 7,
- 8 => 8,
- 9 => 9,
- 11 => 11,
- 12 => 12,
- 13 => 13,
- 14 => 14,
- 15 => 15,
- 16 => 16,
- 17 => 17,
- 18 => 18,
- 19 => 19,
- 20 => 20,
- 24 => 24,
- 25 => 25,
- 26 => 26,
- 27 => 27,
- 28 => 28,
- 29 => 29,
- 30 => 30,
- 31 => 31,
- 33 => 31,
- 32 => 32,
- 34 => 34,
- 35 => 35,
- 37 => 37,
- 38 => 38,
- 39 => 39,
- 40 => 40,
- 41 => 41,
- 42 => 42,
- 43 => 43,
- 44 => 44,
- 45 => 45,
- 46 => 46,
- 47 => 47,
- 48 => 48,
- 49 => 49,
- 50 => 50,
- 59 => 50,
- 147 => 50,
- 151 => 50,
- 155 => 50,
- 157 => 50,
- 51 => 51,
- 148 => 51,
- 154 => 51,
- 52 => 52,
- 53 => 53,
- 54 => 53,
- 55 => 55,
- 132 => 55,
- 58 => 58,
- 60 => 60,
- 61 => 61,
- 62 => 61,
- 63 => 63,
- 64 => 64,
- 67 => 67,
- 68 => 68,
- 69 => 68,
- 70 => 70,
- 71 => 71,
- 72 => 72,
- 73 => 73,
- 74 => 74,
- 75 => 75,
- 76 => 76,
- 78 => 78,
- 80 => 78,
- 81 => 78,
- 112 => 78,
- 79 => 79,
- 84 => 84,
- 85 => 85,
- 86 => 86,
- 87 => 87,
- 89 => 89,
- 90 => 90,
- 91 => 90,
- 94 => 94,
- 95 => 95,
- 96 => 96,
- 99 => 99,
- 101 => 101,
- 102 => 102,
- 103 => 103,
- 104 => 104,
- 106 => 106,
- 107 => 107,
- 108 => 108,
- 109 => 109,
- 110 => 110,
- 111 => 111,
- 113 => 113,
- 171 => 113,
- 114 => 114,
- 115 => 115,
- 116 => 116,
- 117 => 117,
- 118 => 118,
- 119 => 119,
- 127 => 119,
- 120 => 120,
- 121 => 121,
- 122 => 122,
- 123 => 122,
- 125 => 122,
- 126 => 122,
- 124 => 124,
- 128 => 128,
- 129 => 129,
- 130 => 130,
- 175 => 130,
- 131 => 131,
- 133 => 133,
- 134 => 134,
- 135 => 135,
- 136 => 136,
- 137 => 137,
- 138 => 138,
- 139 => 139,
- 140 => 140,
- 141 => 141,
- 142 => 142,
- 143 => 143,
- 144 => 144,
- 145 => 145,
- 146 => 146,
- 149 => 149,
- 150 => 150,
- 152 => 152,
- 153 => 153,
- 156 => 156,
- 158 => 158,
- 159 => 159,
- 160 => 160,
- 161 => 161,
- 162 => 162,
- 163 => 163,
- 164 => 164,
- 165 => 165,
- 166 => 166,
- 167 => 167,
- 168 => 167,
- 170 => 170,
- 172 => 172,
- 173 => 173,
- 176 => 176,
- 177 => 177,
- 178 => 178,
- 179 => 179,
- 182 => 179,
- 180 => 180,
- 183 => 180,
- 181 => 181,
- 184 => 184,
- 185 => 185,
- );
-// line 233 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r0(){
- $this->root_buffer->prepend_array($this, $this->template_prefix);
- $this->root_buffer->append_array($this, $this->template_postfix);
- $this->_retvalue = $this->root_buffer->to_smarty_php($this);
- }
-// line 240 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r1(){
- $text = $this->yystack[ $this->yyidx + 0 ]->minor;
-
- if ((string)$text == '') {
- $this->current_buffer->append_subtree($this, null);
- }
-
- $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text($text, $this->strip));
- }
-// line 250 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r2(){
- $this->strip = true;
- }
-// line 254 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r3(){
- $this->strip = false;
- }
-// line 259 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r4(){
- $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text($this->yystack[$this->yyidx + -1]->minor));
- }
-// line 264 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r5(){
- $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.$this->yystack[$this->yyidx + -1]->minor;
- }
-// line 267 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r6(){
- $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
- }
-// line 271 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r7(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
-
- }
-// line 276 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r8(){
- $this->_retvalue = '';
- }
-// line 280 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r9(){
- if ($this->compiler->has_code) {
- $this->current_buffer->append_subtree($this, $this->mergePrefixCode($this->yystack[$this->yyidx + 0]->minor));
- }
- $this->compiler->has_variable_string = false;
- $this->block_nesting_level = count($this->compiler->_tag_stack);
- }
-// line 292 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r11(){
- $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
- if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
- $this->_retvalue = $this->compiler->compileTag('private_print_expression',array('nocache'),array('value'=>$this->compiler->compileVariable('\''.$match[1].'\'')));
- } else {
- $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->compiler->compileVariable('\''.$var.'\'')));
- }
- }
-// line 302 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r12(){
- $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()));
- if ($tag == 'strip') {
- $this->strip = true;
- $this->_retvalue = null;
- } else {
- if (defined($tag)) {
- if ($this->security) {
- $this->security->isTrustedConstant($tag, $this->compiler);
- }
- $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$tag));
- } else {
- if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
- $this->_retvalue = $this->compiler->compileTag($match[1],array('\'nocache\''));
- } else {
- $this->_retvalue = $this->compiler->compileTag($tag,array());
- }
- }
- }
- }
-// line 323 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r13(){
- $j = strrpos($this->yystack[$this->yyidx + 0]->minor,'.');
- if ($this->yystack[$this->yyidx + 0]->minor[$j+1] == 'c') {
- // {$smarty.block.child}
- $this->_retvalue = $this->compiler->compileTag('child',array(),array($this->yystack[$this->yyidx + 0]->minor));
- } else {
- // {$smarty.block.parent}
- $this->_retvalue = $this->compiler->compileTag('parent',array(),array($this->yystack[$this->yyidx + 0]->minor));
- }
- }
-// line 334 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r14(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
- }
-// line 338 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r15(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
- }
-// line 342 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r16(){
- $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor[1],array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]));
- }
-// line 351 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r17(){
- $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'')),$this->yystack[$this->yyidx + 0]->minor[1]));
- }
-// line 355 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r18(){
- $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>$this->yystack[$this->yyidx + -1]->minor['var'])),$this->yystack[$this->yyidx + 0]->minor[1]),array('smarty_internal_index'=>$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']));
- }
-// line 359 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r19(){
- $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
- }
-// line 363 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r20(){
- $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
- }
-// line 378 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r24(){
- if (defined($this->yystack[$this->yyidx + -1]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[$this->yyidx + -1]->minor, $this->compiler);
- }
- $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor,array('value'=>$this->yystack[$this->yyidx + -1]->minor));
- } else {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
- }
- }
-// line 388 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r25(){
- if (defined($this->yystack[$this->yyidx + 0]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
- }
- $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->yystack[$this->yyidx + 0]->minor));
- } else {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor,array());
- }
- }
-// line 401 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r26(){
- if (defined($this->yystack[$this->yyidx + -2]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[$this->yyidx + -2]->minor, $this->compiler);
- }
- $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor,array('value'=>$this->yystack[$this->yyidx + -2]->minor, 'modifierlist'=>$this->yystack[$this->yyidx + -1]->minor));
- } else {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + 0]->minor, array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor));
- }
- }
-// line 413 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r27(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + 0]->minor,array('object_method'=>$this->yystack[$this->yyidx + -1]->minor));
- }
-// line 418 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r28(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + 0]->minor,array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor, 'object_method'=>$this->yystack[$this->yyidx + -2]->minor));
- }
-// line 423 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r29(){
- $this->_retvalue = $this->compiler->compileTag('make_nocache',array(array('var'=>'\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'')));
- }
-// line 428 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r30(){
- $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength()));
- $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
- }
-// line 433 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r31(){
- $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->compiler->getLdelLength()));
- $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,$this->yystack[$this->yyidx + 0]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));
- }
-// line 438 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r32(){
- $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength()));
- $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
- }
-// line 449 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r34(){
- $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -6]->minor),array('ifexp'=>$this->yystack[$this->yyidx + -4]->minor),array('var'=>$this->yystack[$this->yyidx + -2]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),1);
- }
-// line 453 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r35(){
- $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 461 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r37(){
- $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -3]->minor),array('to'=>$this->yystack[$this->yyidx + -1]->minor))),0);
- }
-// line 465 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r38(){
- $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -5]->minor),array('to'=>$this->yystack[$this->yyidx + -3]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),0);
- }
-// line 470 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r39(){
- $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -3]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor))));
- }
-// line 474 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r40(){
- $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor),array('key'=>$this->yystack[$this->yyidx + -3]->minor))));
- }
-// line 477 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r41(){
- $this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + 0]->minor);
- }
-// line 482 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r42(){
- $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array($this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + 0]->minor))));
- }
-// line 486 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r43(){
- $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array($this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)),$this->yystack[$this->yyidx + 0]->minor)));
- }
-// line 492 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r44(){
- $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /');
- if ($tag === 'strip') {
- $this->strip = false;
- $this->_retvalue = null;
- } else {
- $this->_retvalue = $this->compiler->compileTag($tag.'close',array());
- }
- }
-// line 501 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r45(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor.'close',array());
- }
-// line 505 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r46(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array(),array('modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
- }
-// line 510 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r47(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + 0]->minor));
- }
-// line 514 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r48(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + -1]->minor, 'modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
- }
-// line 522 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r49(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
- $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
- }
-// line 528 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r50(){
- $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
- }
-// line 533 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r51(){
- $this->_retvalue = array();
- }
-// line 538 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r52(){
- if (defined($this->yystack[$this->yyidx + 0]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
- }
- $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
- } else {
- $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'\''.$this->yystack[$this->yyidx + 0]->minor.'\'');
- }
- }
-// line 549 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r53(){
- $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor," =\n\r\t")=>$this->yystack[$this->yyidx + 0]->minor);
- }
-// line 557 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r55(){
- $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
- }
-// line 569 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r58(){
- $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
- }
-// line 582 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r60(){
- $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor;
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;
- }
-// line 587 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r61(){
- $this->_retvalue = array('var' => '\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'', 'value'=>$this->yystack[$this->yyidx + 0]->minor);
- }
-// line 594 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r63(){
- $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);
- }
-// line 598 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r64(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
- }
-// line 618 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r67(){
- $this->_retvalue = '$_smarty_tpl->getStreamVariable(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'://' . $this->yystack[$this->yyidx + 0]->minor . '\')';
- }
-// line 623 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r68(){
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
- }
-// line 633 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r70(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor['pre']. $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor['op'].$this->yystack[$this->yyidx + 0]->minor .')';
- }
-// line 637 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r71(){
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 641 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r72(){
- $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor . $this->yystack[$this->yyidx + -1]->minor . ')';
- }
-// line 645 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r73(){
- $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';
- }
-// line 649 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r74(){
- $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';
- }
-// line 657 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r75(){
- $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '. $this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'') . ' : '.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 661 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r76(){
- $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 671 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r78(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 676 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r79(){
- $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 697 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r84(){
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 701 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r85(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.';
- }
-// line 705 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r86(){
- $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 710 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r87(){
- if (defined($this->yystack[$this->yyidx + 0]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
- }
- $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
- } else {
- $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
- }
- }
-// line 727 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r89(){
- $this->_retvalue = '('. $this->yystack[$this->yyidx + -1]->minor .')';
- }
-// line 731 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r90(){
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 749 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r94(){
- if ($this->security && $this->security->static_classes !== array()) {
- $this->compiler->trigger_template_error('dynamic static class not allowed by security setting');
- }
- $prefixVar = $this->compiler->getNewPrefixVariable();
- if ($this->yystack[$this->yyidx + -2]->minor['var'] === '\'smarty\'') {
- $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).';?>');
- } else {
- $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". $this->compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor['var']).$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].';?>');
- }
- $this->_retvalue = $prefixVar .'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
- }
-// line 760 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r95(){
- $prefixVar = $this->compiler->getNewPrefixVariable();
- $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[$this->yyidx + 0]->minor);
- $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php {$prefixVar} = ob_get_clean();?>"));
- $this->_retvalue = $prefixVar;
- }
-// line 767 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r96(){
- $this->_retvalue = $this->compiler->compileTag('private_modifier',array(),array('value'=>$this->yystack[$this->yyidx + -1]->minor,'modifierlist'=>$this->yystack[$this->yyidx + 0]->minor));
- }
-// line 780 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r99(){
- if (!in_array(strtolower($this->yystack[$this->yyidx + -2]->minor), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->compiler))) {
- if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) {
- $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor].'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
- } else {
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
- }
- } else {
- $this->compiler->trigger_template_error ('static class \''.$this->yystack[$this->yyidx + -2]->minor.'\' is undefined or not allowed by security setting');
- }
- }
-// line 799 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r101(){
- $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
- }
-// line 810 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r102(){
- $this->_retvalue = $this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'');
- }
-// line 813 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r103(){
- if ($this->yystack[$this->yyidx + 0]->minor['var'] === '\'smarty\'') {
- $smarty_var = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
- $this->_retvalue = $smarty_var;
- } else {
- // used for array reset,next,prev,end,current
- $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
- $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
- $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']).$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
- }
- }
-// line 826 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r104(){
- $this->_retvalue = '$_smarty_tpl->tpl_vars['. $this->yystack[$this->yyidx + -2]->minor .']->'.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 836 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r106(){
- $this->_retvalue = $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -1]->minor . '\'');
- }
-// line 840 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r107(){
- $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -2]->minor . '\'') . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' :null)';
- }
-// line 844 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r108(){
- $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -1]->minor);
- }
-// line 848 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r109(){
- $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -2]->minor) . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' : null)';
- }
-// line 852 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r110(){
- $this->_retvalue = array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'', 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
- }
-// line 855 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r111(){
- $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
- }
-// line 868 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r113(){
- return;
- }
-// line 874 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r114(){
- $this->_retvalue = '['.$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'').']';
- }
-// line 877 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r115(){
- $this->_retvalue = '['.$this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor).']';
- }
-// line 881 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r116(){
- $this->_retvalue = '['.$this->compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor).'->'.$this->yystack[$this->yyidx + 0]->minor.']';
- }
-// line 885 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r117(){
- $this->_retvalue = '[\''. $this->yystack[$this->yyidx + 0]->minor .'\']';
- }
-// line 889 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r118(){
- $this->_retvalue = '['. $this->yystack[$this->yyidx + 0]->minor .']';
- }
-// line 894 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r119(){
- $this->_retvalue = '['. $this->yystack[$this->yyidx + -1]->minor .']';
- }
-// line 899 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r120(){
- $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';
- }
-// line 903 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r121(){
- $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';
- }
-// line 906 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r122(){
- $this->_retvalue = '['.$this->yystack[$this->yyidx + -1]->minor.']';
- }
-// line 912 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r124(){
- $this->_retvalue = '['.$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'').']';
- }
-// line 928 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r128(){
- $this->_retvalue = '[]';
- }
-// line 938 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r129(){
- $this->_retvalue = '\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'';
- }
-// line 942 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r130(){
- $this->_retvalue = '\'\'';
- }
-// line 947 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r131(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 955 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r133(){
- $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
- $this->_retvalue = $this->compiler->compileVariable('\''.$var.'\'');
- }
-// line 961 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r134(){
- $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';
- }
-// line 968 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r135(){
- if ($this->yystack[$this->yyidx + -1]->minor['var'] === '\'smarty\'') {
- $this->_retvalue = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;
- } else {
- $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + -1]->minor['var']).$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor;
- }
- }
-// line 977 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r136(){
- $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
- }
-// line 982 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r137(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 987 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r138(){
- if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor,0,1) === '_') {
- $this->compiler->trigger_template_error (self::ERR1);
- }
- $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 994 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r139(){
- if ($this->security) {
- $this->compiler->trigger_template_error (self::ERR2);
- }
- $this->_retvalue = '->{'.$this->compiler->compileVariable($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor.'}';
- }
-// line 1001 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r140(){
- if ($this->security) {
- $this->compiler->trigger_template_error (self::ERR2);
- }
- $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
- }
-// line 1008 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r141(){
- if ($this->security) {
- $this->compiler->trigger_template_error (self::ERR2);
- }
- $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
- }
-// line 1016 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r142(){
- $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 1024 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r143(){
- $this->_retvalue = $this->compiler->compilePHPFunctionCall($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor);
- }
-// line 1032 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r144(){
- if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor,0,1) === '_') {
- $this->compiler->trigger_template_error (self::ERR1);
- }
- $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . '('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
- }
-// line 1039 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r145(){
- if ($this->security) {
- $this->compiler->trigger_template_error (self::ERR2);
- }
- $prefixVar = $this->compiler->getNewPrefixVariable();
- $this->compiler->appendPrefixCode("<?php {$prefixVar} = ".$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -3]->minor,1).'\'').';?>');
- $this->_retvalue = $prefixVar .'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
- }
-// line 1050 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r146(){
- $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor));
- }
-// line 1067 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r149(){
- $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor)));
- }
-// line 1071 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r150(){
- $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor));
- }
-// line 1079 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r152(){
- $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
- }
-// line 1087 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r153(){
- $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
- }
-// line 1100 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r156(){
- $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor);
- }
-// line 1109 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r158(){
- $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method');
- }
-// line 1114 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r159(){
- $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'method');
- }
-// line 1119 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r160(){
- $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '');
- }
-// line 1124 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r161(){
- $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property');
- }
-// line 1129 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r162(){
- $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property');
- }
-// line 1135 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r163(){
- $this->_retvalue = ' '. trim($this->yystack[$this->yyidx + 0]->minor) . ' ';
- }
-// line 1139 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r164(){
- static $lops = array(
- 'eq' => ' == ',
- 'ne' => ' != ',
- 'neq' => ' != ',
- 'gt' => ' > ',
- 'ge' => ' >= ',
- 'gte' => ' >= ',
- 'lt' => ' < ',
- 'le' => ' <= ',
- 'lte' => ' <= ',
- 'mod' => ' % ',
- 'and' => ' && ',
- 'or' => ' || ',
- 'xor' => ' xor ',
- );
- $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
- $this->_retvalue = $lops[$op];
- }
-// line 1158 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r165(){
- static $tlops = array(
- 'isdivby' => array('op' => ' % ', 'pre' => '!('),
- 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
- 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
- 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
- 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
- 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),
- );
- $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
- $this->_retvalue = $tlops[$op];
- }
-// line 1171 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r166(){
- static $scond = array (
- 'iseven' => '!(1 & ',
- 'isnoteven' => '(1 & ',
- 'isodd' => '(1 & ',
- 'isnotodd' => '!(1 & ',
- );
- $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
- $this->_retvalue = $scond[$op];
- }
-// line 1185 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r167(){
- $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';
- }
-// line 1196 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r170(){
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 1204 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r172(){
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 1208 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r173(){
- $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;
- }
-// line 1224 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r176(){
- $this->compiler->leaveDoubleQuote();
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php($this);
- }
-// line 1230 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r177(){
- $this->yystack[$this->yyidx + -1]->minor->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor);
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
- }
-// line 1235 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r178(){
- $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[$this->yyidx + 0]->minor);
- }
-// line 1239 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r179(){
- $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)'.$this->yystack[$this->yyidx + -1]->minor);
- }
-// line 1243 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r180(){
- $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)('.$this->yystack[$this->yyidx + -1]->minor.')');
- }
-// line 1247 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r181(){
- $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\']->value');
- }
-// line 1259 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r184(){
- $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[$this->yyidx + 0]->minor);
- }
-// line 1263 "../smarty/lexer/smarty_internal_templateparser.y"
- public function yy_r185(){
- $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[$this->yyidx + 0]->minor);
- }
-
- private $_retvalue;
-
- public function yy_reduce($yyruleno)
- {
- if ($this->yyTraceFILE && $yyruleno >= 0
- && $yyruleno < count(self::$yyRuleName)) {
- fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n",
- $this->yyTracePrompt, $yyruleno,
- self::$yyRuleName[$yyruleno]);
- }
-
- $this->_retvalue = $yy_lefthand_side = null;
- if (isset(self::$yyReduceMap[$yyruleno])) {
- // call the action
- $this->_retvalue = null;
- $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
- $yy_lefthand_side = $this->_retvalue;
- }
- $yygoto = self::$yyRuleInfo[$yyruleno][0];
- $yysize = self::$yyRuleInfo[$yyruleno][1];
- $this->yyidx -= $yysize;
- for ($i = $yysize; $i; $i--) {
- // pop all of the right-hand side parameters
- array_pop($this->yystack);
- }
- $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
- if ($yyact < self::YYNSTATE) {
- if (!$this->yyTraceFILE && $yysize) {
- $this->yyidx++;
- $x = new TP_yyStackEntry;
- $x->stateno = $yyact;
- $x->major = $yygoto;
- $x->minor = $yy_lefthand_side;
- $this->yystack[$this->yyidx] = $x;
- } else {
- $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
- }
- } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
- $this->yy_accept();
- }
- }
-
- public function yy_parse_failed()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
- } while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- }
-
- public function yy_syntax_error($yymajor, $TOKEN)
- {
-// line 213 "../smarty/lexer/smarty_internal_templateparser.y"
-
- $this->internalError = true;
- $this->yymajor = $yymajor;
- $this->compiler->trigger_template_error();
- }
-
- public function yy_accept()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
- } while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
-// line 206 "../smarty/lexer/smarty_internal_templateparser.y"
-
- $this->successful = !$this->internalError;
- $this->internalError = false;
- $this->retvalue = $this->_retvalue;
- }
-
- public function doParse($yymajor, $yytokenvalue)
- {
- $yyerrorhit = 0; /* True if yymajor has invoked an error */
-
- if ($this->yyidx === null || $this->yyidx < 0) {
- $this->yyidx = 0;
- $this->yyerrcnt = -1;
- $x = new TP_yyStackEntry;
- $x->stateno = 0;
- $x->major = 0;
- $this->yystack = array();
- $this->yystack[] = $x;
- }
- $yyendofinput = ($yymajor==0);
-
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sInput %s\n",
- $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
- }
-
- do {
- $yyact = $this->yy_find_shift_action($yymajor);
- if ($yymajor < self::YYERRORSYMBOL &&
- !$this->yy_is_expected_token($yymajor)) {
- // force a syntax error
- $yyact = self::YY_ERROR_ACTION;
- }
- if ($yyact < self::YYNSTATE) {
- $this->yy_shift($yyact, $yymajor, $yytokenvalue);
- $this->yyerrcnt--;
- if ($yyendofinput && $this->yyidx >= 0) {
- $yymajor = 0;
- } else {
- $yymajor = self::YYNOCODE;
- }
- } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
- $this->yy_reduce($yyact - self::YYNSTATE);
- } elseif ($yyact === self::YY_ERROR_ACTION) {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sSyntax Error!\n",
- $this->yyTracePrompt);
- }
- if (self::YYERRORSYMBOL) {
- if ($this->yyerrcnt < 0) {
- $this->yy_syntax_error($yymajor, $yytokenvalue);
- }
- $yymx = $this->yystack[$this->yyidx]->major;
- if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sDiscard input token %s\n",
- $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
- }
- $this->yy_destructor($yymajor, $yytokenvalue);
- $yymajor = self::YYNOCODE;
- } else {
- while ($this->yyidx >= 0 &&
- $yymx !== self::YYERRORSYMBOL &&
- ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
- ){
- $this->yy_pop_parser_stack();
- }
- if ($this->yyidx < 0 || $yymajor==0) {
- $this->yy_destructor($yymajor, $yytokenvalue);
- $this->yy_parse_failed();
- $yymajor = self::YYNOCODE;
- } elseif ($yymx !== self::YYERRORSYMBOL) {
- $u2 = 0;
- $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
- }
- }
- $this->yyerrcnt = 3;
- $yyerrorhit = 1;
- } else {
- if ($this->yyerrcnt <= 0) {
- $this->yy_syntax_error($yymajor, $yytokenvalue);
- }
- $this->yyerrcnt = 3;
- $this->yy_destructor($yymajor, $yytokenvalue);
- if ($yyendofinput) {
- $this->yy_parse_failed();
- }
- $yymajor = self::YYNOCODE;
- }
- } else {
- $this->yy_accept();
- $yymajor = self::YYNOCODE;
- }
- } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
- }
-}
-
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php
deleted file mode 100644
index c8ffd4cc6..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php
+++ /dev/null
@@ -1,605 +0,0 @@
-<?php
-/**
- * Smarty Internal TestInstall
- * Test Smarty installation
- *
- * @package Smarty
- * @subpackage Utilities
- * @author Uwe Tews
- */
-
-/**
- * TestInstall class
- *
- * @package Smarty
- * @subpackage Utilities
- */
-class Smarty_Internal_TestInstall
-{
- /**
- * diagnose Smarty setup
- * If $errors is secified, the diagnostic report will be appended to the array, rather than being output.
- *
- * @param \Smarty $smarty
- * @param array $errors array to push results into rather than outputting them
- *
- * @return bool status, true if everything is fine, false else
- */
- public static function testInstall(Smarty $smarty, &$errors = null)
- {
- $status = true;
- if ($errors === null) {
- echo "<PRE>\n";
- echo "Smarty Installation test...\n";
- echo "Testing template directory...\n";
- }
- $_stream_resolve_include_path = function_exists('stream_resolve_include_path');
- // test if all registered template_dir are accessible
- foreach ($smarty->getTemplateDir() as $template_dir) {
- $_template_dir = $template_dir;
- $template_dir = realpath($template_dir);
- // resolve include_path or fail existence
- if (!$template_dir) {
- if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_template_dir)) {
- // try PHP include_path
- if ($_stream_resolve_include_path) {
- $template_dir = stream_resolve_include_path($_template_dir);
- } else {
- $template_dir = $smarty->ext->_getIncludePath->getIncludePath($_template_dir, null, $smarty);
- }
- if ($template_dir !== false) {
- if ($errors === null) {
- echo "$template_dir is OK.\n";
- }
- continue;
- } else {
- $status = false;
- $message =
- "FAILED: $_template_dir does not exist (and couldn't be found in include_path either)";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'template_dir' ] = $message;
- }
- continue;
- }
- } else {
- $status = false;
- $message = "FAILED: $_template_dir does not exist";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'template_dir' ] = $message;
- }
- continue;
- }
- }
- if (!is_dir($template_dir)) {
- $status = false;
- $message = "FAILED: $template_dir is not a directory";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'template_dir' ] = $message;
- }
- } elseif (!is_readable($template_dir)) {
- $status = false;
- $message = "FAILED: $template_dir is not readable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'template_dir' ] = $message;
- }
- } else {
- if ($errors === null) {
- echo "$template_dir is OK.\n";
- }
- }
- }
- if ($errors === null) {
- echo "Testing compile directory...\n";
- }
- // test if registered compile_dir is accessible
- $__compile_dir = $smarty->getCompileDir();
- $_compile_dir = realpath($__compile_dir);
- if (!$_compile_dir) {
- $status = false;
- $message = "FAILED: {$__compile_dir} does not exist";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'compile_dir' ] = $message;
- }
- } elseif (!is_dir($_compile_dir)) {
- $status = false;
- $message = "FAILED: {$_compile_dir} is not a directory";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'compile_dir' ] = $message;
- }
- } elseif (!is_readable($_compile_dir)) {
- $status = false;
- $message = "FAILED: {$_compile_dir} is not readable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'compile_dir' ] = $message;
- }
- } elseif (!is_writable($_compile_dir)) {
- $status = false;
- $message = "FAILED: {$_compile_dir} is not writable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'compile_dir' ] = $message;
- }
- } else {
- if ($errors === null) {
- echo "{$_compile_dir} is OK.\n";
- }
- }
- if ($errors === null) {
- echo "Testing plugins directory...\n";
- }
- // test if all registered plugins_dir are accessible
- // and if core plugins directory is still registered
- $_core_plugins_dir = realpath(__DIR__ . '/../plugins');
- $_core_plugins_available = false;
- foreach ($smarty->getPluginsDir() as $plugin_dir) {
- $_plugin_dir = $plugin_dir;
- $plugin_dir = realpath($plugin_dir);
- // resolve include_path or fail existence
- if (!$plugin_dir) {
- if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) {
- // try PHP include_path
- if ($_stream_resolve_include_path) {
- $plugin_dir = stream_resolve_include_path($_plugin_dir);
- } else {
- $plugin_dir = $smarty->ext->_getIncludePath->getIncludePath($_plugin_dir, null, $smarty);
- }
- if ($plugin_dir !== false) {
- if ($errors === null) {
- echo "$plugin_dir is OK.\n";
- }
- continue;
- } else {
- $status = false;
- $message = "FAILED: $_plugin_dir does not exist (and couldn't be found in include_path either)";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins_dir' ] = $message;
- }
- continue;
- }
- } else {
- $status = false;
- $message = "FAILED: $_plugin_dir does not exist";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins_dir' ] = $message;
- }
- continue;
- }
- }
- if (!is_dir($plugin_dir)) {
- $status = false;
- $message = "FAILED: $plugin_dir is not a directory";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins_dir' ] = $message;
- }
- } elseif (!is_readable($plugin_dir)) {
- $status = false;
- $message = "FAILED: $plugin_dir is not readable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins_dir' ] = $message;
- }
- } elseif ($_core_plugins_dir && $_core_plugins_dir == realpath($plugin_dir)) {
- $_core_plugins_available = true;
- if ($errors === null) {
- echo "$plugin_dir is OK.\n";
- }
- } else {
- if ($errors === null) {
- echo "$plugin_dir is OK.\n";
- }
- }
- }
- if (!$_core_plugins_available) {
- $status = false;
- $message = "WARNING: Smarty's own libs/plugins is not available";
- if ($errors === null) {
- echo $message . ".\n";
- } elseif (!isset($errors[ 'plugins_dir' ])) {
- $errors[ 'plugins_dir' ] = $message;
- }
- }
- if ($errors === null) {
- echo "Testing cache directory...\n";
- }
- // test if all registered cache_dir is accessible
- $__cache_dir = $smarty->getCacheDir();
- $_cache_dir = realpath($__cache_dir);
- if (!$_cache_dir) {
- $status = false;
- $message = "FAILED: {$__cache_dir} does not exist";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'cache_dir' ] = $message;
- }
- } elseif (!is_dir($_cache_dir)) {
- $status = false;
- $message = "FAILED: {$_cache_dir} is not a directory";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'cache_dir' ] = $message;
- }
- } elseif (!is_readable($_cache_dir)) {
- $status = false;
- $message = "FAILED: {$_cache_dir} is not readable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'cache_dir' ] = $message;
- }
- } elseif (!is_writable($_cache_dir)) {
- $status = false;
- $message = "FAILED: {$_cache_dir} is not writable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'cache_dir' ] = $message;
- }
- } else {
- if ($errors === null) {
- echo "{$_cache_dir} is OK.\n";
- }
- }
- if ($errors === null) {
- echo "Testing configs directory...\n";
- }
- // test if all registered config_dir are accessible
- foreach ($smarty->getConfigDir() as $config_dir) {
- $_config_dir = $config_dir;
- // resolve include_path or fail existence
- if (!$config_dir) {
- if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_config_dir)) {
- // try PHP include_path
- if ($_stream_resolve_include_path) {
- $config_dir = stream_resolve_include_path($_config_dir);
- } else {
- $config_dir = $smarty->ext->_getIncludePath->getIncludePath($_config_dir, null, $smarty);
- }
- if ($config_dir !== false) {
- if ($errors === null) {
- echo "$config_dir is OK.\n";
- }
- continue;
- } else {
- $status = false;
- $message = "FAILED: $_config_dir does not exist (and couldn't be found in include_path either)";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'config_dir' ] = $message;
- }
- continue;
- }
- } else {
- $status = false;
- $message = "FAILED: $_config_dir does not exist";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'config_dir' ] = $message;
- }
- continue;
- }
- }
- if (!is_dir($config_dir)) {
- $status = false;
- $message = "FAILED: $config_dir is not a directory";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'config_dir' ] = $message;
- }
- } elseif (!is_readable($config_dir)) {
- $status = false;
- $message = "FAILED: $config_dir is not readable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'config_dir' ] = $message;
- }
- } else {
- if ($errors === null) {
- echo "$config_dir is OK.\n";
- }
- }
- }
- if ($errors === null) {
- echo "Testing sysplugin files...\n";
- }
- // test if sysplugins are available
- $source = SMARTY_SYSPLUGINS_DIR;
- if (is_dir($source)) {
- $expectedSysplugins = array(
- 'smartycompilerexception.php' => true,
- 'smartyexception.php' => true,
- 'smarty_cacheresource.php' => true,
- 'smarty_cacheresource_custom.php' => true,
- 'smarty_cacheresource_keyvaluestore.php' => true,
- 'smarty_data.php' => true,
- 'smarty_internal_block.php' => true,
- 'smarty_internal_cacheresource_file.php' => true,
- 'smarty_internal_compilebase.php' => true,
- 'smarty_internal_compile_append.php' => true,
- 'smarty_internal_compile_assign.php' => true,
- 'smarty_internal_compile_block.php' => true,
- 'smarty_internal_compile_block_child.php' => true,
- 'smarty_internal_compile_block_parent.php' => true,
- 'smarty_internal_compile_child.php' => true,
- 'smarty_internal_compile_parent.php' => true,
- 'smarty_internal_compile_break.php' => true,
- 'smarty_internal_compile_call.php' => true,
- 'smarty_internal_compile_capture.php' => true,
- 'smarty_internal_compile_config_load.php' => true,
- 'smarty_internal_compile_continue.php' => true,
- 'smarty_internal_compile_debug.php' => true,
- 'smarty_internal_compile_eval.php' => true,
- 'smarty_internal_compile_extends.php' => true,
- 'smarty_internal_compile_for.php' => true,
- 'smarty_internal_compile_foreach.php' => true,
- 'smarty_internal_compile_function.php' => true,
- 'smarty_internal_compile_if.php' => true,
- 'smarty_internal_compile_include.php' => true,
- 'smarty_internal_compile_insert.php' => true,
- 'smarty_internal_compile_ldelim.php' => true,
- 'smarty_internal_compile_make_nocache.php' => true,
- 'smarty_internal_compile_nocache.php' => true,
- 'smarty_internal_compile_private_block_plugin.php' => true,
- 'smarty_internal_compile_private_foreachsection.php' => true,
- 'smarty_internal_compile_private_function_plugin.php' => true,
- 'smarty_internal_compile_private_modifier.php' => true,
- 'smarty_internal_compile_private_object_block_function.php' => true,
- 'smarty_internal_compile_private_object_function.php' => true,
- 'smarty_internal_compile_private_print_expression.php' => true,
- 'smarty_internal_compile_private_registered_block.php' => true,
- 'smarty_internal_compile_private_registered_function.php' => true,
- 'smarty_internal_compile_private_special_variable.php' => true,
- 'smarty_internal_compile_rdelim.php' => true,
- 'smarty_internal_compile_section.php' => true,
- 'smarty_internal_compile_setfilter.php' => true,
- 'smarty_internal_compile_shared_inheritance.php' => true,
- 'smarty_internal_compile_while.php' => true,
- 'smarty_internal_configfilelexer.php' => true,
- 'smarty_internal_configfileparser.php' => true,
- 'smarty_internal_config_file_compiler.php' => true,
- 'smarty_internal_data.php' => true,
- 'smarty_internal_debug.php' => true,
- 'smarty_internal_extension_handler.php' => true,
- 'smarty_internal_method_addautoloadfilters.php' => true,
- 'smarty_internal_method_adddefaultmodifiers.php' => true,
- 'smarty_internal_method_append.php' => true,
- 'smarty_internal_method_appendbyref.php' => true,
- 'smarty_internal_method_assignbyref.php' => true,
- 'smarty_internal_method_assignglobal.php' => true,
- 'smarty_internal_method_clearallassign.php' => true,
- 'smarty_internal_method_clearallcache.php' => true,
- 'smarty_internal_method_clearassign.php' => true,
- 'smarty_internal_method_clearcache.php' => true,
- 'smarty_internal_method_clearcompiledtemplate.php' => true,
- 'smarty_internal_method_clearconfig.php' => true,
- 'smarty_internal_method_compileallconfig.php' => true,
- 'smarty_internal_method_compilealltemplates.php' => true,
- 'smarty_internal_method_configload.php' => true,
- 'smarty_internal_method_createdata.php' => true,
- 'smarty_internal_method_getautoloadfilters.php' => true,
- 'smarty_internal_method_getconfigvariable.php' => true,
- 'smarty_internal_method_getconfigvars.php' => true,
- 'smarty_internal_method_getdebugtemplate.php' => true,
- 'smarty_internal_method_getdefaultmodifiers.php' => true,
- 'smarty_internal_method_getglobal.php' => true,
- 'smarty_internal_method_getregisteredobject.php' => true,
- 'smarty_internal_method_getstreamvariable.php' => true,
- 'smarty_internal_method_gettags.php' => true,
- 'smarty_internal_method_gettemplatevars.php' => true,
- 'smarty_internal_method_literals.php' => true,
- 'smarty_internal_method_loadfilter.php' => true,
- 'smarty_internal_method_loadplugin.php' => true,
- 'smarty_internal_method_mustcompile.php' => true,
- 'smarty_internal_method_registercacheresource.php' => true,
- 'smarty_internal_method_registerclass.php' => true,
- 'smarty_internal_method_registerdefaultconfighandler.php' => true,
- 'smarty_internal_method_registerdefaultpluginhandler.php' => true,
- 'smarty_internal_method_registerdefaulttemplatehandler.php' => true,
- 'smarty_internal_method_registerfilter.php' => true,
- 'smarty_internal_method_registerobject.php' => true,
- 'smarty_internal_method_registerplugin.php' => true,
- 'smarty_internal_method_registerresource.php' => true,
- 'smarty_internal_method_setautoloadfilters.php' => true,
- 'smarty_internal_method_setdebugtemplate.php' => true,
- 'smarty_internal_method_setdefaultmodifiers.php' => true,
- 'smarty_internal_method_unloadfilter.php' => true,
- 'smarty_internal_method_unregistercacheresource.php' => true,
- 'smarty_internal_method_unregisterfilter.php' => true,
- 'smarty_internal_method_unregisterobject.php' => true,
- 'smarty_internal_method_unregisterplugin.php' => true,
- 'smarty_internal_method_unregisterresource.php' => true,
- 'smarty_internal_nocache_insert.php' => true,
- 'smarty_internal_parsetree.php' => true,
- 'smarty_internal_parsetree_code.php' => true,
- 'smarty_internal_parsetree_dq.php' => true,
- 'smarty_internal_parsetree_dqcontent.php' => true,
- 'smarty_internal_parsetree_tag.php' => true,
- 'smarty_internal_parsetree_template.php' => true,
- 'smarty_internal_parsetree_text.php' => true,
- 'smarty_internal_resource_eval.php' => true,
- 'smarty_internal_resource_extends.php' => true,
- 'smarty_internal_resource_file.php' => true,
- 'smarty_internal_resource_php.php' => true,
- 'smarty_internal_resource_stream.php' => true,
- 'smarty_internal_resource_string.php' => true,
- 'smarty_internal_runtime_cachemodify.php' => true,
- 'smarty_internal_runtime_cacheresourcefile.php' => true,
- 'smarty_internal_runtime_capture.php' => true,
- 'smarty_internal_runtime_codeframe.php' => true,
- 'smarty_internal_runtime_filterhandler.php' => true,
- 'smarty_internal_runtime_foreach.php' => true,
- 'smarty_internal_runtime_getincludepath.php' => true,
- 'smarty_internal_runtime_inheritance.php' => true,
- 'smarty_internal_runtime_make_nocache.php' => true,
- 'smarty_internal_runtime_tplfunction.php' => true,
- 'smarty_internal_runtime_updatecache.php' => true,
- 'smarty_internal_runtime_updatescope.php' => true,
- 'smarty_internal_runtime_writefile.php' => true,
- 'smarty_internal_smartytemplatecompiler.php' => true,
- 'smarty_internal_template.php' => true,
- 'smarty_internal_templatebase.php' => true,
- 'smarty_internal_templatecompilerbase.php' => true,
- 'smarty_internal_templatelexer.php' => true,
- 'smarty_internal_templateparser.php' => true,
- 'smarty_internal_testinstall.php' => true,
- 'smarty_internal_undefined.php' => true,
- 'smarty_resource.php' => true,
- 'smarty_resource_custom.php' => true,
- 'smarty_resource_recompiled.php' => true,
- 'smarty_resource_uncompiled.php' => true,
- 'smarty_security.php' => true,
- 'smarty_template_cached.php' => true,
- 'smarty_template_compiled.php' => true,
- 'smarty_template_config.php' => true,
- 'smarty_template_resource_base.php' => true,
- 'smarty_template_source.php' => true,
- 'smarty_undefined_variable.php' => true,
- 'smarty_variable.php' => true,
- );
- $iterator = new DirectoryIterator($source);
- foreach ($iterator as $file) {
- if (!$file->isDot()) {
- $filename = $file->getFilename();
- if (isset($expectedSysplugins[ $filename ])) {
- unset($expectedSysplugins[ $filename ]);
- }
- }
- }
- if ($expectedSysplugins) {
- $status = false;
- $message = "FAILED: files missing from libs/sysplugins: " . join(', ', array_keys($expectedSysplugins));
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'sysplugins' ] = $message;
- }
- } elseif ($errors === null) {
- echo "... OK\n";
- }
- } else {
- $status = false;
- $message = "FAILED: " . SMARTY_SYSPLUGINS_DIR . ' is not a directory';
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'sysplugins_dir_constant' ] = $message;
- }
- }
- if ($errors === null) {
- echo "Testing plugin files...\n";
- }
- // test if core plugins are available
- $source = SMARTY_PLUGINS_DIR;
- if (is_dir($source)) {
- $expectedPlugins = array(
- 'block.textformat.php' => true,
- 'function.counter.php' => true,
- 'function.cycle.php' => true,
- 'function.fetch.php' => true,
- 'function.html_checkboxes.php' => true,
- 'function.html_image.php' => true,
- 'function.html_options.php' => true,
- 'function.html_radios.php' => true,
- 'function.html_select_date.php' => true,
- 'function.html_select_time.php' => true,
- 'function.html_table.php' => true,
- 'function.mailto.php' => true,
- 'function.math.php' => true,
- 'modifier.capitalize.php' => true,
- 'modifier.date_format.php' => true,
- 'modifier.debug_print_var.php' => true,
- 'modifier.escape.php' => true,
- 'modifier.mb_wordwrap.php' => true,
- 'modifier.regex_replace.php' => true,
- 'modifier.replace.php' => true,
- 'modifier.spacify.php' => true,
- 'modifier.truncate.php' => true,
- 'modifiercompiler.cat.php' => true,
- 'modifiercompiler.count_characters.php' => true,
- 'modifiercompiler.count_paragraphs.php' => true,
- 'modifiercompiler.count_sentences.php' => true,
- 'modifiercompiler.count_words.php' => true,
- 'modifiercompiler.default.php' => true,
- 'modifiercompiler.escape.php' => true,
- 'modifiercompiler.from_charset.php' => true,
- 'modifiercompiler.indent.php' => true,
- 'modifiercompiler.lower.php' => true,
- 'modifiercompiler.noprint.php' => true,
- 'modifiercompiler.string_format.php' => true,
- 'modifiercompiler.strip.php' => true,
- 'modifiercompiler.strip_tags.php' => true,
- 'modifiercompiler.to_charset.php' => true,
- 'modifiercompiler.unescape.php' => true,
- 'modifiercompiler.upper.php' => true,
- 'modifiercompiler.wordwrap.php' => true,
- 'outputfilter.trimwhitespace.php' => true,
- 'shared.escape_special_chars.php' => true,
- 'shared.literal_compiler_param.php' => true,
- 'shared.make_timestamp.php' => true,
- 'shared.mb_str_replace.php' => true,
- 'shared.mb_unicode.php' => true,
- 'variablefilter.htmlspecialchars.php' => true,
- );
- $iterator = new DirectoryIterator($source);
- foreach ($iterator as $file) {
- if (!$file->isDot()) {
- $filename = $file->getFilename();
- if (isset($expectedPlugins[ $filename ])) {
- unset($expectedPlugins[ $filename ]);
- }
- }
- }
- if ($expectedPlugins) {
- $status = false;
- $message = "FAILED: files missing from libs/plugins: " . join(', ', array_keys($expectedPlugins));
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins' ] = $message;
- }
- } elseif ($errors === null) {
- echo "... OK\n";
- }
- } else {
- $status = false;
- $message = "FAILED: " . SMARTY_PLUGINS_DIR . ' is not a directory';
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins_dir_constant' ] = $message;
- }
- }
- if ($errors === null) {
- echo "Tests complete.\n";
- echo "</PRE>\n";
- }
- return $status;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php
deleted file mode 100644
index 7df0acc2d..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/**
- * Smarty Internal Undefined
- *
- * Class to handle undefined method calls or calls to obsolete runtime extensions
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Undefined
-{
- /**
- * Name of undefined extension class
- *
- * @var string|null
- */
- public $class = null;
-
- /**
- * Smarty_Internal_Undefined constructor.
- *
- * @param null|string $class name of undefined extension class
- */
- public function __construct($class = null)
- {
- $this->class = $class;
- }
-
- /**
- * Wrapper for obsolete class Smarty_Internal_Runtime_ValidateCompiled
- *
- * @param \Smarty_Internal_Template $tpl
- * @param array $properties special template properties
- * @param bool $cache flag if called from cache file
- *
- * @return bool false
- */
- public function decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false)
- {
- if ($cache) {
- $tpl->cached->valid = false;
- } else {
- $tpl->mustCompile = true;
- }
- return false;
- }
-
- /**
- * Call error handler for undefined method
- *
- * @param string $name unknown method-name
- * @param array $args argument array
- *
- * @return mixed
- * @throws SmartyException
- */
- public function __call($name, $args)
- {
- if (isset($this->class)) {
- throw new SmartyException("undefined extension class '{$this->class}'");
- } else {
- throw new SmartyException(get_class($args[ 0 ]) . "->{$name}() undefined method");
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
deleted file mode 100644
index 3c43a9f46..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
+++ /dev/null
@@ -1,260 +0,0 @@
-<?php
-/**
- * Smarty Resource Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Resource Plugin
- * Base implementation for resource plugins
- *
- * @package Smarty
- * @subpackage TemplateResources
- *
- * @method renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
- * @method populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
- * @method process(Smarty_Internal_Template $_smarty_tpl)
- */
-abstract class Smarty_Resource
-{
- /**
- * resource types provided by the core
- *
- * @var array
- */
- public static $sysplugins = array(
- 'file' => 'smarty_internal_resource_file.php',
- 'string' => 'smarty_internal_resource_string.php',
- 'extends' => 'smarty_internal_resource_extends.php',
- 'stream' => 'smarty_internal_resource_stream.php',
- 'eval' => 'smarty_internal_resource_eval.php',
- 'php' => 'smarty_internal_resource_php.php'
- );
-
- /**
- * Source is bypassing compiler
- *
- * @var boolean
- */
- public $uncompiled = false;
-
- /**
- * Source must be recompiled on every occasion
- *
- * @var boolean
- */
- public $recompiled = false;
-
- /**
- * Flag if resource does implement populateCompiledFilepath() method
- *
- * @var bool
- */
- public $hasCompiledHandler = false;
-
- /**
- * Load Resource Handler
- *
- * @param Smarty $smarty smarty object
- * @param string $type name of the resource
- *
- * @throws SmartyException
- * @return Smarty_Resource Resource Handler
- */
- public static function load(Smarty $smarty, $type)
- {
- // try smarty's cache
- if (isset($smarty->_cache[ 'resource_handlers' ][ $type ])) {
- return $smarty->_cache[ 'resource_handlers' ][ $type ];
- }
- // try registered resource
- if (isset($smarty->registered_resources[ $type ])) {
- return $smarty->_cache[ 'resource_handlers' ][ $type ] = $smarty->registered_resources[ $type ];
- }
- // try sysplugins dir
- if (isset(self::$sysplugins[ $type ])) {
- $_resource_class = 'Smarty_Internal_Resource_' . smarty_ucfirst_ascii($type);
- return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class();
- }
- // try plugins dir
- $_resource_class = 'Smarty_Resource_' . smarty_ucfirst_ascii($type);
- if ($smarty->loadPlugin($_resource_class)) {
- if (class_exists($_resource_class, false)) {
- return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class();
- } else {
- $smarty->registerResource(
- $type,
- array(
- "smarty_resource_{$type}_source", "smarty_resource_{$type}_timestamp",
- "smarty_resource_{$type}_secure", "smarty_resource_{$type}_trusted"
- )
- );
- // give it another try, now that the resource is registered properly
- return self::load($smarty, $type);
- }
- }
- // try streams
- $_known_stream = stream_get_wrappers();
- if (in_array($type, $_known_stream)) {
- // is known stream
- if (is_object($smarty->security_policy)) {
- $smarty->security_policy->isTrustedStream($type);
- }
- return $smarty->_cache[ 'resource_handlers' ][ $type ] = new Smarty_Internal_Resource_Stream();
- }
- // TODO: try default_(template|config)_handler
- // give up
- throw new SmartyException("Unknown resource type '{$type}'");
- }
-
- /**
- * extract resource_type and resource_name from template_resource and config_resource
- *
- * @note "C:/foo.tpl" was forced to file resource up till Smarty 3.1.3 (including).
- *
- * @param string $resource_name template_resource or config_resource to parse
- * @param string $default_resource the default resource_type defined in $smarty
- *
- * @return array with parsed resource name and type
- */
- public static function parseResourceName($resource_name, $default_resource)
- {
- if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]/', $resource_name, $match)) {
- $type = $match[ 1 ];
- $name = substr($resource_name, strlen($match[ 0 ]));
- } else {
- // no resource given, use default
- // or single character before the colon is not a resource type, but part of the filepath
- $type = $default_resource;
- $name = $resource_name;
- }
- return array($name, $type);
- }
-
- /**
- * modify template_resource according to resource handlers specifications
- *
- * @param \Smarty_Internal_Template|\Smarty $obj Smarty instance
- * @param string $template_resource template_resource to extract resource handler and
- * name of
- *
- * @return string unique resource name
- * @throws \SmartyException
- */
- public static function getUniqueTemplateName($obj, $template_resource)
- {
- $smarty = $obj->_getSmartyObj();
- list($name, $type) = self::parseResourceName($template_resource, $smarty->default_resource_type);
- // TODO: optimize for Smarty's internal resource types
- $resource = Smarty_Resource::load($smarty, $type);
- // go relative to a given template?
- $_file_is_dotted = $name[ 0 ] === '.' && ($name[ 1 ] === '.' || $name[ 1 ] === '/');
- if ($obj->_isTplObj() && $_file_is_dotted
- && ($obj->source->type === 'file' || $obj->parent->source->type === 'extends')
- ) {
- $name = $smarty->_realpath(dirname($obj->parent->source->filepath) . DIRECTORY_SEPARATOR . $name);
- }
- return $resource->buildUniqueResourceName($smarty, $name);
- }
-
- /**
- * initialize Source Object for given resource
- * wrapper for backward compatibility to versions < 3.1.22
- * Either [$_template] or [$smarty, $template_resource] must be specified
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty $smarty smarty object
- * @param string $template_resource resource identifier
- *
- * @return \Smarty_Template_Source Source Object
- * @throws \SmartyException
- */
- public static function source(
- Smarty_Internal_Template $_template = null,
- Smarty $smarty = null,
- $template_resource = null
- ) {
- return Smarty_Template_Source::load($_template, $smarty, $template_resource);
- }
-
- /**
- * Load template's source into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- abstract public function getContent(Smarty_Template_Source $source);
-
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- */
- abstract public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null);
-
- /**
- * populate Source Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Source $source source object
- */
- public function populateTimestamp(Smarty_Template_Source $source)
- {
- // intentionally left blank
- }
-
- /**
- * modify resource_name according to resource handlers specifications
- *
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
- * @param boolean $isConfig flag for config resource
- *
- * @return string unique resource name
- */
- public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
- {
- if ($isConfig) {
- if (!isset($smarty->_joined_config_dir)) {
- $smarty->getTemplateDir(null, true);
- }
- return get_class($this) . '#' . $smarty->_joined_config_dir . '#' . $resource_name;
- } else {
- if (!isset($smarty->_joined_template_dir)) {
- $smarty->getTemplateDir();
- }
- return get_class($this) . '#' . $smarty->_joined_template_dir . '#' . $resource_name;
- }
- }
-
- /*
- * Check if resource must check time stamps when when loading complied or cached templates.
- * Resources like 'extends' which use source components my disable timestamp checks on own resource.
- *
- * @return bool
- */
- /**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return basename(preg_replace('![^\w]+!', '_', $source->name));
- }
-
- /**
- * @return bool
- */
- public function checkTimestamps()
- {
- return true;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
deleted file mode 100644
index 191fa7c90..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-/**
- * Smarty Resource Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Resource Plugin
- * Wrapper Implementation for custom resource plugins
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-abstract class Smarty_Resource_Custom extends Smarty_Resource
-{
- /**
- * fetch template and its modification time from data source
- *
- * @param string $name template name
- * @param string &$source template source
- * @param integer &$mtime template modification timestamp (epoch)
- */
- abstract protected function fetch($name, &$source, &$mtime);
-
- /**
- * Fetch template's modification timestamp from data source
- * {@internal implementing this method is optional.
- * Only implement it if modification times can be accessed faster than loading the complete template source.}}
- *
- * @param string $name template name
- *
- * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
- */
- protected function fetchTimestamp($name)
- {
- return null;
- }
-
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $source->filepath = $source->type . ':' . $this->generateSafeName($source->name);
- $source->uid = sha1($source->type . ':' . $source->name);
- $mtime = $this->fetchTimestamp($source->name);
- if ($mtime !== null) {
- $source->timestamp = $mtime;
- } else {
- $this->fetch($source->name, $content, $timestamp);
- $source->timestamp = isset($timestamp) ? $timestamp : false;
- if (isset($content)) {
- $source->content = $content;
- }
- }
- $source->exists = !!$source->timestamp;
- }
-
- /**
- * Load template's source into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- public function getContent(Smarty_Template_Source $source)
- {
- $this->fetch($source->name, $content, $timestamp);
- if (isset($content)) {
- return $content;
- }
- throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
- }
-
- /**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return basename($this->generateSafeName($source->name));
- }
-
- /**
- * Removes special characters from $name and limits its length to 127 characters.
- *
- * @param $name
- *
- * @return string
- */
- private function generateSafeName($name): string {
- return substr(preg_replace('/[^A-Za-z0-9._]/', '', (string) $name), 0, 127);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php
deleted file mode 100644
index 760c4dd33..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/**
- * Smarty Resource Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Resource Plugin
- * Base implementation for resource plugins that don't compile cache
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-abstract class Smarty_Resource_Recompiled extends Smarty_Resource
-{
- /**
- * Flag that it's an recompiled resource
- *
- * @var bool
- */
- public $recompiled = true;
-
- /**
- * Resource does implement populateCompiledFilepath() method
- *
- * @var bool
- */
- public $hasCompiledHandler = true;
-
- /**
- * compile template from source
- *
- * @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
- *
- * @throws Exception
- */
- public function process(Smarty_Internal_Template $_smarty_tpl)
- {
- $compiled = &$_smarty_tpl->compiled;
- $compiled->file_dependency = array();
- $compiled->includes = array();
- $compiled->nocache_hash = null;
- $compiled->unifunc = null;
- $level = ob_get_level();
- ob_start();
- $_smarty_tpl->loadCompiler();
- // call compiler
- try {
- eval('?>' . $_smarty_tpl->compiler->compileTemplate($_smarty_tpl));
- } catch (Exception $e) {
- unset($_smarty_tpl->compiler);
- while (ob_get_level() > $level) {
- ob_end_clean();
- }
- throw $e;
- }
- // release compiler object to free memory
- unset($_smarty_tpl->compiler);
- ob_get_clean();
- $compiled->timestamp = time();
- $compiled->exists = true;
- }
-
- /**
- * populate Compiled Object with compiled filepath
- *
- * @param Smarty_Template_Compiled $compiled compiled object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
- {
- $compiled->filepath = false;
- $compiled->timestamp = false;
- $compiled->exists = false;
- }
-
- /*
- * Disable timestamp checks for recompiled resource.
- *
- * @return bool
- */
- /**
- * @return bool
- */
- public function checkTimestamps()
- {
- return false;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php
deleted file mode 100644
index a11e2c14c..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * Smarty Resource Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Resource Plugin
- * Base implementation for resource plugins that don't use the compiler
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-abstract class Smarty_Resource_Uncompiled extends Smarty_Resource
-{
- /**
- * Flag that it's an uncompiled resource
- *
- * @var bool
- */
- public $uncompiled = true;
-
- /**
- * Resource does implement populateCompiledFilepath() method
- *
- * @var bool
- */
- public $hasCompiledHandler = true;
-
- /**
- * populate compiled object with compiled filepath
- *
- * @param Smarty_Template_Compiled $compiled compiled object
- * @param Smarty_Internal_Template $_template template object
- */
- public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
- {
- $compiled->filepath = $_template->source->filepath;
- $compiled->timestamp = $_template->source->timestamp;
- $compiled->exists = $_template->source->exists;
- if ($_template->smarty->merge_compiled_includes || $_template->source->handler->checkTimestamps()) {
- $compiled->file_dependency[ $_template->source->uid ] =
- array($compiled->filepath, $compiled->timestamp, $_template->source->type,);
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_security.php b/vendor/smarty/smarty/libs/sysplugins/smarty_security.php
deleted file mode 100644
index 97cd0521d..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_security.php
+++ /dev/null
@@ -1,680 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage Security
- * @author Uwe Tews
- */
-/**
- * FIXME: Smarty_Security API
- * - getter and setter instead of public properties would allow cultivating an internal cache properly
- * - current implementation of isTrustedResourceDir() assumes that Smarty::$template_dir and Smarty::$config_dir
- * are immutable the cache is killed every time either of the variables change. That means that two distinct
- * Smarty objects with differing
- * $template_dir or $config_dir should NOT share the same Smarty_Security instance,
- * as this would lead to (severe) performance penalty! how should this be handled?
- */
-
-/**
- * This class does contain the security settings
- */
-#[\AllowDynamicProperties]
-class Smarty_Security
-{
-
- /**
- * This is the list of template directories that are considered secure.
- * $template_dir is in this list implicitly.
- *
- * @var array
- */
- public $secure_dir = array();
-
- /**
- * This is an array of directories where trusted php scripts reside.
- * {@link $security} is disabled during their inclusion/execution.
- *
- * @var array
- */
- public $trusted_dir = array();
-
- /**
- * List of regular expressions (PCRE) that include trusted URIs
- *
- * @var array
- */
- public $trusted_uri = array();
-
- /**
- * List of trusted constants names
- *
- * @var array
- */
- public $trusted_constants = array();
-
- /**
- * This is an array of trusted static classes.
- * If empty access to all static classes is allowed.
- * If set to 'none' none is allowed.
- *
- * @var array
- */
- public $static_classes = array();
-
- /**
- * This is an nested array of trusted classes and static methods.
- * If empty access to all static classes and methods is allowed.
- * Format:
- * array (
- * 'class_1' => array('method_1', 'method_2'), // allowed methods listed
- * 'class_2' => array(), // all methods of class allowed
- * )
- * If set to null none is allowed.
- *
- * @var array
- */
- public $trusted_static_methods = array();
-
- /**
- * This is an array of trusted static properties.
- * If empty access to all static classes and properties is allowed.
- * Format:
- * array (
- * 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed
- * 'class_2' => array(), // all properties of class allowed
- * )
- * If set to null none is allowed.
- *
- * @var array
- */
- public $trusted_static_properties = array();
-
- /**
- * This is an array of trusted PHP functions.
- * If empty all functions are allowed.
- * To disable all PHP functions set $php_functions = null.
- *
- * @var array
- */
- public $php_functions = array('isset', 'empty', 'count', 'sizeof', 'in_array', 'is_array', 'time',);
-
- /**
- * This is an array of trusted PHP modifiers.
- * If empty all modifiers are allowed.
- * To disable all modifier set $php_modifiers = null.
- *
- * @var array
- */
- public $php_modifiers = array('escape', 'count', 'sizeof', 'nl2br',);
-
- /**
- * This is an array of allowed tags.
- * If empty no restriction by allowed_tags.
- *
- * @var array
- */
- public $allowed_tags = array();
-
- /**
- * This is an array of disabled tags.
- * If empty no restriction by disabled_tags.
- *
- * @var array
- */
- public $disabled_tags = array();
-
- /**
- * This is an array of allowed modifier plugins.
- * If empty no restriction by allowed_modifiers.
- *
- * @var array
- */
- public $allowed_modifiers = array();
-
- /**
- * This is an array of disabled modifier plugins.
- * If empty no restriction by disabled_modifiers.
- *
- * @var array
- */
- public $disabled_modifiers = array();
-
- /**
- * This is an array of disabled special $smarty variables.
- *
- * @var array
- */
- public $disabled_special_smarty_vars = array();
-
- /**
- * This is an array of trusted streams.
- * If empty all streams are allowed.
- * To disable all streams set $streams = null.
- *
- * @var array
- */
- public $streams = array('file');
-
- /**
- * + flag if constants can be accessed from template
- *
- * @var boolean
- */
- public $allow_constants = true;
-
- /**
- * + flag if super globals can be accessed from template
- *
- * @var boolean
- */
- public $allow_super_globals = true;
-
- /**
- * max template nesting level
- *
- * @var int
- */
- public $max_template_nesting = 0;
-
- /**
- * current template nesting level
- *
- * @var int
- */
- private $_current_template_nesting = 0;
-
- /**
- * Cache for $resource_dir lookup
- *
- * @var array
- */
- protected $_resource_dir = array();
-
- /**
- * Cache for $template_dir lookup
- *
- * @var array
- */
- protected $_template_dir = array();
-
- /**
- * Cache for $config_dir lookup
- *
- * @var array
- */
- protected $_config_dir = array();
-
- /**
- * Cache for $secure_dir lookup
- *
- * @var array
- */
- protected $_secure_dir = array();
-
- /**
- * Cache for $php_resource_dir lookup
- *
- * @var array
- */
- protected $_php_resource_dir = null;
-
- /**
- * Cache for $trusted_dir lookup
- *
- * @var array
- */
- protected $_trusted_dir = null;
-
- /**
- * Cache for include path status
- *
- * @var bool
- */
- protected $_include_path_status = false;
-
- /**
- * Cache for $_include_array lookup
- *
- * @var array
- */
- protected $_include_dir = array();
-
- /**
- * @param Smarty $smarty
- */
- public function __construct($smarty)
- {
- $this->smarty = $smarty;
- }
-
- /**
- * Check if PHP function is trusted.
- *
- * @param string $function_name
- * @param object $compiler compiler object
- *
- * @return boolean true if function is trusted
- */
- public function isTrustedPhpFunction($function_name, $compiler)
- {
- if (isset($this->php_functions)
- && (empty($this->php_functions) || in_array($function_name, $this->php_functions))
- ) {
- return true;
- }
- $compiler->trigger_template_error("PHP function '{$function_name}' not allowed by security setting");
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if static class is trusted.
- *
- * @param string $class_name
- * @param object $compiler compiler object
- *
- * @return boolean true if class is trusted
- */
- public function isTrustedStaticClass($class_name, $compiler)
- {
- if (isset($this->static_classes)
- && (empty($this->static_classes) || in_array($class_name, $this->static_classes))
- ) {
- return true;
- }
- $compiler->trigger_template_error("access to static class '{$class_name}' not allowed by security setting");
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if static class method/property is trusted.
- *
- * @param string $class_name
- * @param string $params
- * @param object $compiler compiler object
- *
- * @return boolean true if class method is trusted
- */
- public function isTrustedStaticClassAccess($class_name, $params, $compiler)
- {
- if (!isset($params[ 2 ])) {
- // fall back
- return $this->isTrustedStaticClass($class_name, $compiler);
- }
- if ($params[ 2 ] === 'method') {
- $allowed = $this->trusted_static_methods;
- $name = substr($params[ 0 ], 0, strpos($params[ 0 ], '('));
- } else {
- $allowed = $this->trusted_static_properties;
- // strip '$'
- $name = substr($params[ 0 ], 1);
- }
- if (isset($allowed)) {
- if (empty($allowed)) {
- // fall back
- return $this->isTrustedStaticClass($class_name, $compiler);
- }
- if (isset($allowed[ $class_name ])
- && (empty($allowed[ $class_name ]) || in_array($name, $allowed[ $class_name ]))
- ) {
- return true;
- }
- }
- $compiler->trigger_template_error("access to static class '{$class_name}' {$params[2]} '{$name}' not allowed by security setting");
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if PHP modifier is trusted.
- *
- * @param string $modifier_name
- * @param object $compiler compiler object
- * @deprecated
- * @return boolean true if modifier is trusted
- */
- public function isTrustedPhpModifier($modifier_name, $compiler)
- {
- if (isset($this->php_modifiers)
- && (empty($this->php_modifiers) || in_array($modifier_name, $this->php_modifiers))
- ) {
- return true;
- }
- $compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting");
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if tag is trusted.
- *
- * @param string $tag_name
- * @param object $compiler compiler object
- *
- * @return boolean true if tag is trusted
- */
- public function isTrustedTag($tag_name, $compiler)
- {
- // check for internal always required tags
- if (in_array(
- $tag_name,
- array(
- 'assign', 'call', 'private_filter', 'private_block_plugin', 'private_function_plugin',
- 'private_object_block_function', 'private_object_function', 'private_registered_function',
- 'private_registered_block', 'private_special_variable', 'private_print_expression',
- 'private_modifier'
- )
- )
- ) {
- return true;
- }
- // check security settings
- if (empty($this->allowed_tags)) {
- if (empty($this->disabled_tags) || !in_array($tag_name, $this->disabled_tags)) {
- return true;
- } else {
- $compiler->trigger_template_error("tag '{$tag_name}' disabled by security setting", null, true);
- }
- } elseif (in_array($tag_name, $this->allowed_tags) && !in_array($tag_name, $this->disabled_tags)) {
- return true;
- } else {
- $compiler->trigger_template_error("tag '{$tag_name}' not allowed by security setting", null, true);
- }
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if special $smarty variable is trusted.
- *
- * @param string $var_name
- * @param object $compiler compiler object
- *
- * @return boolean true if tag is trusted
- */
- public function isTrustedSpecialSmartyVar($var_name, $compiler)
- {
- if (!in_array($var_name, $this->disabled_special_smarty_vars)) {
- return true;
- } else {
- $compiler->trigger_template_error(
- "special variable '\$smarty.{$var_name}' not allowed by security setting",
- null,
- true
- );
- }
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if modifier plugin is trusted.
- *
- * @param string $modifier_name
- * @param object $compiler compiler object
- *
- * @return boolean true if tag is trusted
- */
- public function isTrustedModifier($modifier_name, $compiler)
- {
- // check for internal always allowed modifier
- if (in_array($modifier_name, array('default'))) {
- return true;
- }
- // check security settings
- if (empty($this->allowed_modifiers)) {
- if (empty($this->disabled_modifiers) || !in_array($modifier_name, $this->disabled_modifiers)) {
- return true;
- } else {
- $compiler->trigger_template_error(
- "modifier '{$modifier_name}' disabled by security setting",
- null,
- true
- );
- }
- } elseif (in_array($modifier_name, $this->allowed_modifiers)
- && !in_array($modifier_name, $this->disabled_modifiers)
- ) {
- return true;
- } else {
- $compiler->trigger_template_error(
- "modifier '{$modifier_name}' not allowed by security setting",
- null,
- true
- );
- }
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if constants are enabled or trusted
- *
- * @param string $const constant name
- * @param object $compiler compiler object
- *
- * @return bool
- */
- public function isTrustedConstant($const, $compiler)
- {
- if (in_array($const, array('true', 'false', 'null'))) {
- return true;
- }
- if (!empty($this->trusted_constants)) {
- if (!in_array(strtolower($const), $this->trusted_constants)) {
- $compiler->trigger_template_error("Security: access to constant '{$const}' not permitted");
- return false;
- }
- return true;
- }
- if ($this->allow_constants) {
- return true;
- }
- $compiler->trigger_template_error("Security: access to constants not permitted");
- return false;
- }
-
- /**
- * Check if stream is trusted.
- *
- * @param string $stream_name
- *
- * @return boolean true if stream is trusted
- * @throws SmartyException if stream is not trusted
- */
- public function isTrustedStream($stream_name)
- {
- if (isset($this->streams) && (empty($this->streams) || in_array($stream_name, $this->streams))) {
- return true;
- }
- throw new SmartyException("stream '{$stream_name}' not allowed by security setting");
- }
-
- /**
- * Check if directory of file resource is trusted.
- *
- * @param string $filepath
- * @param null|bool $isConfig
- *
- * @return bool true if directory is trusted
- * @throws \SmartyException if directory is not trusted
- */
- public function isTrustedResourceDir($filepath, $isConfig = null)
- {
- if ($this->_include_path_status !== $this->smarty->use_include_path) {
- $_dir =
- $this->smarty->use_include_path ? $this->smarty->ext->_getIncludePath->getIncludePathDirs($this->smarty) : array();
- if ($this->_include_dir !== $_dir) {
- $this->_updateResourceDir($this->_include_dir, $_dir);
- $this->_include_dir = $_dir;
- }
- $this->_include_path_status = $this->smarty->use_include_path;
- }
- $_dir = $this->smarty->getTemplateDir();
- if ($this->_template_dir !== $_dir) {
- $this->_updateResourceDir($this->_template_dir, $_dir);
- $this->_template_dir = $_dir;
- }
- $_dir = $this->smarty->getConfigDir();
- if ($this->_config_dir !== $_dir) {
- $this->_updateResourceDir($this->_config_dir, $_dir);
- $this->_config_dir = $_dir;
- }
- if ($this->_secure_dir !== $this->secure_dir) {
- $this->secure_dir = (array)$this->secure_dir;
- foreach ($this->secure_dir as $k => $d) {
- $this->secure_dir[ $k ] = $this->smarty->_realpath($d . DIRECTORY_SEPARATOR, true);
- }
- $this->_updateResourceDir($this->_secure_dir, $this->secure_dir);
- $this->_secure_dir = $this->secure_dir;
- }
- $addPath = $this->_checkDir($filepath, $this->_resource_dir);
- if ($addPath !== false) {
- $this->_resource_dir = array_merge($this->_resource_dir, $addPath);
- }
- return true;
- }
-
- /**
- * Check if URI (e.g. {fetch} or {html_image}) is trusted
- * To simplify things, isTrustedUri() resolves all input to "{$PROTOCOL}://{$HOSTNAME}".
- * So "http://username:password@hello.world.example.org:8080/some-path?some=query-string"
- * is reduced to "http://hello.world.example.org" prior to applying the patters from {@link $trusted_uri}.
- *
- * @param string $uri
- *
- * @return boolean true if URI is trusted
- * @throws SmartyException if URI is not trusted
- * @uses $trusted_uri for list of patterns to match against $uri
- */
- public function isTrustedUri($uri)
- {
- $_uri = parse_url($uri);
- if (!empty($_uri[ 'scheme' ]) && !empty($_uri[ 'host' ])) {
- $_uri = $_uri[ 'scheme' ] . '://' . $_uri[ 'host' ];
- foreach ($this->trusted_uri as $pattern) {
- if (preg_match($pattern, $_uri)) {
- return true;
- }
- }
- }
- throw new SmartyException("URI '{$uri}' not allowed by security setting");
- }
-
- /**
- * Remove old directories and its sub folders, add new directories
- *
- * @param array $oldDir
- * @param array $newDir
- */
- private function _updateResourceDir($oldDir, $newDir)
- {
- foreach ($oldDir as $directory) {
- // $directory = $this->smarty->_realpath($directory, true);
- $length = strlen($directory);
- foreach ($this->_resource_dir as $dir) {
- if (substr($dir, 0, $length) === $directory) {
- unset($this->_resource_dir[ $dir ]);
- }
- }
- }
- foreach ($newDir as $directory) {
- // $directory = $this->smarty->_realpath($directory, true);
- $this->_resource_dir[ $directory ] = true;
- }
- }
-
- /**
- * Check if file is inside a valid directory
- *
- * @param string $filepath
- * @param array $dirs valid directories
- *
- * @return array|bool
- * @throws \SmartyException
- */
- private function _checkDir($filepath, $dirs)
- {
- $directory = dirname($this->smarty->_realpath($filepath, true)) . DIRECTORY_SEPARATOR;
- $_directory = array();
- if (!preg_match('#[\\\\/][.][.][\\\\/]#', $directory)) {
- while (true) {
- // test if the directory is trusted
- if (isset($dirs[ $directory ])) {
- return $_directory;
- }
- // abort if we've reached root
- if (!preg_match('#[\\\\/][^\\\\/]+[\\\\/]$#', $directory)) {
- // give up
- break;
- }
- // remember the directory to add it to _resource_dir in case we're successful
- $_directory[ $directory ] = true;
- // bubble up one level
- $directory = preg_replace('#[\\\\/][^\\\\/]+[\\\\/]$#', DIRECTORY_SEPARATOR, $directory);
- }
- }
- // give up
- throw new SmartyException(sprintf('Smarty Security: not trusted file path \'%s\' ', $filepath));
- }
-
- /**
- * Loads security class and enables security
- *
- * @param \Smarty $smarty
- * @param string|Smarty_Security $security_class if a string is used, it must be class-name
- *
- * @return \Smarty current Smarty instance for chaining
- * @throws \SmartyException when an invalid class name is provided
- */
- public static function enableSecurity(Smarty $smarty, $security_class)
- {
- if ($security_class instanceof Smarty_Security) {
- $smarty->security_policy = $security_class;
- return $smarty;
- } elseif (is_object($security_class)) {
- throw new SmartyException("Class '" . get_class($security_class) . "' must extend Smarty_Security.");
- }
- if ($security_class === null) {
- $security_class = $smarty->security_class;
- }
- if (!class_exists($security_class)) {
- throw new SmartyException("Security class '$security_class' is not defined");
- } elseif ($security_class !== 'Smarty_Security' && !is_subclass_of($security_class, 'Smarty_Security')) {
- throw new SmartyException("Class '$security_class' must extend Smarty_Security.");
- } else {
- $smarty->security_policy = new $security_class($smarty);
- }
- return $smarty;
- }
-
- /**
- * Start template processing
- *
- * @param $template
- *
- * @throws SmartyException
- */
- public function startTemplate($template)
- {
- if ($this->max_template_nesting > 0 && $this->_current_template_nesting++ >= $this->max_template_nesting) {
- throw new SmartyException("maximum template nesting level of '{$this->max_template_nesting}' exceeded when calling '{$template->template_resource}'");
- }
- }
-
- /**
- * Exit template processing
- */
- public function endTemplate()
- {
- if ($this->max_template_nesting > 0) {
- $this->_current_template_nesting--;
- }
- }
-
- /**
- * Register callback functions call at start/end of template rendering
- *
- * @param \Smarty_Internal_Template $template
- */
- public function registerCallBacks(Smarty_Internal_Template $template)
- {
- $template->startRenderCallbacks[] = array($this, 'startTemplate');
- $template->endRenderCallbacks[] = array($this, 'endTemplate');
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php
deleted file mode 100644
index 508d27f36..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php
+++ /dev/null
@@ -1,257 +0,0 @@
-<?php
-/**
- * Created by PhpStorm.
- * User: Uwe Tews
- * Date: 04.12.2014
- * Time: 06:08
- */
-
-/**
- * Smarty Resource Data Object
- * Cache Data Container for Template Files
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-class Smarty_Template_Cached extends Smarty_Template_Resource_Base
-{
- /**
- * Cache Is Valid
- *
- * @var boolean
- */
- public $valid = null;
-
- /**
- * CacheResource Handler
- *
- * @var Smarty_CacheResource
- */
- public $handler = null;
-
- /**
- * Template Cache Id (Smarty_Internal_Template::$cache_id)
- *
- * @var string
- */
- public $cache_id = null;
-
- /**
- * saved cache lifetime in seconds
- *
- * @var integer
- */
- public $cache_lifetime = 0;
-
- /**
- * Id for cache locking
- *
- * @var string
- */
- public $lock_id = null;
-
- /**
- * flag that cache is locked by this instance
- *
- * @var bool
- */
- public $is_locked = false;
-
- /**
- * Source Object
- *
- * @var Smarty_Template_Source
- */
- public $source = null;
-
- /**
- * Nocache hash codes of processed compiled templates
- *
- * @var array
- */
- public $hashes = array();
-
- /**
- * Flag if this is a cache resource
- *
- * @var bool
- */
- public $isCache = true;
-
- /**
- * create Cached Object container
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @throws \SmartyException
- */
- public function __construct(Smarty_Internal_Template $_template)
- {
- $this->compile_id = $_template->compile_id;
- $this->cache_id = $_template->cache_id;
- $this->source = $_template->source;
- if (!class_exists('Smarty_CacheResource', false)) {
- include SMARTY_SYSPLUGINS_DIR . 'smarty_cacheresource.php';
- }
- $this->handler = Smarty_CacheResource::load($_template->smarty);
- }
-
- /**
- * @param Smarty_Internal_Template $_template
- *
- * @return Smarty_Template_Cached
- */
- public static function load(Smarty_Internal_Template $_template)
- {
- $_template->cached = new Smarty_Template_Cached($_template);
- $_template->cached->handler->populate($_template->cached, $_template);
- // caching enabled ?
- if (!$_template->caching || $_template->source->handler->recompiled
- ) {
- $_template->cached->valid = false;
- }
- return $_template->cached;
- }
-
- /**
- * Render cache template
- *
- * @param \Smarty_Internal_Template $_template
- * @param bool $no_output_filter
- *
- * @throws \Exception
- */
- public function render(Smarty_Internal_Template $_template, $no_output_filter = true)
- {
- if ($this->isCached($_template)) {
- if ($_template->smarty->debugging) {
- if (!isset($_template->smarty->_debug)) {
- $_template->smarty->_debug = new Smarty_Internal_Debug();
- }
- $_template->smarty->_debug->start_cache($_template);
- }
- if (!$this->processed) {
- $this->process($_template);
- }
- $this->getRenderedTemplateCode($_template);
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->end_cache($_template);
- }
- return;
- } else {
- $_template->smarty->ext->_updateCache->updateCache($this, $_template, $no_output_filter);
- }
- }
-
- /**
- * Check if cache is valid, lock cache if required
- *
- * @param \Smarty_Internal_Template $_template
- *
- * @return bool flag true if cache is valid
- */
- public function isCached(Smarty_Internal_Template $_template)
- {
- if ($this->valid !== null) {
- return $this->valid;
- }
- while (true) {
- while (true) {
- if ($this->exists === false || $_template->smarty->force_compile || $_template->smarty->force_cache) {
- $this->valid = false;
- } else {
- $this->valid = true;
- }
- if ($this->valid && $_template->caching === Smarty::CACHING_LIFETIME_CURRENT
- && $_template->cache_lifetime >= 0 && time() > ($this->timestamp + $_template->cache_lifetime)
- ) {
- // lifetime expired
- $this->valid = false;
- }
- if ($this->valid && $_template->compile_check === Smarty::COMPILECHECK_ON
- && $_template->source->getTimeStamp() > $this->timestamp
- ) {
- $this->valid = false;
- }
- if ($this->valid || !$_template->smarty->cache_locking) {
- break;
- }
- if (!$this->handler->locked($_template->smarty, $this)) {
- $this->handler->acquireLock($_template->smarty, $this);
- break 2;
- }
- $this->handler->populate($this, $_template);
- }
- if ($this->valid) {
- if (!$_template->smarty->cache_locking || $this->handler->locked($_template->smarty, $this) === null) {
- // load cache file for the following checks
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->start_cache($_template);
- }
- if ($this->handler->process($_template, $this) === false) {
- $this->valid = false;
- } else {
- $this->processed = true;
- }
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->end_cache($_template);
- }
- } else {
- $this->is_locked = true;
- continue;
- }
- } else {
- return $this->valid;
- }
- if ($this->valid && $_template->caching === Smarty::CACHING_LIFETIME_SAVED
- && $_template->cached->cache_lifetime >= 0
- && (time() > ($_template->cached->timestamp + $_template->cached->cache_lifetime))
- ) {
- $this->valid = false;
- }
- if ($_template->smarty->cache_locking) {
- if (!$this->valid) {
- $this->handler->acquireLock($_template->smarty, $this);
- } elseif ($this->is_locked) {
- $this->handler->releaseLock($_template->smarty, $this);
- }
- }
- return $this->valid;
- }
- return $this->valid;
- }
-
- /**
- * Process cached template
- *
- * @param Smarty_Internal_Template $_template template object
- * @param bool $update flag if called because cache update
- */
- public function process(Smarty_Internal_Template $_template, $update = false)
- {
- if ($this->handler->process($_template, $this, $update) === false) {
- $this->valid = false;
- }
- if ($this->valid) {
- $this->processed = true;
- } else {
- $this->processed = false;
- }
- }
-
- /**
- * Read cache content from handler
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string|false content
- */
- public function read(Smarty_Internal_Template $_template)
- {
- if (!$_template->source->handler->recompiled) {
- return $this->handler->readCachedContent($_template);
- }
- return false;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php
deleted file mode 100644
index b78a3b600..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php
+++ /dev/null
@@ -1,257 +0,0 @@
-<?php
-
-/**
- * Smarty Resource Data Object
- * Meta Data Container for Template Files
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- * @property string $content compiled content
- */
-class Smarty_Template_Compiled extends Smarty_Template_Resource_Base
-{
- /**
- * nocache hash
- *
- * @var string|null
- */
- public $nocache_hash = null;
-
- /**
- * get a Compiled Object of this source
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return Smarty_Template_Compiled compiled object
- */
- public static function load($_template)
- {
- $compiled = new Smarty_Template_Compiled();
- if ($_template->source->handler->hasCompiledHandler) {
- $_template->source->handler->populateCompiledFilepath($compiled, $_template);
- } else {
- $compiled->populateCompiledFilepath($_template);
- }
- return $compiled;
- }
-
- /**
- * populate Compiled Object with compiled filepath
- *
- * @param Smarty_Internal_Template $_template template object
- **/
- public function populateCompiledFilepath(Smarty_Internal_Template $_template)
- {
- $source = &$_template->source;
- $smarty = &$_template->smarty;
- $this->filepath = $smarty->getCompileDir();
- if (isset($_template->compile_id)) {
- $this->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) .
- ($smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^');
- }
- // if use_sub_dirs, break file into directories
- if ($smarty->use_sub_dirs) {
- $this->filepath .= $source->uid[ 0 ] . $source->uid[ 1 ] . DIRECTORY_SEPARATOR . $source->uid[ 2 ] .
- $source->uid[ 3 ] . DIRECTORY_SEPARATOR . $source->uid[ 4 ] . $source->uid[ 5 ] .
- DIRECTORY_SEPARATOR;
- }
- $this->filepath .= $source->uid . '_';
- if ($source->isConfig) {
- $this->filepath .= (int)$smarty->config_read_hidden + (int)$smarty->config_booleanize * 2 +
- (int)$smarty->config_overwrite * 4;
- } else {
- $this->filepath .= (int)$smarty->merge_compiled_includes + (int)$smarty->escape_html * 2 +
- (($smarty->merge_compiled_includes && $source->type === 'extends') ?
- (int)$smarty->extends_recursion * 4 : 0);
- }
- $this->filepath .= '.' . $source->type;
- $basename = $source->handler->getBasename($source);
- if (!empty($basename)) {
- $this->filepath .= '.' . $basename;
- }
- if ($_template->caching) {
- $this->filepath .= '.cache';
- }
- $this->filepath .= '.php';
- $this->timestamp = $this->exists = is_file($this->filepath);
- if ($this->exists) {
- $this->timestamp = filemtime($this->filepath);
- }
- }
-
- /**
- * render compiled template code
- *
- * @param Smarty_Internal_Template $_template
- *
- * @return void
- * @throws Exception
- */
- public function render(Smarty_Internal_Template $_template)
- {
- // checks if template exists
- if (!$_template->source->exists) {
- $type = $_template->source->isConfig ? 'config' : 'template';
- throw new SmartyException("Unable to load {$type} '{$_template->source->type}:{$_template->source->name}'");
- }
- if ($_template->smarty->debugging) {
- if (!isset($_template->smarty->_debug)) {
- $_template->smarty->_debug = new Smarty_Internal_Debug();
- }
- $_template->smarty->_debug->start_render($_template);
- }
- if (!$this->processed) {
- $this->process($_template);
- }
- if (isset($_template->cached)) {
- $_template->cached->file_dependency =
- array_merge($_template->cached->file_dependency, $this->file_dependency);
- }
- if ($_template->source->handler->uncompiled) {
- $_template->source->handler->renderUncompiled($_template->source, $_template);
- } else {
- $this->getRenderedTemplateCode($_template);
- }
- if ($_template->caching && $this->has_nocache_code) {
- $_template->cached->hashes[ $this->nocache_hash ] = true;
- }
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->end_render($_template);
- }
- }
-
- /**
- * load compiled template or compile from source
- *
- * @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
- *
- * @throws Exception
- */
- public function process(Smarty_Internal_Template $_smarty_tpl)
- {
- $source = &$_smarty_tpl->source;
- $smarty = &$_smarty_tpl->smarty;
- if ($source->handler->recompiled) {
- $source->handler->process($_smarty_tpl);
- } elseif (!$source->handler->uncompiled) {
- if (!$this->exists || $smarty->force_compile
- || ($_smarty_tpl->compile_check && $source->getTimeStamp() > $this->getTimeStamp())
- ) {
- $this->compileTemplateSource($_smarty_tpl);
- $compileCheck = $_smarty_tpl->compile_check;
- $_smarty_tpl->compile_check = Smarty::COMPILECHECK_OFF;
- $this->loadCompiledTemplate($_smarty_tpl);
- $_smarty_tpl->compile_check = $compileCheck;
- } else {
- $_smarty_tpl->mustCompile = true;
- @include $this->filepath;
- if ($_smarty_tpl->mustCompile) {
- $this->compileTemplateSource($_smarty_tpl);
- $compileCheck = $_smarty_tpl->compile_check;
- $_smarty_tpl->compile_check = Smarty::COMPILECHECK_OFF;
- $this->loadCompiledTemplate($_smarty_tpl);
- $_smarty_tpl->compile_check = $compileCheck;
- }
- }
- $_smarty_tpl->_subTemplateRegister();
- $this->processed = true;
- }
- }
-
- /**
- * compile template from source
- *
- * @param Smarty_Internal_Template $_template
- *
- * @throws Exception
- */
- public function compileTemplateSource(Smarty_Internal_Template $_template)
- {
- $this->file_dependency = array();
- $this->includes = array();
- $this->nocache_hash = null;
- $this->unifunc = null;
- // compile locking
- if ($saved_timestamp = (!$_template->source->handler->recompiled && is_file($this->filepath))) {
- $saved_timestamp = $this->getTimeStamp();
- touch($this->filepath);
- }
- // compile locking
- try {
- // call compiler
- $_template->loadCompiler();
- $this->write($_template, $_template->compiler->compileTemplate($_template));
- } catch (Exception $e) {
- // restore old timestamp in case of error
- if ($saved_timestamp && is_file($this->filepath)) {
- touch($this->filepath, $saved_timestamp);
- }
- unset($_template->compiler);
- throw $e;
- }
- // release compiler object to free memory
- unset($_template->compiler);
- }
-
- /**
- * Write compiled code by handler
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $code compiled code
- *
- * @return bool success
- * @throws \SmartyException
- */
- public function write(Smarty_Internal_Template $_template, $code)
- {
- if (!$_template->source->handler->recompiled) {
- if ($_template->smarty->ext->_writeFile->writeFile($this->filepath, $code, $_template->smarty) === true) {
- $this->timestamp = $this->exists = is_file($this->filepath);
- if ($this->exists) {
- $this->timestamp = filemtime($this->filepath);
- return true;
- }
- }
- return false;
- }
- return true;
- }
-
- /**
- * Read compiled content from handler
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string content
- */
- public function read(Smarty_Internal_Template $_template)
- {
- if (!$_template->source->handler->recompiled) {
- return file_get_contents($this->filepath);
- }
- return isset($this->content) ? $this->content : false;
- }
-
- /**
- * Load fresh compiled template by including the PHP file
- * HHVM requires a work around because of a PHP incompatibility
- *
- * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
- */
- private function loadCompiledTemplate(Smarty_Internal_Template $_smarty_tpl)
- {
- if (function_exists('opcache_invalidate')
- && (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1)
- ) {
- opcache_invalidate($this->filepath, true);
- } elseif (function_exists('apc_compile_file')) {
- apc_compile_file($this->filepath);
- }
- if (defined('HHVM_VERSION')) {
- eval('?>' . file_get_contents($this->filepath));
- } else {
- include $this->filepath;
- }
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
deleted file mode 100644
index 850ae32e7..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/**
- * Smarty Config Source Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- */
-
-/**
- * Smarty Config Resource Data Object
- * Meta Data Container for Template Files
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- */
-class Smarty_Template_Config extends Smarty_Template_Source
-{
- /**
- * array of section names, single section or null
- *
- * @var null|string|array
- */
- public $config_sections = null;
-
- /**
- * scope into which the config variables shall be loaded
- *
- * @var int
- */
- public $scope = 0;
-
- /**
- * Flag that source is a config file
- *
- * @var bool
- */
- public $isConfig = true;
-
- /**
- * Name of the Class to compile this resource's contents with
- *
- * @var string
- */
- public $compiler_class = 'Smarty_Internal_Config_File_Compiler';
-
- /**
- * Name of the Class to tokenize this resource's contents with
- *
- * @var string
- */
- public $template_lexer_class = 'Smarty_Internal_Configfilelexer';
-
- /**
- * Name of the Class to parse this resource's contents with
- *
- * @var string
- */
- public $template_parser_class = 'Smarty_Internal_Configfileparser';
-
- /**
- * initialize Source Object for given resource
- * Either [$_template] or [$smarty, $template_resource] must be specified
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty $smarty smarty object
- * @param string $template_resource resource identifier
- *
- * @return Smarty_Template_Config Source Object
- * @throws SmartyException
- */
- public static function load(
- Smarty_Internal_Template $_template = null,
- Smarty $smarty = null,
- $template_resource = null
- ) {
- static $_incompatible_resources = array('extends' => true, 'php' => true);
- if ($_template) {
- $smarty = $_template->smarty;
- $template_resource = $_template->template_resource;
- }
- if (empty($template_resource)) {
- throw new SmartyException('Source: Missing name');
- }
- // parse resource_name, load resource handler
- list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $smarty->default_config_type);
- // make sure configs are not loaded via anything smarty can't handle
- if (isset($_incompatible_resources[ $type ])) {
- throw new SmartyException("Unable to use resource '{$type}' for config");
- }
- $source = new Smarty_Template_Config($smarty, $template_resource, $type, $name);
- $source->handler->populate($source, $_template);
- if (!$source->exists && isset($smarty->default_config_handler_func)) {
- Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
- $source->handler->populate($source, $_template);
- }
- return $source;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php
deleted file mode 100644
index 52bfba252..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-/**
- * Smarty Template Resource Base Object
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-abstract class Smarty_Template_Resource_Base
-{
- /**
- * Compiled Filepath
- *
- * @var string
- */
- public $filepath = null;
-
- /**
- * Compiled Timestamp
- *
- * @var integer|bool
- */
- public $timestamp = false;
-
- /**
- * Compiled Existence
- *
- * @var boolean
- */
- public $exists = false;
-
- /**
- * Template Compile Id (Smarty_Internal_Template::$compile_id)
- *
- * @var string
- */
- public $compile_id = null;
-
- /**
- * Compiled Content Loaded
- *
- * @var boolean
- */
- public $processed = false;
-
- /**
- * unique function name for compiled template code
- *
- * @var string
- */
- public $unifunc = '';
-
- /**
- * flag if template does contain nocache code sections
- *
- * @var bool
- */
- public $has_nocache_code = false;
-
- /**
- * resource file dependency
- *
- * @var array
- */
- public $file_dependency = array();
-
- /**
- * Content buffer
- *
- * @var string
- */
- public $content = null;
-
- /**
- * Included sub templates
- * - index name
- * - value use count
- *
- * @var int[]
- */
- public $includes = array();
-
- /**
- * Flag if this is a cache resource
- *
- * @var bool
- */
- public $isCache = false;
-
- /**
- * Process resource
- *
- * @param Smarty_Internal_Template $_template template object
- */
- abstract public function process(Smarty_Internal_Template $_template);
-
- /**
- * get rendered template content by calling compiled or cached template code
- *
- * @param \Smarty_Internal_Template $_template
- * @param string $unifunc function with template code
- *
- * @throws \Exception
- */
- public function getRenderedTemplateCode(Smarty_Internal_Template $_template, $unifunc = null)
- {
- $smarty = &$_template->smarty;
- $_template->isRenderingCache = $this->isCache;
- $level = ob_get_level();
- try {
- if (!isset($unifunc)) {
- $unifunc = $this->unifunc;
- }
- if (empty($unifunc) || !function_exists($unifunc)) {
- throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'");
- }
- if ($_template->startRenderCallbacks) {
- foreach ($_template->startRenderCallbacks as $callback) {
- call_user_func($callback, $_template);
- }
- }
- $unifunc($_template);
- foreach ($_template->endRenderCallbacks as $callback) {
- call_user_func($callback, $_template);
- }
- $_template->isRenderingCache = false;
- } catch (Exception $e) {
- $_template->isRenderingCache = false;
- while (ob_get_level() > $level) {
- ob_end_clean();
- }
- if (isset($smarty->security_policy)) {
- $smarty->security_policy->endTemplate();
- }
- throw $e;
- }
- }
-
- /**
- * Get compiled time stamp
- *
- * @return int
- */
- public function getTimeStamp()
- {
- if ($this->exists && !$this->timestamp) {
- $this->timestamp = filemtime($this->filepath);
- }
- return $this->timestamp;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
deleted file mode 100644
index 16b47f23c..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
+++ /dev/null
@@ -1,213 +0,0 @@
-<?php
-
-/**
- * Smarty Resource Data Object
- * Meta Data Container for Template Files
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-class Smarty_Template_Source
-{
- /**
- * Unique Template ID
- *
- * @var string
- */
- public $uid = null;
-
- /**
- * Template Resource (Smarty_Internal_Template::$template_resource)
- *
- * @var string
- */
- public $resource = null;
-
- /**
- * Resource Type
- *
- * @var string
- */
- public $type = null;
-
- /**
- * Resource Name
- *
- * @var string
- */
- public $name = null;
-
- /**
- * Source Filepath
- *
- * @var string
- */
- public $filepath = null;
-
- /**
- * Source Timestamp
- *
- * @var integer
- */
- public $timestamp = null;
-
- /**
- * Source Existence
- *
- * @var boolean
- */
- public $exists = false;
-
- /**
- * Source File Base name
- *
- * @var string
- */
- public $basename = null;
-
- /**
- * The Components an extended template is made of
- *
- * @var \Smarty_Template_Source[]
- */
- public $components = null;
-
- /**
- * Resource Handler
- *
- * @var \Smarty_Resource
- */
- public $handler = null;
-
- /**
- * Smarty instance
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * Resource is source
- *
- * @var bool
- */
- public $isConfig = false;
-
- /**
- * Template source content eventually set by default handler
- *
- * @var string
- */
- public $content = null;
-
- /**
- * Name of the Class to compile this resource's contents with
- *
- * @var string
- */
- public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
-
- /**
- * Name of the Class to tokenize this resource's contents with
- *
- * @var string
- */
- public $template_lexer_class = 'Smarty_Internal_Templatelexer';
-
- /**
- * Name of the Class to parse this resource's contents with
- *
- * @var string
- */
- public $template_parser_class = 'Smarty_Internal_Templateparser';
-
- /**
- * create Source Object container
- *
- * @param Smarty $smarty Smarty instance this source object belongs to
- * @param string $resource full template_resource
- * @param string $type type of resource
- * @param string $name resource name
- *
- * @throws \SmartyException
- * @internal param \Smarty_Resource $handler Resource Handler this source object communicates with
- */
- public function __construct(Smarty $smarty, $resource, $type, $name)
- {
- $this->handler =
- isset($smarty->_cache[ 'resource_handlers' ][ $type ]) ? $smarty->_cache[ 'resource_handlers' ][ $type ] :
- Smarty_Resource::load($smarty, $type);
- $this->smarty = $smarty;
- $this->resource = $resource;
- $this->type = $type;
- $this->name = $name;
- }
-
- /**
- * initialize Source Object for given resource
- * Either [$_template] or [$smarty, $template_resource] must be specified
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty $smarty smarty object
- * @param string $template_resource resource identifier
- *
- * @return Smarty_Template_Source Source Object
- * @throws SmartyException
- */
- public static function load(
- Smarty_Internal_Template $_template = null,
- Smarty $smarty = null,
- $template_resource = null
- ) {
- if ($_template) {
- $smarty = $_template->smarty;
- $template_resource = $_template->template_resource;
- }
- if (empty($template_resource)) {
- throw new SmartyException('Source: Missing name');
- }
- // parse resource_name, load resource handler, identify unique resource name
- if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]([\s\S]*)$/', $template_resource, $match)) {
- $type = $match[ 1 ];
- $name = $match[ 2 ];
- } else {
- // no resource given, use default
- // or single character before the colon is not a resource type, but part of the filepath
- $type = $smarty->default_resource_type;
- $name = $template_resource;
- }
- // create new source object
- $source = new Smarty_Template_Source($smarty, $template_resource, $type, $name);
- $source->handler->populate($source, $_template);
- if (!$source->exists && isset($_template->smarty->default_template_handler_func)) {
- Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
- $source->handler->populate($source, $_template);
- }
- return $source;
- }
-
- /**
- * Get source time stamp
- *
- * @return int
- */
- public function getTimeStamp()
- {
- if (!isset($this->timestamp)) {
- $this->handler->populateTimestamp($this);
- }
- return $this->timestamp;
- }
-
- /**
- * Get source content
- *
- * @return string
- * @throws \SmartyException
- */
- public function getContent()
- {
- return isset($this->content) ? $this->content : $this->handler->getContent($this);
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php
deleted file mode 100644
index 6d31a8a05..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/**
- * class for undefined variable object
- * This class defines an object for undefined variable handling
- *
- * @package Smarty
- * @subpackage Template
- */
-class Smarty_Undefined_Variable extends Smarty_Variable
-{
- /**
- * Returns null for not existing properties
- *
- * @param string $name
- *
- * @return null
- */
- public function __get($name)
- {
- return null;
- }
-
- /**
- * Always returns an empty string.
- *
- * @return string
- */
- public function __toString()
- {
- return '';
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_variable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_variable.php
deleted file mode 100644
index 6a534228b..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_variable.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/**
- * class for the Smarty variable object
- * This class defines the Smarty variable object
- *
- * @package Smarty
- * @subpackage Template
- */
-#[\AllowDynamicProperties]
-class Smarty_Variable
-{
- /**
- * template variable
- *
- * @var mixed
- */
- public $value = null;
-
- /**
- * if true any output of this variable will be not cached
- *
- * @var boolean
- */
- public $nocache = false;
-
- /**
- * create Smarty variable object
- *
- * @param mixed $value the value to assign
- * @param boolean $nocache if true any output of this variable will be not cached
- */
- public function __construct($value = null, $nocache = false)
- {
- $this->value = $value;
- $this->nocache = $nocache;
- }
-
- /**
- * <<magic>> String conversion
- *
- * @return string
- */
- public function __toString()
- {
- return (string)$this->value;
- }
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php b/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
deleted file mode 100644
index 0a0a32351..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-/**
- * Smarty compiler exception class
- *
- * @package Smarty
- */
-class SmartyCompilerException extends SmartyException
-{
- /**
- * The constructor of the exception
- *
- * @param string $message The Exception message to throw.
- * @param int $code The Exception code.
- * @param string|null $filename The filename where the exception is thrown.
- * @param int|null $line The line number where the exception is thrown.
- * @param Throwable|null $previous The previous exception used for the exception chaining.
- */
- public function __construct(
- string $message = "",
- int $code = 0,
- ?string $filename = null,
- ?int $line = null,
- Throwable $previous = null
- ) {
- parent::__construct($message, $code, $previous);
-
- // These are optional parameters, should be be overridden only when present!
- if ($filename) {
- $this->file = $filename;
- }
- if ($line) {
- $this->line = $line;
- }
- }
-
- /**
- * @return string
- */
- public function __toString()
- {
- return ' --> Smarty Compiler: ' . $this->message . ' <-- ';
- }
-
- /**
- * @param int $line
- */
- public function setLine($line)
- {
- $this->line = $line;
- }
-
- /**
- * The template source snippet relating to the error
- *
- * @type string|null
- */
- public $source = null;
-
- /**
- * The raw text of the error message
- *
- * @type string|null
- */
- public $desc = null;
-
- /**
- * The resource identifier or template name
- *
- * @type string|null
- */
- public $template = null;
-}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smartyexception.php b/vendor/smarty/smarty/libs/sysplugins/smartyexception.php
deleted file mode 100644
index 7f7b9aa43..000000000
--- a/vendor/smarty/smarty/libs/sysplugins/smartyexception.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/**
- * Smarty exception class
- *
- * @package Smarty
- */
-class SmartyException extends Exception
-{
- public static $escape = false;
-
- /**
- * @return string
- */
- public function __toString()
- {
- return ' --> Smarty: ' . (self::$escape ? htmlentities($this->message) : $this->message) . ' <-- ';
- }
-}
diff --git a/vendor/smarty/smarty/mkdocs.yml b/vendor/smarty/smarty/mkdocs.yml
index 66949b809..4fffe7d96 100644
--- a/vendor/smarty/smarty/mkdocs.yml
+++ b/vendor/smarty/smarty/mkdocs.yml
@@ -11,7 +11,7 @@ theme:
- navigation.tracking
icon:
logo: material/lightbulb-on
- favicon: images/favicon.ico
+ favicon: img/favicon.ico
extra:
version:
@@ -29,15 +29,15 @@ nav:
- 'Getting started':
- Introduction: 'getting-started.md'
- 'Upgrading from an older version': 'upgrading.md'
- - 'Designers':
+ - 'Language reference':
- 'Basic Syntax':
- Introduction: 'designers/language-basic-syntax/index.md'
- Comments: 'designers/language-basic-syntax/language-syntax-comments.md'
- Variables: 'designers/language-basic-syntax/language-syntax-variables.md'
- - Functions: 'designers/language-basic-syntax/language-syntax-functions.md'
+ - Operators: 'designers/language-basic-syntax/language-syntax-operators.md'
+ - Tags: 'designers/language-basic-syntax/language-syntax-tags.md'
- Attributes: 'designers/language-basic-syntax/language-syntax-attributes.md'
- Quotes: 'designers/language-basic-syntax/language-syntax-quotes.md'
- - Math: 'designers/language-basic-syntax/language-math.md'
- 'Escaping Smarty parsing': 'designers/language-basic-syntax/language-escaping.md'
- 'Variables':
- 'Introduction': 'designers/language-variables/index.md'
@@ -49,30 +49,43 @@ nav:
- 'Introduction': 'designers/language-modifiers/index.md'
- 'capitalize': 'designers/language-modifiers/language-modifier-capitalize.md'
- 'cat': 'designers/language-modifiers/language-modifier-cat.md'
+ - 'count': 'designers/language-modifiers/language-modifier-count.md'
- 'count_characters': 'designers/language-modifiers/language-modifier-count-characters.md'
- 'count_paragraphs': 'designers/language-modifiers/language-modifier-count-paragraphs.md'
- 'count_sentences': 'designers/language-modifiers/language-modifier-count-sentences.md'
- 'count_words': 'designers/language-modifiers/language-modifier-count-words.md'
- 'date_format': 'designers/language-modifiers/language-modifier-date-format.md'
+ - 'debug_print_var': 'designers/language-modifiers/language-modifier-debug-print-var.md'
- 'default': 'designers/language-modifiers/language-modifier-default.md'
- 'escape': 'designers/language-modifiers/language-modifier-escape.md'
- 'from_charset': 'designers/language-modifiers/language-modifier-from-charset.md'
- 'indent': 'designers/language-modifiers/language-modifier-indent.md'
+ - 'is_array': 'designers/language-modifiers/language-modifier-is_array.md'
+ - 'isset': 'designers/language-modifiers/language-modifier-isset.md'
+ - 'join': 'designers/language-modifiers/language-modifier-join.md'
+ - 'json_encode': 'designers/language-modifiers/language-modifier-json-encode.md'
- 'lower': 'designers/language-modifiers/language-modifier-lower.md'
+ - 'noprint': 'designers/language-modifiers/language-modifier-noprint.md'
+ - 'number_format': 'designers/language-modifiers/language-modifier-number-format.md'
- 'nl2br': 'designers/language-modifiers/language-modifier-nl2br.md'
+ - 'raw': 'designers/language-modifiers/language-modifier-raw.md'
- 'regex_replace': 'designers/language-modifiers/language-modifier-regex-replace.md'
- 'replace': 'designers/language-modifiers/language-modifier-replace.md'
+ - 'round': 'designers/language-modifiers/language-modifier-round.md'
- 'spacify': 'designers/language-modifiers/language-modifier-spacify.md'
+ - 'split': 'designers/language-modifiers/language-modifier-split.md'
+ - 'str_repeat': 'designers/language-modifiers/language-modifier-str-repeat.md'
- 'string_format': 'designers/language-modifiers/language-modifier-string-format.md'
- 'strip': 'designers/language-modifiers/language-modifier-strip.md'
- 'strip_tags': 'designers/language-modifiers/language-modifier-strip-tags.md'
+ - 'strlen': 'designers/language-modifiers/language-modifier-strlen.md'
+ - 'substr': 'designers/language-modifiers/language-modifier-substr.md'
- 'to_charset': 'designers/language-modifiers/language-modifier-to-charset.md'
- 'truncate': 'designers/language-modifiers/language-modifier-truncate.md'
- 'unescape': 'designers/language-modifiers/language-modifier-unescape.md'
- 'upper': 'designers/language-modifiers/language-modifier-upper.md'
- 'wordwrap': 'designers/language-modifiers/language-modifier-wordwrap.md'
- - 'designers/language-combining-modifiers.md'
- - 'Builtin Functions':
+ - 'Builtin Tags':
- 'Introduction': 'designers/language-builtin-functions/index.md'
- '{append}': 'designers/language-builtin-functions/language-function-append.md'
- '{assign}': 'designers/language-builtin-functions/language-function-assign.md'
@@ -95,7 +108,7 @@ nav:
- '{setfilter}': 'designers/language-builtin-functions/language-function-setfilter.md'
- '{strip}': 'designers/language-builtin-functions/language-function-strip.md'
- '{while}': 'designers/language-builtin-functions/language-function-while.md'
- - 'Custom Functions':
+ - 'Custom Tags':
- 'Introduction': 'designers/language-custom-functions/index.md'
- '{counter}': 'designers/language-custom-functions/language-function-counter.md'
- '{cycle}': 'designers/language-custom-functions/language-function-cycle.md'
@@ -114,12 +127,31 @@ nav:
- '{textformat}': 'designers/language-custom-functions/language-function-textformat.md'
- 'designers/config-files.md'
- 'designers/chapter-debugging-console.md'
- - 'Programmers':
- - 'programmers/charset.md'
- - 'programmers/smarty-constants.md'
- - 'programmers/api-variables.md'
- - 'programmers/api-functions.md'
- - 'programmers/caching.md'
- - 'programmers/resources.md'
- - 'programmers/advanced-features.md'
- - 'programmers/plugins.md' \ No newline at end of file
+ - 'API':
+ - 'Basics': 'api/basics.md'
+ - 'Configuring Smarty': 'api/configuring.md'
+ - 'Rendering a template': 'api/rendering.md'
+ - 'Using data in templates':
+ - 'Assigning variables': 'api/variables/assigning.md'
+ - 'Config files': 'api/variables/config-files.md'
+ - 'Using streams': 'api/variables/streams.md'
+ - 'Objects': 'api/variables/objects.md'
+ - 'Static class methods': 'api/variables/static-class-methods.md'
+ - 'Template inheritance': 'api/inheritance.md'
+ - 'Filters':
+ - 'Output filters': 'api/filters/output-filters.md'
+ - 'Prefilters': 'api/filters/prefilters.md'
+ - 'Postfilters': 'api/filters/postfilters.md'
+ - 'Template resources': 'api/resources.md'
+ - 'Caching':
+ - 'Basics': 'api/caching/basics.md'
+ - 'Multiple caches per template': 'api/caching/multiple-caches-per-template.md'
+ - 'Custom cache storage layers': 'api/caching/custom-storage-layers.md'
+ - 'Extending Smarty':
+ - 'Introduction': 'api/extending/introduction.md'
+ - 'Custom tags': 'api/extending/tags.md'
+ - 'Custom block tags': 'api/extending/block-tags.md'
+ - 'Custom modifiers': 'api/extending/modifiers.md'
+ - 'Creating an extension': 'api/extending/extensions.md'
+ - 'Security': 'api/security.md'
+
diff --git a/vendor/smarty/smarty/run-tests-for-all-php-versions.sh b/vendor/smarty/smarty/run-tests-for-all-php-versions.sh
index 79bebb8a6..efff5713d 100755
--- a/vendor/smarty/smarty/run-tests-for-all-php-versions.sh
+++ b/vendor/smarty/smarty/run-tests-for-all-php-versions.sh
@@ -5,11 +5,13 @@
# - ./run-tests-for-all-php-versions.sh --group 20221124
# - ./run-tests-for-all-php-versions.sh --exclude-group slow
-docker-compose run php71 ./run-tests.sh $@ && \
-docker-compose run php72 ./run-tests.sh $@ && \
-docker-compose run php73 ./run-tests.sh $@ && \
-docker-compose run php74 ./run-tests.sh $@ && \
-docker-compose run php80 ./run-tests.sh $@ && \
-docker-compose run php81 ./run-tests.sh $@ && \
-docker-compose run php82 ./run-tests.sh $@ && \
-docker-compose run php83 ./run-tests.sh $@
+COMPOSE_CMD="mutagen-compose"
+
+$COMPOSE_CMD run --rm php72 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php73 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php74 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php80 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php81 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php82 ./run-tests.sh $@
+$COMPOSE_CMD run --rm php83 ./run-tests.sh $@
+$COMPOSE_CMD run --rm php84 ./run-tests.sh $@
diff --git a/vendor/smarty/smarty/src/BlockHandler/Base.php b/vendor/smarty/smarty/src/BlockHandler/Base.php
new file mode 100644
index 000000000..e194f67b6
--- /dev/null
+++ b/vendor/smarty/smarty/src/BlockHandler/Base.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Smarty\BlockHandler;
+
+use Smarty\Template;
+
+abstract class Base implements BlockHandlerInterface {
+
+ /**
+ * @var bool
+ */
+ protected $cacheable = true;
+
+ abstract public function handle($params, $content, Template $template, &$repeat);
+
+ public function isCacheable(): bool {
+ return $this->cacheable;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/BlockHandler/BlockHandlerInterface.php b/vendor/smarty/smarty/src/BlockHandler/BlockHandlerInterface.php
new file mode 100644
index 000000000..9aa744ec7
--- /dev/null
+++ b/vendor/smarty/smarty/src/BlockHandler/BlockHandlerInterface.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Smarty\BlockHandler;
+
+use Smarty\Template;
+
+interface BlockHandlerInterface {
+ public function handle($params, $content, Template $template, &$repeat);
+ public function isCacheable(): bool;
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/BlockHandler/BlockPluginWrapper.php b/vendor/smarty/smarty/src/BlockHandler/BlockPluginWrapper.php
new file mode 100644
index 000000000..b6236a67e
--- /dev/null
+++ b/vendor/smarty/smarty/src/BlockHandler/BlockPluginWrapper.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Smarty\BlockHandler;
+
+use Smarty\Template;
+
+class BlockPluginWrapper extends Base {
+
+ private $callback;
+
+ public function __construct($callback, bool $cacheable = true) {
+ $this->callback = $callback;
+ $this->cacheable = $cacheable;
+ }
+
+ public function handle($params, $content, Template $template, &$repeat) {
+ return \call_user_func_array($this->callback, [$params, $content, &$template, &$repeat]);
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/BlockHandler/TextFormat.php b/vendor/smarty/smarty/src/BlockHandler/TextFormat.php
new file mode 100644
index 000000000..b4fa5acd4
--- /dev/null
+++ b/vendor/smarty/smarty/src/BlockHandler/TextFormat.php
@@ -0,0 +1,110 @@
+<?php
+
+namespace Smarty\BlockHandler;
+
+use Smarty\Smarty;
+use Smarty\Template;
+
+/**
+ * Smarty {textformat}{/textformat} block plugin
+ * Type: block function
+ * Name: textformat
+ * Purpose: format text a certain way with preset styles
+ * or custom wrap/indent settings
+ * Params:
+ *
+ * - style - string (email)
+ * - indent - integer (0)
+ * - wrap - integer (80)
+ * - wrap_char - string ("\n")
+ * - indent_char - string (" ")
+ * - wrap_boundary - boolean (true)
+ *
+ * @param array $params parameters
+ * @param string $content contents of the block
+ * @param Template $template template object
+ * @param boolean &$repeat repeat flag
+ *
+ * @return string content re-formatted
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @throws \Smarty\Exception
+ */
+class TextFormat implements BlockHandlerInterface {
+
+ public function handle($params, $content, Template $template, &$repeat) {
+ if (is_null($content)) {
+ return;
+ }
+ $style = null;
+ $indent = 0;
+ $indent_first = 0;
+ $indent_char = ' ';
+ $wrap = 80;
+ $wrap_char = "\n";
+ $wrap_cut = false;
+ $assign = null;
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'style':
+ case 'indent_char':
+ case 'wrap_char':
+ case 'assign':
+ $$_key = (string)$_val;
+ break;
+ case 'indent':
+ case 'indent_first':
+ case 'wrap':
+ $$_key = (int)$_val;
+ break;
+ case 'wrap_cut':
+ $$_key = (bool)$_val;
+ break;
+ default:
+ trigger_error("textformat: unknown attribute '{$_key}'");
+ }
+ }
+ if ($style === 'email') {
+ $wrap = 72;
+ }
+ // split into paragraphs
+ $_paragraphs = preg_split('![\r\n]{2}!', $content);
+ foreach ($_paragraphs as &$_paragraph) {
+ if (!$_paragraph) {
+ continue;
+ }
+ // convert mult. spaces & special chars to single space
+ $_paragraph =
+ preg_replace(
+ array(
+ '!\s+!' . Smarty::$_UTF8_MODIFIER,
+ '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER
+ ),
+ array(
+ ' ',
+ ''
+ ),
+ $_paragraph
+ );
+ // indent first line
+ if ($indent_first > 0) {
+ $_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph;
+ }
+ // wordwrap sentences
+ $_paragraph = smarty_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
+ // indent lines
+ if ($indent > 0) {
+ $_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph);
+ }
+ }
+ $_output = implode($wrap_char . $wrap_char, $_paragraphs);
+ if ($assign) {
+ $template->assign($assign, $_output);
+ } else {
+ return $_output;
+ }
+ }
+
+ public function isCacheable(): bool {
+ return true;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Cacheresource/Base.php b/vendor/smarty/smarty/src/Cacheresource/Base.php
new file mode 100644
index 000000000..41c4f6bc6
--- /dev/null
+++ b/vendor/smarty/smarty/src/Cacheresource/Base.php
@@ -0,0 +1,156 @@
+<?php
+
+namespace Smarty\Cacheresource;
+
+use Smarty\Exception;
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\Template\Cached;
+
+/**
+ * Cache Handler API
+ * @author Rodney Rehm
+ */
+abstract class Base
+{
+
+ /**
+ * populate Cached Object with metadata from Resource
+ *
+ * @param Cached $cached cached object
+ * @param Template $_template template object
+ *
+ * @return void
+ */
+ abstract public function populate(Cached $cached, Template $_template);
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Cached $cached
+ *
+ * @return void
+ */
+ abstract public function populateTimestamp(Cached $cached);
+
+ /**
+ * Read the cached template and process header
+ *
+ * @param Template $_template template object
+ * @param Cached|null $cached cached object
+ * @param boolean $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ abstract public function process(
+ Template $_template,
+ ?Cached $cached = null,
+ $update = false
+ );
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ abstract public function storeCachedContent(Template $_template, $content);
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Template $_template template object
+ *
+ * @return string content
+ */
+ abstract public function retrieveCachedContent(Template $_template);
+
+ /**
+ * Empty cache
+ *
+ * @param Smarty $smarty Smarty object
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ abstract public function clearAll(Smarty $smarty, $exp_time = null);
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ abstract public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time);
+
+ /**
+ * @param Smarty $smarty
+ * @param Cached $cached
+ *
+ * @return bool|null
+ */
+ public function locked(Smarty $smarty, Cached $cached)
+ {
+ // theoretically locking_timeout should be checked against time_limit (max_execution_time)
+ $start = microtime(true);
+ $hadLock = null;
+ while ($this->hasLock($smarty, $cached)) {
+ $hadLock = true;
+ if (microtime(true) - $start > $smarty->locking_timeout) {
+ // abort waiting for lock release
+ return false;
+ }
+ sleep(1);
+ }
+ return $hadLock;
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty
+ * @param Cached $cached
+ *
+ * @return bool
+ */
+ public function hasLock(Smarty $smarty, Cached $cached)
+ {
+ // check if lock exists
+ return false;
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty
+ * @param Cached $cached
+ *
+ * @return bool
+ */
+ public function acquireLock(Smarty $smarty, Cached $cached)
+ {
+ // create lock
+ return true;
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty
+ * @param Cached $cached
+ *
+ * @return bool
+ */
+ public function releaseLock(Smarty $smarty, Cached $cached)
+ {
+ // release lock
+ return true;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Cacheresource/Custom.php b/vendor/smarty/smarty/src/Cacheresource/Custom.php
new file mode 100644
index 000000000..f9eb858e4
--- /dev/null
+++ b/vendor/smarty/smarty/src/Cacheresource/Custom.php
@@ -0,0 +1,303 @@
+<?php
+
+namespace Smarty\Cacheresource;
+
+/**
+ * Smarty Internal Plugin
+ *
+
+
+ */
+
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\Template\Cached;
+
+/**
+ * Cache Handler API
+ *
+
+
+ * @author Rodney Rehm
+ */
+abstract class Custom extends Base
+{
+ /**
+ * fetch cached content and its modification time from data source
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $content cached content
+ * @param integer $mtime cache modification timestamp (epoch)
+ *
+ * @return void
+ */
+ abstract protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime);
+
+ /**
+ * Fetch cached content's modification timestamp from data source
+ * {@internal implementing this method is optional.
+ * Only implement it if modification times can be accessed faster than loading the complete cached content.}}
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ *
+ * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
+ */
+ protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
+ {
+ return false;
+ }
+
+ /**
+ * Save content to cache
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration or null
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ abstract protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content);
+
+ /**
+ * Delete content from cache
+ *
+ * @param string|null $name template name
+ * @param string|null $cache_id cache id
+ * @param string|null $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration time in seconds or null
+ *
+ * @return integer number of deleted caches
+ */
+ abstract protected function delete($name, $cache_id, $compile_id, $exp_time);
+
+ /**
+ * populate Cached Object with metadata from Resource
+ *
+ * @param \Smarty\Template\Cached $cached cached object
+ * @param Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(\Smarty\Template\Cached $cached, Template $_template)
+ {
+ $_cache_id = isset($cached->cache_id) ? preg_replace('![^\w\|]+!', '_', $cached->cache_id) : null;
+ $_compile_id = isset($cached->compile_id) ? preg_replace('![^\w]+!', '_', $cached->compile_id) : null;
+ $path = $cached->getSource()->uid . $_cache_id . $_compile_id;
+ $cached->filepath = sha1($path);
+ if ($_template->getSmarty()->cache_locking) {
+ $cached->lock_id = sha1('lock.' . $path);
+ }
+ $this->populateTimestamp($cached);
+ }
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param \Smarty\Template\Cached $cached
+ *
+ * @return void
+ */
+ public function populateTimestamp(\Smarty\Template\Cached $cached)
+ {
+ $mtime =
+ $this->fetchTimestamp($cached->filepath, $cached->getSource()->name, $cached->cache_id, $cached->compile_id);
+ if ($mtime !== null) {
+ $cached->timestamp = $mtime;
+ $cached->exists = !!$cached->timestamp;
+ return;
+ }
+ $timestamp = null;
+ $this->fetch(
+ $cached->filepath,
+ $cached->getSource()->name,
+ $cached->cache_id,
+ $cached->compile_id,
+ $cached->content,
+ $timestamp
+ );
+ $cached->timestamp = isset($timestamp) ? $timestamp : false;
+ $cached->exists = !!$cached->timestamp;
+ }
+
+ /**
+ * Read the cached template and process the header
+ *
+ * @param Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Cached|null $cached cached object
+ * @param boolean $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ public function process(
+ Template $_smarty_tpl,
+ ?\Smarty\Template\Cached $cached = null,
+ $update = false
+ ) {
+ if (!$cached) {
+ $cached = $_smarty_tpl->getCached();
+ }
+ $content = $cached->content ? $cached->content : null;
+ $timestamp = $cached->timestamp ? $cached->timestamp : null;
+ if ($content === null || !$timestamp) {
+ $this->fetch(
+ $_smarty_tpl->getCached()->filepath,
+ $_smarty_tpl->getSource()->name,
+ $_smarty_tpl->cache_id,
+ $_smarty_tpl->compile_id,
+ $content,
+ $timestamp
+ );
+ }
+ if (isset($content)) {
+ eval('?>' . $content);
+ $cached->content = null;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ public function storeCachedContent(Template $_template, $content)
+ {
+ return $this->save(
+ $_template->getCached()->filepath,
+ $_template->getSource()->name,
+ $_template->cache_id,
+ $_template->compile_id,
+ $_template->cache_lifetime,
+ $content
+ );
+ }
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Template $_template template object
+ *
+ * @return string|boolean content
+ */
+ public function retrieveCachedContent(Template $_template)
+ {
+ $content = $_template->getCached()->content ?: null;
+ if ($content === null) {
+ $timestamp = null;
+ $this->fetch(
+ $_template->getCached()->filepath,
+ $_template->getSource()->name,
+ $_template->cache_id,
+ $_template->compile_id,
+ $content,
+ $timestamp
+ );
+ }
+ if (isset($content)) {
+ return $content;
+ }
+ return false;
+ }
+
+ /**
+ * Empty cache
+ *
+ * @param \Smarty\Smarty $smarty Smarty object
+ * @param null $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clearAll(\Smarty\Smarty $smarty, $exp_time = null)
+ {
+ return $this->delete(null, null, null, $exp_time);
+ }
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @param \Smarty\Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return int number of cache files deleted
+ * @throws \Smarty\Exception
+ */
+ public function clear(\Smarty\Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+ {
+ $cache_name = null;
+ if (isset($resource_name)) {
+ $source = \Smarty\Template\Source::load(null, $smarty, $resource_name);
+ if ($source->exists) {
+ $cache_name = $source->name;
+ } else {
+ return 0;
+ }
+ }
+ return $this->delete($cache_name, $cache_id, $compile_id, $exp_time);
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Cached $cached cached object
+ *
+ * @return boolean true or false if cache is locked
+ */
+ public function hasLock(\Smarty\Smarty $smarty, \Smarty\Template\Cached $cached)
+ {
+ $id = $cached->lock_id;
+ $name = $cached->getSource()->name . '.lock';
+ $mtime = $this->fetchTimestamp($id, $name, $cached->cache_id, $cached->compile_id);
+ if ($mtime === null) {
+ $this->fetch($id, $name, $cached->cache_id, $cached->compile_id, $content, $mtime);
+ }
+ return $mtime && ($t = time()) - $mtime < $smarty->locking_timeout;
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param \Smarty\Smarty $smarty Smarty object
+ * @param \Smarty\Template\Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function acquireLock(\Smarty\Smarty $smarty, \Smarty\Template\Cached $cached)
+ {
+ $cached->is_locked = true;
+ $id = $cached->lock_id;
+ $name = $cached->getSource()->name . '.lock';
+ $this->save($id, $name, $cached->cache_id, $cached->compile_id, $smarty->locking_timeout, '');
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param \Smarty\Smarty $smarty Smarty object
+ * @param \Smarty\Template\Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function releaseLock(\Smarty\Smarty $smarty, \Smarty\Template\Cached $cached)
+ {
+ $cached->is_locked = false;
+ $name = $cached->getSource()->name . '.lock';
+ $this->delete($name, $cached->cache_id, $cached->compile_id, null);
+ }
+}
diff --git a/vendor/smarty/smarty/src/Cacheresource/File.php b/vendor/smarty/smarty/src/Cacheresource/File.php
new file mode 100644
index 000000000..4b4198ec2
--- /dev/null
+++ b/vendor/smarty/smarty/src/Cacheresource/File.php
@@ -0,0 +1,338 @@
+<?php
+
+namespace Smarty\Cacheresource;
+
+use RecursiveDirectoryIterator;
+use RecursiveIteratorIterator;
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\Template\Cached;
+
+/**
+ * Smarty Internal Plugin CacheResource File
+ *
+
+
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * This class does contain all necessary methods for the HTML cache on file system
+ * Implements the file system as resource for the HTML cache Version using nocache inserts.
+ */
+class File extends Base
+{
+ /**
+ * populate Cached Object with metadata from Resource
+ *
+ * @param Cached $cached cached object
+ * @param Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Cached $cached, Template $_template)
+ {
+ $source = $_template->getSource();
+ $smarty = $_template->getSmarty();
+ $_compile_dir_sep = $smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^';
+ $_filepath = $source->uid;
+ $cached->filepath = $smarty->getCacheDir();
+ if (isset($_template->cache_id)) {
+ $cached->filepath .= preg_replace(
+ array(
+ '![^\w|]+!',
+ '![|]+!'
+ ),
+ array(
+ '_',
+ $_compile_dir_sep
+ ),
+ $_template->cache_id
+ ) . $_compile_dir_sep;
+ }
+ if (isset($_template->compile_id)) {
+ $cached->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) . $_compile_dir_sep;
+ }
+ // if use_sub_dirs, break file into directories
+ if ($smarty->use_sub_dirs) {
+ $cached->filepath .= $_filepath[ 0 ] . $_filepath[ 1 ] . DIRECTORY_SEPARATOR . $_filepath[ 2 ] .
+ $_filepath[ 3 ] .
+ DIRECTORY_SEPARATOR .
+ $_filepath[ 4 ] . $_filepath[ 5 ] . DIRECTORY_SEPARATOR;
+ }
+ $cached->filepath .= $_filepath . '_' . $source->getBasename();
+
+ if ($smarty->cache_locking) {
+ $cached->lock_id = $cached->filepath . '.lock';
+ }
+ $cached->filepath .= '.php';
+ $cached->timestamp = $cached->exists = is_file($cached->filepath);
+ if ($cached->exists) {
+ $cached->timestamp = filemtime($cached->filepath);
+ }
+ }
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Cached $cached cached object
+ *
+ * @return void
+ */
+ public function populateTimestamp(Cached $cached)
+ {
+ $cached->timestamp = $cached->exists = is_file($cached->filepath);
+ if ($cached->exists) {
+ $cached->timestamp = filemtime($cached->filepath);
+ }
+ }
+
+ /**
+ * Read the cached template and process its header
+ *
+ * @param Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Cached|null $cached cached object
+ * @param bool $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ public function process(
+ Template $_smarty_tpl,
+ ?Cached $cached = null,
+ $update = false
+ ) {
+ $_smarty_tpl->getCached()->setValid(false);
+ if ($update && defined('HHVM_VERSION')) {
+ eval('?>' . file_get_contents($_smarty_tpl->getCached()->filepath));
+ return true;
+ } else {
+ return @include $_smarty_tpl->getCached()->filepath;
+ }
+ }
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return bool success
+ * @throws \Smarty\Exception
+ */
+ public function storeCachedContent(Template $_template, $content)
+ {
+ if ($_template->getSmarty()->writeFile($_template->getCached()->filepath, $content) === true) {
+ if (function_exists('opcache_invalidate')
+ && (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api'))) < 1
+ ) {
+ opcache_invalidate($_template->getCached()->filepath, true);
+ } elseif (function_exists('apc_compile_file')) {
+ apc_compile_file($_template->getCached()->filepath);
+ }
+ $cached = $_template->getCached();
+ $cached->timestamp = $cached->exists = is_file($cached->filepath);
+ if ($cached->exists) {
+ $cached->timestamp = filemtime($cached->filepath);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Template $_template template object
+ *
+ * @return string content
+ */
+ public function retrieveCachedContent(Template $_template)
+ {
+ if (is_file($_template->getCached()->filepath)) {
+ return file_get_contents($_template->getCached()->filepath);
+ }
+ return false;
+ }
+
+ /**
+ * Empty cache
+ *
+ * @param Smarty $smarty
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clearAll(Smarty $smarty, $exp_time = null)
+ {
+ return $this->clear($smarty, null, null, null, $exp_time);
+ }
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @param Smarty $smarty
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+ {
+ $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null;
+ $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
+ $_dir_sep = $smarty->use_sub_dirs ? '/' : '^';
+ $_compile_id_offset = $smarty->use_sub_dirs ? 3 : 0;
+ $_dir = $smarty->getCacheDir();
+ if ($_dir === '/') { //We should never want to delete this!
+ return 0;
+ }
+ $_dir_length = strlen($_dir);
+ if (isset($_cache_id)) {
+ $_cache_id_parts = explode('|', $_cache_id);
+ $_cache_id_parts_count = count($_cache_id_parts);
+ if ($smarty->use_sub_dirs) {
+ foreach ($_cache_id_parts as $id_part) {
+ $_dir .= $id_part . '/';
+ }
+ }
+ }
+ if (isset($resource_name)) {
+ $_save_stat = $smarty->caching;
+ $smarty->caching = \Smarty\Smarty::CACHING_LIFETIME_CURRENT;
+ $tpl = $smarty->doCreateTemplate($resource_name);
+ $smarty->caching = $_save_stat;
+ // remove from template cache
+ if ($tpl->getSource()->exists) {
+ $_resourcename_parts = basename(str_replace('^', '/', $tpl->getCached()->filepath));
+ } else {
+ return 0;
+ }
+ }
+ $_count = 0;
+ $_time = time();
+ if (file_exists($_dir)) {
+ $_cacheDirs = new RecursiveDirectoryIterator($_dir);
+ $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
+ foreach ($_cache as $_file) {
+ if (substr(basename($_file->getPathname()), 0, 1) === '.') {
+ continue;
+ }
+ $_filepath = (string)$_file;
+ // directory ?
+ if ($_file->isDir()) {
+ if (!$_cache->isDot()) {
+ // delete folder if empty
+ @rmdir($_file->getPathname());
+ }
+ } else {
+ // delete only php files
+ if (substr($_filepath, -4) !== '.php') {
+ continue;
+ }
+ $_parts = explode($_dir_sep, str_replace('\\', '/', substr($_filepath, $_dir_length)));
+ $_parts_count = count($_parts);
+ // check name
+ if (isset($resource_name)) {
+ if ($_parts[ $_parts_count - 1 ] !== $_resourcename_parts) {
+ continue;
+ }
+ }
+ // check compile id
+ if (isset($_compile_id) && (!isset($_parts[ $_parts_count - 2 - $_compile_id_offset ])
+ || $_parts[ $_parts_count - 2 - $_compile_id_offset ] !== $_compile_id)
+ ) {
+ continue;
+ }
+ // check cache id
+ if (isset($_cache_id)) {
+ // count of cache id parts
+ $_parts_count = (isset($_compile_id)) ? $_parts_count - 2 - $_compile_id_offset :
+ $_parts_count - 1 - $_compile_id_offset;
+ if ($_parts_count < $_cache_id_parts_count) {
+ continue;
+ }
+ for ($i = 0; $i < $_cache_id_parts_count; $i++) {
+ if ($_parts[ $i ] !== $_cache_id_parts[ $i ]) {
+ continue 2;
+ }
+ }
+ }
+ if (is_file($_filepath)) {
+ // expired ?
+ if (isset($exp_time)) {
+ if ($exp_time < 0) {
+ preg_match('#\'cache_lifetime\' =>\s*(\d*)#', file_get_contents($_filepath), $match);
+ if ($_time < (filemtime($_filepath) + $match[ 1 ])) {
+ continue;
+ }
+ } else {
+ if ($_time - filemtime($_filepath) < $exp_time) {
+ continue;
+ }
+ }
+ }
+ $_count += @unlink($_filepath) ? 1 : 0;
+ if (function_exists('opcache_invalidate')
+ && (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1)
+ ) {
+ opcache_invalidate($_filepath, true);
+ } elseif (function_exists('apc_delete_file')) {
+ apc_delete_file($_filepath);
+ }
+ }
+ }
+ }
+ }
+ return $_count;
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Cached $cached cached object
+ *
+ * @return boolean true or false if cache is locked
+ */
+ public function hasLock(Smarty $smarty, Cached $cached)
+ {
+ clearstatcache(true, $cached->lock_id ?? '');
+ if (null !== $cached->lock_id && is_file($cached->lock_id)) {
+ $t = filemtime($cached->lock_id);
+ return $t && (time() - $t < $smarty->locking_timeout);
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Cached $cached cached object
+ *
+ * @return void
+ */
+ public function acquireLock(Smarty $smarty, Cached $cached)
+ {
+ $cached->is_locked = true;
+ touch($cached->lock_id);
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Cached $cached cached object
+ *
+ * @return void
+ */
+ public function releaseLock(Smarty $smarty, Cached $cached)
+ {
+ $cached->is_locked = false;
+ @unlink($cached->lock_id);
+ }
+}
diff --git a/vendor/smarty/smarty/src/Cacheresource/KeyValueStore.php b/vendor/smarty/smarty/src/Cacheresource/KeyValueStore.php
new file mode 100644
index 000000000..1953bb20f
--- /dev/null
+++ b/vendor/smarty/smarty/src/Cacheresource/KeyValueStore.php
@@ -0,0 +1,541 @@
+<?php
+
+namespace Smarty\Cacheresource;
+
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\Template\Cached;
+
+/**
+ * Smarty Internal Plugin
+ *
+
+
+ */
+
+/**
+ * Smarty Cache Handler Base for Key/Value Storage Implementations
+ * This class implements the functionality required to use simple key/value stores
+ * for hierarchical cache groups. key/value stores like memcache or APC do not support
+ * wildcards in keys, therefore a cache group cannot be cleared like "a|*" - which
+ * is no problem to filesystem and RDBMS implementations.
+ * This implementation is based on the concept of invalidation. While one specific cache
+ * can be identified and cleared, any range of caches cannot be identified. For this reason
+ * each level of the cache group hierarchy can have its own value in the store. These values
+ * are nothing but microtimes, telling us when a particular cache group was cleared for the
+ * last time. These keys are evaluated for every cache read to determine if the cache has
+ * been invalidated since it was created and should hence be treated as inexistent.
+ * Although deep hierarchies are possible, they are not recommended. Try to keep your
+ * cache groups as shallow as possible. Anything up 3-5 parents should be ok. So
+ * »a|b|c« is a good depth where »a|b|c|d|e|f|g|h|i|j|k« isn't. Try to join correlating
+ * cache groups: if your cache groups look somewhat like »a|b|$page|$items|$whatever«
+ * consider using »a|b|c|$page-$items-$whatever« instead.
+ *
+
+
+ * @author Rodney Rehm
+ */
+abstract class KeyValueStore extends Base
+{
+ /**
+ * cache for contents
+ *
+ * @var array
+ */
+ protected $contents = array();
+
+ /**
+ * cache for timestamps
+ *
+ * @var array
+ */
+ protected $timestamps = array();
+
+ /**
+ * populate Cached Object with meta data from Resource
+ *
+ * @param Cached $cached cached object
+ * @param Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Cached $cached, Template $_template)
+ {
+ $cached->filepath = $_template->getSource()->uid . '#' . $this->sanitize($cached->getSource()->resource) . '#' .
+ $this->sanitize($cached->cache_id) . '#' . $this->sanitize($cached->compile_id);
+ $this->populateTimestamp($cached);
+ }
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Cached $cached cached object
+ *
+ * @return void
+ */
+ public function populateTimestamp(Cached $cached)
+ {
+ if (!$this->fetch(
+ $cached->filepath,
+ $cached->getSource()->name,
+ $cached->cache_id,
+ $cached->compile_id,
+ $content,
+ $timestamp,
+ $cached->getSource()->uid
+ )
+ ) {
+ return;
+ }
+ $cached->content = $content;
+ $cached->timestamp = (int)$timestamp;
+ $cached->exists = !!$cached->timestamp;
+ }
+
+ /**
+ * Read the cached template and process the header
+ *
+ * @param Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Cached|null $cached cached object
+ * @param boolean $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ public function process(
+ Template $_smarty_tpl,
+ ?Cached $cached = null,
+ $update = false
+ ) {
+ if (!$cached) {
+ $cached = $_smarty_tpl->getCached();
+ }
+ $content = $cached->content ?: null;
+ $timestamp = $cached->timestamp ?: null;
+ if ($content === null || !$timestamp) {
+ if (!$this->fetch(
+ $_smarty_tpl->getCached()->filepath,
+ $_smarty_tpl->getSource()->name,
+ $_smarty_tpl->cache_id,
+ $_smarty_tpl->compile_id,
+ $content,
+ $timestamp,
+ $_smarty_tpl->getSource()->uid
+ )
+ ) {
+ return false;
+ }
+ }
+ if (isset($content)) {
+ eval('?>' . $content);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ public function storeCachedContent(Template $_template, $content)
+ {
+ $this->addMetaTimestamp($content);
+ return $this->write(array($_template->getCached()->filepath => $content), $_template->cache_lifetime);
+ }
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Template $_template template object
+ *
+ * @return string|false content
+ */
+ public function retrieveCachedContent(Template $_template)
+ {
+ $content = $_template->getCached()->content ?: null;
+ $timestamp = null;
+ if ($content === null) {
+ if (!$this->fetch(
+ $_template->getCached()->filepath,
+ $_template->getSource()->name,
+ $_template->cache_id,
+ $_template->compile_id,
+ $content,
+ $timestamp,
+ $_template->getSource()->uid
+ )
+ ) {
+ return false;
+ }
+ }
+ if (isset($content)) {
+ return $content;
+ }
+ return false;
+ }
+
+ /**
+ * Empty cache
+ * {@internal the $exp_time argument is ignored altogether }}
+ *
+ * @param Smarty $smarty Smarty object
+ * @param integer $exp_time expiration time [being ignored]
+ *
+ * @return integer number of cache files deleted [always -1]
+ * @uses purge() to clear the whole store
+ * @uses invalidate() to mark everything outdated if purge() is inapplicable
+ */
+ public function clearAll(Smarty $smarty, $exp_time = null)
+ {
+ if (!$this->purge()) {
+ $this->invalidate(null);
+ }
+ return -1;
+ }
+
+ /**
+ * Empty cache for a specific template
+ * {@internal the $exp_time argument is ignored altogether}}
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time [being ignored]
+ *
+ * @return int number of cache files deleted [always -1]
+ * @throws \Smarty\Exception
+ * @uses buildCachedFilepath() to generate the CacheID
+ * @uses invalidate() to mark CacheIDs parent chain as outdated
+ * @uses delete() to remove CacheID from cache
+ */
+ public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+ {
+ $uid = $this->getTemplateUid($smarty, $resource_name);
+ $cid = $uid . '#' . $this->sanitize($resource_name) . '#' . $this->sanitize($cache_id) . '#' .
+ $this->sanitize($compile_id);
+ $this->delete(array($cid));
+ $this->invalidate($cid, $resource_name, $cache_id, $compile_id, $uid);
+ return -1;
+ }
+
+ /**
+ * Get template's unique ID
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ *
+ * @return string filepath of cache file
+ * @throws \Smarty\Exception
+ */
+ protected function getTemplateUid(Smarty $smarty, $resource_name)
+ {
+ if (isset($resource_name)) {
+ $source = \Smarty\Template\Source::load(null, $smarty, $resource_name);
+ if ($source->exists) {
+ return $source->uid;
+ }
+ }
+ return '';
+ }
+
+ /**
+ * Sanitize CacheID components
+ *
+ * @param string $string CacheID component to sanitize
+ *
+ * @return string sanitized CacheID component
+ */
+ protected function sanitize($string)
+ {
+ $string = trim((string)$string, '|');
+ if (!$string) {
+ return '';
+ }
+ return preg_replace('#[^\w\|]+#S', '_', $string);
+ }
+
+ /**
+ * Fetch and prepare a cache object.
+ *
+ * @param string $cid CacheID to fetch
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $content cached content
+ * @param integer &$timestamp cached timestamp (epoch)
+ * @param string $resource_uid resource's uid
+ *
+ * @return boolean success
+ */
+ protected function fetch(
+ $cid,
+ $resource_name = null,
+ $cache_id = null,
+ $compile_id = null,
+ &$content = null,
+ &$timestamp = null,
+ $resource_uid = null
+ ) {
+ $t = $this->read(array($cid));
+ $content = !empty($t[ $cid ]) ? $t[ $cid ] : null;
+ $timestamp = null;
+ if ($content && ($timestamp = $this->getMetaTimestamp($content))) {
+ $invalidated =
+ $this->getLatestInvalidationTimestamp($cid, $resource_name, $cache_id, $compile_id, $resource_uid);
+ if ($invalidated > $timestamp) {
+ $timestamp = null;
+ $content = null;
+ }
+ }
+ return !!$content;
+ }
+
+ /**
+ * Add current microtime to the beginning of $cache_content
+ * {@internal the header uses 8 Bytes, the first 4 Bytes are the seconds, the second 4 Bytes are the microseconds}}
+ *
+ * @param string &$content the content to be cached
+ */
+ protected function addMetaTimestamp(&$content)
+ {
+ $mt = explode(' ', microtime());
+ $ts = pack('NN', $mt[ 1 ], (int)($mt[ 0 ] * 100000000));
+ $content = $ts . $content;
+ }
+
+ /**
+ * Extract the timestamp the $content was cached
+ *
+ * @param string &$content the cached content
+ *
+ * @return float the microtime the content was cached
+ */
+ protected function getMetaTimestamp(&$content)
+ {
+ extract(unpack('N1s/N1m/a*content', $content));
+ /**
+ * @var int $s
+ * @var int $m
+ */
+ return $s + ($m / 100000000);
+ }
+
+ /**
+ * Invalidate CacheID
+ *
+ * @param string $cid CacheID
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's uid
+ *
+ * @return void
+ */
+ protected function invalidate(
+ $cid = null,
+ $resource_name = null,
+ $cache_id = null,
+ $compile_id = null,
+ $resource_uid = null
+ ) {
+ $now = microtime(true);
+ $key = null;
+ // invalidate everything
+ if (!$resource_name && !$cache_id && !$compile_id) {
+ $key = 'IVK#ALL';
+ } // invalidate all caches by template
+ else {
+ if ($resource_name && !$cache_id && !$compile_id) {
+ $key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name);
+ } // invalidate all caches by cache group
+ else {
+ if (!$resource_name && $cache_id && !$compile_id) {
+ $key = 'IVK#CACHE#' . $this->sanitize($cache_id);
+ } // invalidate all caches by compile id
+ else {
+ if (!$resource_name && !$cache_id && $compile_id) {
+ $key = 'IVK#COMPILE#' . $this->sanitize($compile_id);
+ } // invalidate by combination
+ else {
+ $key = 'IVK#CID#' . $cid;
+ }
+ }
+ }
+ }
+ $this->write(array($key => $now));
+ }
+
+ /**
+ * Determine the latest timestamp known to the invalidation chain
+ *
+ * @param string $cid CacheID to determine latest invalidation timestamp of
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's filepath
+ *
+ * @return float the microtime the CacheID was invalidated
+ */
+ protected function getLatestInvalidationTimestamp(
+ $cid,
+ $resource_name = null,
+ $cache_id = null,
+ $compile_id = null,
+ $resource_uid = null
+ ) {
+ // abort if there are no InvalidationKeys to check
+ if (!($_cid = $this->listInvalidationKeys($cid, $resource_name, $cache_id, $compile_id, $resource_uid))) {
+ return 0;
+ }
+ // there are no InValidationKeys
+ if (!($values = $this->read($_cid))) {
+ return 0;
+ }
+ // make sure we're dealing with floats
+ $values = array_map('floatval', $values);
+ return max($values);
+ }
+
+ /**
+ * Translate a CacheID into the list of applicable InvalidationKeys.
+ * Splits 'some|chain|into|an|array' into array( '#clearAll#', 'some', 'some|chain', 'some|chain|into', ... )
+ *
+ * @param string $cid CacheID to translate
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's filepath
+ *
+ * @return array list of InvalidationKeys
+ * @uses $invalidationKeyPrefix to prepend to each InvalidationKey
+ */
+ protected function listInvalidationKeys(
+ $cid,
+ $resource_name = null,
+ $cache_id = null,
+ $compile_id = null,
+ $resource_uid = null
+ ) {
+ $t = array('IVK#ALL');
+ $_name = $_compile = '#';
+ if ($resource_name) {
+ $_name .= $resource_uid . '#' . $this->sanitize($resource_name);
+ $t[] = 'IVK#TEMPLATE' . $_name;
+ }
+ if ($compile_id) {
+ $_compile .= $this->sanitize($compile_id);
+ $t[] = 'IVK#COMPILE' . $_compile;
+ }
+ $_name .= '#';
+ $cid = trim((string)$cache_id, '|');
+ if (!$cid) {
+ return $t;
+ }
+ $i = 0;
+ while (true) {
+ // determine next delimiter position
+ $i = strpos($cid, '|', $i);
+ // add complete CacheID if there are no more delimiters
+ if ($i === false) {
+ $t[] = 'IVK#CACHE#' . $cid;
+ $t[] = 'IVK#CID' . $_name . $cid . $_compile;
+ $t[] = 'IVK#CID' . $_name . $_compile;
+ break;
+ }
+ $part = substr($cid, 0, $i);
+ // add slice to list
+ $t[] = 'IVK#CACHE#' . $part;
+ $t[] = 'IVK#CID' . $_name . $part . $_compile;
+ // skip past delimiter position
+ $i++;
+ }
+ return $t;
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Cached $cached cached object
+ *
+ * @return boolean true or false if cache is locked
+ */
+ public function hasLock(Smarty $smarty, Cached $cached)
+ {
+ $key = 'LOCK#' . $cached->filepath;
+ $data = $this->read(array($key));
+ return $data && time() - $data[ $key ] < $smarty->locking_timeout;
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function acquireLock(Smarty $smarty, Cached $cached)
+ {
+ $cached->is_locked = true;
+ $key = 'LOCK#' . $cached->filepath;
+ $this->write(array($key => time()), $smarty->locking_timeout);
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Cached $cached cached object
+ *
+ * @return void
+ */
+ public function releaseLock(Smarty $smarty, Cached $cached)
+ {
+ $cached->is_locked = false;
+ $key = 'LOCK#' . $cached->filepath;
+ $this->delete(array($key));
+ }
+
+ /**
+ * Read values for a set of keys from cache
+ *
+ * @param array $keys list of keys to fetch
+ *
+ * @return array list of values with the given keys used as indexes
+ */
+ abstract protected function read(array $keys);
+
+ /**
+ * Save values for a set of keys to cache
+ *
+ * @param array $keys list of values to save
+ * @param int $expire expiration time
+ *
+ * @return boolean true on success, false on failure
+ */
+ abstract protected function write(array $keys, $expire = null);
+
+ /**
+ * Remove values from cache
+ *
+ * @param array $keys list of keys to delete
+ *
+ * @return boolean true on success, false on failure
+ */
+ abstract protected function delete(array $keys);
+
+ /**
+ * Remove *all* values from cache
+ *
+ * @return boolean true on success, false on failure
+ */
+ protected function purge()
+ {
+ return false;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Base.php b/vendor/smarty/smarty/src/Compile/Base.php
new file mode 100644
index 000000000..2d5c0c0ef
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Base.php
@@ -0,0 +1,233 @@
+<?php
+/**
+ * Smarty Internal Compile Plugin Base
+ * @author Uwe Tews
+ */
+namespace Smarty\Compile;
+
+use Smarty\Compiler\Template;
+use Smarty\Data;
+use Smarty\Exception;
+
+/**
+ * This class does extend all internal compile plugins
+ *
+
+
+ */
+abstract class Base implements CompilerInterface {
+
+ /**
+ * Array of names of required attribute required by tag
+ *
+ * @var array
+ */
+ protected $required_attributes = [];
+
+ /**
+ * Array of names of optional attribute required by tag
+ * use array('_any') if there is no restriction of attributes names
+ *
+ * @var array
+ */
+ protected $optional_attributes = [];
+
+ /**
+ * Shorttag attribute order defined by its names
+ *
+ * @var array
+ */
+ protected $shorttag_order = [];
+
+ /**
+ * Array of names of valid option flags
+ *
+ * @var array
+ */
+ protected $option_flags = ['nocache'];
+ /**
+ * @var bool
+ */
+ protected $cacheable = true;
+
+ public function isCacheable(): bool {
+ return $this->cacheable;
+ }
+
+ /**
+ * Converts attributes into parameter array strings
+ *
+ * @param array $_attr
+ *
+ * @return array
+ */
+ protected function formatParamsArray(array $_attr): array {
+ $_paramsArray = [];
+ foreach ($_attr as $_key => $_value) {
+ $_paramsArray[] = var_export($_key, true) . "=>" . $_value;
+ }
+ return $_paramsArray;
+ }
+
+ /**
+ * This function checks if the attributes passed are valid
+ * The attributes passed for the tag to compile are checked against the list of required and
+ * optional attributes. Required attributes must be present. Optional attributes are check against
+ * the corresponding list. The keyword '_any' specifies that any attribute will be accepted
+ * as valid
+ *
+ * @param object $compiler compiler object
+ * @param array $attributes attributes applied to the tag
+ *
+ * @return array of mapped attributes for further processing
+ */
+ protected function getAttributes($compiler, $attributes) {
+ $_indexed_attr = [];
+ $options = array_fill_keys($this->option_flags, true);
+ foreach ($attributes as $key => $mixed) {
+ // shorthand ?
+ if (!is_array($mixed)) {
+ // options flag ?
+ if (isset($options[trim($mixed, '\'"')])) {
+ $_indexed_attr[trim($mixed, '\'"')] = true;
+ // shorthand attribute ?
+ } elseif (isset($this->shorttag_order[$key])) {
+ $_indexed_attr[$this->shorttag_order[$key]] = $mixed;
+ } else {
+ // too many shorthands
+ $compiler->trigger_template_error('too many shorthand attributes', null, true);
+ }
+ // named attribute
+ } else {
+ foreach ($mixed as $k => $v) {
+ // options flag?
+ if (isset($options[$k])) {
+ if (is_bool($v)) {
+ $_indexed_attr[$k] = $v;
+ } else {
+ if (is_string($v)) {
+ $v = trim($v, '\'" ');
+ }
+
+ // Mapping array for boolean option value
+ static $optionMap = [1 => true, 0 => false, 'true' => true, 'false' => false];
+
+ if (isset($optionMap[$v])) {
+ $_indexed_attr[$k] = $optionMap[$v];
+ } else {
+ $compiler->trigger_template_error(
+ "illegal value '" . var_export($v, true) .
+ "' for options flag '{$k}'",
+ null,
+ true
+ );
+ }
+ }
+ // must be named attribute
+ } else {
+ $_indexed_attr[$k] = $v;
+ }
+ }
+ }
+ }
+ // check if all required attributes present
+ foreach ($this->required_attributes as $attr) {
+ if (!isset($_indexed_attr[$attr])) {
+ $compiler->trigger_template_error("missing '{$attr}' attribute", null, true);
+ }
+ }
+ // check for not allowed attributes
+ if ($this->optional_attributes !== ['_any']) {
+ $allowedAttributes = array_fill_keys(
+ array_merge(
+ $this->required_attributes,
+ $this->optional_attributes,
+ $this->option_flags
+ ),
+ true
+ );
+ foreach ($_indexed_attr as $key => $dummy) {
+ if (!isset($allowedAttributes[$key]) && $key !== 0) {
+ $compiler->trigger_template_error("unexpected '{$key}' attribute", null, true);
+ }
+ }
+ }
+ // default 'false' for all options flags not set
+ foreach ($this->option_flags as $flag) {
+ if (!isset($_indexed_attr[$flag])) {
+ $_indexed_attr[$flag] = false;
+ }
+ }
+
+ return $_indexed_attr;
+ }
+
+ /**
+ * Push opening tag name on stack
+ * Optionally additional data can be saved on stack
+ *
+ * @param Template $compiler compiler object
+ * @param string $openTag the opening tag's name
+ * @param mixed $data optional data saved
+ */
+ protected function openTag(Template $compiler, $openTag, $data = null) {
+ $compiler->openTag($openTag, $data);
+ }
+
+ /**
+ * Pop closing tag
+ * Raise an error if this stack-top doesn't match with expected opening tags
+ *
+ * @param Template $compiler compiler object
+ * @param array|string $expectedTag the expected opening tag names
+ *
+ * @return mixed any type the opening tag's name or saved data
+ */
+ protected function closeTag(Template $compiler, $expectedTag) {
+ return $compiler->closeTag($expectedTag);
+ }
+
+ /**
+ * @param mixed $scope
+ * @param array $invalidScopes
+ *
+ * @return int
+ * @throws Exception
+ */
+ protected function convertScope($scope): int {
+
+ static $scopes = [
+ 'local' => Data::SCOPE_LOCAL, // current scope
+ 'parent' => Data::SCOPE_PARENT, // parent scope (definition unclear)
+ 'tpl_root' => Data::SCOPE_TPL_ROOT, // highest template (keep going up until parent is not a template)
+ 'root' => Data::SCOPE_ROOT, // highest scope (definition unclear)
+ 'global' => Data::SCOPE_GLOBAL, // smarty object
+
+ 'smarty' => Data::SCOPE_SMARTY, // @deprecated alias of 'global'
+ ];
+
+ $_scopeName = trim($scope, '\'"');
+ if (is_numeric($_scopeName) && in_array($_scopeName, $scopes)) {
+ return (int) $_scopeName;
+ }
+
+ if (isset($scopes[$_scopeName])) {
+ return $scopes[$_scopeName];
+ }
+
+ $err = var_export($_scopeName, true);
+ throw new Exception("illegal value '{$err}' for \"scope\" attribute");
+ }
+
+ /**
+ * Compiles code for the tag
+ *
+ * @param array $args array with attributes from parser
+ * @param Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code as a string
+ * @throws \Smarty\CompilerException
+ */
+ abstract public function compile($args, Template $compiler, $parameter = array(), $tag = null, $function = null): string;
+}
diff --git a/vendor/smarty/smarty/src/Compile/BlockCompiler.php b/vendor/smarty/smarty/src/Compile/BlockCompiler.php
new file mode 100644
index 000000000..e7a8f310e
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/BlockCompiler.php
@@ -0,0 +1,228 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Block Plugin
+ * Compiles code for the execution of block plugin
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile;
+
+use Smarty\Compiler\Template;
+use Smarty\CompilerException;
+use Smarty\Exception;
+use Smarty\Smarty;
+
+/**
+ * Smarty Internal Plugin Compile Block Plugin Class
+ *
+ */
+class BlockCompiler extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $optional_attributes = ['_any'];
+
+ /**
+ * nesting level
+ *
+ * @var int
+ */
+ private $nesting = 0;
+
+
+ /**
+ * Compiles code for the execution of block plugin
+ *
+ * @param array $args array with attributes from parser
+ * @param Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of block plugin
+ * @param string $function PHP function name
+ *
+ * @return string compiled code
+ * @throws CompilerException
+ * @throws Exception
+ */
+ public function compile($args, Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+
+ if (!isset($tag[5]) || substr($tag, -5) !== 'close') {
+ $output = $this->compileOpeningTag($compiler, $args, $tag, $function);
+ } else {
+ $output = $this->compileClosingTag($compiler, $tag, $parameter, $function);
+ }
+ return $output;
+ }
+
+ /**
+ * Compiles code for the {$smarty.block.child} property
+ *
+ * @param Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws CompilerException
+ */
+ public function compileChild(\Smarty\Compiler\Template $compiler) {
+
+ if (!isset($compiler->_cache['blockNesting'])) {
+ $compiler->trigger_template_error(
+ "'{\$smarty.block.child}' used outside {block} tags ",
+ $compiler->getParser()->lex->taglineno
+ );
+ }
+ $compiler->_cache['blockParams'][$compiler->_cache['blockNesting']]['callsChild'] = true;
+ $compiler->suppressNocacheProcessing = true;
+
+ $output = "<?php \n";
+ $output .= '$_smarty_tpl->getInheritance()->callChild($_smarty_tpl, $this' . ");\n";
+ $output .= "?>\n";
+ return $output;
+ }
+
+ /**
+ * Compiles code for the {$smarty.block.parent} property
+ *
+ * @param Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws CompilerException
+ */
+ public function compileParent(\Smarty\Compiler\Template $compiler) {
+
+ if (!isset($compiler->_cache['blockNesting'])) {
+ $compiler->trigger_template_error(
+ "'{\$smarty.block.parent}' used outside {block} tags ",
+ $compiler->getParser()->lex->taglineno
+ );
+ }
+ $compiler->suppressNocacheProcessing = true;
+
+ $output = "<?php \n";
+ $output .= '$_smarty_tpl->getInheritance()->callParent($_smarty_tpl, $this' . ");\n";
+ $output .= "?>\n";
+ return $output;
+ }
+
+ /**
+ * Returns true if this block is cacheable.
+ *
+ * @param Smarty $smarty
+ * @param $function
+ *
+ * @return bool
+ */
+ protected function blockIsCacheable(\Smarty\Smarty $smarty, $function): bool {
+ return $smarty->getBlockHandler($function)->isCacheable();
+ }
+
+ /**
+ * Returns the code used for the isset check
+ *
+ * @param string $tag tag name
+ * @param string $function base tag or method name
+ *
+ * @return string
+ */
+ protected function getIsCallableCode($tag, $function): string {
+ return "\$_smarty_tpl->getSmarty()->getBlockHandler(" . var_export($function, true) . ")";
+ }
+
+ /**
+ * Returns the full code used to call the callback
+ *
+ * @param string $tag tag name
+ * @param string $function base tag or method name
+ *
+ * @return string
+ */
+ protected function getFullCallbackCode($tag, $function): string {
+ return "\$_smarty_tpl->getSmarty()->getBlockHandler(" . var_export($function, true) . ")->handle";
+ }
+
+ /**
+ * @param Template $compiler
+ * @param array $args
+ * @param string|null $tag
+ * @param string|null $function
+ *
+ * @return string
+ */
+ private function compileOpeningTag(Template $compiler, array $args, ?string $tag, ?string $function): string {
+
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $this->nesting++;
+ unset($_attr['nocache']);
+ $_params = 'array(' . implode(',', $this->formatParamsArray($_attr)) . ')';
+
+ if (!$this->blockIsCacheable($compiler->getSmarty(), $function)) {
+ $compiler->tag_nocache = true;
+ }
+
+ if ($compiler->tag_nocache) {
+ // push a {nocache} tag onto the stack to prevent caching of this block
+ $this->openTag($compiler, 'nocache');
+ }
+
+ $this->openTag($compiler, $tag, [$_params, $compiler->tag_nocache]);
+
+ // compile code
+ $output = "<?php \$_block_repeat=true;
+if (!" . $this->getIsCallableCode($tag, $function) .") {\nthrow new \\Smarty\\Exception('block tag \'{$tag}\' not callable or registered');\n}\n
+echo " . $this->getFullCallbackCode($tag, $function) . "({$_params}, null, \$_smarty_tpl, \$_block_repeat);
+while (\$_block_repeat) {
+ ob_start();
+?>";
+
+ return $output;
+ }
+
+ /**
+ * @param Template $compiler
+ * @param string $tag
+ * @param array $parameter
+ * @param string|null $function
+ *
+ * @return string
+ * @throws CompilerException
+ * @throws Exception
+ */
+ private function compileClosingTag(Template $compiler, string $tag, array $parameter, ?string $function): string {
+
+ // closing tag of block plugin, restore nocache
+ $base_tag = substr($tag, 0, -5);
+ [$_params, $nocache_pushed] = $this->closeTag($compiler, $base_tag);
+
+ // compile code
+ if (!isset($parameter['modifier_list'])) {
+ $mod_pre = $mod_post = $mod_content = '';
+ $mod_content2 = 'ob_get_clean()';
+ } else {
+ $mod_content2 = "\$_block_content{$this->nesting}";
+ $mod_content = "\$_block_content{$this->nesting} = ob_get_clean();\n";
+ $mod_pre = "ob_start();\n";
+ $mod_post = 'echo ' . $compiler->compileModifier($parameter['modifier_list'], 'ob_get_clean()')
+ . ";\n";
+ }
+ $output = "<?php {$mod_content}\$_block_repeat=false;\n{$mod_pre}";
+ $callback = $this->getFullCallbackCode($base_tag, $function);
+ $output .= "echo {$callback}({$_params}, {$mod_content2}, \$_smarty_tpl, \$_block_repeat);\n";
+ $output .= "{$mod_post}}\n?>";
+
+ if ($nocache_pushed) {
+ // pop the pushed virtual nocache tag
+ $this->closeTag($compiler, 'nocache');
+ $compiler->tag_nocache = true;
+ }
+
+ return $output;
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Compile/CompilerInterface.php b/vendor/smarty/smarty/src/Compile/CompilerInterface.php
new file mode 100644
index 000000000..5f2cc7ccc
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/CompilerInterface.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Smarty\Compile;
+
+/**
+ * This class does extend all internal compile plugins
+ *
+
+
+ */
+interface CompilerInterface {
+
+ /**
+ * Compiles code for the tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code as a string
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string;
+
+ public function isCacheable(): bool;
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/DefaultHandlerBlockCompiler.php b/vendor/smarty/smarty/src/Compile/DefaultHandlerBlockCompiler.php
new file mode 100644
index 000000000..394a6e76d
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/DefaultHandlerBlockCompiler.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Smarty\Compile;
+
+class DefaultHandlerBlockCompiler extends BlockCompiler {
+ /**
+ * @inheritDoc
+ */
+ protected function getIsCallableCode($tag, $function): string {
+ return "\$_smarty_tpl->getSmarty()->getRuntime('DefaultPluginHandler')->hasPlugin(" .
+ var_export($function, true) . ", 'block')";
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function getFullCallbackCode($tag, $function): string {
+ return "\$_smarty_tpl->getSmarty()->getRuntime('DefaultPluginHandler')->getCallback(" .
+ var_export($function, true) . ", 'block')";
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function blockIsCacheable(\Smarty\Smarty $smarty, $function): bool {
+ return true;
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/DefaultHandlerFunctionCallCompiler.php b/vendor/smarty/smarty/src/Compile/DefaultHandlerFunctionCallCompiler.php
new file mode 100644
index 000000000..e6d11384e
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/DefaultHandlerFunctionCallCompiler.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace Smarty\Compile;
+
+use Smarty\Compiler\Template;
+
+class DefaultHandlerFunctionCallCompiler extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ public $optional_attributes = ['_any'];
+
+ /**
+ * Compiles code for the execution of a registered function
+ *
+ * @param array $args array with attributes from parser
+ * @param Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of tag
+ * @param string $function name of function
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ * @throws \Smarty\Exception
+ */
+ public function compile($args, Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ unset($_attr['nocache']);
+
+ $_paramsArray = $this->formatParamsArray($_attr);
+ $_params = 'array(' . implode(',', $_paramsArray) . ')';
+
+ $output = "\$_smarty_tpl->getSmarty()->getRuntime('DefaultPluginHandler')->getCallback(" . var_export($function, true) .
+ ",'function')($_params, \$_smarty_tpl)";
+
+ if (!empty($parameter['modifierlist'])) {
+ $output = $compiler->compileModifier($parameter['modifierlist'], $output);
+ }
+ return "<?php echo {$output};?>\n";
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/FunctionCallCompiler.php b/vendor/smarty/smarty/src/Compile/FunctionCallCompiler.php
new file mode 100644
index 000000000..107dd98bb
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/FunctionCallCompiler.php
@@ -0,0 +1,79 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Registered Function
+ * Compiles code for the execution of a registered function
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile;
+
+use Smarty\Compiler\Template;
+use Smarty\CompilerException;
+
+/**
+ * Smarty Internal Plugin Compile Registered Function Class
+ *
+
+
+ */
+class FunctionCallCompiler extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ public $optional_attributes = ['_any'];
+
+ /**
+ * Shorttag attribute order defined by its names
+ *
+ * @var array
+ */
+ protected $shorttag_order = [];
+
+ /**
+ * Compiles code for the execution of a registered function
+ *
+ * @param array $args array with attributes from parser
+ * @param Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of tag
+ * @param string $function name of function
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ * @throws \Smarty\Exception
+ */
+ public function compile($args, Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ unset($_attr['nocache']);
+
+ $_paramsArray = $this->formatParamsArray($_attr);
+ $_params = 'array(' . implode(',', $_paramsArray) . ')';
+
+
+ if ($functionHandler = $compiler->getSmarty()->getFunctionHandler($function)) {
+
+ // not cacheable?
+ $compiler->tag_nocache = $compiler->tag_nocache || !$functionHandler->isCacheable();
+ $output = "\$_smarty_tpl->getSmarty()->getFunctionHandler(" . var_export($function, true) . ")";
+ $output .= "->handle($_params, \$_smarty_tpl)";
+ } else {
+ $compiler->trigger_template_error("unknown function '{$function}'", null, true);
+ }
+
+ if (!empty($parameter['modifierlist'])) {
+ $output = $compiler->compileModifier($parameter['modifierlist'], $output);
+ }
+
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/BCPluginWrapper.php b/vendor/smarty/smarty/src/Compile/Modifier/BCPluginWrapper.php
new file mode 100644
index 000000000..0147651fd
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/BCPluginWrapper.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Smarty\Compile\Modifier;
+
+class BCPluginWrapper extends Base {
+
+ private $callback;
+
+ public function __construct($callback) {
+ $this->callback = $callback;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return call_user_func($this->callback, $params, $compiler);
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/Base.php b/vendor/smarty/smarty/src/Compile/Modifier/Base.php
new file mode 100644
index 000000000..2ae572287
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/Base.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Smarty\Compile\Modifier;
+
+use Smarty\Exception;
+
+abstract class Base implements ModifierCompilerInterface {
+
+ /**
+ * Compiles code for the modifier
+ *
+ * @param array $params array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ abstract public function compile($params, \Smarty\Compiler\Template $compiler);
+
+ /**
+ * evaluate compiler parameter
+ *
+ * @param array $params parameter array as given to the compiler function
+ * @param integer $index array index of the parameter to convert
+ * @param mixed $default value to be returned if the parameter is not present
+ *
+ * @return mixed evaluated value of parameter or $default
+ * @throws Exception if parameter is not a literal (but an expression, variable, …)
+ * @author Rodney Rehm
+ */
+ protected function literal_compiler_param($params, $index, $default = null)
+ {
+ // not set, go default
+ if (!isset($params[ $index ])) {
+ return $default;
+ }
+ // test if param is a literal
+ if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[ $index ])) {
+ throw new Exception(
+ '$param[' . $index .
+ '] is not a literal and is thus not evaluatable at compile time'
+ );
+ }
+ $t = null;
+ eval("\$t = " . $params[ $index ] . ";");
+ return $t;
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/CatModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/CatModifierCompiler.php
new file mode 100644
index 000000000..21005d5be
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/CatModifierCompiler.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Smarty\Compile\Modifier;
+
+/**
+ * Smarty cat modifier plugin
+ * Type: modifier
+ * Name: cat
+ * Date: Feb 24, 2003
+ * Purpose: catenate a value to a variable
+ * Input: string to catenate
+ * Example: {$var|cat:"foo"}
+ *
+ * @author Uwe Tews
+ */
+
+class CatModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return '(' . implode(').(', $params) . ')';
+ }
+
+}
+
+
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/CountCharactersModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/CountCharactersModifierCompiler.php
new file mode 100644
index 000000000..fb5f5ca33
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/CountCharactersModifierCompiler.php
@@ -0,0 +1,21 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty count_characters modifier plugin
+ * Type: modifier
+ * Name: count_characters
+ * Purpose: count the number of characters in a text
+ *
+ * @author Uwe Tews
+ */
+
+class CountCharactersModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ if (!isset($params[ 1 ]) || $params[ 1 ] !== 'true') {
+ return 'preg_match_all(\'/[^\s]/' . \Smarty\Smarty::$_UTF8_MODIFIER . '\',' . $params[ 0 ] . ', $tmp)';
+ }
+ return 'mb_strlen((string) ' . $params[ 0 ] . ', \'' . addslashes(\Smarty\Smarty::$_CHARSET) . '\')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/CountParagraphsModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/CountParagraphsModifierCompiler.php
new file mode 100644
index 000000000..76552e073
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/CountParagraphsModifierCompiler.php
@@ -0,0 +1,19 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty count_paragraphs modifier plugin
+ * Type: modifier
+ * Name: count_paragraphs
+ * Purpose: count the number of paragraphs in a text
+ *
+ * @author Uwe Tews
+ */
+
+class CountParagraphsModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ // count \r or \n characters
+ return '(preg_match_all(\'#[\r\n]+#\', ' . $params[ 0 ] . ', $tmp)+1)';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/CountSentencesModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/CountSentencesModifierCompiler.php
new file mode 100644
index 000000000..bc7c43e1c
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/CountSentencesModifierCompiler.php
@@ -0,0 +1,19 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty count_sentences modifier plugin
+ * Type: modifier
+ * Name: count_sentences
+ * Purpose: count the number of sentences in a text
+ *
+ * @author Uwe Tews
+ */
+
+class CountSentencesModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ // find periods, question marks, exclamation marks with a word before but not after.
+ return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . \Smarty\Smarty::$_UTF8_MODIFIER . '", ' . $params[ 0 ] . ', $tmp)';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/CountWordsModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/CountWordsModifierCompiler.php
new file mode 100644
index 000000000..c11d546d4
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/CountWordsModifierCompiler.php
@@ -0,0 +1,20 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty count_words modifier plugin
+ * Type: modifier
+ * Name: count_words
+ * Purpose: count the number of words in a text
+ *
+ * @author Uwe Tews
+ */
+
+class CountWordsModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ // expression taken from http://de.php.net/manual/en/function.str-word-count.php#85592
+ return 'preg_match_all(\'/\p{L}[\p{L}\p{Mn}\p{Pd}\\\'\x{2019}]*/' . \Smarty\Smarty::$_UTF8_MODIFIER . '\', ' .
+ $params[ 0 ] . ', $tmp)';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/DefaultModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/DefaultModifierCompiler.php
new file mode 100644
index 000000000..3d82aa70c
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/DefaultModifierCompiler.php
@@ -0,0 +1,26 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty default modifier plugin
+ * Type: modifier
+ * Name: default
+ * Purpose: designate default value for empty variables
+ *
+ * @author Uwe Tews
+ */
+
+class DefaultModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ $output = $params[ 0 ];
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = "''";
+ }
+ array_shift($params);
+ foreach ($params as $param) {
+ $output = '(($tmp = ' . $output . ' ?? null)===null||$tmp===\'\' ? ' . $param . ' ?? null : $tmp)';
+ }
+ return $output;
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/EmptyModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/EmptyModifierCompiler.php
new file mode 100644
index 000000000..6bb6c11c4
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/EmptyModifierCompiler.php
@@ -0,0 +1,19 @@
+<?php
+namespace Smarty\Compile\Modifier;
+use Smarty\CompilerException;
+
+/**
+ * Smarty empty modifier plugin
+ */
+class EmptyModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+
+ if (count($params) !== 1) {
+ throw new CompilerException("Invalid number of arguments for empty. empty expects exactly 1 parameter.");
+ }
+
+ return 'empty(' . $params[0] . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/EscapeModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/EscapeModifierCompiler.php
new file mode 100644
index 000000000..4352359f0
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/EscapeModifierCompiler.php
@@ -0,0 +1,66 @@
+<?php
+namespace Smarty\Compile\Modifier;
+
+use Smarty\Exception;
+
+/**
+ * Smarty escape modifier plugin
+ * Type: modifier
+ * Name: escape
+ * Purpose: escape string for output
+ *
+ * @author Rodney Rehm
+ */
+
+class EscapeModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ try {
+ $esc_type = $this->literal_compiler_param($params, 1, 'html');
+ $char_set = $this->literal_compiler_param($params, 2, \Smarty\Smarty::$_CHARSET);
+ $double_encode = $this->literal_compiler_param($params, 3, true);
+ if (!$char_set) {
+ $char_set = \Smarty\Smarty::$_CHARSET;
+ }
+ switch ($esc_type) {
+ case 'html':
+ case 'force':
+ // in case of auto-escaping, and without the 'force' option, no double-escaping
+ if ($compiler->getSmarty()->escape_html && $esc_type != 'force')
+ return $params[0];
+ // otherwise, escape the variable
+ return 'htmlspecialchars((string)' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ', ' .
+ var_export($double_encode, true) . ')';
+ // no break
+ case 'htmlall':
+ $compiler->setRawOutput(true);
+ return 'htmlentities(mb_convert_encoding((string)' . $params[ 0 ] . ', \'UTF-8\', ' .
+ var_export($char_set, true) . '), ENT_QUOTES, \'UTF-8\', ' .
+ var_export($double_encode, true) . ')';
+ // no break
+ case 'url':
+ $compiler->setRawOutput(true);
+ return 'rawurlencode((string)' . $params[ 0 ] . ')';
+ case 'urlpathinfo':
+ $compiler->setRawOutput(true);
+ return 'str_replace("%2F", "/", rawurlencode((string)' . $params[ 0 ] . '))';
+ case 'quotes':
+ $compiler->setRawOutput(true);
+ // escape unescaped single quotes
+ return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'", (string)' . $params[ 0 ] . ')';
+ case 'javascript':
+ $compiler->setRawOutput(true);
+ // escape quotes and backslashes, newlines, etc.
+ // see https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements
+ return 'strtr((string)' .
+ $params[ 0 ] .
+ ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r",
+ "\\n" => "\\\n", "</" => "<\/", "<!--" => "<\!--", "<s" => "<\s", "<S" => "<\S",
+ "`" => "\\\\`", "\${" => "\\\\\\$\\{"))';
+ }
+ } catch (Exception $e) {
+ // pass through to regular plugin fallback
+ }
+ return '$_smarty_tpl->getSmarty()->getModifierCallback(\'escape\')(' . join(', ', $params) . ')';
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/FromCharsetModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/FromCharsetModifierCompiler.php
new file mode 100644
index 000000000..606fedf94
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/FromCharsetModifierCompiler.php
@@ -0,0 +1,21 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty from_charset modifier plugin
+ * Type: modifier
+ * Name: from_charset
+ * Purpose: convert character encoding from $charset to internal encoding
+ *
+ * @author Rodney Rehm
+ */
+
+class FromCharsetModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = '"ISO-8859-1"';
+ }
+ return 'mb_convert_encoding(' . $params[ 0 ] . ', "' . addslashes(\Smarty\Smarty::$_CHARSET) . '", ' . $params[ 1 ] . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/IndentModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/IndentModifierCompiler.php
new file mode 100644
index 000000000..353e757f0
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/IndentModifierCompiler.php
@@ -0,0 +1,24 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty indent modifier plugin
+ * Type: modifier
+ * Name: indent
+ * Purpose: indent lines of text
+ *
+ * @author Uwe Tews
+ */
+
+class IndentModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = 4;
+ }
+ if (!isset($params[ 2 ])) {
+ $params[ 2 ] = "' '";
+ }
+ return 'preg_replace(\'!^!m\',str_repeat(' . $params[ 2 ] . ',' . $params[ 1 ] . '),' . $params[ 0 ] . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/IsArrayModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/IsArrayModifierCompiler.php
new file mode 100644
index 000000000..0e66bb521
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/IsArrayModifierCompiler.php
@@ -0,0 +1,19 @@
+<?php
+namespace Smarty\Compile\Modifier;
+use Smarty\CompilerException;
+
+/**
+ * Smarty is_array modifier plugin
+ */
+class IsArrayModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+
+ if (count($params) !== 1) {
+ throw new CompilerException("Invalid number of arguments for is_array. is_array expects exactly 1 parameter.");
+ }
+
+ return 'is_array(' . $params[0] . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/IssetModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/IssetModifierCompiler.php
new file mode 100644
index 000000000..0962fbfa3
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/IssetModifierCompiler.php
@@ -0,0 +1,25 @@
+<?php
+namespace Smarty\Compile\Modifier;
+use Smarty\CompilerException;
+
+/**
+ * Smarty isset modifier plugin
+ */
+class IssetModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+
+ $params = array_filter($params, function($v) { return !empty($v); });
+
+ if (count($params) < 1) {
+ throw new CompilerException("Invalid number of arguments for isset. isset expects at least one parameter.");
+ }
+
+ $tests = [];
+ foreach ($params as $param) {
+ $tests[] = 'null !== (' . $param . ' ?? null)';
+ }
+ return '(' . implode(' && ', $tests) . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/JsonEncodeModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/JsonEncodeModifierCompiler.php
new file mode 100644
index 000000000..4f191a31f
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/JsonEncodeModifierCompiler.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Smarty\Compile\Modifier;
+
+/**
+ * Smarty json_encode modifier plugin
+ */
+class JsonEncodeModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return 'json_encode(' . $params[0] . (isset($params[1]) ? ', (int) ' . $params[1] : '') . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/LowerModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/LowerModifierCompiler.php
new file mode 100644
index 000000000..62fc87e90
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/LowerModifierCompiler.php
@@ -0,0 +1,19 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty lower modifier plugin
+ * Type: modifier
+ * Name: lower
+ * Purpose: convert string to lowercase
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ */
+
+class LowerModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return 'mb_strtolower((string) ' . $params[ 0 ] . ', \'' . addslashes(\Smarty\Smarty::$_CHARSET) . '\')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/ModifierCompilerInterface.php b/vendor/smarty/smarty/src/Compile/Modifier/ModifierCompilerInterface.php
new file mode 100644
index 000000000..0a39b819a
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/ModifierCompilerInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Smarty\Compile\Modifier;
+
+interface ModifierCompilerInterface {
+
+ /**
+ * Compiles code for the modifier
+ *
+ * @param array $params array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($params, \Smarty\Compiler\Template $compiler);
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/Nl2brModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/Nl2brModifierCompiler.php
new file mode 100644
index 000000000..c3b1aa533
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/Nl2brModifierCompiler.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty nl2br modifier plugin
+ * Type: modifier
+ * Name: nl2br
+ * Purpose: insert HTML line breaks before all newlines in a string
+ *
+ */
+
+class Nl2brModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return 'nl2br((string) ' . $params[0] . ', (bool) ' . ($params[1] ?? true) . ')';
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/NoPrintModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/NoPrintModifierCompiler.php
new file mode 100644
index 000000000..c9401cfe0
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/NoPrintModifierCompiler.php
@@ -0,0 +1,18 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty noprint modifier plugin
+ * Type: modifier
+ * Name: noprint
+ * Purpose: return an empty string
+ *
+ * @author Uwe Tews
+ */
+
+class NoPrintModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return "''";
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/RawModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/RawModifierCompiler.php
new file mode 100644
index 000000000..c001bb1d4
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/RawModifierCompiler.php
@@ -0,0 +1,21 @@
+<?php
+namespace Smarty\Compile\Modifier;
+
+use Smarty\Exception;
+
+/**
+ * Smarty raw modifier plugin
+ * Type: modifier
+ * Name: raw
+ * Purpose: when escaping is enabled by default, generates a raw output of a variable
+ *
+ * @author Amaury Bouchard
+ */
+
+class RawModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ $compiler->setRawOutput(true);
+ return ($params[0]);
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/RoundModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/RoundModifierCompiler.php
new file mode 100644
index 000000000..82476833e
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/RoundModifierCompiler.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty round modifier plugin
+ * Type: modifier
+ * Name: round
+ * Purpose: Returns the rounded value of num to specified precision (number of digits after the decimal point)
+ *
+ */
+
+class RoundModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return 'round((float) ' . $params[0] . ', (int) ' . ($params[1] ?? 0) . ', (int) ' . ($params[2] ?? PHP_ROUND_HALF_UP) . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/StrRepeatModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/StrRepeatModifierCompiler.php
new file mode 100644
index 000000000..c33af3299
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/StrRepeatModifierCompiler.php
@@ -0,0 +1,17 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty str_repeat modifier plugin
+ * Type: modifier
+ * Name: str_repeat
+ * Purpose: returns string repeated times times
+ *
+ */
+
+class StrRepeatModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return 'str_repeat((string) ' . $params[0] . ', (int) ' . $params[1] . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/StringFormatModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/StringFormatModifierCompiler.php
new file mode 100644
index 000000000..e662f0164
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/StringFormatModifierCompiler.php
@@ -0,0 +1,18 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty string_format modifier plugin
+ * Type: modifier
+ * Name: string_format
+ * Purpose: format strings via sprintf
+ *
+ * @author Uwe Tews
+ */
+
+class StringFormatModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return 'sprintf(' . $params[ 1 ] . ',' . $params[ 0 ] . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/StripModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/StripModifierCompiler.php
new file mode 100644
index 000000000..d85f83df3
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/StripModifierCompiler.php
@@ -0,0 +1,24 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty strip modifier plugin
+ * Type: modifier
+ * Name: strip
+ * Purpose: Replace all repeated spaces, newlines, tabs
+ * with a single space or supplied replacement string.
+ * Example: {$var|strip} {$var|strip:"&nbsp;"}
+ * Date: September 25th, 2002
+ *
+ * @author Uwe Tews
+ */
+
+class StripModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = "' '";
+ }
+ return "preg_replace('!\s+!" . \Smarty\Smarty::$_UTF8_MODIFIER . "', {$params[1]},{$params[0]})";
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/StripTagsModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/StripTagsModifierCompiler.php
new file mode 100644
index 000000000..dfd09437a
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/StripTagsModifierCompiler.php
@@ -0,0 +1,22 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty strip_tags modifier plugin
+ * Type: modifier
+ * Name: strip_tags
+ * Purpose: strip html tags from text
+ *
+ * @author Uwe Tews
+ */
+
+class StripTagsModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ if (!isset($params[ 1 ]) || $params[ 1 ] === true || trim($params[ 1 ], '"') === 'true') {
+ return "preg_replace('!<[^>]*?>!', ' ', (string) {$params[0]})";
+ } else {
+ return 'strip_tags((string) ' . $params[ 0 ] . ')';
+ }
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/StrlenModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/StrlenModifierCompiler.php
new file mode 100644
index 000000000..5cc666fd5
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/StrlenModifierCompiler.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty strlen modifier plugin
+ * Type: modifier
+ * Name: strlen
+ * Purpose: return the length of the given string
+ *
+ */
+
+class StrlenModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return 'strlen((string) ' . $params[0] . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/SubstrModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/SubstrModifierCompiler.php
new file mode 100644
index 000000000..8fb33ed77
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/SubstrModifierCompiler.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Smarty\Compile\Modifier;
+
+/**
+ * Smarty substr modifier plugin
+ */
+class SubstrModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return 'substr((string) ' . $params[0] . ', (int) ' . $params[1] .
+ (isset($params[2]) ? ', (int) ' . $params[2] : '') . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/ToCharsetModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/ToCharsetModifierCompiler.php
new file mode 100644
index 000000000..67a5709d9
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/ToCharsetModifierCompiler.php
@@ -0,0 +1,21 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty to_charset modifier plugin
+ * Type: modifier
+ * Name: to_charset
+ * Purpose: convert character encoding from internal encoding to $charset
+ *
+ * @author Rodney Rehm
+ */
+
+class ToCharsetModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = '"ISO-8859-1"';
+ }
+ return 'mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 1 ] . ', "' . addslashes(\Smarty\Smarty::$_CHARSET) . '")';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/UnescapeModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/UnescapeModifierCompiler.php
new file mode 100644
index 000000000..1844ceb95
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/UnescapeModifierCompiler.php
@@ -0,0 +1,34 @@
+<?php
+namespace Smarty\Compile\Modifier;
+
+/**
+ * Smarty unescape modifier plugin
+ * Type: modifier
+ * Name: unescape
+ * Purpose: unescape html entities
+ *
+ * @author Rodney Rehm
+ */
+
+class UnescapeModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ $esc_type = $this->literal_compiler_param($params, 1, 'html');
+
+ if (!isset($params[ 2 ])) {
+ $params[ 2 ] = '\'' . addslashes(\Smarty\Smarty::$_CHARSET) . '\'';
+ }
+
+ switch ($esc_type) {
+ case 'entity':
+ case 'htmlall':
+ return 'html_entity_decode(mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 2 ] . ', \'UTF-8\'), ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ' . $params[ 2 ] . ')';
+ case 'html':
+ return 'htmlspecialchars_decode(' . $params[ 0 ] . ', ENT_QUOTES)';
+ case 'url':
+ return 'rawurldecode(' . $params[ 0 ] . ')';
+ default:
+ return $params[ 0 ];
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/UpperModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/UpperModifierCompiler.php
new file mode 100644
index 000000000..74e9a7024
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/UpperModifierCompiler.php
@@ -0,0 +1,18 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty upper modifier plugin
+ * Type: modifier
+ * Name: lower
+ * Purpose: convert string to uppercase
+ *
+ * @author Uwe Tews
+ */
+
+class UpperModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ return 'mb_strtoupper((string) ' . $params[ 0 ] . ' ?? \'\', \'' . addslashes(\Smarty\Smarty::$_CHARSET) . '\')';
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Compile/Modifier/WordWrapModifierCompiler.php b/vendor/smarty/smarty/src/Compile/Modifier/WordWrapModifierCompiler.php
new file mode 100644
index 000000000..092b95a80
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Modifier/WordWrapModifierCompiler.php
@@ -0,0 +1,27 @@
+<?php
+namespace Smarty\Compile\Modifier;
+/**
+ * Smarty wordwrap modifier plugin
+ * Type: modifier
+ * Name: wordwrap
+ * Purpose: wrap a string of text at a given length
+ *
+ * @author Uwe Tews
+ */
+
+class WordWrapModifierCompiler extends Base {
+
+ public function compile($params, \Smarty\Compiler\Template $compiler) {
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = 80;
+ }
+ if (!isset($params[ 2 ])) {
+ $params[ 2 ] = '"\n"';
+ }
+ if (!isset($params[ 3 ])) {
+ $params[ 3 ] = 'false';
+ }
+ return 'smarty_mb_wordwrap(' . $params[ 0 ] . ',' . $params[ 1 ] . ',' . $params[ 2 ] . ',' . $params[ 3 ] . ')';
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/ModifierCompiler.php b/vendor/smarty/smarty/src/Compile/ModifierCompiler.php
new file mode 100644
index 000000000..dfec3d777
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/ModifierCompiler.php
@@ -0,0 +1,95 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Modifier
+ * Compiles code for modifier execution
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile;
+
+use Smarty\Compile\Base;
+use Smarty\Compiler\Template;
+use Smarty\CompilerException;
+
+/**
+ * Smarty Internal Plugin Compile Modifier Class
+ *
+
+
+ */
+class ModifierCompiler extends Base {
+
+ /**
+ * Compiles code for modifier execution
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ * @throws \Smarty\Exception
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+
+ $output = $parameter['value'];
+
+ // loop over list of modifiers
+ foreach ($parameter['modifierlist'] as $single_modifier) {
+ /* @var string $modifier */
+ $modifier = $single_modifier[0];
+
+
+ $modifier_params = array_values($single_modifier);
+
+ $modifier_params[0] = $output;
+ $params = implode(',', $modifier_params);
+
+ if (!is_object($compiler->getSmarty()->security_policy)
+ || $compiler->getSmarty()->security_policy->isTrustedModifier($modifier, $compiler)
+ ) {
+
+ if ($handler = $compiler->getModifierCompiler($modifier)) {
+ $output = $handler->compile($modifier_params, $compiler);
+ } elseif ($compiler->getSmarty()->getModifierCallback($modifier)) {
+ $output = sprintf(
+ '$_smarty_tpl->getSmarty()->getModifierCallback(%s)(%s)',
+ var_export($modifier, true),
+ $params
+ );
+ } elseif ($callback = $compiler->getPluginFromDefaultHandler($modifier, \Smarty\Smarty::PLUGIN_MODIFIERCOMPILER)) {
+ $output = (new \Smarty\Compile\Modifier\BCPluginWrapper($callback))->compile($modifier_params, $compiler);
+ } elseif ($function = $compiler->getPluginFromDefaultHandler($modifier, \Smarty\Smarty::PLUGIN_MODIFIER)) {
+ if (!is_array($function)) {
+ $output = "{$function}({$params})";
+ } else {
+ $operator = is_object($function[0]) ? '->' : '::';
+ $output = $function[0] . $operator . $function[1] . '(' . $params . ')';
+ }
+ } else {
+ $compiler->trigger_template_error("unknown modifier '{$modifier}'", null, true);
+ }
+ }
+ }
+ return (string)$output;
+ }
+
+ /**
+ * Wether this class will be able to compile the given modifier.
+ * @param string $modifier
+ * @param Template $compiler
+ *
+ * @return bool
+ * @throws CompilerException
+ */
+ public function canCompileForModifier(string $modifier, \Smarty\Compiler\Template $compiler): bool {
+ return $compiler->getModifierCompiler($modifier)
+ || $compiler->getSmarty()->getModifierCallback($modifier)
+ || $compiler->getPluginFromDefaultHandler($modifier, \Smarty\Smarty::PLUGIN_MODIFIERCOMPILER)
+ || $compiler->getPluginFromDefaultHandler($modifier, \Smarty\Smarty::PLUGIN_MODIFIER);
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/ObjectMethodBlockCompiler.php b/vendor/smarty/smarty/src/Compile/ObjectMethodBlockCompiler.php
new file mode 100644
index 000000000..6c05c4220
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/ObjectMethodBlockCompiler.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Object Block Function
+ * Compiles code for registered objects as block function
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile;
+
+/**
+ * Smarty Internal Plugin Compile Object Block Function Class
+ *
+
+
+ */
+class ObjectMethodBlockCompiler extends BlockCompiler {
+
+ /**
+ * @inheritDoc
+ */
+ protected function getIsCallableCode($tag, $function): string {
+ $callbackObject = "\$_smarty_tpl->getSmarty()->registered_objects['{$tag}'][0]";
+ return "(isset({$callbackObject}) && is_callable(array({$callbackObject}, '{$function}')))";
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function getFullCallbackCode($tag, $function): string {
+ $callbackObject = "\$_smarty_tpl->getSmarty()->registered_objects['{$tag}'][0]";
+ return "{$callbackObject}->{$function}";
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function blockIsCacheable(\Smarty\Smarty $smarty, $function): bool {
+ return true;
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Compile/ObjectMethodCallCompiler.php b/vendor/smarty/smarty/src/Compile/ObjectMethodCallCompiler.php
new file mode 100644
index 000000000..70855cfc8
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/ObjectMethodCallCompiler.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Object Function
+ * Compiles code for registered objects as function
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile;
+
+/**
+ * Smarty Internal Plugin Compile Object Function Class
+ *
+
+
+ */
+class ObjectMethodCallCompiler extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $optional_attributes = ['_any'];
+
+ /**
+ * Compiles code for the execution of function plugin
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of function
+ * @param string $function name of method to call
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ * @throws \Smarty\Exception
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ unset($_attr['nocache']);
+ $_assign = null;
+ if (isset($_attr['assign'])) {
+ $_assign = $_attr['assign'];
+ unset($_attr['assign']);
+ }
+ // method or property ?
+ if (is_callable([$compiler->getSmarty()->registered_objects[$tag][0], $function])) {
+ // convert attributes into parameter array string
+ if ($compiler->getSmarty()->registered_objects[$tag][2]) {
+ $_paramsArray = $this->formatParamsArray($_attr);
+ $_params = 'array(' . implode(',', $_paramsArray) . ')';
+ $output = "\$_smarty_tpl->getSmarty()->registered_objects['{$tag}'][0]->{$function}({$_params},\$_smarty_tpl)";
+ } else {
+ $_params = implode(',', $_attr);
+ $output = "\$_smarty_tpl->getSmarty()->registered_objects['{$tag}'][0]->{$function}({$_params})";
+ }
+ } else {
+ // object property
+ $output = "\$_smarty_tpl->getSmarty()->registered_objects['{$tag}'][0]->{$function}";
+ }
+ if (!empty($parameter['modifierlist'])) {
+ $output = $compiler->compileModifier($parameter['modifierlist'], $output);
+ }
+ if (empty($_assign)) {
+ return "<?php echo {$output};?>\n";
+ } else {
+ return "<?php \$_smarty_tpl->assign({$_assign},{$output});?>\n";
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/PrintExpressionCompiler.php b/vendor/smarty/smarty/src/Compile/PrintExpressionCompiler.php
new file mode 100644
index 000000000..3642551ee
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/PrintExpressionCompiler.php
@@ -0,0 +1,96 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Print Expression
+ * Compiles any tag which will output an expression or variable
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile;
+
+use Smarty\Compile\Base;
+use Smarty\Compiler\BaseCompiler;
+
+/**
+ * Smarty Internal Plugin Compile Print Expression Class
+ *
+
+
+ */
+class PrintExpressionCompiler extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ public $optional_attributes = ['assign'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ protected $option_flags = ['nocache', 'nofilter'];
+
+ /**
+ * Compiles code for generating output from any expression
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string
+ * @throws \Smarty\Exception
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $output = $parameter['value'];
+ // tag modifier
+ if (!empty($parameter['modifierlist'])) {
+ $output = $compiler->compileModifier($parameter['modifierlist'], $output);
+ }
+ if (isset($_attr['assign'])) {
+ // assign output to variable
+ return "<?php \$_smarty_tpl->assign({$_attr['assign']},{$output});?>";
+ } else {
+ // display value
+ if (!$_attr['nofilter']) {
+ // default modifier
+ if ($compiler->getSmarty()->getDefaultModifiers()) {
+ $modifierlist = [];
+ foreach ($compiler->getSmarty()->getDefaultModifiers() as $key => $single_default_modifier) {
+ preg_match_all(
+ '/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/',
+ $single_default_modifier,
+ $mod_array
+ );
+ for ($i = 0, $count = count($mod_array[0]); $i < $count; $i++) {
+ if ($mod_array[0][$i] !== ':') {
+ $modifierlist[$key][] = $mod_array[0][$i];
+ }
+ }
+ }
+
+ $output = $compiler->compileModifier($modifierlist, $output);
+ }
+
+ if ($compiler->getTemplate()->getSmarty()->escape_html && !$compiler->isRawOutput()) {
+ $output = "htmlspecialchars((string) ({$output}), ENT_QUOTES, '" . addslashes(\Smarty\Smarty::$_CHARSET) . "')";
+ }
+
+ }
+ $output = "<?php echo {$output};?>\n";
+ $compiler->setRawOutput(false);
+ }
+ return $output;
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Compile/SpecialVariableCompiler.php b/vendor/smarty/smarty/src/Compile/SpecialVariableCompiler.php
new file mode 100644
index 000000000..2b6cf4330
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/SpecialVariableCompiler.php
@@ -0,0 +1,134 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Special Smarty Variable
+ * Compiles the special $smarty variables
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile;
+
+use Smarty\Compile\Base;
+use Smarty\Compile\Tag\Capture;
+use Smarty\Compile\Tag\ForeachTag;
+use Smarty\Compile\Tag\Section;
+use Smarty\Compiler\Template;
+use Smarty\CompilerException;
+
+/**
+ * Smarty Internal Plugin Compile special Smarty Variable Class
+ *
+
+
+ */
+class SpecialVariableCompiler extends Base {
+
+ /**
+ * Compiles code for the special $smarty variables
+ *
+ * @param array $args array with attributes from parser
+ * @param Template $compiler compiler object
+ * @param array $parameter
+ * @param null $tag
+ * @param null $function
+ *
+ * @return string compiled code
+ * @throws CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+
+ $_index = preg_split("/\]\[/", substr($parameter, 1, strlen($parameter) - 2));
+ $variable = smarty_strtolower_ascii($compiler->getId($_index[0]));
+ if ($variable === false) {
+ $compiler->trigger_template_error("special \$Smarty variable name index can not be variable", null, true);
+ }
+ if (!isset($compiler->getSmarty()->security_policy)
+ || $compiler->getSmarty()->security_policy->isTrustedSpecialSmartyVar($variable, $compiler)
+ ) {
+ switch ($variable) {
+ case 'foreach':
+ return (new ForeachTag())->compileSpecialVariable($compiler, $_index);
+ case 'section':
+ return (new Section())->compileSpecialVariable($compiler, $_index);
+ case 'capture':
+ return (new Capture())->compileSpecialVariable($compiler, $_index);
+ case 'now':
+ return 'time()';
+ case 'cookies':
+ if (isset($compiler->getSmarty()->security_policy)
+ && !$compiler->getSmarty()->security_policy->allow_super_globals
+ ) {
+ $compiler->trigger_template_error("(secure mode) super globals not permitted");
+ break;
+ }
+ $compiled_ref = '$_COOKIE';
+ break;
+ case 'get':
+ case 'post':
+ case 'env':
+ case 'server':
+ case 'session':
+ case 'request':
+ if (isset($compiler->getSmarty()->security_policy)
+ && !$compiler->getSmarty()->security_policy->allow_super_globals
+ ) {
+ $compiler->trigger_template_error("(secure mode) super globals not permitted");
+ break;
+ }
+ $compiled_ref = '$_' . smarty_strtoupper_ascii($variable);
+ break;
+ case 'template':
+ return '$_smarty_tpl->template_resource';
+ case 'template_object':
+ if (isset($compiler->getSmarty()->security_policy)) {
+ $compiler->trigger_template_error("(secure mode) template_object not permitted");
+ break;
+ }
+ return '$_smarty_tpl';
+ case 'current_dir':
+ return '$_smarty_current_dir';
+ case 'version':
+ return "\\Smarty\\Smarty::SMARTY_VERSION";
+ case 'const':
+ if (isset($compiler->getSmarty()->security_policy)
+ && !$compiler->getSmarty()->security_policy->allow_constants
+ ) {
+ $compiler->trigger_template_error("(secure mode) constants not permitted");
+ break;
+ }
+ if (strpos($_index[1], '$') === false && strpos($_index[1], '\'') === false) {
+ return "(defined('{$_index[1]}') ? constant('{$_index[1]}') : null)";
+ } else {
+ return "(defined({$_index[1]}) ? constant({$_index[1]}) : null)";
+ }
+ // no break
+ case 'config':
+ if (isset($_index[2])) {
+ return "(is_array(\$tmp = \$_smarty_tpl->getConfigVariable($_index[1])) ? \$tmp[$_index[2]] : null)";
+ } else {
+ return "\$_smarty_tpl->getConfigVariable($_index[1])";
+ }
+ // no break
+ case 'ldelim':
+ return "\$_smarty_tpl->getLeftDelimiter()";
+ case 'rdelim':
+ return "\$_smarty_tpl->getRightDelimiter()";
+ default:
+ $compiler->trigger_template_error('$smarty.' . trim($_index[0], "'") . ' is not defined');
+ break;
+ }
+ if (isset($_index[1])) {
+ array_shift($_index);
+ foreach ($_index as $_ind) {
+ $compiled_ref = $compiled_ref . "[$_ind]";
+ }
+ }
+ return $compiled_ref;
+ }
+
+ return '';
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Append.php b/vendor/smarty/smarty/src/Compile/Tag/Append.php
new file mode 100644
index 000000000..171f69600
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Append.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+/**
+ * Smarty Internal Plugin Compile Append
+ * Compiles the {append} tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Append Class
+ *
+
+
+ */
+class Append extends Assign
+{
+
+ /**
+ * @inheritdoc
+ */
+ protected $optional_attributes = ['scope', 'index'];
+
+ /**
+ * Compiles code for the {append} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = array(), $tag = null, $function = null): string
+ {
+
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ // map to compile assign attributes
+ if (isset($_attr[ 'index' ])) {
+ $_params[ 'smarty_internal_index' ] = '[' . $_attr[ 'index' ] . ']';
+ unset($_attr[ 'index' ]);
+ } else {
+ $_params[ 'smarty_internal_index' ] = '[]';
+ }
+ $_new_attr = array();
+ foreach ($_attr as $key => $value) {
+ $_new_attr[] = array($key => $value);
+ }
+ // call compile assign
+ return parent::compile($_new_attr, $compiler, $_params);
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Assign.php b/vendor/smarty/smarty/src/Compile/Tag/Assign.php
new file mode 100644
index 000000000..8433a97e1
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Assign.php
@@ -0,0 +1,95 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+use Smarty\Smarty;
+
+/**
+ * Smarty Internal Plugin Compile Assign
+ * Compiles the {assign} tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Assign Class
+ *
+
+
+ */
+class Assign extends Base
+{
+ /**
+ * @inheritdoc
+ */
+ protected $required_attributes = ['var', 'value'];
+
+ /**
+ * @inheritdoc
+ */
+ protected $optional_attributes = ['scope'];
+
+ /**
+ * @inheritdoc
+ */
+ protected $shorttag_order = ['var', 'value'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $option_flags = array('nocache', 'noscope');
+
+ /**
+ * Compiles code for the {assign} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = array(), $tag = null, $function = null): string
+ {
+
+ $_nocache = false;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ if ($_var = $compiler->getId($_attr[ 'var' ])) {
+ $_var = "'{$_var}'";
+ } else {
+ $_var = $_attr[ 'var' ];
+ }
+ if ($compiler->tag_nocache || $compiler->isNocacheActive()) {
+ $_nocache = true;
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($_attr[ 'var' ]);
+ }
+ // scope setup
+ if ($_attr[ 'noscope' ]) {
+ $_scope = -1;
+ } else {
+ $_scope = isset($_attr['scope']) ? $this->convertScope($_attr['scope']) : null;
+ }
+
+ if (isset($parameter[ 'smarty_internal_index' ])) {
+ $output =
+ "<?php \$_tmp_array = \$_smarty_tpl->getValue({$_var}) ?? [];\n";
+ $output .= "if (!(is_array(\$_tmp_array) || \$_tmp_array instanceof ArrayAccess)) {\n";
+ $output .= "settype(\$_tmp_array, 'array');\n";
+ $output .= "}\n";
+ $output .= "\$_tmp_array{$parameter['smarty_internal_index']} = {$_attr['value']};\n";
+ $output .= "\$_smarty_tpl->assign({$_var}, \$_tmp_array, " . var_export($_nocache, true) . ", " . var_export($_scope, true) . ");?>";
+ } else {
+ $output = "<?php \$_smarty_tpl->assign({$_var}, {$_attr['value']}, " . var_export($_nocache, true) . ", " . var_export($_scope, true) . ");?>";
+ }
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/BCPluginWrapper.php b/vendor/smarty/smarty/src/Compile/Tag/BCPluginWrapper.php
new file mode 100644
index 000000000..abd89f78f
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/BCPluginWrapper.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+class BCPluginWrapper extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ private $callback;
+
+ public function __construct($callback, bool $cacheable = true) {
+ $this->callback = $callback;
+ $this->cacheable = $cacheable;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ return call_user_func($this->callback, $this->getAttributes($compiler, $args), $compiler->getSmarty());
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Block.php b/vendor/smarty/smarty/src/Compile/Tag/Block.php
new file mode 100644
index 000000000..d8b301006
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Block.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\ParseTree\Template;
+
+/**
+ * Smarty Internal Plugin Compile Block Class
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class Block extends Inheritance {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ public $required_attributes = ['name'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ public $shorttag_order = ['name'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $option_flags = ['hide', 'nocache'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ public $optional_attributes = ['assign'];
+
+ /**
+ * Compiles code for the {block} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = array(), $tag = null, $function = null): string
+ {
+ if (!isset($compiler->_cache['blockNesting'])) {
+ $compiler->_cache['blockNesting'] = 0;
+ }
+ if ($compiler->_cache['blockNesting'] === 0) {
+ // make sure that inheritance gets initialized in template code
+ $this->registerInit($compiler);
+ $this->option_flags = ['hide', 'nocache', 'append', 'prepend'];
+ } else {
+ $this->option_flags = ['hide', 'nocache'];
+ }
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ ++$compiler->_cache['blockNesting'];
+ $_className = 'Block_' . preg_replace('![^\w]+!', '_', uniqid(mt_rand(), true));
+
+ $this->openTag(
+ $compiler,
+ 'block',
+ [
+ $_attr, $compiler->tag_nocache, $compiler->getParser()->current_buffer,
+ $compiler->getTemplate()->getCompiled()->getNocacheCode(), $_className
+ ]
+ );
+
+ $compiler->getParser()->current_buffer = new Template();
+ $compiler->getTemplate()->getCompiled()->setNocacheCode(false);
+ $compiler->suppressNocacheProcessing = true;
+ return '';
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/BlockClose.php b/vendor/smarty/smarty/src/Compile/Tag/BlockClose.php
new file mode 100644
index 000000000..586c7c050
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/BlockClose.php
@@ -0,0 +1,110 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\ParseTree\Template;
+
+/**
+ * Smarty Internal Plugin Compile BlockClose Class
+ */
+class BlockClose extends Inheritance {
+
+ /**
+ * Compiles code for the {/block} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = array(), $tag = null, $function = null): string
+ {
+ [$_attr, $_nocache, $_buffer, $_has_nocache_code, $_className] = $this->closeTag($compiler, ['block']);
+
+ $_block = [];
+ if (isset($compiler->_cache['blockParams'])) {
+ $_block = $compiler->_cache['blockParams'][$compiler->_cache['blockNesting']] ?? [];
+ unset($compiler->_cache['blockParams'][$compiler->_cache['blockNesting']]);
+ }
+
+ $_name = $_attr['name'];
+ $_assign = $_attr['assign'] ?? null;
+ unset($_attr[ 'assign' ], $_attr[ 'name' ]);
+
+ foreach ($_attr as $name => $stat) {
+ if ((is_bool($stat) && $stat !== false) || (!is_bool($stat) && $stat !== 'false')) {
+ $_block[ $name ] = 'true';
+ }
+ }
+
+ // get compiled block code
+ $_functionCode = $compiler->getParser()->current_buffer;
+ // setup buffer for template function code
+ $compiler->getParser()->current_buffer = new Template();
+ $output = "<?php\n";
+ $output .= $compiler->cStyleComment(" {block {$_name}} ") . "\n";
+ $output .= "class {$_className} extends \\Smarty\\Runtime\\Block\n";
+ $output .= "{\n";
+ foreach ($_block as $property => $value) {
+ $output .= "public \${$property} = " . var_export($value, true) . ";\n";
+ }
+ $output .= "public function callBlock(\\Smarty\\Template \$_smarty_tpl) {\n";
+
+ $output .= (new \Smarty\Compiler\CodeFrame($compiler->getTemplate()))->insertLocalVariables();
+
+ if ($compiler->getTemplate()->getCompiled()->getNocacheCode()) {
+ $output .= "\$_smarty_tpl->getCached()->hashes['{$compiler->getTemplate()->getCompiled()->nocache_hash}'] = true;\n";
+ }
+ if (isset($_assign)) {
+ $output .= "ob_start();\n";
+ }
+ $output .= "?>\n";
+ $compiler->getParser()->current_buffer->append_subtree(
+ $compiler->getParser(),
+ new \Smarty\ParseTree\Tag(
+ $compiler->getParser(),
+ $output
+ )
+ );
+ $compiler->getParser()->current_buffer->append_subtree($compiler->getParser(), $_functionCode);
+ $output = "<?php\n";
+ if (isset($_assign)) {
+ $output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
+ }
+ $output .= "}\n";
+ $output .= "}\n";
+ $output .= $compiler->cStyleComment(" {/block {$_name}} ") . "\n\n";
+ $output .= "?>\n";
+ $compiler->getParser()->current_buffer->append_subtree(
+ $compiler->getParser(),
+ new \Smarty\ParseTree\Tag(
+ $compiler->getParser(),
+ $output
+ )
+ );
+ $compiler->blockOrFunctionCode .= $compiler->getParser()->current_buffer->to_smarty_php($compiler->getParser());
+
+ $compiler->getParser()->current_buffer = new Template();
+
+ // restore old status
+ $compiler->getTemplate()->getCompiled()->setNocacheCode($_has_nocache_code);
+ $compiler->tag_nocache = $_nocache;
+
+ $compiler->getParser()->current_buffer = $_buffer;
+ $output = "<?php \n";
+ if ($compiler->_cache['blockNesting'] === 1) {
+ $output .= "\$_smarty_tpl->getInheritance()->instanceBlock(\$_smarty_tpl, '$_className', $_name);\n";
+ } else {
+ $output .= "\$_smarty_tpl->getInheritance()->instanceBlock(\$_smarty_tpl, '$_className', $_name, \$this->tplIndex);\n";
+ }
+ $output .= "?>\n";
+ --$compiler->_cache['blockNesting'];
+ if ($compiler->_cache['blockNesting'] === 0) {
+ unset($compiler->_cache['blockNesting']);
+ }
+ $compiler->suppressNocacheProcessing = true;
+ return $output;
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/BreakTag.php b/vendor/smarty/smarty/src/Compile/Tag/BreakTag.php
new file mode 100644
index 000000000..b8b554f3b
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/BreakTag.php
@@ -0,0 +1,123 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Break
+ * Compiles the {break} tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Break Class
+ *
+
+
+ */
+class BreakTag extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $optional_attributes = ['levels'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $shorttag_order = ['levels'];
+
+ /**
+ * Tag name may be overloaded by ContinueTag
+ *
+ * @var string
+ */
+ protected $tag = 'break';
+
+ /**
+ * Compiles code for the {break} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = array(), $tag = null, $function = null): string
+ {
+ [$levels, $foreachLevels] = $this->checkLevels($args, $compiler);
+ $output = "<?php ";
+ if ($foreachLevels > 0 && $this->tag === 'continue') {
+ $foreachLevels--;
+ }
+ if ($foreachLevels > 0) {
+ /* @var ForeachTag $foreachCompiler */
+ $foreachCompiler = $compiler->getTagCompiler('foreach');
+ $output .= $foreachCompiler->compileRestore($foreachLevels);
+ }
+ $output .= "{$this->tag} {$levels};?>";
+ return $output;
+ }
+
+ /**
+ * check attributes and return array of break and foreach levels
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return array
+ * @throws \Smarty\CompilerException
+ */
+ public function checkLevels($args, \Smarty\Compiler\Template $compiler) {
+ static $_is_loopy = ['for' => true, 'foreach' => true, 'while' => true, 'section' => true];
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($_attr['nocache'] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+ if (isset($_attr['levels'])) {
+ if (!is_numeric($_attr['levels'])) {
+ $compiler->trigger_template_error('level attribute must be a numeric constant', null, true);
+ }
+ $levels = $_attr['levels'];
+ } else {
+ $levels = 1;
+ }
+ $level_count = $levels;
+
+ $tagStack = $compiler->getTagStack();
+ $stack_count = count($tagStack) - 1;
+
+ $foreachLevels = 0;
+ $lastTag = '';
+ while ($level_count > 0 && $stack_count >= 0) {
+ if (isset($_is_loopy[$tagStack[$stack_count][0]])) {
+ $lastTag = $tagStack[$stack_count][0];
+ if ($level_count === 0) {
+ break;
+ }
+ $level_count--;
+ if ($tagStack[$stack_count][0] === 'foreach') {
+ $foreachLevels++;
+ }
+ }
+ $stack_count--;
+ }
+ if ($level_count !== 0) {
+ $compiler->trigger_template_error("cannot {$this->tag} {$levels} level(s)", null, true);
+ }
+ if ($lastTag === 'foreach' && $this->tag === 'break' && $foreachLevels > 0) {
+ $foreachLevels--;
+ }
+ return [$levels, $foreachLevels];
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Call.php b/vendor/smarty/smarty/src/Compile/Tag/Call.php
new file mode 100644
index 000000000..04f07a14a
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Call.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Function_Call
+ * Compiles the calls of user defined tags defined by {function}
+ *
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Function_Call Class
+ */
+class Call extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ public $required_attributes = ['name'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ public $shorttag_order = ['name'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ public $optional_attributes = ['_any'];
+
+ /**
+ * Compiles the calls of user defined tags defined by {function}
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ // save possible attributes
+ if (isset($_attr['assign'])) {
+ // output will be stored in a smarty variable instead of being displayed
+ $_assign = $_attr['assign'];
+ }
+ //$_name = trim($_attr['name'], "''");
+ $_name = $_attr['name'];
+ unset($_attr['name'], $_attr['assign'], $_attr['nocache']);
+ // set flag (compiled code of {function} must be included in cache file
+ if (!$compiler->getTemplate()->caching || $compiler->isNocacheActive() || $compiler->tag_nocache) {
+ $_nocache = 'true';
+ } else {
+ $_nocache = 'false';
+ }
+ $_paramsArray = $this->formatParamsArray($_attr);
+ $_params = 'array(' . implode(',', $_paramsArray) . ')';
+ //$compiler->suppressNocacheProcessing = true;
+ // was there an assign attribute
+ if (isset($_assign)) {
+ $_output =
+ "<?php ob_start();\n\$_smarty_tpl->getSmarty()->getRuntime('TplFunction')->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});\n\$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n";
+ } else {
+ $_output =
+ "<?php \$_smarty_tpl->getSmarty()->getRuntime('TplFunction')->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});?>\n";
+ }
+ return $_output;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Capture.php b/vendor/smarty/smarty/src/Compile/Tag/Capture.php
new file mode 100644
index 000000000..7b7362f9e
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Capture.php
@@ -0,0 +1,72 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Capture Class
+ *
+
+
+ */
+class Capture extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ public $shorttag_order = ['name'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ public $optional_attributes = ['name', 'assign', 'append'];
+
+ /**
+ * Compiles code for the {$smarty.capture.xxx}
+ *
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public static function compileSpecialVariable(
+ \Smarty\Compiler\Template $compiler,
+ $parameter = null
+ ) {
+ return '$_smarty_tpl->getSmarty()->getRuntime(\'Capture\')->getBuffer($_smarty_tpl' .
+ (isset($parameter[1]) ? ", {$parameter[ 1 ]})" : ')');
+ }
+
+ /**
+ * Compiles code for the {capture} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param null $parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $buffer = $_attr['name'] ?? "'default'";
+ $assign = $_attr['assign'] ?? 'null';
+ $append = $_attr['append'] ?? 'null';
+
+ $compiler->_cache['capture_stack'][] = $compiler->tag_nocache;
+ if ($compiler->tag_nocache) {
+ // push a virtual {nocache} tag onto the stack.
+ $compiler->openTag('nocache');
+ }
+
+ return "<?php \$_smarty_tpl->getSmarty()->getRuntime('Capture')->open(\$_smarty_tpl, $buffer, $assign, $append);?>";
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/CaptureClose.php b/vendor/smarty/smarty/src/Compile/Tag/CaptureClose.php
new file mode 100644
index 000000000..c0d779692
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/CaptureClose.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Capture
+ * Compiles the {capture} tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Captureclose Class
+ *
+
+
+ */
+class CaptureClose extends Base {
+
+ /**
+ * Compiles code for the {/capture} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param null $parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+
+ if (array_pop($compiler->_cache['capture_stack'])) {
+ // pop the virtual {nocache} tag from the stack.
+ $compiler->closeTag('nocache');
+ $compiler->tag_nocache = true;
+ }
+
+ return "<?php \$_smarty_tpl->getSmarty()->getRuntime('Capture')->close(\$_smarty_tpl);?>";
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ConfigLoad.php b/vendor/smarty/smarty/src/Compile/Tag/ConfigLoad.php
new file mode 100644
index 000000000..8b4cf46d2
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ConfigLoad.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Config Load
+ * Compiles the {config load} tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+use Smarty\Smarty;
+
+/**
+ * Smarty Internal Plugin Compile Config Load Class
+ *
+
+
+ */
+class ConfigLoad extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $required_attributes = ['file'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $shorttag_order = ['file', 'section'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $optional_attributes = ['section'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $option_flags = [];
+
+ /**
+ * Compiles code for the {config_load} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ // save possible attributes
+ $conf_file = $_attr['file'];
+ $section = $_attr['section'] ?? 'null';
+
+ // create config object
+ return "<?php\n\$_smarty_tpl->configLoad({$conf_file}, {$section});\n?>\n";
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ContinueTag.php b/vendor/smarty/smarty/src/Compile/Tag/ContinueTag.php
new file mode 100644
index 000000000..82abe6cea
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ContinueTag.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Continue
+ * Compiles the {continue} tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+/**
+ * Smarty Internal Plugin Compile Continue Class
+ *
+
+
+ */
+class ContinueTag extends BreakTag {
+
+ /**
+ * Tag name
+ *
+ * @var string
+ */
+ protected $tag = 'continue';
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Debug.php b/vendor/smarty/smarty/src/Compile/Tag/Debug.php
new file mode 100644
index 000000000..4542bd3cd
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Debug.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Debug
+ * Compiles the {debug} tag.
+ * It opens a window the the Smarty Debugging Console.
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Debug Class
+ *
+
+
+ */
+class Debug extends Base {
+
+ /**
+ * Compiles code for the {debug} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ // check and get attributes, may trigger errors
+ $this->getAttributes($compiler, $args);
+
+ // compile always as nocache
+ $compiler->tag_nocache = true;
+ // display debug template
+ $_output =
+ "<?php \$_smarty_debug = new \\Smarty\\Debug;\n \$_smarty_debug->display_debug(\$_smarty_tpl);\n";
+ $_output .= "unset(\$_smarty_debug);\n?>";
+ return $_output;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ElseIfTag.php b/vendor/smarty/smarty/src/Compile/Tag/ElseIfTag.php
new file mode 100644
index 000000000..8e59c3413
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ElseIfTag.php
@@ -0,0 +1,86 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile ElseIf Class
+ *
+
+
+ */
+class ElseIfTag extends Base {
+
+ /**
+ * Compiles code for the {elseif} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+
+ [$nesting, $nocache_pushed] = $this->closeTag($compiler, ['if', 'elseif']);
+
+ if (!isset($parameter['if condition'])) {
+ $compiler->trigger_template_error('missing elseif condition', null, true);
+ }
+ $assignCode = '';
+ $var = '';
+ if (is_array($parameter['if condition'])) {
+ $condition_by_assign = true;
+ if (is_array($parameter['if condition']['var'])) {
+ $var = $parameter['if condition']['var']['var'];
+ } else {
+ $var = $parameter['if condition']['var'];
+ }
+ if ($compiler->isNocacheActive()) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $assignCode = "<?php {$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]};?>\n";
+ $assignCompiler = new Assign();
+ $assignAttr = [];
+ $assignAttr[]['value'] = $prefixVar;
+ if (is_array($parameter['if condition']['var'])) {
+ $assignAttr[]['var'] = $parameter['if condition']['var']['var'];
+ $assignCode .= $assignCompiler->compile(
+ $assignAttr,
+ $compiler,
+ ['smarty_internal_index' => $parameter['if condition']['var']['smarty_internal_index']]
+ );
+ } else {
+ $assignAttr[]['var'] = $parameter['if condition']['var'];
+ $assignCode .= $assignCompiler->compile($assignAttr, $compiler, []);
+ }
+ } else {
+ $condition_by_assign = false;
+ }
+ $prefixCode = $compiler->getPrefixCode();
+ if (empty($prefixCode)) {
+ if ($condition_by_assign) {
+ $this->openTag($compiler, 'elseif', [$nesting + 1, $compiler->tag_nocache]);
+ $_output = $compiler->appendCode("<?php } else {\n?>", $assignCode);
+ return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>");
+ } else {
+ $this->openTag($compiler, 'elseif', [$nesting, $nocache_pushed]);
+ return "<?php } elseif ({$parameter['if condition']}) {?>";
+ }
+ } else {
+ $_output = $compiler->appendCode("<?php } else {\n?>", $prefixCode);
+ $this->openTag($compiler, 'elseif', [$nesting + 1, $nocache_pushed]);
+ if ($condition_by_assign) {
+ $_output = $compiler->appendCode($_output, $assignCode);
+ return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>");
+ } else {
+ return $compiler->appendCode($_output, "<?php if ({$parameter['if condition']}) {?>");
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ElseTag.php b/vendor/smarty/smarty/src/Compile/Tag/ElseTag.php
new file mode 100644
index 000000000..a7025da72
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ElseTag.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Else Class
+ *
+
+
+ */
+class ElseTag extends Base {
+
+ /**
+ * Compiles code for the {else} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ [$nesting, $compiler->tag_nocache] = $this->closeTag($compiler, ['if', 'elseif']);
+ $this->openTag($compiler, 'else', [$nesting, $compiler->tag_nocache]);
+ return '<?php } else { ?>';
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/EvalTag.php b/vendor/smarty/smarty/src/Compile/Tag/EvalTag.php
new file mode 100644
index 000000000..8396fd097
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/EvalTag.php
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Eval
+ * Compiles the {eval} tag.
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Eval Class
+ *
+
+
+ */
+class EvalTag extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ public $required_attributes = ['var'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ public $optional_attributes = ['assign'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ public $shorttag_order = ['var', 'assign'];
+
+ /**
+ * Compiles code for the {eval} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if (isset($_attr['assign'])) {
+ // output will be stored in a smarty variable instead of being displayed
+ $_assign = $_attr['assign'];
+ }
+ // create template object
+ $_output =
+ "\$_template = new \\Smarty\\Template('eval:'.{$_attr[ 'var' ]}, \$_smarty_tpl->getSmarty(), \$_smarty_tpl);";
+ //was there an assign attribute?
+ if (isset($_assign)) {
+ $_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());";
+ } else {
+ $_output .= 'echo $_template->fetch();';
+ }
+ return "<?php $_output ?>";
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ExtendsTag.php b/vendor/smarty/smarty/src/Compile/Tag/ExtendsTag.php
new file mode 100644
index 000000000..0ec2cf2ba
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ExtendsTag.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile extend
+ * Compiles the {extends} tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+/**
+ * Smarty Internal Plugin Compile extend Class
+ *
+
+
+ */
+class ExtendsTag extends Inheritance {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $required_attributes = ['file'];
+
+ /**
+ * Array of names of optional attribute required by tag
+ * use array('_any') if there is no restriction of attributes names
+ *
+ * @var array
+ */
+ protected $optional_attributes = [];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $shorttag_order = ['file'];
+
+ /**
+ * Compiles code for the {extends} tag extends: resource
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ * @throws \Smarty\Exception
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($_attr['nocache'] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', $compiler->getParser()->lex->line - 1);
+ }
+ if (strpos($_attr['file'], '$_tmp') !== false) {
+ $compiler->trigger_template_error('illegal value for file attribute', $compiler->getParser()->lex->line - 1);
+ }
+ // add code to initialize inheritance
+ $this->registerInit($compiler, true);
+ $this->compileEndChild($compiler, $_attr['file']);
+ return '';
+ }
+
+ /**
+ * Add code for inheritance endChild() method to end of template
+ *
+ * @param \Smarty\Compiler\Template $compiler
+ * @param null|string $template optional inheritance parent template
+ *
+ * @throws \Smarty\CompilerException
+ * @throws \Smarty\Exception
+ */
+ private function compileEndChild(\Smarty\Compiler\Template $compiler, $template = null) {
+ $compiler->getParser()->template_postfix[] = new \Smarty\ParseTree\Tag(
+ $compiler->getParser(),
+ '<?php $_smarty_tpl->getInheritance()->endChild($_smarty_tpl' .
+ (isset($template) ? ", {$template}, \$_smarty_current_dir" : '') . ");\n?>"
+ );
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ForClose.php b/vendor/smarty/smarty/src/Compile/Tag/ForClose.php
new file mode 100644
index 000000000..189bcfd93
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ForClose.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile For
+ * Compiles the {for} {forelse} {/for} tags
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Forclose Class
+ *
+
+
+ */
+class ForClose extends Base {
+
+ /**
+ * Compiles code for the {/for} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $compiler->loopNesting--;
+
+ [$openTag, $nocache_pushed] = $this->closeTag($compiler, ['for', 'forelse']);
+ $output = "<?php }\n";
+ if ($openTag !== 'forelse') {
+ $output .= "}\n";
+ }
+ $output .= "?>";
+
+ if ($nocache_pushed) {
+ // pop the pushed virtual nocache tag
+ $this->closeTag($compiler, 'nocache');
+ $compiler->tag_nocache = true;
+ }
+
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ForElse.php b/vendor/smarty/smarty/src/Compile/Tag/ForElse.php
new file mode 100644
index 000000000..d939a72ab
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ForElse.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Forelse Class
+ *
+
+
+ */
+class ForElse extends Base {
+
+ /**
+ * Compiles code for the {forelse} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ [$tagName, $nocache_pushed] = $this->closeTag($compiler, ['for']);
+ $this->openTag($compiler, 'forelse', ['forelse', $nocache_pushed]);
+ return "<?php }} else { ?>";
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ForTag.php b/vendor/smarty/smarty/src/Compile/Tag/ForTag.php
new file mode 100644
index 000000000..fdf71b681
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ForTag.php
@@ -0,0 +1,101 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile For Class
+ *
+
+
+ */
+class ForTag extends Base {
+
+ /**
+ * Compiles code for the {for} tag
+ * Smarty supports two different syntax's:
+ * - {for $var in $array}
+ * For looping over arrays or iterators
+ * - {for $x=0; $x<$y; $x++}
+ * For general loops
+ * The parser is generating different sets of attribute by which this compiler can
+ * determine which syntax is used.
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $compiler->loopNesting++;
+ if ($parameter === 0) {
+ $this->required_attributes = ['start', 'to'];
+ $this->optional_attributes = ['max', 'step'];
+ } else {
+ $this->required_attributes = ['start', 'ifexp', 'var', 'step'];
+ $this->optional_attributes = [];
+ }
+
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $output = "<?php\n";
+ if ($parameter === 1) {
+ foreach ($_attr['start'] as $_statement) {
+ if (is_array($_statement['var'])) {
+ $var = $_statement['var']['var'];
+ $index = $_statement['var']['smarty_internal_index'];
+ } else {
+ $var = $_statement['var'];
+ $index = '';
+ }
+ $output .= "\$_smarty_tpl->assign($var, null);\n";
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->value{$index} = {$_statement['value']};\n";
+ }
+ if (is_array($_attr['var'])) {
+ $var = $_attr['var']['var'];
+ $index = $_attr['var']['smarty_internal_index'];
+ } else {
+ $var = $_attr['var'];
+ $index = '';
+ }
+ $output .= "if ($_attr[ifexp]) {\nfor (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$var]->value{$index}$_attr[step]) {\n";
+ } else {
+ $_statement = $_attr['start'];
+ if (is_array($_statement['var'])) {
+ $var = $_statement['var']['var'];
+ $index = $_statement['var']['smarty_internal_index'];
+ } else {
+ $var = $_statement['var'];
+ $index = '';
+ }
+ $output .= "\$_smarty_tpl->assign($var, null);";
+ if (isset($_attr['step'])) {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->step = $_attr[step];";
+ } else {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->step = 1;";
+ }
+ if (isset($_attr['max'])) {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) min(ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step)),$_attr[max]);\n";
+ } else {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step));\n";
+ }
+ $output .= "if (\$_smarty_tpl->tpl_vars[$var]->total > 0) {\n";
+ $output .= "for (\$_smarty_tpl->tpl_vars[$var]->value{$index} = $_statement[value], \$_smarty_tpl->tpl_vars[$var]->iteration = 1;\$_smarty_tpl->tpl_vars[$var]->iteration <= \$_smarty_tpl->tpl_vars[$var]->total;\$_smarty_tpl->tpl_vars[$var]->value{$index} += \$_smarty_tpl->tpl_vars[$var]->step, \$_smarty_tpl->tpl_vars[$var]->iteration++) {\n";
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->first = \$_smarty_tpl->tpl_vars[$var]->iteration === 1;";
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->last = \$_smarty_tpl->tpl_vars[$var]->iteration === \$_smarty_tpl->tpl_vars[$var]->total;";
+ }
+ $output .= '?>';
+
+ if ($compiler->tag_nocache) {
+ // push a {nocache} tag onto the stack to prevent caching of this for loop
+ $this->openTag($compiler, 'nocache');
+ }
+
+ $this->openTag($compiler, 'for', ['for', $compiler->tag_nocache]);
+
+ return $output;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ForeachClose.php b/vendor/smarty/smarty/src/Compile/Tag/ForeachClose.php
new file mode 100644
index 000000000..e657c1d84
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ForeachClose.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Foreach
+ * Compiles the {foreach} {foreachelse} {/foreach} tags
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Foreachclose Class
+ *
+
+
+ */
+class ForeachClose extends Base {
+
+ /**
+ * Compiles code for the {/foreach} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $compiler->loopNesting--;
+
+ [$openTag, $nocache_pushed, $localVariablePrefix, $item, $restore] = $this->closeTag($compiler, ['foreach', 'foreachelse']);
+
+ if ($nocache_pushed) {
+ // pop the pushed virtual nocache tag
+ $this->closeTag($compiler, 'nocache');
+ $compiler->tag_nocache = true;
+ }
+
+ $output = "<?php\n";
+ if ($restore) {
+ $output .= "\$_smarty_tpl->setVariable('{$item}', {$localVariablePrefix}Backup);\n";
+ }
+ $output .= "}\n";
+ /* @var \Smarty\Compile\Tag\ForeachTag $foreachCompiler */
+ $foreachCompiler = $compiler->getTagCompiler('foreach');
+ $output .= $foreachCompiler->compileRestore(1);
+ $output .= "?>";
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ForeachElse.php b/vendor/smarty/smarty/src/Compile/Tag/ForeachElse.php
new file mode 100644
index 000000000..d48898473
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ForeachElse.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Foreachelse Class
+ *
+
+
+ */
+class ForeachElse extends Base {
+
+ /**
+ * Compiles code for the {foreachelse} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+
+ [$openTag, $nocache_pushed, $localVariablePrefix, $item, $restore] = $this->closeTag($compiler, ['foreach']);
+ $this->openTag($compiler, 'foreachelse', ['foreachelse', $nocache_pushed, $localVariablePrefix, $item, false]);
+ $output = "<?php\n";
+ if ($restore) {
+ $output .= "\$_smarty_tpl->setVariable('{$item}', {$localVariablePrefix}Backup);\n";
+ }
+ $output .= "}\nif ({$localVariablePrefix}DoElse) {\n?>";
+ return $output;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ForeachSection.php b/vendor/smarty/smarty/src/Compile/Tag/ForeachSection.php
new file mode 100644
index 000000000..dd2574011
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ForeachSection.php
@@ -0,0 +1,206 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile ForeachSection
+ * Shared methods for {foreach} {section} tags
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile ForeachSection Class
+ *
+
+
+ */
+abstract class ForeachSection extends Base {
+
+ /**
+ * Name of this tag
+ *
+ * @var string
+ */
+ protected $tagName = '';
+
+ /**
+ * Valid properties of $smarty.xxx variable
+ *
+ * @var array
+ */
+ protected $nameProperties = [];
+
+ /**
+ * {section} tag has no item properties
+ *
+ * @var array
+ */
+ protected $itemProperties = null;
+
+ /**
+ * {section} tag has always name attribute
+ *
+ * @var bool
+ */
+ protected $isNamed = true;
+
+ /**
+ * @var array
+ */
+ protected $matchResults = [];
+
+ /**
+ * Preg search pattern
+ *
+ * @var string
+ */
+ private $propertyPreg = '';
+
+ /**
+ * Offsets in preg match result
+ *
+ * @var array
+ */
+ private $resultOffsets = [];
+
+ /**
+ * Start offset
+ *
+ * @var int
+ */
+ private $startOffset = 0;
+
+ /**
+ * Scan sources for used tag attributes
+ *
+ * @param array $attributes
+ * @param \Smarty\Compiler\Template $compiler
+ *
+ * @throws \Smarty\Exception
+ */
+ protected function scanForProperties($attributes, \Smarty\Compiler\Template $compiler) {
+ $this->propertyPreg = '~(';
+ $this->startOffset = 1;
+ $this->resultOffsets = [];
+ $this->matchResults = ['named' => [], 'item' => []];
+ if (isset($attributes['name'])) {
+ $this->buildPropertyPreg(true, $attributes);
+ }
+ if (isset($this->itemProperties)) {
+ if ($this->isNamed) {
+ $this->propertyPreg .= '|';
+ }
+ $this->buildPropertyPreg(false, $attributes);
+ }
+ $this->propertyPreg .= ')\W~i';
+ // Template source
+ $this->matchTemplateSource($compiler);
+ // Parent template source
+ $this->matchParentTemplateSource($compiler);
+ }
+
+ /**
+ * Build property preg string
+ *
+ * @param bool $named
+ * @param array $attributes
+ */
+ private function buildPropertyPreg($named, $attributes) {
+ if ($named) {
+ $this->resultOffsets['named'] = $this->startOffset = $this->startOffset + 3;
+ $this->propertyPreg .= "(([\$]smarty[.]{$this->tagName}[.]" .
+ ($this->tagName === 'section' ? "|[\[]\s*" : '') .
+ "){$attributes['name']}[.](";
+ $properties = $this->nameProperties;
+ } else {
+ $this->resultOffsets['item'] = $this->startOffset = $this->startOffset + 2;
+ $this->propertyPreg .= "([\$]{$attributes['item']}[@](";
+ $properties = $this->itemProperties;
+ }
+ $propName = reset($properties);
+ while ($propName) {
+ $this->propertyPreg .= "{$propName}";
+ $propName = next($properties);
+ if ($propName) {
+ $this->propertyPreg .= '|';
+ }
+ }
+ $this->propertyPreg .= '))';
+ }
+
+ /**
+ * Find matches in source string
+ *
+ * @param string $source
+ */
+ private function matchProperty($source) {
+ preg_match_all($this->propertyPreg, $source, $match);
+ foreach ($this->resultOffsets as $key => $offset) {
+ foreach ($match[$offset] as $m) {
+ if (!empty($m)) {
+ $this->matchResults[$key][smarty_strtolower_ascii($m)] = true;
+ }
+ }
+ }
+ }
+
+ /**
+ * Find matches in template source
+ *
+ * @param \Smarty\Compiler\Template $compiler
+ */
+ private function matchTemplateSource(\Smarty\Compiler\Template $compiler) {
+ $this->matchProperty($compiler->getParser()->lex->data);
+ }
+
+ /**
+ * Find matches in all parent template source
+ *
+ * @param \Smarty\Compiler\Template $compiler
+ *
+ * @throws \Smarty\Exception
+ */
+ private function matchParentTemplateSource(\Smarty\Compiler\Template $compiler) {
+ // search parent compiler template source
+ $nextCompiler = $compiler;
+ while ($nextCompiler !== $nextCompiler->getParentCompiler()) {
+ $nextCompiler = $nextCompiler->getParentCompiler();
+ if ($compiler !== $nextCompiler) {
+ // get template source
+ $_content = $nextCompiler->getTemplate()->getSource()->getContent();
+ if ($_content !== '') {
+ // run pre filter if required
+ $_content = $nextCompiler->getSmarty()->runPreFilters($_content, $nextCompiler->getTemplate());
+ $this->matchProperty($_content);
+ }
+ }
+ }
+ }
+
+ /**
+ * Compiles code for the {$smarty.foreach.xxx} or {$smarty.section.xxx}tag
+ *
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compileSpecialVariable(\Smarty\Compiler\Template $compiler, $parameter) {
+ $tag = smarty_strtolower_ascii(trim($parameter[0], '"\''));
+ $name = isset($parameter[1]) ? $compiler->getId($parameter[1]) : false;
+ if (!$name) {
+ $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} name attribute", null, true);
+ }
+ $property = isset($parameter[2]) ? smarty_strtolower_ascii($compiler->getId($parameter[2])) : false;
+ if (!$property || !in_array($property, $this->nameProperties)) {
+ $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} property attribute", null, true);
+ }
+ $tagVar = "'__smarty_{$tag}_{$name}'";
+ return "(\$_smarty_tpl->getValue({$tagVar})['{$property}'] ?? null)";
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/ForeachTag.php b/vendor/smarty/smarty/src/Compile/Tag/ForeachTag.php
new file mode 100644
index 000000000..9f765af58
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/ForeachTag.php
@@ -0,0 +1,286 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+/**
+ * Smarty Internal Plugin Compile Foreach Class
+ *
+
+
+ */
+class ForeachTag extends ForeachSection {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $required_attributes = ['from', 'item'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $optional_attributes = ['name', 'key', 'properties'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $shorttag_order = ['from', 'item', 'key', 'name'];
+
+ /**
+ * counter
+ *
+ * @var int
+ */
+ private static $counter = 0;
+
+ /**
+ * Name of this tag
+ *
+ * @var string
+ */
+ protected $tagName = 'foreach';
+
+ /**
+ * Valid properties of $smarty.foreach.name.xxx variable
+ *
+ * @var array
+ */
+ protected $nameProperties = ['first', 'last', 'index', 'iteration', 'show', 'total'];
+
+ /**
+ * Valid properties of $item@xxx variable
+ *
+ * @var array
+ */
+ protected $itemProperties = ['first', 'last', 'index', 'iteration', 'show', 'total', 'key'];
+
+ /**
+ * Flag if tag had name attribute
+ *
+ * @var bool
+ */
+ protected $isNamed = false;
+
+ /**
+ * Compiles code for the {foreach} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ * @throws \Smarty\Exception
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $compiler->loopNesting++;
+ // init
+ $this->isNamed = false;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $from = $_attr['from'];
+ $item = $compiler->getId($_attr['item']);
+ if ($item === false) {
+ $item = $this->getVariableName($_attr['item']);
+ }
+ $key = $name = null;
+ $attributes = ['item' => $item];
+ if (isset($_attr['key'])) {
+ $key = $compiler->getId($_attr['key']);
+ if ($key === false) {
+ $key = $this->getVariableName($_attr['key']);
+ }
+ $attributes['key'] = $key;
+ }
+ if (isset($_attr['name'])) {
+ $this->isNamed = true;
+ $name = $attributes['name'] = $compiler->getId($_attr['name']);
+ }
+ foreach ($attributes as $a => $v) {
+ if ($v === false) {
+ $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
+ }
+ }
+ $fromName = $this->getVariableName($_attr['from']);
+ if ($fromName) {
+ foreach (['item', 'key'] as $a) {
+ if (isset($attributes[$a]) && $attributes[$a] === $fromName) {
+ $compiler->trigger_template_error(
+ "'{$a}' and 'from' may not have same variable name '{$fromName}'",
+ null,
+ true
+ );
+ }
+ }
+ }
+
+ $itemVar = "\$_smarty_tpl->getVariable('{$item}')";
+ $localVariablePrefix = '$foreach' . self::$counter++;
+
+ // search for used tag attributes
+ $itemAttr = [];
+ $namedAttr = [];
+ $this->scanForProperties($attributes, $compiler);
+ if (!empty($this->matchResults['item'])) {
+ $itemAttr = $this->matchResults['item'];
+ }
+ if (!empty($this->matchResults['named'])) {
+ $namedAttr = $this->matchResults['named'];
+ }
+ if (isset($_attr['properties']) && preg_match_all('/[\'](.*?)[\']/', $_attr['properties'], $match)) {
+ foreach ($match[1] as $prop) {
+ if (in_array($prop, $this->itemProperties)) {
+ $itemAttr[$prop] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ if ($this->isNamed) {
+ foreach ($match[1] as $prop) {
+ if (in_array($prop, $this->nameProperties)) {
+ $nameAttr[$prop] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ }
+ }
+ if (isset($itemAttr['first'])) {
+ $itemAttr['index'] = true;
+ }
+ if (isset($namedAttr['first'])) {
+ $namedAttr['index'] = true;
+ }
+ if (isset($namedAttr['last'])) {
+ $namedAttr['iteration'] = true;
+ $namedAttr['total'] = true;
+ }
+ if (isset($itemAttr['last'])) {
+ $itemAttr['iteration'] = true;
+ $itemAttr['total'] = true;
+ }
+ if (isset($namedAttr['show'])) {
+ $namedAttr['total'] = true;
+ }
+ if (isset($itemAttr['show'])) {
+ $itemAttr['total'] = true;
+ }
+ $keyTerm = '';
+ if (isset($attributes['key'])) {
+ $keyTerm = "\$_smarty_tpl->getVariable('{$key}')->value => ";
+ }
+ if (isset($itemAttr['key'])) {
+ $keyTerm = "{$itemVar}->key => ";
+ }
+ if ($this->isNamed) {
+ $foreachVar = "\$_smarty_tpl->tpl_vars['__smarty_foreach_{$attributes['name']}']";
+ }
+ $needTotal = isset($itemAttr['total']);
+
+ if ($compiler->tag_nocache) {
+ // push a {nocache} tag onto the stack to prevent caching of this block
+ $this->openTag($compiler, 'nocache');
+ }
+
+ // Register tag
+ $this->openTag(
+ $compiler,
+ 'foreach',
+ ['foreach', $compiler->tag_nocache, $localVariablePrefix, $item, !empty($itemAttr)]
+ );
+
+ // generate output code
+ $output = "<?php\n";
+ $output .= "\$_from = \$_smarty_tpl->getSmarty()->getRuntime('Foreach')->init(\$_smarty_tpl, $from, " .
+ var_export($item, true);
+ if ($name || $needTotal || $key) {
+ $output .= ', ' . var_export($needTotal, true);
+ }
+ if ($name || $key) {
+ $output .= ', ' . var_export($key, true);
+ }
+ if ($name) {
+ $output .= ', ' . var_export($name, true) . ', ' . var_export($namedAttr, true);
+ }
+ $output .= ");\n";
+ if (isset($itemAttr['show'])) {
+ $output .= "{$itemVar}->show = ({$itemVar}->total > 0);\n";
+ }
+ if (isset($itemAttr['iteration'])) {
+ $output .= "{$itemVar}->iteration = 0;\n";
+ }
+ if (isset($itemAttr['index'])) {
+ $output .= "{$itemVar}->index = -1;\n";
+ }
+ $output .= "{$localVariablePrefix}DoElse = true;\n";
+ $output .= "foreach (\$_from ?? [] as {$keyTerm}{$itemVar}->value) {\n";
+ $output .= "{$localVariablePrefix}DoElse = false;\n";
+ if (isset($attributes['key']) && isset($itemAttr['key'])) {
+ $output .= "\$_smarty_tpl->assign('{$key}', {$itemVar}->key);\n";
+ }
+ if (isset($itemAttr['iteration'])) {
+ $output .= "{$itemVar}->iteration++;\n";
+ }
+ if (isset($itemAttr['index'])) {
+ $output .= "{$itemVar}->index++;\n";
+ }
+ if (isset($itemAttr['first'])) {
+ $output .= "{$itemVar}->first = !{$itemVar}->index;\n";
+ }
+ if (isset($itemAttr['last'])) {
+ $output .= "{$itemVar}->last = {$itemVar}->iteration === {$itemVar}->total;\n";
+ }
+ if (isset($foreachVar)) {
+ if (isset($namedAttr['iteration'])) {
+ $output .= "{$foreachVar}->value['iteration']++;\n";
+ }
+ if (isset($namedAttr['index'])) {
+ $output .= "{$foreachVar}->value['index']++;\n";
+ }
+ if (isset($namedAttr['first'])) {
+ $output .= "{$foreachVar}->value['first'] = !{$foreachVar}->value['index'];\n";
+ }
+ if (isset($namedAttr['last'])) {
+ $output .= "{$foreachVar}->value['last'] = {$foreachVar}->value['iteration'] === {$foreachVar}->value['total'];\n";
+ }
+ }
+ if (!empty($itemAttr)) {
+ $output .= "{$localVariablePrefix}Backup = clone \$_smarty_tpl->getVariable('{$item}');\n";
+ }
+ $output .= '?>';
+ return $output;
+ }
+
+ /**
+ * Get variable name from string
+ *
+ * @param string $input
+ *
+ * @return bool|string
+ */
+ private function getVariableName($input) {
+ if (preg_match('~^[$]_smarty_tpl->getValue\([\'"]*([0-9]*[a-zA-Z_]\w*)[\'"]*\]\)$~', $input, $match)) {
+ return $match[1];
+ }
+ return false;
+ }
+
+ /**
+ * Compiles code for to restore saved template variables
+ *
+ * @param int $levels number of levels to restore
+ *
+ * @return string compiled code
+ */
+ public function compileRestore($levels) {
+ return "\$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore(\$_smarty_tpl, {$levels});";
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/FunctionClose.php b/vendor/smarty/smarty/src/Compile/Tag/FunctionClose.php
new file mode 100644
index 000000000..aff6dc658
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/FunctionClose.php
@@ -0,0 +1,164 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Function
+ * Compiles the {function} {/function} tags
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Functionclose Class
+ *
+
+
+ */
+class FunctionClose extends Base {
+
+ /**
+ * Compiler object
+ *
+ * @var object
+ */
+ private $compiler = null;
+
+ /**
+ * Compiles code for the {/function} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object|\Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $this->compiler = $compiler;
+ $saved_data = $this->closeTag($compiler, ['function']);
+ $_attr = $saved_data[0];
+ $_name = trim($_attr['name'], '\'"');
+ $parentCompiler = $compiler->getParentCompiler();
+ $parentCompiler->tpl_function[$_name]['compiled_filepath'] =
+ $parentCompiler->getTemplate()->getCompiled()->filepath;
+ $parentCompiler->tpl_function[$_name]['uid'] = $compiler->getTemplate()->getSource()->uid;
+ $_parameter = $_attr;
+ unset($_parameter['name']);
+ // default parameter
+ $_paramsArray = $this->formatParamsArray($_attr);
+
+ $_paramsCode = (new \Smarty\Compiler\CodeFrame($compiler->getTemplate()))->insertLocalVariables();
+
+ if (!empty($_paramsArray)) {
+ $_params = 'array(' . implode(',', $_paramsArray) . ')';
+ $_paramsCode .= "\$params = array_merge($_params, \$params);\n";
+ }
+ $_functionCode = $compiler->getParser()->current_buffer;
+ // setup buffer for template function code
+ $compiler->getParser()->current_buffer = new \Smarty\ParseTree\Template();
+
+ $_funcName = "smarty_template_function_{$_name}_{$compiler->getTemplate()->getCompiled()->nocache_hash}";
+ $_funcNameCaching = $_funcName . '_nocache';
+
+ if ($compiler->getTemplate()->getCompiled()->getNocacheCode()) {
+ $parentCompiler->tpl_function[$_name]['call_name_caching'] = $_funcNameCaching;
+ $output = "<?php\n";
+ $output .= $compiler->cStyleComment(" {$_funcNameCaching} ") . "\n";
+ $output .= "if (!function_exists('{$_funcNameCaching}')) {\n";
+ $output .= "function {$_funcNameCaching} (\\Smarty\\Template \$_smarty_tpl,\$params) {\n";
+
+ $output .= "ob_start();\n";
+ $output .= "\$_smarty_tpl->getCompiled()->setNocacheCode(true);\n";
+ $output .= $_paramsCode;
+ $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->assign(\$key, \$value);\n}\n";
+ $output .= "\$params = var_export(\$params, true);\n";
+ $output .= "echo \"/*%%SmartyNocache:{$compiler->getTemplate()->getCompiled()->nocache_hash}%%*/<?php ";
+ $output .= "\\\$_smarty_tpl->pushStack();\nforeach (\$params as \\\$key => \\\$value) {\n\\\$_smarty_tpl->assign(\\\$key, \\\$value);\n}\n?>";
+ $output .= "/*/%%SmartyNocache:{$compiler->getTemplate()->getCompiled()->nocache_hash}%%*/\";?>";
+ $compiler->getParser()->current_buffer->append_subtree(
+ $compiler->getParser(),
+ new \Smarty\ParseTree\Tag(
+ $compiler->getParser(),
+ $output
+ )
+ );
+ $compiler->getParser()->current_buffer->append_subtree($compiler->getParser(), $_functionCode);
+ $output = "<?php echo \"/*%%SmartyNocache:{$compiler->getTemplate()->getCompiled()->nocache_hash}%%*/<?php ";
+ $output .= "\\\$_smarty_tpl->popStack();?>\n";
+ $output .= "/*/%%SmartyNocache:{$compiler->getTemplate()->getCompiled()->nocache_hash}%%*/\";\n?>";
+ $output .= "<?php echo str_replace('{$compiler->getTemplate()->getCompiled()->nocache_hash}', \$_smarty_tpl->getCompiled()->nocache_hash ?? '', ob_get_clean());\n";
+ $output .= "}\n}\n";
+ $output .= $compiler->cStyleComment("/ {$_funcName}_nocache ") . "\n\n";
+ $output .= "?>\n";
+ $compiler->getParser()->current_buffer->append_subtree(
+ $compiler->getParser(),
+ new \Smarty\ParseTree\Tag(
+ $compiler->getParser(),
+ $output
+ )
+ );
+ $_functionCode = new \Smarty\ParseTree\Tag(
+ $compiler->getParser(),
+ preg_replace_callback(
+ "/((<\?php )?echo '\/\*%%SmartyNocache:{$compiler->getTemplate()->getCompiled()->nocache_hash}%%\*\/([\S\s]*?)\/\*\/%%SmartyNocache:{$compiler->getTemplate()->getCompiled()->nocache_hash}%%\*\/';(\?>\n)?)/",
+ [$this, 'removeNocache'],
+ $_functionCode->to_smarty_php($compiler->getParser())
+ )
+ );
+ }
+ $parentCompiler->tpl_function[$_name]['call_name'] = $_funcName;
+ $output = "<?php\n";
+ $output .= $compiler->cStyleComment(" {$_funcName} ") . "\n";
+ $output .= "if (!function_exists('{$_funcName}')) {\n";
+ $output .= "function {$_funcName}(\\Smarty\\Template \$_smarty_tpl,\$params) {\n";
+ $output .= $_paramsCode;
+ $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->assign(\$key, \$value);\n}\n";
+ $output .= "?>\n";
+ $compiler->getParser()->current_buffer->append_subtree(
+ $compiler->getParser(),
+ new \Smarty\ParseTree\Tag(
+ $compiler->getParser(),
+ $output
+ )
+ );
+ $compiler->getParser()->current_buffer->append_subtree($compiler->getParser(), $_functionCode);
+ $output = "<?php\n}}\n";
+ $output .= $compiler->cStyleComment("/ {$_funcName} ") . "\n\n";
+ $output .= "?>\n";
+ $compiler->getParser()->current_buffer->append_subtree(
+ $compiler->getParser(),
+ new \Smarty\ParseTree\Tag(
+ $compiler->getParser(),
+ $output
+ )
+ );
+ $parentCompiler->blockOrFunctionCode .= $compiler->getParser()->current_buffer->to_smarty_php($compiler->getParser());
+ // restore old buffer
+ $compiler->getParser()->current_buffer = $saved_data[1];
+ // restore old status
+ $compiler->getTemplate()->getCompiled()->setNocacheCode($saved_data[2]);
+ $compiler->getTemplate()->caching = $saved_data[3];
+ return '';
+ }
+
+ /**
+ * Remove nocache code
+ *
+ * @param $match
+ *
+ * @return string
+ */
+ public function removeNocache($match) {
+ $hash = $this->compiler->getTemplate()->getCompiled()->nocache_hash;
+ $code =
+ preg_replace(
+ "/((<\?php )?echo '\/\*%%SmartyNocache:{$hash}%%\*\/)|(\/\*\/%%SmartyNocache:{$hash}%%\*\/';(\?>\n)?)/",
+ '',
+ $match[0]
+ );
+ return str_replace(['\\\'', '\\\\\''], ['\'', '\\\''], $code);
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/FunctionTag.php b/vendor/smarty/smarty/src/Compile/Tag/FunctionTag.php
new file mode 100644
index 000000000..c291c3dee
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/FunctionTag.php
@@ -0,0 +1,73 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Function Class
+ *
+
+
+ */
+class FunctionTag extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $required_attributes = ['name'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $shorttag_order = ['name'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $optional_attributes = ['_any'];
+
+ /**
+ * Compiles code for the {function} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($_attr['nocache'] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+ unset($_attr['nocache']);
+ $_name = trim($_attr['name'], '\'"');
+
+ if (!preg_match('/^[a-zA-Z0-9_\x80-\xff]+$/', $_name)) {
+ $compiler->trigger_template_error("Function name contains invalid characters: {$_name}", null, true);
+ }
+
+ $compiler->getParentCompiler()->tpl_function[$_name] = [];
+ $save = [
+ $_attr, $compiler->getParser()->current_buffer, $compiler->getTemplate()->getCompiled()->getNocacheCode(),
+ $compiler->getTemplate()->caching,
+ ];
+ $this->openTag($compiler, 'function', $save);
+ // Init temporary context
+ $compiler->getParser()->current_buffer = new \Smarty\ParseTree\Template();
+ $compiler->getTemplate()->getCompiled()->setNocacheCode(false);
+ return '';
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/IfClose.php b/vendor/smarty/smarty/src/Compile/Tag/IfClose.php
new file mode 100644
index 000000000..df15094f1
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/IfClose.php
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile If
+ * Compiles the {if} {else} {elseif} {/if} tags
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Ifclose Class
+ *
+
+
+ */
+class IfClose extends Base {
+
+ /**
+ * Compiles code for the {/if} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+
+ [$nesting, $nocache_pushed] = $this->closeTag($compiler, ['if', 'else', 'elseif']);
+
+ if ($nocache_pushed) {
+ // pop the pushed virtual nocache tag
+ $this->closeTag($compiler, 'nocache');
+ $compiler->tag_nocache = true;
+ }
+
+ $tmp = '';
+ for ($i = 0; $i < $nesting; $i++) {
+ $tmp .= '}';
+ }
+ return "<?php {$tmp}?>";
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/IfTag.php b/vendor/smarty/smarty/src/Compile/Tag/IfTag.php
new file mode 100644
index 000000000..7790859b1
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/IfTag.php
@@ -0,0 +1,70 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile If Class
+ *
+
+
+ */
+class IfTag extends Base {
+
+ /**
+ * Compiles code for the {if} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+
+ if ($compiler->tag_nocache) {
+ // push a {nocache} tag onto the stack to prevent caching of this block
+ $this->openTag($compiler, 'nocache');
+ }
+
+ $this->openTag($compiler, 'if', [1, $compiler->tag_nocache]);
+
+ if (!isset($parameter['if condition'])) {
+ $compiler->trigger_template_error('missing if condition', null, true);
+ }
+ if (is_array($parameter['if condition'])) {
+ if (is_array($parameter['if condition']['var'])) {
+ $var = $parameter['if condition']['var']['var'];
+ } else {
+ $var = $parameter['if condition']['var'];
+ }
+ if ($compiler->isNocacheActive()) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $_output = "<?php {$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]};?>\n";
+ $assignAttr = [];
+ $assignAttr[]['value'] = $prefixVar;
+ $assignCompiler = new Assign();
+ if (is_array($parameter['if condition']['var'])) {
+ $assignAttr[]['var'] = $parameter['if condition']['var']['var'];
+ $_output .= $assignCompiler->compile(
+ $assignAttr,
+ $compiler,
+ ['smarty_internal_index' => $parameter['if condition']['var']['smarty_internal_index']]
+ );
+ } else {
+ $assignAttr[]['var'] = $parameter['if condition']['var'];
+ $_output .= $assignCompiler->compile($assignAttr, $compiler, []);
+ }
+ $_output .= "<?php if ({$prefixVar}) {?>";
+ return $_output;
+ } else {
+ return "<?php if ({$parameter['if condition']}) {?>";
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/IncludeTag.php b/vendor/smarty/smarty/src/Compile/Tag/IncludeTag.php
new file mode 100644
index 000000000..8e775811e
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/IncludeTag.php
@@ -0,0 +1,189 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Include
+ * Compiles the {include} tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+use Smarty\Compiler\Template;
+use Smarty\Data;
+use Smarty\Smarty;
+use Smarty\Template\Compiled;
+
+/**
+ * Smarty Internal Plugin Compile Include Class
+ *
+
+
+ */
+class IncludeTag extends Base {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ protected $required_attributes = ['file'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ protected $shorttag_order = ['file'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ protected $option_flags = ['nocache', 'inline', 'caching'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BaseCompiler
+ */
+ protected $optional_attributes = ['_any'];
+
+ /**
+ * Compiles code for the {include} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param Template $compiler compiler object
+ *
+ * @return string
+ * @throws \Exception
+ * @throws \Smarty\CompilerException
+ * @throws \Smarty\Exception
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $uid = $t_hash = null;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $fullResourceName = $source_resource = $_attr['file'];
+ $variable_template = false;
+ // parse resource_name
+ if (preg_match('/^([\'"])(([A-Za-z0-9_\-]{2,})[:])?(([^$()]+)|(.+))\1$/', $source_resource, $match)) {
+ $type = !empty($match[3]) ? $match[3] : $compiler->getTemplate()->getSmarty()->default_resource_type;
+ $name = !empty($match[5]) ? $match[5] : $match[6];
+ $handler = \Smarty\Resource\BasePlugin::load($compiler->getSmarty(), $type);
+ if ($handler->recompiled) {
+ $variable_template = true;
+ }
+ if (!$variable_template) {
+ if ($type !== 'string') {
+ $fullResourceName = "{$type}:{$name}";
+ $compiled = $compiler->getParentCompiler()->getTemplate()->getCompiled();
+ if (isset($compiled->includes[$fullResourceName])) {
+ $compiled->includes[$fullResourceName]++;
+ } else {
+ if ("{$compiler->getTemplate()->getSource()->type}:{$compiler->getTemplate()->getSource()->name}" ==
+ $fullResourceName
+ ) {
+ // recursive call of current template
+ $compiled->includes[$fullResourceName] = 2;
+ } else {
+ $compiled->includes[$fullResourceName] = 1;
+ }
+ }
+ $fullResourceName = $match[1] . $fullResourceName . $match[1];
+ }
+ }
+ }
+ // scope setup
+ $_scope = isset($_attr['scope']) ? $this->convertScope($_attr['scope']) : 0;
+
+ // assume caching is off
+ $_caching = Smarty::CACHING_OFF;
+
+ // caching was on and {include} is not in nocache mode
+ if ($compiler->getTemplate()->caching && !$compiler->isNocacheActive()) {
+ $_caching = \Smarty\Template::CACHING_NOCACHE_CODE;
+ }
+
+ /*
+ * if the {include} tag provides individual parameter for caching or compile_id
+ * the subtemplate must not be included into the common cache file and is treated like
+ * a call in nocache mode.
+ *
+ */
+
+ $call_nocache = $compiler->isNocacheActive();
+ if ($_attr['nocache'] !== true && $_attr['caching']) {
+ $_caching = $_new_caching = (int)$_attr['caching'];
+ $call_nocache = true;
+ } else {
+ $_new_caching = Smarty::CACHING_LIFETIME_CURRENT;
+ }
+ if (isset($_attr['cache_lifetime'])) {
+ $_cache_lifetime = $_attr['cache_lifetime'];
+ $call_nocache = true;
+ $_caching = $_new_caching;
+ } else {
+ $_cache_lifetime = '$_smarty_tpl->cache_lifetime';
+ }
+ if (isset($_attr['cache_id'])) {
+ $_cache_id = $_attr['cache_id'];
+ $call_nocache = true;
+ $_caching = $_new_caching;
+ } else {
+ $_cache_id = '$_smarty_tpl->cache_id';
+ }
+
+ // assign attribute
+ if (isset($_attr['assign'])) {
+ // output will be stored in a smarty variable instead of being displayed
+ if ($_assign = $compiler->getId($_attr['assign'])) {
+ $_assign = "'{$_assign}'";
+ if ($call_nocache) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($_attr['assign']);
+ }
+ } else {
+ $_assign = $_attr['assign'];
+ }
+ }
+ $has_compiled_template = false;
+
+ // delete {include} standard attributes
+ unset($_attr['file'], $_attr['assign'], $_attr['cache_id'], $_attr['cache_lifetime'], $_attr['nocache'], $_attr['caching'], $_attr['scope'], $_attr['inline']);
+ // remaining attributes must be assigned as smarty variable
+ $_vars = 'array()';
+ if (!empty($_attr)) {
+ $_pairs = [];
+ // create variables
+ foreach ($_attr as $key => $value) {
+ $_pairs[] = "'$key'=>$value";
+ }
+ $_vars = 'array(' . join(',', $_pairs) . ')';
+ }
+ if ($call_nocache) {
+ $compiler->tag_nocache = true;
+ }
+ $_output = "<?php ";
+ // was there an assign attribute
+ if (isset($_assign)) {
+ $_output .= "ob_start();\n";
+ }
+ $_output .= "\$_smarty_tpl->renderSubTemplate({$fullResourceName}, $_cache_id, \$_smarty_tpl->compile_id, " .
+ "$_caching, $_cache_lifetime, $_vars, (int) {$_scope}, \$_smarty_current_dir);\n";
+ if (isset($_assign)) {
+ $_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean(), false, {$_scope});\n";
+ }
+ $_output .= "?>";
+ return $_output;
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Inheritance.php b/vendor/smarty/smarty/src/Compile/Tag/Inheritance.php
new file mode 100644
index 000000000..6764651a1
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Inheritance.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Shared Inheritance
+ * Shared methods for {extends} and {block} tags
+ *
+
+
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Shared Inheritance Class
+ *
+
+
+ */
+abstract class Inheritance extends Base
+{
+ /**
+ * Compile inheritance initialization code as prefix
+ *
+ * @param \Smarty\Compiler\Template $compiler
+ * @param bool|false $initChildSequence if true force child template
+ */
+ public static function postCompile(\Smarty\Compiler\Template $compiler, $initChildSequence = false)
+ {
+ $compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->getInheritance()->init(\$_smarty_tpl, " .
+ var_export($initChildSequence, true) . ");\n?>\n";
+ }
+
+ /**
+ * Register post compile callback to compile inheritance initialization code
+ *
+ * @param \Smarty\Compiler\Template $compiler
+ * @param bool|false $initChildSequence if true force child template
+ */
+ public function registerInit(\Smarty\Compiler\Template $compiler, $initChildSequence = false)
+ {
+ if ($initChildSequence || !isset($compiler->_cache[ 'inheritanceInit' ])) {
+ $compiler->registerPostCompileCallback(
+ array(self::class, 'postCompile'),
+ array($initChildSequence),
+ 'inheritanceInit',
+ $initChildSequence
+ );
+ $compiler->_cache[ 'inheritanceInit' ] = true;
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Ldelim.php b/vendor/smarty/smarty/src/Compile/Tag/Ldelim.php
new file mode 100644
index 000000000..a265fa70c
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Ldelim.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Ldelim
+ * Compiles the {ldelim} tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Ldelim Class
+ *
+
+
+ */
+class Ldelim extends Base {
+
+ /**
+ * Compiles code for the {ldelim} tag
+ * This tag does output the left delimiter
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($_attr['nocache'] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+ return $compiler->getTemplate()->getLeftDelimiter();
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Nocache.php b/vendor/smarty/smarty/src/Compile/Tag/Nocache.php
new file mode 100644
index 000000000..dd30f8937
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Nocache.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Nocache Class
+ *
+
+
+ */
+class Nocache extends Base {
+
+ /**
+ * Array of names of valid option flags
+ *
+ * @var array
+ */
+ protected $option_flags = [];
+
+ /**
+ * Compiles code for the {nocache} tag
+ * This tag does not generate compiled output. It only sets a compiler flag.
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $this->openTag($compiler, 'nocache');
+ return '';
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/NocacheClose.php b/vendor/smarty/smarty/src/Compile/Tag/NocacheClose.php
new file mode 100644
index 000000000..75edd9982
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/NocacheClose.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Nocache
+ * Compiles the {nocache} {/nocache} tags.
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Nocacheclose Class
+ *
+
+
+ */
+class NocacheClose extends Base {
+
+ /**
+ * Compiles code for the {/nocache} tag
+ * This tag does not generate compiled output. It only sets a compiler flag.
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $this->closeTag($compiler, ['nocache']);
+ return '';
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Rdelim.php b/vendor/smarty/smarty/src/Compile/Tag/Rdelim.php
new file mode 100644
index 000000000..60e7a23d1
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Rdelim.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Rdelim
+ * Compiles the {rdelim} tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+/**
+ * Smarty Internal Plugin Compile Rdelim Class
+ *
+
+
+ */
+class Rdelim extends Ldelim {
+
+ /**
+ * Compiles code for the {rdelim} tag
+ * This tag does output the right delimiter.
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ parent::compile($args, $compiler);
+ return $compiler->getTemplate()->getRightDelimiter();
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Section.php b/vendor/smarty/smarty/src/Compile/Tag/Section.php
new file mode 100644
index 000000000..136591174
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Section.php
@@ -0,0 +1,399 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+/**
+ * Smarty Internal Plugin Compile Section Class
+ *
+
+
+ */
+class Section extends ForeachSection {
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $required_attributes = ['name', 'loop'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $shorttag_order = ['name', 'loop'];
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see BasePlugin
+ */
+ protected $optional_attributes = ['start', 'step', 'max', 'show', 'properties'];
+
+ /**
+ * counter
+ *
+ * @var int
+ */
+ protected $counter = 0;
+
+ /**
+ * Name of this tag
+ *
+ * @var string
+ */
+ protected $tagName = 'section';
+
+ /**
+ * Valid properties of $smarty.section.name.xxx variable
+ *
+ * @var array
+ */
+ protected $nameProperties = [
+ 'first', 'last', 'index', 'iteration', 'show', 'total', 'rownum', 'index_prev',
+ 'index_next', 'loop',
+ ];
+
+ /**
+ * {section} tag has no item properties
+ *
+ * @var array
+ */
+ protected $itemProperties = null;
+
+ /**
+ * {section} tag has always name attribute
+ *
+ * @var bool
+ */
+ protected $isNamed = true;
+
+ /**
+ * Compiles code for the {section} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ * @throws \Smarty\Exception
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $compiler->loopNesting++;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $attributes = ['name' => $compiler->getId($_attr['name'])];
+ unset($_attr['name']);
+ foreach ($attributes as $a => $v) {
+ if ($v === false) {
+ $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
+ }
+ }
+ $local = "\$__section_{$attributes['name']}_" . $this->counter++ . '_';
+ $sectionVar = "\$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}']";
+
+ if ($compiler->tag_nocache) {
+ // push a {nocache} tag onto the stack to prevent caching of this block
+ $this->openTag($compiler, 'nocache');
+ }
+
+ $this->openTag($compiler, 'section', ['section', $compiler->tag_nocache]);
+
+ $initLocal = [];
+ $initNamedProperty = [];
+ $initFor = [];
+ $incFor = [];
+ $cmpFor = [];
+ $propValue = [
+ 'index' => "{$sectionVar}->value['index']", 'show' => 'true', 'step' => 1,
+ 'iteration' => "{$local}iteration",
+ ];
+ $propType = ['index' => 2, 'iteration' => 2, 'show' => 0, 'step' => 0,];
+ // search for used tag attributes
+ $this->scanForProperties($attributes, $compiler);
+ if (!empty($this->matchResults['named'])) {
+ $namedAttr = $this->matchResults['named'];
+ }
+ if (isset($_attr['properties']) && preg_match_all("/['](.*?)[']/", $_attr['properties'], $match)) {
+ foreach ($match[1] as $prop) {
+ if (in_array($prop, $this->nameProperties)) {
+ $namedAttr[$prop] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ }
+ $namedAttr['index'] = true;
+ $output = "<?php\n";
+ foreach ($_attr as $attr_name => $attr_value) {
+ switch ($attr_name) {
+ case 'loop':
+ if (is_numeric($attr_value)) {
+ $v = (int)$attr_value;
+ $t = 0;
+ } else {
+ $v = "(is_array(@\$_loop=$attr_value) ? count(\$_loop) : max(0, (int) \$_loop))";
+ $t = 1;
+ }
+ if ($t === 1) {
+ $initLocal['loop'] = $v;
+ $v = "{$local}loop";
+ }
+ break;
+ case 'show':
+ if (is_bool($attr_value)) {
+ $v = $attr_value ? 'true' : 'false';
+ $t = 0;
+ } else {
+ $v = "(bool) $attr_value";
+ $t = 3;
+ }
+ break;
+ case 'step':
+ if (is_numeric($attr_value)) {
+ $v = (int)$attr_value;
+ $v = ($v === 0) ? 1 : $v;
+ $t = 0;
+ break;
+ }
+ $initLocal['step'] = "((int)@$attr_value) === 0 ? 1 : (int)@$attr_value";
+ $v = "{$local}step";
+ $t = 2;
+ break;
+ case 'max':
+ case 'start':
+ if (is_numeric($attr_value)) {
+ $v = (int)$attr_value;
+ $t = 0;
+ break;
+ }
+ $v = "(int)@$attr_value";
+ $t = 3;
+ break;
+ }
+ if ($t === 3 && $compiler->getId($attr_value)) {
+ $t = 1;
+ }
+ $propValue[$attr_name] = $v;
+ $propType[$attr_name] = $t;
+ }
+ if (isset($namedAttr['step'])) {
+ $initNamedProperty['step'] = $propValue['step'];
+ }
+ if (isset($namedAttr['iteration'])) {
+ $propValue['iteration'] = "{$sectionVar}->value['iteration']";
+ }
+ $incFor['iteration'] = "{$propValue['iteration']}++";
+ $initFor['iteration'] = "{$propValue['iteration']} = 1";
+ if ($propType['step'] === 0) {
+ if ($propValue['step'] === 1) {
+ $incFor['index'] = "{$sectionVar}->value['index']++";
+ } elseif ($propValue['step'] > 1) {
+ $incFor['index'] = "{$sectionVar}->value['index'] += {$propValue['step']}";
+ } else {
+ $incFor['index'] = "{$sectionVar}->value['index'] -= " . -$propValue['step'];
+ }
+ } else {
+ $incFor['index'] = "{$sectionVar}->value['index'] += {$propValue['step']}";
+ }
+ if (!isset($propValue['max'])) {
+ $propValue['max'] = $propValue['loop'];
+ $propType['max'] = $propType['loop'];
+ } elseif ($propType['max'] !== 0) {
+ $propValue['max'] = "{$propValue['max']} < 0 ? {$propValue['loop']} : {$propValue['max']}";
+ $propType['max'] = 1;
+ } else {
+ if ($propValue['max'] < 0) {
+ $propValue['max'] = $propValue['loop'];
+ $propType['max'] = $propType['loop'];
+ }
+ }
+ if (!isset($propValue['start'])) {
+ $start_code =
+ [1 => "{$propValue['step']} > 0 ? ", 2 => '0', 3 => ' : ', 4 => $propValue['loop'], 5 => ' - 1'];
+ if ($propType['loop'] === 0) {
+ $start_code[5] = '';
+ $start_code[4] = $propValue['loop'] - 1;
+ }
+ if ($propType['step'] === 0) {
+ if ($propValue['step'] > 0) {
+ $start_code = [1 => '0'];
+ $propType['start'] = 0;
+ } else {
+ $start_code[1] = $start_code[2] = $start_code[3] = '';
+ $propType['start'] = $propType['loop'];
+ }
+ } else {
+ $propType['start'] = 1;
+ }
+ $propValue['start'] = join('', $start_code);
+ } else {
+ $start_code =
+ [
+ 1 => "{$propValue['start']} < 0 ? ", 2 => 'max(', 3 => "{$propValue['step']} > 0 ? ", 4 => '0',
+ 5 => ' : ', 6 => '-1', 7 => ', ', 8 => "{$propValue['start']} + {$propValue['loop']}", 10 => ')',
+ 11 => ' : ', 12 => 'min(', 13 => $propValue['start'], 14 => ', ',
+ 15 => "{$propValue['step']} > 0 ? ", 16 => $propValue['loop'], 17 => ' : ',
+ 18 => $propType['loop'] === 0 ? $propValue['loop'] - 1 : "{$propValue['loop']} - 1",
+ 19 => ')',
+ ];
+ if ($propType['step'] === 0) {
+ $start_code[3] = $start_code[5] = $start_code[15] = $start_code[17] = '';
+ if ($propValue['step'] > 0) {
+ $start_code[6] = $start_code[18] = '';
+ } else {
+ $start_code[4] = $start_code[16] = '';
+ }
+ }
+ if ($propType['start'] === 0) {
+ if ($propType['loop'] === 0) {
+ $start_code[8] = $propValue['start'] + $propValue['loop'];
+ }
+ $propType['start'] = $propType['step'] + $propType['loop'];
+ $start_code[1] = '';
+ if ($propValue['start'] < 0) {
+ for ($i = 11; $i <= 19; $i++) {
+ $start_code[$i] = '';
+ }
+ if ($propType['start'] === 0) {
+ $start_code = [
+ max(
+ $propValue['step'] > 0 ? 0 : -1,
+ $propValue['start'] + $propValue['loop']
+ ),
+ ];
+ }
+ } else {
+ for ($i = 1; $i <= 11; $i++) {
+ $start_code[$i] = '';
+ }
+ if ($propType['start'] === 0) {
+ $start_code =
+ [
+ min(
+ $propValue['step'] > 0 ? $propValue['loop'] : $propValue['loop'] - 1,
+ $propValue['start']
+ ),
+ ];
+ }
+ }
+ }
+ $propValue['start'] = join('', $start_code);
+ }
+ if ($propType['start'] !== 0) {
+ $initLocal['start'] = $propValue['start'];
+ $propValue['start'] = "{$local}start";
+ }
+ $initFor['index'] = "{$sectionVar}->value['index'] = {$propValue['start']}";
+ if (!isset($_attr['start']) && !isset($_attr['step']) && !isset($_attr['max'])) {
+ $propValue['total'] = $propValue['loop'];
+ $propType['total'] = $propType['loop'];
+ } else {
+ $propType['total'] =
+ $propType['start'] + $propType['loop'] + $propType['step'] + $propType['max'];
+ if ($propType['total'] === 0) {
+ $propValue['total'] =
+ min(
+ ceil(
+ ($propValue['step'] > 0 ? $propValue['loop'] - $propValue['start'] :
+ (int)$propValue['start'] + 1) / abs($propValue['step'])
+ ),
+ $propValue['max']
+ );
+ } else {
+ $total_code = [
+ 1 => 'min(', 2 => 'ceil(', 3 => '(', 4 => "{$propValue['step']} > 0 ? ",
+ 5 => $propValue['loop'], 6 => ' - ', 7 => $propValue['start'], 8 => ' : ',
+ 9 => $propValue['start'], 10 => '+ 1', 11 => ')', 12 => '/ ', 13 => 'abs(',
+ 14 => $propValue['step'], 15 => ')', 16 => ')', 17 => ", {$propValue['max']})",
+ ];
+ if (!isset($propValue['max'])) {
+ $total_code[1] = $total_code[17] = '';
+ }
+ if ($propType['loop'] + $propType['start'] === 0) {
+ $total_code[5] = $propValue['loop'] - $propValue['start'];
+ $total_code[6] = $total_code[7] = '';
+ }
+ if ($propType['start'] === 0) {
+ $total_code[9] = (int)$propValue['start'] + 1;
+ $total_code[10] = '';
+ }
+ if ($propType['step'] === 0) {
+ $total_code[13] = $total_code[15] = '';
+ if ($propValue['step'] === 1 || $propValue['step'] === -1) {
+ $total_code[2] = $total_code[12] = $total_code[14] = $total_code[16] = '';
+ } elseif ($propValue['step'] < 0) {
+ $total_code[14] = -$propValue['step'];
+ }
+ $total_code[4] = '';
+ if ($propValue['step'] > 0) {
+ $total_code[8] = $total_code[9] = $total_code[10] = '';
+ } else {
+ $total_code[5] = $total_code[6] = $total_code[7] = $total_code[8] = '';
+ }
+ }
+ $propValue['total'] = join('', $total_code);
+ }
+ }
+ if (isset($namedAttr['loop'])) {
+ $initNamedProperty['loop'] = "'loop' => {$propValue['loop']}";
+ }
+ if (isset($namedAttr['total'])) {
+ $initNamedProperty['total'] = "'total' => {$propValue['total']}";
+ if ($propType['total'] > 0) {
+ $propValue['total'] = "{$sectionVar}->value['total']";
+ }
+ } elseif ($propType['total'] > 0) {
+ $initLocal['total'] = $propValue['total'];
+ $propValue['total'] = "{$local}total";
+ }
+ $cmpFor['iteration'] = "{$propValue['iteration']} <= {$propValue['total']}";
+ foreach ($initLocal as $key => $code) {
+ $output .= "{$local}{$key} = {$code};\n";
+ }
+ $_vars = 'array(' . join(', ', $initNamedProperty) . ')';
+ $output .= "{$sectionVar} = new \\Smarty\\Variable({$_vars});\n";
+ $cond_code = "{$propValue['total']} !== 0";
+ if ($propType['total'] === 0) {
+ if ($propValue['total'] === 0) {
+ $cond_code = 'false';
+ } else {
+ $cond_code = 'true';
+ }
+ }
+ if ($propType['show'] > 0) {
+ $output .= "{$local}show = {$propValue['show']} ? {$cond_code} : false;\n";
+ $output .= "if ({$local}show) {\n";
+ } elseif ($propValue['show'] === 'true') {
+ $output .= "if ({$cond_code}) {\n";
+ } else {
+ $output .= "if (false) {\n";
+ }
+ $jinit = join(', ', $initFor);
+ $jcmp = join(', ', $cmpFor);
+ $jinc = join(', ', $incFor);
+ $output .= "for ({$jinit}; {$jcmp}; {$jinc}){\n";
+ if (isset($namedAttr['rownum'])) {
+ $output .= "{$sectionVar}->value['rownum'] = {$propValue['iteration']};\n";
+ }
+ if (isset($namedAttr['index_prev'])) {
+ $output .= "{$sectionVar}->value['index_prev'] = {$propValue['index']} - {$propValue['step']};\n";
+ }
+ if (isset($namedAttr['index_next'])) {
+ $output .= "{$sectionVar}->value['index_next'] = {$propValue['index']} + {$propValue['step']};\n";
+ }
+ if (isset($namedAttr['first'])) {
+ $output .= "{$sectionVar}->value['first'] = ({$propValue['iteration']} === 1);\n";
+ }
+ if (isset($namedAttr['last'])) {
+ $output .= "{$sectionVar}->value['last'] = ({$propValue['iteration']} === {$propValue['total']});\n";
+ }
+ $output .= '?>';
+ return $output;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/SectionClose.php b/vendor/smarty/smarty/src/Compile/Tag/SectionClose.php
new file mode 100644
index 000000000..24c79c32a
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/SectionClose.php
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Section
+ * Compiles the {section} {sectionelse} {/section} tags
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Sectionclose Class
+ */
+class SectionClose extends Base {
+
+ /**
+ * Compiles code for the {/section} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $compiler->loopNesting--;
+
+ [$openTag, $nocache_pushed] = $this->closeTag($compiler, ['section', 'sectionelse']);
+
+ if ($nocache_pushed) {
+ // pop the pushed virtual nocache tag
+ $this->closeTag($compiler, 'nocache');
+ }
+
+ $output = "<?php\n";
+ if ($openTag === 'sectionelse') {
+ $output .= "}\n";
+ } else {
+ $output .= "}\n}\n";
+ }
+ $output .= '?>';
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/SectionElse.php b/vendor/smarty/smarty/src/Compile/Tag/SectionElse.php
new file mode 100644
index 000000000..b9ea56366
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/SectionElse.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Sectionelse Class
+ *
+
+
+ */
+class SectionElse extends Base {
+
+ /**
+ * Compiles code for the {sectionelse} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ [$openTag, $nocache_pushed] = $this->closeTag($compiler, ['section']);
+ $this->openTag($compiler, 'sectionelse', ['sectionelse', $nocache_pushed]);
+ return "<?php }} else {\n ?>";
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/Setfilter.php b/vendor/smarty/smarty/src/Compile/Tag/Setfilter.php
new file mode 100644
index 000000000..9da2f969c
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/Setfilter.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Setfilter Class
+ *
+
+
+ */
+class Setfilter extends Base {
+
+ /**
+ * Compiles code for setfilter tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $compiler->variable_filter_stack[] = $compiler->getSmarty()->getDefaultModifiers();
+
+ // The modifier_list is passed as an array of array's. The inner arrays have the modifier at index 0,
+ // and, possibly, parameters at subsequent indexes, e.g. [ ['escape','"mail"'] ]
+ // We will collapse them so the syntax is OK for ::setDefaultModifiers() as follows: [ 'escape:"mail"' ]
+ $newList = [];
+ foreach($parameter['modifier_list'] as $modifier) {
+ $newList[] = implode(':', $modifier);
+ }
+
+ $compiler->getSmarty()->setDefaultModifiers($newList);
+
+ return '';
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compile/Tag/SetfilterClose.php b/vendor/smarty/smarty/src/Compile/Tag/SetfilterClose.php
new file mode 100644
index 000000000..2814f641d
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/SetfilterClose.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Setfilter
+ * Compiles code for setfilter tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Setfilterclose Class
+ *
+
+
+ */
+class SetfilterClose extends Base {
+
+ /**
+ * Compiles code for the {/setfilter} tag
+ * This tag does not generate compiled output. It resets variable filter.
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $this->getAttributes($compiler, $args);
+
+ // reset variable filter to previous state
+ $compiler->getSmarty()->setDefaultModifiers(
+ count($compiler->variable_filter_stack) ? array_pop($compiler->variable_filter_stack) : []
+ );
+
+ return '';
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/WhileClose.php b/vendor/smarty/smarty/src/Compile/Tag/WhileClose.php
new file mode 100644
index 000000000..5adb3a49b
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/WhileClose.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile While
+ * Compiles the {while} tag
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile Whileclose Class
+ *
+
+
+ */
+class WhileClose extends Base {
+
+ /**
+ * Compiles code for the {/while} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $compiler->loopNesting--;
+
+ $nocache_pushed = $this->closeTag($compiler, ['while']);
+
+ if ($nocache_pushed) {
+ // pop the pushed virtual nocache tag
+ $this->closeTag($compiler, 'nocache');
+ $compiler->tag_nocache = true;
+ }
+
+ return "<?php }?>\n";
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compile/Tag/WhileTag.php b/vendor/smarty/smarty/src/Compile/Tag/WhileTag.php
new file mode 100644
index 000000000..3300b5075
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compile/Tag/WhileTag.php
@@ -0,0 +1,72 @@
+<?php
+
+namespace Smarty\Compile\Tag;
+
+use Smarty\Compile\Base;
+
+/**
+ * Smarty Internal Plugin Compile While Class
+ *
+
+
+ */
+class WhileTag extends Base {
+
+ /**
+ * Compiles code for the {while} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty\Compiler\Template $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \Smarty\CompilerException
+ */
+ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = [], $tag = null, $function = null): string
+ {
+ $compiler->loopNesting++;
+
+ if ($compiler->tag_nocache) {
+ // push a {nocache} tag onto the stack to prevent caching of this block
+ $this->openTag($compiler, 'nocache');
+ }
+
+ $this->openTag($compiler, 'while', $compiler->tag_nocache);
+
+ if (!array_key_exists('if condition', $parameter)) {
+ $compiler->trigger_template_error('missing while condition', null, true);
+ }
+
+ if (is_array($parameter['if condition'])) {
+ if ($compiler->isNocacheActive()) {
+ // create nocache var to make it know for further compiling
+ if (is_array($parameter['if condition']['var'])) {
+ $var = $parameter['if condition']['var']['var'];
+ } else {
+ $var = $parameter['if condition']['var'];
+ }
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $assignCompiler = new Assign();
+ $assignAttr = [];
+ $assignAttr[]['value'] = $prefixVar;
+ if (is_array($parameter['if condition']['var'])) {
+ $assignAttr[]['var'] = $parameter['if condition']['var']['var'];
+ $_output = "<?php while ({$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]}) {?>";
+ $_output .= $assignCompiler->compile(
+ $assignAttr,
+ $compiler,
+ ['smarty_internal_index' => $parameter['if condition']['var']['smarty_internal_index']]
+ );
+ } else {
+ $assignAttr[]['var'] = $parameter['if condition']['var'];
+ $_output = "<?php while ({$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]}) {?>";
+ $_output .= $assignCompiler->compile($assignAttr, $compiler, []);
+ }
+ return $_output;
+ } else {
+ return "<?php\n while ({$parameter['if condition']}) {?>";
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compiler/BaseCompiler.php b/vendor/smarty/smarty/src/Compiler/BaseCompiler.php
new file mode 100644
index 000000000..78c35a697
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compiler/BaseCompiler.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Smarty\Compiler;
+
+use Smarty\Smarty;
+
+abstract class BaseCompiler {
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ protected $smarty = null;
+
+ /**
+ * @return Smarty|null
+ */
+ public function getSmarty(): Smarty {
+ return $this->smarty;
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Compiler/CodeFrame.php b/vendor/smarty/smarty/src/Compiler/CodeFrame.php
new file mode 100644
index 000000000..d0e1cc120
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compiler/CodeFrame.php
@@ -0,0 +1,126 @@
+<?php
+
+namespace Smarty\Compiler;
+
+use Smarty\Exception;
+
+/**
+ * Smarty Internal Extension
+ * This file contains the Smarty template extension to create a code frame
+ *
+ * @author Uwe Tews
+ */
+
+/**
+ * Create code frame for compiled and cached templates
+ */
+class CodeFrame
+{
+
+ /**
+ * @var \Smarty\Template
+ */
+ private $_template;
+
+ public function __construct(\Smarty\Template $_template) {
+ $this->_template = $_template;
+ }
+
+ /**
+ * Create code frame for compiled and cached templates
+ *
+ * @param string $content optional template content
+ * @param string $functions compiled template function and block code
+ * @param bool $cache flag for cache file
+ * @param Template|null $compiler
+ *
+ * @return string
+ * @throws Exception
+*/
+ public function create(
+ $content = '',
+ $functions = '',
+ $cache = false,
+ ?\Smarty\Compiler\Template $compiler = null
+ ) {
+ // build property code
+ $properties[ 'version' ] = \Smarty\Smarty::SMARTY_VERSION;
+ $properties[ 'unifunc' ] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
+ if (!$cache) {
+ $properties[ 'has_nocache_code' ] = $this->_template->getCompiled()->getNocacheCode();
+ $properties[ 'file_dependency' ] = $this->_template->getCompiled()->file_dependency;
+ $properties[ 'includes' ] = $this->_template->getCompiled()->includes;
+ } else {
+ $properties[ 'has_nocache_code' ] = $this->_template->getCached()->getNocacheCode();
+ $properties[ 'file_dependency' ] = $this->_template->getCached()->file_dependency;
+ $properties[ 'cache_lifetime' ] = $this->_template->cache_lifetime;
+ }
+ $output = sprintf(
+ "<?php\n/* Smarty version %s, created on %s\n from '%s' */\n\n",
+ $properties[ 'version' ],
+ date("Y-m-d H:i:s"),
+ str_replace('*/', '* /', $this->_template->getSource()->getFullResourceName())
+ );
+ $output .= "/* @var \\Smarty\\Template \$_smarty_tpl */\n";
+ $dec = "\$_smarty_tpl->" . ($cache ? "getCached()" : "getCompiled()");
+ $dec .= "->isFresh(\$_smarty_tpl, " . var_export($properties, true) . ')';
+ $output .= "if ({$dec}) {\n";
+ $output .= "function {$properties['unifunc']} (\\Smarty\\Template \$_smarty_tpl) {\n";
+
+ $output .= $this->insertLocalVariables();
+
+ if (!$cache && !empty($compiler->tpl_function)) {
+ $output .= '$_smarty_tpl->getSmarty()->getRuntime(\'TplFunction\')->registerTplFunctions($_smarty_tpl, ';
+ $output .= var_export($compiler->tpl_function, true);
+ $output .= ");\n";
+ }
+ if ($cache && $this->_template->getSmarty()->hasRuntime('TplFunction')) {
+ if ($tplfunctions = $this->_template->getSmarty()->getRuntime('TplFunction')->getTplFunction($this->_template)) {
+ $output .= "\$_smarty_tpl->getSmarty()->getRuntime('TplFunction')->registerTplFunctions(\$_smarty_tpl, " .
+ var_export($tplfunctions, true) . ");\n";
+ }
+ }
+ $output .= "?>";
+ $output .= $content;
+ $output .= "<?php }\n?>";
+ $output .= $functions;
+ $output .= "<?php }\n";
+ // remove unneeded PHP tags
+ if (preg_match('/\s*\?>[\n]?<\?php\s*/', $output)) {
+ $curr_split = preg_split(
+ '/\s*\?>[\n]?<\?php\s*/',
+ $output
+ );
+ preg_match_all(
+ '/\s*\?>[\n]?<\?php\s*/',
+ $output,
+ $curr_parts
+ );
+ $output = '';
+ foreach ($curr_split as $idx => $curr_output) {
+ $output .= $curr_output;
+ if (isset($curr_parts[ 0 ][ $idx ])) {
+ $output .= "\n";
+ }
+ }
+ }
+ if (preg_match('/\?>\s*$/', $output)) {
+ $curr_split = preg_split(
+ '/\?>\s*$/',
+ $output
+ );
+ $output = '';
+ foreach ($curr_split as $idx => $curr_output) {
+ $output .= $curr_output;
+ }
+ }
+ return $output;
+ }
+
+ /**
+ * @return string
+ */
+ public function insertLocalVariables(): string {
+ return '$_smarty_current_dir = ' . var_export(dirname($this->_template->getSource()->getFilepath() ?? '.'), true) . ";\n";
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compiler/Configfile.php b/vendor/smarty/smarty/src/Compiler/Configfile.php
new file mode 100644
index 000000000..84c14f9e7
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compiler/Configfile.php
@@ -0,0 +1,173 @@
+<?php
+/**
+ * Smarty Internal Plugin Config File Compiler
+ * This is the config file compiler class. It calls the lexer and parser to
+ * perform the compiling.
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compiler;
+use Smarty\Lexer\ConfigfileLexer;
+use Smarty\Parser\ConfigfileParser;
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\CompilerException;
+
+/**
+ * Main config file compiler class
+ *
+
+
+ */
+class Configfile extends BaseCompiler {
+
+ /**
+ * Lexer object
+ *
+ * @var ConfigfileLexer
+ */
+ public $lex;
+
+ /**
+ * Parser object
+ *
+ * @var ConfigfileParser
+ */
+ public $parser;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty object
+ */
+ public $smarty;
+
+ /**
+ * Smarty object
+ *
+ * @var Template object
+ */
+ public $template;
+
+ /**
+ * Compiled config data sections and variables
+ *
+ * @var array
+ */
+ public $config_data = [];
+
+ /**
+ * Initialize compiler
+ *
+ * @param Smarty $smarty global instance
+ */
+ public function __construct(Smarty $smarty) {
+ $this->smarty = $smarty;
+ $this->config_data['sections'] = [];
+ $this->config_data['vars'] = [];
+ }
+
+ /**
+ * Method to compile Smarty config source.
+ *
+ * @param Template $template
+ *
+ * @return bool true if compiling succeeded, false if it failed
+ * @throws \Smarty\Exception
+ */
+ public function compileTemplate(Template $template) {
+ $this->template = $template;
+ $this->template->getCompiled()->file_dependency[$this->template->getSource()->uid] =
+ [
+ $this->template->getSource()->getResourceName(),
+ $this->template->getSource()->getTimeStamp(),
+ $this->template->getSource()->type,
+ ];
+ if ($this->smarty->debugging) {
+ $this->smarty->getDebug()->start_compile($this->template);
+ }
+ // init the lexer/parser to compile the config file
+ /* @var ConfigfileLexer $this->lex */
+ $this->lex = new ConfigfileLexer(
+ str_replace(
+ [
+ "\r\n",
+ "\r",
+ ],
+ "\n",
+ $template->getSource()->getContent()
+ ) . "\n",
+ $this
+ );
+
+ $this->parser = new ConfigfileParser($this->lex, $this);
+ if ($this->smarty->_parserdebug) {
+ $this->parser->PrintTrace();
+ }
+ // get tokens from lexer and parse them
+ while ($this->lex->yylex()) {
+ if ($this->smarty->_parserdebug) {
+ echo "Parsing {$this->parser->yyTokenName[$this->lex->token]} Token {$this->lex->value} Line {$this->lex->line} \n";
+ }
+ $this->parser->doParse($this->lex->token, $this->lex->value);
+ }
+ // finish parsing process
+ $this->parser->doParse(0, 0);
+ if ($this->smarty->debugging) {
+ $this->smarty->getDebug()->end_compile($this->template);
+ }
+ // template header code
+ $template_header = sprintf(
+ "<?php /* Smarty version %s, created on %s\n compiled from '%s' */ ?>\n",
+ \Smarty\Smarty::SMARTY_VERSION,
+ date("Y-m-d H:i:s"),
+ str_replace('*/', '* /', $this->template->getSource()->getFullResourceName())
+ );
+ $code = '<?php $_smarty_tpl->parent->assignConfigVars(' .
+ var_export($this->config_data, true) . ', $_smarty_tpl->getValue("sections")); ?>';
+ return $template_header . $this->template->createCodeFrame($code);
+ }
+
+ /**
+ * display compiler error messages without dying
+ * If parameter $args is empty it is a parser detected syntax error.
+ * In this case the parser is called to obtain information about expected tokens.
+ * If parameter $args contains a string this is used as error message
+ *
+ * @param string $args individual error message or null
+ *
+ * @throws CompilerException
+ */
+ public function trigger_config_file_error($args = null) {
+ // get config source line which has error
+ $line = $this->lex->line;
+ if (isset($args)) {
+ // $line--;
+ }
+ $match = preg_split("/\n/", $this->lex->data);
+ $error_text =
+ "Syntax error in config file '{$this->template->getSource()->getFullResourceName()}' on line {$line} '{$match[$line - 1]}' ";
+ if (isset($args)) {
+ // individual error message
+ $error_text .= $args;
+ } else {
+ // expected token from parser
+ foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
+ $exp_token = $this->parser->yyTokenName[$token];
+ if (isset($this->lex->smarty_token_names[$exp_token])) {
+ // token type from lexer
+ $expect[] = '"' . $this->lex->smarty_token_names[$exp_token] . '"';
+ } else {
+ // otherwise internal token name
+ $expect[] = $this->parser->yyTokenName[$token];
+ }
+ }
+ // output parser error message
+ $error_text .= ' - Unexpected "' . $this->lex->value . '", expected one of: ' . implode(' , ', $expect);
+ }
+ throw new CompilerException($error_text);
+ }
+}
diff --git a/vendor/smarty/smarty/src/Compiler/Template.php b/vendor/smarty/smarty/src/Compiler/Template.php
new file mode 100644
index 000000000..237407c63
--- /dev/null
+++ b/vendor/smarty/smarty/src/Compiler/Template.php
@@ -0,0 +1,1512 @@
+<?php
+/**
+ * Smarty Internal Plugin Smarty Template Compiler Base
+ * This file contains the basic classes and methods for compiling Smarty templates with lexer/parser
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty\Compiler;
+
+use Smarty\Compile\BlockCompiler;
+use Smarty\Compile\DefaultHandlerBlockCompiler;
+use Smarty\Compile\DefaultHandlerFunctionCallCompiler;
+use Smarty\Compile\ModifierCompiler;
+use Smarty\Compile\ObjectMethodBlockCompiler;
+use Smarty\Compile\ObjectMethodCallCompiler;
+use Smarty\Compile\FunctionCallCompiler;
+use Smarty\Compile\PrintExpressionCompiler;
+use Smarty\Lexer\TemplateLexer;
+use Smarty\Parser\TemplateParser;
+use Smarty\Smarty;
+use Smarty\Compile\Tag\ExtendsTag;
+use Smarty\CompilerException;
+use Smarty\Exception;
+use function array_merge;
+use function is_array;
+use function strlen;
+use function substr;
+
+/**
+ * Class SmartyTemplateCompiler
+ *
+
+
+ */
+class Template extends BaseCompiler {
+
+ /**
+ * counter for prefix variable number
+ *
+ * @var int
+ */
+ public static $prefixVariableNumber = 0;
+
+ /**
+ * Parser object
+ *
+ * @var \Smarty\Parser\TemplateParser
+ */
+ private $parser = null;
+
+ /**
+ * hash for nocache sections
+ *
+ * @var mixed
+ */
+ public $nocache_hash = null;
+
+ /**
+ * suppress generation of nocache code
+ *
+ * @var bool
+ */
+ public $suppressNocacheProcessing = false;
+
+ /**
+ * caching enabled (copied from template object)
+ *
+ * @var int
+ */
+ public $caching = 0;
+
+ /**
+ * tag stack
+ *
+ * @var array
+ */
+ private $_tag_stack = [];
+
+ /**
+ * tag stack count
+ *
+ * @var array
+ */
+ private $_tag_stack_count = [];
+
+ /**
+ * current template
+ *
+ * @var \Smarty\Template
+ */
+ private $template = null;
+
+ /**
+ * merged included sub template data
+ *
+ * @var array
+ */
+ public $mergedSubTemplatesData = [];
+
+ /**
+ * merged sub template code
+ *
+ * @var array
+ */
+ public $mergedSubTemplatesCode = [];
+
+ /**
+ * source line offset for error messages
+ *
+ * @var int
+ */
+ public $trace_line_offset = 0;
+
+ /**
+ * trace uid
+ *
+ * @var string
+ */
+ public $trace_uid = '';
+
+ /**
+ * trace file path
+ *
+ * @var string
+ */
+ public $trace_filepath = '';
+
+ /**
+ * Template functions
+ *
+ * @var array
+ */
+ public $tpl_function = [];
+
+ /**
+ * compiled template or block function code
+ *
+ * @var string
+ */
+ public $blockOrFunctionCode = '';
+
+ /**
+ * flags for used modifier plugins
+ *
+ * @var array
+ */
+ public $modifier_plugins = [];
+
+ /**
+ * parent compiler object for merged subtemplates and template functions
+ *
+ * @var \Smarty\Compiler\Template
+ */
+ private $parent_compiler = null;
+
+ /**
+ * Flag true when compiling nocache section
+ *
+ * @var bool
+ */
+ public $nocache = false;
+
+ /**
+ * Flag true when tag is compiled as nocache
+ *
+ * @var bool
+ */
+ public $tag_nocache = false;
+
+ /**
+ * Compiled tag prefix code
+ *
+ * @var array
+ */
+ public $prefix_code = [];
+
+ /**
+ * Prefix code stack
+ *
+ * @var array
+ */
+ public $prefixCodeStack = [];
+
+ /**
+ * A variable string was compiled
+ *
+ * @var bool
+ */
+ public $has_variable_string = false;
+
+ /**
+ * Stack for {setfilter} {/setfilter}
+ *
+ * @var array
+ */
+ public $variable_filter_stack = [];
+
+ /**
+ * Nesting count of looping tags like {foreach}, {for}, {section}, {while}
+ *
+ * @var int
+ */
+ public $loopNesting = 0;
+
+ /**
+ * Strip preg pattern
+ *
+ * @var string
+ */
+ public $stripRegEx = '![\t ]*[\r\n]+[\t ]*!';
+
+ /**
+ * General storage area for tag compiler plugins
+ *
+ * @var array
+ */
+ public $_cache = array();
+
+ /**
+ * Lexer preg pattern for left delimiter
+ *
+ * @var string
+ */
+ private $ldelPreg = '[{]';
+
+ /**
+ * Lexer preg pattern for right delimiter
+ *
+ * @var string
+ */
+ private $rdelPreg = '[}]';
+
+ /**
+ * Length of right delimiter
+ *
+ * @var int
+ */
+ private $rdelLength = 0;
+
+ /**
+ * Length of left delimiter
+ *
+ * @var int
+ */
+ private $ldelLength = 0;
+
+ /**
+ * Lexer preg pattern for user literals
+ *
+ * @var string
+ */
+ private $literalPreg = '';
+
+ /**
+ * array of callbacks called when the normal compile process of template is finished
+ *
+ * @var array
+ */
+ public $postCompileCallbacks = [];
+
+ /**
+ * prefix code
+ *
+ * @var string
+ */
+ public $prefixCompiledCode = '';
+
+ /**
+ * postfix code
+ *
+ * @var string
+ */
+ public $postfixCompiledCode = '';
+ /**
+ * @var ObjectMethodBlockCompiler
+ */
+ private $objectMethodBlockCompiler;
+ /**
+ * @var DefaultHandlerBlockCompiler
+ */
+ private $defaultHandlerBlockCompiler;
+ /**
+ * @var BlockCompiler
+ */
+ private $blockCompiler;
+ /**
+ * @var DefaultHandlerFunctionCallCompiler
+ */
+ private $defaultHandlerFunctionCallCompiler;
+ /**
+ * @var FunctionCallCompiler
+ */
+ private $functionCallCompiler;
+ /**
+ * @var ObjectMethodCallCompiler
+ */
+ private $objectMethodCallCompiler;
+ /**
+ * @var ModifierCompiler
+ */
+ private $modifierCompiler;
+ /**
+ * @var PrintExpressionCompiler
+ */
+ private $printExpressionCompiler;
+
+ /**
+ * Depth of nested {nocache}{/nocache} blocks. If outside, this is 0. If inside, this is 1 or higher (if nested).
+ * @var int
+ */
+ private $noCacheStackDepth = 0;
+
+ /**
+ * disabled auto-escape (when set to true, the next variable output is not auto-escaped)
+ *
+ * @var boolean
+ */
+ private $raw_output = false;
+
+ /**
+ * Initialize compiler
+ *
+ * @param Smarty $smarty global instance
+ */
+ public function __construct(Smarty $smarty) {
+ $this->smarty = $smarty;
+ $this->nocache_hash = str_replace(
+ [
+ '.',
+ ',',
+ ],
+ '_',
+ uniqid(mt_rand(), true)
+ );
+
+ $this->modifierCompiler = new ModifierCompiler();
+ $this->functionCallCompiler = new FunctionCallCompiler();
+ $this->defaultHandlerFunctionCallCompiler = new DefaultHandlerFunctionCallCompiler();
+ $this->blockCompiler = new BlockCompiler();
+ $this->defaultHandlerBlockCompiler = new DefaultHandlerBlockCompiler();
+ $this->objectMethodBlockCompiler = new ObjectMethodBlockCompiler();
+ $this->objectMethodCallCompiler = new ObjectMethodCallCompiler();
+ $this->printExpressionCompiler = new PrintExpressionCompiler();
+ }
+
+ /**
+ * Method to compile a Smarty template
+ *
+ * @param \Smarty\Template $template template object to compile
+ *
+ * @return string code
+ * @throws Exception
+ */
+ public function compileTemplate(\Smarty\Template $template) {
+ return $template->createCodeFrame(
+ $this->compileTemplateSource($template),
+ $this->smarty->runPostFilters($this->blockOrFunctionCode, $this->template) .
+ join('', $this->mergedSubTemplatesCode),
+ false,
+ $this
+ );
+ }
+
+ /**
+ * Compile template source and run optional post filter
+ *
+ * @param \Smarty\Template $template
+ * @param Template|null $parent_compiler
+ *
+ * @return string
+ * @throws CompilerException
+ * @throws Exception
+ */
+ public function compileTemplateSource(\Smarty\Template $template, ?\Smarty\Compiler\Template $parent_compiler = null) {
+ try {
+ // save template object in compiler class
+ $this->template = $template;
+ if ($this->smarty->debugging) {
+ $this->smarty->getDebug()->start_compile($this->template);
+ }
+ $this->parent_compiler = $parent_compiler ? $parent_compiler : $this;
+
+ if (empty($template->getCompiled()->nocache_hash)) {
+ $template->getCompiled()->nocache_hash = $this->nocache_hash;
+ } else {
+ $this->nocache_hash = $template->getCompiled()->nocache_hash;
+ }
+ $this->caching = $template->caching;
+
+ // flag for nocache sections
+ $this->nocache = false;
+ $this->tag_nocache = false;
+ // reset has nocache code flag
+ $this->template->getCompiled()->setNocacheCode(false);
+
+ $this->has_variable_string = false;
+ $this->prefix_code = [];
+ // add file dependency
+ if ($this->template->getSource()->handler->checkTimestamps()) {
+ $this->parent_compiler->getTemplate()->getCompiled()->file_dependency[$this->template->getSource()->uid] =
+ [
+ $this->template->getSource()->getResourceName(),
+ $this->template->getSource()->getTimeStamp(),
+ $this->template->getSource()->type,
+ ];
+ }
+ // get template source
+ if (!empty($this->template->getSource()->components)) {
+
+ $_compiled_code = '<?php $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?>';
+
+ $i = 0;
+ $reversed_components = array_reverse($this->template->getSource()->components);
+ foreach ($reversed_components as $source) {
+ $i++;
+ if ($i === count($reversed_components)) {
+ $_compiled_code .= '<?php $_smarty_tpl->getInheritance()->endChild($_smarty_tpl); ?>';
+ }
+ $_compiled_code .= $this->compileTag(
+ 'include',
+ [
+ var_export($source->resource, true),
+ ['scope' => 'parent'],
+ ]
+ );
+ }
+ $_compiled_code = $this->smarty->runPostFilters($_compiled_code, $this->template);
+ } else {
+ // get template source
+ $_content = $this->template->getSource()->getContent();
+ $_compiled_code = $this->smarty->runPostFilters(
+ $this->doCompile(
+ $this->smarty->runPreFilters($_content, $this->template),
+ true
+ ),
+ $this->template
+ );
+ }
+
+ } catch (\Exception $e) {
+ if ($this->smarty->debugging) {
+ $this->smarty->getDebug()->end_compile($this->template);
+ }
+ $this->_tag_stack = [];
+ // free memory
+ $this->parent_compiler = null;
+ $this->template = null;
+ $this->parser = null;
+ throw $e;
+ }
+ if ($this->smarty->debugging) {
+ $this->smarty->getDebug()->end_compile($this->template);
+ }
+ $this->parent_compiler = null;
+ $this->parser = null;
+ return $_compiled_code;
+ }
+
+ /**
+ * Compile Tag
+ * This is a call back from the lexer/parser
+ *
+ * Save current prefix code
+ * Compile tag
+ * Merge tag prefix code with saved one
+ * (required nested tags in attributes)
+ *
+ * @param string $tag tag name
+ * @param array $args array with tag attributes
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws Exception
+ * @throws CompilerException
+ */
+ public function compileTag($tag, $args, $parameter = []) {
+ $this->prefixCodeStack[] = $this->prefix_code;
+ $this->prefix_code = [];
+ $result = $this->compileTag2($tag, $args, $parameter);
+ $this->prefix_code = array_merge($this->prefix_code, array_pop($this->prefixCodeStack));
+ return $result;
+ }
+
+ /**
+ * Compiles code for modifier execution
+ *
+ * @param $modifierlist
+ * @param $value
+ *
+ * @return string compiled code
+ * @throws CompilerException
+ * @throws Exception
+ */
+ public function compileModifier($modifierlist, $value) {
+ return $this->modifierCompiler->compile([], $this, ['modifierlist' => $modifierlist, 'value' => $value]);
+ }
+
+ /**
+ * compile variable
+ *
+ * @param string $variable
+ *
+ * @return string
+ */
+ public function triggerTagNoCache($variable): void {
+ if (!strpos($variable, '(')) {
+ // not a variable variable
+ $var = trim($variable, '\'');
+ $this->tag_nocache = $this->tag_nocache |
+ $this->template->getVariable(
+ $var,
+ true,
+ false
+ )->isNocache();
+ }
+ }
+
+ /**
+ * compile config variable
+ *
+ * @param string $variable
+ *
+ * @return string
+ */
+ public function compileConfigVariable($variable) {
+ // return '$_smarty_tpl->config_vars[' . $variable . ']';
+ return '$_smarty_tpl->getConfigVariable(' . $variable . ')';
+ }
+
+ /**
+ * This method is called from parser to process a text content section if strip is enabled
+ * - remove text from inheritance child templates as they may generate output
+ *
+ * @param string $text
+ *
+ * @return string
+ */
+ public function processText($text) {
+
+ if (strpos($text, '<') === false) {
+ return preg_replace($this->stripRegEx, '', $text);
+ }
+
+ $store = [];
+ $_store = 0;
+
+ // capture html elements not to be messed with
+ $_offset = 0;
+ if (preg_match_all(
+ '#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is',
+ $text,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $store[] = $match[0][0];
+ $_length = strlen($match[0][0]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $text = substr_replace($text, $replace, $match[0][1] - $_offset, $_length);
+ $_offset += $_length - strlen($replace);
+ $_store++;
+ }
+ }
+ $expressions = [// replace multiple spaces between tags by a single space
+ '#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2',
+ // remove newline between tags
+ '#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2',
+ // remove multiple spaces between attributes (but not in attribute values!)
+ '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
+ '#>[\040\011]+$#Ss' => '> ',
+ '#>[\040\011]*[\n]\s*$#Ss' => '>',
+ $this->stripRegEx => '',
+ ];
+ $text = preg_replace(array_keys($expressions), array_values($expressions), $text);
+ $_offset = 0;
+ if (preg_match_all(
+ '#@!@SMARTY:([0-9]+):SMARTY@!@#is',
+ $text,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $_length = strlen($match[0][0]);
+ $replace = $store[$match[1][0]];
+ $text = substr_replace($text, $replace, $match[0][1] + $_offset, $_length);
+ $_offset += strlen($replace) - $_length;
+ $_store++;
+ }
+ }
+ return $text;
+ }
+
+ /**
+ * lazy loads internal compile plugin for tag compile objects cached for reuse.
+ *
+ * class name format: \Smarty\Compile\TagName
+ *
+ * @param string $tag tag name
+ *
+ * @return ?\Smarty\Compile\CompilerInterface tag compiler object or null if not found or untrusted by security policy
+ */
+ public function getTagCompiler($tag): ?\Smarty\Compile\CompilerInterface {
+ $tag = strtolower($tag);
+
+ if (isset($this->smarty->security_policy) && !$this->smarty->security_policy->isTrustedTag($tag, $this)) {
+ return null;
+ }
+
+ foreach ($this->smarty->getExtensions() as $extension) {
+ if ($compiler = $extension->getTagCompiler($tag)) {
+ return $compiler;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * lazy loads internal compile plugin for modifier compile objects cached for reuse.
+ *
+ * @param string $modifier tag name
+ *
+ * @return bool|\Smarty\Compile\Modifier\ModifierCompilerInterface tag compiler object or false if not found or untrusted by security policy
+ */
+ public function getModifierCompiler($modifier) {
+
+ if (isset($this->smarty->security_policy) && !$this->smarty->security_policy->isTrustedModifier($modifier, $this)) {
+ return false;
+ }
+
+ foreach ($this->smarty->getExtensions() as $extension) {
+ if ($modifierCompiler = $extension->getModifierCompiler($modifier)) {
+ return $modifierCompiler;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Check for plugins by default plugin handler
+ *
+ * @param string $tag name of tag
+ * @param string $plugin_type type of plugin
+ *
+ * @return callback|null
+ * @throws \Smarty\CompilerException
+ */
+ public function getPluginFromDefaultHandler($tag, $plugin_type) {
+
+ $defaultPluginHandlerFunc = $this->smarty->getDefaultPluginHandlerFunc();
+
+ if (!is_callable($defaultPluginHandlerFunc)) {
+ return null;
+ }
+
+
+ $callback = null;
+ $script = null;
+ $cacheable = true;
+
+ $result = \call_user_func_array(
+ $defaultPluginHandlerFunc,
+ [
+ $tag,
+ $plugin_type,
+ null, // This used to pass $this->template, but this parameter has been removed in 5.0
+ &$callback,
+ &$script,
+ &$cacheable,
+ ]
+ );
+ if ($result) {
+ $this->tag_nocache = $this->tag_nocache || !$cacheable;
+ if ($script !== null) {
+ if (is_file($script)) {
+ include_once $script;
+ } else {
+ $this->trigger_template_error("Default plugin handler: Returned script file '{$script}' for '{$tag}' not found");
+ }
+ }
+ if (is_callable($callback)) {
+ return $callback;
+ } else {
+ $this->trigger_template_error("Default plugin handler: Returned callback for '{$tag}' not callable");
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Append code segments and remove unneeded ?> <?php transitions
+ *
+ * @param string $left
+ * @param string $right
+ *
+ * @return string
+ */
+ public function appendCode(string $left, string $right): string
+ {
+ if (preg_match('/\s*\?>\s?$/D', $left) && preg_match('/^<\?php\s+/', $right)) {
+ $left = preg_replace('/\s*\?>\s?$/D', "\n", $left);
+ $left .= preg_replace('/^<\?php\s+/', '', $right);
+ } else {
+ $left .= $right;
+ }
+ return $left;
+ }
+
+ /**
+ * Inject inline code for nocache template sections
+ * This method gets the content of each template element from the parser.
+ * If the content is compiled code, and it should be not be cached the code is injected
+ * into the rendered output.
+ *
+ * @param string $content content of template element
+ *
+ * @return string content
+ */
+ public function processNocacheCode($content) {
+
+ // If the template is not evaluated, and we have a nocache section and/or a nocache tag
+ // generate replacement code
+ if (!empty($content)
+ && !($this->template->getSource()->handler->recompiled)
+ && $this->caching
+ && $this->isNocacheActive()
+ ) {
+ $this->template->getCompiled()->setNocacheCode(true);
+ $_output = addcslashes($content, '\'\\');
+ $_output =
+ "<?php echo '" . $this->getNocacheBlockStartMarker() . $_output . $this->getNocacheBlockEndMarker() . "';?>\n";
+ } else {
+ $_output = $content;
+ }
+
+ $this->modifier_plugins = [];
+ $this->suppressNocacheProcessing = false;
+ $this->tag_nocache = false;
+ return $_output;
+ }
+
+
+ private function getNocacheBlockStartMarker(): string {
+ return "/*%%SmartyNocache:{$this->nocache_hash}%%*/";
+ }
+
+ private function getNocacheBlockEndMarker(): string {
+ return "/*/%%SmartyNocache:{$this->nocache_hash}%%*/";
+ }
+
+
+ /**
+ * Get Id
+ *
+ * @param string $input
+ *
+ * @return bool|string
+ */
+ public function getId($input) {
+ if (preg_match('~^([\'"]*)([0-9]*[a-zA-Z_]\w*)\1$~', $input, $match)) {
+ return $match[2];
+ }
+ return false;
+ }
+
+ /**
+ * Set nocache flag in variable or create new variable
+ *
+ * @param string $varName
+ */
+ public function setNocacheInVariable($varName) {
+ // create nocache var to make it know for further compiling
+ if ($_var = $this->getId($varName)) {
+ if ($this->template->hasVariable($_var)) {
+ $this->template->getVariable($_var)->setNocache(true);
+ } else {
+ $this->template->assign($_var, null, true);
+ }
+ }
+ }
+
+ /**
+ * display compiler error messages without dying
+ * If parameter $args is empty it is a parser detected syntax error.
+ * In this case the parser is called to obtain information about expected tokens.
+ * If parameter $args contains a string this is used as error message
+ *
+ * @param string $args individual error message or null
+ * @param string $line line-number
+ * @param null|bool $tagline if true the line number of last tag
+ *
+ * @throws \Smarty\CompilerException when an unexpected token is found
+ */
+ public function trigger_template_error($args = null, $line = null, $tagline = null) {
+ $lex = $this->parser->lex;
+ if ($tagline === true) {
+ // get line number of Tag
+ $line = $lex->taglineno;
+ } elseif (!isset($line)) {
+ // get template source line which has error
+ $line = $lex->line;
+ } else {
+ $line = (int)$line;
+ }
+ if (in_array(
+ $this->template->getSource()->type,
+ [
+ 'eval',
+ 'string',
+ ]
+ )
+ ) {
+ $templateName = $this->template->getSource()->type . ':' . trim(
+ preg_replace(
+ '![\t\r\n]+!',
+ ' ',
+ strlen($lex->data) > 40 ?
+ substr($lex->data, 0, 40) .
+ '...' : $lex->data
+ )
+ );
+ } else {
+ $templateName = $this->template->getSource()->getFullResourceName();
+ }
+ // $line += $this->trace_line_offset;
+ $match = preg_split("/\n/", $lex->data);
+ $error_text =
+ 'Syntax error in template "' . (empty($this->trace_filepath) ? $templateName : $this->trace_filepath) .
+ '" on line ' . ($line + $this->trace_line_offset) . ' "' .
+ trim(preg_replace('![\t\r\n]+!', ' ', $match[$line - 1])) . '" ';
+ if (isset($args)) {
+ // individual error message
+ $error_text .= $args;
+ } else {
+ $expect = [];
+ // expected token from parser
+ $error_text .= ' - Unexpected "' . $lex->value . '"';
+ if (count($this->parser->yy_get_expected_tokens($this->parser->yymajor)) <= 4) {
+ foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
+ $exp_token = $this->parser->yyTokenName[$token];
+ if (isset($lex->smarty_token_names[$exp_token])) {
+ // token type from lexer
+ $expect[] = '"' . $lex->smarty_token_names[$exp_token] . '"';
+ } else {
+ // otherwise internal token name
+ $expect[] = $this->parser->yyTokenName[$token];
+ }
+ }
+ $error_text .= ', expected one of: ' . implode(' , ', $expect);
+ }
+ }
+ if ($this->smarty->_parserdebug) {
+ $this->parser->errorRunDown();
+ echo ob_get_clean();
+ flush();
+ }
+ $e = new CompilerException(
+ $error_text,
+ 0,
+ $this->template->getSource()->getFilepath() ?? $this->template->getSource()->getFullResourceName(),
+ $line
+ );
+ $e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[$line - 1]));
+ $e->desc = $args;
+ $e->template = $this->template->getSource()->getFullResourceName();
+ throw $e;
+ }
+
+ /**
+ * Return var_export() value with all white spaces removed
+ *
+ * @param mixed $value
+ *
+ * @return string
+ */
+ public function getVarExport($value) {
+ return preg_replace('/\s/', '', var_export($value, true));
+ }
+
+ /**
+ * enter double quoted string
+ * - save tag stack count
+ */
+ public function enterDoubleQuote() {
+ array_push($this->_tag_stack_count, $this->getTagStackCount());
+ }
+
+ /**
+ * Return tag stack count
+ *
+ * @return int
+ */
+ public function getTagStackCount() {
+ return count($this->_tag_stack);
+ }
+
+ /**
+ * @param $lexerPreg
+ *
+ * @return mixed
+ */
+ public function replaceDelimiter($lexerPreg) {
+ return str_replace(
+ ['SMARTYldel', 'SMARTYliteral', 'SMARTYrdel', 'SMARTYautoliteral', 'SMARTYal'],
+ [
+ $this->ldelPreg, $this->literalPreg, $this->rdelPreg,
+ $this->smarty->getAutoLiteral() ? '{1,}' : '{9}',
+ $this->smarty->getAutoLiteral() ? '' : '\\s*',
+ ],
+ $lexerPreg
+ );
+ }
+
+ /**
+ * Build lexer regular expressions for left and right delimiter and user defined literals
+ */
+ public function initDelimiterPreg() {
+ $ldel = $this->smarty->getLeftDelimiter();
+ $this->ldelLength = strlen($ldel);
+ $this->ldelPreg = '';
+ foreach (str_split($ldel, 1) as $chr) {
+ $this->ldelPreg .= '[' . preg_quote($chr, '/') . ']';
+ }
+ $rdel = $this->smarty->getRightDelimiter();
+ $this->rdelLength = strlen($rdel);
+ $this->rdelPreg = '';
+ foreach (str_split($rdel, 1) as $chr) {
+ $this->rdelPreg .= '[' . preg_quote($chr, '/') . ']';
+ }
+ $literals = $this->smarty->getLiterals();
+ if (!empty($literals)) {
+ foreach ($literals as $key => $literal) {
+ $literalPreg = '';
+ foreach (str_split($literal, 1) as $chr) {
+ $literalPreg .= '[' . preg_quote($chr, '/') . ']';
+ }
+ $literals[$key] = $literalPreg;
+ }
+ $this->literalPreg = '|' . implode('|', $literals);
+ } else {
+ $this->literalPreg = '';
+ }
+ }
+
+ /**
+ * leave double quoted string
+ * - throw exception if block in string was not closed
+ *
+ * @throws \Smarty\CompilerException
+ */
+ public function leaveDoubleQuote() {
+ if (array_pop($this->_tag_stack_count) !== $this->getTagStackCount()) {
+ $tag = $this->getOpenBlockTag();
+ $this->trigger_template_error(
+ "unclosed '{{$tag}}' in doubled quoted string",
+ null,
+ true
+ );
+ }
+ }
+
+ /**
+ * Get left delimiter preg
+ *
+ * @return string
+ */
+ public function getLdelPreg() {
+ return $this->ldelPreg;
+ }
+
+ /**
+ * Get right delimiter preg
+ *
+ * @return string
+ */
+ public function getRdelPreg() {
+ return $this->rdelPreg;
+ }
+
+ /**
+ * Get length of left delimiter
+ *
+ * @return int
+ */
+ public function getLdelLength() {
+ return $this->ldelLength;
+ }
+
+ /**
+ * Get length of right delimiter
+ *
+ * @return int
+ */
+ public function getRdelLength() {
+ return $this->rdelLength;
+ }
+
+ /**
+ * Get name of current open block tag
+ *
+ * @return string|boolean
+ */
+ public function getOpenBlockTag() {
+ $tagCount = $this->getTagStackCount();
+ if ($tagCount) {
+ return $this->_tag_stack[$tagCount - 1][0];
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Check if $value contains variable elements
+ *
+ * @param mixed $value
+ *
+ * @return bool|int
+ */
+ public function isVariable($value) {
+ if (is_string($value)) {
+ return preg_match('/[$(]/', $value);
+ }
+ if (is_bool($value) || is_numeric($value)) {
+ return false;
+ }
+ if (is_array($value)) {
+ foreach ($value as $k => $v) {
+ if ($this->isVariable($k) || $this->isVariable($v)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ return false;
+ }
+
+ /**
+ * Get new prefix variable name
+ *
+ * @return string
+ */
+ public function getNewPrefixVariable() {
+ ++self::$prefixVariableNumber;
+ return $this->getPrefixVariable();
+ }
+
+ /**
+ * Get current prefix variable name
+ *
+ * @return string
+ */
+ public function getPrefixVariable() {
+ return '$_prefixVariable' . self::$prefixVariableNumber;
+ }
+
+ /**
+ * append code to prefix buffer
+ *
+ * @param string $code
+ */
+ public function appendPrefixCode($code) {
+ $this->prefix_code[] = $code;
+ }
+
+ /**
+ * get prefix code string
+ *
+ * @return string
+ */
+ public function getPrefixCode() {
+ $code = '';
+ $prefixArray = array_merge($this->prefix_code, array_pop($this->prefixCodeStack));
+ $this->prefixCodeStack[] = [];
+ foreach ($prefixArray as $c) {
+ $code = $this->appendCode($code, (string) $c);
+ }
+ $this->prefix_code = [];
+ return $code;
+ }
+
+ public function cStyleComment($string) {
+ return '/*' . str_replace('*/', '* /', $string) . '*/';
+ }
+
+ public function compileChildBlock() {
+ return $this->blockCompiler->compileChild($this);
+ }
+
+ public function compileParentBlock() {
+ return $this->blockCompiler->compileParent($this);
+ }
+
+ /**
+ * Compile Tag
+ *
+ * @param string $tag tag name
+ * @param array $args array with tag attributes
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws Exception
+ * @throws CompilerException
+ */
+ private function compileTag2($tag, $args, $parameter) {
+ // $args contains the attributes parsed and compiled by the lexer/parser
+
+ $this->handleNocacheFlag($args);
+
+ // compile built-in tags
+ if ($tagCompiler = $this->getTagCompiler($tag)) {
+ if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this)) {
+ $this->tag_nocache = $this->tag_nocache | !$tagCompiler->isCacheable();
+ $_output = $tagCompiler->compile($args, $this, $parameter);
+ if (!empty($parameter['modifierlist'])) {
+ throw new CompilerException('No modifiers allowed on ' . $tag);
+ }
+ return $_output;
+ }
+ }
+
+ // call to function previously defined by {function} tag
+ if ($this->canCompileTemplateFunctionCall($tag)) {
+
+ if (!empty($parameter['modifierlist'])) {
+ throw new CompilerException('No modifiers allowed on ' . $tag);
+ }
+
+ $args['_attr']['name'] = "'{$tag}'";
+ $tagCompiler = $this->getTagCompiler('call');
+ return $tagCompiler === null ? false : $tagCompiler->compile($args, $this, $parameter);
+ }
+
+ // remaining tastes: (object-)function, (object-function-)block, custom-compiler
+ // opening and closing tags for these are handled with the same handler
+ $base_tag = $this->getBaseTag($tag);
+
+ // check if tag is a registered object
+ if (isset($this->smarty->registered_objects[$base_tag]) && isset($parameter['object_method'])) {
+ return $this->compileRegisteredObjectMethodCall($base_tag, $args, $parameter, $tag);
+ }
+
+ // check if tag is a function
+ if ($this->smarty->getFunctionHandler($base_tag)) {
+ if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($base_tag, $this)) {
+ return (new \Smarty\Compile\PrintExpressionCompiler())->compile(
+ ['nofilter'], // functions are never auto-escaped
+ $this,
+ ['value' => $this->compileFunctionCall($base_tag, $args, $parameter)]
+ );
+ }
+ }
+
+ // check if tag is a block
+ if ($this->smarty->getBlockHandler($base_tag)) {
+ if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($base_tag, $this)) {
+ return $this->blockCompiler->compile($args, $this, $parameter, $tag, $base_tag);
+ }
+ }
+
+ // the default plugin handler is a handler of last resort, it may also handle not specifically registered tags.
+ if ($callback = $this->getPluginFromDefaultHandler($base_tag, Smarty::PLUGIN_COMPILER)) {
+ if (!empty($parameter['modifierlist'])) {
+ throw new CompilerException('No modifiers allowed on ' . $base_tag);
+ }
+ $tagCompiler = new \Smarty\Compile\Tag\BCPluginWrapper($callback);
+ return $tagCompiler->compile($args, $this, $parameter);
+ }
+
+ if ($this->getPluginFromDefaultHandler($base_tag, Smarty::PLUGIN_FUNCTION)) {
+ return $this->defaultHandlerFunctionCallCompiler->compile($args, $this, $parameter, $tag, $base_tag);
+ }
+
+ if ($this->getPluginFromDefaultHandler($base_tag, Smarty::PLUGIN_BLOCK)) {
+ return $this->defaultHandlerBlockCompiler->compile($args, $this, $parameter, $tag, $base_tag);
+ }
+
+ $this->trigger_template_error("unknown tag '{$tag}'", null, true);
+ }
+
+ /**
+ * Sets $this->tag_nocache if attributes contain the 'nocache' flag.
+ *
+ * @param array $attributes
+ *
+ * @return void
+ */
+ private function handleNocacheFlag(array $attributes) {
+ foreach ($attributes as $value) {
+ if (is_string($value) && trim($value, '\'" ') == 'nocache') {
+ $this->tag_nocache = true;
+ }
+ }
+ }
+
+ private function getBaseTag($tag) {
+ if (strlen($tag) < 6 || substr($tag, -5) !== 'close') {
+ return $tag;
+ } else {
+ return substr($tag, 0, -5);
+ }
+ }
+
+ /**
+ * Compiles the output of a variable or expression.
+ *
+ * @param $value
+ * @param $attributes
+ * @param $modifiers
+ *
+ * @return string
+ * @throws Exception
+ */
+ public function compilePrintExpression($value, $attributes = [], $modifiers = null) {
+ $this->handleNocacheFlag($attributes);
+ return $this->printExpressionCompiler->compile($attributes, $this, [
+ 'value'=> $value,
+ 'modifierlist' => $modifiers,
+ ]);
+ }
+
+ /**
+ * method to compile a Smarty template
+ *
+ * @param mixed $_content template source
+ * @param bool $isTemplateSource
+ *
+ * @return bool true if compiling succeeded, false if it failed
+ * @throws \Smarty\CompilerException
+ */
+ protected function doCompile($_content, $isTemplateSource = false) {
+ /* here is where the compiling takes place. Smarty
+ tags in the templates are replaces with PHP code,
+ then written to compiled files. */
+ // init the lexer/parser to compile the template
+ $this->parser = new TemplateParser(
+ new TemplateLexer(
+ str_replace(
+ [
+ "\r\n",
+ "\r",
+ ],
+ "\n",
+ $_content
+ ),
+ $this
+ ),
+ $this
+ );
+ if ($isTemplateSource && $this->template->caching) {
+ $this->parser->insertPhpCode("<?php\n\$_smarty_tpl->getCompiled()->nocache_hash = '{$this->nocache_hash}';\n?>\n");
+ }
+ if ($this->smarty->_parserdebug) {
+ $this->parser->PrintTrace();
+ $this->parser->lex->PrintTrace();
+ }
+ // get tokens from lexer and parse them
+ while ($this->parser->lex->yylex()) {
+ if ($this->smarty->_parserdebug) {
+ echo "Line {$this->parser->lex->line} Parsing {$this->parser->yyTokenName[$this->parser->lex->token]} Token " .
+ $this->parser->lex->value;
+ }
+ $this->parser->doParse($this->parser->lex->token, $this->parser->lex->value);
+ }
+ // finish parsing process
+ $this->parser->doParse(0, 0);
+ // check for unclosed tags
+ if ($this->getTagStackCount() > 0) {
+ // get stacked info
+ [$openTag, $_data] = array_pop($this->_tag_stack);
+ $this->trigger_template_error(
+ "unclosed " . $this->smarty->getLeftDelimiter() . $openTag .
+ $this->smarty->getRightDelimiter() . " tag"
+ );
+ }
+ // call post compile callbacks
+ foreach ($this->postCompileCallbacks as $cb) {
+ $callbackFunction = $cb[0];
+ $parameters = $cb;
+ $parameters[0] = $this;
+ $callbackFunction(...$parameters);
+ }
+ // return compiled code
+ return $this->prefixCompiledCode . $this->parser->retvalue . $this->postfixCompiledCode;
+ }
+
+ /**
+ * Register a post compile callback
+ * - when the callback is called after template compiling the compiler object will be inserted as first parameter
+ *
+ * @param callback $callback
+ * @param array $parameter optional parameter array
+ * @param string $key optional key for callback
+ * @param bool $replace if true replace existing keyed callback
+ */
+ public function registerPostCompileCallback($callback, $parameter = [], $key = null, $replace = false) {
+ array_unshift($parameter, $callback);
+ if (isset($key)) {
+ if ($replace || !isset($this->postCompileCallbacks[$key])) {
+ $this->postCompileCallbacks[$key] = $parameter;
+ }
+ } else {
+ $this->postCompileCallbacks[] = $parameter;
+ }
+ }
+
+ /**
+ * Remove a post compile callback
+ *
+ * @param string $key callback key
+ */
+ public function unregisterPostCompileCallback($key) {
+ unset($this->postCompileCallbacks[$key]);
+ }
+
+ /**
+ * @param string $tag
+ *
+ * @return bool
+ * @throws Exception
+ */
+ private function canCompileTemplateFunctionCall(string $tag): bool {
+ return
+ isset($this->parent_compiler->tpl_function[$tag])
+ || (
+ $this->template->getSmarty()->hasRuntime('TplFunction')
+ && ($this->template->getSmarty()->getRuntime('TplFunction')->getTplFunction($this->template, $tag) !== false)
+ );
+ }
+
+ /**
+ * @throws CompilerException
+ */
+ private function compileRegisteredObjectMethodCall(string $base_tag, array $args, array $parameter, string $tag) {
+
+ $method = $parameter['object_method'];
+ $allowedAsBlockFunction = in_array($method, $this->smarty->registered_objects[$base_tag][3]);
+
+ if ($base_tag === $tag) {
+ // opening tag
+
+ $allowedAsNormalFunction = empty($this->smarty->registered_objects[$base_tag][1])
+ || in_array($method, $this->smarty->registered_objects[$base_tag][1]);
+
+ if ($allowedAsBlockFunction) {
+ return $this->objectMethodBlockCompiler->compile($args, $this, $parameter, $tag, $method);
+ } elseif ($allowedAsNormalFunction) {
+ return $this->objectMethodCallCompiler->compile($args, $this, $parameter, $tag, $method);
+ }
+
+ $this->trigger_template_error(
+ 'not allowed method "' . $method . '" in registered object "' .
+ $tag . '"',
+ null,
+ true
+ );
+ }
+
+ // closing tag
+ if ($allowedAsBlockFunction) {
+ return $this->objectMethodBlockCompiler->compile($args, $this, $parameter, $tag, $method);
+ }
+
+ $this->trigger_template_error(
+ 'not allowed closing tag method "' . $method .
+ '" in registered object "' . $base_tag . '"',
+ null,
+ true
+ );
+ }
+
+ public function compileFunctionCall(string $base_tag, array $args, array $parameter = []) {
+ return $this->functionCallCompiler->compile($args, $this, $parameter, $base_tag, $base_tag);
+ }
+
+ public function compileModifierInExpression(string $function, array $_attr) {
+ $value = array_shift($_attr);
+ return $this->compileModifier([array_merge([$function], $_attr)], $value);
+ }
+
+ /**
+ * @return TemplateParser|null
+ */
+ public function getParser(): ?TemplateParser {
+ return $this->parser;
+ }
+
+ /**
+ * @param TemplateParser|null $parser
+ */
+ public function setParser(?TemplateParser $parser): void {
+ $this->parser = $parser;
+ }
+
+ /**
+ * @return \Smarty\Template|null
+ */
+ public function getTemplate(): ?\Smarty\Template {
+ return $this->template;
+ }
+
+ /**
+ * @param \Smarty\Template|null $template
+ */
+ public function setTemplate(?\Smarty\Template $template): void {
+ $this->template = $template;
+ }
+
+ /**
+ * @return Template|null
+ */
+ public function getParentCompiler(): ?Template {
+ return $this->parent_compiler;
+ }
+
+ /**
+ * @param Template|null $parent_compiler
+ */
+ public function setParentCompiler(?Template $parent_compiler): void {
+ $this->parent_compiler = $parent_compiler;
+ }
+
+
+ /**
+ * Push opening tag name on stack
+ * Optionally additional data can be saved on stack
+ *
+ * @param string $openTag the opening tag's name
+ * @param mixed $data optional data saved
+ */
+ public function openTag($openTag, $data = null) {
+ $this->_tag_stack[] = [$openTag, $data];
+ if ($openTag == 'nocache') {
+ $this->noCacheStackDepth++;
+ }
+ }
+
+ /**
+ * Pop closing tag
+ * Raise an error if this stack-top doesn't match with expected opening tags
+ *
+ * @param array|string $expectedTag the expected opening tag names
+ *
+ * @return mixed any type the opening tag's name or saved data
+ * @throws CompilerException
+ */
+ public function closeTag($expectedTag) {
+ if ($this->getTagStackCount() > 0) {
+ // get stacked info
+ [$_openTag, $_data] = array_pop($this->_tag_stack);
+ // open tag must match with the expected ones
+ if (in_array($_openTag, (array)$expectedTag)) {
+
+ if ($_openTag == 'nocache') {
+ $this->noCacheStackDepth--;
+ }
+
+ if (is_null($_data)) {
+ // return opening tag
+ return $_openTag;
+ } else {
+ // return restored data
+ return $_data;
+ }
+ }
+ // wrong nesting of tags
+ $this->trigger_template_error("unclosed '" . $this->getTemplate()->getLeftDelimiter() . "{$_openTag}" .
+ $this->getTemplate()->getRightDelimiter() . "' tag");
+ return;
+ }
+ // wrong nesting of tags
+ $this->trigger_template_error('unexpected closing tag', null, true);
+ }
+
+ /**
+ * Returns true if we are in a {nocache}...{/nocache} block, but false if inside {block} tag inside a {nocache} block...
+ * @return bool
+ */
+ public function isNocacheActive(): bool {
+ return !$this->suppressNocacheProcessing && ($this->noCacheStackDepth > 0 || $this->tag_nocache);
+ }
+
+ /**
+ * Returns the full tag stack, used in the compiler for {break}
+ * @return array
+ */
+ public function getTagStack(): array {
+ return $this->_tag_stack;
+ }
+
+ /**
+ * Should the next variable output be raw (true) or auto-escaped (false)
+ * @return bool
+ */
+ public function isRawOutput(): bool {
+ return $this->raw_output;
+ }
+
+ /**
+ * Should the next variable output be raw (true) or auto-escaped (false)
+ * @param bool $raw_output
+ * @return void
+ */
+ public function setRawOutput(bool $raw_output): void {
+ $this->raw_output = $raw_output;
+ }
+}
diff --git a/vendor/smarty/smarty/src/CompilerException.php b/vendor/smarty/smarty/src/CompilerException.php
new file mode 100644
index 000000000..60af9db7c
--- /dev/null
+++ b/vendor/smarty/smarty/src/CompilerException.php
@@ -0,0 +1,73 @@
+<?php
+
+namespace Smarty;
+
+/**
+ * Smarty compiler exception class
+ *
+
+ */
+class CompilerException extends Exception {
+
+ /**
+ * The constructor of the exception
+ *
+ * @param string $message The Exception message to throw.
+ * @param int $code The Exception code.
+ * @param string|null $filename The filename where the exception is thrown.
+ * @param int|null $line The line number where the exception is thrown.
+ * @param \Throwable|null $previous The previous exception used for the exception chaining.
+ */
+ public function __construct(
+ string $message = "",
+ int $code = 0,
+ ?string $filename = null,
+ ?int $line = null,
+ ?\Throwable $previous = null
+ ) {
+ parent::__construct($message, $code, $previous);
+
+ // These are optional parameters, should be be overridden only when present!
+ if ($filename) {
+ $this->file = $filename;
+ }
+ if ($line) {
+ $this->line = $line;
+ }
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString() {
+ return ' --> Smarty Compiler: ' . $this->message . ' <-- ';
+ }
+
+ /**
+ * @param int $line
+ */
+ public function setLine($line) {
+ $this->line = $line;
+ }
+
+ /**
+ * The template source snippet relating to the error
+ *
+ * @type string|null
+ */
+ public $source = null;
+
+ /**
+ * The raw text of the error message
+ *
+ * @type string|null
+ */
+ public $desc = null;
+
+ /**
+ * The resource identifier or template name
+ *
+ * @type string|null
+ */
+ public $template = null;
+}
diff --git a/vendor/smarty/smarty/src/Data.php b/vendor/smarty/smarty/src/Data.php
new file mode 100644
index 000000000..6ae823d8c
--- /dev/null
+++ b/vendor/smarty/smarty/src/Data.php
@@ -0,0 +1,521 @@
+<?php
+
+namespace Smarty;
+
+/**
+ * Smarty Internal Plugin Data
+ * This file contains the basic properties and methods for holding config and template variables
+ */
+class Data
+{
+
+ /**
+ * define variable scopes
+ */
+ const SCOPE_LOCAL = 1;
+ const SCOPE_PARENT = 2;
+ const SCOPE_TPL_ROOT = 4;
+ const SCOPE_ROOT = 8;
+ const SCOPE_SMARTY = 16;
+ const SCOPE_GLOBAL = 32;
+
+ /**
+ * Global smarty instance
+ *
+ * @var Smarty
+ */
+ protected $smarty = null;
+
+ /**
+ * template variables
+ *
+ * @var Variable[]
+ */
+ public $tpl_vars = array();
+
+ /**
+ * parent data container (if any)
+ *
+ * @var Data
+ */
+ public $parent = null;
+
+ /**
+ * configuration settings
+ *
+ * @var string[]
+ */
+ public $config_vars = array();
+
+ /**
+ * This variable will hold a stack of template variables.
+ *
+ * @var null|array
+ */
+ private $_var_stack = [];
+
+ /**
+ * This variable will hold a stack of config variables.
+ *
+ * @var null|array
+ */
+ private $_config_stack = [];
+
+ /**
+ * Default scope for new variables
+ * @var int
+ */
+ protected $defaultScope = self::SCOPE_LOCAL;
+
+ /**
+ * create Smarty data object
+ *
+ * @param Smarty|array $_parent parent template
+ * @param Smarty|Template $smarty global smarty instance
+ * @param string $name optional data block name
+ *
+ * @throws Exception
+ */
+ public function __construct($_parent = null, $smarty = null, $name = null) {
+
+ $this->smarty = $smarty;
+ if (is_object($_parent)) {
+ // when object set up back pointer
+ $this->parent = $_parent;
+ } elseif (is_array($_parent)) {
+ // set up variable values
+ foreach ($_parent as $_key => $_val) {
+ $this->assign($_key, $_val);
+ }
+ } elseif ($_parent !== null) {
+ throw new Exception('Wrong type for template variables');
+ }
+ }
+
+ /**
+ * assigns a Smarty variable
+ *
+ * @param array|string $tpl_var the template variable name(s)
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ * @param int $scope one of self::SCOPE_* constants
+ *
+ * @return Data current Data (or Smarty or \Smarty\Template) instance for
+ * chaining
+ */
+ public function assign($tpl_var, $value = null, $nocache = false, $scope = null)
+ {
+ if (is_array($tpl_var)) {
+ foreach ($tpl_var as $_key => $_val) {
+ $this->assign($_key, $_val, $nocache, $scope);
+ }
+ return $this;
+ }
+ switch ($scope ?? $this->getDefaultScope()) {
+ case self::SCOPE_GLOBAL:
+ case self::SCOPE_SMARTY:
+ $this->getSmarty()->assign($tpl_var, $value);
+ break;
+ case self::SCOPE_TPL_ROOT:
+ $ptr = $this;
+ while (isset($ptr->parent) && ($ptr->parent instanceof Template)) {
+ $ptr = $ptr->parent;
+ }
+ $ptr->assign($tpl_var, $value);
+ break;
+ case self::SCOPE_ROOT:
+ $ptr = $this;
+ while (isset($ptr->parent) && !($ptr->parent instanceof Smarty)) {
+ $ptr = $ptr->parent;
+ }
+ $ptr->assign($tpl_var, $value);
+ break;
+ case self::SCOPE_PARENT:
+ if ($this->parent) {
+ $this->parent->assign($tpl_var, $value);
+ } else {
+ // assign local as fallback
+ $this->assign($tpl_var, $value);
+ }
+ break;
+ case self::SCOPE_LOCAL:
+ default:
+ if (isset($this->tpl_vars[$tpl_var])) {
+ $this->tpl_vars[$tpl_var]->setValue($value);
+ if ($nocache) {
+ $this->tpl_vars[$tpl_var]->setNocache(true);
+ }
+ } else {
+ $this->tpl_vars[$tpl_var] = new Variable($value, $nocache);
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * appends values to template variables
+ *
+ * @param array|string $tpl_var the template variable name(s)
+ * @param mixed $value the value to append
+ * @param bool $merge flag if array elements shall be merged
+ * @param bool $nocache if true any output of this variable will
+ * be not cached
+ *
+ * @return Data
+ * @api Smarty::append()
+ */
+ public function append($tpl_var, $value = null, $merge = false, $nocache = false)
+ {
+ if (is_array($tpl_var)) {
+ foreach ($tpl_var as $_key => $_val) {
+ $this->append($_key, $_val, $merge, $nocache);
+ }
+ } else {
+
+ $newValue = $this->getValue($tpl_var) ?? [];
+ if (!is_array($newValue)) {
+ $newValue = (array) $newValue;
+ }
+
+ if ($merge && is_array($value)) {
+ foreach ($value as $_mkey => $_mval) {
+ $newValue[$_mkey] = $_mval;
+ }
+ } else {
+ $newValue[] = $value;
+ }
+
+ $this->assign($tpl_var, $newValue, $nocache);
+ }
+ return $this;
+ }
+
+ /**
+ * assigns a global Smarty variable
+ *
+ * @param string $varName the global variable name
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
+ * @return Data
+ * @deprecated since 5.0
+ */
+ public function assignGlobal($varName, $value = null, $nocache = false)
+ {
+ trigger_error(__METHOD__ . " is deprecated. Use \\Smarty\\Smarty::assign() to assign a variable " .
+ " at the Smarty level.", E_USER_DEPRECATED);
+ return $this->getSmarty()->assign($varName, $value, $nocache);
+ }
+
+ /**
+ * Returns a single or all template variables
+ *
+ * @param string $varName variable name or null
+ * @param bool $searchParents include parent templates?
+ *
+ * @return mixed variable value or or array of variables
+ * @api Smarty::getTemplateVars()
+ *
+ */
+ public function getTemplateVars($varName = null, $searchParents = true)
+ {
+ if (isset($varName)) {
+ return $this->getValue($varName, $searchParents);
+ }
+
+ return array_merge(
+ $this->parent && $searchParents ? $this->parent->getTemplateVars() : [],
+ array_map(function(Variable $var) { return $var->getValue(); }, $this->tpl_vars)
+ );
+ }
+
+ /**
+ * Wrapper for ::getVariable()
+ *
+ * @deprecated since 5.0
+ *
+ * @param $varName
+ * @param $searchParents
+ * @param $errorEnable
+ *
+ * @return void
+ */
+ public function _getVariable($varName, $searchParents = true, $errorEnable = true) {
+ trigger_error('Using ::_getVariable() to is deprecated and will be ' .
+ 'removed in a future release. Use getVariable() instead.', E_USER_DEPRECATED);
+ return $this->getVariable($varName, $searchParents, $errorEnable);
+ }
+
+ /**
+ * Gets the object of a Smarty variable
+ *
+ * @param string $varName the name of the Smarty variable
+ * @param bool $searchParents search also in parent data
+ * @param bool $errorEnable
+ *
+ * @return Variable
+ */
+ public function getVariable($varName, $searchParents = true, $errorEnable = true) {
+ if (isset($this->tpl_vars[$varName])) {
+ return $this->tpl_vars[$varName];
+ }
+
+ if ($searchParents && $this->parent) {
+ return $this->parent->getVariable($varName, $searchParents, $errorEnable);
+ }
+
+ if ($errorEnable && $this->getSmarty()->error_unassigned) {
+ // force a notice
+ $x = $$varName;
+ }
+ return new UndefinedVariable();
+ }
+
+ /**
+ * Directly sets a complete Variable object in the variable with the given name.
+ * @param $varName
+ * @param Variable $variableObject
+ *
+ * @return void
+ */
+ public function setVariable($varName, Variable $variableObject) {
+ $this->tpl_vars[$varName] = $variableObject;
+ }
+
+ /**
+ * Indicates if given variable has been set.
+ * @param $varName
+ *
+ * @return bool
+ */
+ public function hasVariable($varName): bool {
+ return !($this->getVariable($varName, true, false) instanceof UndefinedVariable);
+ }
+
+ /**
+ * Returns the value of the Smarty\Variable given by $varName, or null if the variable does not exist.
+ *
+ * @param $varName
+ * @param bool $searchParents
+ *
+ * @return mixed|null
+ */
+ public function getValue($varName, $searchParents = true) {
+ $variable = $this->getVariable($varName, $searchParents);
+ return isset($variable) ? $variable->getValue() : null;
+ }
+
+ /**
+ * load config variables into template object
+ *
+ * @param array $new_config_vars
+ */
+ public function assignConfigVars($new_config_vars, array $sections = []) {
+
+ // copy global config vars
+ foreach ($new_config_vars['vars'] as $variable => $value) {
+ if ($this->getSmarty()->config_overwrite || !isset($this->config_vars[$variable])) {
+ $this->config_vars[$variable] = $value;
+ } else {
+ $this->config_vars[$variable] = array_merge((array)$this->config_vars[$variable], (array)$value);
+ }
+ }
+
+ foreach ($sections as $tpl_section) {
+ if (isset($new_config_vars['sections'][$tpl_section])) {
+ foreach ($new_config_vars['sections'][$tpl_section]['vars'] as $variable => $value) {
+ if ($this->getSmarty()->config_overwrite || !isset($this->config_vars[$variable])) {
+ $this->config_vars[$variable] = $value;
+ } else {
+ $this->config_vars[$variable] = array_merge((array)$this->config_vars[$variable], (array)$value);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Get Smarty object
+ *
+ * @return Smarty
+ */
+ public function getSmarty()
+ {
+ return $this->smarty;
+ }
+
+ /**
+ * clear the given assigned template variable(s).
+ *
+ * @param string|array $tpl_var the template variable(s) to clear
+ *
+ * @return Data
+ *
+ * @api Smarty::clearAssign()
+ */
+ public function clearAssign($tpl_var)
+ {
+ if (is_array($tpl_var)) {
+ foreach ($tpl_var as $curr_var) {
+ unset($this->tpl_vars[ $curr_var ]);
+ }
+ } else {
+ unset($this->tpl_vars[ $tpl_var ]);
+ }
+ return $this;
+ }
+
+ /**
+ * clear all the assigned template variables.
+ *
+ * @return Data
+ *
+ * @api Smarty::clearAllAssign()
+ */
+ public function clearAllAssign()
+ {
+ $this->tpl_vars = array();
+ return $this;
+ }
+
+ /**
+ * clear a single or all config variables
+ *
+ * @param string|null $name variable name or null
+ *
+ * @return Data
+ *
+ * @api Smarty::clearConfig()
+ */
+ public function clearConfig($name = null)
+ {
+ if (isset($name)) {
+ unset($this->config_vars[ $name ]);
+ } else {
+ $this->config_vars = array();
+ }
+ return $this;
+ }
+
+ /**
+ * Gets a config variable value
+ *
+ * @param string $varName the name of the config variable
+ *
+ * @return mixed the value of the config variable
+ * @throws Exception
+ */
+ public function getConfigVariable($varName)
+ {
+
+ if (isset($this->config_vars[$varName])) {
+ return $this->config_vars[$varName];
+ }
+
+ $returnValue = $this->parent ? $this->parent->getConfigVariable($varName) : null;
+
+ if ($returnValue === null && $this->getSmarty()->error_unassigned) {
+ throw new Exception("Undefined variable $varName");
+ }
+
+ return $returnValue;
+ }
+
+ public function hasConfigVariable($varName): bool {
+ try {
+ return $this->getConfigVariable($varName) !== null;
+ } catch (Exception $e) {
+ return false;
+ }
+ }
+
+ /**
+ * Returns a single or all config variables
+ *
+ * @param string $varname variable name or null
+ *
+ * @return mixed variable value or or array of variables
+ * @throws Exception
+ *
+ * @api Smarty::getConfigVars()
+ */
+ public function getConfigVars($varname = null)
+ {
+ if (isset($varname)) {
+ return $this->getConfigVariable($varname);
+ }
+
+ return array_merge($this->parent ? $this->parent->getConfigVars() : [], $this->config_vars);
+ }
+
+ /**
+ * load a config file, optionally load just selected sections
+ *
+ * @param string $config_file filename
+ * @param mixed $sections array of section names, single
+ * section or null
+
+ * @returns $this
+ * @throws \Exception
+ *
+ * @api Smarty::configLoad()
+ */
+ public function configLoad($config_file, $sections = null)
+ {
+ $template = $this->getSmarty()->doCreateTemplate($config_file, null, null, $this, null, null, true);
+ $template->caching = Smarty::CACHING_OFF;
+ $template->assign('sections', (array) $sections ?? []);
+ // trigger a call to $this->assignConfigVars
+ $template->fetch();
+ return $this;
+ }
+
+ /**
+ * Sets the default scope for new variables assigned in this template.
+ * @param int $scope
+ *
+ * @return void
+ */
+ protected function setDefaultScope(int $scope) {
+ $this->defaultScope = $scope;
+ }
+
+ /**
+ * Returns the default scope for new variables assigned in this template.
+ * @return int
+ */
+ public function getDefaultScope(): int {
+ return $this->defaultScope;
+ }
+
+ /**
+ * @return Data|Smarty|null
+ */
+ public function getParent() {
+ return $this->parent;
+ }
+
+ /**
+ * @param Data|Smarty|null $parent
+ */
+ public function setParent($parent): void {
+ $this->parent = $parent;
+ }
+
+ public function pushStack(): void {
+ $stackList = [];
+ foreach ($this->tpl_vars as $name => $variable) {
+ $stackList[$name] = clone $variable; // variables are stored in Variable objects
+ }
+ $this->_var_stack[] = $this->tpl_vars;
+ $this->tpl_vars = $stackList;
+
+ $this->_config_stack[] = $this->config_vars;
+ }
+
+ public function popStack(): void {
+ $this->tpl_vars = array_pop($this->_var_stack);
+ $this->config_vars = array_pop($this->_config_stack);
+ }
+}
diff --git a/vendor/smarty/smarty/src/Debug.php b/vendor/smarty/smarty/src/Debug.php
new file mode 100644
index 000000000..ab1a88779
--- /dev/null
+++ b/vendor/smarty/smarty/src/Debug.php
@@ -0,0 +1,370 @@
+<?php
+
+namespace Smarty;
+
+/**
+ * Smarty Internal Plugin Debug
+ * Class to collect data for the Smarty Debugging Console
+ *
+ * @author Uwe Tews
+ */
+class Debug extends Data
+{
+ /**
+ * template data
+ *
+ * @var array
+ */
+ public $template_data = [];
+
+ /**
+ * List of uid's which shall be ignored
+ *
+ * @var array
+ */
+ public $ignore_uid = [];
+
+ /**
+ * Index of display() and fetch() calls
+ *
+ * @var int
+ */
+ public $index = 0;
+
+ /**
+ * Counter for window offset
+ *
+ * @var int
+ */
+ public $offset = 0;
+
+ /**
+ * Start logging template
+ *
+ * @param Template $template template
+ * @param null $mode true: display false: fetch null: subtemplate
+ */
+ public function start_template(Template $template, $mode = null)
+ {
+ if (isset($mode) && !$template->_isSubTpl()) {
+ $this->index++;
+ $this->offset++;
+ $this->template_data[ $this->index ] = null;
+ }
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_template_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of cache time
+ *
+ * @param Template $template cached template
+ */
+ public function end_template(Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'total_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_template_time' ];
+ }
+
+ /**
+ * Start logging of compile time
+ *
+ * @param Template $template
+ */
+ public function start_compile(Template $template)
+ {
+ static $_is_stringy = array('string' => true, 'eval' => true);
+ if (!empty($template->getCompiler()->trace_uid)) {
+ $key = $template->getCompiler()->trace_uid;
+ if (!isset($this->template_data[ $this->index ][ $key ])) {
+ $this->saveTemplateData($_is_stringy, $template, $key);
+ }
+ } else {
+ if (isset($this->ignore_uid[ $template->getSource()->uid ])) {
+ return;
+ }
+ $key = $this->get_key($template);
+ }
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of compile time
+ *
+ * @param Template $template
+ */
+ public function end_compile(Template $template)
+ {
+ if (!empty($template->getCompiler()->trace_uid)) {
+ $key = $template->getCompiler()->trace_uid;
+ } else {
+ if (isset($this->ignore_uid[ $template->getSource()->uid ])) {
+ return;
+ }
+ $key = $this->get_key($template);
+ }
+ $this->template_data[ $this->index ][ $key ][ 'compile_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Start logging of render time
+ *
+ * @param Template $template
+ */
+ public function start_render(Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of compile time
+ *
+ * @param Template $template
+ */
+ public function end_render(Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'render_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Start logging of cache time
+ *
+ * @param Template $template cached template
+ */
+ public function start_cache(Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of cache time
+ *
+ * @param Template $template cached template
+ */
+ public function end_cache(Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'cache_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Register template object
+ *
+ * @param Template $template cached template
+ */
+ public function register_template(Template $template)
+ {
+ }
+
+ /**
+ * Register data object
+ *
+ * @param Data $data data object
+ */
+ public static function register_data(Data $data)
+ {
+ }
+
+ /**
+ * Opens a window for the Smarty Debugging Console and display the data
+ *
+ * @param Template|Smarty $obj object to debug
+ * @param bool $full
+ *
+ * @throws \Exception
+ * @throws Exception
+ */
+ public function display_debug($obj, bool $full = false)
+ {
+ if (!$full) {
+ $this->offset++;
+ $savedIndex = $this->index;
+ $this->index = 9999;
+ }
+ $smarty = $obj->getSmarty();
+ // create fresh instance of smarty for displaying the debug console
+ // to avoid problems if the application did overload the Smarty class
+ $debObj = new Smarty();
+ // copy the working dirs from application
+ $debObj->setCompileDir($smarty->getCompileDir());
+ $debObj->compile_check = Smarty::COMPILECHECK_ON;
+ $debObj->security_policy = null;
+ $debObj->debugging = false;
+ $debObj->debugging_ctrl = 'NONE';
+ $debObj->error_reporting = E_ALL & ~E_NOTICE;
+ $debObj->debug_tpl = $smarty->debug_tpl ?? 'file:' . __DIR__ . '/debug.tpl';
+ $debObj->registered_resources = array();
+ $debObj->escape_html = true;
+ $debObj->caching = Smarty::CACHING_OFF;
+ // prepare information of assigned variables
+ $ptr = $this->get_debug_vars($obj);
+ $_assigned_vars = $ptr->tpl_vars;
+ ksort($_assigned_vars);
+ $_config_vars = $ptr->config_vars;
+ ksort($_config_vars);
+ $debugging = $smarty->debugging;
+ $templateName = $obj->getSource()->type . ':' . $obj->getSource()->name;
+ $displayMode = $debugging === 2 || !$full;
+ $offset = $this->offset * 50;
+ $_template = $debObj->doCreateTemplate($debObj->debug_tpl);
+ if ($obj instanceof Template) {
+ $_template->assign('template_name', $templateName);
+ } elseif ($obj instanceof Smarty || $full) {
+ $_template->assign('template_data', $this->template_data[$this->index]);
+ } else {
+ $_template->assign('template_data', null);
+ }
+ $_template->assign('assigned_vars', $_assigned_vars);
+ $_template->assign('config_vars', $_config_vars);
+ $_template->assign('execution_time', microtime(true) - $smarty->start_time);
+ $_template->assign('targetWindow', $displayMode ? md5("$offset$templateName") : '__Smarty__');
+ $_template->assign('offset', $offset);
+ echo $_template->fetch();
+ if (isset($full)) {
+ $this->index--;
+ }
+ if (!$full) {
+ $this->index = $savedIndex;
+ }
+ }
+
+ /**
+ * Recursively gets variables from all template/data scopes
+ *
+ * @param \Smarty\Data $obj object to debug
+ *
+ * @return \StdClass
+ */
+ private function get_debug_vars($obj)
+ {
+ $config_vars = array();
+ foreach ($obj->config_vars as $key => $var) {
+ $config_vars[$key]['value'] = $var;
+ $config_vars[$key]['scope'] = get_class($obj) . ':' . spl_object_id($obj);
+ }
+ $tpl_vars = array();
+ foreach ($obj->tpl_vars as $key => $var) {
+ foreach ($var as $varkey => $varvalue) {
+ if ($varkey === 'value') {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ } else {
+ if ($varkey === 'nocache') {
+ if ($varvalue === true) {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ }
+ } else {
+ if ($varkey !== 'scope' || $varvalue !== 0) {
+ $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue;
+ }
+ }
+ }
+ }
+ $tpl_vars[$key]['scope'] = get_class($obj) . ':' . spl_object_id($obj);
+ }
+ if (isset($obj->parent)) {
+ $parent = $this->get_debug_vars($obj->parent);
+ foreach ($parent->tpl_vars as $name => $pvar) {
+ if (isset($tpl_vars[ $name ]) && $tpl_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
+ $tpl_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
+ }
+ }
+ $tpl_vars = array_merge($parent->tpl_vars, $tpl_vars);
+ foreach ($parent->config_vars as $name => $pvar) {
+ if (isset($config_vars[ $name ]) && $config_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
+ $config_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
+ }
+ }
+ $config_vars = array_merge($parent->config_vars, $config_vars);
+ }
+ return (object)array('tpl_vars' => $tpl_vars, 'config_vars' => $config_vars);
+ }
+
+ /**
+ * Return key into $template_data for template
+ *
+ * @param Template $template template object
+ *
+ * @return string key into $template_data
+ */
+ private function get_key(Template $template)
+ {
+ static $_is_stringy = array('string' => true, 'eval' => true);
+
+ $key = $template->getSource()->uid;
+ if (isset($this->template_data[ $this->index ][ $key ])) {
+ return $key;
+ } else {
+ $this->saveTemplateData($_is_stringy, $template, $key);
+ $this->template_data[ $this->index ][ $key ][ 'total_time' ] = 0;
+ return $key;
+ }
+ }
+
+ /**
+ * Ignore template
+ *
+ * @param Template $template
+ */
+ public function ignore(Template $template)
+ {
+ $this->ignore_uid[$template->getSource()->uid] = true;
+ }
+
+ /**
+ * handle 'URL' debugging mode
+ *
+ * @param Smarty $smarty
+ */
+ public function debugUrl(Smarty $smarty)
+ {
+ if (isset($_SERVER[ 'QUERY_STRING' ])) {
+ $_query_string = $_SERVER[ 'QUERY_STRING' ];
+ } else {
+ $_query_string = '';
+ }
+ if (false !== strpos($_query_string, $smarty->smarty_debug_id)) {
+ if (false !== strpos($_query_string, $smarty->smarty_debug_id . '=on')) {
+ // enable debugging for this browser session
+ setcookie('SMARTY_DEBUG', true);
+ $smarty->debugging = true;
+ } elseif (false !== strpos($_query_string, $smarty->smarty_debug_id . '=off')) {
+ // disable debugging for this browser session
+ setcookie('SMARTY_DEBUG', false);
+ $smarty->debugging = false;
+ } else {
+ // enable debugging for this page
+ $smarty->debugging = true;
+ }
+ } else {
+ if (isset($_COOKIE[ 'SMARTY_DEBUG' ])) {
+ $smarty->debugging = true;
+ }
+ }
+ }
+
+ /**
+ * @param array $_is_stringy
+ * @param Template $template
+ * @param string $key
+ *
+ * @return void
+ */
+ private function saveTemplateData(array $_is_stringy, Template $template, string $key): void {
+ if (isset($_is_stringy[$template->getSource()->type])) {
+ $this->template_data[$this->index][$key]['name'] =
+ '\'' . substr($template->getSource()->name, 0, 25) . '...\'';
+ } else {
+ $this->template_data[$this->index][$key]['name'] = $template->getSource()->getResourceName();
+ }
+ $this->template_data[$this->index][$key]['compile_time'] = 0;
+ $this->template_data[$this->index][$key]['render_time'] = 0;
+ $this->template_data[$this->index][$key]['cache_time'] = 0;
+ }
+}
diff --git a/vendor/smarty/smarty/src/ErrorHandler.php b/vendor/smarty/smarty/src/ErrorHandler.php
new file mode 100644
index 000000000..05b1cb3e6
--- /dev/null
+++ b/vendor/smarty/smarty/src/ErrorHandler.php
@@ -0,0 +1,97 @@
+<?php
+
+namespace Smarty;
+
+/**
+ * Smarty error handler to fix new error levels in PHP8 for backwards compatibility
+ * @author Simon Wisselink
+ */
+class ErrorHandler
+{
+ /**
+ * Allows {$foo->propName} where propName is undefined.
+ * @var bool
+ */
+ public $allowUndefinedProperties = true;
+
+ /**
+ * Allows {$foo.bar} where bar is unset and {$foo.bar1.bar2} where either bar1 or bar2 is unset.
+ * @var bool
+ */
+ public $allowUndefinedArrayKeys = true;
+
+ /**
+ * Allows {$foo->bar} where bar is not an object (e.g. null or false).
+ * @var bool
+ */
+ public $allowDereferencingNonObjects = true;
+
+ private $previousErrorHandler = null;
+
+ /**
+ * Enable error handler to intercept errors
+ */
+ public function activate() {
+ /*
+ Error muting is done because some people implemented custom error_handlers using
+ https://php.net/set_error_handler and for some reason did not understand the following paragraph:
+
+ It is important to remember that the standard PHP error handler is completely bypassed for the
+ error types specified by error_types unless the callback function returns FALSE.
+ error_reporting() settings will have no effect and your error handler will be called regardless -
+ however you are still able to read the current value of error_reporting and act appropriately.
+ Of particular note is that this value will be 0 if the statement that caused the error was
+ prepended by the @ error-control operator.
+ */
+ $this->previousErrorHandler = set_error_handler([$this, 'handleError']);
+ }
+
+ /**
+ * Disable error handler
+ */
+ public function deactivate() {
+ restore_error_handler();
+ $this->previousErrorHandler = null;
+ }
+
+ /**
+ * Error Handler to mute expected messages
+ *
+ * @link https://php.net/set_error_handler
+ *
+ * @param integer $errno Error level
+ * @param $errstr
+ * @param $errfile
+ * @param $errline
+ * @param $errcontext
+ *
+ * @return bool
+ */
+ public function handleError($errno, $errstr, $errfile, $errline, $errcontext = [])
+ {
+ if ($this->allowUndefinedProperties && preg_match(
+ '/^(Undefined property)/',
+ $errstr
+ )) {
+ return; // suppresses this error
+ }
+
+ if ($this->allowUndefinedArrayKeys && preg_match(
+ '/^(Undefined index|Undefined array key|Trying to access array offset on)/',
+ $errstr
+ )) {
+ return; // suppresses this error
+ }
+
+ if ($this->allowDereferencingNonObjects && preg_match(
+ '/^Attempt to read property ".+?" on/',
+ $errstr
+ )) {
+ return; // suppresses this error
+ }
+
+ // pass all other errors through to the previous error handler or to the default PHP error handler
+ return $this->previousErrorHandler ?
+ call_user_func($this->previousErrorHandler, $errno, $errstr, $errfile, $errline, $errcontext) : false;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Exception.php b/vendor/smarty/smarty/src/Exception.php
new file mode 100644
index 000000000..0f75f5685
--- /dev/null
+++ b/vendor/smarty/smarty/src/Exception.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Smarty;
+
+/**
+ * Smarty exception class
+ */
+class Exception extends \Exception {
+
+ /**
+ * @return string
+ */
+ public function __toString() {
+ return ' --> Smarty: ' . $this->message . ' <-- ';
+ }
+}
diff --git a/vendor/smarty/smarty/src/Extension/BCPluginsAdapter.php b/vendor/smarty/smarty/src/Extension/BCPluginsAdapter.php
new file mode 100644
index 000000000..aa0eefe20
--- /dev/null
+++ b/vendor/smarty/smarty/src/Extension/BCPluginsAdapter.php
@@ -0,0 +1,229 @@
+<?php
+
+namespace Smarty\Extension;
+
+use Smarty\BlockHandler\BlockPluginWrapper;
+use Smarty\Compile\CompilerInterface;
+use Smarty\Compile\Modifier\BCPluginWrapper as ModifierCompilerPluginWrapper;
+use Smarty\Compile\Tag\BCPluginWrapper as TagPluginWrapper;
+use Smarty\Filter\FilterPluginWrapper;
+use Smarty\FunctionHandler\BCPluginWrapper as FunctionPluginWrapper;
+
+class BCPluginsAdapter extends Base {
+
+ /**
+ * @var \Smarty\Smarty
+ */
+ private $smarty;
+
+ public function __construct(\Smarty\Smarty $smarty) {
+ $this->smarty = $smarty;
+ }
+
+ private function findPlugin($type, $name): ?array {
+ if (null !== $plugin = $this->smarty->getRegisteredPlugin($type, $name)) {
+ return $plugin;
+ }
+
+ return null;
+ }
+
+ public function getTagCompiler(string $tag): ?\Smarty\Compile\CompilerInterface {
+
+ $plugin = $this->findPlugin(\Smarty\Smarty::PLUGIN_COMPILER, $tag);
+ if ($plugin === null) {
+ return null;
+ }
+
+ if (is_callable($plugin[0])) {
+ $callback = $plugin[0];
+ $cacheable = (bool) $plugin[1] ?? true;
+ return new TagPluginWrapper($callback, $cacheable);
+ } elseif (class_exists($plugin[0])) {
+ $compiler = new $plugin[0];
+ if ($compiler instanceof CompilerInterface) {
+ return $compiler;
+ }
+ }
+
+ return null;
+ }
+
+ public function getFunctionHandler(string $functionName): ?\Smarty\FunctionHandler\FunctionHandlerInterface {
+ $plugin = $this->findPlugin(\Smarty\Smarty::PLUGIN_FUNCTION, $functionName);
+ if ($plugin === null) {
+ return null;
+ }
+ $callback = $plugin[0];
+ $cacheable = (bool) $plugin[1] ?? true;
+
+ return new FunctionPluginWrapper($callback, $cacheable);
+
+ }
+
+ public function getBlockHandler(string $blockTagName): ?\Smarty\BlockHandler\BlockHandlerInterface {
+ $plugin = $this->findPlugin(\Smarty\Smarty::PLUGIN_BLOCK, $blockTagName);
+ if ($plugin === null) {
+ return null;
+ }
+ $callback = $plugin[0];
+ $cacheable = (bool) $plugin[1] ?? true;
+
+ return new BlockPluginWrapper($callback, $cacheable);
+ }
+
+ public function getModifierCallback(string $modifierName) {
+
+ $plugin = $this->findPlugin(\Smarty\Smarty::PLUGIN_MODIFIER, $modifierName);
+ if ($plugin === null) {
+ return null;
+ }
+ return $plugin[0];
+ }
+
+ public function getModifierCompiler(string $modifier): ?\Smarty\Compile\Modifier\ModifierCompilerInterface {
+ $plugin = $this->findPlugin(\Smarty\Smarty::PLUGIN_MODIFIERCOMPILER, $modifier);
+ if ($plugin === null) {
+ return null;
+ }
+ $callback = $plugin[0];
+
+ return new ModifierCompilerPluginWrapper($callback);
+ }
+
+ /**
+ * @var array
+ */
+ private $preFilters = [];
+
+ public function getPreFilters(): array {
+ return $this->preFilters;
+ }
+
+ public function addPreFilter(\Smarty\Filter\FilterInterface $filter) {
+ $this->preFilters[] = $filter;
+ }
+
+ public function addCallableAsPreFilter(callable $callable, ?string $name = null) {
+ if ($name === null) {
+ $this->preFilters[] = new FilterPluginWrapper($callable);
+ } else {
+ $this->preFilters[$name] = new FilterPluginWrapper($callable);
+ }
+ }
+
+ public function removePrefilter(string $name) {
+ unset($this->preFilters[$name]);
+ }
+
+ /**
+ * @var array
+ */
+ private $postFilters = [];
+
+ public function getPostFilters(): array {
+ return $this->postFilters;
+ }
+
+ public function addPostFilter(\Smarty\Filter\FilterInterface $filter) {
+ $this->postFilters[] = $filter;
+ }
+
+ public function addCallableAsPostFilter(callable $callable, ?string $name = null) {
+ if ($name === null) {
+ $this->postFilters[] = new FilterPluginWrapper($callable);
+ } else {
+ $this->postFilters[$name] = new FilterPluginWrapper($callable);
+ }
+ }
+
+ public function removePostFilter(string $name) {
+ unset($this->postFilters[$name]);
+ }
+
+
+ /**
+ * @var array
+ */
+ private $outputFilters = [];
+
+ public function getOutputFilters(): array {
+ return $this->outputFilters;
+ }
+
+ public function addOutputFilter(\Smarty\Filter\FilterInterface $filter) {
+ $this->outputFilters[] = $filter;
+ }
+
+ public function addCallableAsOutputFilter(callable $callable, ?string $name = null) {
+ if ($name === null) {
+ $this->outputFilters[] = new FilterPluginWrapper($callable);
+ } else {
+ $this->outputFilters[$name] = new FilterPluginWrapper($callable);
+ }
+ }
+
+ public function removeOutputFilter(string $name) {
+ unset($this->outputFilters[$name]);
+ }
+
+ public function loadPluginsFromDir(string $path) {
+
+ foreach([
+ 'function',
+ 'modifier',
+ 'block',
+ 'compiler',
+ 'prefilter',
+ 'postfilter',
+ 'outputfilter',
+ ] as $type) {
+ foreach (glob($path . $type . '.?*.php') as $filename) {
+ $pluginName = $this->getPluginNameFromFilename($filename);
+ if ($pluginName !== null) {
+ require_once $filename;
+ $functionOrClassName = 'smarty_' . $type . '_' . $pluginName;
+ if (function_exists($functionOrClassName) || class_exists($functionOrClassName)) {
+ $this->smarty->registerPlugin($type, $pluginName, $functionOrClassName, true, []);
+ }
+ }
+ }
+ }
+
+ $type = 'resource';
+ foreach (glob($path . $type . '.?*.php') as $filename) {
+ $pluginName = $this->getPluginNameFromFilename($filename);
+ if ($pluginName !== null) {
+ require_once $filename;
+ if (class_exists($className = 'smarty_' . $type . '_' . $pluginName)) {
+ $this->smarty->registerResource($pluginName, new $className());
+ }
+ }
+ }
+
+ $type = 'cacheresource';
+ foreach (glob($path . $type . '.?*.php') as $filename) {
+ $pluginName = $this->getPluginNameFromFilename($filename);
+ if ($pluginName !== null) {
+ require_once $filename;
+ if (class_exists($className = 'smarty_' . $type . '_' . $pluginName)) {
+ $this->smarty->registerCacheResource($pluginName, new $className());
+ }
+ }
+ }
+
+ }
+
+ /**
+ * @param $filename
+ *
+ * @return string|null
+ */
+ private function getPluginNameFromFilename($filename) {
+ if (!preg_match('/.*\.([a-z_A-Z0-9]+)\.php$/',$filename,$matches)) {
+ return null;
+ }
+ return $matches[1];
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Extension/Base.php b/vendor/smarty/smarty/src/Extension/Base.php
new file mode 100644
index 000000000..b37b6acd0
--- /dev/null
+++ b/vendor/smarty/smarty/src/Extension/Base.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace Smarty\Extension;
+
+use Smarty\FunctionHandler\FunctionHandlerInterface;
+
+class Base implements ExtensionInterface {
+
+ public function getTagCompiler(string $tag): ?\Smarty\Compile\CompilerInterface {
+ return null;
+ }
+
+ public function getModifierCompiler(string $modifier): ?\Smarty\Compile\Modifier\ModifierCompilerInterface {
+ return null;
+ }
+
+ public function getFunctionHandler(string $functionName): ?\Smarty\FunctionHandler\FunctionHandlerInterface {
+ return null;
+ }
+
+ public function getBlockHandler(string $blockTagName): ?\Smarty\BlockHandler\BlockHandlerInterface {
+ return null;
+ }
+
+ public function getModifierCallback(string $modifierName) {
+ return null;
+ }
+
+ public function getPreFilters(): array {
+ return [];
+ }
+
+ public function getPostFilters(): array {
+ return [];
+ }
+
+ public function getOutputFilters(): array {
+ return [];
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Extension/CallbackWrapper.php b/vendor/smarty/smarty/src/Extension/CallbackWrapper.php
new file mode 100644
index 000000000..193fc1363
--- /dev/null
+++ b/vendor/smarty/smarty/src/Extension/CallbackWrapper.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Smarty\Extension;
+
+use Smarty\Exception;
+
+class CallbackWrapper {
+
+ /**
+ * @var callback
+ */
+ private $callback;
+ /**
+ * @var string
+ */
+ private $modifierName;
+
+ /**
+ * @param string $modifierName
+ * @param callback $callback
+ */
+ public function __construct(string $modifierName, $callback) {
+ $this->callback = $callback;
+ $this->modifierName = $modifierName;
+ }
+
+ public function handle(...$params) {
+ try {
+ return ($this->callback)(...$params);
+ } catch (\ArgumentCountError $e) {
+ throw new Exception("Invalid number of arguments to modifier " . $this->modifierName);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Extension/CoreExtension.php b/vendor/smarty/smarty/src/Extension/CoreExtension.php
new file mode 100644
index 000000000..a7c658d34
--- /dev/null
+++ b/vendor/smarty/smarty/src/Extension/CoreExtension.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Smarty\Extension;
+
+class CoreExtension extends Base {
+ public function getTagCompiler(string $tag): ?\Smarty\Compile\CompilerInterface {
+ switch ($tag) {
+ case 'append': return new \Smarty\Compile\Tag\Append();
+ case 'assign': return new \Smarty\Compile\Tag\Assign();
+ case 'block': return new \Smarty\Compile\Tag\Block();
+ case 'blockclose': return new \Smarty\Compile\Tag\BlockClose();
+ case 'break': return new \Smarty\Compile\Tag\BreakTag();
+ case 'call': return new \Smarty\Compile\Tag\Call();
+ case 'capture': return new \Smarty\Compile\Tag\Capture();
+ case 'captureclose': return new \Smarty\Compile\Tag\CaptureClose();
+ case 'config_load': return new \Smarty\Compile\Tag\ConfigLoad();
+ case 'continue': return new \Smarty\Compile\Tag\ContinueTag();
+ case 'debug': return new \Smarty\Compile\Tag\Debug();
+ case 'eval': return new \Smarty\Compile\Tag\EvalTag();
+ case 'extends': return new \Smarty\Compile\Tag\ExtendsTag();
+ case 'for': return new \Smarty\Compile\Tag\ForTag();
+ case 'foreach': return new \Smarty\Compile\Tag\ForeachTag();
+ case 'foreachelse': return new \Smarty\Compile\Tag\ForeachElse();
+ case 'foreachclose': return new \Smarty\Compile\Tag\ForeachClose();
+ case 'forelse': return new \Smarty\Compile\Tag\ForElse();
+ case 'forclose': return new \Smarty\Compile\Tag\ForClose();
+ case 'function': return new \Smarty\Compile\Tag\FunctionTag();
+ case 'functionclose': return new \Smarty\Compile\Tag\FunctionClose();
+ case 'if': return new \Smarty\Compile\Tag\IfTag();
+ case 'else': return new \Smarty\Compile\Tag\ElseTag();
+ case 'elseif': return new \Smarty\Compile\Tag\ElseIfTag();
+ case 'ifclose': return new \Smarty\Compile\Tag\IfClose();
+ case 'include': return new \Smarty\Compile\Tag\IncludeTag();
+ case 'ldelim': return new \Smarty\Compile\Tag\Ldelim();
+ case 'rdelim': return new \Smarty\Compile\Tag\Rdelim();
+ case 'nocache': return new \Smarty\Compile\Tag\Nocache();
+ case 'nocacheclose': return new \Smarty\Compile\Tag\NocacheClose();
+ case 'section': return new \Smarty\Compile\Tag\Section();
+ case 'sectionelse': return new \Smarty\Compile\Tag\SectionElse();
+ case 'sectionclose': return new \Smarty\Compile\Tag\SectionClose();
+ case 'setfilter': return new \Smarty\Compile\Tag\Setfilter();
+ case 'setfilterclose': return new \Smarty\Compile\Tag\SetfilterClose();
+ case 'while': return new \Smarty\Compile\Tag\WhileTag();
+ case 'whileclose': return new \Smarty\Compile\Tag\WhileClose();
+ }
+ return null;
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Extension/DefaultExtension.php b/vendor/smarty/smarty/src/Extension/DefaultExtension.php
new file mode 100644
index 000000000..88390b941
--- /dev/null
+++ b/vendor/smarty/smarty/src/Extension/DefaultExtension.php
@@ -0,0 +1,757 @@
+<?php
+
+namespace Smarty\Extension;
+
+use Smarty\Exception;
+
+class DefaultExtension extends Base {
+
+ private $modifiers = [];
+
+ private $functionHandlers = [];
+
+ private $blockHandlers = [];
+
+ public function getModifierCompiler(string $modifier): ?\Smarty\Compile\Modifier\ModifierCompilerInterface {
+
+ if (isset($this->modifiers[$modifier])) {
+ return $this->modifiers[$modifier];
+ }
+
+ switch ($modifier) {
+ case 'cat': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\CatModifierCompiler(); break;
+ case 'count_characters': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\CountCharactersModifierCompiler(); break;
+ case 'count_paragraphs': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\CountParagraphsModifierCompiler(); break;
+ case 'count_sentences': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\CountSentencesModifierCompiler(); break;
+ case 'count_words': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\CountWordsModifierCompiler(); break;
+ case 'default': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\DefaultModifierCompiler(); break;
+ case 'empty': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\EmptyModifierCompiler(); break;
+ case 'escape': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\EscapeModifierCompiler(); break;
+ case 'from_charset': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\FromCharsetModifierCompiler(); break;
+ case 'indent': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\IndentModifierCompiler(); break;
+ case 'is_array': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\IsArrayModifierCompiler(); break;
+ case 'isset': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\IssetModifierCompiler(); break;
+ case 'json_encode': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\JsonEncodeModifierCompiler(); break;
+ case 'lower': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\LowerModifierCompiler(); break;
+ case 'nl2br': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\Nl2brModifierCompiler(); break;
+ case 'noprint': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\NoPrintModifierCompiler(); break;
+ case 'raw': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\RawModifierCompiler(); break;
+ case 'round': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\RoundModifierCompiler(); break;
+ case 'str_repeat': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\StrRepeatModifierCompiler(); break;
+ case 'string_format': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\StringFormatModifierCompiler(); break;
+ case 'strip': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\StripModifierCompiler(); break;
+ case 'strip_tags': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\StripTagsModifierCompiler(); break;
+ case 'strlen': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\StrlenModifierCompiler(); break;
+ case 'substr': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\SubstrModifierCompiler(); break;
+ case 'to_charset': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\ToCharsetModifierCompiler(); break;
+ case 'unescape': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\UnescapeModifierCompiler(); break;
+ case 'upper': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\UpperModifierCompiler(); break;
+ case 'wordwrap': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\WordWrapModifierCompiler(); break;
+ }
+
+ return $this->modifiers[$modifier] ?? null;
+ }
+
+ public function getModifierCallback(string $modifierName) {
+ switch ($modifierName) {
+ case 'capitalize': return [$this, 'smarty_modifier_capitalize'];
+ case 'count': return [$this, 'smarty_modifier_count'];
+ case 'date_format': return [$this, 'smarty_modifier_date_format'];
+ case 'debug_print_var': return [$this, 'smarty_modifier_debug_print_var'];
+ case 'escape': return [$this, 'smarty_modifier_escape'];
+ case 'explode': return [$this, 'smarty_modifier_explode'];
+ case 'implode': return [$this, 'smarty_modifier_implode'];
+ case 'in_array': return [$this, 'smarty_modifier_in_array'];
+ case 'join': return [$this, 'smarty_modifier_join'];
+ case 'mb_wordwrap': return [$this, 'smarty_modifier_mb_wordwrap'];
+ case 'number_format': return [$this, 'smarty_modifier_number_format'];
+ case 'regex_replace': return [$this, 'smarty_modifier_regex_replace'];
+ case 'replace': return [$this, 'smarty_modifier_replace'];
+ case 'spacify': return [$this, 'smarty_modifier_spacify'];
+ case 'split': return [$this, 'smarty_modifier_split'];
+ case 'truncate': return [$this, 'smarty_modifier_truncate'];
+ }
+ return null;
+ }
+
+ public function getFunctionHandler(string $functionName): ?\Smarty\FunctionHandler\FunctionHandlerInterface {
+
+ if (isset($this->functionHandlers[$functionName])) {
+ return $this->functionHandlers[$functionName];
+ }
+
+ switch ($functionName) {
+ case 'count': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Count(); break;
+ case 'counter': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Counter(); break;
+ case 'cycle': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Cycle(); break;
+ case 'fetch': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Fetch(); break;
+ case 'html_checkboxes': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlCheckboxes(); break;
+ case 'html_image': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlImage(); break;
+ case 'html_options': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlOptions(); break;
+ case 'html_radios': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlRadios(); break;
+ case 'html_select_date': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlSelectDate(); break;
+ case 'html_select_time': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlSelectTime(); break;
+ case 'html_table': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlTable(); break;
+ case 'mailto': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Mailto(); break;
+ case 'math': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Math(); break;
+ }
+
+ return $this->functionHandlers[$functionName] ?? null;
+ }
+
+ public function getBlockHandler(string $blockTagName): ?\Smarty\BlockHandler\BlockHandlerInterface {
+
+ switch ($blockTagName) {
+ case 'textformat': $this->blockHandlers[$blockTagName] = new \Smarty\BlockHandler\TextFormat(); break;
+ }
+
+ return $this->blockHandlers[$blockTagName] ?? null;
+ }
+
+ /**
+ * Smarty spacify modifier plugin
+ * Type: modifier
+ * Name: spacify
+ * Purpose: add spaces between characters in a string
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string input string
+ * @param string $spacify_char string to insert between characters.
+ *
+ * @return string
+ */
+ public function smarty_modifier_spacify($string, $spacify_char = ' ')
+ {
+ // well… what about charsets besides latin and UTF-8?
+ return implode($spacify_char, preg_split('//' . \Smarty\Smarty::$_UTF8_MODIFIER, $string, -1, PREG_SPLIT_NO_EMPTY));
+ }
+
+ /**
+ * Smarty capitalize modifier plugin
+ * Type: modifier
+ * Name: capitalize
+ * Purpose: capitalize words in the string
+ * {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }}
+ *
+ * @param string $string string to capitalize
+ * @param boolean $uc_digits also capitalize "x123" to "X123"
+ * @param boolean $lc_rest capitalize first letters, lowercase all following letters "aAa" to "Aaa"
+ *
+ * @return string capitalized string
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Rodney Rehm
+ */
+ public function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = false)
+ {
+ $string = (string) $string;
+
+ if ($lc_rest) {
+ // uppercase (including hyphenated words)
+ $upper_string = mb_convert_case($string, MB_CASE_TITLE, \Smarty\Smarty::$_CHARSET);
+ } else {
+ // uppercase word breaks
+ $upper_string = preg_replace_callback(
+ "!(^|[^\p{L}'])([\p{Ll}])!S" . \Smarty\Smarty::$_UTF8_MODIFIER,
+ function ($matches) {
+ return stripslashes($matches[1]) .
+ mb_convert_case(stripslashes($matches[2]), MB_CASE_UPPER, \Smarty\Smarty::$_CHARSET);
+ },
+ $string
+ );
+ }
+ // check uc_digits case
+ if (!$uc_digits) {
+ if (preg_match_all(
+ "!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . \Smarty\Smarty::$_UTF8_MODIFIER,
+ $string,
+ $matches,
+ PREG_OFFSET_CAPTURE
+ )
+ ) {
+ foreach ($matches[ 1 ] as $match) {
+ $upper_string =
+ substr_replace(
+ $upper_string,
+ mb_strtolower($match[ 0 ], \Smarty\Smarty::$_CHARSET),
+ $match[ 1 ],
+ strlen($match[ 0 ])
+ );
+ }
+ }
+ }
+ $upper_string =
+ preg_replace_callback(
+ "!((^|\s)['\"])(\w)!" . \Smarty\Smarty::$_UTF8_MODIFIER,
+ function ($matches) {
+ return stripslashes(
+ $matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 3 ]),
+ MB_CASE_UPPER,
+ \Smarty\Smarty::$_CHARSET
+ );
+ },
+ $upper_string
+ );
+ return $upper_string;
+ }
+
+ /**
+ * Smarty count modifier plugin
+ * Type: modifier
+ * Name: count
+ * Purpose: counts all elements in an array or in a Countable object
+ * Input:
+ * - Countable|array: array or object to count
+ * - mode: int defaults to 0 for normal count mode, if set to 1 counts recursive
+ *
+ * @param mixed $arrayOrObject input array/object
+ * @param int $mode count mode
+ *
+ * @return int
+ */
+ public function smarty_modifier_count($arrayOrObject, $mode = 0) {
+ /*
+ * @see https://www.php.net/count
+ * > Prior to PHP 8.0.0, if the parameter was neither an array nor an object that implements the Countable interface,
+ * > 1 would be returned, unless value was null, in which case 0 would be returned.
+ */
+
+ if ($arrayOrObject instanceof \Countable || is_array($arrayOrObject)) {
+ return count($arrayOrObject, (int) $mode);
+ } elseif ($arrayOrObject === null) {
+ return 0;
+ }
+ return 1;
+ }
+
+ /**
+ * Smarty date_format modifier plugin
+ * Type: modifier
+ * Name: date_format
+ * Purpose: format datestamps via strftime
+ * Input:
+ * - string: input date string
+ * - format: strftime format for output
+ * - default_date: default date if $string is empty
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string input date string
+ * @param string $format strftime format for output
+ * @param string $default_date default date if $string is empty
+ * @param string $formatter either 'strftime' or 'auto'
+ *
+ * @return string |void
+ * @uses smarty_make_timestamp()
+ */
+ public function smarty_modifier_date_format($string, $format = null, $default_date = '', $formatter = 'auto')
+ {
+ if ($format === null) {
+ $format = \Smarty\Smarty::$_DATE_FORMAT;
+ }
+
+ if (!empty($string) && $string !== '0000-00-00' && $string !== '0000-00-00 00:00:00') {
+ $timestamp = smarty_make_timestamp($string);
+ } elseif (!empty($default_date)) {
+ $timestamp = smarty_make_timestamp($default_date);
+ } else {
+ return;
+ }
+ if ($formatter === 'strftime' || ($formatter === 'auto' && strpos($format, '%') !== false)) {
+ if (\Smarty\Smarty::$_IS_WINDOWS) {
+ $_win_from = array(
+ '%D',
+ '%h',
+ '%n',
+ '%r',
+ '%R',
+ '%t',
+ '%T'
+ );
+ $_win_to = array(
+ '%m/%d/%y',
+ '%b',
+ "\n",
+ '%I:%M:%S %p',
+ '%H:%M',
+ "\t",
+ '%H:%M:%S'
+ );
+ if (strpos($format, '%e') !== false) {
+ $_win_from[] = '%e';
+ $_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
+ }
+ if (strpos($format, '%l') !== false) {
+ $_win_from[] = '%l';
+ $_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
+ }
+ $format = str_replace($_win_from, $_win_to, $format);
+ }
+ // @ to suppress deprecation errors when running in PHP8.1 or higher.
+ return @strftime($format, $timestamp);
+ } else {
+ return date($format, $timestamp);
+ }
+ }
+
+ /**
+ * Smarty debug_print_var modifier plugin
+ * Type: modifier
+ * Name: debug_print_var
+ * Purpose: formats variable contents for display in the console
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param array|object $var variable to be formatted
+ * @param int $max maximum recursion depth if $var is an array or object
+ * @param int $length maximum string length if $var is a string
+ * @param int $depth actual recursion depth
+ * @param array $objects processed objects in actual depth to prevent recursive object processing
+ *
+ * @return string
+ */
+ public function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = 0, $objects = array())
+ {
+ $_replace = array("\n" => '\n', "\r" => '\r', "\t" => '\t');
+ switch (gettype($var)) {
+ case 'array':
+ $results = '<b>Array (' . count($var) . ')</b>';
+ if ($depth === $max) {
+ break;
+ }
+ foreach ($var as $curr_key => $curr_val) {
+ $results .= '<br>' . str_repeat('&nbsp;', $depth * 2) . '<b>' . strtr($curr_key, $_replace) .
+ '</b> =&gt; ' .
+ $this->smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects);
+ $depth--;
+ }
+ break;
+ case 'object':
+ $object_vars = get_object_vars($var);
+ $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>';
+ if (in_array($var, $objects)) {
+ $results .= ' called recursive';
+ break;
+ }
+ if ($depth === $max) {
+ break;
+ }
+ $objects[] = $var;
+ foreach ($object_vars as $curr_key => $curr_val) {
+ $results .= '<br>' . str_repeat('&nbsp;', $depth * 2) . '<b> -&gt;' . strtr($curr_key, $_replace) .
+ '</b> = ' . $this->smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects);
+ $depth--;
+ }
+ break;
+ case 'boolean':
+ case 'NULL':
+ case 'resource':
+ if (true === $var) {
+ $results = 'true';
+ } elseif (false === $var) {
+ $results = 'false';
+ } elseif (null === $var) {
+ $results = 'null';
+ } else {
+ $results = htmlspecialchars((string)$var);
+ }
+ $results = '<i>' . $results . '</i>';
+ break;
+ case 'integer':
+ case 'float':
+ $results = htmlspecialchars((string)$var);
+ break;
+ case 'string':
+ $results = strtr($var, $_replace);
+ if (mb_strlen($var, \Smarty\Smarty::$_CHARSET) > $length) {
+ $results = mb_substr($var, 0, $length - 3, \Smarty\Smarty::$_CHARSET) . '...';
+ }
+ $results = htmlspecialchars('"' . $results . '"', ENT_QUOTES, \Smarty\Smarty::$_CHARSET);
+ break;
+ case 'unknown type':
+ default:
+ $results = strtr((string)$var, $_replace);
+ if (mb_strlen($results, \Smarty\Smarty::$_CHARSET) > $length) {
+ $results = mb_substr($results, 0, $length - 3, \Smarty\Smarty::$_CHARSET) . '...';
+ }
+ $results = htmlspecialchars($results, ENT_QUOTES, \Smarty\Smarty::$_CHARSET);
+ }
+ return $results;
+ }
+
+ /**
+ * Smarty escape modifier plugin
+ * Type: modifier
+ * Name: escape
+ * Purpose: escape string for output
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string input string
+ * @param string $esc_type escape type
+ * @param string $char_set character set, used for htmlspecialchars() or htmlentities()
+ * @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities()
+ *
+ * @return string escaped input string
+ */
+ public function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)
+ {
+ if (!$char_set) {
+ $char_set = \Smarty\Smarty::$_CHARSET;
+ }
+
+ $string = (string)$string;
+
+ switch ($esc_type) {
+ case 'html':
+ return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
+ // no break
+ case 'htmlall':
+ $string = mb_convert_encoding($string, 'UTF-8', $char_set);
+ return htmlentities($string, ENT_QUOTES, 'UTF-8', $double_encode);
+ // no break
+ case 'url':
+ return rawurlencode($string);
+ case 'urlpathinfo':
+ return str_replace('%2F', '/', rawurlencode($string));
+ case 'quotes':
+ // escape unescaped single quotes
+ return preg_replace("%(?<!\\\\)'%", "\\'", $string);
+ case 'hex':
+ // escape every byte into hex
+ // Note that the UTF-8 encoded character ä will be represented as %c3%a4
+ $return = '';
+ $_length = strlen($string);
+ for ($x = 0; $x < $_length; $x++) {
+ $return .= '%' . bin2hex($string[ $x ]);
+ }
+ return $return;
+ case 'hexentity':
+ $return = '';
+ foreach ($this->mb_to_unicode($string, \Smarty\Smarty::$_CHARSET) as $unicode) {
+ $return .= '&#x' . strtoupper(dechex($unicode)) . ';';
+ }
+ return $return;
+ case 'decentity':
+ $return = '';
+ foreach ($this->mb_to_unicode($string, \Smarty\Smarty::$_CHARSET) as $unicode) {
+ $return .= '&#' . $unicode . ';';
+ }
+ return $return;
+ case 'javascript':
+ // escape quotes and backslashes, newlines, etc.
+ return strtr(
+ $string,
+ array(
+ '\\' => '\\\\',
+ "'" => "\\'",
+ '"' => '\\"',
+ "\r" => '\\r',
+ "\n" => '\\n',
+ '</' => '<\/',
+ // see https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements
+ '<!--' => '<\!--',
+ '<s' => '<\s',
+ '<S' => '<\S',
+ "`" => "\\\\`",
+ "\${" => "\\\\\\$\\{"
+ )
+ );
+ case 'mail':
+ return smarty_mb_str_replace(
+ array(
+ '@',
+ '.'
+ ),
+ array(
+ ' [AT] ',
+ ' [DOT] '
+ ),
+ $string
+ );
+ case 'nonstd':
+ // escape non-standard chars, such as ms document quotes
+ $return = '';
+ foreach ($this->mb_to_unicode($string, \Smarty\Smarty::$_CHARSET) as $unicode) {
+ if ($unicode >= 126) {
+ $return .= '&#' . $unicode . ';';
+ } else {
+ $return .= chr($unicode);
+ }
+ }
+ return $return;
+ default:
+ trigger_error("escape: unsupported type: $esc_type - returning unmodified string", E_USER_NOTICE);
+ return $string;
+ }
+ }
+
+
+ /**
+ * convert characters to their decimal unicode equivalents
+ *
+ * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
+ *
+ * @param string $string characters to calculate unicode of
+ * @param string $encoding encoding of $string
+ *
+ * @return array sequence of unicodes
+ * @author Rodney Rehm
+ */
+ private function mb_to_unicode($string, $encoding = null) {
+ if ($encoding) {
+ $expanded = mb_convert_encoding($string, 'UTF-32BE', $encoding);
+ } else {
+ $expanded = mb_convert_encoding($string, 'UTF-32BE');
+ }
+ return unpack('N*', $expanded);
+ }
+
+ /**
+ * Smarty explode modifier plugin
+ * Type: modifier
+ * Name: explode
+ * Purpose: split a string by a string
+ *
+ * @param string $separator
+ * @param string $string
+ * @param int|null $limit
+ *
+ * @return array
+ */
+ public function smarty_modifier_explode($separator, $string, ?int $limit = null)
+ {
+ trigger_error("Using explode is deprecated. " .
+ "Use split, using the array first, separator second.", E_USER_DEPRECATED);
+ // provide $string default to prevent deprecation errors in PHP >=8.1
+ return explode($separator, $string ?? '', $limit ?? PHP_INT_MAX);
+ }
+
+ /**
+ * Smarty split modifier plugin
+ * Type: modifier
+ * Name: split
+ * Purpose: split a string by a string
+ *
+ * @param string $string
+ * @param string $separator
+ * @param int|null $limit
+ *
+ * @return array
+ */
+ public function smarty_modifier_split($string, $separator, ?int $limit = null)
+ {
+ // provide $string default to prevent deprecation errors in PHP >=8.1
+ return explode($separator, $string ?? '', $limit ?? PHP_INT_MAX);
+ }
+
+ /**
+ * Smarty implode modifier plugin
+ * Type: modifier
+ * Name: implode
+ * Purpose: join an array of values into a single string
+ *
+ * @param array $values
+ * @param string $separator
+ *
+ * @return string
+ */
+ public function smarty_modifier_implode($values, $separator = '')
+ {
+
+ trigger_error("Using implode is deprecated. " .
+ "Use join using the array first, separator second.", E_USER_DEPRECATED);
+
+ if (is_array($separator)) {
+ return implode((string) ($values ?? ''), (array) $separator);
+ }
+ return implode((string) ($separator ?? ''), (array) $values);
+ }
+
+ /**
+ * Smarty in_array modifier plugin
+ * Type: modifier
+ * Name: in_array
+ * Purpose: test if value is contained in an array
+ *
+ * @param mixed $needle
+ * @param array $array
+ * @param bool $strict
+ *
+ * @return bool
+ */
+ public function smarty_modifier_in_array($needle, $array, $strict = false)
+ {
+ return in_array($needle, (array) $array, (bool) $strict);
+ }
+
+ /**
+ * Smarty join modifier plugin
+ * Type: modifier
+ * Name: join
+ * Purpose: join an array of values into a single string
+ *
+ * @param array $values
+ * @param string $separator
+ *
+ * @return string
+ */
+ public function smarty_modifier_join($values, $separator = '')
+ {
+ if (is_array($separator)) {
+ trigger_error("Using join with the separator first is deprecated. " .
+ "Call join using the array first, separator second.", E_USER_DEPRECATED);
+ return implode((string) ($values ?? ''), (array) $separator);
+ }
+ return implode((string) ($separator ?? ''), (array) $values);
+ }
+
+ /**
+ * Smarty wordwrap modifier plugin
+ * Type: modifier
+ * Name: mb_wordwrap
+ * Purpose: Wrap a string to a given number of characters
+ *
+ * @link https://php.net/manual/en/function.wordwrap.php for similarity
+ *
+ * @param string $str the string to wrap
+ * @param int $width the width of the output
+ * @param string $break the character used to break the line
+ * @param boolean $cut ignored parameter, just for the sake of
+ *
+ * @return string wrapped string
+ * @author Rodney Rehm
+ */
+ public function smarty_modifier_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
+ {
+ return smarty_mb_wordwrap($str, $width, $break, $cut);
+ }
+
+ /**
+ * Smarty number_format modifier plugin
+ * Type: modifier
+ * Name: number_format
+ * Purpose: Format a number with grouped thousands
+ *
+ * @param float|null $num
+ * @param int $decimals
+ * @param string|null $decimal_separator
+ * @param string|null $thousands_separator
+ *
+ * @return string
+ */
+ public function smarty_modifier_number_format(?float $num, int $decimals = 0, ?string $decimal_separator = ".", ?string $thousands_separator = ",")
+ {
+ // provide $num default to prevent deprecation errors in PHP >=8.1
+ return number_format($num ?? 0.0, $decimals, $decimal_separator, $thousands_separator);
+ }
+
+ /**
+ * Smarty regex_replace modifier plugin
+ * Type: modifier
+ * Name: regex_replace
+ * Purpose: regular expression search/replace
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string input string
+ * @param string|array $search regular expression(s) to search for
+ * @param string|array $replace string(s) that should be replaced
+ * @param int $limit the maximum number of replacements
+ *
+ * @return string
+ */
+ public function smarty_modifier_regex_replace($string, $search, $replace, $limit = -1)
+ {
+ if (is_array($search)) {
+ foreach ($search as $idx => $s) {
+ $search[ $idx ] = $this->regex_replace_check($s);
+ }
+ } else {
+ $search = $this->regex_replace_check($search);
+ }
+ return preg_replace($search, $replace, $string, $limit);
+ }
+
+ /**
+ * @param string $search string(s) that should be replaced
+ *
+ * @return string
+ * @ignore
+ */
+ private function regex_replace_check($search)
+ {
+ // null-byte injection detection
+ // anything behind the first null-byte is ignored
+ if (($pos = strpos($search, "\0")) !== false) {
+ $search = substr($search, 0, $pos);
+ }
+ // remove eval-modifier from $search
+ if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[ 1 ], 'e') !== false)) {
+ $search = substr($search, 0, -strlen($match[ 1 ])) . preg_replace('![e\s]+!', '', $match[ 1 ]);
+ }
+ return $search;
+ }
+
+ /**
+ * Smarty replace modifier plugin
+ * Type: modifier
+ * Name: replace
+ * Purpose: simple search/replace
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ *
+ * @param string $string input string
+ * @param string $search text to search for
+ * @param string $replace replacement text
+ *
+ * @return string
+ */
+ public function smarty_modifier_replace($string, $search, $replace)
+ {
+ return smarty_mb_str_replace($search, $replace, $string);
+ }
+
+ /**
+ * Smarty truncate modifier plugin
+ * Type: modifier
+ * Name: truncate
+ * Purpose: Truncate a string to a certain length if necessary,
+ * optionally splitting in the middle of a word, and
+ * appending the $etc string or inserting $etc into the middle.
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string input string
+ * @param integer $length length of truncated text
+ * @param string $etc end string
+ * @param boolean $break_words truncate at word boundary
+ * @param boolean $middle truncate in the middle of text
+ *
+ * @return string truncated string
+ */
+ public function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
+ {
+ if ($length === 0 || $string === null) {
+ return '';
+ }
+ if (mb_strlen($string, \Smarty\Smarty::$_CHARSET) > $length) {
+ $length -= min($length, mb_strlen($etc, \Smarty\Smarty::$_CHARSET));
+ if (!$break_words && !$middle) {
+ $string = preg_replace(
+ '/\s+?(\S+)?$/' . \Smarty\Smarty::$_UTF8_MODIFIER,
+ '',
+ mb_substr($string, 0, $length + 1, \Smarty\Smarty::$_CHARSET)
+ );
+ }
+ if (!$middle) {
+ return mb_substr($string, 0, $length, \Smarty\Smarty::$_CHARSET) . $etc;
+ }
+ return mb_substr($string, 0, intval($length / 2), \Smarty\Smarty::$_CHARSET) . $etc .
+ mb_substr($string, -intval($length / 2), $length, \Smarty\Smarty::$_CHARSET);
+ }
+ return $string;
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Extension/ExtensionInterface.php b/vendor/smarty/smarty/src/Extension/ExtensionInterface.php
new file mode 100644
index 000000000..72e358ee5
--- /dev/null
+++ b/vendor/smarty/smarty/src/Extension/ExtensionInterface.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace Smarty\Extension;
+
+use Smarty\BlockHandler\BlockHandlerInterface;
+use Smarty\Compile\CompilerInterface;
+use Smarty\Compile\Modifier\ModifierCompilerInterface;
+use Smarty\FunctionHandler\FunctionHandlerInterface;
+
+interface ExtensionInterface {
+
+ /**
+ * Either return \Smarty\Compile\CompilerInterface that will compile the given $tag or
+ * return null to indicate that you do not know how to handle this $tag. (Another Extension might.)
+ *
+ * @param string $tag
+ * @return CompilerInterface|null
+ */
+ public function getTagCompiler(string $tag): ?CompilerInterface;
+
+ /**
+ * Either return \Smarty\Compile\Modifier\ModifierCompilerInterface that will compile the given $modifier or
+ * return null to indicate that you do not know how to handle this $modifier. (Another Extension might.)
+ *
+ * @param string $modifier
+ * @return ModifierCompilerInterface|null
+ */
+ public function getModifierCompiler(string $modifier): ?ModifierCompilerInterface;
+
+ /**
+ * Either return \Smarty\FunctionHandler\FunctionHandlerInterface that will handle the given $functionName or
+ * return null to indicate that you do not know how to handle this $functionName. (Another Extension might.)
+ *
+ * @param string $functionName
+ * @return FunctionHandlerInterface|null
+ */
+ public function getFunctionHandler(string $functionName): ?FunctionHandlerInterface;
+
+ /**
+ * Either return \Smarty\BlockHandler\BlockHandlerInterface that will handle the given $blockTagName or return null
+ * to indicate that you do not know how to handle this $blockTagName. (Another Extension might.)
+ *
+ * @param string $blockTagName
+ * @return BlockHandlerInterface|null
+ */
+ public function getBlockHandler(string $blockTagName): ?BlockHandlerInterface;
+
+ /**
+ * Either return a callable that takes at least 1 parameter (a string) and returns a modified string or return null
+ * to indicate that you do not know how to handle this $modifierName. (Another Extension might.)
+ *
+ * The callable can accept additional optional parameters.
+ *
+ * @param string $modifierName
+ * @return callable|null
+ */
+ public function getModifierCallback(string $modifierName);
+
+ /**
+ * Return a list of prefilters that will all be applied, in sequence.
+ * Template prefilters can be used to preprocess templates before they are compiled.
+ *
+ * @return \Smarty\Filter\FilterInterface[]
+ */
+ public function getPreFilters(): array;
+
+ /**
+ * Return a list of postfilters that will all be applied, in sequence.
+ * Template postfilters can be used to process compiled template code (so, after the compilation).
+ *
+ * @return \Smarty\Filter\FilterInterface[]
+ */
+ public function getPostFilters(): array;
+
+ /**
+ * Return a list of outputfilters that will all be applied, in sequence.
+ * Template outputfilters can be used to change template output just before it is rendered.
+ *
+ * @return \Smarty\Filter\FilterInterface[]
+ */
+ public function getOutputFilters(): array;
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Filter/FilterInterface.php b/vendor/smarty/smarty/src/Filter/FilterInterface.php
new file mode 100644
index 000000000..42280e25b
--- /dev/null
+++ b/vendor/smarty/smarty/src/Filter/FilterInterface.php
@@ -0,0 +1,9 @@
+<?php
+
+namespace Smarty\Filter;
+
+interface FilterInterface {
+
+ public function filter($code, \Smarty\Template $template);
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Filter/FilterPluginWrapper.php b/vendor/smarty/smarty/src/Filter/FilterPluginWrapper.php
new file mode 100644
index 000000000..665ee385c
--- /dev/null
+++ b/vendor/smarty/smarty/src/Filter/FilterPluginWrapper.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Smarty\Filter;
+
+class FilterPluginWrapper implements FilterInterface {
+
+ private $callback;
+
+ public function __construct($callback) {
+ $this->callback = $callback;
+ }
+ public function filter($code, \Smarty\Template $template) {
+ return call_user_func($this->callback, $code, $template);
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Filter/Output/TrimWhitespace.php b/vendor/smarty/smarty/src/Filter/Output/TrimWhitespace.php
new file mode 100644
index 000000000..5803725ee
--- /dev/null
+++ b/vendor/smarty/smarty/src/Filter/Output/TrimWhitespace.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace Smarty\Filter\Output;
+
+/**
+ * Smarty trimwhitespace outputfilter plugin
+ * Trim unnecessary whitespace from HTML markup.
+ *
+ * @author Rodney Rehm
+ *
+ * @param string $source input string
+ *
+ * @return string filtered output
+ */
+class TrimWhitespace implements \Smarty\Filter\FilterInterface {
+
+ public function filter($code, \Smarty\Template $template) {
+
+ $source = $code;
+
+ $store = array();
+ $_store = 0;
+ $_offset = 0;
+ // Unify Line-Breaks to \n
+ $source = preg_replace('/\015\012|\015|\012/', "\n", $source);
+ // capture Internet Explorer and KnockoutJS Conditional Comments
+ if (preg_match_all(
+ '#<!--((\[[^\]]+\]>.*?<!\[[^\]]+\])|(\s*/?ko\s+.+))-->#is',
+ $source,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
+ $_offset += $_length - strlen($replace);
+ $_store++;
+ }
+ }
+ // Strip all HTML-Comments
+ // yes, even the ones in <script> - see https://stackoverflow.com/a/808850/515124
+ $source = preg_replace('#<!--.*?-->#ms', '', $source);
+ // capture html elements not to be messed with
+ $_offset = 0;
+ if (preg_match_all(
+ '#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is',
+ $source,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
+ $_offset += $_length - strlen($replace);
+ $_store++;
+ }
+ }
+ $expressions = array(// replace multiple spaces between tags by a single space
+ // can't remove them entirely, because that might break poorly implemented CSS display:inline-block elements
+ '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
+ // remove spaces between attributes (but not in attribute values!)
+ '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
+ // note: for some very weird reason trim() seems to remove spaces inside attributes.
+ // maybe a \0 byte or something is interfering?
+ '#^\s+<#Ss' => '<',
+ '#>\s+$#Ss' => '>',
+ );
+ $source = preg_replace(array_keys($expressions), array_values($expressions), $source);
+ // note: for some very weird reason trim() seems to remove spaces inside attributes.
+ // maybe a \0 byte or something is interfering?
+ // $source = trim( $source );
+ $_offset = 0;
+ if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+ foreach ($matches as $match) {
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = $store[ $match[ 1 ][ 0 ] ];
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] + $_offset, $_length);
+ $_offset += strlen($replace) - $_length;
+ $_store++;
+ }
+ }
+ return $source;
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php b/vendor/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php
new file mode 100644
index 000000000..04af07ed8
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+class BCPluginWrapper extends Base {
+
+ private $callback;
+
+ public function __construct($callback, bool $cacheable = true) {
+ $this->callback = $callback;
+ $this->cacheable = $cacheable;
+ }
+
+ public function handle($params, Template $template) {
+ $func = $this->callback;
+ return $func($params, $template);
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/FunctionHandler/Base.php b/vendor/smarty/smarty/src/FunctionHandler/Base.php
new file mode 100644
index 000000000..7cf196372
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/Base.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+class Base implements FunctionHandlerInterface {
+
+ /**
+ * @var bool
+ */
+ protected $cacheable = true;
+
+ public function isCacheable(): bool {
+ return $this->cacheable;
+ }
+
+ public function handle($params, Template $template) {
+ // TODO: Implement handle() method.
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/FunctionHandler/Count.php b/vendor/smarty/smarty/src/FunctionHandler/Count.php
new file mode 100644
index 000000000..768d809b5
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/Count.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Smarty\FunctionHandler;
+
+use Smarty\Exception;
+use Smarty\Template;
+
+/**
+ * count(Countable|array $value, int $mode = COUNT_NORMAL): int
+ * If the optional mode parameter is set to COUNT_RECURSIVE (or 1), count() will recursively count the array.
+ * This is particularly useful for counting all the elements of a multidimensional array.
+ *
+ * Returns the number of elements in value. Prior to PHP 8.0.0, if the parameter was neither an array nor an object that
+ * implements the Countable interface, 1 would be returned, unless value was null, in which case 0 would be returned.
+ */
+class Count extends Base {
+
+ public function handle($params, Template $template) {
+
+ $params = array_values($params ?? []);
+
+ if (count($params) < 1 || count($params) > 2) {
+ throw new Exception("Invalid number of arguments for count. count expects 1 or 2 parameters.");
+ }
+
+ $value = $params[0];
+
+ if ($value instanceof \Countable) {
+ return $value->count();
+ }
+
+ $mode = count($params) == 2 ? (int) $params[1] : COUNT_NORMAL;
+ return count((array) $value, $mode);
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/FunctionHandler/Counter.php b/vendor/smarty/smarty/src/FunctionHandler/Counter.php
new file mode 100644
index 000000000..b447caf1f
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/Counter.php
@@ -0,0 +1,61 @@
+<?php
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+/**
+ * Smarty {counter} function plugin
+ * Type: function
+ * Name: counter
+ * Purpose: print out a counter value
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @return string|null
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ */
+class Counter extends Base {
+
+ private $counters = [];
+
+ public function handle($params, Template $template) {
+ $name = (isset($params['name'])) ? $params['name'] : 'default';
+ if (!isset($this->counters[$name])) {
+ $this->counters[$name] = ['start' => 1, 'skip' => 1, 'direction' => 'up', 'count' => 1];
+ }
+ $counter =& $this->counters[$name];
+ if (isset($params['start'])) {
+ $counter['start'] = $counter['count'] = (int)$params['start'];
+ }
+ if (!empty($params['assign'])) {
+ $counter['assign'] = $params['assign'];
+ }
+ if (isset($counter['assign'])) {
+ $template->assign($counter['assign'], $counter['count']);
+ }
+ if (isset($params['print'])) {
+ $print = (bool)$params['print'];
+ } else {
+ $print = empty($counter['assign']);
+ }
+ if ($print) {
+ $retval = $counter['count'];
+ } else {
+ $retval = null;
+ }
+ if (isset($params['skip'])) {
+ $counter['skip'] = $params['skip'];
+ }
+ if (isset($params['direction'])) {
+ $counter['direction'] = $params['direction'];
+ }
+ if ($counter['direction'] === 'down') {
+ $counter['count'] -= $counter['skip'];
+ } else {
+ $counter['count'] += $counter['skip'];
+ }
+ return $retval;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/FunctionHandler/Cycle.php b/vendor/smarty/smarty/src/FunctionHandler/Cycle.php
new file mode 100644
index 000000000..909a688b6
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/Cycle.php
@@ -0,0 +1,90 @@
+<?php
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+/**
+ * Smarty {cycle} function plugin
+ * Type: function
+ * Name: cycle
+ * Date: May 3, 2002
+ * Purpose: cycle through given values
+ * Params:
+ *
+ * - name - name of cycle (optional)
+ * - values - comma separated list of values to cycle, or an array of values to cycle
+ * (this can be left out for subsequent calls)
+ * - reset - boolean - resets given var to true
+ * - print - boolean - print var or not. default is true
+ * - advance - boolean - whether to advance the cycle
+ * - delimiter - the value delimiter, default is ","
+ * - assign - boolean, assigns to template var instead of printed.
+ *
+ * Examples:
+ *
+ * {cycle values="#eeeeee,#d0d0d0d"}
+ * {cycle name=row values="one,two,three" reset=true}
+ * {cycle name=row}
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credit to Mark Priatel <mpriatel@rogers.com>
+ * @author credit to Gerard <gerard@interfold.com>
+ * @author credit to Jason Sweat <jsweat_php@yahoo.com>
+ * @version 1.3
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @return string|null
+ */
+class Cycle extends Base {
+
+ public function handle($params, Template $template) {
+ static $cycle_vars;
+ $name = (empty($params['name'])) ? 'default' : $params['name'];
+ $print = !(isset($params['print'])) || (bool)$params['print'];
+ $advance = !(isset($params['advance'])) || (bool)$params['advance'];
+ $reset = isset($params['reset']) && (bool)$params['reset'];
+ if (!isset($params['values'])) {
+ if (!isset($cycle_vars[$name]['values'])) {
+ trigger_error('cycle: missing \'values\' parameter');
+ return;
+ }
+ } else {
+ if (isset($cycle_vars[$name]['values']) && $cycle_vars[$name]['values'] !== $params['values']) {
+ $cycle_vars[$name]['index'] = 0;
+ }
+ $cycle_vars[$name]['values'] = $params['values'];
+ }
+ if (isset($params['delimiter'])) {
+ $cycle_vars[$name]['delimiter'] = $params['delimiter'];
+ } elseif (!isset($cycle_vars[$name]['delimiter'])) {
+ $cycle_vars[$name]['delimiter'] = ',';
+ }
+ if (is_array($cycle_vars[$name]['values'])) {
+ $cycle_array = $cycle_vars[$name]['values'];
+ } else {
+ $cycle_array = explode($cycle_vars[$name]['delimiter'], $cycle_vars[$name]['values']);
+ }
+ if (!isset($cycle_vars[$name]['index']) || $reset) {
+ $cycle_vars[$name]['index'] = 0;
+ }
+ if (isset($params['assign'])) {
+ $print = false;
+ $template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
+ }
+ if ($print) {
+ $retval = $cycle_array[$cycle_vars[$name]['index']];
+ } else {
+ $retval = null;
+ }
+ if ($advance) {
+ if ($cycle_vars[$name]['index'] >= count($cycle_array) - 1) {
+ $cycle_vars[$name]['index'] = 0;
+ } else {
+ $cycle_vars[$name]['index']++;
+ }
+ }
+ return $retval;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/FunctionHandler/Fetch.php b/vendor/smarty/smarty/src/FunctionHandler/Fetch.php
new file mode 100644
index 000000000..d10ef668f
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/Fetch.php
@@ -0,0 +1,203 @@
+<?php
+namespace Smarty\FunctionHandler;
+
+use Smarty\Exception;
+use Smarty\Template;
+
+/**
+ * Smarty {fetch} plugin
+ * Type: function
+ * Name: fetch
+ * Purpose: fetch file, web or ftp data and display results
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @throws Exception
+ * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable
+ */
+class Fetch extends Base {
+
+ public function handle($params, Template $template) {
+ if (empty($params['file'])) {
+ trigger_error('[plugin] fetch parameter \'file\' cannot be empty', E_USER_NOTICE);
+ return;
+ }
+ // strip file protocol
+ if (stripos($params['file'], 'file://') === 0) {
+ $params['file'] = substr($params['file'], 7);
+ }
+ $protocol = strpos($params['file'], '://');
+ if ($protocol !== false) {
+ $protocol = strtolower(substr($params['file'], 0, $protocol));
+ }
+ if (isset($template->getSmarty()->security_policy)) {
+ if ($protocol) {
+ // remote resource (or php stream, …)
+ if (!$template->getSmarty()->security_policy->isTrustedUri($params['file'])) {
+ return;
+ }
+ } else {
+ // local file
+ if (!$template->getSmarty()->security_policy->isTrustedResourceDir($params['file'])) {
+ return;
+ }
+ }
+ }
+ $content = '';
+ if ($protocol === 'http') {
+ // http fetch
+ if ($uri_parts = parse_url($params['file'])) {
+ // set defaults
+ $host = $server_name = $uri_parts['host'];
+ $timeout = 30;
+ $accept = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
+ $agent = 'Smarty Template Engine ' . \Smarty\Smarty::SMARTY_VERSION;
+ $referer = '';
+ $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/';
+ $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : '';
+ $_is_proxy = false;
+ if (empty($uri_parts['port'])) {
+ $port = 80;
+ } else {
+ $port = $uri_parts['port'];
+ }
+ if (!empty($uri_parts['user'])) {
+ $user = $uri_parts['user'];
+ }
+ if (!empty($uri_parts['pass'])) {
+ $pass = $uri_parts['pass'];
+ }
+ // loop through parameters, setup headers
+ foreach ($params as $param_key => $param_value) {
+ switch ($param_key) {
+ case 'file':
+ case 'assign':
+ case 'assign_headers':
+ break;
+ case 'user':
+ if (!empty($param_value)) {
+ $user = $param_value;
+ }
+ break;
+ case 'pass':
+ if (!empty($param_value)) {
+ $pass = $param_value;
+ }
+ break;
+ case 'accept':
+ if (!empty($param_value)) {
+ $accept = $param_value;
+ }
+ break;
+ case 'header':
+ if (!empty($param_value)) {
+ if (!preg_match('![\w\d-]+: .+!', $param_value)) {
+ trigger_error("[plugin] invalid header format '{$param_value}'", E_USER_NOTICE);
+ return;
+ } else {
+ $extra_headers[] = $param_value;
+ }
+ }
+ break;
+ case 'proxy_host':
+ if (!empty($param_value)) {
+ $proxy_host = $param_value;
+ }
+ break;
+ case 'proxy_port':
+ if (!preg_match('!\D!', $param_value)) {
+ $proxy_port = (int)$param_value;
+ } else {
+ trigger_error("[plugin] invalid value for attribute '{$param_key }'", E_USER_NOTICE);
+ return;
+ }
+ break;
+ case 'agent':
+ if (!empty($param_value)) {
+ $agent = $param_value;
+ }
+ break;
+ case 'referer':
+ if (!empty($param_value)) {
+ $referer = $param_value;
+ }
+ break;
+ case 'timeout':
+ if (!preg_match('!\D!', $param_value)) {
+ $timeout = (int)$param_value;
+ } else {
+ trigger_error("[plugin] invalid value for attribute '{$param_key}'", E_USER_NOTICE);
+ return;
+ }
+ break;
+ default:
+ trigger_error("[plugin] unrecognized attribute '{$param_key}'", E_USER_NOTICE);
+ return;
+ }
+ }
+ if (!empty($proxy_host) && !empty($proxy_port)) {
+ $_is_proxy = true;
+ $fp = fsockopen($proxy_host, $proxy_port, $errno, $errstr, $timeout);
+ } else {
+ $fp = fsockopen($server_name, $port, $errno, $errstr, $timeout);
+ }
+ if (!$fp) {
+ trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE);
+ return;
+ } else {
+ if ($_is_proxy) {
+ fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n");
+ } else {
+ fputs($fp, "GET $uri HTTP/1.0\r\n");
+ }
+ if (!empty($host)) {
+ fputs($fp, "Host: $host\r\n");
+ }
+ if (!empty($accept)) {
+ fputs($fp, "Accept: $accept\r\n");
+ }
+ if (!empty($agent)) {
+ fputs($fp, "User-Agent: $agent\r\n");
+ }
+ if (!empty($referer)) {
+ fputs($fp, "Referer: $referer\r\n");
+ }
+ if (isset($extra_headers) && is_array($extra_headers)) {
+ foreach ($extra_headers as $curr_header) {
+ fputs($fp, $curr_header . "\r\n");
+ }
+ }
+ if (!empty($user) && !empty($pass)) {
+ fputs($fp, 'Authorization: BASIC ' . base64_encode("$user:$pass") . "\r\n");
+ }
+ fputs($fp, "\r\n");
+ while (!feof($fp)) {
+ $content .= fgets($fp, 4096);
+ }
+ fclose($fp);
+ $csplit = preg_split("!\r\n\r\n!", $content, 2);
+ $content = $csplit[1];
+ if (!empty($params['assign_headers'])) {
+ $template->assign($params['assign_headers'], preg_split("!\r\n!", $csplit[0]));
+ }
+ }
+ } else {
+ trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE);
+ return;
+ }
+ } else {
+ $content = @file_get_contents($params['file']);
+ if ($content === false) {
+ throw new Exception("{fetch} cannot read resource '" . $params['file'] . "'");
+ }
+ }
+ if (!empty($params['assign'])) {
+ $template->assign($params['assign'], $content);
+ } else {
+ return $content;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php b/vendor/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php
new file mode 100644
index 000000000..ce77e13d2
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+interface FunctionHandlerInterface {
+ public function handle($params, Template $template);
+ public function isCacheable(): bool;
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/FunctionHandler/HtmlBase.php b/vendor/smarty/smarty/src/FunctionHandler/HtmlBase.php
new file mode 100644
index 000000000..99f8e6c77
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/HtmlBase.php
@@ -0,0 +1,107 @@
+<?php
+
+namespace Smarty\FunctionHandler;
+
+class HtmlBase extends Base {
+
+ /**
+ * @param $inputType
+ * @param $name
+ * @param $value
+ * @param $output
+ * @param $ismultiselect
+ * @param $selected
+ * @param $extra
+ * @param $separator
+ * @param $labels
+ * @param $label_ids
+ * @param bool $escape
+ *
+ * @return string
+ */
+ protected function getHtmlForInput(
+ $inputType,
+ $name,
+ $value,
+ $output,
+ $ismultiselect,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape = true
+ ) {
+
+ $_output = '';
+ if (is_object($value)) {
+ if (method_exists($value, '__toString')) {
+ $value = (string)$value->__toString();
+ } else {
+ trigger_error(
+ 'value is an object of class \'' . get_class($value) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ return '';
+ }
+ } else {
+ $value = (string)$value;
+ }
+ if (is_object($output)) {
+ if (method_exists($output, '__toString')) {
+ $output = (string)$output->__toString();
+ } else {
+ trigger_error(
+ 'output is an object of class \'' . get_class($output) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ return '';
+ }
+ } else {
+ $output = (string)$output;
+ }
+ if ($labels) {
+ if ($label_ids) {
+ $_id = smarty_function_escape_special_chars(
+ preg_replace(
+ '![^\w\-\.]!' . \Smarty\Smarty::$_UTF8_MODIFIER,
+ '_',
+ $name . '_' . $value
+ )
+ );
+ $_output .= '<label for="' . $_id . '">';
+ } else {
+ $_output .= '<label>';
+ }
+ }
+ $name = smarty_function_escape_special_chars($name);
+ $value = smarty_function_escape_special_chars($value);
+ if ($escape) {
+ $output = smarty_function_escape_special_chars($output);
+ }
+ $_output .= '<input type="' . $inputType . '" name="' . $name;
+ if ($ismultiselect) {
+ $_output .= '[]';
+ }
+ $_output .= '" value="' . $value . '"';
+ if ($labels && $label_ids) {
+ $_output .= ' id="' . $_id . '"';
+ }
+ if ($ismultiselect && is_array($selected)) {
+ if (isset($selected[ $value ])) {
+ $_output .= ' checked="checked"';
+ }
+ } elseif ($value === $selected) {
+ $_output .= ' checked="checked"';
+ }
+ $_output .= $extra . ' />' . $output;
+ if ($labels) {
+ $_output .= '</label>';
+ }
+ $_output .= $separator;
+ return $_output;
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php b/vendor/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php
new file mode 100644
index 000000000..45ecc40a1
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php
@@ -0,0 +1,189 @@
+<?php
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+/**
+ * Smarty {html_checkboxes} function plugin
+ * File: HtmlCheckboxes.php
+ * Type: function
+ * Name: html_checkboxes
+ * Date: 24.Feb.2003
+ * Purpose: Prints out a list of checkbox input types
+ * Examples:
+ *
+ * {html_checkboxes values=$ids output=$names}
+ * {html_checkboxes values=$ids name='box' separator='<br>' output=$names}
+ * {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}
+ *
+ * Params:
+ *
+ * - name (optional) - string default "checkbox"
+ * - values (required) - array
+ * - options (optional) - associative array
+ * - checked (optional) - array default not set
+ * - separator (optional) - ie <br> or &nbsp;
+ * - output (optional) - the output next to each checkbox
+ * - assign (optional) - assign the output as an array to this variable
+ * - escape (optional) - escape the content (not value), defaults to true
+ *
+ * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
+ * @author credits to Monte Ohrt <monte at ohrt dot com>
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ * @throws \Smarty\Exception
+ */
+class HtmlCheckboxes extends HtmlBase {
+
+ public function handle($params, Template $template) {
+ $name = 'checkbox';
+ $values = null;
+ $options = null;
+ $selected = [];
+ $separator = '';
+ $escape = true;
+ $labels = true;
+ $label_ids = false;
+ $output = null;
+ $extra = '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'separator':
+ $$_key = (string)$_val;
+ break;
+ case 'escape':
+ case 'labels':
+ case 'label_ids':
+ $$_key = (bool)$_val;
+ break;
+ case 'options':
+ $$_key = (array)$_val;
+ break;
+ case 'values':
+ case 'output':
+ $$_key = array_values((array)$_val);
+ break;
+ case 'checked':
+ case 'selected':
+ if (is_array($_val)) {
+ $selected = [];
+ foreach ($_val as $_sel) {
+ if (is_object($_sel)) {
+ if (method_exists($_sel, '__toString')) {
+ $_sel = smarty_function_escape_special_chars((string)$_sel->__toString());
+ } else {
+ trigger_error(
+ 'html_checkboxes: selected attribute contains an object of class \'' .
+ get_class($_sel) . '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ continue;
+ }
+ } else {
+ $_sel = smarty_function_escape_special_chars((string)$_sel);
+ }
+ $selected[$_sel] = true;
+ }
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, '__toString')) {
+ $selected = smarty_function_escape_special_chars((string)$_val->__toString());
+ } else {
+ trigger_error(
+ 'html_checkboxes: selected attribute is an object of class \'' . get_class($_val) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ }
+ } else {
+ $selected = smarty_function_escape_special_chars((string)$_val);
+ }
+ break;
+ case 'checkboxes':
+ trigger_error(
+ 'html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead',
+ E_USER_WARNING
+ );
+ $options = (array)$_val;
+ break;
+ case 'strict':
+ case 'assign':
+ break;
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params['strict'])) {
+ if (!is_scalar($_val)) {
+ trigger_error(
+ "html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
+ E_USER_NOTICE
+ );
+ }
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+ break;
+ }
+ // omit break; to fall through!
+ // no break
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_checkboxes: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (!isset($options) && !isset($values)) {
+ return '';
+ } /* raise error here? */
+ $_html_result = [];
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result[] =
+ $this->getHtmlForInput(
+ 'checkbox',
+ $name,
+ $_key,
+ $_val,
+ true,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = isset($output[$_i]) ? $output[$_i] : '';
+ $_html_result[] =
+ $this->getHtmlForInput(
+ 'checkbox',
+ $name,
+ $_key,
+ $_val,
+ true,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ }
+ if (!empty($params['assign'])) {
+ $template->assign($params['assign'], $_html_result);
+ } else {
+ return implode("\n", $_html_result);
+ }
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/FunctionHandler/HtmlImage.php b/vendor/smarty/smarty/src/FunctionHandler/HtmlImage.php
new file mode 100644
index 000000000..9cb087456
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/HtmlImage.php
@@ -0,0 +1,149 @@
+<?php
+namespace Smarty\FunctionHandler;
+
+use Smarty\Exception;
+use Smarty\Template;
+
+/**
+ * Smarty {html_image} function plugin
+ * Type: function
+ * Name: html_image
+ * Date: Feb 24, 2003
+ * Purpose: format HTML tags for the image
+ * Examples: {html_image file="/images/masthead.gif"}
+ * Output: <img src="/images/masthead.gif" width=400 height=23>
+ * Params:
+ *
+ * - file - (required) - file (and path) of image
+ * - height - (optional) - image height (default actual height)
+ * - width - (optional) - image width (default actual width)
+ * - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
+ * - path_prefix - prefix for path output (optional, default empty)
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credits to Duda <duda@big.hu>
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @throws Exception
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+class HtmlImage extends Base {
+
+ public function handle($params, Template $template) {
+ $alt = '';
+ $file = '';
+ $height = '';
+ $width = '';
+ $extra = '';
+ $prefix = '';
+ $suffix = '';
+ $path_prefix = '';
+ $basedir = $_SERVER['DOCUMENT_ROOT'] ?? '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'file':
+ case 'height':
+ case 'width':
+ case 'dpi':
+ case 'path_prefix':
+ case 'basedir':
+ $$_key = $_val;
+ break;
+ case 'alt':
+ if (!is_array($_val)) {
+ $$_key = smarty_function_escape_special_chars($_val);
+ } else {
+ throw new Exception(
+ "html_image: extra attribute '{$_key}' cannot be an array",
+ E_USER_NOTICE
+ );
+ }
+ break;
+ case 'link':
+ case 'href':
+ $prefix = '<a href="' . $_val . '">';
+ $suffix = '</a>';
+ break;
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ throw new Exception(
+ "html_image: extra attribute '{$_key}' cannot be an array",
+ E_USER_NOTICE
+ );
+ }
+ break;
+ }
+ }
+ if (empty($file)) {
+ trigger_error('html_image: missing \'file\' parameter', E_USER_NOTICE);
+ return;
+ }
+ if ($file[0] === '/') {
+ $_image_path = $basedir . $file;
+ } else {
+ $_image_path = $file;
+ }
+ // strip file protocol
+ if (stripos($params['file'], 'file://') === 0) {
+ $params['file'] = substr($params['file'], 7);
+ }
+ $protocol = strpos($params['file'], '://');
+ if ($protocol !== false) {
+ $protocol = strtolower(substr($params['file'], 0, $protocol));
+ }
+ if (isset($template->getSmarty()->security_policy)) {
+ if ($protocol) {
+ // remote resource (or php stream, …)
+ if (!$template->getSmarty()->security_policy->isTrustedUri($params['file'])) {
+ return;
+ }
+ } else {
+ // local file
+ if (!$template->getSmarty()->security_policy->isTrustedResourceDir($_image_path)) {
+ return;
+ }
+ }
+ }
+ if (!isset($params['width']) || !isset($params['height'])) {
+ // FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
+ if (!$_image_data = @getimagesize($_image_path)) {
+ if (!file_exists($_image_path)) {
+ trigger_error("html_image: unable to find '{$_image_path}'", E_USER_NOTICE);
+ return;
+ } elseif (!is_readable($_image_path)) {
+ trigger_error("html_image: unable to read '{$_image_path}'", E_USER_NOTICE);
+ return;
+ } else {
+ trigger_error("html_image: '{$_image_path}' is not a valid image file", E_USER_NOTICE);
+ return;
+ }
+ }
+ if (!isset($params['width'])) {
+ $width = $_image_data[0];
+ }
+ if (!isset($params['height'])) {
+ $height = $_image_data[1];
+ }
+ }
+ if (isset($params['dpi'])) {
+ if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mac')) {
+ // FIXME: (rodneyrehm) wrong dpi assumption
+ // don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011.
+ $dpi_default = 72;
+ } else {
+ $dpi_default = 96;
+ }
+ $_resize = $dpi_default / $params['dpi'];
+ $width = round($width * $_resize);
+ $height = round($height * $_resize);
+ }
+ return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' .
+ $height . '"' . $extra . ' />' . $suffix;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/FunctionHandler/HtmlOptions.php b/vendor/smarty/smarty/src/FunctionHandler/HtmlOptions.php
new file mode 100644
index 000000000..5346738b6
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/HtmlOptions.php
@@ -0,0 +1,223 @@
+<?php
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+/**
+ * Smarty {html_options} function plugin
+ * Type: function
+ * Name: html_options
+ * Purpose: Prints the list of <option> tags generated from
+ * the passed parameters
+ * Params:
+ *
+ * - name (optional) - string default "select"
+ * - values (required) - if no options supplied) - array
+ * - options (required) - if no values supplied) - associative array
+ * - selected (optional) - string default not set
+ * - output (required) - if not options supplied) - array
+ * - id (optional) - string default not set
+ * - class (optional) - string default not set
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
+ *
+ * @param array $params parameters
+ *
+ * @param \Smarty\Template $template
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ * @throws \Smarty\Exception
+ */
+class HtmlOptions extends Base {
+
+ public function handle($params, Template $template) {
+ $name = null;
+ $values = null;
+ $options = null;
+ $selected = null;
+ $output = null;
+ $id = null;
+ $class = null;
+ $extra = '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'class':
+ case 'id':
+ $$_key = (string)$_val;
+ break;
+ case 'options':
+ $options = (array)$_val;
+ break;
+ case 'values':
+ case 'output':
+ $$_key = array_values((array)$_val);
+ break;
+ case 'selected':
+ if (is_array($_val)) {
+ $selected = [];
+ foreach ($_val as $_sel) {
+ if (is_object($_sel)) {
+ if (method_exists($_sel, '__toString')) {
+ $_sel = smarty_function_escape_special_chars((string)$_sel->__toString());
+ } else {
+ trigger_error(
+ 'html_options: selected attribute contains an object of class \'' .
+ get_class($_sel) . '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ continue;
+ }
+ } else {
+ $_sel = smarty_function_escape_special_chars((string)$_sel);
+ }
+ $selected[$_sel] = true;
+ }
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, '__toString')) {
+ $selected = smarty_function_escape_special_chars((string)$_val->__toString());
+ } else {
+ trigger_error(
+ 'html_options: selected attribute is an object of class \'' . get_class($_val) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ }
+ } else {
+ $selected = smarty_function_escape_special_chars((string)$_val);
+ }
+ break;
+ case 'strict':
+ break;
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params['strict'])) {
+ if (!is_scalar($_val)) {
+ trigger_error(
+ "html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
+ E_USER_NOTICE
+ );
+ }
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+ break;
+ }
+ // omit break; to fall through!
+ // no break
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_options: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (!isset($options) && !isset($values)) {
+ /* raise error here? */
+ return '';
+ }
+ $_html_result = '';
+ $_idx = 0;
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result .= $this->output($_key, $_val, $selected, $id, $class, $_idx);
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = $output[$_i] ?? '';
+ $_html_result .= $this->output($_key, $_val, $selected, $id, $class, $_idx);
+ }
+ }
+ if (!empty($name)) {
+ $_html_class = !empty($class) ? ' class="' . $class . '"' : '';
+ $_html_id = !empty($id) ? ' id="' . $id . '"' : '';
+ $_html_result =
+ '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result .
+ '</select>' . "\n";
+ }
+ return $_html_result;
+ }
+
+
+ /**
+ * @param $key
+ * @param $value
+ * @param $selected
+ * @param $id
+ * @param $class
+ * @param $idx
+ *
+ * @return string
+ */
+ private function output($key, $value, $selected, $id, $class, &$idx)
+ {
+ if (!is_array($value)) {
+ $_key = smarty_function_escape_special_chars($key);
+ $_html_result = '<option value="' . $_key . '"';
+ if (is_array($selected)) {
+ if (isset($selected[ $_key ])) {
+ $_html_result .= ' selected="selected"';
+ }
+ } elseif ($_key === $selected) {
+ $_html_result .= ' selected="selected"';
+ }
+ $_html_class = !empty($class) ? ' class="' . $class . ' option"' : '';
+ $_html_id = !empty($id) ? ' id="' . $id . '-' . $idx . '"' : '';
+ if (is_object($value)) {
+ if (method_exists($value, '__toString')) {
+ $value = smarty_function_escape_special_chars((string)$value->__toString());
+ } else {
+ trigger_error(
+ 'html_options: value is an object of class \'' . get_class($value) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ return '';
+ }
+ } else {
+ $value = smarty_function_escape_special_chars((string)$value);
+ }
+ $_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n";
+ $idx++;
+ } else {
+ $_idx = 0;
+ $_html_result =
+ $this->getHtmlForOptGroup(
+ $key,
+ $value,
+ $selected,
+ !empty($id) ? ($id . '-' . $idx) : null,
+ $class,
+ $_idx
+ );
+ $idx++;
+ }
+ return $_html_result;
+ }
+
+ /**
+ * @param $key
+ * @param $values
+ * @param $selected
+ * @param $id
+ * @param $class
+ * @param $idx
+ *
+ * @return string
+ */
+ private function getHtmlForOptGroup($key, $values, $selected, $id, $class, &$idx)
+ {
+ $optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n";
+ foreach ($values as $key => $value) {
+ $optgroup_html .= $this->output($key, $value, $selected, $id, $class, $idx);
+ }
+ $optgroup_html .= "</optgroup>\n";
+ return $optgroup_html;
+ }
+
+}
+
diff --git a/vendor/smarty/smarty/src/FunctionHandler/HtmlRadios.php b/vendor/smarty/smarty/src/FunctionHandler/HtmlRadios.php
new file mode 100644
index 000000000..544c5c7d4
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/HtmlRadios.php
@@ -0,0 +1,174 @@
+<?php
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+/**
+ * Smarty {html_radios} function plugin
+ * File: HtmlRadios.php
+ * Type: function
+ * Name: html_radios
+ * Date: 24.Feb.2003
+ * Purpose: Prints out a list of radio input types
+ * Params:
+ *
+ * - name (optional) - string default "radio"
+ * - values (required) - array
+ * - options (required) - associative array
+ * - checked (optional) - array default not set
+ * - separator (optional) - ie <br> or &nbsp;
+ * - output (optional) - the output next to each radio button
+ * - assign (optional) - assign the output as an array to this variable
+ * - escape (optional) - escape the content (not value), defaults to true
+ *
+ * Examples:
+ *
+ * {html_radios values=$ids output=$names}
+ * {html_radios values=$ids name='box' separator='<br>' output=$names}
+ * {html_radios values=$ids checked=$checked separator='<br>' output=$names}
+ *
+ * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
+ * @author credits to Monte Ohrt <monte at ohrt dot com>
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ * @throws \Smarty\Exception
+ */
+class HtmlRadios extends HtmlBase {
+
+ public function handle($params, Template $template) {
+ $name = 'radio';
+ $values = null;
+ $options = null;
+ $selected = null;
+ $separator = '';
+ $escape = true;
+ $labels = true;
+ $label_ids = false;
+ $output = null;
+ $extra = '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'separator':
+ $$_key = (string)$_val;
+ break;
+ case 'checked':
+ case 'selected':
+ if (is_array($_val)) {
+ trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, '__toString')) {
+ $selected = smarty_function_escape_special_chars((string)$_val->__toString());
+ } else {
+ trigger_error(
+ 'html_radios: selected attribute is an object of class \'' . get_class($_val) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ }
+ } else {
+ $selected = (string)$_val;
+ }
+ break;
+ case 'escape':
+ case 'labels':
+ case 'label_ids':
+ $$_key = (bool)$_val;
+ break;
+ case 'options':
+ $$_key = (array)$_val;
+ break;
+ case 'values':
+ case 'output':
+ $$_key = array_values((array)$_val);
+ break;
+ case 'radios':
+ trigger_error(
+ 'html_radios: the use of the "radios" attribute is deprecated, use "options" instead',
+ E_USER_WARNING
+ );
+ $options = (array)$_val;
+ break;
+ case 'strict':
+ case 'assign':
+ break;
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params['strict'])) {
+ if (!is_scalar($_val)) {
+ trigger_error(
+ "html_options: {$_key} attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
+ E_USER_NOTICE
+ );
+ }
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+ break;
+ }
+ // omit break; to fall through!
+ // no break
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_radios: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (!isset($options) && !isset($values)) {
+ /* raise error here? */
+ return '';
+ }
+ $_html_result = [];
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result[] =
+ $this->getHtmlForInput(
+ 'radio',
+ $name,
+ $_key,
+ $_val,
+ false,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = $output[$_i] ?? '';
+ $_html_result[] =
+ $this->getHtmlForInput(
+ 'radio',
+ $name,
+ $_key,
+ $_val,
+ false,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ }
+ if (!empty($params['assign'])) {
+ $template->assign($params['assign'], $_html_result);
+ } else {
+ return implode("\n", $_html_result);
+ }
+ }
+
+
+}
diff --git a/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php b/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php
new file mode 100644
index 000000000..a6acfb7bd
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php
@@ -0,0 +1,381 @@
+<?php
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+/**
+ * Smarty {html_select_date} plugin
+ * Type: function
+ * Name: html_select_date
+ * Purpose: Prints the dropdowns for date selection.
+ * ChangeLog:
+ *
+ * - 1.0 initial release
+ * - 1.1 added support for +/- N syntax for begin
+ * and end year values. (Monte)
+ * - 1.2 added support for yyyy-mm-dd syntax for
+ * time value. (Jan Rosier)
+ * - 1.3 added support for choosing format for
+ * month values (Gary Loescher)
+ * - 1.3.1 added support for choosing format for
+ * day values (Marcus Bointon)
+ * - 1.3.2 support negative timestamps, force year
+ * dropdown to include given date unless explicitly set (Monte)
+ * - 1.3.4 fix behaviour of 0000-00-00 00:00:00 dates to match that
+ * of 0000-00-00 dates (cybot, boots)
+ * - 2.0 complete rewrite for performance,
+ * added attributes month_names, *_id
+ *
+ * @version 2.0
+ * @author Andrei Zmievski
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @param \Smarty\Template $template
+ *
+ * @return string
+ * @throws \Smarty\Exception
+ */
+class HtmlSelectDate extends Base {
+
+ public function handle($params, Template $template) {
+ // generate timestamps used for month names only
+ static $_month_timestamps = null;
+ static $_current_year = null;
+ if ($_month_timestamps === null) {
+ $_current_year = date('Y');
+ $_month_timestamps = [];
+ for ($i = 1; $i <= 12; $i++) {
+ $_month_timestamps[$i] = mktime(0, 0, 0, $i, 1, 2000);
+ }
+ }
+ /* Default values. */
+ $prefix = 'Date_';
+ $start_year = null;
+ $end_year = null;
+ $display_days = true;
+ $display_months = true;
+ $display_years = true;
+ $month_format = '%B';
+ /* Write months as numbers by default GL */
+ $month_value_format = '%m';
+ $day_format = '%02d';
+ /* Write day values using this format MB */
+ $day_value_format = '%d';
+ $year_as_text = false;
+ /* Display years in reverse order? Ie. 2000,1999,.... */
+ $reverse_years = false;
+ /* Should the select boxes be part of an array when returned from PHP?
+ e.g. setting it to "birthday", would create "birthday[Day]",
+ "birthday[Month]" & "birthday[Year]". Can be combined with prefix */
+ $field_array = null;
+ /* <select size>'s of the different <select> tags.
+ If not set, uses default dropdown. */
+ $day_size = null;
+ $month_size = null;
+ $year_size = null;
+ /* Unparsed attributes common to *ALL* the <select>/<input> tags.
+ An example might be in the template: all_extra ='class ="foo"'. */
+ $all_extra = null;
+ /* Separate attributes for the tags. */
+ $day_extra = null;
+ $month_extra = null;
+ $year_extra = null;
+ /* Order in which to display the fields.
+ "D" -> day, "M" -> month, "Y" -> year. */
+ $field_order = 'MDY';
+ /* String printed between the different fields. */
+ $field_separator = "\n";
+ $option_separator = "\n";
+ $time = null;
+
+ // $all_empty = null;
+ // $day_empty = null;
+ // $month_empty = null;
+ // $year_empty = null;
+ $extra_attrs = '';
+ $all_id = null;
+ $day_id = null;
+ $month_id = null;
+ $year_id = null;
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'time':
+ $$_key = $_value; // we'll handle conversion below
+ break;
+ case 'month_names':
+ if (is_array($_value) && count($_value) === 12) {
+ $$_key = $_value;
+ } else {
+ trigger_error('html_select_date: month_names must be an array of 12 strings', E_USER_NOTICE);
+ }
+ break;
+ case 'prefix':
+ case 'field_array':
+ case 'start_year':
+ case 'end_year':
+ case 'day_format':
+ case 'day_value_format':
+ case 'month_format':
+ case 'month_value_format':
+ case 'day_size':
+ case 'month_size':
+ case 'year_size':
+ case 'all_extra':
+ case 'day_extra':
+ case 'month_extra':
+ case 'year_extra':
+ case 'field_order':
+ case 'field_separator':
+ case 'option_separator':
+ case 'all_empty':
+ case 'month_empty':
+ case 'day_empty':
+ case 'year_empty':
+ case 'all_id':
+ case 'month_id':
+ case 'day_id':
+ case 'year_id':
+ $$_key = (string)$_value;
+ break;
+ case 'display_days':
+ case 'display_months':
+ case 'display_years':
+ case 'year_as_text':
+ case 'reverse_years':
+ $$_key = (bool)$_value;
+ break;
+ default:
+ if (!is_array($_value)) {
+ $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
+ } else {
+ trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ // Note: date() is faster than strftime()
+ // Note: explode(date()) is faster than date() date() date()
+
+ if (isset($time) && is_array($time)) {
+ if (isset($time[$prefix . 'Year'])) {
+ // $_REQUEST[$field_array] given
+ foreach ([
+ 'Y' => 'Year',
+ 'm' => 'Month',
+ 'd' => 'Day'
+ ] as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName =
+ $time[$prefix . $_elementName] ?? date($_elementKey);
+ }
+ } elseif (isset($time[$field_array][$prefix . 'Year'])) {
+ // $_REQUEST given
+ foreach ([
+ 'Y' => 'Year',
+ 'm' => 'Month',
+ 'd' => 'Day'
+ ] as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName = $time[$field_array][$prefix . $_elementName] ?? date($_elementKey);
+ }
+ } else {
+ // no date found, use NOW
+ [$_year, $_month, $_day] = explode('-', date('Y-m-d'));
+ }
+ } elseif (isset($time) && preg_match("/(\d*)-(\d*)-(\d*)/", $time, $matches)) {
+ $_year = $_month = $_day = null;
+ if ($matches[1] > '') {
+ $_year = (int)$matches[1];
+ }
+ if ($matches[2] > '') {
+ $_month = (int)$matches[2];
+ }
+ if ($matches[3] > '') {
+ $_day = (int)$matches[3];
+ }
+ } elseif ($time === null) {
+ if (array_key_exists('time', $params)) {
+ $_year = $_month = $_day = null;
+ } else {
+ [$_year, $_month, $_day] = explode('-', date('Y-m-d'));
+ }
+ } else {
+ $time = smarty_make_timestamp($time);
+ [$_year, $_month, $_day] = explode('-', date('Y-m-d', $time));
+ }
+
+ // make syntax "+N" or "-N" work with $start_year and $end_year
+ // Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr
+ foreach ([
+ 'start',
+ 'end'
+ ] as $key) {
+ $key .= '_year';
+ $t = $$key;
+ if ($t === null) {
+ $$key = (int)$_current_year;
+ } elseif ($t[0] === '+') {
+ $$key = (int)($_current_year + (int)trim(substr($t, 1)));
+ } elseif ($t[0] === '-') {
+ $$key = (int)($_current_year - (int)trim(substr($t, 1)));
+ } else {
+ $$key = (int)$$key;
+ }
+ }
+ // flip for ascending or descending
+ if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) {
+ $t = $end_year;
+ $end_year = $start_year;
+ $start_year = $t;
+ }
+ // generate year <select> or <input>
+ if ($display_years) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($year_extra) {
+ $_extra .= ' ' . $year_extra;
+ }
+ if ($year_as_text) {
+ $_html_years =
+ '<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra .
+ $extra_attrs . ' />';
+ } else {
+ $_html_years = '<select name="' . $_name . '"';
+ if ($year_id !== null || $all_id !== null) {
+ $_html_years .= ' id="' . smarty_function_escape_special_chars(
+ $year_id !== null ?
+ ($year_id ? $year_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)
+ ) . '"';
+ }
+ if ($year_size) {
+ $_html_years .= ' size="' . $year_size . '"';
+ }
+ $_html_years .= $_extra . $extra_attrs . '>' . $option_separator;
+ if (isset($year_empty) || isset($all_empty)) {
+ $_html_years .= '<option value="">' . (isset($year_empty) ? $year_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+ $op = $start_year > $end_year ? -1 : 1;
+ for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
+ $_html_years .= '<option value="' . $i . '"' . ($_year == $i ? ' selected="selected"' : '') . '>' . $i .
+ '</option>' . $option_separator;
+ }
+ $_html_years .= '</select>';
+ }
+ }
+ // generate month <select> or <input>
+ if ($display_months) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($month_extra) {
+ $_extra .= ' ' . $month_extra;
+ }
+ $_html_months = '<select name="' . $_name . '"';
+ if ($month_id !== null || $all_id !== null) {
+ $_html_months .= ' id="' . smarty_function_escape_special_chars(
+ $month_id !== null ?
+ ($month_id ? $month_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)
+ ) . '"';
+ }
+ if ($month_size) {
+ $_html_months .= ' size="' . $month_size . '"';
+ }
+ $_html_months .= $_extra . $extra_attrs . '>' . $option_separator;
+ if (isset($month_empty) || isset($all_empty)) {
+ $_html_months .= '<option value="">' . (isset($month_empty) ? $month_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+ for ($i = 1; $i <= 12; $i++) {
+ $_val = sprintf('%02d', $i);
+ $_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[$i]) :
+ ($month_format === '%m' ? $_val : @strftime($month_format, $_month_timestamps[$i]));
+ $_value = $month_value_format === '%m' ? $_val : @strftime($month_value_format, $_month_timestamps[$i]);
+ $_html_months .= '<option value="' . $_value . '"' . ($_val == $_month ? ' selected="selected"' : '') .
+ '>' . $_text . '</option>' . $option_separator;
+ }
+ $_html_months .= '</select>';
+ }
+ // generate day <select> or <input>
+ if ($display_days) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($day_extra) {
+ $_extra .= ' ' . $day_extra;
+ }
+ $_html_days = '<select name="' . $_name . '"';
+ if ($day_id !== null || $all_id !== null) {
+ $_html_days .= ' id="' .
+ smarty_function_escape_special_chars(
+ $day_id !== null ? ($day_id ? $day_id : $_name) :
+ ($all_id ? ($all_id . $_name) : $_name)
+ ) . '"';
+ }
+ if ($day_size) {
+ $_html_days .= ' size="' . $day_size . '"';
+ }
+ $_html_days .= $_extra . $extra_attrs . '>' . $option_separator;
+ if (isset($day_empty) || isset($all_empty)) {
+ $_html_days .= '<option value="">' . (isset($day_empty) ? $day_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+ for ($i = 1; $i <= 31; $i++) {
+ $_val = sprintf('%02d', $i);
+ $_text = $day_format === '%02d' ? $_val : sprintf($day_format, $i);
+ $_value = $day_value_format === '%02d' ? $_val : sprintf($day_value_format, $i);
+ $_html_days .= '<option value="' . $_value . '"' . ($_val == $_day ? ' selected="selected"' : '') . '>' .
+ $_text . '</option>' . $option_separator;
+ }
+ $_html_days .= '</select>';
+ }
+ // order the fields for output
+ $_html = '';
+ for ($i = 0; $i <= 2; $i++) {
+ switch ($field_order[$i]) {
+ case 'Y':
+ case 'y':
+ if (isset($_html_years)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_years;
+ }
+ break;
+ case 'm':
+ case 'M':
+ if (isset($_html_months)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_months;
+ }
+ break;
+ case 'd':
+ case 'D':
+ if (isset($_html_days)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_days;
+ }
+ break;
+ }
+ }
+ return $_html;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php b/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php
new file mode 100644
index 000000000..40679c10c
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php
@@ -0,0 +1,334 @@
+<?php
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+/**
+ * Smarty {html_select_time} function plugin
+ * Type: function
+ * Name: html_select_time
+ * Purpose: Prints the dropdowns for time selection
+ *
+ * @author Roberto Berto <roberto@berto.net>
+ * @author Monte Ohrt <monte AT ohrt DOT com>
+ *
+ * @param array $params parameters
+ *
+ * @param \Smarty\Template $template
+ *
+ * @return string
+ * @uses smarty_make_timestamp()
+ * @throws \Smarty\Exception
+ */
+class HtmlSelectTime extends Base {
+
+ public function handle($params, Template $template) {
+ $prefix = 'Time_';
+ $field_array = null;
+ $field_separator = "\n";
+ $option_separator = "\n";
+ $time = null;
+ $display_hours = true;
+ $display_minutes = true;
+ $display_seconds = true;
+ $display_meridian = true;
+ $hour_format = '%02d';
+ $hour_value_format = '%02d';
+ $minute_format = '%02d';
+ $minute_value_format = '%02d';
+ $second_format = '%02d';
+ $second_value_format = '%02d';
+ $hour_size = null;
+ $minute_size = null;
+ $second_size = null;
+ $meridian_size = null;
+ $all_empty = null;
+ $hour_empty = null;
+ $minute_empty = null;
+ $second_empty = null;
+ $meridian_empty = null;
+ $all_id = null;
+ $hour_id = null;
+ $minute_id = null;
+ $second_id = null;
+ $meridian_id = null;
+ $use_24_hours = true;
+ $minute_interval = 1;
+ $second_interval = 1;
+ $extra_attrs = '';
+ $all_extra = null;
+ $hour_extra = null;
+ $minute_extra = null;
+ $second_extra = null;
+ $meridian_extra = null;
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'time':
+ if (!is_array($_value) && $_value !== null) {
+ $time = smarty_make_timestamp($_value);
+ }
+ break;
+ case 'prefix':
+ case 'field_array':
+ case 'field_separator':
+ case 'option_separator':
+ case 'all_extra':
+ case 'hour_extra':
+ case 'minute_extra':
+ case 'second_extra':
+ case 'meridian_extra':
+ case 'all_empty':
+ case 'hour_empty':
+ case 'minute_empty':
+ case 'second_empty':
+ case 'meridian_empty':
+ case 'all_id':
+ case 'hour_id':
+ case 'minute_id':
+ case 'second_id':
+ case 'meridian_id':
+ case 'hour_format':
+ case 'hour_value_format':
+ case 'minute_format':
+ case 'minute_value_format':
+ case 'second_format':
+ case 'second_value_format':
+ $$_key = (string)$_value;
+ break;
+ case 'display_hours':
+ case 'display_minutes':
+ case 'display_seconds':
+ case 'display_meridian':
+ case 'use_24_hours':
+ $$_key = (bool)$_value;
+ break;
+ case 'minute_interval':
+ case 'second_interval':
+ case 'hour_size':
+ case 'minute_size':
+ case 'second_size':
+ case 'meridian_size':
+ $$_key = (int)$_value;
+ break;
+ default:
+ if (!is_array($_value)) {
+ $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
+ } else {
+ trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (isset($params['time']) && is_array($params['time'])) {
+ if (isset($params['time'][$prefix . 'Hour'])) {
+ // $_REQUEST[$field_array] given
+ foreach ([
+ 'H' => 'Hour',
+ 'i' => 'Minute',
+ 's' => 'Second'
+ ] as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName =
+ $params['time'][$prefix . $_elementName] ?? date($_elementKey);
+ }
+ $_meridian =
+ isset($params['time'][$prefix . 'Meridian']) ? (' ' . $params['time'][$prefix . 'Meridian']) :
+ '';
+ $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
+ [$_hour, $_minute, $_second] = $time = explode('-', date('H-i-s', $time));
+ } elseif (isset($params['time'][$field_array][$prefix . 'Hour'])) {
+ // $_REQUEST given
+ foreach ([
+ 'H' => 'Hour',
+ 'i' => 'Minute',
+ 's' => 'Second'
+ ] as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName = $params['time'][$field_array][$prefix . $_elementName] ?? date($_elementKey);
+ }
+ $_meridian = isset($params['time'][$field_array][$prefix . 'Meridian']) ?
+ (' ' . $params['time'][$field_array][$prefix . 'Meridian']) : '';
+ $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
+ [$_hour, $_minute, $_second] = $time = explode('-', date('H-i-s', $time));
+ } else {
+ // no date found, use NOW
+ [$_year, $_month, $_day] = $time = explode('-', date('Y-m-d'));
+ }
+ } elseif ($time === null) {
+ if (array_key_exists('time', $params)) {
+ $_hour = $_minute = $_second = $time = null;
+ } else {
+ [$_hour, $_minute, $_second] = $time = explode('-', date('H-i-s'));
+ }
+ } else {
+ [$_hour, $_minute, $_second] = $time = explode('-', date('H-i-s', $time));
+ }
+ // generate hour <select>
+ if ($display_hours) {
+ $_html_hours = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Hour]') : ($prefix . 'Hour');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($hour_extra) {
+ $_extra .= ' ' . $hour_extra;
+ }
+ $_html_hours = '<select name="' . $_name . '"';
+ if ($hour_id !== null || $all_id !== null) {
+ $_html_hours .= ' id="' .
+ smarty_function_escape_special_chars(
+ $hour_id !== null ? ($hour_id ? $hour_id : $_name) :
+ ($all_id ? ($all_id . $_name) : $_name)
+ ) . '"';
+ }
+ if ($hour_size) {
+ $_html_hours .= ' size="' . $hour_size . '"';
+ }
+ $_html_hours .= $_extra . $extra_attrs . '>' . $option_separator;
+ if (isset($hour_empty) || isset($all_empty)) {
+ $_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+ $start = $use_24_hours ? 0 : 1;
+ $end = $use_24_hours ? 23 : 12;
+ for ($i = $start; $i <= $end; $i++) {
+ $_val = sprintf('%02d', $i);
+ $_text = $hour_format === '%02d' ? $_val : sprintf($hour_format, $i);
+ $_value = $hour_value_format === '%02d' ? $_val : sprintf($hour_value_format, $i);
+ if (!$use_24_hours) {
+ $_hour12 = $_hour == 0 ? 12 : ($_hour <= 12 ? $_hour : $_hour - 12);
+ }
+ $selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null;
+ $_html_hours .= '<option value="' . $_value . '"' . ($selected ? ' selected="selected"' : '') . '>' .
+ $_text . '</option>' . $option_separator;
+ }
+ $_html_hours .= '</select>';
+ }
+ // generate minute <select>
+ if ($display_minutes) {
+ $_html_minutes = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Minute]') : ($prefix . 'Minute');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($minute_extra) {
+ $_extra .= ' ' . $minute_extra;
+ }
+ $_html_minutes = '<select name="' . $_name . '"';
+ if ($minute_id !== null || $all_id !== null) {
+ $_html_minutes .= ' id="' . smarty_function_escape_special_chars(
+ $minute_id !== null ?
+ ($minute_id ? $minute_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)
+ ) . '"';
+ }
+ if ($minute_size) {
+ $_html_minutes .= ' size="' . $minute_size . '"';
+ }
+ $_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator;
+ if (isset($minute_empty) || isset($all_empty)) {
+ $_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+ $selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
+ for ($i = 0; $i <= 59; $i += $minute_interval) {
+ $_val = sprintf('%02d', $i);
+ $_text = $minute_format === '%02d' ? $_val : sprintf($minute_format, $i);
+ $_value = $minute_value_format === '%02d' ? $_val : sprintf($minute_value_format, $i);
+ $_html_minutes .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
+ '>' . $_text . '</option>' . $option_separator;
+ }
+ $_html_minutes .= '</select>';
+ }
+ // generate second <select>
+ if ($display_seconds) {
+ $_html_seconds = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Second]') : ($prefix . 'Second');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($second_extra) {
+ $_extra .= ' ' . $second_extra;
+ }
+ $_html_seconds = '<select name="' . $_name . '"';
+ if ($second_id !== null || $all_id !== null) {
+ $_html_seconds .= ' id="' . smarty_function_escape_special_chars(
+ $second_id !== null ?
+ ($second_id ? $second_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)
+ ) . '"';
+ }
+ if ($second_size) {
+ $_html_seconds .= ' size="' . $second_size . '"';
+ }
+ $_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator;
+ if (isset($second_empty) || isset($all_empty)) {
+ $_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+ $selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
+ for ($i = 0; $i <= 59; $i += $second_interval) {
+ $_val = sprintf('%02d', $i);
+ $_text = $second_format === '%02d' ? $_val : sprintf($second_format, $i);
+ $_value = $second_value_format === '%02d' ? $_val : sprintf($second_value_format, $i);
+ $_html_seconds .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
+ '>' . $_text . '</option>' . $option_separator;
+ }
+ $_html_seconds .= '</select>';
+ }
+ // generate meridian <select>
+ if ($display_meridian && !$use_24_hours) {
+ $_html_meridian = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Meridian]') : ($prefix . 'Meridian');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($meridian_extra) {
+ $_extra .= ' ' . $meridian_extra;
+ }
+ $_html_meridian = '<select name="' . $_name . '"';
+ if ($meridian_id !== null || $all_id !== null) {
+ $_html_meridian .= ' id="' . smarty_function_escape_special_chars(
+ $meridian_id !== null ?
+ ($meridian_id ? $meridian_id :
+ $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)
+ ) . '"';
+ }
+ if ($meridian_size) {
+ $_html_meridian .= ' size="' . $meridian_size . '"';
+ }
+ $_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator;
+ if (isset($meridian_empty) || isset($all_empty)) {
+ $_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty : $all_empty) .
+ '</option>' . $option_separator;
+ }
+ $_html_meridian .= '<option value="am"' . ($_hour > 0 && $_hour < 12 ? ' selected="selected"' : '') .
+ '>AM</option>' . $option_separator . '<option value="pm"' .
+ ($_hour < 12 ? '' : ' selected="selected"') . '>PM</option>' . $option_separator .
+ '</select>';
+ }
+ $_html = '';
+ foreach ([
+ '_html_hours',
+ '_html_minutes',
+ '_html_seconds',
+ '_html_meridian'
+ ] as $k) {
+ if (isset($$k)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $$k;
+ }
+ }
+ return $_html;
+ }
+}
diff --git a/vendor/smarty/smarty/src/FunctionHandler/HtmlTable.php b/vendor/smarty/smarty/src/FunctionHandler/HtmlTable.php
new file mode 100644
index 000000000..d5d147053
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/HtmlTable.php
@@ -0,0 +1,161 @@
+<?php
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+/**
+ * Smarty {html_table} function plugin
+ * Type: function
+ * Name: html_table
+ * Date: Feb 17, 2003
+ * Purpose: make an html table from an array of data
+ * Params:
+ *
+ * - loop - array to loop through
+ * - cols - number of columns, comma separated list of column names
+ * or array of column names
+ * - rows - number of rows
+ * - table_attr - table attributes
+ * - th_attr - table heading attributes (arrays are cycled)
+ * - tr_attr - table row attributes (arrays are cycled)
+ * - td_attr - table cell attributes (arrays are cycled)
+ * - trailpad - value to pad trailing cells with
+ * - caption - text for caption element
+ * - vdir - vertical direction (default: "down", means top-to-bottom)
+ * - hdir - horizontal direction (default: "right", means left-to-right)
+ * - inner - inner loop (default "cols": print $loop line by line,
+ * $loop will be printed column by column otherwise)
+ *
+ * Examples:
+ *
+ * {table loop=$data}
+ * {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
+ * {table loop=$data cols="first,second,third" tr_attr=$colors}
+ *
+ * @param array $params parameters
+ *
+ * @return string
+ *@author credit to boots <boots dot smarty at yahoo dot com>
+ * @version 1.1
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credit to Messju Mohr <messju at lammfellpuschen dot de>
+ */
+class HtmlTable extends Base {
+
+ public function handle($params, Template $template) {
+ $table_attr = 'border="1"';
+ $tr_attr = '';
+ $th_attr = '';
+ $td_attr = '';
+ $cols = $cols_count = 3;
+ $rows = 3;
+ $trailpad = '&nbsp;';
+ $vdir = 'down';
+ $hdir = 'right';
+ $inner = 'cols';
+ $caption = '';
+ $loop = null;
+ if (!isset($params['loop'])) {
+ trigger_error("html_table: missing 'loop' parameter", E_USER_WARNING);
+ return;
+ }
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'loop':
+ $$_key = (array)$_value;
+ break;
+ case 'cols':
+ if (is_array($_value) && !empty($_value)) {
+ $cols = $_value;
+ $cols_count = count($_value);
+ } elseif (!is_numeric($_value) && is_string($_value) && !empty($_value)) {
+ $cols = explode(',', $_value);
+ $cols_count = count($cols);
+ } elseif (!empty($_value)) {
+ $cols_count = (int)$_value;
+ } else {
+ $cols_count = $cols;
+ }
+ break;
+ case 'rows':
+ $$_key = (int)$_value;
+ break;
+ case 'table_attr':
+ case 'trailpad':
+ case 'hdir':
+ case 'vdir':
+ case 'inner':
+ case 'caption':
+ $$_key = (string)$_value;
+ break;
+ case 'tr_attr':
+ case 'td_attr':
+ case 'th_attr':
+ $$_key = $_value;
+ break;
+ }
+ }
+ $loop_count = count($loop);
+ if (empty($params['rows'])) {
+ /* no rows specified */
+ $rows = ceil($loop_count / $cols_count);
+ } elseif (empty($params['cols'])) {
+ if (!empty($params['rows'])) {
+ /* no cols specified, but rows */
+ $cols_count = ceil($loop_count / $rows);
+ }
+ }
+ $output = "<table $table_attr>\n";
+ if (!empty($caption)) {
+ $output .= '<caption>' . $caption . "</caption>\n";
+ }
+ if (is_array($cols)) {
+ $cols = ($hdir === 'right') ? $cols : array_reverse($cols);
+ $output .= "<thead><tr>\n";
+ for ($r = 0; $r < $cols_count; $r++) {
+ $output .= '<th' . $this->cycle('th', $th_attr, $r) . '>';
+ $output .= $cols[$r];
+ $output .= "</th>\n";
+ }
+ $output .= "</tr></thead>\n";
+ }
+ $output .= "<tbody>\n";
+ for ($r = 0; $r < $rows; $r++) {
+ $output .= "<tr" . $this->cycle('tr', $tr_attr, $r) . ">\n";
+ $rx = ($vdir === 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count;
+ for ($c = 0; $c < $cols_count; $c++) {
+ $x = ($hdir === 'right') ? $rx + $c : $rx + $cols_count - 1 - $c;
+ if ($inner !== 'cols') {
+ /* shuffle x to loop over rows*/
+ $x = floor($x / $cols_count) + ($x % $cols_count) * $rows;
+ }
+ if ($x < $loop_count) {
+ $output .= "<td" . $this->cycle('td', $td_attr, $c) . ">" . $loop[$x] . "</td>\n";
+ } else {
+ $output .= "<td" . $this->cycle('td', $td_attr, $c) . ">$trailpad</td>\n";
+ }
+ }
+ $output .= "</tr>\n";
+ }
+ $output .= "</tbody>\n";
+ $output .= "</table>\n";
+ return $output;
+ }
+
+ /**
+ * @param $name
+ * @param $var
+ * @param $no
+ *
+ * @return string
+ */
+ private function cycle($name, $var, $no) {
+ if (!is_array($var)) {
+ $ret = $var;
+ } else {
+ $ret = $var[$no % count($var)];
+ }
+ return ($ret) ? ' ' . $ret : '';
+ }
+}
diff --git a/vendor/smarty/smarty/src/FunctionHandler/Mailto.php b/vendor/smarty/smarty/src/FunctionHandler/Mailto.php
new file mode 100644
index 000000000..eb35c48eb
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/Mailto.php
@@ -0,0 +1,141 @@
+<?php
+
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+/**
+ * Smarty {mailto} function plugin
+ * Type: function
+ * Name: mailto
+ * Date: May 21, 2002
+ * Purpose: automate mailto address link creation, and optionally encode them.
+ * Params:
+ *
+ * - address - (required) - e-mail address
+ * - text - (optional) - text to display, default is address
+ * - encode - (optional) - can be one of:
+ * * none : no encoding (default)
+ * * javascript : encode with javascript
+ * * javascript_charcode : encode with javascript charcode
+ * * hex : encode with hexadecimal (no javascript)
+ * - cc - (optional) - address(es) to carbon copy
+ * - bcc - (optional) - address(es) to blind carbon copy
+ * - subject - (optional) - e-mail subject
+ * - newsgroups - (optional) - newsgroup(s) to post to
+ * - followupto - (optional) - address(es) to follow up to
+ * - extra - (optional) - extra tags for the href link
+ *
+ * Examples:
+ *
+ * {mailto address="me@domain.com"}
+ * {mailto address="me@domain.com" encode="javascript"}
+ * {mailto address="me@domain.com" encode="hex"}
+ * {mailto address="me@domain.com" subject="Hello to you!"}
+ * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
+ * {mailto address="me@domain.com" extra='class="mailto"'}
+ *
+ * @version 1.2
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credits to Jason Sweat (added cc, bcc and subject functionality)
+ *
+ * @param array $params parameters
+ *
+ * @return string
+ */
+class Mailto extends Base {
+
+ public function handle($params, Template $template) {
+ static $_allowed_encoding = [
+ 'javascript' => true,
+ 'javascript_charcode' => true,
+ 'hex' => true,
+ 'none' => true
+ ];
+
+ $extra = '';
+ if (empty($params['address'])) {
+ trigger_error("mailto: missing 'address' parameter", E_USER_WARNING);
+ return;
+ } else {
+ $address = $params['address'];
+ }
+
+ $text = $address;
+
+ // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
+ // so, don't encode it.
+ $mail_parms = [];
+ foreach ($params as $var => $value) {
+ switch ($var) {
+ case 'cc':
+ case 'bcc':
+ case 'followupto':
+ if (!empty($value)) {
+ $mail_parms[] = $var . '=' . str_replace(['%40', '%2C'], ['@', ','], rawurlencode($value));
+ }
+ break;
+ case 'subject':
+ case 'newsgroups':
+ $mail_parms[] = $var . '=' . rawurlencode($value);
+ break;
+ case 'extra':
+ case 'text':
+ $$var = $value;
+ // no break
+ default:
+ }
+ }
+
+ if ($mail_parms) {
+ $address .= '?' . join('&', $mail_parms);
+ }
+ $encode = (empty($params['encode'])) ? 'none' : $params['encode'];
+ if (!isset($_allowed_encoding[$encode])) {
+ trigger_error(
+ "mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex",
+ E_USER_WARNING
+ );
+ return;
+ }
+
+ $string = '<a href="mailto:' . htmlspecialchars($address, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, \Smarty\Smarty::$_CHARSET) .
+ '" ' . $extra . '>' . htmlspecialchars($text, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, \Smarty\Smarty::$_CHARSET) . '</a>';
+
+ if ($encode === 'javascript') {
+ $js_encode = '';
+ for ($x = 0, $_length = strlen($string); $x < $_length; $x++) {
+ $js_encode .= '%' . bin2hex($string[$x]);
+ }
+ return '<script>document.write(unescape(\'' . $js_encode . '\'))</script>';
+ } elseif ($encode === 'javascript_charcode') {
+ for ($x = 0, $_length = strlen($string); $x < $_length; $x++) {
+ $ord[] = ord($string[$x]);
+ }
+ return '<script>document.write(String.fromCharCode(' . implode(',', $ord) . '))</script>';
+ } elseif ($encode === 'hex') {
+ preg_match('!^(.*)(\?.*)$!', $address, $match);
+ if (!empty($match[2])) {
+ trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING);
+ return;
+ }
+ $address_encode = '';
+ for ($x = 0, $_length = strlen($address); $x < $_length; $x++) {
+ if (preg_match('!\w!' . \Smarty\Smarty::$_UTF8_MODIFIER, $address[$x])) {
+ $address_encode .= '%' . bin2hex($address[$x]);
+ } else {
+ $address_encode .= $address[$x];
+ }
+ }
+ $text_encode = '';
+ for ($x = 0, $_length = strlen($text); $x < $_length; $x++) {
+ $text_encode .= '&#x' . bin2hex($text[$x]) . ';';
+ }
+ $mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
+ return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>';
+ } else {
+ // no encoding
+ return $string;
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/src/FunctionHandler/Math.php b/vendor/smarty/smarty/src/FunctionHandler/Math.php
new file mode 100644
index 000000000..23ef9253d
--- /dev/null
+++ b/vendor/smarty/smarty/src/FunctionHandler/Math.php
@@ -0,0 +1,140 @@
+<?php
+
+namespace Smarty\FunctionHandler;
+
+use Smarty\Template;
+
+/**
+ * Smarty {math} function plugin
+ * Type: function
+ * Name: math
+ * Purpose: handle math computations in template
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @return string|null
+ */
+class Math extends Base {
+
+ public function handle($params, Template $template) {
+ static $_allowed_funcs =
+ [
+ 'int' => true,
+ 'abs' => true,
+ 'ceil' => true,
+ 'acos' => true,
+ 'acosh' => true,
+ 'cos' => true,
+ 'cosh' => true,
+ 'deg2rad' => true,
+ 'rad2deg' => true,
+ 'exp' => true,
+ 'floor' => true,
+ 'log' => true,
+ 'log10' => true,
+ 'max' => true,
+ 'min' => true,
+ 'pi' => true,
+ 'pow' => true,
+ 'rand' => true,
+ 'round' => true,
+ 'asin' => true,
+ 'asinh' => true,
+ 'sin' => true,
+ 'sinh' => true,
+ 'sqrt' => true,
+ 'srand' => true,
+ 'atan' => true,
+ 'atanh' => true,
+ 'tan' => true,
+ 'tanh' => true
+ ];
+
+ // be sure equation parameter is present
+ if (empty($params['equation'])) {
+ trigger_error("math: missing equation parameter", E_USER_WARNING);
+ return;
+ }
+ $equation = $params['equation'];
+
+ // Remove whitespaces
+ $equation = preg_replace('/\s+/', '', $equation);
+
+ // Adapted from https://www.php.net/manual/en/function.eval.php#107377
+ $number = '-?(?:\d+(?:[,.]\d+)?|pi|π)'; // What is a number
+ $functionsOrVars = '((?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*))';
+ $operators = '[,+\/*\^%-]'; // Allowed math operators
+ $regexp = '/^((' . $number . '|' . $functionsOrVars . '|(' . $functionsOrVars . '\s*\((?1)*\)|\((?1)*\)))(?:' . $operators . '(?1))?)+$/';
+
+ if (!preg_match($regexp, $equation)) {
+ trigger_error("math: illegal characters", E_USER_WARNING);
+ return;
+ }
+
+ // make sure parenthesis are balanced
+ if (substr_count($equation, '(') !== substr_count($equation, ')')) {
+ trigger_error("math: unbalanced parenthesis", E_USER_WARNING);
+ return;
+ }
+
+ // disallow backticks
+ if (strpos($equation, '`') !== false) {
+ trigger_error("math: backtick character not allowed in equation", E_USER_WARNING);
+ return;
+ }
+
+ // also disallow dollar signs
+ if (strpos($equation, '$') !== false) {
+ trigger_error("math: dollar signs not allowed in equation", E_USER_WARNING);
+ return;
+ }
+ foreach ($params as $key => $val) {
+ if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
+ // make sure value is not empty
+ if (strlen($val) === 0) {
+ trigger_error("math: parameter '{$key}' is empty", E_USER_WARNING);
+ return;
+ }
+ if (!is_numeric($val)) {
+ trigger_error("math: parameter '{$key}' is not numeric", E_USER_WARNING);
+ return;
+ }
+ }
+ }
+ // match all vars in equation, make sure all are passed
+ preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match);
+ foreach ($match[1] as $curr_var) {
+ if ($curr_var && !isset($params[$curr_var]) && !isset($_allowed_funcs[$curr_var])) {
+ trigger_error(
+ "math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'",
+ E_USER_WARNING
+ );
+ return;
+ }
+ }
+ foreach ($params as $key => $val) {
+ if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
+ $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
+ }
+ }
+ $smarty_math_result = null;
+ eval("\$smarty_math_result = " . $equation . ";");
+
+ if (empty($params['format'])) {
+ if (empty($params['assign'])) {
+ return $smarty_math_result;
+ } else {
+ $template->assign($params['assign'], $smarty_math_result);
+ }
+ } else {
+ if (empty($params['assign'])) {
+ printf($params['format'], $smarty_math_result);
+ } else {
+ $template->assign($params['assign'], sprintf($params['format'], $smarty_math_result));
+ }
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.php b/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.php
new file mode 100644
index 000000000..d592c8238
--- /dev/null
+++ b/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.php
@@ -0,0 +1,707 @@
+<?php
+
+namespace Smarty\Lexer;
+
+/**
+* Smarty Internal Plugin ConfigfileLexer
+*
+* This is the lexer to break the config file source into tokens
+* @package Smarty
+* @subpackage Config
+* @author Uwe Tews
+*/
+/**
+* ConfigfileLexer
+*
+* This is the config file lexer.
+* It is generated from the ConfigfileLexer.plex file
+*
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+class ConfigfileLexer
+{
+ /**
+ * Source
+ *
+ * @var string
+ */
+ public $data;
+ /**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+ /**
+ * byte counter
+ *
+ * @var int
+ */
+ public $counter;
+ /**
+ * token number
+ *
+ * @var int
+ */
+ public $token;
+ /**
+ * token value
+ *
+ * @var string
+ */
+ public $value;
+ /**
+ * current line
+ *
+ * @var int
+ */
+ public $line;
+ /**
+ * state number
+ *
+ * @var int
+ */
+ public $state = 1;
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+ /**
+ * compiler object
+ *
+ * @var \Smarty\Compiler\Configfile
+ */
+ private $compiler = null;
+ /**
+ * copy of config_booleanize
+ *
+ * @var bool
+ */
+ private $configBooleanize = false;
+ /**
+ * trace file
+ *
+ * @var resource
+ */
+ public $yyTraceFILE;
+ /**
+ * trace prompt
+ *
+ * @var string
+ */
+ public $yyTracePrompt;
+ /**
+ * state names
+ *
+ * @var array
+ */
+ public $state_name = array(1 => 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE');
+
+ /**
+ * storage for assembled token patterns
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+ private $yy_global_pattern2 = null;
+ private $yy_global_pattern3 = null;
+ private $yy_global_pattern4 = null;
+ private $yy_global_pattern5 = null;
+ private $yy_global_pattern6 = null;
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ );
+
+ /**
+ * constructor
+ *
+ * @param string $data template source
+ * @param \Smarty\Compiler\Configfile $compiler
+ */
+ public function __construct($data, \Smarty\Compiler\Configfile $compiler)
+ {
+ $this->data = $data . "\n"; //now all lines are \n-terminated
+ $this->dataLength = strlen($data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
+ $this->line = 1;
+ $this->compiler = $compiler;
+ $this->smarty = $compiler->smarty;
+ $this->configBooleanize = $this->smarty->config_booleanize;
+ }
+
+ public function replace ($input) {
+ return $input;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
+
+
+
+ private $_yy_state = 1;
+ private $_yy_stack = array();
+
+ public function yylex()
+ {
+ return $this->{'yylex' . $this->_yy_state}();
+ }
+
+ public function yypushstate($state)
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ array_push($this->_yy_stack, $this->_yy_state);
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ }
+
+ public function yypopstate()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ $this->_yy_state = array_pop($this->_yy_stack);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+
+ }
+
+ public function yybegin($state)
+ {
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ }
+
+
+
+
+ public function yylex1()
+ {
+ if (!isset($this->yy_global_pattern1)) {
+ $this->yy_global_pattern1 = $this->replace("/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern1,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state START');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r1_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const START = 1;
+ public function yy_r1_1()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_COMMENTSTART;
+ $this->yypushstate(self::COMMENT);
+ }
+ public function yy_r1_2()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_OPENB;
+ $this->yypushstate(self::SECTION);
+ }
+ public function yy_r1_3()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_CLOSEB;
+ }
+ public function yy_r1_4()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_EQUAL;
+ $this->yypushstate(self::VALUE);
+ }
+ public function yy_r1_5()
+ {
+
+ return false;
+ }
+ public function yy_r1_6()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NEWLINE;
+ }
+ public function yy_r1_7()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_ID;
+ }
+ public function yy_r1_8()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_OTHER;
+ }
+
+
+
+ public function yylex2()
+ {
+ if (!isset($this->yy_global_pattern2)) {
+ $this->yy_global_pattern2 = $this->replace("/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern2,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state VALUE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r2_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const VALUE = 2;
+ public function yy_r2_1()
+ {
+
+ return false;
+ }
+ public function yy_r2_2()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_FLOAT;
+ $this->yypopstate();
+ }
+ public function yy_r2_3()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_INT;
+ $this->yypopstate();
+ }
+ public function yy_r2_4()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_QUOTES;
+ $this->yypushstate(self::TRIPPLE);
+ }
+ public function yy_r2_5()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_SINGLE_QUOTED_STRING;
+ $this->yypopstate();
+ }
+ public function yy_r2_6()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_DOUBLE_QUOTED_STRING;
+ $this->yypopstate();
+ }
+ public function yy_r2_7()
+ {
+
+ if (!$this->configBooleanize || !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no')) ) {
+ $this->yypopstate();
+ $this->yypushstate(self::NAKED_STRING_VALUE);
+ return true; //reprocess in new state
+ } else {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_BOOL;
+ $this->yypopstate();
+ }
+ }
+ public function yy_r2_8()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->yypopstate();
+ }
+ public function yy_r2_9()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->value = '';
+ $this->yypopstate();
+ }
+
+
+
+ public function yylex3()
+ {
+ if (!isset($this->yy_global_pattern3)) {
+ $this->yy_global_pattern3 = $this->replace("/\G([^\n]+?(?=[ \t\r]*\n))/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern3,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state NAKED_STRING_VALUE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r3_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const NAKED_STRING_VALUE = 3;
+ public function yy_r3_1()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->yypopstate();
+ }
+
+
+
+ public function yylex4()
+ {
+ if (!isset($this->yy_global_pattern4)) {
+ $this->yy_global_pattern4 = $this->replace("/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern4,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state COMMENT');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r4_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const COMMENT = 4;
+ public function yy_r4_1()
+ {
+
+ return false;
+ }
+ public function yy_r4_2()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ }
+ public function yy_r4_3()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NEWLINE;
+ $this->yypopstate();
+ }
+
+
+
+ public function yylex5()
+ {
+ if (!isset($this->yy_global_pattern5)) {
+ $this->yy_global_pattern5 = $this->replace("/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern5,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state SECTION');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r5_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const SECTION = 5;
+ public function yy_r5_1()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_DOT;
+ }
+ public function yy_r5_2()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_SECTION;
+ $this->yypopstate();
+ }
+
+
+ public function yylex6()
+ {
+ if (!isset($this->yy_global_pattern6)) {
+ $this->yy_global_pattern6 = $this->replace("/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern6,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TRIPPLE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r6_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const TRIPPLE = 6;
+ public function yy_r6_1()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_QUOTES_END;
+ $this->yypopstate();
+ $this->yypushstate(self::START);
+ }
+ public function yy_r6_2()
+ {
+
+ $to = strlen($this->data);
+ preg_match("/\"\"\"[ \t\r]*[\n#;]/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_config_file_error ('missing or misspelled literal closing tag');
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_TEXT;
+ }
+
+
+}
diff --git a/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.plex b/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.plex
new file mode 100644
index 000000000..a895050c4
--- /dev/null
+++ b/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.plex
@@ -0,0 +1,321 @@
+<?php
+
+namespace Smarty\Lexer;
+
+/**
+* Smarty Internal Plugin ConfigfileLexer
+*
+* This is the lexer to break the config file source into tokens
+* @package Smarty
+* @subpackage Config
+* @author Uwe Tews
+*/
+/**
+* ConfigfileLexer
+*
+* This is the config file lexer.
+* It is generated from the ConfigfileLexer.plex file
+*
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+class ConfigfileLexer
+{
+ /**
+ * Source
+ *
+ * @var string
+ */
+ public $data;
+ /**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+ /**
+ * byte counter
+ *
+ * @var int
+ */
+ public $counter;
+ /**
+ * token number
+ *
+ * @var int
+ */
+ public $token;
+ /**
+ * token value
+ *
+ * @var string
+ */
+ public $value;
+ /**
+ * current line
+ *
+ * @var int
+ */
+ public $line;
+ /**
+ * state number
+ *
+ * @var int
+ */
+ public $state = 1;
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+ /**
+ * compiler object
+ *
+ * @var \Smarty\Compiler\Configfile
+ */
+ private $compiler = null;
+ /**
+ * copy of config_booleanize
+ *
+ * @var bool
+ */
+ private $configBooleanize = false;
+ /**
+ * trace file
+ *
+ * @var resource
+ */
+ public $yyTraceFILE;
+ /**
+ * trace prompt
+ *
+ * @var string
+ */
+ public $yyTracePrompt;
+ /**
+ * state names
+ *
+ * @var array
+ */
+ public $state_name = array(1 => 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE');
+
+ /**
+ * storage for assembled token patterns
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+ private $yy_global_pattern2 = null;
+ private $yy_global_pattern3 = null;
+ private $yy_global_pattern4 = null;
+ private $yy_global_pattern5 = null;
+ private $yy_global_pattern6 = null;
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ );
+
+ /**
+ * constructor
+ *
+ * @param string $data template source
+ * @param \Smarty\Compiler\Configfile $compiler
+ */
+ public function __construct($data, \Smarty\Compiler\Configfile $compiler)
+ {
+ $this->data = $data . "\n"; //now all lines are \n-terminated
+ $this->dataLength = strlen($data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
+ $this->line = 1;
+ $this->compiler = $compiler;
+ $this->smarty = $compiler->smarty;
+ $this->configBooleanize = $this->smarty->config_booleanize;
+ }
+
+ public function replace ($input) {
+ return $input;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
+
+
+/*!lex2php
+%input $this->data
+%counter $this->counter
+%token $this->token
+%value $this->value
+%line $this->line
+commentstart = /#|;/
+openB = /\[/
+closeB = /\]/
+section = /.*?(?=[\.=\[\]\r\n])/
+equal = /=/
+whitespace = /[ \t\r]+/
+dot = /\./
+id = /[0-9]*[a-zA-Z_]\w*/
+newline = /\n/
+single_quoted_string = /'[^'\\]*(?:\\.[^'\\]*)*'(?=[ \t\r]*[\n#;])/
+double_quoted_string = /"[^"\\]*(?:\\.[^"\\]*)*"(?=[ \t\r]*[\n#;])/
+tripple_quotes = /"""/
+tripple_quotes_end = /"""(?=[ \t\r]*[\n#;])/
+text = /[\S\s]/
+float = /\d+\.\d+(?=[ \t\r]*[\n#;])/
+int = /\d+(?=[ \t\r]*[\n#;])/
+maybe_bool = /[a-zA-Z]+(?=[ \t\r]*[\n#;])/
+naked_string = /[^\n]+?(?=[ \t\r]*\n)/
+*/
+
+/*!lex2php
+%statename START
+
+commentstart {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_COMMENTSTART;
+ $this->yypushstate(self::COMMENT);
+}
+openB {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_OPENB;
+ $this->yypushstate(self::SECTION);
+}
+closeB {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_CLOSEB;
+}
+equal {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_EQUAL;
+ $this->yypushstate(self::VALUE);
+}
+whitespace {
+ return false;
+}
+newline {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NEWLINE;
+}
+id {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_ID;
+}
+text {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_OTHER;
+}
+
+*/
+
+/*!lex2php
+%statename VALUE
+
+whitespace {
+ return false;
+}
+float {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_FLOAT;
+ $this->yypopstate();
+}
+int {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_INT;
+ $this->yypopstate();
+}
+tripple_quotes {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_QUOTES;
+ $this->yypushstate(self::TRIPPLE);
+}
+single_quoted_string {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_SINGLE_QUOTED_STRING;
+ $this->yypopstate();
+}
+double_quoted_string {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_DOUBLE_QUOTED_STRING;
+ $this->yypopstate();
+}
+maybe_bool {
+ if (!$this->configBooleanize || !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no')) ) {
+ $this->yypopstate();
+ $this->yypushstate(self::NAKED_STRING_VALUE);
+ return true; //reprocess in new state
+ } else {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_BOOL;
+ $this->yypopstate();
+ }
+}
+naked_string {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->yypopstate();
+}
+newline {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->value = '';
+ $this->yypopstate();
+}
+
+*/
+
+/*!lex2php
+%statename NAKED_STRING_VALUE
+
+naked_string {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->yypopstate();
+}
+
+*/
+
+/*!lex2php
+%statename COMMENT
+
+whitespace {
+ return false;
+}
+naked_string {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+}
+newline {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NEWLINE;
+ $this->yypopstate();
+}
+
+*/
+
+/*!lex2php
+%statename SECTION
+
+dot {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_DOT;
+}
+section {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_SECTION;
+ $this->yypopstate();
+}
+
+*/
+/*!lex2php
+%statename TRIPPLE
+
+tripple_quotes_end {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_QUOTES_END;
+ $this->yypopstate();
+ $this->yypushstate(self::START);
+}
+text {
+ $to = strlen($this->data);
+ preg_match("/\"\"\"[ \t\r]*[\n#;]/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_config_file_error ('missing or misspelled literal closing tag');
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_TEXT;
+}
+*/
+
+}
diff --git a/vendor/smarty/smarty/src/Lexer/TemplateLexer.php b/vendor/smarty/smarty/src/Lexer/TemplateLexer.php
new file mode 100644
index 000000000..2e7f33055
--- /dev/null
+++ b/vendor/smarty/smarty/src/Lexer/TemplateLexer.php
@@ -0,0 +1,1083 @@
+<?php
+
+namespace Smarty\Lexer;
+
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * TemplateLexer
+ * This is the template file lexer.
+ * It is generated from the TemplateLexer.plex file
+ *
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class TemplateLexer
+{
+ /**
+ * Source
+ *
+ * @var string
+ */
+ public $data;
+
+ /**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+
+ /**
+ * byte counter
+ *
+ * @var int
+ */
+ public $counter;
+
+ /**
+ * token number
+ *
+ * @var int
+ */
+ public $token;
+
+ /**
+ * token value
+ *
+ * @var string
+ */
+ public $value;
+
+ /**
+ * current line
+ *
+ * @var int
+ */
+ public $line;
+
+ /**
+ * tag start line
+ *
+ * @var
+ */
+ public $taglineno;
+
+ /**
+ * state number
+ *
+ * @var int
+ */
+ public $state = 1;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * compiler object
+ *
+ * @var \Smarty\Compiler\Template
+ */
+ public $compiler = null;
+
+ /**
+ * trace file
+ *
+ * @var resource
+ */
+ public $yyTraceFILE;
+
+ /**
+ * trace prompt
+ *
+ * @var string
+ */
+ public $yyTracePrompt;
+
+ /**
+ * XML flag true while processing xml
+ *
+ * @var bool
+ */
+ public $is_xml = false;
+
+ /**
+ * state names
+ *
+ * @var array
+ */
+ public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',);
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ 'NOT' => '(!,not)',
+ 'OPENP' => '(',
+ 'CLOSEP' => ')',
+ 'OPENB' => '[',
+ 'CLOSEB' => ']',
+ 'PTR' => '->',
+ 'APTR' => '=>',
+ 'EQUAL' => '=',
+ 'NUMBER' => 'number',
+ 'UNIMATH' => '+" , "-',
+ 'MATH' => '*" , "/" , "%',
+ 'INCDEC' => '++" , "--',
+ 'SPACE' => ' ',
+ 'DOLLAR' => '$',
+ 'SEMICOLON' => ';',
+ 'COLON' => ':',
+ 'DOUBLECOLON' => '::',
+ 'AT' => '@',
+ 'HATCH' => '#',
+ 'QUOTE' => '"',
+ 'BACKTICK' => '`',
+ 'VERT' => '"|" modifier',
+ 'DOT' => '.',
+ 'COMMA' => '","',
+ 'QMARK' => '"?"',
+ 'ID' => 'id, name',
+ 'TEXT' => 'text',
+ 'LDELSLASH' => '{/..} closing tag',
+ 'LDEL' => '{...} Smarty tag',
+ 'COMMENT' => 'comment',
+ 'AS' => 'as',
+ 'TO' => 'to',
+ 'LOGOP' => '"<", "==" ... logical operator',
+ 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
+ 'SCOND' => '"is even" ... if condition',
+ );
+
+ /**
+ * literal tag nesting level
+ *
+ * @var int
+ */
+ private $literal_cnt = 0;
+
+ /**
+ * preg token pattern for state TEXT
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+
+ /**
+ * preg token pattern for state TAG
+ *
+ * @var string
+ */
+ private $yy_global_pattern2 = null;
+
+ /**
+ * preg token pattern for state TAGBODY
+ *
+ * @var string
+ */
+ private $yy_global_pattern3 = null;
+
+ /**
+ * preg token pattern for state LITERAL
+ *
+ * @var string
+ */
+ private $yy_global_pattern4 = null;
+
+ /**
+ * preg token pattern for state DOUBLEQUOTEDSTRING
+ *
+ * @var null
+ */
+ private $yy_global_pattern5 = null;
+
+ /**
+ * preg token pattern for text
+ *
+ * @var null
+ */
+ private $yy_global_text = null;
+
+ /**
+ * preg token pattern for literal
+ *
+ * @var null
+ */
+ private $yy_global_literal = null;
+
+ /**
+ * constructor
+ *
+ * @param string $source template source
+ * @param \Smarty\Compiler\Template $compiler
+ */
+ public function __construct($source, \Smarty\Compiler\Template $compiler)
+ {
+ $this->data = $source;
+ $this->dataLength = strlen($this->data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
+ $this->line = 1;
+ $this->smarty = $compiler->getTemplate()->getSmarty();
+ $this->compiler = $compiler;
+ $this->compiler->initDelimiterPreg();
+ $this->smarty_token_names['LDEL'] = $this->smarty->getLeftDelimiter();
+ $this->smarty_token_names['RDEL'] = $this->smarty->getRightDelimiter();
+ }
+
+ /**
+ * open lexer/parser trace file
+ *
+ */
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
+
+ /**
+ * replace placeholders with runtime preg code
+ *
+ * @param string $preg
+ *
+ * @return string
+ */
+ public function replace($preg)
+ {
+ return $this->compiler->replaceDelimiter($preg);
+ }
+
+ /**
+ * check if current value is an autoliteral left delimiter
+ *
+ * @return bool
+ */
+ public function isAutoLiteral()
+ {
+ return $this->smarty->getAutoLiteral() && isset($this->value[ $this->compiler->getLdelLength() ]) ?
+ strpos(" \n\t\r", $this->value[ $this->compiler->getLdelLength() ]) !== false : false;
+ }
+
+
+ private $_yy_state = 1;
+ private $_yy_stack = array();
+
+ public function yylex()
+ {
+ return $this->{'yylex' . $this->_yy_state}();
+ }
+
+ public function yypushstate($state)
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ array_push($this->_yy_stack, $this->_yy_state);
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ }
+
+ public function yypopstate()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ $this->_yy_state = array_pop($this->_yy_stack);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+
+ }
+
+ public function yybegin($state)
+ {
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ }
+
+
+
+ public function yylex1()
+ {
+ if (!isset($this->yy_global_pattern1)) {
+ $this->yy_global_pattern1 = $this->replace("/\G([{][}])|\G((SMARTYldel)SMARTYal[*])|\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern1,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TEXT');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r1_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const TEXT = 1;
+ public function yy_r1_1()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r1_2()
+ {
+
+ $to = $this->dataLength;
+ preg_match("/[*]{$this->compiler->getRdelPreg()}[\n]?/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1] + strlen($match[0][0]);
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ return false;
+ }
+ public function yy_r1_4()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r1_6()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALSTART;
+ $this->yypushstate(self::LITERAL);
+ }
+ public function yy_r1_8()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALEND;
+ $this->yypushstate(self::LITERAL);
+ }
+ public function yy_r1_10()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r1_12()
+ {
+
+ if (!isset($this->yy_global_text)) {
+ $this->yy_global_text = $this->replace('/(SMARTYldel)SMARTYal/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_text, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+
+
+ public function yylex2()
+ {
+ if (!isset($this->yy_global_pattern2)) {
+ $this->yy_global_pattern2 = $this->replace("/\G((SMARTYldel)SMARTYal(if|elseif|else if|while)\\s+)|\G((SMARTYldel)SMARTYalfor\\s+)|\G((SMARTYldel)SMARTYalforeach(?![^\s]))|\G((SMARTYldel)SMARTYalsetfilter\\s+)|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$]smarty\\.block\\.(child|parent)\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/][0-9]*[a-zA-Z_]\\w*\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$][0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal)/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern2,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TAG');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r2_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const TAG = 2;
+ public function yy_r2_1()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELIF;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_4()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELFOR;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_6()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELFOREACH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_8()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELSETFILTER;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_10()
+ {
+
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SIMPLETAG;
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_13()
+ {
+
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SMARTYBLOCKCHILDPARENT;
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_16()
+ {
+
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSETAG;
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_18()
+ {
+
+ if ($this->_yy_stack[count($this->_yy_stack)-1] === self::TEXT) {
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SIMPELOUTPUT;
+ $this->taglineno = $this->line;
+ } else {
+ $this->value = $this->smarty->getLeftDelimiter();
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ }
+ public function yy_r2_21()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELSLASH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_23()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+
+ public function yylex3()
+ {
+ if (!isset($this->yy_global_pattern3)) {
+ $this->yy_global_pattern3 = $this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+(not\\s+)?in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G(array\\s*[(]\\s*)|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|][@]?)|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern3,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TAGBODY');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r3_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const TAGBODY = 3;
+ public function yy_r3_1()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_RDEL;
+ $this->yypopstate();
+ }
+ public function yy_r3_2()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r3_4()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_QUOTE;
+ $this->yypushstate(self::DOUBLEQUOTEDSTRING);
+ $this->compiler->enterDoubleQuote();
+ }
+ public function yy_r3_5()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_SINGLEQUOTESTRING;
+ }
+ public function yy_r3_6()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLARID;
+ }
+ public function yy_r3_7()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLAR;
+ }
+ public function yy_r3_8()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_ISIN;
+ }
+ public function yy_r3_10()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_AS;
+ }
+ public function yy_r3_11()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TO;
+ }
+ public function yy_r3_12()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_STEP;
+ }
+ public function yy_r3_13()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_INSTANCEOF;
+ }
+ public function yy_r3_14()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LOGOP;
+ }
+ public function yy_r3_16()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_SLOGOP;
+ }
+ public function yy_r3_18()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TLOGOP;
+ }
+ public function yy_r3_21()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_SINGLECOND;
+ }
+ public function yy_r3_24()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_NOT;
+ }
+ public function yy_r3_25()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TYPECAST;
+ }
+ public function yy_r3_29()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_OPENP;
+ }
+ public function yy_r3_30()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSEP;
+ }
+ public function yy_r3_31()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_OPENB;
+ }
+ public function yy_r3_32()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSEB;
+ }
+ public function yy_r3_33()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_PTR;
+ }
+ public function yy_r3_34()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_APTR;
+ }
+ public function yy_r3_35()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_EQUAL;
+ }
+ public function yy_r3_36()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_INCDEC;
+ }
+ public function yy_r3_38()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_UNIMATH;
+ }
+ public function yy_r3_40()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_MATH;
+ }
+ public function yy_r3_42()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_AT;
+ }
+ public function yy_r3_43()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_ARRAYOPEN;
+ }
+ public function yy_r3_44()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_HATCH;
+ }
+ public function yy_r3_45()
+ {
+
+ // resolve conflicts with shorttag and right_delimiter starting with '='
+ if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->compiler->getRdelLength()) === $this->smarty->getRightDelimiter()) {
+ preg_match('/\s+/',$this->value,$match);
+ $this->value = $match[0];
+ $this->token = \Smarty\Parser\TemplateParser::TP_SPACE;
+ } else {
+ $this->token = \Smarty\Parser\TemplateParser::TP_ATTR;
+ }
+ }
+ public function yy_r3_46()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_NAMESPACE;
+ }
+ public function yy_r3_49()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_ID;
+ }
+ public function yy_r3_50()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_INTEGER;
+ }
+ public function yy_r3_51()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_BACKTICK;
+ $this->yypopstate();
+ }
+ public function yy_r3_52()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_VERT;
+ }
+ public function yy_r3_53()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOT;
+ }
+ public function yy_r3_54()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_COMMA;
+ }
+ public function yy_r3_55()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_SEMICOLON;
+ }
+ public function yy_r3_56()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOUBLECOLON;
+ }
+ public function yy_r3_57()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_COLON;
+ }
+ public function yy_r3_58()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_QMARK;
+ }
+ public function yy_r3_59()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_HEX;
+ }
+ public function yy_r3_60()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_SPACE;
+ }
+ public function yy_r3_61()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+
+
+
+ public function yylex4()
+ {
+ if (!isset($this->yy_global_pattern4)) {
+ $this->yy_global_pattern4 = $this->replace("/\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern4,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state LITERAL');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r4_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const LITERAL = 4;
+ public function yy_r4_1()
+ {
+
+ $this->literal_cnt++;
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ }
+ public function yy_r4_3()
+ {
+
+ if ($this->literal_cnt) {
+ $this->literal_cnt--;
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ } else {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALEND;
+ $this->yypopstate();
+ }
+ }
+ public function yy_r4_5()
+ {
+
+ if (!isset($this->yy_global_literal)) {
+ $this->yy_global_literal = $this->replace('/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_literal, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ }
+
+
+ public function yylex5()
+ {
+ if (!isset($this->yy_global_pattern5)) {
+ $this->yy_global_pattern5 = $this->replace("/\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G([`][$])|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=((SMARTYldel)SMARTYal|\\$|`\\$|\"SMARTYliteral)))|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern5,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state DOUBLEQUOTEDSTRING');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r5_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const DOUBLEQUOTEDSTRING = 5;
+ public function yy_r5_1()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r5_3()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r5_5()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r5_7()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r5_9()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r5_11()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->taglineno = $this->line;
+ $this->yypushstate(self::TAGBODY);
+ }
+ public function yy_r5_13()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_QUOTE;
+ $this->yypopstate();
+ }
+ public function yy_r5_14()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_BACKTICK;
+ $this->value = substr($this->value,0,-1);
+ $this->yypushstate(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r5_15()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLARID;
+ }
+ public function yy_r5_16()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r5_17()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r5_22()
+ {
+
+ $to = $this->dataLength;
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+
+ }
+
+ \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Lexer/TemplateLexer.plex b/vendor/smarty/smarty/src/Lexer/TemplateLexer.plex
new file mode 100644
index 000000000..282a99cf9
--- /dev/null
+++ b/vendor/smarty/smarty/src/Lexer/TemplateLexer.plex
@@ -0,0 +1,677 @@
+<?php
+
+namespace Smarty\Lexer;
+
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * TemplateLexer
+ * This is the template file lexer.
+ * It is generated from the TemplateLexer.plex file
+ *
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class TemplateLexer
+{
+ /**
+ * Source
+ *
+ * @var string
+ */
+ public $data;
+
+ /**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+
+ /**
+ * byte counter
+ *
+ * @var int
+ */
+ public $counter;
+
+ /**
+ * token number
+ *
+ * @var int
+ */
+ public $token;
+
+ /**
+ * token value
+ *
+ * @var string
+ */
+ public $value;
+
+ /**
+ * current line
+ *
+ * @var int
+ */
+ public $line;
+
+ /**
+ * tag start line
+ *
+ * @var
+ */
+ public $taglineno;
+
+ /**
+ * state number
+ *
+ * @var int
+ */
+ public $state = 1;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * compiler object
+ *
+ * @var \Smarty\Compiler\Template
+ */
+ public $compiler = null;
+
+ /**
+ * trace file
+ *
+ * @var resource
+ */
+ public $yyTraceFILE;
+
+ /**
+ * trace prompt
+ *
+ * @var string
+ */
+ public $yyTracePrompt;
+
+ /**
+ * XML flag true while processing xml
+ *
+ * @var bool
+ */
+ public $is_xml = false;
+
+ /**
+ * state names
+ *
+ * @var array
+ */
+ public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',);
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ 'NOT' => '(!,not)',
+ 'OPENP' => '(',
+ 'CLOSEP' => ')',
+ 'OPENB' => '[',
+ 'CLOSEB' => ']',
+ 'PTR' => '->',
+ 'APTR' => '=>',
+ 'EQUAL' => '=',
+ 'NUMBER' => 'number',
+ 'UNIMATH' => '+" , "-',
+ 'MATH' => '*" , "/" , "%',
+ 'INCDEC' => '++" , "--',
+ 'SPACE' => ' ',
+ 'DOLLAR' => '$',
+ 'SEMICOLON' => ';',
+ 'COLON' => ':',
+ 'DOUBLECOLON' => '::',
+ 'AT' => '@',
+ 'HATCH' => '#',
+ 'QUOTE' => '"',
+ 'BACKTICK' => '`',
+ 'VERT' => '"|" modifier',
+ 'DOT' => '.',
+ 'COMMA' => '","',
+ 'QMARK' => '"?"',
+ 'ID' => 'id, name',
+ 'TEXT' => 'text',
+ 'LDELSLASH' => '{/..} closing tag',
+ 'LDEL' => '{...} Smarty tag',
+ 'COMMENT' => 'comment',
+ 'AS' => 'as',
+ 'TO' => 'to',
+ 'LOGOP' => '"<", "==" ... logical operator',
+ 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
+ 'SCOND' => '"is even" ... if condition',
+ );
+
+ /**
+ * literal tag nesting level
+ *
+ * @var int
+ */
+ private $literal_cnt = 0;
+
+ /**
+ * preg token pattern for state TEXT
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+
+ /**
+ * preg token pattern for state TAG
+ *
+ * @var string
+ */
+ private $yy_global_pattern2 = null;
+
+ /**
+ * preg token pattern for state TAGBODY
+ *
+ * @var string
+ */
+ private $yy_global_pattern3 = null;
+
+ /**
+ * preg token pattern for state LITERAL
+ *
+ * @var string
+ */
+ private $yy_global_pattern4 = null;
+
+ /**
+ * preg token pattern for state DOUBLEQUOTEDSTRING
+ *
+ * @var null
+ */
+ private $yy_global_pattern5 = null;
+
+ /**
+ * preg token pattern for text
+ *
+ * @var null
+ */
+ private $yy_global_text = null;
+
+ /**
+ * preg token pattern for literal
+ *
+ * @var null
+ */
+ private $yy_global_literal = null;
+
+ /**
+ * constructor
+ *
+ * @param string $source template source
+ * @param \Smarty\Compiler\Template $compiler
+ */
+ public function __construct($source, \Smarty\Compiler\Template $compiler)
+ {
+ $this->data = $source;
+ $this->dataLength = strlen($this->data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
+ $this->line = 1;
+ $this->smarty = $compiler->getTemplate()->getSmarty();
+ $this->compiler = $compiler;
+ $this->compiler->initDelimiterPreg();
+ $this->smarty_token_names['LDEL'] = $this->smarty->getLeftDelimiter();
+ $this->smarty_token_names['RDEL'] = $this->smarty->getRightDelimiter();
+ }
+
+ /**
+ * open lexer/parser trace file
+ *
+ */
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
+
+ /**
+ * replace placeholders with runtime preg code
+ *
+ * @param string $preg
+ *
+ * @return string
+ */
+ public function replace($preg)
+ {
+ return $this->compiler->replaceDelimiter($preg);
+ }
+
+ /**
+ * check if current value is an autoliteral left delimiter
+ *
+ * @return bool
+ */
+ public function isAutoLiteral()
+ {
+ return $this->smarty->getAutoLiteral() && isset($this->value[ $this->compiler->getLdelLength() ]) ?
+ strpos(" \n\t\r", $this->value[ $this->compiler->getLdelLength() ]) !== false : false;
+ }
+
+ /*!lex2php
+ %input $this->data
+ %counter $this->counter
+ %token $this->token
+ %value $this->value
+ %line $this->line
+ userliteral = ~(SMARTYldel)SMARTYautoliteral\s+SMARTYliteral~
+ char = ~[\S\s]~
+ textdoublequoted = ~([^"\\]*?)((?:\\.[^"\\]*?)*?)(?=((SMARTYldel)SMARTYal|\$|`\$|"SMARTYliteral))~
+ namespace = ~([0-9]*[a-zA-Z_]\w*)?(\\[0-9]*[a-zA-Z_]\w*)+~
+ emptyjava = ~[{][}]~
+ slash = ~[/]~
+ ldel = ~(SMARTYldel)SMARTYal~
+ rdel = ~\s*SMARTYrdel~
+ nocacherdel = ~(\s+nocache)?\s*SMARTYrdel~
+ smartyblockchildparent = ~[\$]smarty\.block\.(child|parent)~
+ integer = ~\d+~
+ hex = ~0[xX][0-9a-fA-F]+~
+ math = ~\s*([*]{1,2}|[%/^&]|[<>]{2})\s*~
+ comment = ~(SMARTYldel)SMARTYal[*]~
+ incdec = ~([+]|[-]){2}~
+ unimath = ~\s*([+]|[-])\s*~
+ openP = ~\s*[(]\s*~
+ closeP = ~\s*[)]~
+ openB = ~\[\s*~
+ closeB = ~\s*\]~
+ dollar = ~[$]~
+ dot = ~[.]~
+ comma = ~\s*[,]\s*~
+ doublecolon = ~[:]{2}~
+ colon = ~\s*[:]\s*~
+ at = ~[@]~
+ hatch = ~[#]~
+ semicolon = ~\s*[;]\s*~
+ equal = ~\s*[=]\s*~
+ space = ~\s+~
+ ptr = ~\s*[-][>]\s*~
+ aptr = ~\s*[=][>]\s*~
+ singlequotestring = ~'[^'\\]*(?:\\.[^'\\]*)*'~
+ backtick = ~[`]~
+ vert = ~[|][@]?~
+ qmark = ~\s*[?]\s*~
+ constant = ~[_]+[A-Z0-9][0-9A-Z_]*|[A-Z][0-9A-Z_]*(?![0-9A-Z_]*[a-z])~
+ attr = ~\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\s*[=]\s*~
+ id = ~[0-9]*[a-zA-Z_]\w*~
+ literal = ~literal~
+ strip = ~strip~
+ lop = ~\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\s*~
+ slop = ~\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\s+~
+ tlop = ~\s+is\s+(not\s+)?(odd|even|div)\s+by\s+~
+ scond = ~\s+is\s+(not\s+)?(odd|even)~
+ isin = ~\s+is\s+(not\s+)?in\s+~
+ as = ~\s+as\s+~
+ to = ~\s+to\s+~
+ step = ~\s+step\s+~
+ if = ~(if|elseif|else if|while)\s+~
+ for = ~for\s+~
+ array = ~array~
+ foreach = ~foreach(?![^\s])~
+ setfilter = ~setfilter\s+~
+ instanceof = ~\s+instanceof\s+~
+ not = ~[!]\s*|not\s+~
+ typecast = ~[(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\s*~
+ double_quote = ~["]~
+ */
+ /*!lex2php
+ %statename TEXT
+ emptyjava {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ comment {
+ $to = $this->dataLength;
+ preg_match("/[*]{$this->compiler->getRdelPreg()}[\n]?/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1] + strlen($match[0][0]);
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ return false;
+ }
+ userliteral {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ ldel literal rdel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALSTART;
+ $this->yypushstate(self::LITERAL);
+ }
+ ldel slash literal rdel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALEND;
+ $this->yypushstate(self::LITERAL);
+ }
+ ldel {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ char {
+ if (!isset($this->yy_global_text)) {
+ $this->yy_global_text = $this->replace('/(SMARTYldel)SMARTYal/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_text, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ */
+ /*!lex2php
+ %statename TAG
+ ldel if {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELIF;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel for {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELFOR;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel foreach {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELFOREACH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel setfilter {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELSETFILTER;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel id nocacherdel {
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SIMPLETAG;
+ $this->taglineno = $this->line;
+ }
+ ldel smartyblockchildparent rdel {
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SMARTYBLOCKCHILDPARENT;
+ $this->taglineno = $this->line;
+ }
+ ldel slash id rdel {
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSETAG;
+ $this->taglineno = $this->line;
+ }
+ ldel dollar id nocacherdel {
+ if ($this->_yy_stack[count($this->_yy_stack)-1] === self::TEXT) {
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SIMPELOUTPUT;
+ $this->taglineno = $this->line;
+ } else {
+ $this->value = $this->smarty->getLeftDelimiter();
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ }
+ ldel slash {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELSLASH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ */
+ /*!lex2php
+ %statename TAGBODY
+ rdel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_RDEL;
+ $this->yypopstate();
+ }
+ ldel {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ double_quote {
+ $this->token = \Smarty\Parser\TemplateParser::TP_QUOTE;
+ $this->yypushstate(self::DOUBLEQUOTEDSTRING);
+ $this->compiler->enterDoubleQuote();
+ }
+ singlequotestring {
+ $this->token = \Smarty\Parser\TemplateParser::TP_SINGLEQUOTESTRING;
+ }
+ dollar id {
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLARID;
+ }
+ dollar {
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLAR;
+ }
+ isin {
+ $this->token = \Smarty\Parser\TemplateParser::TP_ISIN;
+ }
+ as {
+ $this->token = \Smarty\Parser\TemplateParser::TP_AS;
+ }
+ to {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TO;
+ }
+ step {
+ $this->token = \Smarty\Parser\TemplateParser::TP_STEP;
+ }
+ instanceof {
+ $this->token = \Smarty\Parser\TemplateParser::TP_INSTANCEOF;
+ }
+ lop {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LOGOP;
+ }
+ slop {
+ $this->token = \Smarty\Parser\TemplateParser::TP_SLOGOP;
+ }
+ tlop {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TLOGOP;
+ }
+ scond {
+ $this->token = \Smarty\Parser\TemplateParser::TP_SINGLECOND;
+ }
+ not{
+ $this->token = \Smarty\Parser\TemplateParser::TP_NOT;
+ }
+ typecast {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TYPECAST;
+ }
+ openP {
+ $this->token = \Smarty\Parser\TemplateParser::TP_OPENP;
+ }
+ closeP {
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSEP;
+ }
+ openB {
+ $this->token = \Smarty\Parser\TemplateParser::TP_OPENB;
+ }
+ closeB {
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSEB;
+ }
+ ptr {
+ $this->token = \Smarty\Parser\TemplateParser::TP_PTR;
+ }
+ aptr {
+ $this->token = \Smarty\Parser\TemplateParser::TP_APTR;
+ }
+ equal {
+ $this->token = \Smarty\Parser\TemplateParser::TP_EQUAL;
+ }
+ incdec {
+ $this->token = \Smarty\Parser\TemplateParser::TP_INCDEC;
+ }
+ unimath {
+ $this->token = \Smarty\Parser\TemplateParser::TP_UNIMATH;
+ }
+ math {
+ $this->token = \Smarty\Parser\TemplateParser::TP_MATH;
+ }
+ at {
+ $this->token = \Smarty\Parser\TemplateParser::TP_AT;
+ }
+ array openP {
+ $this->token = \Smarty\Parser\TemplateParser::TP_ARRAYOPEN;
+ }
+ hatch {
+ $this->token = \Smarty\Parser\TemplateParser::TP_HATCH;
+ }
+ attr {
+ // resolve conflicts with shorttag and right_delimiter starting with '='
+ if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->compiler->getRdelLength()) === $this->smarty->getRightDelimiter()) {
+ preg_match('/\s+/',$this->value,$match);
+ $this->value = $match[0];
+ $this->token = \Smarty\Parser\TemplateParser::TP_SPACE;
+ } else {
+ $this->token = \Smarty\Parser\TemplateParser::TP_ATTR;
+ }
+ }
+ namespace {
+ $this->token = \Smarty\Parser\TemplateParser::TP_NAMESPACE;
+ }
+ id {
+ $this->token = \Smarty\Parser\TemplateParser::TP_ID;
+ }
+ integer {
+ $this->token = \Smarty\Parser\TemplateParser::TP_INTEGER;
+ }
+ backtick {
+ $this->token = \Smarty\Parser\TemplateParser::TP_BACKTICK;
+ $this->yypopstate();
+ }
+ vert {
+ $this->token = \Smarty\Parser\TemplateParser::TP_VERT;
+ }
+ dot {
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOT;
+ }
+ comma {
+ $this->token = \Smarty\Parser\TemplateParser::TP_COMMA;
+ }
+ semicolon {
+ $this->token = \Smarty\Parser\TemplateParser::TP_SEMICOLON;
+ }
+ doublecolon {
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOUBLECOLON;
+ }
+ colon {
+ $this->token = \Smarty\Parser\TemplateParser::TP_COLON;
+ }
+ qmark {
+ $this->token = \Smarty\Parser\TemplateParser::TP_QMARK;
+ }
+ hex {
+ $this->token = \Smarty\Parser\TemplateParser::TP_HEX;
+ }
+ space {
+ $this->token = \Smarty\Parser\TemplateParser::TP_SPACE;
+ }
+ char {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ */
+
+ /*!lex2php
+ %statename LITERAL
+ ldel literal rdel {
+ $this->literal_cnt++;
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ }
+ ldel slash literal rdel {
+ if ($this->literal_cnt) {
+ $this->literal_cnt--;
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ } else {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALEND;
+ $this->yypopstate();
+ }
+ }
+ char {
+ if (!isset($this->yy_global_literal)) {
+ $this->yy_global_literal = $this->replace('/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_literal, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ }
+ */
+ /*!lex2php
+ %statename DOUBLEQUOTEDSTRING
+ userliteral {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ ldel literal rdel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ ldel slash literal rdel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ ldel slash {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ ldel id {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ ldel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->taglineno = $this->line;
+ $this->yypushstate(self::TAGBODY);
+ }
+ double_quote {
+ $this->token = \Smarty\Parser\TemplateParser::TP_QUOTE;
+ $this->yypopstate();
+ }
+ backtick dollar {
+ $this->token = \Smarty\Parser\TemplateParser::TP_BACKTICK;
+ $this->value = substr($this->value,0,-1);
+ $this->yypushstate(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ dollar id {
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLARID;
+ }
+ dollar {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ textdoublequoted {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ char {
+ $to = $this->dataLength;
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ */
+ }
+
+ \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/ParseTree/Base.php b/vendor/smarty/smarty/src/ParseTree/Base.php
new file mode 100644
index 000000000..e1140c15e
--- /dev/null
+++ b/vendor/smarty/smarty/src/ParseTree/Base.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Smarty\ParseTree;
+
+/**
+ * Smarty Internal Plugin Templateparser ParseTree
+ * These are classes to build parsetree in the template parser
+ *
+
+
+ * @author Thue Kristensen
+ * @author Uwe Tews
+ */
+
+/**
+
+
+ * @ignore
+ */
+abstract class Base
+{
+ /**
+ * Buffer content
+ *
+ * @var mixed
+ */
+ public $data;
+
+ /**
+ * Subtree array
+ *
+ * @var array
+ */
+ public $subtrees = array();
+
+ /**
+ * Return buffer
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string buffer content
+ */
+ abstract public function to_smarty_php(\Smarty\Parser\TemplateParser $parser);
+
+}
diff --git a/vendor/smarty/smarty/src/ParseTree/Code.php b/vendor/smarty/smarty/src/ParseTree/Code.php
new file mode 100644
index 000000000..b39f22c8b
--- /dev/null
+++ b/vendor/smarty/smarty/src/ParseTree/Code.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Smarty\ParseTree;
+
+/**
+ * Smarty Internal Plugin Templateparser Parse Tree
+ * These are classes to build parse trees in the template parser
+ *
+
+
+ * @author Thue Kristensen
+ * @author Uwe Tews
+ */
+
+/**
+ * Code fragment inside a tag .
+ *
+
+
+ * @ignore
+ */
+class Code extends Base
+{
+ /**
+ * Create parse tree buffer for code fragment
+ *
+ * @param string $data content
+ */
+ public function __construct($data)
+ {
+ $this->data = $data;
+ }
+
+ /**
+ * Return buffer content in parentheses
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string content
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ return sprintf('(%s)', $this->data);
+ }
+}
diff --git a/vendor/smarty/smarty/src/ParseTree/Dq.php b/vendor/smarty/smarty/src/ParseTree/Dq.php
new file mode 100644
index 000000000..b5fca3b40
--- /dev/null
+++ b/vendor/smarty/smarty/src/ParseTree/Dq.php
@@ -0,0 +1,97 @@
+<?php
+
+namespace Smarty\ParseTree;
+/**
+ * Double-quoted string inside a tag.
+ *
+
+
+ * @ignore
+ */
+
+/**
+ * Double quoted string inside a tag.
+ *
+
+
+ * @ignore
+ */
+class Dq extends Base
+{
+ /**
+ * Create parse tree buffer for double-quoted string subtrees
+ *
+ * @param object $parser parser object
+ * @param Base $subtree parse tree buffer
+ */
+ public function __construct($parser, Base $subtree)
+ {
+ $this->subtrees[] = $subtree;
+ if ($subtree instanceof Tag) {
+ $parser->block_nesting_level = $parser->compiler->getTagStackCount();
+ }
+ }
+
+ /**
+ * Append buffer to subtree
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ * @param Base $subtree parse tree buffer
+ */
+ public function append_subtree(\Smarty\Parser\TemplateParser $parser, Base $subtree)
+ {
+ $last_subtree = count($this->subtrees) - 1;
+ if ($last_subtree >= 0 && $this->subtrees[ $last_subtree ] instanceof Tag
+ && $this->subtrees[ $last_subtree ]->saved_block_nesting < $parser->block_nesting_level
+ ) {
+ if ($subtree instanceof Code) {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode(
+ (string) $this->subtrees[ $last_subtree ]->data,
+ '<?php echo ' . $subtree->data . ';?>'
+ );
+ } elseif ($subtree instanceof DqContent) {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode(
+ (string) $this->subtrees[ $last_subtree ]->data,
+ '<?php echo "' . $subtree->data . '";?>'
+ );
+ } else {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode((string) $this->subtrees[ $last_subtree ]->data, (string) $subtree->data);
+ }
+ } else {
+ $this->subtrees[] = $subtree;
+ }
+ if ($subtree instanceof Tag) {
+ $parser->block_nesting_level = $parser->compiler->getTagStackCount();
+ }
+ }
+
+ /**
+ * Merge subtree buffer content together
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string compiled template code
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ $code = '';
+ foreach ($this->subtrees as $subtree) {
+ if ($code !== '') {
+ $code .= '.';
+ }
+ if ($subtree instanceof Tag) {
+ $more_php = $subtree->assign_to_var($parser);
+ } else {
+ $more_php = $subtree->to_smarty_php($parser);
+ }
+ $code .= $more_php;
+ if (!$subtree instanceof DqContent) {
+ $parser->compiler->has_variable_string = true;
+ }
+ }
+ return $code;
+ }
+}
diff --git a/vendor/smarty/smarty/src/ParseTree/DqContent.php b/vendor/smarty/smarty/src/ParseTree/DqContent.php
new file mode 100644
index 000000000..f0a4b0697
--- /dev/null
+++ b/vendor/smarty/smarty/src/ParseTree/DqContent.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Smarty\ParseTree;
+/**
+ * Smarty Internal Plugin Templateparser Parse Tree
+ * These are classes to build parse tree in the template parser
+ *
+
+
+ * @author Thue Kristensen
+ * @author Uwe Tews
+ */
+
+/**
+ * Raw chars as part of a double-quoted string.
+ *
+
+
+ * @ignore
+ */
+class DqContent extends Base
+{
+ /**
+ * Create parse tree buffer with string content
+ *
+ * @param string $data string section
+ */
+ public function __construct($data)
+ {
+ $this->data = $data;
+ }
+
+ /**
+ * Return content as double-quoted string
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string doubled quoted string
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ return '"' . $this->data . '"';
+ }
+}
diff --git a/vendor/smarty/smarty/src/ParseTree/Tag.php b/vendor/smarty/smarty/src/ParseTree/Tag.php
new file mode 100644
index 000000000..05237f2de
--- /dev/null
+++ b/vendor/smarty/smarty/src/ParseTree/Tag.php
@@ -0,0 +1,70 @@
+<?php
+
+namespace Smarty\ParseTree;
+
+/**
+ * Smarty Internal Plugin Templateparser Parse Tree
+ * These are classes to build parse tree in the template parser
+ *
+
+
+ * @author Thue Kristensen
+ * @author Uwe Tews
+ */
+
+/**
+ * A complete smarty tag.
+ *
+
+
+ * @ignore
+ */
+class Tag extends Base
+{
+ /**
+ * Saved block nesting level
+ *
+ * @var int
+ */
+ public $saved_block_nesting;
+
+ /**
+ * Create parse tree buffer for Smarty tag
+ *
+ * @param \Smarty\Parser\TemplateParser $parser parser object
+ * @param string $data content
+ */
+ public function __construct(\Smarty\Parser\TemplateParser $parser, $data)
+ {
+ $this->data = $data;
+ $this->saved_block_nesting = $parser->block_nesting_level;
+ }
+
+ /**
+ * Return buffer content
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string content
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ return $this->data;
+ }
+
+ /**
+ * Return complied code that loads the evaluated output of buffer content into a temporary variable
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string template code
+ */
+ public function assign_to_var(\Smarty\Parser\TemplateParser $parser)
+ {
+ $var = $parser->compiler->getNewPrefixVariable();
+ $tmp = $parser->compiler->appendCode('<?php ob_start();?>', (string) $this->data);
+ $tmp = $parser->compiler->appendCode($tmp, "<?php {$var}=ob_get_clean();?>");
+ $parser->compiler->appendPrefixCode($tmp);
+ return $var;
+ }
+}
diff --git a/vendor/smarty/smarty/src/ParseTree/Template.php b/vendor/smarty/smarty/src/ParseTree/Template.php
new file mode 100644
index 000000000..ce802a0f4
--- /dev/null
+++ b/vendor/smarty/smarty/src/ParseTree/Template.php
@@ -0,0 +1,172 @@
+<?php
+
+namespace Smarty\ParseTree;
+
+/**
+ * Smarty Internal Plugin Templateparser Parse Tree
+ * These are classes to build parse tree in the template parser
+ *
+
+
+ * @author Thue Kristensen
+ * @author Uwe Tews
+ */
+
+/**
+ * Template element
+ *
+
+
+ * @ignore
+ */
+class Template extends Base
+{
+ /**
+ * Array of template elements
+ *
+ * @var array
+ */
+ public $subtrees = array();
+
+ /**
+ * Create root of parse tree for template elements
+ */
+ public function __construct()
+ {
+ }
+
+ /**
+ * Append buffer to subtree
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ * @param Base $subtree
+ */
+ public function append_subtree(\Smarty\Parser\TemplateParser $parser, Base $subtree)
+ {
+ if (!empty($subtree->subtrees)) {
+ $this->subtrees = array_merge($this->subtrees, $subtree->subtrees);
+ } else {
+ if ($subtree->data !== '') {
+ $this->subtrees[] = $subtree;
+ }
+ }
+ }
+
+ /**
+ * Append array to subtree
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ * @param Base[] $array
+ */
+ public function append_array(\Smarty\Parser\TemplateParser $parser, $array = array())
+ {
+ if (!empty($array)) {
+ $this->subtrees = array_merge($this->subtrees, (array)$array);
+ }
+ }
+
+ /**
+ * Prepend array to subtree
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ * @param Base[] $array
+ */
+ public function prepend_array(\Smarty\Parser\TemplateParser $parser, $array = array())
+ {
+ if (!empty($array)) {
+ $this->subtrees = array_merge((array)$array, $this->subtrees);
+ }
+ }
+
+ /**
+ * Sanitize and merge subtree buffers together
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string template code content
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ $code = '';
+
+ foreach ($this->getChunkedSubtrees() as $chunk) {
+ $text = '';
+ switch ($chunk['mode']) {
+ case 'textstripped':
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text .= $subtree->to_smarty_php($parser);
+ }
+ $code .= preg_replace(
+ '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/',
+ "<?php echo '\$1'; ?>\n",
+ $parser->compiler->processText($text)
+ );
+ break;
+ case 'text':
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text .= $subtree->to_smarty_php($parser);
+ }
+ $code .= preg_replace(
+ '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/',
+ "<?php echo '\$1'; ?>\n",
+ $text
+ );
+ break;
+ case 'tag':
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text = $parser->compiler->appendCode($text, (string) $subtree->to_smarty_php($parser));
+ }
+ $code .= $text;
+ break;
+ default:
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text = $subtree->to_smarty_php($parser);
+ }
+ $code .= $text;
+
+ }
+ }
+ return $code;
+ }
+
+ private function getChunkedSubtrees() {
+ $chunks = array();
+ $currentMode = null;
+ $currentChunk = array();
+ for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key++) {
+
+ if ($this->subtrees[ $key ]->data === '' && in_array($currentMode, array('textstripped', 'text', 'tag'))) {
+ continue;
+ }
+
+ if ($this->subtrees[ $key ] instanceof Text
+ && $this->subtrees[ $key ]->isToBeStripped()) {
+ $newMode = 'textstripped';
+ } elseif ($this->subtrees[ $key ] instanceof Text) {
+ $newMode = 'text';
+ } elseif ($this->subtrees[ $key ] instanceof Tag) {
+ $newMode = 'tag';
+ } else {
+ $newMode = 'other';
+ }
+
+ if ($newMode == $currentMode) {
+ $currentChunk[] = $this->subtrees[ $key ];
+ } else {
+ $chunks[] = array(
+ 'mode' => $currentMode,
+ 'subtrees' => $currentChunk
+ );
+ $currentMode = $newMode;
+ $currentChunk = array($this->subtrees[ $key ]);
+ }
+ }
+ if ($currentMode && $currentChunk) {
+ $chunks[] = array(
+ 'mode' => $currentMode,
+ 'subtrees' => $currentChunk
+ );
+ }
+ return $chunks;
+ }
+}
diff --git a/vendor/smarty/smarty/src/ParseTree/Text.php b/vendor/smarty/smarty/src/ParseTree/Text.php
new file mode 100644
index 000000000..e6131407c
--- /dev/null
+++ b/vendor/smarty/smarty/src/ParseTree/Text.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace Smarty\ParseTree;
+
+/**
+ * Smarty Internal Plugin Templateparser Parse Tree
+ * These are classes to build parse tree in the template parser
+ *
+
+
+ * @author Thue Kristensen
+ * @author Uwe Tews
+ * *
+ * template text
+
+
+ * @ignore
+ */
+class Text extends Base
+{
+
+ /**
+ * Wether this section should be stripped on output to smarty php
+ * @var bool
+ */
+ private $toBeStripped = false;
+
+ /**
+ * Create template text buffer
+ *
+ * @param string $data text
+ * @param bool $toBeStripped wether this section should be stripped on output to smarty php
+ */
+ public function __construct($data, $toBeStripped = false)
+ {
+ $this->data = $data;
+ $this->toBeStripped = $toBeStripped;
+ }
+
+ /**
+ * Wether this section should be stripped on output to smarty php
+ * @return bool
+ */
+ public function isToBeStripped() {
+ return $this->toBeStripped;
+ }
+
+ /**
+ * Return buffer content
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string text
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ return $this->data;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Parser/ConfigfileParser.php b/vendor/smarty/smarty/src/Parser/ConfigfileParser.php
new file mode 100644
index 000000000..7997a0981
--- /dev/null
+++ b/vendor/smarty/smarty/src/Parser/ConfigfileParser.php
@@ -0,0 +1,972 @@
+<?php
+
+// line 12 "src/Parser/ConfigfileParser.y"
+
+
+namespace Smarty\Parser;
+
+use \Smarty\Lexer\ConfigfileLexer as Lexer;
+use \Smarty\Compiler\Configfile as Configfile;
+
+/**
+* Smarty Internal Plugin Configfileparse
+*
+* This is the config file parser.
+* It is generated from the ConfigfileParser.y file
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+class ConfigfileParser
+{
+// line 31 "src/Parser/ConfigfileParser.y"
+
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+ /**
+ * @var
+ */
+ public $yymajor;
+ /**
+ * lexer object
+ *
+ * @var Lexer
+ */
+ private $lex;
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+ /**
+ * compiler object
+ *
+ * @var Configfile
+ */
+ public $compiler = null;
+ /**
+ * smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+ /**
+ * copy of config_overwrite property
+ *
+ * @var bool
+ */
+ private $configOverwrite = false;
+ /**
+ * copy of config_read_hidden property
+ *
+ * @var bool
+ */
+ private $configReadHidden = false;
+ /**
+ * helper map
+ *
+ * @var array
+ */
+ private static $escapes_single = array('\\' => '\\',
+ '\'' => '\'');
+
+ /**
+ * constructor
+ *
+ * @param Lexer $lex
+ * @param Configfile $compiler
+ */
+ public function __construct(Lexer $lex, Configfile $compiler)
+ {
+ $this->lex = $lex;
+ $this->smarty = $compiler->getSmarty();
+ $this->compiler = $compiler;
+ $this->configOverwrite = $this->smarty->config_overwrite;
+ $this->configReadHidden = $this->smarty->config_read_hidden;
+ }
+
+ /**
+ * parse optional boolean keywords
+ *
+ * @param string $str
+ *
+ * @return bool
+ */
+ private function parse_bool($str)
+ {
+ $str = strtolower($str);
+ if (in_array($str, array('on', 'yes', 'true'))) {
+ $res = true;
+ } else {
+ $res = false;
+ }
+ return $res;
+ }
+
+ /**
+ * parse single quoted string
+ * remove outer quotes
+ * unescape inner quotes
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_single_quoted_string($qstr)
+ {
+ $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
+
+ $ss = preg_split('/(\\\\.)/', $escaped_string, - 1, PREG_SPLIT_DELIM_CAPTURE);
+
+ $str = '';
+ foreach ($ss as $s) {
+ if (strlen($s) === 2 && $s[0] === '\\') {
+ if (isset(self::$escapes_single[$s[1]])) {
+ $s = self::$escapes_single[$s[1]];
+ }
+ }
+ $str .= $s;
+ }
+ return $str;
+ }
+
+ /**
+ * parse double quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_double_quoted_string($qstr)
+ {
+ $inner_str = substr($qstr, 1, strlen($qstr) - 2);
+ return stripcslashes($inner_str);
+ }
+
+ /**
+ * parse triple quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_tripple_double_quoted_string($qstr)
+ {
+ return stripcslashes($qstr);
+ }
+
+ /**
+ * set a config variable in target array
+ *
+ * @param array $var
+ * @param array $target_array
+ */
+ private function set_var(array $var, array &$target_array)
+ {
+ $key = $var['key'];
+ $value = $var['value'];
+
+ if ($this->configOverwrite || !isset($target_array['vars'][$key])) {
+ $target_array['vars'][$key] = $value;
+ } else {
+ settype($target_array['vars'][$key], 'array');
+ $target_array['vars'][$key][] = $value;
+ }
+ }
+
+ /**
+ * add config variable to global vars
+ *
+ * @param array $vars
+ */
+ private function add_global_vars(array $vars)
+ {
+ if (!isset($this->compiler->config_data['vars'])) {
+ $this->compiler->config_data['vars'] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data);
+ }
+ }
+
+ /**
+ * add config variable to section
+ *
+ * @param string $section_name
+ * @param array $vars
+ */
+ private function add_section_vars($section_name, array $vars)
+ {
+ if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
+ $this->compiler->config_data['sections'][$section_name]['vars'] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
+ }
+ }
+
+ const TPC_OPENB = 1;
+ const TPC_SECTION = 2;
+ const TPC_CLOSEB = 3;
+ const TPC_DOT = 4;
+ const TPC_ID = 5;
+ const TPC_EQUAL = 6;
+ const TPC_FLOAT = 7;
+ const TPC_INT = 8;
+ const TPC_BOOL = 9;
+ const TPC_SINGLE_QUOTED_STRING = 10;
+ const TPC_DOUBLE_QUOTED_STRING = 11;
+ const TPC_TRIPPLE_QUOTES = 12;
+ const TPC_TRIPPLE_TEXT = 13;
+ const TPC_TRIPPLE_QUOTES_END = 14;
+ const TPC_NAKED_STRING = 15;
+ const TPC_OTHER = 16;
+ const TPC_NEWLINE = 17;
+ const TPC_COMMENTSTART = 18;
+ const YY_NO_ACTION = 60;
+ const YY_ACCEPT_ACTION = 59;
+ const YY_ERROR_ACTION = 58;
+
+ const YY_SZ_ACTTAB = 39;
+public static $yy_action = array(
+ 24, 25, 26, 27, 28, 12, 15, 23, 31, 32,
+ 59, 8, 9, 3, 21, 22, 33, 13, 33, 13,
+ 14, 10, 18, 16, 30, 11, 17, 20, 34, 7,
+ 5, 1, 2, 29, 4, 19, 52, 35, 6,
+ );
+ public static $yy_lookahead = array(
+ 7, 8, 9, 10, 11, 12, 5, 27, 15, 16,
+ 20, 21, 25, 23, 25, 26, 17, 18, 17, 18,
+ 2, 25, 4, 13, 14, 1, 15, 24, 17, 22,
+ 3, 23, 23, 14, 6, 2, 28, 17, 3,
+);
+ const YY_SHIFT_USE_DFLT = -8;
+ const YY_SHIFT_MAX = 19;
+ public static $yy_shift_ofst = array(
+ -8, 1, 1, 1, -7, -1, -1, 24, -8, -8,
+ -8, 18, 10, 11, 27, 28, 19, 20, 33, 35,
+);
+ const YY_REDUCE_USE_DFLT = -21;
+ const YY_REDUCE_MAX = 10;
+ public static $yy_reduce_ofst = array(
+ -10, -11, -11, -11, -20, -13, -4, 3, 7, 8,
+ 9,
+);
+ public static $yyExpectedTokens = array(
+ array(),
+ array(5, 17, 18, ),
+ array(5, 17, 18, ),
+ array(5, 17, 18, ),
+ array(7, 8, 9, 10, 11, 12, 15, 16, ),
+ array(17, 18, ),
+ array(17, 18, ),
+ array(1, ),
+ array(),
+ array(),
+ array(),
+ array(2, 4, ),
+ array(13, 14, ),
+ array(15, 17, ),
+ array(3, ),
+ array(6, ),
+ array(14, ),
+ array(17, ),
+ array(2, ),
+ array(3, ),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+);
+ public static $yy_default = array(
+ 44, 40, 41, 37, 58, 58, 58, 36, 39, 44,
+ 44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 38, 42, 43, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57,
+);
+ const YYNOCODE = 29;
+ const YYSTACKDEPTH = 100;
+ const YYNSTATE = 36;
+ const YYNRULE = 22;
+ const YYERRORSYMBOL = 19;
+ const YYERRSYMDT = 'yy0';
+ const YYFALLBACK = 0;
+ public static $yyFallback = array(
+ );
+ public function Trace($TraceFILE, $zTracePrompt)
+ {
+ if (!$TraceFILE) {
+ $zTracePrompt = 0;
+ } elseif (!$zTracePrompt) {
+ $TraceFILE = 0;
+ }
+ $this->yyTraceFILE = $TraceFILE;
+ $this->yyTracePrompt = $zTracePrompt;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
+
+ public $yyTraceFILE;
+ public $yyTracePrompt;
+ public $yyidx; /* Index of top element in stack */
+ public $yyerrcnt; /* Shifts left before out of the error */
+ public $yystack = array(); /* The parser's stack */
+
+ public $yyTokenName = array(
+ '$', 'OPENB', 'SECTION', 'CLOSEB',
+ 'DOT', 'ID', 'EQUAL', 'FLOAT',
+ 'INT', 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING',
+ 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END', 'NAKED_STRING',
+ 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error',
+ 'start', 'global_vars', 'sections', 'var_list',
+ 'section', 'newline', 'var', 'value',
+ );
+
+ public static $yyRuleName = array(
+ 'start ::= global_vars sections',
+ 'global_vars ::= var_list',
+ 'sections ::= sections section',
+ 'sections ::=',
+ 'section ::= OPENB SECTION CLOSEB newline var_list',
+ 'section ::= OPENB DOT SECTION CLOSEB newline var_list',
+ 'var_list ::= var_list newline',
+ 'var_list ::= var_list var',
+ 'var_list ::=',
+ 'var ::= ID EQUAL value',
+ 'value ::= FLOAT',
+ 'value ::= INT',
+ 'value ::= BOOL',
+ 'value ::= SINGLE_QUOTED_STRING',
+ 'value ::= DOUBLE_QUOTED_STRING',
+ 'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END',
+ 'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END',
+ 'value ::= NAKED_STRING',
+ 'value ::= OTHER',
+ 'newline ::= NEWLINE',
+ 'newline ::= COMMENTSTART NEWLINE',
+ 'newline ::= COMMENTSTART NAKED_STRING NEWLINE',
+ );
+
+ public function tokenName($tokenType)
+ {
+ if ($tokenType === 0) {
+ return 'End of Input';
+ }
+ if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
+ return $this->yyTokenName[$tokenType];
+ } else {
+ return 'Unknown';
+ }
+ }
+
+ public static function yy_destructor($yymajor, $yypminor)
+ {
+ switch ($yymajor) {
+ default: break; /* If no destructor action specified: do nothing */
+ }
+ }
+
+ public function yy_pop_parser_stack()
+ {
+ if (empty($this->yystack)) {
+ return;
+ }
+ $yytos = array_pop($this->yystack);
+ if ($this->yyTraceFILE && $this->yyidx >= 0) {
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
+ "\n");
+ }
+ $yymajor = $yytos->major;
+ self::yy_destructor($yymajor, $yytos->minor);
+ $this->yyidx--;
+
+ return $yymajor;
+ }
+
+ public function __destruct()
+ {
+ while ($this->yystack !== Array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ public function yy_get_expected_tokens($token)
+ {
+ static $res3 = array();
+ static $res4 = array();
+ $state = $this->yystack[$this->yyidx]->stateno;
+ $expected = self::$yyExpectedTokens[$state];
+ if (isset($res3[$state][$token])) {
+ if ($res3[$state][$token]) {
+ return $expected;
+ }
+ } else {
+ if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ return $expected;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return array_unique($expected);
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[$this->yyidx]->stateno,
+ self::$yyRuleInfo[$yyruleno][0]);
+ if (isset(self::$yyExpectedTokens[$nextstate])) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
+ if (isset($res4[$nextstate][$token])) {
+ if ($res4[$nextstate][$token]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ } else {
+ if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[$yyruleno][0];
+ $this->yystack[$this->yyidx] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return array_unique($expected);
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return $expected;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return array_unique($expected);
+ }
+
+ public function yy_is_expected_token($token)
+ {
+ static $res = array();
+ static $res2 = array();
+ if ($token === 0) {
+ return true; // 0 is not part of this
+ }
+ $state = $this->yystack[$this->yyidx]->stateno;
+ if (isset($res[$state][$token])) {
+ if ($res[$state][$token]) {
+ return true;
+ }
+ } else {
+ if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ return true;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return true;
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[$this->yyidx]->stateno,
+ self::$yyRuleInfo[$yyruleno][0]);
+ if (isset($res2[$nextstate][$token])) {
+ if ($res2[$nextstate][$token]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ } else {
+ if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[$yyruleno][0];
+ $this->yystack[$this->yyidx] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ if (!$token) {
+ // end of input: this is valid
+ return true;
+ }
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return false;
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return true;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return true;
+ }
+
+ public function yy_find_shift_action($iLookAhead)
+ {
+ $stateno = $this->yystack[$this->yyidx]->stateno;
+
+ /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
+ if (!isset(self::$yy_shift_ofst[$stateno])) {
+ // no shift actions
+ return self::$yy_default[$stateno];
+ }
+ $i = self::$yy_shift_ofst[$stateno];
+ if ($i === self::YY_SHIFT_USE_DFLT) {
+ return self::$yy_default[$stateno];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[$i] != $iLookAhead) {
+ if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
+ && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
+ if ($this->yyTraceFILE) {
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
+ $this->yyTokenName[$iLookAhead] . ' => ' .
+ $this->yyTokenName[$iFallback] . "\n");
+ }
+
+ return $this->yy_find_shift_action($iFallback);
+ }
+
+ return self::$yy_default[$stateno];
+ } else {
+ return self::$yy_action[$i];
+ }
+ }
+
+ public function yy_find_reduce_action($stateno, $iLookAhead)
+ {
+ /* $stateno = $this->yystack[$this->yyidx]->stateno; */
+
+ if (!isset(self::$yy_reduce_ofst[$stateno])) {
+ return self::$yy_default[$stateno];
+ }
+ $i = self::$yy_reduce_ofst[$stateno];
+ if ($i === self::YY_REDUCE_USE_DFLT) {
+ return self::$yy_default[$stateno];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[$i] != $iLookAhead) {
+ return self::$yy_default[$stateno];
+ } else {
+ return self::$yy_action[$i];
+ }
+ }
+
+ public function yy_shift($yyNewState, $yyMajor, $yypMinor)
+ {
+ $this->yyidx++;
+ if ($this->yyidx >= self::YYSTACKDEPTH) {
+ $this->yyidx--;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+// line 245 "src/Parser/ConfigfileParser.y"
+
+ $this->internalError = true;
+ $this->compiler->trigger_config_file_error('Stack overflow in configfile parser');
+
+ return;
+ }
+ $yytos = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $yytos->stateno = $yyNewState;
+ $yytos->major = $yyMajor;
+ $yytos->minor = $yypMinor;
+ $this->yystack[] = $yytos;
+ if ($this->yyTraceFILE && $this->yyidx > 0) {
+ fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt,
+ $yyNewState);
+ fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
+ for ($i = 1; $i <= $this->yyidx; $i++) {
+ fprintf($this->yyTraceFILE, " %s",
+ $this->yyTokenName[$this->yystack[$i]->major]);
+ }
+ fwrite($this->yyTraceFILE,"\n");
+ }
+ }
+
+ public static $yyRuleInfo = array(
+ array( 0 => 20, 1 => 2 ),
+ array( 0 => 21, 1 => 1 ),
+ array( 0 => 22, 1 => 2 ),
+ array( 0 => 22, 1 => 0 ),
+ array( 0 => 24, 1 => 5 ),
+ array( 0 => 24, 1 => 6 ),
+ array( 0 => 23, 1 => 2 ),
+ array( 0 => 23, 1 => 2 ),
+ array( 0 => 23, 1 => 0 ),
+ array( 0 => 26, 1 => 3 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 3 ),
+ array( 0 => 27, 1 => 2 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 25, 1 => 1 ),
+ array( 0 => 25, 1 => 2 ),
+ array( 0 => 25, 1 => 3 ),
+ );
+
+ public static $yyReduceMap = array(
+ 0 => 0,
+ 2 => 0,
+ 3 => 0,
+ 19 => 0,
+ 20 => 0,
+ 21 => 0,
+ 1 => 1,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => 7,
+ 8 => 8,
+ 9 => 9,
+ 10 => 10,
+ 11 => 11,
+ 12 => 12,
+ 13 => 13,
+ 14 => 14,
+ 15 => 15,
+ 16 => 16,
+ 17 => 17,
+ 18 => 17,
+ );
+// line 251 "src/Parser/ConfigfileParser.y"
+ public function yy_r0(){
+ $this->_retvalue = null;
+ }
+// line 256 "src/Parser/ConfigfileParser.y"
+ public function yy_r1(){
+ $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = null;
+ }
+// line 270 "src/Parser/ConfigfileParser.y"
+ public function yy_r4(){
+ $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = null;
+ }
+// line 275 "src/Parser/ConfigfileParser.y"
+ public function yy_r5(){
+ if ($this->configReadHidden) {
+ $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ }
+ $this->_retvalue = null;
+ }
+// line 283 "src/Parser/ConfigfileParser.y"
+ public function yy_r6(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 287 "src/Parser/ConfigfileParser.y"
+ public function yy_r7(){
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor, array($this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 291 "src/Parser/ConfigfileParser.y"
+ public function yy_r8(){
+ $this->_retvalue = array();
+ }
+// line 297 "src/Parser/ConfigfileParser.y"
+ public function yy_r9(){
+ $this->_retvalue = array('key' => $this->yystack[$this->yyidx + -2]->minor, 'value' => $this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 302 "src/Parser/ConfigfileParser.y"
+ public function yy_r10(){
+ $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 306 "src/Parser/ConfigfileParser.y"
+ public function yy_r11(){
+ $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 310 "src/Parser/ConfigfileParser.y"
+ public function yy_r12(){
+ $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 314 "src/Parser/ConfigfileParser.y"
+ public function yy_r13(){
+ $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 318 "src/Parser/ConfigfileParser.y"
+ public function yy_r14(){
+ $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 322 "src/Parser/ConfigfileParser.y"
+ public function yy_r15(){
+ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 326 "src/Parser/ConfigfileParser.y"
+ public function yy_r16(){
+ $this->_retvalue = '';
+ }
+// line 330 "src/Parser/ConfigfileParser.y"
+ public function yy_r17(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+
+ private $_retvalue;
+
+ public function yy_reduce($yyruleno)
+ {
+ if ($this->yyTraceFILE && $yyruleno >= 0
+ && $yyruleno < count(self::$yyRuleName)) {
+ fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n",
+ $this->yyTracePrompt, $yyruleno,
+ self::$yyRuleName[$yyruleno]);
+ }
+
+ $this->_retvalue = $yy_lefthand_side = null;
+ if (isset(self::$yyReduceMap[$yyruleno])) {
+ // call the action
+ $this->_retvalue = null;
+ $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
+ $yy_lefthand_side = $this->_retvalue;
+ }
+ $yygoto = self::$yyRuleInfo[$yyruleno][0];
+ $yysize = self::$yyRuleInfo[$yyruleno][1];
+ $this->yyidx -= $yysize;
+ for ($i = $yysize; $i; $i--) {
+ // pop all of the right-hand side parameters
+ array_pop($this->yystack);
+ }
+ $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
+ if ($yyact < self::YYNSTATE) {
+ if (!$this->yyTraceFILE && $yysize) {
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $yyact;
+ $x->major = $yygoto;
+ $x->minor = $yy_lefthand_side;
+ $this->yystack[$this->yyidx] = $x;
+ } else {
+ $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
+ }
+ } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yy_accept();
+ }
+ }
+
+ public function yy_parse_failed()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
+ } while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ }
+
+ public function yy_syntax_error($yymajor, $TOKEN)
+ {
+// line 238 "src/Parser/ConfigfileParser.y"
+
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_config_file_error();
+ }
+
+ public function yy_accept()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
+ } while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+// line 231 "src/Parser/ConfigfileParser.y"
+
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+ }
+
+ public function doParse($yymajor, $yytokenvalue)
+ {
+ $yyerrorhit = 0; /* True if yymajor has invoked an error */
+
+ if ($this->yyidx === null || $this->yyidx < 0) {
+ $this->yyidx = 0;
+ $this->yyerrcnt = -1;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = 0;
+ $x->major = 0;
+ $this->yystack = array();
+ $this->yystack[] = $x;
+ }
+ $yyendofinput = ($yymajor==0);
+
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sInput %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ }
+
+ do {
+ $yyact = $this->yy_find_shift_action($yymajor);
+ if ($yymajor < self::YYERRORSYMBOL &&
+ !$this->yy_is_expected_token($yymajor)) {
+ // force a syntax error
+ $yyact = self::YY_ERROR_ACTION;
+ }
+ if ($yyact < self::YYNSTATE) {
+ $this->yy_shift($yyact, $yymajor, $yytokenvalue);
+ $this->yyerrcnt--;
+ if ($yyendofinput && $this->yyidx >= 0) {
+ $yymajor = 0;
+ } else {
+ $yymajor = self::YYNOCODE;
+ }
+ } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+ $this->yy_reduce($yyact - self::YYNSTATE);
+ } elseif ($yyact === self::YY_ERROR_ACTION) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sSyntax Error!\n",
+ $this->yyTracePrompt);
+ }
+ if (self::YYERRORSYMBOL) {
+ if ($this->yyerrcnt < 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $yymx = $this->yystack[$this->yyidx]->major;
+ if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sDiscard input token %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ }
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $yymajor = self::YYNOCODE;
+ } else {
+ while ($this->yyidx >= 0 &&
+ $yymx !== self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
+ ){
+ $this->yy_pop_parser_stack();
+ }
+ if ($this->yyidx < 0 || $yymajor==0) {
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $this->yy_parse_failed();
+ $yymajor = self::YYNOCODE;
+ } elseif ($yymx !== self::YYERRORSYMBOL) {
+ $u2 = 0;
+ $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
+ }
+ }
+ $this->yyerrcnt = 3;
+ $yyerrorhit = 1;
+ } else {
+ if ($this->yyerrcnt <= 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $this->yyerrcnt = 3;
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ if ($yyendofinput) {
+ $this->yy_parse_failed();
+ }
+ $yymajor = self::YYNOCODE;
+ }
+ } else {
+ $this->yy_accept();
+ $yymajor = self::YYNOCODE;
+ }
+ } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
+ }
+}
+
diff --git a/vendor/smarty/smarty/src/Parser/ConfigfileParser.y b/vendor/smarty/smarty/src/Parser/ConfigfileParser.y
new file mode 100644
index 000000000..23afc2d8f
--- /dev/null
+++ b/vendor/smarty/smarty/src/Parser/ConfigfileParser.y
@@ -0,0 +1,352 @@
+/**
+* ConfigfileParser
+*
+* This is the config file parser
+*
+*
+* @package Smarty
+* @subpackage Config
+* @author Uwe Tews
+*/
+%name TPC_
+%declare_class {
+
+namespace Smarty\Parser;
+
+use \Smarty\Lexer\ConfigfileLexer as Lexer;
+use \Smarty\Compiler\Configfile as Configfile;
+
+/**
+* Smarty Internal Plugin Configfileparse
+*
+* This is the config file parser.
+* It is generated from the ConfigfileParser.y file
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+class ConfigfileParser
+}
+%include_class
+{
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+ /**
+ * @var
+ */
+ public $yymajor;
+ /**
+ * lexer object
+ *
+ * @var Lexer
+ */
+ private $lex;
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+ /**
+ * compiler object
+ *
+ * @var Configfile
+ */
+ public $compiler = null;
+ /**
+ * smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+ /**
+ * copy of config_overwrite property
+ *
+ * @var bool
+ */
+ private $configOverwrite = false;
+ /**
+ * copy of config_read_hidden property
+ *
+ * @var bool
+ */
+ private $configReadHidden = false;
+ /**
+ * helper map
+ *
+ * @var array
+ */
+ private static $escapes_single = array('\\' => '\\',
+ '\'' => '\'');
+
+ /**
+ * constructor
+ *
+ * @param Lexer $lex
+ * @param Configfile $compiler
+ */
+ public function __construct(Lexer $lex, Configfile $compiler)
+ {
+ $this->lex = $lex;
+ $this->smarty = $compiler->getSmarty();
+ $this->compiler = $compiler;
+ $this->configOverwrite = $this->smarty->config_overwrite;
+ $this->configReadHidden = $this->smarty->config_read_hidden;
+ }
+
+ /**
+ * parse optional boolean keywords
+ *
+ * @param string $str
+ *
+ * @return bool
+ */
+ private function parse_bool($str)
+ {
+ $str = strtolower($str);
+ if (in_array($str, array('on', 'yes', 'true'))) {
+ $res = true;
+ } else {
+ $res = false;
+ }
+ return $res;
+ }
+
+ /**
+ * parse single quoted string
+ * remove outer quotes
+ * unescape inner quotes
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_single_quoted_string($qstr)
+ {
+ $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
+
+ $ss = preg_split('/(\\\\.)/', $escaped_string, - 1, PREG_SPLIT_DELIM_CAPTURE);
+
+ $str = '';
+ foreach ($ss as $s) {
+ if (strlen($s) === 2 && $s[0] === '\\') {
+ if (isset(self::$escapes_single[$s[1]])) {
+ $s = self::$escapes_single[$s[1]];
+ }
+ }
+ $str .= $s;
+ }
+ return $str;
+ }
+
+ /**
+ * parse double quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_double_quoted_string($qstr)
+ {
+ $inner_str = substr($qstr, 1, strlen($qstr) - 2);
+ return stripcslashes($inner_str);
+ }
+
+ /**
+ * parse triple quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_tripple_double_quoted_string($qstr)
+ {
+ return stripcslashes($qstr);
+ }
+
+ /**
+ * set a config variable in target array
+ *
+ * @param array $var
+ * @param array $target_array
+ */
+ private function set_var(array $var, array &$target_array)
+ {
+ $key = $var['key'];
+ $value = $var['value'];
+
+ if ($this->configOverwrite || !isset($target_array['vars'][$key])) {
+ $target_array['vars'][$key] = $value;
+ } else {
+ settype($target_array['vars'][$key], 'array');
+ $target_array['vars'][$key][] = $value;
+ }
+ }
+
+ /**
+ * add config variable to global vars
+ *
+ * @param array $vars
+ */
+ private function add_global_vars(array $vars)
+ {
+ if (!isset($this->compiler->config_data['vars'])) {
+ $this->compiler->config_data['vars'] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data);
+ }
+ }
+
+ /**
+ * add config variable to section
+ *
+ * @param string $section_name
+ * @param array $vars
+ */
+ private function add_section_vars($section_name, array $vars)
+ {
+ if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
+ $this->compiler->config_data['sections'][$section_name]['vars'] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
+ }
+ }
+}
+
+%token_prefix TPC_
+
+%parse_accept
+{
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+}
+
+%syntax_error
+{
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_config_file_error();
+}
+
+%stack_overflow
+{
+ $this->internalError = true;
+ $this->compiler->trigger_config_file_error('Stack overflow in configfile parser');
+}
+
+// Complete config file
+start(res) ::= global_vars sections. {
+ res = null;
+}
+
+// Global vars
+global_vars(res) ::= var_list(vl). {
+ $this->add_global_vars(vl);
+ res = null;
+}
+
+// Sections
+sections(res) ::= sections section. {
+ res = null;
+}
+
+sections(res) ::= . {
+ res = null;
+}
+
+section(res) ::= OPENB SECTION(i) CLOSEB newline var_list(vars). {
+ $this->add_section_vars(i, vars);
+ res = null;
+}
+
+section(res) ::= OPENB DOT SECTION(i) CLOSEB newline var_list(vars). {
+ if ($this->configReadHidden) {
+ $this->add_section_vars(i, vars);
+ }
+ res = null;
+}
+
+// Var list
+var_list(res) ::= var_list(vl) newline. {
+ res = vl;
+}
+
+var_list(res) ::= var_list(vl) var(v). {
+ res = array_merge(vl, array(v));
+}
+
+var_list(res) ::= . {
+ res = array();
+}
+
+
+// Var
+var(res) ::= ID(id) EQUAL value(v). {
+ res = array('key' => id, 'value' => v);
+}
+
+
+value(res) ::= FLOAT(i). {
+ res = (float) i;
+}
+
+value(res) ::= INT(i). {
+ res = (int) i;
+}
+
+value(res) ::= BOOL(i). {
+ res = $this->parse_bool(i);
+}
+
+value(res) ::= SINGLE_QUOTED_STRING(i). {
+ res = self::parse_single_quoted_string(i);
+}
+
+value(res) ::= DOUBLE_QUOTED_STRING(i). {
+ res = self::parse_double_quoted_string(i);
+}
+
+value(res) ::= TRIPPLE_QUOTES(i) TRIPPLE_TEXT(c) TRIPPLE_QUOTES_END(ii). {
+ res = self::parse_tripple_double_quoted_string(c);
+}
+
+value(res) ::= TRIPPLE_QUOTES(i) TRIPPLE_QUOTES_END(ii). {
+ res = '';
+}
+
+value(res) ::= NAKED_STRING(i). {
+ res = i;
+}
+
+// NOTE: this is not a valid rule
+// It is added hier to produce a usefull error message on a missing '=';
+value(res) ::= OTHER(i). {
+ res = i;
+}
+
+
+// Newline and comments
+newline(res) ::= NEWLINE. {
+ res = null;
+}
+
+newline(res) ::= COMMENTSTART NEWLINE. {
+ res = null;
+}
+
+newline(res) ::= COMMENTSTART NAKED_STRING NEWLINE. {
+ res = null;
+}
diff --git a/vendor/smarty/smarty/src/Parser/TemplateParser.php b/vendor/smarty/smarty/src/Parser/TemplateParser.php
new file mode 100644
index 000000000..1a9ea97db
--- /dev/null
+++ b/vendor/smarty/smarty/src/Parser/TemplateParser.php
@@ -0,0 +1,3171 @@
+<?php
+
+// line 11 "src/Parser/TemplateParser.y"
+
+
+namespace Smarty\Parser;
+
+use \Smarty\Lexer\TemplateLexer as Lexer;
+use \Smarty\ParseTree\Template as TemplateParseTree;
+use \Smarty\Compiler\Template as TemplateCompiler;
+use \Smarty\ParseTree\Code;
+use \Smarty\ParseTree\Dq;
+use \Smarty\ParseTree\DqContent;
+use \Smarty\ParseTree\Tag;
+use \Smarty\CompilerException;
+
+/**
+* Smarty Template Parser Class
+*
+* This is the template parser.
+* It is generated from the TemplateParser.y file
+*
+* @author Uwe Tews <uwe.tews@googlemail.com>
+*/
+class TemplateParser
+{
+// line 35 "src/Parser/TemplateParser.y"
+
+ const ERR1 = 'Security error: Call to private object member not allowed';
+ const ERR2 = 'Security error: Call to dynamic object member not allowed';
+
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+
+ /**
+ * @var
+ */
+ public $yymajor;
+
+ /**
+ * last index of array variable
+ *
+ * @var mixed
+ */
+ public $last_index;
+
+ /**
+ * last variable name
+ *
+ * @var string
+ */
+ public $last_variable;
+
+ /**
+ * root parse tree buffer
+ *
+ * @var TemplateParseTree
+ */
+ public $root_buffer;
+
+ /**
+ * current parse tree object
+ *
+ * @var \Smarty\ParseTree\Base
+ */
+ public $current_buffer;
+
+ /**
+ * lexer object
+ *
+ * @var Lexer
+ */
+ public $lex;
+
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+
+ /**
+ * {strip} status
+ *
+ * @var bool
+ */
+ public $strip = false;
+ /**
+ * compiler object
+ *
+ * @var TemplateCompiler
+ */
+ public $compiler = null;
+
+ /**
+ * smarty object
+ *
+ * @var \Smarty\Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * template object
+ *
+ * @var \Smarty\Template
+ */
+ public $template = null;
+
+ /**
+ * block nesting level
+ *
+ * @var int
+ */
+ public $block_nesting_level = 0;
+
+ /**
+ * security object
+ *
+ * @var \Smarty\Security
+ */
+ public $security = null;
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty\ParseTree\Base[]
+ */
+ public $template_prefix = array();
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty\ParseTree\Base[]
+ */
+ public $template_postfix = array();
+
+ /**
+ * constructor
+ *
+ * @param Lexer $lex
+ * @param TemplateCompiler $compiler
+ */
+ public function __construct(Lexer $lex, TemplateCompiler $compiler)
+ {
+ $this->lex = $lex;
+ $this->compiler = $compiler;
+ $this->template = $this->compiler->getTemplate();
+ $this->smarty = $this->template->getSmarty();
+ $this->security = $this->smarty->security_policy ?? false;
+ $this->current_buffer = $this->root_buffer = new TemplateParseTree();
+ }
+
+ /**
+ * insert PHP code in current buffer
+ *
+ * @param string $code
+ */
+ public function insertPhpCode($code)
+ {
+ $this->current_buffer->append_subtree($this, new Tag($this, $code));
+ }
+
+ /**
+ * error rundown
+ *
+ */
+ public function errorRunDown()
+ {
+ while ($this->yystack !== array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ /**
+ * merge PHP code with prefix code and return parse tree tag object
+ *
+ * @param string $code
+ *
+ * @return Tag
+ */
+ private function mergePrefixCode($code)
+ {
+ $tmp = '';
+ foreach ($this->compiler->prefix_code as $preCode) {
+ $tmp .= $preCode;
+ }
+ $this->compiler->prefix_code = array();
+ $tmp .= $code;
+ return new Tag($this, $this->compiler->processNocacheCode($tmp));
+ }
+
+
+ const TP_VERT = 1;
+ const TP_COLON = 2;
+ const TP_TEXT = 3;
+ const TP_STRIPON = 4;
+ const TP_STRIPOFF = 5;
+ const TP_LITERALSTART = 6;
+ const TP_LITERALEND = 7;
+ const TP_LITERAL = 8;
+ const TP_SIMPELOUTPUT = 9;
+ const TP_SIMPLETAG = 10;
+ const TP_SMARTYBLOCKCHILDPARENT = 11;
+ const TP_LDEL = 12;
+ const TP_RDEL = 13;
+ const TP_DOLLARID = 14;
+ const TP_EQUAL = 15;
+ const TP_ID = 16;
+ const TP_PTR = 17;
+ const TP_LDELIF = 18;
+ const TP_LDELFOR = 19;
+ const TP_SEMICOLON = 20;
+ const TP_INCDEC = 21;
+ const TP_TO = 22;
+ const TP_STEP = 23;
+ const TP_LDELFOREACH = 24;
+ const TP_SPACE = 25;
+ const TP_AS = 26;
+ const TP_APTR = 27;
+ const TP_LDELSETFILTER = 28;
+ const TP_CLOSETAG = 29;
+ const TP_LDELSLASH = 30;
+ const TP_ATTR = 31;
+ const TP_INTEGER = 32;
+ const TP_COMMA = 33;
+ const TP_OPENP = 34;
+ const TP_CLOSEP = 35;
+ const TP_MATH = 36;
+ const TP_UNIMATH = 37;
+ const TP_ISIN = 38;
+ const TP_QMARK = 39;
+ const TP_NOT = 40;
+ const TP_TYPECAST = 41;
+ const TP_HEX = 42;
+ const TP_DOT = 43;
+ const TP_INSTANCEOF = 44;
+ const TP_SINGLEQUOTESTRING = 45;
+ const TP_DOUBLECOLON = 46;
+ const TP_NAMESPACE = 47;
+ const TP_AT = 48;
+ const TP_HATCH = 49;
+ const TP_OPENB = 50;
+ const TP_CLOSEB = 51;
+ const TP_DOLLAR = 52;
+ const TP_LOGOP = 53;
+ const TP_SLOGOP = 54;
+ const TP_TLOGOP = 55;
+ const TP_SINGLECOND = 56;
+ const TP_ARRAYOPEN = 57;
+ const TP_QUOTE = 58;
+ const TP_BACKTICK = 59;
+ const YY_NO_ACTION = 541;
+ const YY_ACCEPT_ACTION = 540;
+ const YY_ERROR_ACTION = 539;
+
+ const YY_SZ_ACTTAB = 2565;
+public static $yy_action = array(
+ 33, 106, 269, 306, 179, 305, 200, 247, 248, 249,
+ 1, 264, 138, 237, 202, 361, 6, 87, 284, 222,
+ 338, 361, 112, 107, 400, 321, 217, 261, 218, 130,
+ 224, 400, 21, 400, 49, 44, 400, 32, 45, 46,
+ 278, 226, 400, 282, 400, 203, 400, 53, 4, 139,
+ 302, 231, 28, 102, 225, 5, 54, 247, 248, 249,
+ 1, 20, 135, 192, 193, 271, 6, 87, 246, 222,
+ 216, 29, 112, 229, 7, 159, 217, 261, 218, 140,
+ 208, 272, 21, 509, 53, 44, 13, 302, 45, 46,
+ 278, 226, 149, 235, 153, 203, 257, 53, 4, 328,
+ 302, 302, 256, 304, 143, 5, 54, 247, 248, 249,
+ 1, 302, 100, 394, 86, 236, 6, 87, 3, 222,
+ 102, 257, 112, 144, 97, 394, 217, 261, 218, 102,
+ 224, 394, 21, 256, 446, 44, 178, 305, 45, 46,
+ 278, 226, 302, 282, 200, 203, 446, 53, 4, 115,
+ 302, 47, 22, 285, 41, 5, 54, 247, 248, 249,
+ 1, 139, 137, 267, 202, 141, 6, 87, 14, 222,
+ 540, 99, 112, 151, 15, 446, 217, 261, 218, 314,
+ 224, 216, 21, 256, 233, 44, 9, 446, 45, 46,
+ 278, 226, 325, 282, 268, 203, 53, 53, 4, 302,
+ 302, 152, 257, 361, 320, 5, 54, 247, 248, 249,
+ 1, 264, 137, 102, 194, 361, 6, 87, 37, 222,
+ 102, 361, 112, 257, 89, 316, 217, 261, 218, 314,
+ 224, 216, 21, 36, 49, 44, 200, 40, 45, 46,
+ 278, 226, 115, 282, 237, 203, 14, 53, 4, 115,
+ 302, 238, 15, 155, 107, 5, 54, 247, 248, 249,
+ 1, 466, 136, 256, 202, 200, 6, 87, 466, 222,
+ 255, 171, 112, 264, 446, 310, 217, 261, 218, 158,
+ 224, 257, 11, 142, 157, 44, 446, 183, 45, 46,
+ 278, 226, 26, 282, 256, 203, 49, 53, 4, 446,
+ 302, 184, 260, 323, 176, 5, 54, 247, 248, 249,
+ 1, 446, 137, 264, 189, 291, 6, 87, 183, 222,
+ 200, 302, 112, 253, 178, 305, 217, 261, 218, 263,
+ 213, 18, 21, 200, 184, 44, 49, 15, 45, 46,
+ 278, 226, 146, 282, 269, 203, 25, 53, 4, 220,
+ 302, 312, 107, 152, 290, 5, 54, 247, 248, 249,
+ 1, 219, 137, 147, 187, 130, 6, 87, 259, 222,
+ 16, 19, 112, 256, 167, 258, 217, 261, 218, 111,
+ 224, 173, 21, 96, 256, 44, 200, 23, 45, 46,
+ 278, 226, 177, 282, 227, 203, 335, 53, 4, 174,
+ 302, 180, 305, 170, 90, 5, 54, 247, 248, 249,
+ 1, 184, 137, 256, 202, 91, 6, 87, 482, 222,
+ 160, 482, 112, 214, 197, 482, 217, 261, 218, 184,
+ 188, 181, 21, 245, 302, 44, 164, 140, 45, 46,
+ 278, 226, 466, 282, 13, 203, 166, 53, 4, 466,
+ 302, 42, 43, 286, 12, 5, 54, 247, 248, 249,
+ 1, 264, 139, 447, 202, 40, 6, 87, 293, 294,
+ 295, 296, 112, 17, 311, 447, 217, 261, 218, 337,
+ 224, 183, 21, 260, 49, 48, 244, 245, 45, 46,
+ 278, 226, 24, 282, 303, 203, 8, 53, 4, 92,
+ 302, 42, 43, 286, 12, 5, 54, 247, 248, 249,
+ 1, 10, 139, 9, 202, 317, 6, 87, 293, 294,
+ 295, 296, 112, 116, 299, 35, 217, 261, 218, 225,
+ 224, 198, 21, 98, 34, 44, 329, 324, 45, 46,
+ 278, 226, 448, 282, 448, 203, 161, 53, 4, 172,
+ 302, 129, 175, 225, 232, 5, 54, 288, 215, 216,
+ 252, 101, 93, 109, 243, 191, 103, 85, 450, 162,
+ 450, 24, 101, 330, 182, 273, 274, 300, 298, 301,
+ 250, 251, 281, 204, 283, 113, 289, 262, 300, 298,
+ 301, 121, 288, 215, 216, 252, 270, 93, 109, 275,
+ 190, 103, 60, 277, 279, 225, 237, 101, 280, 297,
+ 273, 274, 129, 239, 199, 266, 107, 281, 204, 283,
+ 7, 289, 101, 300, 298, 301, 288, 88, 216, 254,
+ 163, 114, 109, 265, 191, 103, 85, 200, 300, 298,
+ 301, 101, 200, 259, 273, 274, 19, 165, 326, 362,
+ 258, 281, 204, 283, 396, 289, 234, 300, 298, 301,
+ 288, 362, 216, 327, 200, 114, 396, 362, 201, 119,
+ 72, 336, 396, 37, 259, 101, 393, 19, 273, 274,
+ 154, 258, 228, 339, 94, 281, 204, 283, 393, 289,
+ 256, 300, 298, 301, 393, 38, 313, 288, 313, 216,
+ 313, 313, 114, 207, 319, 201, 119, 72, 313, 313,
+ 313, 313, 101, 221, 184, 273, 274, 156, 313, 313,
+ 313, 95, 281, 204, 283, 313, 289, 256, 300, 298,
+ 301, 313, 313, 313, 288, 313, 216, 313, 313, 108,
+ 206, 319, 201, 122, 51, 313, 120, 313, 313, 101,
+ 313, 184, 273, 274, 313, 313, 313, 313, 313, 281,
+ 204, 283, 313, 289, 313, 300, 298, 301, 288, 313,
+ 216, 313, 313, 114, 313, 313, 201, 122, 67, 313,
+ 313, 313, 313, 101, 313, 313, 273, 274, 313, 313,
+ 313, 313, 313, 281, 204, 283, 313, 289, 313, 300,
+ 298, 301, 288, 313, 216, 313, 313, 114, 212, 313,
+ 201, 122, 67, 313, 313, 313, 313, 101, 313, 313,
+ 273, 274, 313, 313, 313, 313, 313, 281, 204, 283,
+ 313, 289, 313, 300, 298, 301, 288, 313, 216, 313,
+ 313, 114, 205, 313, 201, 119, 72, 313, 313, 313,
+ 313, 101, 313, 313, 273, 274, 313, 313, 313, 313,
+ 313, 281, 204, 283, 313, 289, 313, 300, 298, 301,
+ 313, 313, 313, 288, 313, 216, 313, 313, 114, 313,
+ 318, 201, 122, 78, 313, 313, 313, 313, 101, 313,
+ 482, 273, 274, 482, 313, 313, 313, 482, 281, 204,
+ 283, 313, 289, 209, 211, 298, 301, 288, 313, 216,
+ 313, 313, 108, 313, 313, 201, 122, 58, 313, 238,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 482,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 118, 64, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 196, 117, 59, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 104, 84,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 300, 298, 301, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 105, 83, 313, 313, 313, 313, 101, 313,
+ 313, 273, 274, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 122, 55, 313, 313,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 122, 66, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 201, 104, 56, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 122, 65,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 300, 298, 301, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 122, 57, 313, 313, 313, 313, 101, 313,
+ 313, 273, 274, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 122, 58, 313, 313,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 122, 68, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 201, 122, 69, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 122, 70,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 300, 298, 301, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 122, 71, 313, 313, 313, 313, 101, 313,
+ 313, 273, 274, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 122, 73, 313, 313,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 195,
+ 122, 61, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 201, 122, 62, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 122, 63,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 300, 298, 301, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 122, 74, 313, 313, 313, 313, 101, 313,
+ 313, 273, 274, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 122, 75, 313, 313,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 122, 76, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 201, 122, 77, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 122, 79,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 210, 298, 301, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 122, 80, 313, 313, 313, 313, 101, 313,
+ 313, 273, 274, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 122, 81, 313, 313,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 122, 82, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 201, 122, 50, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 122, 52,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 300, 298, 301, 288, 313, 216, 168, 313, 114, 313,
+ 313, 201, 134, 313, 313, 313, 256, 313, 101, 47,
+ 22, 285, 41, 313, 313, 313, 313, 333, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 145, 313, 114, 313, 313, 201, 128, 313, 313, 313,
+ 256, 313, 101, 47, 22, 285, 41, 313, 313, 313,
+ 313, 287, 281, 204, 283, 315, 289, 313, 300, 298,
+ 301, 247, 248, 249, 2, 313, 313, 313, 313, 313,
+ 6, 87, 259, 313, 313, 19, 112, 313, 14, 258,
+ 217, 261, 218, 313, 15, 39, 313, 14, 14, 42,
+ 43, 286, 12, 15, 15, 313, 313, 313, 42, 43,
+ 286, 12, 313, 313, 313, 313, 293, 294, 295, 296,
+ 308, 27, 313, 313, 315, 293, 294, 295, 296, 313,
+ 247, 248, 249, 2, 313, 313, 313, 110, 313, 6,
+ 87, 313, 313, 313, 313, 112, 313, 313, 148, 217,
+ 261, 218, 313, 42, 43, 286, 12, 313, 42, 43,
+ 286, 12, 313, 313, 313, 313, 313, 313, 313, 313,
+ 293, 294, 295, 296, 313, 293, 294, 295, 296, 309,
+ 27, 313, 313, 240, 241, 242, 133, 223, 313, 247,
+ 248, 249, 1, 313, 482, 313, 313, 482, 6, 87,
+ 3, 482, 466, 313, 112, 313, 276, 313, 217, 261,
+ 218, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 132, 313, 313, 313, 313, 313, 101, 313, 466, 313,
+ 313, 466, 313, 482, 313, 466, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 313, 288, 313, 216, 313,
+ 200, 114, 313, 313, 201, 123, 313, 313, 313, 313,
+ 313, 101, 365, 313, 313, 313, 230, 313, 313, 313,
+ 313, 281, 204, 283, 14, 289, 313, 300, 298, 301,
+ 15, 313, 288, 446, 216, 313, 169, 114, 313, 313,
+ 201, 124, 313, 313, 313, 446, 256, 101, 313, 47,
+ 22, 285, 41, 313, 313, 313, 313, 281, 204, 283,
+ 313, 289, 313, 300, 298, 301, 313, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 125, 313, 313, 313,
+ 313, 313, 101, 313, 313, 313, 313, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 313, 313, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 126, 313, 313, 313, 313, 313, 101, 313,
+ 313, 313, 313, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 313, 288, 313,
+ 216, 313, 313, 114, 313, 313, 201, 127, 313, 313,
+ 313, 313, 313, 101, 313, 313, 313, 313, 313, 313,
+ 313, 313, 313, 281, 204, 283, 313, 289, 313, 300,
+ 298, 301, 313, 313, 288, 313, 216, 223, 313, 114,
+ 313, 313, 201, 131, 482, 313, 313, 482, 313, 101,
+ 313, 482, 466, 313, 313, 313, 276, 313, 313, 281,
+ 204, 283, 313, 289, 313, 300, 298, 301, 313, 313,
+ 409, 313, 313, 313, 313, 313, 313, 313, 466, 313,
+ 313, 466, 313, 482, 223, 466, 292, 313, 313, 313,
+ 313, 482, 313, 313, 482, 313, 313, 36, 482, 466,
+ 313, 223, 446, 276, 409, 409, 409, 409, 482, 313,
+ 313, 482, 313, 313, 446, 482, 466, 313, 313, 30,
+ 276, 409, 409, 409, 409, 466, 482, 313, 466, 482,
+ 482, 313, 466, 482, 466, 313, 313, 313, 276, 313,
+ 313, 313, 466, 313, 313, 466, 332, 482, 313, 466,
+ 313, 313, 313, 313, 313, 331, 42, 43, 286, 12,
+ 466, 313, 313, 466, 313, 482, 313, 466, 313, 42,
+ 43, 286, 12, 293, 294, 295, 296, 307, 313, 42,
+ 43, 286, 12, 185, 313, 313, 293, 294, 295, 296,
+ 186, 313, 313, 313, 322, 313, 293, 294, 295, 296,
+ 42, 43, 286, 12, 31, 313, 42, 43, 286, 12,
+ 313, 334, 313, 42, 43, 286, 12, 293, 294, 295,
+ 296, 313, 313, 293, 294, 295, 296, 313, 313, 313,
+ 293, 294, 295, 296, 42, 43, 286, 12, 42, 43,
+ 286, 12, 482, 313, 313, 482, 313, 313, 313, 482,
+ 466, 293, 294, 295, 296, 293, 294, 295, 296, 313,
+ 313, 313, 259, 313, 313, 19, 313, 313, 313, 258,
+ 313, 313, 313, 313, 313, 313, 466, 313, 14, 466,
+ 150, 482, 313, 466, 15,
+ );
+ public static $yy_lookahead = array(
+ 2, 80, 100, 13, 102, 103, 1, 9, 10, 11,
+ 12, 21, 14, 70, 16, 25, 18, 19, 93, 21,
+ 77, 31, 24, 80, 13, 104, 28, 29, 30, 104,
+ 32, 20, 34, 22, 44, 37, 25, 39, 40, 41,
+ 42, 43, 31, 45, 33, 47, 35, 49, 50, 14,
+ 52, 16, 12, 17, 43, 57, 58, 9, 10, 11,
+ 12, 12, 14, 14, 16, 16, 18, 19, 65, 21,
+ 67, 12, 24, 14, 34, 16, 28, 29, 30, 43,
+ 32, 32, 34, 1, 49, 37, 50, 52, 40, 41,
+ 42, 43, 72, 45, 99, 47, 101, 49, 50, 51,
+ 52, 52, 82, 69, 14, 57, 58, 9, 10, 11,
+ 12, 52, 14, 13, 16, 15, 18, 19, 15, 21,
+ 17, 101, 24, 72, 34, 25, 28, 29, 30, 17,
+ 32, 31, 34, 82, 34, 37, 102, 103, 40, 41,
+ 42, 43, 52, 45, 1, 47, 46, 49, 50, 46,
+ 52, 85, 86, 87, 88, 57, 58, 9, 10, 11,
+ 12, 14, 14, 16, 16, 80, 18, 19, 25, 21,
+ 61, 62, 24, 72, 31, 34, 28, 29, 30, 65,
+ 32, 67, 34, 82, 43, 37, 33, 46, 40, 41,
+ 42, 43, 51, 45, 47, 47, 49, 49, 50, 52,
+ 52, 99, 101, 13, 51, 57, 58, 9, 10, 11,
+ 12, 21, 14, 17, 16, 25, 18, 19, 15, 21,
+ 17, 31, 24, 101, 110, 111, 28, 29, 30, 65,
+ 32, 67, 34, 15, 44, 37, 1, 2, 40, 41,
+ 42, 43, 46, 45, 70, 47, 25, 49, 50, 46,
+ 52, 77, 31, 72, 80, 57, 58, 9, 10, 11,
+ 12, 43, 14, 82, 16, 1, 18, 19, 50, 21,
+ 82, 76, 24, 21, 34, 111, 28, 29, 30, 99,
+ 32, 101, 34, 14, 72, 37, 46, 106, 40, 41,
+ 42, 43, 27, 45, 82, 47, 44, 49, 50, 34,
+ 52, 106, 107, 51, 76, 57, 58, 9, 10, 11,
+ 12, 46, 14, 21, 16, 51, 18, 19, 106, 21,
+ 1, 52, 24, 69, 102, 103, 28, 29, 30, 16,
+ 32, 25, 34, 1, 106, 37, 44, 31, 40, 41,
+ 42, 43, 70, 45, 100, 47, 27, 49, 50, 17,
+ 52, 59, 80, 99, 93, 57, 58, 9, 10, 11,
+ 12, 48, 14, 72, 16, 104, 18, 19, 9, 21,
+ 20, 12, 24, 82, 72, 16, 28, 29, 30, 79,
+ 32, 76, 34, 33, 82, 37, 1, 2, 40, 41,
+ 42, 43, 14, 45, 16, 47, 14, 49, 50, 76,
+ 52, 102, 103, 72, 80, 57, 58, 9, 10, 11,
+ 12, 106, 14, 82, 16, 80, 18, 19, 9, 21,
+ 99, 12, 24, 63, 64, 16, 28, 29, 30, 106,
+ 32, 6, 34, 8, 52, 37, 99, 43, 40, 41,
+ 42, 43, 43, 45, 50, 47, 99, 49, 50, 50,
+ 52, 36, 37, 38, 39, 57, 58, 9, 10, 11,
+ 12, 21, 14, 34, 16, 2, 18, 19, 53, 54,
+ 55, 56, 24, 15, 59, 46, 28, 29, 30, 21,
+ 32, 106, 34, 107, 44, 37, 7, 8, 40, 41,
+ 42, 43, 33, 45, 35, 47, 34, 49, 50, 99,
+ 52, 36, 37, 38, 39, 57, 58, 9, 10, 11,
+ 12, 34, 14, 33, 16, 35, 18, 19, 53, 54,
+ 55, 56, 24, 46, 103, 15, 28, 29, 30, 43,
+ 32, 64, 34, 81, 33, 37, 35, 51, 40, 41,
+ 42, 43, 33, 45, 35, 47, 99, 49, 50, 81,
+ 52, 70, 81, 43, 73, 57, 58, 65, 66, 67,
+ 68, 80, 70, 71, 7, 73, 74, 75, 33, 99,
+ 35, 33, 80, 35, 16, 83, 84, 96, 97, 98,
+ 13, 13, 90, 91, 92, 16, 94, 16, 96, 97,
+ 98, 16, 65, 66, 67, 68, 16, 70, 71, 14,
+ 73, 74, 75, 16, 32, 43, 70, 80, 32, 16,
+ 83, 84, 70, 77, 78, 73, 80, 90, 91, 92,
+ 34, 94, 80, 96, 97, 98, 65, 16, 67, 68,
+ 49, 70, 71, 91, 73, 74, 75, 1, 96, 97,
+ 98, 80, 1, 9, 83, 84, 12, 49, 51, 13,
+ 16, 90, 91, 92, 13, 94, 16, 96, 97, 98,
+ 65, 25, 67, 51, 1, 70, 25, 31, 73, 74,
+ 75, 16, 31, 15, 9, 80, 13, 12, 83, 84,
+ 72, 16, 48, 35, 76, 90, 91, 92, 25, 94,
+ 82, 96, 97, 98, 31, 22, 112, 65, 112, 67,
+ 112, 112, 70, 108, 109, 73, 74, 75, 112, 112,
+ 112, 112, 80, 48, 106, 83, 84, 72, 112, 112,
+ 112, 76, 90, 91, 92, 112, 94, 82, 96, 97,
+ 98, 112, 112, 112, 65, 112, 67, 112, 112, 70,
+ 108, 109, 73, 74, 75, 112, 77, 112, 112, 80,
+ 112, 106, 83, 84, 112, 112, 112, 112, 112, 90,
+ 91, 92, 112, 94, 112, 96, 97, 98, 65, 112,
+ 67, 112, 112, 70, 112, 112, 73, 74, 75, 112,
+ 112, 112, 112, 80, 112, 112, 83, 84, 112, 112,
+ 112, 112, 112, 90, 91, 92, 112, 94, 112, 96,
+ 97, 98, 65, 112, 67, 112, 112, 70, 105, 112,
+ 73, 74, 75, 112, 112, 112, 112, 80, 112, 112,
+ 83, 84, 112, 112, 112, 112, 112, 90, 91, 92,
+ 112, 94, 112, 96, 97, 98, 65, 112, 67, 112,
+ 112, 70, 105, 112, 73, 74, 75, 112, 112, 112,
+ 112, 80, 112, 112, 83, 84, 112, 112, 112, 112,
+ 112, 90, 91, 92, 112, 94, 112, 96, 97, 98,
+ 112, 112, 112, 65, 112, 67, 112, 112, 70, 112,
+ 109, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 9, 83, 84, 12, 112, 112, 112, 16, 90, 91,
+ 92, 112, 94, 95, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 77,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 48,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 112, 83, 84, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 112,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 112, 83, 84, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 112,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 112, 83, 84, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 112,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 112, 83, 84, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 112,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 112, 83, 84, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 112,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 72, 112, 70, 112,
+ 112, 73, 74, 112, 112, 112, 82, 112, 80, 85,
+ 86, 87, 88, 112, 112, 112, 112, 89, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 72, 112, 70, 112, 112, 73, 74, 112, 112, 112,
+ 82, 112, 80, 85, 86, 87, 88, 112, 112, 112,
+ 112, 89, 90, 91, 92, 3, 94, 112, 96, 97,
+ 98, 9, 10, 11, 12, 112, 14, 112, 112, 112,
+ 18, 19, 9, 112, 112, 12, 24, 112, 25, 16,
+ 28, 29, 30, 112, 31, 23, 112, 25, 25, 36,
+ 37, 38, 39, 31, 31, 112, 112, 112, 36, 37,
+ 38, 39, 112, 112, 112, 112, 53, 54, 55, 56,
+ 58, 59, 112, 112, 3, 53, 54, 55, 56, 112,
+ 9, 10, 11, 12, 112, 14, 112, 20, 112, 18,
+ 19, 112, 112, 112, 112, 24, 112, 112, 26, 28,
+ 29, 30, 112, 36, 37, 38, 39, 112, 36, 37,
+ 38, 39, 112, 112, 112, 112, 112, 112, 112, 112,
+ 53, 54, 55, 56, 112, 53, 54, 55, 56, 58,
+ 59, 112, 112, 3, 4, 5, 6, 2, 112, 9,
+ 10, 11, 12, 112, 9, 112, 112, 12, 18, 19,
+ 15, 16, 17, 112, 24, 112, 21, 112, 28, 29,
+ 30, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 112, 112, 112, 112, 112, 80, 112, 43, 112,
+ 112, 46, 112, 48, 112, 50, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 112, 65, 112, 67, 112,
+ 1, 70, 112, 112, 73, 74, 112, 112, 112, 112,
+ 112, 80, 13, 112, 112, 112, 17, 112, 112, 112,
+ 112, 90, 91, 92, 25, 94, 112, 96, 97, 98,
+ 31, 112, 65, 34, 67, 112, 72, 70, 112, 112,
+ 73, 74, 112, 112, 112, 46, 82, 80, 112, 85,
+ 86, 87, 88, 112, 112, 112, 112, 90, 91, 92,
+ 112, 94, 112, 96, 97, 98, 112, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 112, 112, 112,
+ 112, 112, 80, 112, 112, 112, 112, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 112, 112, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 112, 112, 112, 112, 112, 80, 112,
+ 112, 112, 112, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 112, 65, 112,
+ 67, 112, 112, 70, 112, 112, 73, 74, 112, 112,
+ 112, 112, 112, 80, 112, 112, 112, 112, 112, 112,
+ 112, 112, 112, 90, 91, 92, 112, 94, 112, 96,
+ 97, 98, 112, 112, 65, 112, 67, 2, 112, 70,
+ 112, 112, 73, 74, 9, 112, 112, 12, 112, 80,
+ 112, 16, 17, 112, 112, 112, 21, 112, 112, 90,
+ 91, 92, 112, 94, 112, 96, 97, 98, 112, 112,
+ 2, 112, 112, 112, 112, 112, 112, 112, 43, 112,
+ 112, 46, 112, 48, 2, 50, 51, 112, 112, 112,
+ 112, 9, 112, 112, 12, 112, 112, 15, 16, 17,
+ 112, 2, 34, 21, 36, 37, 38, 39, 9, 112,
+ 112, 12, 112, 112, 46, 16, 17, 112, 112, 2,
+ 21, 53, 54, 55, 56, 43, 9, 112, 46, 12,
+ 48, 112, 50, 16, 17, 112, 112, 112, 21, 112,
+ 112, 112, 43, 112, 112, 46, 13, 48, 112, 50,
+ 112, 112, 112, 112, 112, 35, 36, 37, 38, 39,
+ 43, 112, 112, 46, 112, 48, 112, 50, 112, 36,
+ 37, 38, 39, 53, 54, 55, 56, 13, 112, 36,
+ 37, 38, 39, 13, 112, 112, 53, 54, 55, 56,
+ 13, 112, 112, 112, 51, 112, 53, 54, 55, 56,
+ 36, 37, 38, 39, 2, 112, 36, 37, 38, 39,
+ 112, 13, 112, 36, 37, 38, 39, 53, 54, 55,
+ 56, 112, 112, 53, 54, 55, 56, 112, 112, 112,
+ 53, 54, 55, 56, 36, 37, 38, 39, 36, 37,
+ 38, 39, 9, 112, 112, 12, 112, 112, 112, 16,
+ 17, 53, 54, 55, 56, 53, 54, 55, 56, 112,
+ 112, 112, 9, 112, 112, 12, 112, 112, 112, 16,
+ 112, 112, 112, 112, 112, 112, 43, 112, 25, 46,
+ 27, 48, 112, 50, 31,
+);
+ const YY_SHIFT_USE_DFLT = -11;
+ const YY_SHIFT_MAX = 239;
+ public static $yy_shift_ofst = array(
+ -11, 98, 98, 148, 198, 198, 248, 148, 148, 198,
+ 148, 248, -2, 48, 298, 148, 148, 148, 298, 148,
+ 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
+ 348, 148, 148, 148, 148, 148, 398, 148, 148, 148,
+ 448, 498, 498, 498, 498, 498, 498, 498, 498, 147,
+ 1962, 1953, 1953, 35, 1952, 2007, 2012, 2413, 2400, 2423,
+ 2444, 415, 2450, 2457, 2482, 2478, 465, 465, 465, 465,
+ 465, 465, 465, 465, 465, 465, 465, 465, 465, 465,
+ 465, 465, 465, 465, 465, 465, 2139, 90, 143, 2011,
+ 2533, 1963, 36, 103, 143, 143, 90, 90, 235, 2070,
+ 2075, 634, 59, 636, 641, 663, 359, 359, 203, 221,
+ 269, 221, 306, 332, 196, 378, 378, 264, 385, 319,
+ 221, 5, 5, 5, 5, 5, 5, 5, 5, 112,
+ 112, 82, 5, -11, -11, 2315, 2362, 2379, 2397, 2513,
+ 49, 665, 409, 218, 221, 221, 458, 221, 382, 221,
+ 382, 221, 394, 394, 221, 221, 221, 221, 394, 40,
+ 394, 394, 394, 399, 394, 399, 394, 221, 221, 221,
+ 221, 5, 463, 5, 5, 463, 5, 462, 112, 112,
+ 112, -11, -11, -11, -11, -11, -11, 2348, 11, 100,
+ -10, 190, 881, 141, 265, 292, 252, 425, 479, 350,
+ 313, 440, 240, 429, 477, 459, 480, 153, 486, 501,
+ 509, 535, 538, 510, 557, 567, 568, 558, 569, 571,
+ 575, 580, 585, 587, 562, 572, 576, 586, 593, 462,
+ 611, 581, 598, 640, 597, 612, 655, 658, 648, 673,
+);
+ const YY_REDUCE_USE_DFLT = -99;
+ const YY_REDUCE_MAX = 186;
+ public static $yy_reduce_ofst = array(
+ 109, 492, 527, 561, 595, 632, 669, 703, 737, 771,
+ 808, 842, 876, 910, 944, 978, 1012, 1046, 1080, 1114,
+ 1148, 1182, 1216, 1250, 1284, 1318, 1352, 1386, 1420, 1454,
+ 1488, 1522, 1556, 1590, 1624, 1658, 1692, 1726, 1760, 1794,
+ 1828, 1862, 2036, 2071, 2107, 2142, 2178, 2213, 2249, 542,
+ 1824, 1858, 2104, 481, 114, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 608, 536, 645, 164,
+ 20, 101, -98, 34, 181, 212, -57, 174, 195, 3,
+ 254, -5, -79, 228, 228, 228, 180, -5, 222, 51,
+ 272, 291, 302, 305, 222, -75, 261, 228, 228, 228,
+ 331, 323, 228, 228, 228, 228, 228, 228, 228, 222,
+ 299, 228, 228, 360, 228, 102, 102, 102, 102, 102,
+ 85, 122, 102, 102, 188, 188, 300, 188, 324, 188,
+ 335, 188, 244, 244, 188, 188, 188, 188, 244, 321,
+ 244, 244, 244, 337, 244, 347, 244, 188, 188, 188,
+ 188, 375, 376, 375, 375, 376, 375, 400, 421, 421,
+ 421, 467, 452, 468, 471, 447, 470,
+);
+ public static $yyExpectedTokens = array(
+ array(),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(2, 9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 39, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 51, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(14, 16, 47, 49, 52, ),
+ array(23, 25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(14, 16, 49, 52, ),
+ array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 58, 59, ),
+ array(20, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(26, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(35, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 51, 53, 54, 55, 56, ),
+ array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, 59, ),
+ array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(2, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(1, 13, 17, 25, 31, 34, 46, ),
+ array(14, 34, 52, ),
+ array(1, 25, 31, ),
+ array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 58, 59, ),
+ array(9, 12, 16, 25, 27, 31, ),
+ array(9, 12, 16, 25, 31, ),
+ array(17, 43, 50, ),
+ array(15, 17, 46, ),
+ array(1, 25, 31, ),
+ array(1, 25, 31, ),
+ array(14, 34, 52, ),
+ array(14, 34, 52, ),
+ array(1, 2, ),
+ array(3, 4, 5, 6, 9, 10, 11, 12, 18, 19, 24, 28, 29, 30, ),
+ array(2, 9, 12, 15, 16, 17, 21, 43, 46, 48, 50, ),
+ array(9, 12, 16, 48, ),
+ array(12, 14, 16, 52, ),
+ array(1, 13, 25, 31, ),
+ array(1, 13, 25, 31, ),
+ array(1, 13, 25, 31, ),
+ array(9, 12, 16, ),
+ array(9, 12, 16, ),
+ array(15, 17, 46, ),
+ array(25, 31, ),
+ array(14, 52, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(1, 17, ),
+ array(17, 46, ),
+ array(14, 16, ),
+ array(14, 16, ),
+ array(1, 51, ),
+ array(1, 2, ),
+ array(1, 27, ),
+ array(25, 31, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(17, ),
+ array(17, ),
+ array(1, ),
+ array(1, ),
+ array(),
+ array(),
+ array(2, 9, 12, 16, 17, 21, 43, 46, 48, 50, 51, ),
+ array(2, 9, 12, 15, 16, 17, 21, 43, 46, 48, 50, ),
+ array(2, 9, 12, 16, 17, 21, 43, 46, 48, 50, ),
+ array(2, 9, 12, 16, 17, 21, 43, 46, 48, 50, ),
+ array(9, 12, 16, 17, 43, 46, 48, 50, ),
+ array(12, 14, 16, 32, 52, ),
+ array(9, 12, 16, 48, ),
+ array(9, 12, 16, ),
+ array(15, 43, 50, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(15, 21, ),
+ array(25, 31, ),
+ array(14, 52, ),
+ array(25, 31, ),
+ array(14, 52, ),
+ array(25, 31, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(43, 50, ),
+ array(12, 34, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(1, ),
+ array(2, ),
+ array(1, ),
+ array(1, ),
+ array(2, ),
+ array(1, ),
+ array(34, ),
+ array(17, ),
+ array(17, ),
+ array(17, ),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(2, 34, 36, 37, 38, 39, 46, 53, 54, 55, 56, ),
+ array(13, 20, 22, 25, 31, 33, 35, 43, ),
+ array(13, 15, 25, 31, 34, 46, ),
+ array(13, 21, 25, 31, 44, ),
+ array(13, 21, 25, 31, 44, ),
+ array(9, 12, 16, 48, ),
+ array(34, 43, 46, 51, ),
+ array(27, 34, 46, ),
+ array(21, 44, 59, ),
+ array(21, 44, 51, ),
+ array(6, 8, ),
+ array(7, 8, ),
+ array(20, 33, ),
+ array(16, 48, ),
+ array(21, 44, ),
+ array(34, 46, ),
+ array(34, 46, ),
+ array(34, 46, ),
+ array(33, 35, ),
+ array(33, 35, ),
+ array(33, 51, ),
+ array(43, 51, ),
+ array(33, 35, ),
+ array(33, 35, ),
+ array(33, 35, ),
+ array(33, 35, ),
+ array(15, 43, ),
+ array(7, ),
+ array(13, ),
+ array(13, ),
+ array(16, ),
+ array(16, ),
+ array(16, ),
+ array(16, ),
+ array(16, ),
+ array(14, ),
+ array(16, ),
+ array(43, ),
+ array(32, ),
+ array(32, ),
+ array(34, ),
+ array(16, ),
+ array(34, ),
+ array(16, ),
+ array(49, ),
+ array(49, ),
+ array(16, ),
+ array(51, ),
+ array(51, ),
+ array(16, ),
+ array(15, ),
+ array(35, ),
+ array(22, ),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+);
+ public static $yy_default = array(
+ 350, 539, 539, 539, 524, 524, 539, 501, 501, 539,
+ 452, 539, 539, 539, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 539, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 539, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 539, 539, 539, 539, 539, 539, 539,
+ 390, 369, 390, 539, 539, 539, 395, 539, 539, 539,
+ 363, 539, 539, 539, 539, 539, 374, 500, 413, 420,
+ 499, 525, 527, 526, 419, 421, 418, 422, 451, 449,
+ 397, 401, 402, 392, 395, 363, 433, 539, 390, 539,
+ 390, 390, 514, 454, 390, 390, 539, 539, 381, 340,
+ 453, 466, 539, 404, 404, 404, 466, 466, 454, 390,
+ 539, 390, 390, 384, 454, 539, 539, 404, 404, 404,
+ 371, 386, 404, 411, 424, 425, 426, 412, 417, 454,
+ 511, 424, 410, 348, 508, 453, 453, 453, 453, 453,
+ 539, 468, 466, 482, 360, 370, 539, 373, 539, 378,
+ 539, 379, 463, 464, 364, 366, 367, 368, 492, 466,
+ 491, 494, 493, 457, 458, 459, 460, 380, 376, 377,
+ 372, 382, 502, 385, 387, 503, 442, 466, 488, 515,
+ 512, 348, 507, 507, 507, 466, 466, 433, 429, 433,
+ 423, 423, 467, 433, 433, 423, 423, 346, 539, 539,
+ 539, 423, 433, 443, 539, 539, 539, 539, 429, 539,
+ 461, 461, 539, 429, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 539, 429, 431, 539, 513, 539, 482,
+ 539, 539, 539, 539, 539, 438, 539, 539, 539, 398,
+ 341, 342, 343, 344, 345, 347, 349, 351, 352, 353,
+ 354, 355, 356, 357, 359, 388, 389, 484, 485, 486,
+ 506, 383, 504, 505, 427, 436, 437, 446, 447, 465,
+ 469, 470, 471, 405, 406, 407, 408, 409, 428, 430,
+ 432, 434, 438, 439, 440, 414, 415, 416, 441, 444,
+ 445, 479, 477, 516, 517, 518, 519, 455, 456, 490,
+ 461, 462, 483, 498, 358, 489, 535, 536, 528, 529,
+ 530, 533, 532, 534, 537, 538, 531, 521, 523, 522,
+ 520, 495, 480, 478, 476, 473, 474, 475, 481, 496,
+ 497, 435, 472, 510, 487, 482, 391, 375, 399, 403,
+);
+ const YYNOCODE = 113;
+ const YYSTACKDEPTH = 500;
+ const YYNSTATE = 340;
+ const YYNRULE = 199;
+ const YYERRORSYMBOL = 60;
+ const YYERRSYMDT = 'yy0';
+ const YYFALLBACK = 0;
+ public static $yyFallback = array(
+ );
+ public function Trace($TraceFILE, $zTracePrompt)
+ {
+ if (!$TraceFILE) {
+ $zTracePrompt = 0;
+ } elseif (!$zTracePrompt) {
+ $TraceFILE = 0;
+ }
+ $this->yyTraceFILE = $TraceFILE;
+ $this->yyTracePrompt = $zTracePrompt;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
+
+ public $yyTraceFILE;
+ public $yyTracePrompt;
+ public $yyidx; /* Index of top element in stack */
+ public $yyerrcnt; /* Shifts left before out of the error */
+ public $yystack = array(); /* The parser's stack */
+
+ public $yyTokenName = array(
+ '$', 'VERT', 'COLON', 'TEXT',
+ 'STRIPON', 'STRIPOFF', 'LITERALSTART', 'LITERALEND',
+ 'LITERAL', 'SIMPELOUTPUT', 'SIMPLETAG', 'SMARTYBLOCKCHILDPARENT',
+ 'LDEL', 'RDEL', 'DOLLARID', 'EQUAL',
+ 'ID', 'PTR', 'LDELIF', 'LDELFOR',
+ 'SEMICOLON', 'INCDEC', 'TO', 'STEP',
+ 'LDELFOREACH', 'SPACE', 'AS', 'APTR',
+ 'LDELSETFILTER', 'CLOSETAG', 'LDELSLASH', 'ATTR',
+ 'INTEGER', 'COMMA', 'OPENP', 'CLOSEP',
+ 'MATH', 'UNIMATH', 'ISIN', 'QMARK',
+ 'NOT', 'TYPECAST', 'HEX', 'DOT',
+ 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE',
+ 'AT', 'HATCH', 'OPENB', 'CLOSEB',
+ 'DOLLAR', 'LOGOP', 'SLOGOP', 'TLOGOP',
+ 'SINGLECOND', 'ARRAYOPEN', 'QUOTE', 'BACKTICK',
+ 'error', 'start', 'template', 'literal_e2',
+ 'literal_e1', 'smartytag', 'tagbody', 'tag',
+ 'outattr', 'eqoutattr', 'varindexed', 'output',
+ 'attributes', 'variablevalue', 'value', 'expr',
+ 'modifierlist', 'statement', 'statements', 'foraction',
+ 'varvar', 'modparameters', 'attribute', 'nullcoalescing',
+ 'ternary', 'tlop', 'lop', 'scond',
+ 'isin', 'array', 'function', 'ns1',
+ 'doublequoted_with_quotes', 'static_class_access', 'arraydef', 'variablelist',
+ 'variable', 'object', 'configvariable', 'arrayindex',
+ 'indexdef', 'varvarele', 'objectchain', 'objectelement',
+ 'method', 'params', 'modifier', 'modparameter',
+ 'arrayelements', 'arrayelement', 'doublequoted', 'doublequotedcontent',
+ );
+
+ public static $yyRuleName = array(
+ 'start ::= template',
+ 'template ::= template TEXT',
+ 'template ::= template STRIPON',
+ 'template ::= template STRIPOFF',
+ 'template ::= template LITERALSTART literal_e2 LITERALEND',
+ 'literal_e2 ::= literal_e1 LITERALSTART literal_e1 LITERALEND',
+ 'literal_e2 ::= literal_e1',
+ 'literal_e1 ::= literal_e1 LITERAL',
+ 'literal_e1 ::=',
+ 'template ::= template smartytag',
+ 'template ::=',
+ 'smartytag ::= SIMPELOUTPUT',
+ 'smartytag ::= SIMPLETAG',
+ 'smartytag ::= SMARTYBLOCKCHILDPARENT',
+ 'smartytag ::= LDEL tagbody RDEL',
+ 'smartytag ::= tag RDEL',
+ 'tagbody ::= outattr',
+ 'tagbody ::= DOLLARID eqoutattr',
+ 'tagbody ::= varindexed eqoutattr',
+ 'eqoutattr ::= EQUAL outattr',
+ 'outattr ::= output attributes',
+ 'output ::= variablevalue',
+ 'output ::= value',
+ 'output ::= expr',
+ 'tag ::= LDEL ID attributes',
+ 'tag ::= LDEL ID',
+ 'tag ::= LDEL ID modifierlist attributes',
+ 'tag ::= LDEL ID PTR ID attributes',
+ 'tag ::= LDEL ID PTR ID modifierlist attributes',
+ 'tag ::= LDELIF expr',
+ 'tag ::= LDELIF expr attributes',
+ 'tag ::= LDELIF statement',
+ 'tag ::= LDELIF statement attributes',
+ 'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
+ 'foraction ::= EQUAL expr',
+ 'foraction ::= INCDEC',
+ 'tag ::= LDELFOR statement TO expr attributes',
+ 'tag ::= LDELFOR statement TO expr STEP expr attributes',
+ 'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
+ 'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
+ 'tag ::= LDELFOREACH attributes',
+ 'tag ::= LDELSETFILTER ID modparameters',
+ 'tag ::= LDELSETFILTER ID modparameters modifierlist',
+ 'smartytag ::= CLOSETAG',
+ 'tag ::= LDELSLASH ID',
+ 'tag ::= LDELSLASH ID modifierlist',
+ 'tag ::= LDELSLASH ID PTR ID',
+ 'tag ::= LDELSLASH ID PTR ID modifierlist',
+ 'attributes ::= attributes attribute',
+ 'attributes ::= attribute',
+ 'attributes ::=',
+ 'attribute ::= SPACE ID EQUAL ID',
+ 'attribute ::= ATTR expr',
+ 'attribute ::= ATTR value',
+ 'attribute ::= SPACE ID',
+ 'attribute ::= SPACE expr',
+ 'attribute ::= SPACE value',
+ 'attribute ::= SPACE INTEGER EQUAL expr',
+ 'statements ::= statement',
+ 'statements ::= statements COMMA statement',
+ 'statement ::= DOLLARID EQUAL INTEGER',
+ 'statement ::= DOLLARID EQUAL expr',
+ 'statement ::= varindexed EQUAL expr',
+ 'statement ::= OPENP statement CLOSEP',
+ 'expr ::= value',
+ 'expr ::= nullcoalescing',
+ 'expr ::= ternary',
+ 'expr ::= INCDEC DOLLARID',
+ 'expr ::= DOLLARID INCDEC',
+ 'expr ::= DOLLARID COLON ID',
+ 'expr ::= expr MATH value',
+ 'expr ::= expr UNIMATH value',
+ 'expr ::= expr tlop value',
+ 'expr ::= expr lop expr',
+ 'expr ::= expr scond',
+ 'isin ::= ISIN',
+ 'expr ::= expr isin array',
+ 'expr ::= expr isin value',
+ 'nullcoalescing ::= expr QMARK QMARK expr',
+ 'ternary ::= expr QMARK DOLLARID COLON expr',
+ 'ternary ::= expr QMARK value COLON expr',
+ 'ternary ::= expr QMARK expr COLON expr',
+ 'ternary ::= expr QMARK COLON expr',
+ 'value ::= variablevalue',
+ 'value ::= UNIMATH value',
+ 'value ::= NOT value',
+ 'value ::= TYPECAST value',
+ 'value ::= variablevalue INCDEC',
+ 'value ::= HEX',
+ 'value ::= INTEGER',
+ 'value ::= INTEGER DOT INTEGER',
+ 'value ::= INTEGER DOT',
+ 'value ::= DOT INTEGER',
+ 'value ::= ID',
+ 'value ::= function',
+ 'value ::= OPENP expr CLOSEP',
+ 'value ::= variablevalue INSTANCEOF ns1',
+ 'value ::= variablevalue INSTANCEOF variablevalue',
+ 'value ::= SINGLEQUOTESTRING',
+ 'value ::= doublequoted_with_quotes',
+ 'value ::= varindexed DOUBLECOLON static_class_access',
+ 'value ::= smartytag',
+ 'value ::= value modifierlist',
+ 'value ::= NAMESPACE',
+ 'value ::= arraydef',
+ 'value ::= ns1 DOUBLECOLON static_class_access',
+ 'ns1 ::= ID',
+ 'ns1 ::= NAMESPACE',
+ 'variablelist ::= variablelist COMMA variable',
+ 'variablelist ::= variablelist COMMA expr',
+ 'variablelist ::= variable',
+ 'variablelist ::= expr',
+ 'variablelist ::=',
+ 'variable ::= DOLLARID',
+ 'variable ::= varindexed',
+ 'variable ::= varvar AT ID',
+ 'variable ::= object',
+ 'configvariable ::= HATCH ID HATCH',
+ 'configvariable ::= HATCH ID HATCH arrayindex',
+ 'configvariable ::= HATCH variablevalue HATCH',
+ 'configvariable ::= HATCH variablevalue HATCH arrayindex',
+ 'variablevalue ::= variable',
+ 'variablevalue ::= configvariable',
+ 'varindexed ::= DOLLARID arrayindex',
+ 'varindexed ::= varvar arrayindex',
+ 'arrayindex ::= arrayindex indexdef',
+ 'arrayindex ::=',
+ 'indexdef ::= DOT DOLLARID',
+ 'indexdef ::= DOT varvar',
+ 'indexdef ::= DOT varvar AT ID',
+ 'indexdef ::= DOT ID',
+ 'indexdef ::= DOT INTEGER',
+ 'indexdef ::= DOT LDEL expr RDEL',
+ 'indexdef ::= OPENB ID CLOSEB',
+ 'indexdef ::= OPENB ID DOT ID CLOSEB',
+ 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
+ 'indexdef ::= OPENB INTEGER CLOSEB',
+ 'indexdef ::= OPENB DOLLARID CLOSEB',
+ 'indexdef ::= OPENB variablevalue CLOSEB',
+ 'indexdef ::= OPENB value CLOSEB',
+ 'indexdef ::= OPENB expr CLOSEB',
+ 'indexdef ::= OPENB CLOSEB',
+ 'varvar ::= DOLLARID',
+ 'varvar ::= DOLLAR',
+ 'varvar ::= varvar varvarele',
+ 'varvarele ::= ID',
+ 'varvarele ::= SIMPELOUTPUT',
+ 'varvarele ::= LDEL expr RDEL',
+ 'object ::= varindexed objectchain',
+ 'objectchain ::= objectelement',
+ 'objectchain ::= objectchain objectelement',
+ 'objectelement ::= PTR ID arrayindex',
+ 'objectelement ::= PTR varvar arrayindex',
+ 'objectelement ::= PTR LDEL expr RDEL arrayindex',
+ 'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
+ 'objectelement ::= PTR method',
+ 'function ::= ns1 OPENP variablelist CLOSEP',
+ 'method ::= ID OPENP params CLOSEP',
+ 'method ::= DOLLARID OPENP params CLOSEP',
+ 'params ::= params COMMA expr',
+ 'params ::= expr',
+ 'params ::=',
+ 'modifierlist ::= modifierlist modifier modparameters',
+ 'modifierlist ::= modifier modparameters',
+ 'modifier ::= VERT AT ID',
+ 'modifier ::= VERT ID',
+ 'modparameters ::= modparameters modparameter',
+ 'modparameters ::=',
+ 'modparameter ::= COLON value',
+ 'modparameter ::= COLON UNIMATH value',
+ 'modparameter ::= COLON array',
+ 'static_class_access ::= method',
+ 'static_class_access ::= method objectchain',
+ 'static_class_access ::= ID',
+ 'static_class_access ::= DOLLARID arrayindex',
+ 'static_class_access ::= DOLLARID arrayindex objectchain',
+ 'lop ::= LOGOP',
+ 'lop ::= SLOGOP',
+ 'tlop ::= TLOGOP',
+ 'scond ::= SINGLECOND',
+ 'arraydef ::= OPENB arrayelements CLOSEB',
+ 'arraydef ::= ARRAYOPEN arrayelements CLOSEP',
+ 'arrayelements ::= arrayelement',
+ 'arrayelements ::= arrayelements COMMA arrayelement',
+ 'arrayelements ::=',
+ 'arrayelement ::= value APTR expr',
+ 'arrayelement ::= ID APTR expr',
+ 'arrayelement ::= expr',
+ 'doublequoted_with_quotes ::= QUOTE QUOTE',
+ 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
+ 'doublequoted ::= doublequoted doublequotedcontent',
+ 'doublequoted ::= doublequotedcontent',
+ 'doublequotedcontent ::= BACKTICK variablevalue BACKTICK',
+ 'doublequotedcontent ::= BACKTICK expr BACKTICK',
+ 'doublequotedcontent ::= DOLLARID',
+ 'doublequotedcontent ::= LDEL variablevalue RDEL',
+ 'doublequotedcontent ::= LDEL expr RDEL',
+ 'doublequotedcontent ::= smartytag',
+ 'doublequotedcontent ::= TEXT',
+ );
+
+ public function tokenName($tokenType)
+ {
+ if ($tokenType === 0) {
+ return 'End of Input';
+ }
+ if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
+ return $this->yyTokenName[$tokenType];
+ } else {
+ return 'Unknown';
+ }
+ }
+
+ public static function yy_destructor($yymajor, $yypminor)
+ {
+ switch ($yymajor) {
+ default: break; /* If no destructor action specified: do nothing */
+ }
+ }
+
+ public function yy_pop_parser_stack()
+ {
+ if (empty($this->yystack)) {
+ return;
+ }
+ $yytos = array_pop($this->yystack);
+ if ($this->yyTraceFILE && $this->yyidx >= 0) {
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
+ "\n");
+ }
+ $yymajor = $yytos->major;
+ self::yy_destructor($yymajor, $yytos->minor);
+ $this->yyidx--;
+
+ return $yymajor;
+ }
+
+ public function __destruct()
+ {
+ while ($this->yystack !== Array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ public function yy_get_expected_tokens($token)
+ {
+ static $res3 = array();
+ static $res4 = array();
+ $state = $this->yystack[$this->yyidx]->stateno;
+ $expected = self::$yyExpectedTokens[$state];
+ if (isset($res3[$state][$token])) {
+ if ($res3[$state][$token]) {
+ return $expected;
+ }
+ } else {
+ if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ return $expected;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return array_unique($expected);
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[$this->yyidx]->stateno,
+ self::$yyRuleInfo[$yyruleno][0]);
+ if (isset(self::$yyExpectedTokens[$nextstate])) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
+ if (isset($res4[$nextstate][$token])) {
+ if ($res4[$nextstate][$token]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ } else {
+ if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[$yyruleno][0];
+ $this->yystack[$this->yyidx] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return array_unique($expected);
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return $expected;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return array_unique($expected);
+ }
+
+ public function yy_is_expected_token($token)
+ {
+ static $res = array();
+ static $res2 = array();
+ if ($token === 0) {
+ return true; // 0 is not part of this
+ }
+ $state = $this->yystack[$this->yyidx]->stateno;
+ if (isset($res[$state][$token])) {
+ if ($res[$state][$token]) {
+ return true;
+ }
+ } else {
+ if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ return true;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return true;
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[$this->yyidx]->stateno,
+ self::$yyRuleInfo[$yyruleno][0]);
+ if (isset($res2[$nextstate][$token])) {
+ if ($res2[$nextstate][$token]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ } else {
+ if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[$yyruleno][0];
+ $this->yystack[$this->yyidx] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ if (!$token) {
+ // end of input: this is valid
+ return true;
+ }
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return false;
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return true;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return true;
+ }
+
+ public function yy_find_shift_action($iLookAhead)
+ {
+ $stateno = $this->yystack[$this->yyidx]->stateno;
+
+ /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
+ if (!isset(self::$yy_shift_ofst[$stateno])) {
+ // no shift actions
+ return self::$yy_default[$stateno];
+ }
+ $i = self::$yy_shift_ofst[$stateno];
+ if ($i === self::YY_SHIFT_USE_DFLT) {
+ return self::$yy_default[$stateno];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[$i] != $iLookAhead) {
+ if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
+ && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
+ if ($this->yyTraceFILE) {
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
+ $this->yyTokenName[$iLookAhead] . ' => ' .
+ $this->yyTokenName[$iFallback] . "\n");
+ }
+
+ return $this->yy_find_shift_action($iFallback);
+ }
+
+ return self::$yy_default[$stateno];
+ } else {
+ return self::$yy_action[$i];
+ }
+ }
+
+ public function yy_find_reduce_action($stateno, $iLookAhead)
+ {
+ /* $stateno = $this->yystack[$this->yyidx]->stateno; */
+
+ if (!isset(self::$yy_reduce_ofst[$stateno])) {
+ return self::$yy_default[$stateno];
+ }
+ $i = self::$yy_reduce_ofst[$stateno];
+ if ($i === self::YY_REDUCE_USE_DFLT) {
+ return self::$yy_default[$stateno];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[$i] != $iLookAhead) {
+ return self::$yy_default[$stateno];
+ } else {
+ return self::$yy_action[$i];
+ }
+ }
+
+ public function yy_shift($yyNewState, $yyMajor, $yypMinor)
+ {
+ $this->yyidx++;
+ if ($this->yyidx >= self::YYSTACKDEPTH) {
+ $this->yyidx--;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+// line 232 "src/Parser/TemplateParser.y"
+
+ $this->internalError = true;
+ $this->compiler->trigger_template_error('Stack overflow in template parser');
+
+ return;
+ }
+ $yytos = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $yytos->stateno = $yyNewState;
+ $yytos->major = $yyMajor;
+ $yytos->minor = $yypMinor;
+ $this->yystack[] = $yytos;
+ if ($this->yyTraceFILE && $this->yyidx > 0) {
+ fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt,
+ $yyNewState);
+ fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
+ for ($i = 1; $i <= $this->yyidx; $i++) {
+ fprintf($this->yyTraceFILE, " %s",
+ $this->yyTokenName[$this->yystack[$i]->major]);
+ }
+ fwrite($this->yyTraceFILE,"\n");
+ }
+ }
+
+ public static $yyRuleInfo = array(
+ array( 0 => 61, 1 => 1 ),
+ array( 0 => 62, 1 => 2 ),
+ array( 0 => 62, 1 => 2 ),
+ array( 0 => 62, 1 => 2 ),
+ array( 0 => 62, 1 => 4 ),
+ array( 0 => 63, 1 => 4 ),
+ array( 0 => 63, 1 => 1 ),
+ array( 0 => 64, 1 => 2 ),
+ array( 0 => 64, 1 => 0 ),
+ array( 0 => 62, 1 => 2 ),
+ array( 0 => 62, 1 => 0 ),
+ array( 0 => 65, 1 => 1 ),
+ array( 0 => 65, 1 => 1 ),
+ array( 0 => 65, 1 => 1 ),
+ array( 0 => 65, 1 => 3 ),
+ array( 0 => 65, 1 => 2 ),
+ array( 0 => 66, 1 => 1 ),
+ array( 0 => 66, 1 => 2 ),
+ array( 0 => 66, 1 => 2 ),
+ array( 0 => 69, 1 => 2 ),
+ array( 0 => 68, 1 => 2 ),
+ array( 0 => 71, 1 => 1 ),
+ array( 0 => 71, 1 => 1 ),
+ array( 0 => 71, 1 => 1 ),
+ array( 0 => 67, 1 => 3 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 67, 1 => 4 ),
+ array( 0 => 67, 1 => 5 ),
+ array( 0 => 67, 1 => 6 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 67, 1 => 3 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 67, 1 => 3 ),
+ array( 0 => 67, 1 => 8 ),
+ array( 0 => 79, 1 => 2 ),
+ array( 0 => 79, 1 => 1 ),
+ array( 0 => 67, 1 => 5 ),
+ array( 0 => 67, 1 => 7 ),
+ array( 0 => 67, 1 => 6 ),
+ array( 0 => 67, 1 => 8 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 67, 1 => 3 ),
+ array( 0 => 67, 1 => 4 ),
+ array( 0 => 65, 1 => 1 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 67, 1 => 3 ),
+ array( 0 => 67, 1 => 4 ),
+ array( 0 => 67, 1 => 5 ),
+ array( 0 => 72, 1 => 2 ),
+ array( 0 => 72, 1 => 1 ),
+ array( 0 => 72, 1 => 0 ),
+ array( 0 => 82, 1 => 4 ),
+ array( 0 => 82, 1 => 2 ),
+ array( 0 => 82, 1 => 2 ),
+ array( 0 => 82, 1 => 2 ),
+ array( 0 => 82, 1 => 2 ),
+ array( 0 => 82, 1 => 2 ),
+ array( 0 => 82, 1 => 4 ),
+ array( 0 => 78, 1 => 1 ),
+ array( 0 => 78, 1 => 3 ),
+ array( 0 => 77, 1 => 3 ),
+ array( 0 => 77, 1 => 3 ),
+ array( 0 => 77, 1 => 3 ),
+ array( 0 => 77, 1 => 3 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 88, 1 => 1 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 83, 1 => 4 ),
+ array( 0 => 84, 1 => 5 ),
+ array( 0 => 84, 1 => 5 ),
+ array( 0 => 84, 1 => 5 ),
+ array( 0 => 84, 1 => 4 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 91, 1 => 1 ),
+ array( 0 => 91, 1 => 1 ),
+ array( 0 => 95, 1 => 3 ),
+ array( 0 => 95, 1 => 3 ),
+ array( 0 => 95, 1 => 1 ),
+ array( 0 => 95, 1 => 1 ),
+ array( 0 => 95, 1 => 0 ),
+ array( 0 => 96, 1 => 1 ),
+ array( 0 => 96, 1 => 1 ),
+ array( 0 => 96, 1 => 3 ),
+ array( 0 => 96, 1 => 1 ),
+ array( 0 => 98, 1 => 3 ),
+ array( 0 => 98, 1 => 4 ),
+ array( 0 => 98, 1 => 3 ),
+ array( 0 => 98, 1 => 4 ),
+ array( 0 => 73, 1 => 1 ),
+ array( 0 => 73, 1 => 1 ),
+ array( 0 => 70, 1 => 2 ),
+ array( 0 => 70, 1 => 2 ),
+ array( 0 => 99, 1 => 2 ),
+ array( 0 => 99, 1 => 0 ),
+ array( 0 => 100, 1 => 2 ),
+ array( 0 => 100, 1 => 2 ),
+ array( 0 => 100, 1 => 4 ),
+ array( 0 => 100, 1 => 2 ),
+ array( 0 => 100, 1 => 2 ),
+ array( 0 => 100, 1 => 4 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 5 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 2 ),
+ array( 0 => 80, 1 => 1 ),
+ array( 0 => 80, 1 => 1 ),
+ array( 0 => 80, 1 => 2 ),
+ array( 0 => 101, 1 => 1 ),
+ array( 0 => 101, 1 => 1 ),
+ array( 0 => 101, 1 => 3 ),
+ array( 0 => 97, 1 => 2 ),
+ array( 0 => 102, 1 => 1 ),
+ array( 0 => 102, 1 => 2 ),
+ array( 0 => 103, 1 => 3 ),
+ array( 0 => 103, 1 => 3 ),
+ array( 0 => 103, 1 => 5 ),
+ array( 0 => 103, 1 => 6 ),
+ array( 0 => 103, 1 => 2 ),
+ array( 0 => 90, 1 => 4 ),
+ array( 0 => 104, 1 => 4 ),
+ array( 0 => 104, 1 => 4 ),
+ array( 0 => 105, 1 => 3 ),
+ array( 0 => 105, 1 => 1 ),
+ array( 0 => 105, 1 => 0 ),
+ array( 0 => 76, 1 => 3 ),
+ array( 0 => 76, 1 => 2 ),
+ array( 0 => 106, 1 => 3 ),
+ array( 0 => 106, 1 => 2 ),
+ array( 0 => 81, 1 => 2 ),
+ array( 0 => 81, 1 => 0 ),
+ array( 0 => 107, 1 => 2 ),
+ array( 0 => 107, 1 => 3 ),
+ array( 0 => 107, 1 => 2 ),
+ array( 0 => 93, 1 => 1 ),
+ array( 0 => 93, 1 => 2 ),
+ array( 0 => 93, 1 => 1 ),
+ array( 0 => 93, 1 => 2 ),
+ array( 0 => 93, 1 => 3 ),
+ array( 0 => 86, 1 => 1 ),
+ array( 0 => 86, 1 => 1 ),
+ array( 0 => 85, 1 => 1 ),
+ array( 0 => 87, 1 => 1 ),
+ array( 0 => 94, 1 => 3 ),
+ array( 0 => 94, 1 => 3 ),
+ array( 0 => 108, 1 => 1 ),
+ array( 0 => 108, 1 => 3 ),
+ array( 0 => 108, 1 => 0 ),
+ array( 0 => 109, 1 => 3 ),
+ array( 0 => 109, 1 => 3 ),
+ array( 0 => 109, 1 => 1 ),
+ array( 0 => 92, 1 => 2 ),
+ array( 0 => 92, 1 => 3 ),
+ array( 0 => 110, 1 => 2 ),
+ array( 0 => 110, 1 => 1 ),
+ array( 0 => 111, 1 => 3 ),
+ array( 0 => 111, 1 => 3 ),
+ array( 0 => 111, 1 => 1 ),
+ array( 0 => 111, 1 => 3 ),
+ array( 0 => 111, 1 => 3 ),
+ array( 0 => 111, 1 => 1 ),
+ array( 0 => 111, 1 => 1 ),
+ );
+
+ public static $yyReduceMap = array(
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 21 => 6,
+ 22 => 6,
+ 23 => 6,
+ 35 => 6,
+ 55 => 6,
+ 56 => 6,
+ 64 => 6,
+ 65 => 6,
+ 66 => 6,
+ 83 => 6,
+ 88 => 6,
+ 89 => 6,
+ 94 => 6,
+ 98 => 6,
+ 99 => 6,
+ 103 => 6,
+ 104 => 6,
+ 106 => 6,
+ 122 => 6,
+ 182 => 6,
+ 187 => 6,
+ 7 => 7,
+ 8 => 8,
+ 9 => 9,
+ 11 => 11,
+ 12 => 12,
+ 13 => 13,
+ 14 => 14,
+ 15 => 15,
+ 16 => 16,
+ 17 => 17,
+ 18 => 18,
+ 19 => 19,
+ 20 => 20,
+ 24 => 24,
+ 25 => 25,
+ 26 => 26,
+ 27 => 27,
+ 28 => 28,
+ 29 => 29,
+ 30 => 30,
+ 32 => 30,
+ 31 => 31,
+ 33 => 33,
+ 34 => 34,
+ 36 => 36,
+ 37 => 37,
+ 38 => 38,
+ 39 => 39,
+ 40 => 40,
+ 41 => 41,
+ 42 => 42,
+ 43 => 43,
+ 44 => 44,
+ 45 => 45,
+ 46 => 46,
+ 47 => 47,
+ 48 => 48,
+ 49 => 49,
+ 58 => 49,
+ 110 => 49,
+ 111 => 49,
+ 160 => 49,
+ 164 => 49,
+ 168 => 49,
+ 170 => 49,
+ 50 => 50,
+ 112 => 50,
+ 161 => 50,
+ 167 => 50,
+ 51 => 51,
+ 52 => 52,
+ 53 => 52,
+ 54 => 54,
+ 145 => 54,
+ 57 => 57,
+ 59 => 59,
+ 60 => 60,
+ 61 => 60,
+ 62 => 62,
+ 63 => 63,
+ 67 => 67,
+ 68 => 68,
+ 69 => 69,
+ 70 => 70,
+ 71 => 70,
+ 72 => 72,
+ 73 => 73,
+ 74 => 74,
+ 75 => 75,
+ 76 => 76,
+ 77 => 77,
+ 78 => 78,
+ 79 => 79,
+ 80 => 80,
+ 81 => 80,
+ 82 => 82,
+ 84 => 84,
+ 86 => 84,
+ 87 => 84,
+ 125 => 84,
+ 85 => 85,
+ 90 => 90,
+ 91 => 91,
+ 92 => 92,
+ 93 => 93,
+ 95 => 95,
+ 96 => 96,
+ 97 => 96,
+ 100 => 100,
+ 101 => 101,
+ 102 => 102,
+ 105 => 105,
+ 107 => 107,
+ 108 => 108,
+ 109 => 108,
+ 159 => 108,
+ 113 => 113,
+ 114 => 114,
+ 115 => 115,
+ 116 => 116,
+ 117 => 117,
+ 118 => 118,
+ 119 => 119,
+ 120 => 120,
+ 121 => 121,
+ 123 => 123,
+ 124 => 124,
+ 126 => 126,
+ 184 => 126,
+ 127 => 127,
+ 128 => 128,
+ 129 => 129,
+ 130 => 130,
+ 131 => 131,
+ 132 => 132,
+ 140 => 132,
+ 133 => 133,
+ 134 => 134,
+ 135 => 135,
+ 136 => 135,
+ 138 => 135,
+ 139 => 135,
+ 137 => 137,
+ 141 => 141,
+ 142 => 142,
+ 143 => 143,
+ 188 => 143,
+ 144 => 144,
+ 146 => 146,
+ 147 => 147,
+ 148 => 148,
+ 149 => 149,
+ 150 => 150,
+ 151 => 151,
+ 152 => 152,
+ 153 => 153,
+ 154 => 154,
+ 155 => 155,
+ 156 => 156,
+ 157 => 157,
+ 158 => 158,
+ 162 => 162,
+ 163 => 163,
+ 165 => 165,
+ 166 => 166,
+ 169 => 169,
+ 171 => 171,
+ 172 => 172,
+ 173 => 173,
+ 174 => 174,
+ 175 => 175,
+ 176 => 176,
+ 177 => 177,
+ 178 => 178,
+ 179 => 179,
+ 180 => 180,
+ 181 => 180,
+ 183 => 183,
+ 185 => 185,
+ 186 => 186,
+ 189 => 189,
+ 190 => 190,
+ 191 => 191,
+ 192 => 192,
+ 195 => 192,
+ 193 => 193,
+ 196 => 193,
+ 194 => 194,
+ 197 => 197,
+ 198 => 198,
+ );
+// line 245 "src/Parser/TemplateParser.y"
+ public function yy_r0(){
+ $this->root_buffer->prepend_array($this, $this->template_prefix);
+ $this->root_buffer->append_array($this, $this->template_postfix);
+ $this->_retvalue = $this->root_buffer->to_smarty_php($this);
+ }
+// line 252 "src/Parser/TemplateParser.y"
+ public function yy_r1(){
+ $text = $this->yystack[ $this->yyidx + 0 ]->minor;
+
+ if ((string)$text == '') {
+ $this->current_buffer->append_subtree($this, null);
+ }
+
+ $this->current_buffer->append_subtree($this, new \Smarty\ParseTree\Text($text, $this->strip));
+ }
+// line 262 "src/Parser/TemplateParser.y"
+ public function yy_r2(){
+ $this->strip = true;
+ }
+// line 266 "src/Parser/TemplateParser.y"
+ public function yy_r3(){
+ $this->strip = false;
+ }
+// line 271 "src/Parser/TemplateParser.y"
+ public function yy_r4(){
+ $this->current_buffer->append_subtree($this, new \Smarty\ParseTree\Text($this->yystack[$this->yyidx + -1]->minor));
+ }
+// line 276 "src/Parser/TemplateParser.y"
+ public function yy_r5(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.$this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 279 "src/Parser/TemplateParser.y"
+ public function yy_r6(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 283 "src/Parser/TemplateParser.y"
+ public function yy_r7(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+
+ }
+// line 288 "src/Parser/TemplateParser.y"
+ public function yy_r8(){
+ $this->_retvalue = '';
+ }
+// line 292 "src/Parser/TemplateParser.y"
+ public function yy_r9(){
+ $this->current_buffer->append_subtree($this, $this->mergePrefixCode($this->yystack[$this->yyidx + 0]->minor));
+ $this->compiler->has_variable_string = false;
+ $this->block_nesting_level = $this->compiler->getTagStackCount();
+ }
+// line 302 "src/Parser/TemplateParser.y"
+ public function yy_r11(){
+ $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ $attributes = [];
+ if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
+ $attributes[] = 'nocache';
+ $var = $match[1];
+ }
+ $this->compiler->triggerTagNoCache($var);
+ $this->_retvalue = $this->compiler->compilePrintExpression('$_smarty_tpl->getValue(\''.$var.'\')', $attributes);
+ }
+// line 314 "src/Parser/TemplateParser.y"
+ public function yy_r12(){
+ $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()));
+ if ($tag == 'strip') {
+ $this->strip = true;
+ $this->_retvalue = null;
+ } else {
+ if (defined($tag)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($tag, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compilePrintExpression($tag);
+ } else {
+ if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
+ $this->_retvalue = $this->compiler->compileTag($match[1],array('\'nocache\''));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($tag,array());
+ }
+ }
+ }
+ }
+// line 335 "src/Parser/TemplateParser.y"
+ public function yy_r13(){
+ $j = strrpos($this->yystack[$this->yyidx + 0]->minor,'.');
+ if ($this->yystack[$this->yyidx + 0]->minor[$j+1] == 'c') {
+ // {$smarty.block.child}
+ $this->_retvalue = $this->compiler->compileChildBlock();
+ } else {
+ // {$smarty.block.parent}
+ $this->_retvalue = $this->compiler->compileParentBlock();
+ }
+ }
+// line 346 "src/Parser/TemplateParser.y"
+ public function yy_r14(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 350 "src/Parser/TemplateParser.y"
+ public function yy_r15(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 354 "src/Parser/TemplateParser.y"
+ public function yy_r16(){
+ $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + 0]->minor[0], $this->yystack[$this->yyidx + 0]->minor[1]);
+ }
+// line 363 "src/Parser/TemplateParser.y"
+ public function yy_r17(){
+ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'')),$this->yystack[$this->yyidx + 0]->minor[1]));
+ }
+// line 367 "src/Parser/TemplateParser.y"
+ public function yy_r18(){
+ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>$this->yystack[$this->yyidx + -1]->minor['var'])),$this->yystack[$this->yyidx + 0]->minor[1]),array('smarty_internal_index'=>$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']));
+ }
+// line 371 "src/Parser/TemplateParser.y"
+ public function yy_r19(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 375 "src/Parser/TemplateParser.y"
+ public function yy_r20(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 390 "src/Parser/TemplateParser.y"
+ public function yy_r24(){
+ if (defined($this->yystack[$this->yyidx + -1]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + -1]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
+ }
+ }
+// line 400 "src/Parser/TemplateParser.y"
+ public function yy_r25(){
+ if (defined($this->yystack[$this->yyidx + 0]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + 0]->minor);
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor,array());
+ }
+ }
+// line 413 "src/Parser/TemplateParser.y"
+ public function yy_r26(){
+ if (defined($this->yystack[$this->yyidx + -2]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + -2]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor);
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + 0]->minor, array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor));
+ }
+ }
+// line 425 "src/Parser/TemplateParser.y"
+ public function yy_r27(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + 0]->minor,array('object_method'=>$this->yystack[$this->yyidx + -1]->minor));
+ }
+// line 430 "src/Parser/TemplateParser.y"
+ public function yy_r28(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + 0]->minor,array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor, 'object_method'=>$this->yystack[$this->yyidx + -2]->minor));
+ }
+// line 435 "src/Parser/TemplateParser.y"
+ public function yy_r29(){
+ $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength()));
+ $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 440 "src/Parser/TemplateParser.y"
+ public function yy_r30(){
+ $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->compiler->getLdelLength()));
+ $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,$this->yystack[$this->yyidx + 0]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));
+ }
+// line 445 "src/Parser/TemplateParser.y"
+ public function yy_r31(){
+ $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength()));
+ $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 456 "src/Parser/TemplateParser.y"
+ public function yy_r33(){
+ $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -6]->minor),array('ifexp'=>$this->yystack[$this->yyidx + -4]->minor),array('var'=>$this->yystack[$this->yyidx + -2]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),1);
+ }
+// line 460 "src/Parser/TemplateParser.y"
+ public function yy_r34(){
+ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 468 "src/Parser/TemplateParser.y"
+ public function yy_r36(){
+ $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -3]->minor),array('to'=>$this->yystack[$this->yyidx + -1]->minor))),0);
+ }
+// line 472 "src/Parser/TemplateParser.y"
+ public function yy_r37(){
+ $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -5]->minor),array('to'=>$this->yystack[$this->yyidx + -3]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),0);
+ }
+// line 477 "src/Parser/TemplateParser.y"
+ public function yy_r38(){
+ $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -3]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor))));
+ }
+// line 481 "src/Parser/TemplateParser.y"
+ public function yy_r39(){
+ $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor),array('key'=>$this->yystack[$this->yyidx + -3]->minor))));
+ }
+// line 484 "src/Parser/TemplateParser.y"
+ public function yy_r40(){
+ $this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 489 "src/Parser/TemplateParser.y"
+ public function yy_r41(){
+ $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array($this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + 0]->minor))));
+ }
+// line 493 "src/Parser/TemplateParser.y"
+ public function yy_r42(){
+ $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array($this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)),$this->yystack[$this->yyidx + 0]->minor)));
+ }
+// line 499 "src/Parser/TemplateParser.y"
+ public function yy_r43(){
+ $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /');
+ if ($tag === 'strip') {
+ $this->strip = false;
+ $this->_retvalue = null;
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($tag.'close',array());
+ }
+ }
+// line 508 "src/Parser/TemplateParser.y"
+ public function yy_r44(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor.'close',array());
+ }
+// line 512 "src/Parser/TemplateParser.y"
+ public function yy_r45(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array(),array('modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 517 "src/Parser/TemplateParser.y"
+ public function yy_r46(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 521 "src/Parser/TemplateParser.y"
+ public function yy_r47(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + -1]->minor, 'modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 529 "src/Parser/TemplateParser.y"
+ public function yy_r48(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 535 "src/Parser/TemplateParser.y"
+ public function yy_r49(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 540 "src/Parser/TemplateParser.y"
+ public function yy_r50(){
+ $this->_retvalue = array();
+ }
+// line 545 "src/Parser/TemplateParser.y"
+ public function yy_r51(){
+ if (defined($this->yystack[$this->yyidx + 0]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
+ }
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
+ } else {
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'\''.$this->yystack[$this->yyidx + 0]->minor.'\'');
+ }
+ }
+// line 556 "src/Parser/TemplateParser.y"
+ public function yy_r52(){
+ $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor," =\n\r\t")=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 564 "src/Parser/TemplateParser.y"
+ public function yy_r54(){
+ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
+ }
+// line 576 "src/Parser/TemplateParser.y"
+ public function yy_r57(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 589 "src/Parser/TemplateParser.y"
+ public function yy_r59(){
+ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor;
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;
+ }
+// line 594 "src/Parser/TemplateParser.y"
+ public function yy_r60(){
+ $this->_retvalue = array('var' => '\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'', 'value'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 601 "src/Parser/TemplateParser.y"
+ public function yy_r62(){
+ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 605 "src/Parser/TemplateParser.y"
+ public function yy_r63(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 630 "src/Parser/TemplateParser.y"
+ public function yy_r67(){
+ $this->_retvalue = '$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')->preIncDec(\'' . $this->yystack[$this->yyidx + -1]->minor . '\')';
+ }
+// line 635 "src/Parser/TemplateParser.y"
+ public function yy_r68(){
+ $this->_retvalue = '$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + -1]->minor,1) .'\')->postIncDec(\'' . $this->yystack[$this->yyidx + 0]->minor . '\')';
+ }
+// line 640 "src/Parser/TemplateParser.y"
+ public function yy_r69(){
+ $this->_retvalue = '$_smarty_tpl->getStreamVariable(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'://' . $this->yystack[$this->yyidx + 0]->minor . '\')';
+ }
+// line 645 "src/Parser/TemplateParser.y"
+ public function yy_r70(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 655 "src/Parser/TemplateParser.y"
+ public function yy_r72(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor['pre']. $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor['op'].$this->yystack[$this->yyidx + 0]->minor .')';
+ }
+// line 659 "src/Parser/TemplateParser.y"
+ public function yy_r73(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 663 "src/Parser/TemplateParser.y"
+ public function yy_r74(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor . $this->yystack[$this->yyidx + -1]->minor . ')';
+ }
+// line 667 "src/Parser/TemplateParser.y"
+ public function yy_r75(){
+ static $isin = [
+ 'isin' => 'in_array(',
+ 'isnotin' => '!in_array(',
+ ];
+ $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue = $isin[$op];
+ }
+// line 676 "src/Parser/TemplateParser.y"
+ public function yy_r76(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';
+ }
+// line 680 "src/Parser/TemplateParser.y"
+ public function yy_r77(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';
+ }
+// line 685 "src/Parser/TemplateParser.y"
+ public function yy_r78(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.' ?? '.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 692 "src/Parser/TemplateParser.y"
+ public function yy_r79(){
+ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -2]->minor,1));
+ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? $_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\') : '.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 697 "src/Parser/TemplateParser.y"
+ public function yy_r80(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 706 "src/Parser/TemplateParser.y"
+ public function yy_r82(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.' ?: '.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 716 "src/Parser/TemplateParser.y"
+ public function yy_r84(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 721 "src/Parser/TemplateParser.y"
+ public function yy_r85(){
+ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 742 "src/Parser/TemplateParser.y"
+ public function yy_r90(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 746 "src/Parser/TemplateParser.y"
+ public function yy_r91(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.';
+ }
+// line 750 "src/Parser/TemplateParser.y"
+ public function yy_r92(){
+ $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 755 "src/Parser/TemplateParser.y"
+ public function yy_r93(){
+ if (defined($this->yystack[$this->yyidx + 0]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
+ }
+ }
+// line 772 "src/Parser/TemplateParser.y"
+ public function yy_r95(){
+ $this->_retvalue = '('. $this->yystack[$this->yyidx + -1]->minor .')';
+ }
+// line 776 "src/Parser/TemplateParser.y"
+ public function yy_r96(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 794 "src/Parser/TemplateParser.y"
+ public function yy_r100(){
+ if ($this->security && $this->security->static_classes !== array()) {
+ $this->compiler->trigger_template_error('dynamic static class not allowed by security setting');
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ if ($this->yystack[$this->yyidx + -2]->minor['var'] === '\'smarty\'') {
+ $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).';?>');
+ } else {
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -2]->minor['var']);
+ $this->compiler->appendPrefixCode("<?php {$prefixVar} = \$_smarty_tpl->getValue(" . $this->yystack[$this->yyidx + -2]->minor['var'] . ')'.$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].';?>');
+ }
+ $this->_retvalue = $prefixVar .'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
+ }
+// line 809 "src/Parser/TemplateParser.y"
+ public function yy_r101(){
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $tmp = $this->compiler->appendCode('<?php ob_start();?>', (string) $this->yystack[$this->yyidx + 0]->minor);
+ $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php {$prefixVar} = ob_get_clean();?>"));
+ $this->_retvalue = $prefixVar;
+ }
+// line 816 "src/Parser/TemplateParser.y"
+ public function yy_r102(){
+ $this->_retvalue = $this->compiler->compileModifier($this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 829 "src/Parser/TemplateParser.y"
+ public function yy_r105(){
+ if (!in_array(strtolower($this->yystack[$this->yyidx + -2]->minor), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->compiler))) {
+ if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) {
+ $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor].'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
+ } else {
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
+ }
+ } else {
+ $this->compiler->trigger_template_error ('static class \''.$this->yystack[$this->yyidx + -2]->minor.'\' is undefined or not allowed by security setting');
+ }
+ }
+// line 848 "src/Parser/TemplateParser.y"
+ public function yy_r107(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 856 "src/Parser/TemplateParser.y"
+ public function yy_r108(){
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 883 "src/Parser/TemplateParser.y"
+ public function yy_r113(){
+ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + 0]->minor,1));
+ $this->_retvalue = array('$_smarty_tpl->hasVariable(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')','$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')');
+ }
+// line 887 "src/Parser/TemplateParser.y"
+ public function yy_r114(){
+ if ($this->yystack[$this->yyidx + 0]->minor['var'] === '\'smarty\'') {
+ $smarty_var = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
+ $this->_retvalue = array('true', $smarty_var);
+ } else {
+ // used for array reset,next,prev,end,current
+ $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
+ $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + 0]->minor['var']);
+ $this->_retvalue = array('true', '$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + 0]->minor['var'] . ')'.$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
+ }
+ }
+// line 901 "src/Parser/TemplateParser.y"
+ public function yy_r115(){
+ $this->_retvalue = array('true', '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 906 "src/Parser/TemplateParser.y"
+ public function yy_r116(){
+ $this->_retvalue = array('true', $this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 911 "src/Parser/TemplateParser.y"
+ public function yy_r117(){
+ $this->_retvalue = $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -1]->minor . '\'');
+ }
+// line 915 "src/Parser/TemplateParser.y"
+ public function yy_r118(){
+ $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -2]->minor . '\'') . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' :null)';
+ }
+// line 919 "src/Parser/TemplateParser.y"
+ public function yy_r119(){
+ $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 923 "src/Parser/TemplateParser.y"
+ public function yy_r120(){
+ $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -2]->minor) . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' : null)';
+ }
+// line 927 "src/Parser/TemplateParser.y"
+ public function yy_r121(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor[1];
+ }
+// line 935 "src/Parser/TemplateParser.y"
+ public function yy_r123(){
+ $this->_retvalue = array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'', 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 938 "src/Parser/TemplateParser.y"
+ public function yy_r124(){
+ $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 951 "src/Parser/TemplateParser.y"
+ public function yy_r126(){
+ return;
+ }
+// line 957 "src/Parser/TemplateParser.y"
+ public function yy_r127(){
+ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + 0]->minor,1));
+ $this->_retvalue = '[$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')]';
+ }
+// line 961 "src/Parser/TemplateParser.y"
+ public function yy_r128(){
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = '[$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + 0]->minor . ')]';
+ }
+// line 966 "src/Parser/TemplateParser.y"
+ public function yy_r129(){
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -2]->minor);
+ $this->_retvalue = '[$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -2]->minor . ')->'.$this->yystack[$this->yyidx + 0]->minor.']';
+ }
+// line 971 "src/Parser/TemplateParser.y"
+ public function yy_r130(){
+ $this->_retvalue = '[\''. $this->yystack[$this->yyidx + 0]->minor .'\']';
+ }
+// line 975 "src/Parser/TemplateParser.y"
+ public function yy_r131(){
+ $this->_retvalue = '['. $this->yystack[$this->yyidx + 0]->minor .']';
+ }
+// line 980 "src/Parser/TemplateParser.y"
+ public function yy_r132(){
+ $this->_retvalue = '['. $this->yystack[$this->yyidx + -1]->minor .']';
+ }
+// line 985 "src/Parser/TemplateParser.y"
+ public function yy_r133(){
+ $this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';
+ }
+// line 989 "src/Parser/TemplateParser.y"
+ public function yy_r134(){
+ $this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';
+ }
+// line 992 "src/Parser/TemplateParser.y"
+ public function yy_r135(){
+ $this->_retvalue = '['.$this->yystack[$this->yyidx + -1]->minor.']';
+ }
+// line 998 "src/Parser/TemplateParser.y"
+ public function yy_r137(){
+ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -1]->minor,1));
+ $this->_retvalue = '[$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\')]';
+ }
+// line 1015 "src/Parser/TemplateParser.y"
+ public function yy_r141(){
+ $this->_retvalue = '[]';
+ }
+// line 1025 "src/Parser/TemplateParser.y"
+ public function yy_r142(){
+ $this->_retvalue = '\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'';
+ }
+// line 1029 "src/Parser/TemplateParser.y"
+ public function yy_r143(){
+ $this->_retvalue = '\'\'';
+ }
+// line 1034 "src/Parser/TemplateParser.y"
+ public function yy_r144(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1042 "src/Parser/TemplateParser.y"
+ public function yy_r146(){
+ $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ $this->compiler->triggerTagNoCache($var);
+ $this->_retvalue = '$_smarty_tpl->getValue(\''.$var.'\')';
+ }
+// line 1049 "src/Parser/TemplateParser.y"
+ public function yy_r147(){
+ $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';
+ }
+// line 1056 "src/Parser/TemplateParser.y"
+ public function yy_r148(){
+ if ($this->yystack[$this->yyidx + -1]->minor['var'] === '\'smarty\'') {
+ $this->_retvalue = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -1]->minor['var']);
+ $this->_retvalue = '$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -1]->minor['var'] . ')'.$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor;
+ }
+ }
+// line 1066 "src/Parser/TemplateParser.y"
+ public function yy_r149(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1071 "src/Parser/TemplateParser.y"
+ public function yy_r150(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1076 "src/Parser/TemplateParser.y"
+ public function yy_r151(){
+ if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1083 "src/Parser/TemplateParser.y"
+ public function yy_r152(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -1]->minor);
+ $this->_retvalue = '->{$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -1]->minor . ')'.$this->yystack[$this->yyidx + 0]->minor.'}';
+ }
+// line 1091 "src/Parser/TemplateParser.y"
+ public function yy_r153(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
+ }
+// line 1098 "src/Parser/TemplateParser.y"
+ public function yy_r154(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
+ }
+// line 1106 "src/Parser/TemplateParser.y"
+ public function yy_r155(){
+ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1114 "src/Parser/TemplateParser.y"
+ public function yy_r156(){
+
+ if ($this->yystack[$this->yyidx + -3]->minor == 'isset') {
+ $this->_retvalue = '(true';
+ if (count($this->yystack[$this->yyidx + -1]->minor) == 0) {
+ throw new CompilerException("Invalid number of arguments for isset. isset expects at least one parameter.");
+ }
+ foreach ($this->yystack[$this->yyidx + -1]->minor as $value) {
+ if (is_array($value)) {
+ $this->_retvalue .= ' && (' . $value[0] . ' && null !== (' . $value[1] . ' ?? null))';
+ } else {
+ $this->_retvalue .= ' && (' . $value . ' !== null)';
+ }
+ }
+ $this->_retvalue .= ')';
+ } elseif ($this->yystack[$this->yyidx + -3]->minor == 'empty') {
+ if (count($this->yystack[$this->yyidx + -1]->minor) != 1) {
+ throw new CompilerException("Invalid number of arguments for empty. empty expects at exactly one parameter.");
+ }
+ if (is_array($this->yystack[$this->yyidx + -1]->minor[0])) {
+ $this->_retvalue .= '( !' . $this->yystack[$this->yyidx + -1]->minor[0][0] . ' || empty(' . $this->yystack[$this->yyidx + -1]->minor[0][1] . '))';
+ } else {
+ $this->_retvalue = 'false == ' . $this->yystack[$this->yyidx + -1]->minor[0];
+ }
+ } else {
+ $p = array();
+ foreach ($this->yystack[$this->yyidx + -1]->minor as $value) {
+ if (is_array($value)) {
+ $p[] = $value[1];
+ } else {
+ $p[] = $value;
+ }
+ }
+ $this->_retvalue = $this->compiler->compileModifierInExpression($this->yystack[$this->yyidx + -3]->minor, $p);
+ }
+ }
+// line 1155 "src/Parser/TemplateParser.y"
+ public function yy_r157(){
+ if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . '('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
+ }
+// line 1162 "src/Parser/TemplateParser.y"
+ public function yy_r158(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -3]->minor,1));
+ $this->compiler->appendPrefixCode("<?php {$prefixVar} = \$_smarty_tpl->getValue('".substr($this->yystack[$this->yyidx + -3]->minor,1).'\')'.';?>');
+ $this->_retvalue = $prefixVar .'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
+ }
+// line 1191 "src/Parser/TemplateParser.y"
+ public function yy_r162(){
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor)));
+ }
+// line 1195 "src/Parser/TemplateParser.y"
+ public function yy_r163(){
+ $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 1203 "src/Parser/TemplateParser.y"
+ public function yy_r165(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1211 "src/Parser/TemplateParser.y"
+ public function yy_r166(){
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1224 "src/Parser/TemplateParser.y"
+ public function yy_r169(){
+ $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1233 "src/Parser/TemplateParser.y"
+ public function yy_r171(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method');
+ }
+// line 1238 "src/Parser/TemplateParser.y"
+ public function yy_r172(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'method');
+ }
+// line 1243 "src/Parser/TemplateParser.y"
+ public function yy_r173(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '');
+ }
+// line 1248 "src/Parser/TemplateParser.y"
+ public function yy_r174(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property');
+ }
+// line 1253 "src/Parser/TemplateParser.y"
+ public function yy_r175(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property');
+ }
+// line 1259 "src/Parser/TemplateParser.y"
+ public function yy_r176(){
+ $this->_retvalue = ' '. trim($this->yystack[$this->yyidx + 0]->minor) . ' ';
+ }
+// line 1263 "src/Parser/TemplateParser.y"
+ public function yy_r177(){
+ static $lops = array(
+ 'eq' => ' == ',
+ 'ne' => ' != ',
+ 'neq' => ' != ',
+ 'gt' => ' > ',
+ 'ge' => ' >= ',
+ 'gte' => ' >= ',
+ 'lt' => ' < ',
+ 'le' => ' <= ',
+ 'lte' => ' <= ',
+ 'mod' => ' % ',
+ 'and' => ' && ',
+ 'or' => ' || ',
+ 'xor' => ' xor ',
+ );
+ $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue = $lops[$op];
+ }
+// line 1282 "src/Parser/TemplateParser.y"
+ public function yy_r178(){
+ static $tlops = array(
+ 'isdivby' => array('op' => ' % ', 'pre' => '!('),
+ 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
+ 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ );
+ $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue = $tlops[$op];
+ }
+// line 1295 "src/Parser/TemplateParser.y"
+ public function yy_r179(){
+ static $scond = array (
+ 'iseven' => '!(1 & ',
+ 'isnoteven' => '(1 & ',
+ 'isodd' => '(1 & ',
+ 'isnotodd' => '!(1 & ',
+ );
+ $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue = $scond[$op];
+ }
+// line 1309 "src/Parser/TemplateParser.y"
+ public function yy_r180(){
+ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';
+ }
+// line 1320 "src/Parser/TemplateParser.y"
+ public function yy_r183(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1328 "src/Parser/TemplateParser.y"
+ public function yy_r185(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1332 "src/Parser/TemplateParser.y"
+ public function yy_r186(){
+ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1348 "src/Parser/TemplateParser.y"
+ public function yy_r189(){
+ $this->compiler->leaveDoubleQuote();
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php($this);
+ }
+// line 1354 "src/Parser/TemplateParser.y"
+ public function yy_r190(){
+ $this->yystack[$this->yyidx + -1]->minor->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 1359 "src/Parser/TemplateParser.y"
+ public function yy_r191(){
+ $this->_retvalue = new Dq($this, $this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1363 "src/Parser/TemplateParser.y"
+ public function yy_r192(){
+ $this->_retvalue = new Code('(string)'.$this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 1367 "src/Parser/TemplateParser.y"
+ public function yy_r193(){
+ $this->_retvalue = new Code('(string)('.$this->yystack[$this->yyidx + -1]->minor.')');
+ }
+// line 1371 "src/Parser/TemplateParser.y"
+ public function yy_r194(){
+ $this->_retvalue = new Code('(string)$_smarty_tpl->getValue(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')');
+ }
+// line 1383 "src/Parser/TemplateParser.y"
+ public function yy_r197(){
+ $this->_retvalue = new Tag($this, $this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1387 "src/Parser/TemplateParser.y"
+ public function yy_r198(){
+ $this->_retvalue = new DqContent($this->yystack[$this->yyidx + 0]->minor);
+ }
+
+ private $_retvalue;
+
+ public function yy_reduce($yyruleno)
+ {
+ if ($this->yyTraceFILE && $yyruleno >= 0
+ && $yyruleno < count(self::$yyRuleName)) {
+ fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n",
+ $this->yyTracePrompt, $yyruleno,
+ self::$yyRuleName[$yyruleno]);
+ }
+
+ $this->_retvalue = $yy_lefthand_side = null;
+ if (isset(self::$yyReduceMap[$yyruleno])) {
+ // call the action
+ $this->_retvalue = null;
+ $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
+ $yy_lefthand_side = $this->_retvalue;
+ }
+ $yygoto = self::$yyRuleInfo[$yyruleno][0];
+ $yysize = self::$yyRuleInfo[$yyruleno][1];
+ $this->yyidx -= $yysize;
+ for ($i = $yysize; $i; $i--) {
+ // pop all of the right-hand side parameters
+ array_pop($this->yystack);
+ }
+ $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
+ if ($yyact < self::YYNSTATE) {
+ if (!$this->yyTraceFILE && $yysize) {
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $yyact;
+ $x->major = $yygoto;
+ $x->minor = $yy_lefthand_side;
+ $this->yystack[$this->yyidx] = $x;
+ } else {
+ $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
+ }
+ } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yy_accept();
+ }
+ }
+
+ public function yy_parse_failed()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
+ } while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ }
+
+ public function yy_syntax_error($yymajor, $TOKEN)
+ {
+// line 225 "src/Parser/TemplateParser.y"
+
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_template_error();
+ }
+
+ public function yy_accept()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
+ } while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+// line 218 "src/Parser/TemplateParser.y"
+
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+ }
+
+ public function doParse($yymajor, $yytokenvalue)
+ {
+ $yyerrorhit = 0; /* True if yymajor has invoked an error */
+
+ if ($this->yyidx === null || $this->yyidx < 0) {
+ $this->yyidx = 0;
+ $this->yyerrcnt = -1;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = 0;
+ $x->major = 0;
+ $this->yystack = array();
+ $this->yystack[] = $x;
+ }
+ $yyendofinput = ($yymajor==0);
+
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sInput %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ }
+
+ do {
+ $yyact = $this->yy_find_shift_action($yymajor);
+ if ($yymajor < self::YYERRORSYMBOL &&
+ !$this->yy_is_expected_token($yymajor)) {
+ // force a syntax error
+ $yyact = self::YY_ERROR_ACTION;
+ }
+ if ($yyact < self::YYNSTATE) {
+ $this->yy_shift($yyact, $yymajor, $yytokenvalue);
+ $this->yyerrcnt--;
+ if ($yyendofinput && $this->yyidx >= 0) {
+ $yymajor = 0;
+ } else {
+ $yymajor = self::YYNOCODE;
+ }
+ } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+ $this->yy_reduce($yyact - self::YYNSTATE);
+ } elseif ($yyact === self::YY_ERROR_ACTION) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sSyntax Error!\n",
+ $this->yyTracePrompt);
+ }
+ if (self::YYERRORSYMBOL) {
+ if ($this->yyerrcnt < 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $yymx = $this->yystack[$this->yyidx]->major;
+ if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sDiscard input token %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ }
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $yymajor = self::YYNOCODE;
+ } else {
+ while ($this->yyidx >= 0 &&
+ $yymx !== self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
+ ){
+ $this->yy_pop_parser_stack();
+ }
+ if ($this->yyidx < 0 || $yymajor==0) {
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $this->yy_parse_failed();
+ $yymajor = self::YYNOCODE;
+ } elseif ($yymx !== self::YYERRORSYMBOL) {
+ $u2 = 0;
+ $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
+ }
+ }
+ $this->yyerrcnt = 3;
+ $yyerrorhit = 1;
+ } else {
+ if ($this->yyerrcnt <= 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $this->yyerrcnt = 3;
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ if ($yyendofinput) {
+ $this->yy_parse_failed();
+ }
+ $yymajor = self::YYNOCODE;
+ }
+ } else {
+ $this->yy_accept();
+ $yymajor = self::YYNOCODE;
+ }
+ } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
+ }
+}
+
diff --git a/vendor/smarty/smarty/src/Parser/TemplateParser.y b/vendor/smarty/smarty/src/Parser/TemplateParser.y
new file mode 100644
index 000000000..58d115fe0
--- /dev/null
+++ b/vendor/smarty/smarty/src/Parser/TemplateParser.y
@@ -0,0 +1,1390 @@
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+%stack_size 500
+%name TP_
+%declare_class {
+
+namespace Smarty\Parser;
+
+use \Smarty\Lexer\TemplateLexer as Lexer;
+use \Smarty\ParseTree\Template as TemplateParseTree;
+use \Smarty\Compiler\Template as TemplateCompiler;
+use \Smarty\ParseTree\Code;
+use \Smarty\ParseTree\Dq;
+use \Smarty\ParseTree\DqContent;
+use \Smarty\ParseTree\Tag;
+use \Smarty\CompilerException;
+
+/**
+* Smarty Template Parser Class
+*
+* This is the template parser.
+* It is generated from the TemplateParser.y file
+*
+* @author Uwe Tews <uwe.tews@googlemail.com>
+*/
+class TemplateParser
+}
+%include_class
+{
+ const ERR1 = 'Security error: Call to private object member not allowed';
+ const ERR2 = 'Security error: Call to dynamic object member not allowed';
+
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+
+ /**
+ * @var
+ */
+ public $yymajor;
+
+ /**
+ * last index of array variable
+ *
+ * @var mixed
+ */
+ public $last_index;
+
+ /**
+ * last variable name
+ *
+ * @var string
+ */
+ public $last_variable;
+
+ /**
+ * root parse tree buffer
+ *
+ * @var TemplateParseTree
+ */
+ public $root_buffer;
+
+ /**
+ * current parse tree object
+ *
+ * @var \Smarty\ParseTree\Base
+ */
+ public $current_buffer;
+
+ /**
+ * lexer object
+ *
+ * @var Lexer
+ */
+ public $lex;
+
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+
+ /**
+ * {strip} status
+ *
+ * @var bool
+ */
+ public $strip = false;
+ /**
+ * compiler object
+ *
+ * @var TemplateCompiler
+ */
+ public $compiler = null;
+
+ /**
+ * smarty object
+ *
+ * @var \Smarty\Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * template object
+ *
+ * @var \Smarty\Template
+ */
+ public $template = null;
+
+ /**
+ * block nesting level
+ *
+ * @var int
+ */
+ public $block_nesting_level = 0;
+
+ /**
+ * security object
+ *
+ * @var \Smarty\Security
+ */
+ public $security = null;
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty\ParseTree\Base[]
+ */
+ public $template_prefix = array();
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty\ParseTree\Base[]
+ */
+ public $template_postfix = array();
+
+ /**
+ * constructor
+ *
+ * @param Lexer $lex
+ * @param TemplateCompiler $compiler
+ */
+ public function __construct(Lexer $lex, TemplateCompiler $compiler)
+ {
+ $this->lex = $lex;
+ $this->compiler = $compiler;
+ $this->template = $this->compiler->getTemplate();
+ $this->smarty = $this->template->getSmarty();
+ $this->security = $this->smarty->security_policy ?? false;
+ $this->current_buffer = $this->root_buffer = new TemplateParseTree();
+ }
+
+ /**
+ * insert PHP code in current buffer
+ *
+ * @param string $code
+ */
+ public function insertPhpCode($code)
+ {
+ $this->current_buffer->append_subtree($this, new Tag($this, $code));
+ }
+
+ /**
+ * error rundown
+ *
+ */
+ public function errorRunDown()
+ {
+ while ($this->yystack !== array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ /**
+ * merge PHP code with prefix code and return parse tree tag object
+ *
+ * @param string $code
+ *
+ * @return Tag
+ */
+ private function mergePrefixCode($code)
+ {
+ $tmp = '';
+ foreach ($this->compiler->prefix_code as $preCode) {
+ $tmp .= $preCode;
+ }
+ $this->compiler->prefix_code = array();
+ $tmp .= $code;
+ return new Tag($this, $this->compiler->processNocacheCode($tmp));
+ }
+
+}
+
+%token_prefix TP_
+
+%parse_accept
+{
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+}
+
+%syntax_error
+{
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_template_error();
+}
+
+%stack_overflow
+{
+ $this->internalError = true;
+ $this->compiler->trigger_template_error('Stack overflow in template parser');
+}
+
+
+%right VERT.
+%left COLON.
+
+
+ //
+ // complete template
+ //
+start(res) ::= template. {
+ $this->root_buffer->prepend_array($this, $this->template_prefix);
+ $this->root_buffer->append_array($this, $this->template_postfix);
+ res = $this->root_buffer->to_smarty_php($this);
+}
+
+ // template text
+template ::= template TEXT(B). {
+ $text = $this->yystack[ $this->yyidx + 0 ]->minor;
+
+ if ((string)$text == '') {
+ $this->current_buffer->append_subtree($this, null);
+ }
+
+ $this->current_buffer->append_subtree($this, new \Smarty\ParseTree\Text($text, $this->strip));
+}
+ // strip on
+template ::= template STRIPON. {
+ $this->strip = true;
+}
+ // strip off
+template ::= template STRIPOFF. {
+ $this->strip = false;
+}
+
+ // Literal
+template ::= template LITERALSTART literal_e2(B) LITERALEND. {
+ $this->current_buffer->append_subtree($this, new \Smarty\ParseTree\Text(B));
+}
+
+
+literal_e2(A) ::= literal_e1(B) LITERALSTART literal_e1(C) LITERALEND. {
+ A = B.C;
+}
+literal_e2(A) ::= literal_e1(B). {
+ A = B;
+}
+
+literal_e1(A) ::= literal_e1(B) LITERAL(C). {
+ A = B.C;
+
+}
+
+literal_e1(A) ::= . {
+ A = '';
+}
+ // Smarty tag
+template ::= template smartytag(B). {
+ $this->current_buffer->append_subtree($this, $this->mergePrefixCode(B));
+ $this->compiler->has_variable_string = false;
+ $this->block_nesting_level = $this->compiler->getTagStackCount();
+}
+
+
+ // empty template
+template ::= .
+
+smartytag(A) ::= SIMPELOUTPUT(B). {
+ $var = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ $attributes = [];
+ if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
+ $attributes[] = 'nocache';
+ $var = $match[1];
+ }
+ $this->compiler->triggerTagNoCache($var);
+ A = $this->compiler->compilePrintExpression('$_smarty_tpl->getValue(\''.$var.'\')', $attributes);
+}
+
+// simple tag like {name}
+smartytag(A)::= SIMPLETAG(B). {
+ $tag = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()));
+ if ($tag == 'strip') {
+ $this->strip = true;
+ A = null;
+ } else {
+ if (defined($tag)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($tag, $this->compiler);
+ }
+ A = $this->compiler->compilePrintExpression($tag);
+ } else {
+ if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
+ A = $this->compiler->compileTag($match[1],array('\'nocache\''));
+ } else {
+ A = $this->compiler->compileTag($tag,array());
+ }
+ }
+ }
+}
+ // {$smarty.block.child} or {$smarty.block.parent}
+smartytag(A) ::= SMARTYBLOCKCHILDPARENT(i). {
+ $j = strrpos(i,'.');
+ if (i[$j+1] == 'c') {
+ // {$smarty.block.child}
+ A = $this->compiler->compileChildBlock();
+ } else {
+ // {$smarty.block.parent}
+ A = $this->compiler->compileParentBlock();
+ }
+}
+
+smartytag(A) ::= LDEL tagbody(B) RDEL. {
+ A = B;
+}
+
+ smartytag(A) ::= tag(B) RDEL. {
+ A = B;
+ }
+ // output with optional attributes
+tagbody(A) ::= outattr(B). {
+ A = $this->compiler->compilePrintExpression(B[0], B[1]);
+}
+
+//
+// Smarty tags start here
+//
+
+ // assign new style
+tagbody(A) ::= DOLLARID(B) eqoutattr(C). {
+ A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>'\''.substr(B,1).'\'')),C[1]));
+}
+
+tagbody(A) ::= varindexed(B) eqoutattr(C). {
+ A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>B['var'])),C[1]),array('smarty_internal_index'=>B['smarty_internal_index']));
+}
+
+eqoutattr(A) ::= EQUAL outattr(B). {
+ A = B;
+}
+
+outattr(A) ::= output(B) attributes(C). {
+ A = array(B,C);
+}
+
+output(A) ::= variablevalue(B). {
+ A = B;
+}
+output(A) ::= value(B). {
+ A = B;
+}
+output(A) ::= expr(B). {
+ A = B;
+}
+
+ // tag with optional Smarty2 style attributes
+tag(res) ::= LDEL ID(i) attributes(a). {
+ if (defined(i)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(i, $this->compiler);
+ }
+ res = $this->compiler->compilePrintExpression(i, a);
+ } else {
+ res = $this->compiler->compileTag(i,a);
+ }
+}
+tag(res) ::= LDEL ID(i). {
+ if (defined(i)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(i, $this->compiler);
+ }
+ res = $this->compiler->compilePrintExpression(i);
+ } else {
+ res = $this->compiler->compileTag(i,array());
+ }
+}
+
+
+ // tag with modifier and optional Smarty2 style attributes
+tag(res) ::= LDEL ID(i) modifierlist(l)attributes(a). {
+ if (defined(i)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(i, $this->compiler);
+ }
+ res = $this->compiler->compilePrintExpression(i, a, l);
+ } else {
+ res = $this->compiler->compileTag(i,a, array('modifierlist'=>l));
+ }
+}
+
+ // registered object tag
+tag(res) ::= LDEL ID(i) PTR ID(m) attributes(a). {
+ res = $this->compiler->compileTag(i,a,array('object_method'=>m));
+}
+
+ // registered object tag with modifiers
+tag(res) ::= LDEL ID(i) PTR ID(me) modifierlist(l) attributes(a). {
+ res = $this->compiler->compileTag(i,a,array('modifierlist'=>l, 'object_method'=>me));
+}
+
+ // {if}, {elseif} and {while} tag
+tag(res) ::= LDELIF(i) expr(ie). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>ie));
+}
+
+tag(res) ::= LDELIF(i) expr(ie) attributes(a). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,a,array('if condition'=>ie));
+}
+
+tag(res) ::= LDELIF(i) statement(ie). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>ie));
+}
+
+tag(res) ::= LDELIF(i) statement(ie) attributes(a). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,a,array('if condition'=>ie));
+}
+
+ // {for} tag
+tag(res) ::= LDELFOR statements(st) SEMICOLON expr(ie) SEMICOLON varindexed(v2) foraction(e2) attributes(a). {
+ res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('ifexp'=>ie),array('var'=>v2),array('step'=>e2))),1);
+}
+
+ foraction(res) ::= EQUAL expr(e). {
+ res = '='.e;
+}
+
+ foraction(res) ::= INCDEC(e). {
+ res = e;
+}
+
+tag(res) ::= LDELFOR statement(st) TO expr(v) attributes(a). {
+ res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('to'=>v))),0);
+}
+
+tag(res) ::= LDELFOR statement(st) TO expr(v) STEP expr(v2) attributes(a). {
+ res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('to'=>v),array('step'=>v2))),0);
+}
+
+ // {foreach} tag
+tag(res) ::= LDELFOREACH SPACE expr(e) AS varvar(v0) attributes(a). {
+ res = $this->compiler->compileTag('foreach',array_merge(a,array(array('from'=>e),array('item'=>v0))));
+}
+
+tag(res) ::= LDELFOREACH SPACE expr(e) AS varvar(v1) APTR varvar(v0) attributes(a). {
+ res = $this->compiler->compileTag('foreach',array_merge(a,array(array('from'=>e),array('item'=>v0),array('key'=>v1))));
+}
+tag(res) ::= LDELFOREACH attributes(a). {
+ res = $this->compiler->compileTag('foreach',a);
+}
+
+ // {setfilter}
+tag(res) ::= LDELSETFILTER ID(m) modparameters(p). {
+ res = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array(m),p))));
+}
+
+tag(res) ::= LDELSETFILTER ID(m) modparameters(p) modifierlist(l). {
+ res = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array(m),p)),l)));
+}
+
+
+ // end of block tag {/....}
+smartytag(res)::= CLOSETAG(t). {
+ $tag = trim(substr(t, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /');
+ if ($tag === 'strip') {
+ $this->strip = false;
+ res = null;
+ } else {
+ res = $this->compiler->compileTag($tag.'close',array());
+ }
+ }
+tag(res) ::= LDELSLASH ID(i). {
+ res = $this->compiler->compileTag(i.'close',array());
+}
+
+tag(res) ::= LDELSLASH ID(i) modifierlist(l). {
+ res = $this->compiler->compileTag(i.'close',array(),array('modifier_list'=>l));
+}
+
+ // end of block object tag {/....}
+tag(res) ::= LDELSLASH ID(i) PTR ID(m). {
+ res = $this->compiler->compileTag(i.'close',array(),array('object_method'=>m));
+}
+
+tag(res) ::= LDELSLASH ID(i) PTR ID(m) modifierlist(l). {
+ res = $this->compiler->compileTag(i.'close',array(),array('object_method'=>m, 'modifier_list'=>l));
+}
+
+//
+//Attributes of Smarty tags
+//
+ // list of attributes
+attributes(res) ::= attributes(a1) attribute(a2). {
+ res = a1;
+ res[] = a2;
+}
+
+ // single attribute
+attributes(res) ::= attribute(a). {
+ res = array(a);
+}
+
+ // no attributes
+attributes(res) ::= . {
+ res = array();
+}
+
+ // attribute
+attribute(res) ::= SPACE ID(v) EQUAL ID(id). {
+ if (defined(id)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(id, $this->compiler);
+ }
+ res = array(v=>id);
+ } else {
+ res = array(v=>'\''.id.'\'');
+ }
+}
+
+attribute(res) ::= ATTR(v) expr(e). {
+ res = array(trim(v," =\n\r\t")=>e);
+}
+
+attribute(res) ::= ATTR(v) value(e). {
+ res = array(trim(v," =\n\r\t")=>e);
+}
+
+attribute(res) ::= SPACE ID(v). {
+ res = '\''.v.'\'';
+}
+
+attribute(res) ::= SPACE expr(e). {
+ res = e;
+}
+
+attribute(res) ::= SPACE value(v). {
+ res = v;
+}
+
+attribute(res) ::= SPACE INTEGER(i) EQUAL expr(e). {
+ res = array(i=>e);
+}
+
+
+
+//
+// statement
+//
+statements(res) ::= statement(s). {
+ res = array(s);
+}
+
+statements(res) ::= statements(s1) COMMA statement(s). {
+ s1[]=s;
+ res = s1;
+}
+
+statement(res) ::= DOLLARID(i) EQUAL INTEGER(e). {
+ res = array('var' => '\''.substr(i,1).'\'', 'value'=>e);
+}
+statement(res) ::= DOLLARID(i) EQUAL expr(e). {
+ res = array('var' => '\''.substr(i,1).'\'', 'value'=>e);
+}
+
+statement(res) ::= varindexed(vi) EQUAL expr(e). {
+ res = array('var' => vi, 'value'=>e);
+}
+
+statement(res) ::= OPENP statement(st) CLOSEP. {
+ res = st;
+}
+
+
+//
+// expressions
+//
+
+ // single value
+expr(res) ::= value(v). {
+ res = v;
+}
+
+ // nullcoalescing
+expr(res) ::= nullcoalescing(v). {
+ res = v;
+}
+
+ // ternary
+expr(res) ::= ternary(v). {
+ res = v;
+}
+
+ // ++$a / --$a
+expr(res) ::= INCDEC(i2) DOLLARID(i). {
+ res = '$_smarty_tpl->getVariable(\''. substr(i,1) .'\')->preIncDec(\'' . i2 . '\')';
+}
+
+ // $a++ / $a--
+expr(res) ::= DOLLARID(i) INCDEC(i2). {
+ res = '$_smarty_tpl->getVariable(\''. substr(i,1) .'\')->postIncDec(\'' . i2 . '\')';
+}
+
+ // resources/streams
+expr(res) ::= DOLLARID(i) COLON ID(i2). {
+ res = '$_smarty_tpl->getStreamVariable(\''.substr(i,1).'://' . i2 . '\')';
+}
+
+ // arithmetic expression
+expr(res) ::= expr(e) MATH(m) value(v). {
+ res = e . trim(m) . v;
+}
+
+expr(res) ::= expr(e) UNIMATH(m) value(v). {
+ res = e . trim(m) . v;
+}
+
+// if expression
+ // special conditions
+expr(res) ::= expr(e1) tlop(c) value(e2). {
+ res = c['pre']. e1.c['op'].e2 .')';
+}
+ // simple expression
+expr(res) ::= expr(e1) lop(c) expr(e2). {
+ res = e1.c.e2;
+}
+
+expr(res) ::= expr(e1) scond(c). {
+ res = c . e1 . ')';
+}
+
+isin(res) ::= ISIN(o). {
+ static $isin = [
+ 'isin' => 'in_array(',
+ 'isnotin' => '!in_array(',
+ ];
+ $op = strtolower(str_replace(' ', '', o));
+ res = $isin[$op];
+}
+
+expr(res) ::= expr(e1) isin(c) array(a). {
+ res = c . e1.','.a.')';
+}
+
+expr(res) ::= expr(e1) isin(c) value(v). {
+ res = c . e1.',(array)'.v.')';
+}
+
+// null coalescing
+nullcoalescing(res) ::= expr(v) QMARK QMARK expr(e2). {
+ res = v.' ?? '.e2;
+}
+
+//
+// ternary
+//
+ternary(res) ::= expr(v) QMARK DOLLARID(e1) COLON expr(e2). {
+ $this->compiler->triggerTagNoCache(substr(e1,1));
+ res = v.' ? $_smarty_tpl->getValue(\''.substr(e1,1).'\') : '.e2;
+}
+
+ternary(res) ::= expr(v) QMARK value(e1) COLON expr(e2). {
+ res = v.' ? '.e1.' : '.e2;
+}
+
+ternary(res) ::= expr(v) QMARK expr(e1) COLON expr(e2). {
+ res = v.' ? '.e1.' : '.e2;
+}
+
+// shorthand ternary
+ternary(res) ::= expr(v) QMARK COLON expr(e2). {
+ res = v.' ?: '.e2;
+}
+
+ // value
+value(res) ::= variablevalue(v). {
+ res = v;
+}
+
+ // +/- value
+value(res) ::= UNIMATH(m) value(v). {
+ res = m.v;
+}
+
+ // logical negation
+value(res) ::= NOT value(v). {
+ res = '!'.v;
+}
+
+value(res) ::= TYPECAST(t) value(v). {
+ res = t.v;
+}
+
+value(res) ::= variablevalue(v) INCDEC(o). {
+ res = v.o;
+}
+
+ // numeric
+value(res) ::= HEX(n). {
+ res = n;
+}
+
+value(res) ::= INTEGER(n). {
+ res = n;
+}
+
+value(res) ::= INTEGER(n1) DOT INTEGER(n2). {
+ res = n1.'.'.n2;
+}
+
+value(res) ::= INTEGER(n1) DOT. {
+ res = n1.'.';
+}
+
+value(res) ::= DOT INTEGER(n1). {
+ res = '.'.n1;
+}
+
+ // ID, true, false, null
+value(res) ::= ID(id). {
+ if (defined(id)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(id, $this->compiler);
+ }
+ res = id;
+ } else {
+ res = '\''.id.'\'';
+ }
+}
+
+ // function call
+value(res) ::= function(f). {
+ res = f;
+}
+
+ // expression
+value(res) ::= OPENP expr(e) CLOSEP. {
+ res = '('. e .')';
+}
+
+value(res) ::= variablevalue(v1) INSTANCEOF(i) ns1(v2). {
+ res = v1.i.v2;
+}
+value(res) ::= variablevalue(v1) INSTANCEOF(i) variablevalue(v2). {
+ res = v1.i.v2;
+}
+
+ // singele quoted string
+value(res) ::= SINGLEQUOTESTRING(t). {
+ res = t;
+}
+
+ // double quoted string
+value(res) ::= doublequoted_with_quotes(s). {
+ res = s;
+}
+
+
+value(res) ::= varindexed(vi) DOUBLECOLON static_class_access(r). {
+ if ($this->security && $this->security->static_classes !== array()) {
+ $this->compiler->trigger_template_error('dynamic static class not allowed by security setting');
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ if (vi['var'] === '\'smarty\'') {
+ $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,vi['smarty_internal_index']).';?>');
+ } else {
+ $this->compiler->triggerTagNoCache(vi['var']);
+ $this->compiler->appendPrefixCode("<?php {$prefixVar} = \$_smarty_tpl->getValue(" . vi['var'] . ')'.vi['smarty_internal_index'].';?>');
+ }
+ res = $prefixVar .'::'.r[0].r[1];
+}
+
+ // Smarty tag
+value(res) ::= smartytag(st). {
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $tmp = $this->compiler->appendCode('<?php ob_start();?>', (string) st);
+ $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php {$prefixVar} = ob_get_clean();?>"));
+ res = $prefixVar;
+}
+
+value(res) ::= value(v) modifierlist(l). {
+ res = $this->compiler->compileModifier(l, v);
+}
+ // name space constant
+value(res) ::= NAMESPACE(c). {
+ res = c;
+}
+
+ // array
+value(res) ::= arraydef(a). {
+ res = a;
+}
+ // static class access
+value(res) ::= ns1(c)DOUBLECOLON static_class_access(s). {
+ if (!in_array(strtolower(c), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess(c, s, $this->compiler))) {
+ if (isset($this->smarty->registered_classes[c])) {
+ res = $this->smarty->registered_classes[c].'::'.s[0].s[1];
+ } else {
+ res = c.'::'.s[0].s[1];
+ }
+ } else {
+ $this->compiler->trigger_template_error ('static class \''.c.'\' is undefined or not allowed by security setting');
+ }
+}
+//
+// namespace stuff
+//
+
+ns1(res) ::= ID(i). {
+ res = i;
+}
+
+ns1(res) ::= NAMESPACE(i). {
+ res = i;
+ }
+
+
+// variable lists
+
+// multiple variables
+variablelist(res) ::= variablelist(l) COMMA variable(v). {
+ res = array_merge(l,array(v));
+}
+
+variablelist(res) ::= variablelist(l) COMMA expr(e). {
+ res = array_merge(l,array(e));
+}
+
+// single variable
+variablelist(res) ::= variable(v). {
+ res = array(v);
+}
+
+// single expression
+variablelist(res) ::= expr(e). {
+ res = array(e);
+}
+
+// no variable
+variablelist(res) ::= . {
+ res = array();
+}
+
+//
+// variables
+//
+ // Smarty variable (optional array)
+variable(res) ::= DOLLARID(i). {
+ $this->compiler->triggerTagNoCache(substr(i,1));
+ res = array('$_smarty_tpl->hasVariable(\''.substr(i,1).'\')','$_smarty_tpl->getValue(\''.substr(i,1).'\')');
+}
+variable(res) ::= varindexed(vi). {
+ if (vi['var'] === '\'smarty\'') {
+ $smarty_var = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,vi['smarty_internal_index']);
+ res = array('true', $smarty_var);
+ } else {
+ // used for array reset,next,prev,end,current
+ $this->last_variable = vi['var'];
+ $this->last_index = vi['smarty_internal_index'];
+ $this->compiler->triggerTagNoCache(vi['var']);
+ res = array('true', '$_smarty_tpl->getValue(' . vi['var'] . ')'.vi['smarty_internal_index']);
+ }
+}
+
+ // variable with property
+variable(res) ::= varvar(v) AT ID(p). {
+ res = array('true', '$_smarty_tpl->getVariable('. v .')->'.p);
+}
+
+ // object
+variable(res) ::= object(o). {
+ res = array('true', o);
+}
+
+ // config variable
+configvariable(res) ::= HATCH ID(i) HATCH. {
+ res = $this->compiler->compileConfigVariable('\'' . i . '\'');
+}
+
+configvariable(res) ::= HATCH ID(i) HATCH arrayindex(a). {
+ res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . i . '\'') . ') ? $tmp'.a.' :null)';
+}
+
+configvariable(res) ::= HATCH variablevalue(v) HATCH. {
+ res = $this->compiler->compileConfigVariable(v);
+}
+
+configvariable(res) ::= HATCH variablevalue(v) HATCH arrayindex(a). {
+ res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable(v) . ') ? $tmp'.a.' : null)';
+}
+
+variablevalue(res) ::= variable(v). {
+ res = v[1];
+}
+
+variablevalue(res) ::= configvariable(v). {
+ res = v;
+}
+
+varindexed(res) ::= DOLLARID(i) arrayindex(a). {
+ res = array('var'=>'\''.substr(i,1).'\'', 'smarty_internal_index'=>a);
+}
+varindexed(res) ::= varvar(v) arrayindex(a). {
+ res = array('var'=>v, 'smarty_internal_index'=>a);
+}
+
+//
+// array index
+//
+ // multiple array index
+arrayindex(res) ::= arrayindex(a1) indexdef(a2). {
+ res = a1.a2;
+}
+
+ // no array index
+arrayindex ::= . {
+ return;
+}
+
+// single index definition
+ // Smarty2 style index
+indexdef(res) ::= DOT DOLLARID(i). {
+ $this->compiler->triggerTagNoCache(substr(i,1));
+ res = '[$_smarty_tpl->getValue(\''.substr(i,1).'\')]';
+}
+indexdef(res) ::= DOT varvar(v). {
+ $this->compiler->triggerTagNoCache(v);
+ res = '[$_smarty_tpl->getValue(' . v . ')]';
+}
+
+indexdef(res) ::= DOT varvar(v) AT ID(p). {
+ $this->compiler->triggerTagNoCache(v);
+ res = '[$_smarty_tpl->getValue(' . v . ')->'.p.']';
+}
+
+indexdef(res) ::= DOT ID(i). {
+ res = '[\''. i .'\']';
+}
+
+indexdef(res) ::= DOT INTEGER(n). {
+ res = '['. n .']';
+}
+
+
+indexdef(res) ::= DOT LDEL expr(e) RDEL. {
+ res = '['. e .']';
+}
+
+ // section tag index
+indexdef(res) ::= OPENB ID(i)CLOSEB. {
+ res = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.i.'\'][\'index\']').']';
+}
+
+indexdef(res) ::= OPENB ID(i) DOT ID(i2) CLOSEB. {
+ res = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.i.'\'][\''.i2.'\']').']';
+}
+indexdef(res) ::= OPENB SINGLEQUOTESTRING(s) CLOSEB. {
+ res = '['.s.']';
+}
+indexdef(res) ::= OPENB INTEGER(n) CLOSEB. {
+ res = '['.n.']';
+}
+indexdef(res) ::= OPENB DOLLARID(i) CLOSEB. {
+ $this->compiler->triggerTagNoCache(substr(i,1));
+ res = '[$_smarty_tpl->getValue(\''.substr(i,1).'\')]';
+}
+indexdef(res) ::= OPENB variablevalue(v) CLOSEB. {
+ res = '['.v.']';
+}
+indexdef(res) ::= OPENB value(v) CLOSEB. {
+ res = '['.v.']';
+}
+
+ // PHP style index
+indexdef(res) ::= OPENB expr(e) CLOSEB. {
+ res = '['. e .']';
+}
+
+ // for assign append array
+indexdef(res) ::= OPENB CLOSEB. {
+ res = '[]';
+}
+
+
+//
+// variable variable names
+//
+
+ // singel identifier element
+varvar(res) ::= DOLLARID(i). {
+ res = '\''.substr(i,1).'\'';
+}
+ // single $
+varvar(res) ::= DOLLAR. {
+ res = '\'\'';
+}
+
+ // sequence of identifier elements
+varvar(res) ::= varvar(v1) varvarele(v2). {
+ res = v1.'.'.v2;
+}
+
+ // fix sections of element
+varvarele(res) ::= ID(s). {
+ res = '\''.s.'\'';
+}
+varvarele(res) ::= SIMPELOUTPUT(i). {
+ $var = trim(substr(i, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ $this->compiler->triggerTagNoCache($var);
+ res = '$_smarty_tpl->getValue(\''.$var.'\')';
+}
+
+ // variable sections of element
+varvarele(res) ::= LDEL expr(e) RDEL. {
+ res = '('.e.')';
+}
+
+//
+// objects
+//
+object(res) ::= varindexed(vi) objectchain(oc). {
+ if (vi['var'] === '\'smarty\'') {
+ res = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,vi['smarty_internal_index']).oc;
+ } else {
+ $this->compiler->triggerTagNoCache(vi['var']);
+ res = '$_smarty_tpl->getValue(' . vi['var'] . ')'.vi['smarty_internal_index'].oc;
+ }
+}
+
+ // single element
+objectchain(res) ::= objectelement(oe). {
+ res = oe;
+}
+
+ // chain of elements
+objectchain(res) ::= objectchain(oc) objectelement(oe). {
+ res = oc.oe;
+}
+
+ // variable
+objectelement(res)::= PTR ID(i) arrayindex(a). {
+ if ($this->security && substr(i,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ res = '->'.i.a;
+}
+
+objectelement(res)::= PTR varvar(v) arrayindex(a). {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $this->compiler->triggerTagNoCache(v);
+ res = '->{$_smarty_tpl->getValue(' . v . ')'.a.'}';
+}
+
+objectelement(res)::= PTR LDEL expr(e) RDEL arrayindex(a). {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ res = '->{'.e.a.'}';
+}
+
+objectelement(res)::= PTR ID(ii) LDEL expr(e) RDEL arrayindex(a). {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ res = '->{\''.ii.'\'.'.e.a.'}';
+}
+
+ // method
+objectelement(res)::= PTR method(f). {
+ res = '->'.f;
+}
+
+
+//
+// function
+//
+function(res) ::= ns1(f) OPENP variablelist(v) CLOSEP. {
+
+ if (f == 'isset') {
+ res = '(true';
+ if (count(v) == 0) {
+ throw new CompilerException("Invalid number of arguments for isset. isset expects at least one parameter.");
+ }
+ foreach (v as $value) {
+ if (is_array($value)) {
+ res .= ' && (' . $value[0] . ' && null !== (' . $value[1] . ' ?? null))';
+ } else {
+ res .= ' && (' . $value . ' !== null)';
+ }
+ }
+ res .= ')';
+ } elseif (f == 'empty') {
+ if (count(v) != 1) {
+ throw new CompilerException("Invalid number of arguments for empty. empty expects at exactly one parameter.");
+ }
+ if (is_array(v[0])) {
+ res .= '( !' . v[0][0] . ' || empty(' . v[0][1] . '))';
+ } else {
+ res = 'false == ' . v[0];
+ }
+ } else {
+ $p = array();
+ foreach (v as $value) {
+ if (is_array($value)) {
+ $p[] = $value[1];
+ } else {
+ $p[] = $value;
+ }
+ }
+ res = $this->compiler->compileModifierInExpression(f, $p);
+ }
+}
+
+
+//
+// method
+//
+method(res) ::= ID(f) OPENP params(p) CLOSEP. {
+ if ($this->security && substr(f,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ res = f . '('. implode(',',p) .')';
+}
+
+method(res) ::= DOLLARID(f) OPENP params(p) CLOSEP. {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $this->compiler->triggerTagNoCache(substr(f,1));
+ $this->compiler->appendPrefixCode("<?php {$prefixVar} = \$_smarty_tpl->getValue('".substr(f,1).'\')'.';?>');
+ res = $prefixVar .'('. implode(',',p) .')';
+}
+
+// function/method parameter
+ // multiple parameters
+params(res) ::= params(p) COMMA expr(e). {
+ res = array_merge(p,array(e));
+}
+
+ // single parameter
+params(res) ::= expr(e). {
+ res = array(e);
+}
+
+ // no parameter
+params(res) ::= . {
+ res = array();
+}
+
+//
+// modifier
+//
+modifierlist(res) ::= modifierlist(l) modifier(m) modparameters(p). {
+ res = array_merge(l,array(array_merge(m,p)));
+}
+
+modifierlist(res) ::= modifier(m) modparameters(p). {
+ res = array(array_merge(m,p));
+}
+
+modifier(res) ::= VERT AT ID(m). {
+ res = array(m);
+}
+
+modifier(res) ::= VERT ID(m). {
+ res = array(m);
+}
+
+//
+// modifier parameter
+//
+ // multiple parameter
+modparameters(res) ::= modparameters(mps) modparameter(mp). {
+ res = array_merge(mps,mp);
+}
+
+ // no parameter
+modparameters(res) ::= . {
+ res = array();
+}
+
+ // parameter expression
+modparameter(res) ::= COLON value(mp). {
+ res = array(mp);
+}
+modparameter(res) ::= COLON UNIMATH(m) value(mp). {
+ res = array(trim(m).mp);
+}
+
+modparameter(res) ::= COLON array(mp). {
+ res = array(mp);
+}
+
+ // static class methode call
+static_class_access(res) ::= method(m). {
+ res = array(m, '', 'method');
+}
+
+ // static class methode call with object chainig
+static_class_access(res) ::= method(m) objectchain(oc). {
+ res = array(m, oc, 'method');
+}
+
+ // static class constant
+static_class_access(res) ::= ID(v). {
+ res = array(v, '');
+}
+
+ // static class variables
+static_class_access(res) ::= DOLLARID(v) arrayindex(a). {
+ res = array(v, a, 'property');
+}
+
+ // static class variables with object chain
+static_class_access(res) ::= DOLLARID(v) arrayindex(a) objectchain(oc). {
+ res = array(v, a.oc, 'property');
+}
+
+
+// if conditions and operators
+lop(res) ::= LOGOP(o). {
+ res = ' '. trim(o) . ' ';
+}
+
+lop(res) ::= SLOGOP(o). {
+ static $lops = array(
+ 'eq' => ' == ',
+ 'ne' => ' != ',
+ 'neq' => ' != ',
+ 'gt' => ' > ',
+ 'ge' => ' >= ',
+ 'gte' => ' >= ',
+ 'lt' => ' < ',
+ 'le' => ' <= ',
+ 'lte' => ' <= ',
+ 'mod' => ' % ',
+ 'and' => ' && ',
+ 'or' => ' || ',
+ 'xor' => ' xor ',
+ );
+ $op = strtolower(preg_replace('/\s*/', '', o));
+ res = $lops[$op];
+}
+tlop(res) ::= TLOGOP(o). {
+ static $tlops = array(
+ 'isdivby' => array('op' => ' % ', 'pre' => '!('),
+ 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
+ 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ );
+ $op = strtolower(preg_replace('/\s*/', '', o));
+ res = $tlops[$op];
+ }
+
+scond(res) ::= SINGLECOND(o). {
+ static $scond = array (
+ 'iseven' => '!(1 & ',
+ 'isnoteven' => '(1 & ',
+ 'isodd' => '(1 & ',
+ 'isnotodd' => '!(1 & ',
+ );
+ $op = strtolower(str_replace(' ', '', o));
+ res = $scond[$op];
+}
+
+//
+// ARRAY element assignment
+//
+arraydef(res) ::= OPENB arrayelements(a) CLOSEB. {
+ res = 'array('.a.')';
+}
+arraydef(res) ::= ARRAYOPEN arrayelements(a) CLOSEP. {
+ res = 'array('.a.')';
+}
+
+arrayelements(res) ::= arrayelement(a). {
+ res = a;
+}
+
+arrayelements(res) ::= arrayelements(a1) COMMA arrayelement(a). {
+ res = a1.','.a;
+}
+
+arrayelements ::= . {
+ return;
+}
+
+arrayelement(res) ::= value(e1) APTR expr(e2). {
+ res = e1.'=>'.e2;
+}
+
+arrayelement(res) ::= ID(i) APTR expr(e2). {
+ res = '\''.i.'\'=>'.e2;
+}
+
+arrayelement(res) ::= expr(e). {
+ res = e;
+}
+
+
+//
+// double quoted strings
+//
+doublequoted_with_quotes(res) ::= QUOTE QUOTE. {
+ res = '\'\'';
+}
+
+doublequoted_with_quotes(res) ::= QUOTE doublequoted(s) QUOTE. {
+ $this->compiler->leaveDoubleQuote();
+ res = s->to_smarty_php($this);
+}
+
+
+doublequoted(res) ::= doublequoted(o1) doublequotedcontent(o2). {
+ o1->append_subtree($this, o2);
+ res = o1;
+}
+
+doublequoted(res) ::= doublequotedcontent(o). {
+ res = new Dq($this, o);
+}
+
+doublequotedcontent(res) ::= BACKTICK variablevalue(v) BACKTICK. {
+ res = new Code('(string)'.v);
+}
+
+doublequotedcontent(res) ::= BACKTICK expr(e) BACKTICK. {
+ res = new Code('(string)('.e.')');
+}
+
+doublequotedcontent(res) ::= DOLLARID(i). {
+ res = new Code('(string)$_smarty_tpl->getValue(\''. substr(i,1) .'\')');
+}
+
+doublequotedcontent(res) ::= LDEL variablevalue(v) RDEL. {
+ res = new Code('(string)'.v);
+}
+
+doublequotedcontent(res) ::= LDEL expr(e) RDEL. {
+ res = new Code('(string)('.e.')');
+}
+
+doublequotedcontent(res) ::= smartytag(st). {
+ res = new Tag($this, st);
+}
+
+doublequotedcontent(res) ::= TEXT(o). {
+ res = new DqContent(o);
+}
+
diff --git a/vendor/smarty/smarty/src/Resource/BasePlugin.php b/vendor/smarty/smarty/src/Resource/BasePlugin.php
new file mode 100644
index 000000000..6d2222237
--- /dev/null
+++ b/vendor/smarty/smarty/src/Resource/BasePlugin.php
@@ -0,0 +1,145 @@
+<?php
+
+namespace Smarty\Resource;
+
+use Smarty\Exception;
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\Template\Source;
+
+/**
+ * Smarty Resource Plugin
+ * Base implementation for resource plugins
+ * @author Rodney Rehm
+ */
+abstract class BasePlugin
+{
+ /**
+ * resource types provided by the core
+ *
+ * @var array
+ */
+ public static $sysplugins = [
+ 'file' => FilePlugin::class,
+ 'string' => StringPlugin::class,
+ 'extends' => ExtendsPlugin::class,
+ 'stream' => StreamPlugin::class,
+ 'eval' => StringEval::class,
+ ];
+
+ /**
+ * Source must be recompiled on every occasion
+ *
+ * @var boolean
+ */
+ public $recompiled = false;
+
+ /**
+ * Flag if resource does allow compilation
+ *
+ * @return bool
+ */
+ public function supportsCompiledTemplates(): bool {
+ return true;
+ }
+
+ /**
+ * Check if resource must check time stamps when loading compiled or cached templates.
+ * Resources like 'extends' which use source components my disable timestamp checks on own resource.
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return true;
+ }
+
+ /**
+ * Load Resource Handler
+ *
+ * @param Smarty $smarty smarty object
+ * @param string $type name of the resource
+ *
+ * @return BasePlugin Resource Handler
+ * @throws Exception
+ */
+ public static function load(Smarty $smarty, $type)
+ {
+ // try smarty's cache
+ if (isset($smarty->_resource_handlers[ $type ])) {
+ return $smarty->_resource_handlers[ $type ];
+ }
+ // try registered resource
+ if (isset($smarty->registered_resources[ $type ])) {
+ return $smarty->_resource_handlers[ $type ] = $smarty->registered_resources[ $type ];
+ }
+ // try sysplugins dir
+ if (isset(self::$sysplugins[ $type ])) {
+ $_resource_class = self::$sysplugins[ $type ];
+ return $smarty->_resource_handlers[ $type ] = new $_resource_class();
+ }
+ // try plugins dir
+ $_resource_class = 'Smarty_Resource_' . \smarty_ucfirst_ascii($type);
+ if (class_exists($_resource_class, false)) {
+ return $smarty->_resource_handlers[ $type ] = new $_resource_class();
+ }
+ // try streams
+ $_known_stream = stream_get_wrappers();
+ if (in_array($type, $_known_stream)) {
+ // is known stream
+ if (is_object($smarty->security_policy)) {
+ $smarty->security_policy->isTrustedStream($type);
+ }
+ return $smarty->_resource_handlers[ $type ] = new StreamPlugin();
+ }
+ // TODO: try default_(template|config)_handler
+ // give up
+ throw new \Smarty\Exception("Unknown resource type '{$type}'");
+ }
+
+ /**
+ * Load template's source into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ * @throws \Smarty\Exception if source cannot be loaded
+ */
+ abstract public function getContent(Source $source);
+
+ /**
+ * populate Source Object with metadata from Resource
+ *
+ * @param Source $source source object
+ * @param Template|null $_template template object
+ */
+ abstract public function populate(Source $source, ?\Smarty\Template $_template = null);
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Source $source source object
+ */
+ public function populateTimestamp(Source $source)
+ {
+ // intentionally left blank
+ }
+
+ /*
+ * Check if resource must check time stamps when when loading complied or cached templates.
+ * Resources like 'extends' which use source components my disable timestamp checks on own resource.
+ *
+ * @return bool
+ */
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param \Smarty\Template\Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(\Smarty\Template\Source $source)
+ {
+ return basename(preg_replace('![^\w]+!', '_', $source->name));
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Resource/CustomPlugin.php b/vendor/smarty/smarty/src/Resource/CustomPlugin.php
new file mode 100644
index 000000000..895e97108
--- /dev/null
+++ b/vendor/smarty/smarty/src/Resource/CustomPlugin.php
@@ -0,0 +1,105 @@
+<?php
+/**
+ * Smarty Resource Plugin
+ *
+
+
+ * @author Rodney Rehm
+ */
+
+namespace Smarty\Resource;
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\Template\Source;
+use Smarty\Exception;
+
+/**
+ * Smarty Resource Plugin
+ * Wrapper Implementation for custom resource plugins
+ *
+
+
+ */
+abstract class CustomPlugin extends BasePlugin {
+
+ /**
+ * fetch template and its modification time from data source
+ *
+ * @param string $name template name
+ * @param string &$source template source
+ * @param integer &$mtime template modification timestamp (epoch)
+ */
+ abstract protected function fetch($name, &$source, &$mtime);
+
+ /**
+ * Fetch template's modification timestamp from data source
+ * {@internal implementing this method is optional.
+ * Only implement it if modification times can be accessed faster than loading the complete template source.}}
+ *
+ * @param string $name template name
+ *
+ * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
+ */
+ protected function fetchTimestamp($name) {
+ return null;
+ }
+
+ /**
+ * populate Source Object with metadata from Resource
+ *
+ * @param Source $source source object
+ * @param Template|null $_template template object
+ */
+ public function populate(Source $source, ?Template $_template = null) {
+ $source->uid = sha1($source->type . ':' . $source->name);
+ $mtime = $this->fetchTimestamp($source->name);
+ if ($mtime !== null) {
+ $source->timestamp = $mtime;
+ } else {
+ $this->fetch($source->name, $content, $timestamp);
+ $source->timestamp = $timestamp ?? false;
+ if (isset($content)) {
+ $source->content = $content;
+ }
+ }
+ $source->exists = !!$source->timestamp;
+ }
+
+ /**
+ * Load template's source into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ * @throws Exception if source cannot be loaded
+ */
+ public function getContent(Source $source) {
+ $this->fetch($source->name, $content, $timestamp);
+ if (isset($content)) {
+ return $content;
+ }
+ throw new Exception("Unable to read template {$source->type} '{$source->name}'");
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Source $source) {
+ return basename($this->generateSafeName($source->name));
+ }
+
+ /**
+ * Removes special characters from $name and limits its length to 127 characters.
+ *
+ * @param $name
+ *
+ * @return string
+ */
+ private function generateSafeName($name): string {
+ return substr(preg_replace('/[^A-Za-z0-9._]/', '', (string)$name), 0, 127);
+ }
+}
diff --git a/vendor/smarty/smarty/src/Resource/ExtendsPlugin.php b/vendor/smarty/smarty/src/Resource/ExtendsPlugin.php
new file mode 100644
index 000000000..960e37971
--- /dev/null
+++ b/vendor/smarty/smarty/src/Resource/ExtendsPlugin.php
@@ -0,0 +1,116 @@
+<?php
+
+namespace Smarty\Resource;
+
+use Smarty\Exception;
+use Smarty\Template;
+use Smarty\Template\Source;
+
+/**
+ * Smarty Internal Plugin Resource Extends
+ * Implements the file system as resource for Smarty which {extend}s a chain of template files templates
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+class ExtendsPlugin extends BasePlugin
+{
+
+ /**
+ * populate Source Object with metadata from Resource
+ *
+ * @param Source $source source object
+ * @param Template|null $_template template object
+ *
+ * @throws Exception
+ */
+ public function populate(Source $source, ?Template $_template = null)
+ {
+ $uid = '';
+ $sources = array();
+ $components = explode('|', $source->name);
+ $smarty = $source->getSmarty();
+ $exists = true;
+ foreach ($components as $component) {
+ $_s = Source::load(null, $smarty, $component);
+ $sources[ $_s->uid ] = $_s;
+ $uid .= $_s->uid;
+ if ($_template) {
+ $exists = $exists && $_s->exists;
+ }
+ }
+ $source->components = $sources;
+ $source->uid = sha1($uid . $source->getSmarty()->_joined_template_dir);
+ $source->exists = $exists;
+ if ($_template) {
+ $source->timestamp = $_s->timestamp;
+ }
+ }
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Source $source source object
+ */
+ public function populateTimestamp(Source $source)
+ {
+ $source->exists = true;
+ /* @var Source $_s */
+ foreach ($source->components as $_s) {
+ $source->exists = $source->exists && $_s->exists;
+ }
+ $source->timestamp = $source->exists ? $_s->getTimeStamp() : false;
+ }
+
+ /**
+ * Load template's source from files into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ * @throws \Smarty\Exception if source cannot be loaded
+ */
+ public function getContent(Source $source)
+ {
+ if (!$source->exists) {
+ throw new \Smarty\Exception("Unable to load '{$source->type}:{$source->name}'");
+ }
+ $_components = array_reverse($source->components);
+ $_content = '';
+ /* @var Source $_s */
+ foreach ($_components as $_s) {
+ // read content
+ $_content .= $_s->getContent();
+ }
+ return $_content;
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Source $source)
+ {
+ $search = array(':');
+ if (\Smarty\Smarty::$_IS_WINDOWS) {
+ $search = array(':', '|');
+ }
+ return str_replace($search, '.', basename($source->getResourceName()));
+ }
+
+ /*
+ * Disable timestamp checks for extends resource.
+ * The individual source components will be checked.
+ *
+ * @return bool
+ */
+ /**
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return false;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Resource/FilePlugin.php b/vendor/smarty/smarty/src/Resource/FilePlugin.php
new file mode 100644
index 000000000..0033c8348
--- /dev/null
+++ b/vendor/smarty/smarty/src/Resource/FilePlugin.php
@@ -0,0 +1,183 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource File
+ *
+
+
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+namespace Smarty\Resource;
+
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\Template\Source;
+use Smarty\Exception;
+
+/**
+ * Smarty Internal Plugin Resource File
+ * Implements the file system as resource for Smarty templates
+ *
+
+
+ */
+class FilePlugin extends BasePlugin {
+
+ /**
+ * populate Source Object with metadata from Resource
+ *
+ * @param Source $source source object
+ * @param Template|null $_template template object
+ *
+ * @throws Exception
+ */
+ public function populate(Source $source, ?Template $_template = null) {
+
+ $source->uid = sha1(
+ $source->name . ($source->isConfig ? $source->getSmarty()->_joined_config_dir :
+ $source->getSmarty()->_joined_template_dir)
+ );
+
+ if ($path = $this->getFilePath($source->name, $source->getSmarty(), $source->isConfig)) {
+ if (isset($source->getSmarty()->security_policy) && is_object($source->getSmarty()->security_policy)) {
+ $source->getSmarty()->security_policy->isTrustedResourceDir($path, $source->isConfig);
+ }
+ $source->exists = true;
+ $source->timestamp = filemtime($path);
+ } else {
+ $source->timestamp = $source->exists = false;
+ }
+ }
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Source $source source object
+ */
+ public function populateTimestamp(Source $source) {
+ $path = $this->getFilePath($source->name, $source->getSmarty(), $source->isConfig);
+ if (!$source->exists) {
+ $source->exists = ($path !== false && is_file($path));
+ }
+ if ($source->exists && $path !== false) {
+ $source->timestamp = filemtime($path);
+ } else {
+ $source->timestamp = 0;
+ }
+ }
+
+ /**
+ * Load template's source from file into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ * @throws Exception if source cannot be loaded
+ */
+ public function getContent(Source $source) {
+ if ($source->exists) {
+ return file_get_contents($this->getFilePath($source->getResourceName(), $source->getSmarty(), $source->isConfig()));
+ }
+ throw new Exception(
+ 'Unable to read ' . ($source->isConfig ? 'config' : 'template') .
+ " {$source->type} '{$source->name}'"
+ );
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Source $source) {
+ return basename($source->getResourceName());
+ }
+
+ /**
+ * build template filepath by traversing the template_dir array
+ *
+ * @param $file
+ * @param Smarty $smarty
+ * @param bool $isConfig
+ *
+ * @return string fully qualified filepath
+ */
+ public function getFilePath($file, \Smarty\Smarty $smarty, bool $isConfig = false) {
+ // absolute file ?
+ if ($file[0] === '/' || $file[1] === ':') {
+ $file = $smarty->_realpath($file, true);
+ return is_file($file) ? $file : false;
+ }
+
+ // normalize DIRECTORY_SEPARATOR
+ if (strpos($file, DIRECTORY_SEPARATOR === '/' ? '\\' : '/') !== false) {
+ $file = str_replace(DIRECTORY_SEPARATOR === '/' ? '\\' : '/', DIRECTORY_SEPARATOR, $file);
+ }
+ $_directories = $smarty->getTemplateDir(null, $isConfig);
+ // template_dir index?
+ if ($file[0] === '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) {
+ $file = $fileMatch[2];
+ $_indices = explode(',', $fileMatch[1]);
+ $_index_dirs = [];
+ foreach ($_indices as $index) {
+ $index = trim($index);
+ // try string indexes
+ if (isset($_directories[$index])) {
+ $_index_dirs[] = $_directories[$index];
+ } elseif (is_numeric($index)) {
+ // try numeric index
+ $index = (int)$index;
+ if (isset($_directories[$index])) {
+ $_index_dirs[] = $_directories[$index];
+ } else {
+ // try at location index
+ $keys = array_keys($_directories);
+ if (isset($_directories[$keys[$index]])) {
+ $_index_dirs[] = $_directories[$keys[$index]];
+ }
+ }
+ }
+ }
+ if (empty($_index_dirs)) {
+ // index not found
+ return false;
+ } else {
+ $_directories = $_index_dirs;
+ }
+ }
+ // relative file name?
+ foreach ($_directories as $_directory) {
+ $path = $_directory . $file;
+ if (is_file($path)) {
+ return (strpos($path, '.' . DIRECTORY_SEPARATOR) !== false) ? $smarty->_realpath($path) : $path;
+ }
+ }
+ if (!isset($_index_dirs)) {
+ // Could be relative to cwd
+ $path = $smarty->_realpath($file, true);
+ if (is_file($path)) {
+ return $path;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns the timestamp of the resource indicated by $resourceName, or false if it doesn't exist.
+ *
+ * @param string $resourceName
+ * @param Smarty $smarty
+ * @param bool $isConfig
+ *
+ * @return false|int
+ */
+ public function getResourceNameTimestamp(string $resourceName, \Smarty\Smarty $smarty, bool $isConfig = false) {
+ if ($path = $this->getFilePath($resourceName, $smarty, $isConfig)) {
+ return filemtime($path);
+ }
+ return false;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Resource/RecompiledPlugin.php b/vendor/smarty/smarty/src/Resource/RecompiledPlugin.php
new file mode 100644
index 000000000..f1c64bc78
--- /dev/null
+++ b/vendor/smarty/smarty/src/Resource/RecompiledPlugin.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Smarty Resource Plugin
+ *
+
+
+ * @author Rodney Rehm
+ */
+
+namespace Smarty\Resource;
+
+use Smarty\Template;
+
+/**
+ * Smarty Resource Plugin
+ * Base implementation for resource plugins that don't compile cache
+ *
+
+
+ */
+abstract class RecompiledPlugin extends BasePlugin {
+
+ /**
+ * Flag that it's an recompiled resource
+ *
+ * @var bool
+ */
+ public $recompiled = true;
+
+ /**
+ * Flag if resource does allow compilation
+ *
+ * @return bool
+ */
+ public function supportsCompiledTemplates(): bool {
+ return false;
+ }
+
+ /*
+ * Disable timestamp checks for recompiled resource.
+ *
+ * @return bool
+ */
+ /**
+ * @return bool
+ */
+ public function checkTimestamps() {
+ return false;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Resource/StreamPlugin.php b/vendor/smarty/smarty/src/Resource/StreamPlugin.php
new file mode 100644
index 000000000..9b5b3f579
--- /dev/null
+++ b/vendor/smarty/smarty/src/Resource/StreamPlugin.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource Stream
+ * Implements the streams as resource for Smarty template
+ *
+
+
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+namespace Smarty\Resource;
+
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\Template\Source;
+
+/**
+ * Smarty Internal Plugin Resource Stream
+ * Implements the streams as resource for Smarty template
+ *
+ * @link https://php.net/streams
+
+
+ */
+class StreamPlugin extends RecompiledPlugin {
+
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Source $source source object
+ * @param Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Source $source, ?Template $_template = null) {
+ $source->uid = false;
+ $source->content = $this->getContent($source);
+ $source->timestamp = $source->exists = !!$source->content;
+ }
+
+ /**
+ * Load template's source from stream into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ */
+ public function getContent(Source $source) {
+
+ if (strpos($source->getResourceName(), '://') !== false) {
+ $filepath = $source->getResourceName();
+ } else {
+ $filepath = str_replace(':', '://', $source->getFullResourceName());
+ }
+
+ $t = '';
+ // the availability of the stream has already been checked in Smarty\Resource\Base::fetch()
+ $fp = fopen($filepath, 'r+');
+ if ($fp) {
+ while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
+ $t .= $current_line;
+ }
+ fclose($fp);
+ return $t;
+ } else {
+ return false;
+ }
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Resource/StringEval.php b/vendor/smarty/smarty/src/Resource/StringEval.php
new file mode 100644
index 000000000..5c35e7437
--- /dev/null
+++ b/vendor/smarty/smarty/src/Resource/StringEval.php
@@ -0,0 +1,85 @@
+<?php
+
+namespace Smarty\Resource;
+
+use Smarty\Smarty;
+
+/**
+ * Smarty Internal Plugin Resource Eval
+ *
+
+
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource Eval
+ * Implements the strings as resource for Smarty template
+ * {@internal unlike string-resources the compiled state of eval-resources is NOT saved for subsequent access}}
+ *
+
+
+ */
+class StringEval extends RecompiledPlugin
+{
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param \Smarty\Template\Source $source source object
+ * @param \Smarty\Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(\Smarty\Template\Source $source, \Smarty\Template $_template = null)
+ {
+ $source->uid = sha1($source->name);
+ $source->timestamp = $source->exists = true;
+ }
+
+ /**
+ * Load template's source from $resource_name into current template object
+ *
+ * @param \Smarty\Template\Source $source source object
+ *
+ * @return string template source
+ *@uses decode() to decode base64 and urlencoded template_resources
+ *
+ */
+ public function getContent(\Smarty\Template\Source $source)
+ {
+ return $this->decode($source->name);
+ }
+
+ /**
+ * decode base64 and urlencode
+ *
+ * @param string $string template_resource to decode
+ *
+ * @return string decoded template_resource
+ */
+ protected function decode($string)
+ {
+ // decode if specified
+ if (($pos = strpos($string, ':')) !== false) {
+ if (!strncmp($string, 'base64', 6)) {
+ return base64_decode(substr($string, 7));
+ } elseif (!strncmp($string, 'urlencode', 9)) {
+ return urldecode(substr($string, 10));
+ }
+ }
+ return $string;
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param \Smarty\Template\Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(\Smarty\Template\Source $source)
+ {
+ return '';
+ }
+}
diff --git a/vendor/smarty/smarty/src/Resource/StringPlugin.php b/vendor/smarty/smarty/src/Resource/StringPlugin.php
new file mode 100644
index 000000000..fb3692c73
--- /dev/null
+++ b/vendor/smarty/smarty/src/Resource/StringPlugin.php
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource String
+ *
+
+
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+namespace Smarty\Resource;
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\Template\Source;
+
+/**
+ * Smarty Internal Plugin Resource String
+ * Implements the strings as resource for Smarty template
+ * {@internal unlike eval-resources the compiled state of string-resources is saved for subsequent access}}
+ *
+
+
+ */
+class StringPlugin extends BasePlugin {
+
+ /**
+ * populate Source Object with metadata from Resource
+ *
+ * @param Source $source source object
+ * @param Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Source $source, ?Template $_template = null) {
+ $source->uid = sha1($source->name);
+ $source->timestamp = $source->exists = true;
+ }
+
+ /**
+ * Load template's source from $resource_name into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ * @uses decode() to decode base64 and urlencoded template_resources
+ *
+ */
+ public function getContent(Source $source) {
+ return $this->decode($source->name);
+ }
+
+ /**
+ * decode base64 and urlencode
+ *
+ * @param string $string template_resource to decode
+ *
+ * @return string decoded template_resource
+ */
+ protected function decode($string) {
+ // decode if specified
+ if (($pos = strpos($string, ':')) !== false) {
+ if (!strncmp($string, 'base64', 6)) {
+ return base64_decode(substr($string, 7));
+ } elseif (!strncmp($string, 'urlencode', 9)) {
+ return urldecode(substr($string, 10));
+ }
+ }
+ return $string;
+ }
+
+ /**
+ * Determine basename for compiled filename
+ * Always returns an empty string.
+ *
+ * @param Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Source $source) {
+ return '';
+ }
+
+ /*
+ * Disable timestamp checks for string resource.
+ *
+ * @return bool
+ */
+ /**
+ * @return bool
+ */
+ public function checkTimestamps() {
+ return false;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Runtime/Block.php b/vendor/smarty/smarty/src/Runtime/Block.php
new file mode 100644
index 000000000..90eab9cbb
--- /dev/null
+++ b/vendor/smarty/smarty/src/Runtime/Block.php
@@ -0,0 +1,92 @@
+<?php
+
+namespace Smarty\Runtime;
+
+/**
+ * Smarty {block} tag class
+ *
+
+
+ * @author Uwe Tews
+ */
+class Block
+{
+ /**
+ * Block name
+ *
+ * @var string
+ */
+ public $name = '';
+
+ /**
+ * Hide attribute
+ *
+ * @var bool
+ */
+ public $hide = false;
+
+ /**
+ * Append attribute
+ *
+ * @var bool
+ */
+ public $append = false;
+
+ /**
+ * prepend attribute
+ *
+ * @var bool
+ */
+ public $prepend = false;
+
+ /**
+ * Block calls $smarty.block.child
+ *
+ * @var bool
+ */
+ public $callsChild = false;
+
+ /**
+ * Inheritance child block
+ *
+ * @var Block|null
+ */
+ public $child = null;
+
+ /**
+ * Inheritance calling parent block
+ *
+ * @var Block|null
+ */
+ public $parent = null;
+
+ /**
+ * Inheritance Template index
+ *
+ * @var int
+ */
+ public $tplIndex = 0;
+
+ /**
+ * Block constructor.
+ * - if outer level {block} of child template ($state === 1) save it as child root block
+ * - otherwise process inheritance and render
+ *
+ * @param string $name block name
+ * @param int|null $tplIndex index of outer level {block} if nested
+ */
+ public function __construct($name, $tplIndex)
+ {
+ $this->name = $name;
+ $this->tplIndex = $tplIndex;
+ }
+
+ /**
+ * Compiled block code overloaded by {block} class
+ *
+ * @param \Smarty\Template $tpl
+ */
+ public function callBlock(\Smarty\Template $tpl)
+ {
+ }
+}
diff --git a/vendor/smarty/smarty/src/Runtime/CaptureRuntime.php b/vendor/smarty/smarty/src/Runtime/CaptureRuntime.php
new file mode 100644
index 000000000..3f37c59fc
--- /dev/null
+++ b/vendor/smarty/smarty/src/Runtime/CaptureRuntime.php
@@ -0,0 +1,163 @@
+<?php
+
+namespace Smarty\Runtime;
+use Smarty\Template;
+
+/**
+ * Runtime Extension Capture
+ *
+
+
+ * @author Uwe Tews
+ */
+class CaptureRuntime {
+
+ /**
+ * Stack of capture parameter
+ *
+ * @var array
+ */
+ private $captureStack = [];
+
+ /**
+ * Current open capture sections
+ *
+ * @var int
+ */
+ private $captureCount = 0;
+
+ /**
+ * Count stack
+ *
+ * @var int[]
+ */
+ private $countStack = [];
+
+ /**
+ * Named buffer
+ *
+ * @var string[]
+ */
+ private $namedBuffer = [];
+
+ /**
+ * Open capture section
+ *
+ * @param \Smarty\Template $_template
+ * @param string $buffer capture name
+ * @param string $assign variable name
+ * @param string $append variable name
+ */
+ public function open(Template $_template, $buffer, $assign, $append) {
+
+ $this->registerCallbacks($_template);
+
+ $this->captureStack[] = [
+ $buffer,
+ $assign,
+ $append,
+ ];
+ $this->captureCount++;
+ ob_start();
+ }
+
+ /**
+ * Register callbacks in template class
+ *
+ * @param \Smarty\Template $_template
+ */
+ private function registerCallbacks(Template $_template) {
+
+ foreach ($_template->startRenderCallbacks as $callback) {
+ if (is_array($callback) && get_class($callback[0]) == self::class) {
+ // already registered
+ return;
+ }
+ }
+
+ $_template->startRenderCallbacks[] = [
+ $this,
+ 'startRender',
+ ];
+ $_template->endRenderCallbacks[] = [
+ $this,
+ 'endRender',
+ ];
+ $this->startRender($_template);
+ }
+
+ /**
+ * Start render callback
+ *
+ * @param \Smarty\Template $_template
+ */
+ public function startRender(Template $_template) {
+ $this->countStack[] = $this->captureCount;
+ $this->captureCount = 0;
+ }
+
+ /**
+ * Close capture section
+ *
+ * @param \Smarty\Template $_template
+ *
+ * @throws \Smarty\Exception
+ */
+ public function close(Template $_template) {
+ if ($this->captureCount) {
+ [$buffer, $assign, $append] = array_pop($this->captureStack);
+ $this->captureCount--;
+ if (isset($assign)) {
+ $_template->assign($assign, ob_get_contents());
+ }
+ if (isset($append)) {
+ $_template->append($append, ob_get_contents());
+ }
+ $this->namedBuffer[$buffer] = ob_get_clean();
+ } else {
+ $this->error($_template);
+ }
+ }
+
+ /**
+ * Error exception on not matching {capture}{/capture}
+ *
+ * @param \Smarty\Template $_template
+ *
+ * @throws \Smarty\Exception
+ */
+ public function error(Template $_template) {
+ throw new \Smarty\Exception("Not matching {capture}{/capture} in '{$_template->template_resource}'");
+ }
+
+ /**
+ * Return content of named capture buffer by key or as array
+ *
+ * @param \Smarty\Template $_template
+ * @param string|null $name
+ *
+ * @return string|string[]|null
+ */
+ public function getBuffer(Template $_template, $name = null) {
+ if (isset($name)) {
+ return $this->namedBuffer[$name] ?? null;
+ } else {
+ return $this->namedBuffer;
+ }
+ }
+
+ /**
+ * End render callback
+ *
+ * @param \Smarty\Template $_template
+ *
+ * @throws \Smarty\Exception
+ */
+ public function endRender(Template $_template) {
+ if ($this->captureCount) {
+ $this->error($_template);
+ } else {
+ $this->captureCount = array_pop($this->countStack);
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php b/vendor/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php
new file mode 100644
index 000000000..f3be85ca6
--- /dev/null
+++ b/vendor/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php
@@ -0,0 +1,73 @@
+<?php
+
+namespace Smarty\Runtime;
+
+use Smarty\Exception;
+
+class DefaultPluginHandlerRuntime {
+
+ /**
+ * @var callable
+ */
+ private $defaultPluginHandler;
+
+ public function __construct(?callable $defaultPluginHandler = null) {
+ $this->defaultPluginHandler = $defaultPluginHandler;
+ }
+
+ public function hasPlugin($tag, $plugin_type): bool {
+ if ($this->defaultPluginHandler === null) {
+ return false;
+ }
+
+ $callback = null;
+
+ // these are not used here
+ $script = null;
+ $cacheable = null;
+
+ return (\call_user_func_array(
+ $this->defaultPluginHandler,
+ [
+ $tag,
+ $plugin_type,
+ null, // This used to pass $this->template, but this parameter has been removed in 5.0
+ &$callback,
+ &$script,
+ &$cacheable,
+ ]
+ ) && $callback);
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function getCallback($tag, $plugin_type) {
+
+ if ($this->defaultPluginHandler === null) {
+ return false;
+ }
+
+ $callback = null;
+
+ // these are not used here
+ $script = null;
+ $cacheable = null;
+
+ if (\call_user_func_array(
+ $this->defaultPluginHandler,
+ [
+ $tag,
+ $plugin_type,
+ null, // This used to pass $this->template, but this parameter has been removed in 5.0
+ &$callback,
+ &$script,
+ &$cacheable,
+ ]
+ ) && $callback) {
+ return $callback;
+ }
+ throw new Exception("Default plugin handler: Returned callback for '{$tag}' not callable at runtime");
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/src/Runtime/ForeachRuntime.php b/vendor/smarty/smarty/src/Runtime/ForeachRuntime.php
new file mode 100644
index 000000000..06da7d546
--- /dev/null
+++ b/vendor/smarty/smarty/src/Runtime/ForeachRuntime.php
@@ -0,0 +1,160 @@
+<?php
+
+namespace Smarty\Runtime;
+use Smarty\Template;
+
+/**
+ * Foreach Runtime Methods count(), init(), restore()
+ *
+
+
+ * @author Uwe Tews
+ */
+class ForeachRuntime {
+
+ /**
+ * Stack of saved variables
+ *
+ * @var array
+ */
+ private $stack = [];
+
+ /**
+ * Init foreach loop
+ * - save item and key variables, named foreach property data if defined
+ * - init item and key variables, named foreach property data if required
+ * - count total if required
+ *
+ * @param \Smarty\Template $tpl
+ * @param mixed $from values to loop over
+ * @param string $item variable name
+ * @param bool $needTotal flag if we need to count values
+ * @param null|string $key variable name
+ * @param null|string $name of named foreach
+ * @param array $properties of named foreach
+ *
+ * @return mixed $from
+ */
+ public function init(
+ Template $tpl,
+ $from,
+ $item,
+ $needTotal = false,
+ $key = null,
+ $name = null,
+ $properties = []
+ ) {
+ $needTotal = $needTotal || isset($properties['total']);
+ $saveVars = [];
+ $total = null;
+ if (!is_array($from)) {
+ if (is_object($from)) {
+ if ($needTotal) {
+ $total = $this->count($from);
+ }
+ } else {
+ settype($from, 'array');
+ }
+ }
+ if (!isset($total)) {
+ $total = empty($from) ? 0 : ($needTotal ? count($from) : 1);
+ }
+ if ($tpl->hasVariable($item)) {
+ $saveVars['item'] = [
+ $item,
+ $tpl->getVariable($item)->getValue(),
+ ];
+ }
+ $tpl->assign($item,null);
+ if ($total === 0) {
+ $from = null;
+ } else {
+ if ($key) {
+ if ($tpl->hasVariable($key)) {
+ $saveVars['key'] = [
+ $key,
+ clone $tpl->getVariable($key),
+ ];
+ }
+ $tpl->assign($key, null);
+ }
+ }
+ if ($needTotal) {
+ $tpl->getVariable($item)->total = $total;
+ }
+ if ($name) {
+ $namedVar = "__smarty_foreach_{$name}";
+ if ($tpl->hasVariable($namedVar)) {
+ $saveVars['named'] = [
+ $namedVar,
+ clone $tpl->getVariable($namedVar),
+ ];
+ }
+ $namedProp = [];
+ if (isset($properties['total'])) {
+ $namedProp['total'] = $total;
+ }
+ if (isset($properties['iteration'])) {
+ $namedProp['iteration'] = 0;
+ }
+ if (isset($properties['index'])) {
+ $namedProp['index'] = -1;
+ }
+ if (isset($properties['show'])) {
+ $namedProp['show'] = ($total > 0);
+ }
+ $tpl->assign($namedVar, $namedProp);
+ }
+ $this->stack[] = $saveVars;
+ return $from;
+ }
+
+ /**
+ * [util function] counts an array, arrayAccess/traversable or PDOStatement object
+ *
+ * @param mixed $value
+ *
+ * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0
+ * for empty elements
+ * @throws \Exception
+ */
+ public function count($value): int
+ {
+ if ($value instanceof \IteratorAggregate) {
+ // Note: getIterator() returns a Traversable, not an Iterator
+ // thus rewind() and valid() methods may not be present
+ return iterator_count($value->getIterator());
+ } elseif ($value instanceof \Iterator) {
+ return $value instanceof \Generator ? 1 : iterator_count($value);
+ } elseif ($value instanceof \Countable) {
+ return count($value);
+ }
+ return count((array) $value);
+ }
+
+ /**
+ * Restore saved variables
+ *
+ * will be called by {break n} or {continue n} for the required number of levels
+ *
+ * @param \Smarty\Template $tpl
+ * @param int $levels number of levels
+ */
+ public function restore(Template $tpl, $levels = 1) {
+ while ($levels) {
+ $saveVars = array_pop($this->stack);
+ if (!empty($saveVars)) {
+ if (isset($saveVars['item'])) {
+ $tpl->getVariable($saveVars['item'][0])->setValue($saveVars['item'][1]);
+ }
+ if (isset($saveVars['key'])) {
+ $tpl->setVariable($saveVars['key'][0], $saveVars['key'][1]);
+ }
+ if (isset($saveVars['named'])) {
+ $tpl->setVariable($saveVars['named'][0], $saveVars['named'][1]);
+ }
+ }
+ $levels--;
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/src/Runtime/InheritanceRuntime.php b/vendor/smarty/smarty/src/Runtime/InheritanceRuntime.php
new file mode 100644
index 000000000..74ea85440
--- /dev/null
+++ b/vendor/smarty/smarty/src/Runtime/InheritanceRuntime.php
@@ -0,0 +1,243 @@
+<?php
+
+namespace Smarty\Runtime;
+use Smarty\Template;
+use Smarty\Template\Source;
+use Smarty\Exception;
+
+/**
+ * Inheritance Runtime Methods processBlock, endChild, init
+ *
+
+
+ * @author Uwe Tews
+ **/
+class InheritanceRuntime {
+
+ /**
+ * State machine
+ * - 0 idle next extends will create a new inheritance tree
+ * - 1 processing child template
+ * - 2 wait for next inheritance template
+ * - 3 assume parent template, if child will loaded goto state 1
+ * a call to a sub template resets the state to 0
+ *
+ * @var int
+ */
+ private $state = 0;
+
+ /**
+ * Array of root child {block} objects
+ *
+ * @var \Smarty\Runtime\Block[]
+ */
+ private $childRoot = [];
+
+ /**
+ * inheritance template nesting level
+ *
+ * @var int
+ */
+ private $inheritanceLevel = 0;
+
+ /**
+ * inheritance template index
+ *
+ * @var int
+ */
+ private $tplIndex = -1;
+
+ /**
+ * Array of template source objects
+ *
+ * @var Source[]
+ */
+ private $sources = [];
+
+ /**
+ * Stack of source objects while executing block code
+ *
+ * @var Source[]
+ */
+ private $sourceStack = [];
+
+ /**
+ * Initialize inheritance
+ *
+ * @param \Smarty\Template $tpl template object of caller
+ * @param bool $initChild if true init for child template
+ * @param array $blockNames outer level block name
+ */
+ public function init(Template $tpl, $initChild, $blockNames = []) {
+ // if called while executing parent template it must be a sub-template with new inheritance root
+ if ($initChild && $this->state === 3 && (strpos($tpl->template_resource, 'extendsall') === false)) {
+ $tpl->setInheritance(clone $tpl->getSmarty()->getRuntime('Inheritance'));
+ $tpl->getInheritance()->init($tpl, $initChild, $blockNames);
+ return;
+ }
+ ++$this->tplIndex;
+ $this->sources[$this->tplIndex] = $tpl->getSource();
+ // start of child sub template(s)
+ if ($initChild) {
+ $this->state = 1;
+ if (!$this->inheritanceLevel) {
+ //grab any output of child templates
+ ob_start();
+ }
+ ++$this->inheritanceLevel;
+ }
+ // if state was waiting for parent change state to parent
+ if ($this->state === 2) {
+ $this->state = 3;
+ }
+ }
+
+ /**
+ * End of child template(s)
+ * - if outer level is reached flush output buffer and switch to wait for parent template state
+ *
+ * @param \Smarty\Template $tpl
+ * @param null|string $template optional name of inheritance parent template
+ *
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ */
+ public function endChild(Template $tpl, $template = null, ?string $currentDir = null) {
+ --$this->inheritanceLevel;
+ if (!$this->inheritanceLevel) {
+ ob_end_clean();
+ $this->state = 2;
+ }
+ if (isset($template)) {
+ $tpl->renderSubTemplate(
+ $template,
+ $tpl->cache_id,
+ $tpl->compile_id,
+ $tpl->caching ? \Smarty\Template::CACHING_NOCACHE_CODE : 0,
+ $tpl->cache_lifetime,
+ [],
+ null,
+ $currentDir
+ );
+ }
+ }
+
+ /**
+ * \Smarty\Runtime\Block constructor.
+ * - if outer level {block} of child template ($state === 1) save it as child root block
+ * - otherwise process inheritance and render
+ *
+ * @param \Smarty\Template $tpl
+ * @param $className
+ * @param string $name
+ * @param int|null $tplIndex index of outer level {block} if nested
+ *
+ * @throws \Smarty\Exception
+ */
+ public function instanceBlock(Template $tpl, $className, $name, $tplIndex = null) {
+ $block = new $className($name, isset($tplIndex) ? $tplIndex : $this->tplIndex);
+ if (isset($this->childRoot[$name])) {
+ $block->child = $this->childRoot[$name];
+ }
+ if ($this->state === 1) {
+ $this->childRoot[$name] = $block;
+ return;
+ }
+ // make sure we got child block of child template of current block
+ while ($block->child && $block->child->child && $block->tplIndex <= $block->child->tplIndex) {
+ $block->child = $block->child->child;
+ }
+ $this->processBlock($tpl, $block);
+ }
+
+ /**
+ * Goto child block or render this
+ *
+ * @param Template $tpl
+ * @param \Smarty\Runtime\Block $block
+ * @param \Smarty\Runtime\Block|null $parent
+ *
+ * @throws Exception
+ */
+ private function processBlock(
+ Template $tpl,
+ \Smarty\Runtime\Block $block,
+ ?\Smarty\Runtime\Block $parent = null
+ ) {
+ if ($block->hide && !isset($block->child)) {
+ return;
+ }
+ if (isset($block->child) && $block->child->hide && !isset($block->child->child)) {
+ $block->child = null;
+ }
+ $block->parent = $parent;
+ if ($block->append && !$block->prepend && isset($parent)) {
+ $this->callParent($tpl, $block, '\'{block append}\'');
+ }
+ if ($block->callsChild || !isset($block->child) || ($block->child->hide && !isset($block->child->child))) {
+ $this->callBlock($block, $tpl);
+ } else {
+ $this->processBlock($tpl, $block->child, $block);
+ }
+ if ($block->prepend && isset($parent)) {
+ $this->callParent($tpl, $block, '{block prepend}');
+ if ($block->append) {
+ if ($block->callsChild || !isset($block->child)
+ || ($block->child->hide && !isset($block->child->child))
+ ) {
+ $this->callBlock($block, $tpl);
+ } else {
+ $this->processBlock($tpl, $block->child, $block);
+ }
+ }
+ }
+ $block->parent = null;
+ }
+
+ /**
+ * Render child on \$smarty.block.child
+ *
+ * @param Template $tpl
+ * @param \Smarty\Runtime\Block $block
+ *
+ * @return null|string block content
+ * @throws Exception
+ */
+ public function callChild(Template $tpl, \Smarty\Runtime\Block $block) {
+ if (isset($block->child)) {
+ $this->processBlock($tpl, $block->child, $block);
+ }
+ }
+
+ /**
+ * Render parent block on \$smarty.block.parent or {block append/prepend}
+ *
+ * @param Template $tpl
+ * @param \Smarty\Runtime\Block $block
+ * @param string $tag
+ *
+ * @return null|string block content
+ * @throws Exception
+ */
+ public function callParent(Template $tpl, \Smarty\Runtime\Block $block) {
+ if (isset($block->parent)) {
+ $this->callBlock($block->parent, $tpl);
+ } else {
+ throw new Exception("inheritance: illegal '{\$smarty.block.parent}' used in child template '" .
+ "{$tpl->getInheritance()->sources[$block->tplIndex]->getResourceName()}' block '{$block->name}'");
+ }
+ }
+
+ /**
+ * render block
+ *
+ * @param \Smarty\Runtime\Block $block
+ * @param Template $tpl
+ */
+ public function callBlock(\Smarty\Runtime\Block $block, Template $tpl) {
+ $this->sourceStack[] = $tpl->getSource();
+ $tpl->setSource($this->sources[$block->tplIndex]);
+ $block->callBlock($tpl);
+ $tpl->setSource(array_pop($this->sourceStack));
+ }
+}
diff --git a/vendor/smarty/smarty/src/Runtime/TplFunctionRuntime.php b/vendor/smarty/smarty/src/Runtime/TplFunctionRuntime.php
new file mode 100644
index 000000000..6c4b93d73
--- /dev/null
+++ b/vendor/smarty/smarty/src/Runtime/TplFunctionRuntime.php
@@ -0,0 +1,144 @@
+<?php
+
+namespace Smarty\Runtime;
+use Smarty\Exception;
+use Smarty\Template;
+use Smarty\TemplateBase;
+
+/**
+ * TplFunction Runtime Methods callTemplateFunction
+ *
+
+
+ * @author Uwe Tews
+ **/
+class TplFunctionRuntime {
+
+ /**
+ * Call template function
+ *
+ * @param \Smarty\Template $tpl template object
+ * @param string $name template function name
+ * @param array $params parameter array
+ * @param bool $nocache true if called nocache
+ *
+ * @throws \Smarty\Exception
+ */
+ public function callTemplateFunction(Template $tpl, $name, $params, $nocache) {
+ $funcParam = $tpl->tplFunctions[$name] ?? ($tpl->getSmarty()->tplFunctions[$name] ?? null);
+ if (!isset($funcParam)) {
+ throw new \Smarty\Exception("Unable to find template function '{$name}'");
+ }
+
+ if (!$tpl->caching || ($tpl->caching && $nocache)) {
+ $function = $funcParam['call_name'];
+ } else {
+ if (isset($funcParam['call_name_caching'])) {
+ $function = $funcParam['call_name_caching'];
+ } else {
+ $function = $funcParam['call_name'];
+ }
+ }
+ if (!function_exists($function) && !$this->addTplFuncToCache($tpl, $name, $function)) {
+ throw new \Smarty\Exception("Unable to find template function '{$name}'");
+ }
+
+ $tpl->pushStack();
+ $function($tpl, $params);
+ $tpl->popStack();
+ }
+
+ /**
+ * Register template functions defined by template
+ *
+ * @param \Smarty|\Smarty\Template|\Smarty\TemplateBase $obj
+ * @param array $tplFunctions source information array of
+ * template functions defined
+ * in template
+ * @param bool $override if true replace existing
+ * functions with same name
+ */
+ public function registerTplFunctions(TemplateBase $obj, $tplFunctions, $override = true) {
+ $obj->tplFunctions =
+ $override ? array_merge($obj->tplFunctions, $tplFunctions) : array_merge($tplFunctions, $obj->tplFunctions);
+ // make sure that the template functions are known in parent templates
+ if ($obj->_isSubTpl()) {
+ $this->registerTplFunctions($obj->parent, $tplFunctions, false);
+ } else {
+ $obj->getSmarty()->tplFunctions = $override ? array_merge($obj->getSmarty()->tplFunctions, $tplFunctions) :
+ array_merge($tplFunctions, $obj->getSmarty()->tplFunctions);
+ }
+ }
+
+ /**
+ * Return source parameter array for single or all template functions
+ *
+ * @param \Smarty\Template $tpl template object
+ * @param null|string $name template function name
+ *
+ * @return array|bool|mixed
+ */
+ public function getTplFunction(Template $tpl, $name = null) {
+ if (isset($name)) {
+ return $tpl->tplFunctions[$name] ?? ($tpl->getSmarty()->tplFunctions[$name] ?? false);
+ } else {
+ return empty($tpl->tplFunctions) ? $tpl->getSmarty()->tplFunctions : $tpl->tplFunctions;
+ }
+ }
+
+ /**
+ * Add template function to cache file for nocache calls
+ *
+ * @param Template $tpl
+ * @param string $_name template function name
+ * @param string $_function PHP function name
+ *
+ * @return bool
+ * @throws Exception
+ */
+ private function addTplFuncToCache(Template $tpl, $_name, $_function) {
+ $funcParam = $tpl->tplFunctions[$_name];
+ if (is_file($funcParam['compiled_filepath'])) {
+ // read compiled file
+ $code = file_get_contents($funcParam['compiled_filepath']);
+ // grab template function
+ if (preg_match("/\/\* {$_function} \*\/([\S\s]*?)\/\*\/ {$_function} \*\//", $code, $match)) {
+ // grab source info from file dependency
+ preg_match("/\s*'{$funcParam['uid']}'([\S\s]*?)\),/", $code, $match1);
+ unset($code);
+ // make PHP function known
+ eval($match[0]);
+ if (function_exists($_function)) {
+
+ // Some magic code existed here, testing if the cached property had been set
+ // and then bubbling up until it found a parent template that had the cached property.
+ // This is no longer possible, so somehow this might break.
+
+ // add template function code to cache file
+ $content = $tpl->getCached()->readCache($tpl);
+ if ($content) {
+ // check if we must update file dependency
+ if (!preg_match("/'{$funcParam['uid']}'(.*?)'nocache_hash'/", $content, $match2)) {
+ $content = preg_replace("/('file_dependency'(.*?)\()/", "\\1{$match1[0]}", $content);
+ }
+ $tpl->getCached()->writeCache(
+ $tpl,
+ preg_replace('/\s*\?>\s*$/', "\n", $content) .
+ "\n" . preg_replace(
+ [
+ '/^\s*<\?php\s+/',
+ '/\s*\?>\s*$/',
+ ],
+ "\n",
+ $match[0]
+ )
+ );
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Security.php b/vendor/smarty/smarty/src/Security.php
new file mode 100644
index 000000000..250b3bca7
--- /dev/null
+++ b/vendor/smarty/smarty/src/Security.php
@@ -0,0 +1,560 @@
+<?php
+/**
+ * Smarty plugin
+ *
+
+
+ * @author Uwe Tews
+ */
+
+/**
+ * FIXME: \Smarty\Security API
+ * - getter and setter instead of public properties would allow cultivating an internal cache properly
+ * - current implementation of isTrustedResourceDir() assumes that Smarty::$template_dir and Smarty::$config_dir
+ * are immutable the cache is killed every time either of the variables change. That means that two distinct
+ * Smarty objects with differing
+ * $template_dir or $config_dir should NOT share the same \Smarty\Security instance,
+ * as this would lead to (severe) performance penalty! how should this be handled?
+ */
+
+namespace Smarty;
+
+use Smarty\Exception;
+
+/**
+ * This class does contain the security settings
+ */
+#[\AllowDynamicProperties]
+class Security {
+
+ /**
+ * This is the list of template directories that are considered secure.
+ * $template_dir is in this list implicitly.
+ *
+ * @var array
+ */
+ public $secure_dir = [];
+
+ /**
+ * List of regular expressions (PCRE) that include trusted URIs
+ *
+ * @var array
+ */
+ public $trusted_uri = [];
+
+ /**
+ * List of trusted constants names
+ *
+ * @var array
+ */
+ public $trusted_constants = [];
+
+ /**
+ * This is an array of trusted static classes.
+ * If empty access to all static classes is allowed.
+ * If set to 'none' none is allowed.
+ *
+ * @var array
+ */
+ public $static_classes = [];
+
+ /**
+ * This is an nested array of trusted classes and static methods.
+ * If empty access to all static classes and methods is allowed.
+ * Format:
+ * array (
+ * 'class_1' => array('method_1', 'method_2'), // allowed methods listed
+ * 'class_2' => array(), // all methods of class allowed
+ * )
+ * If set to null none is allowed.
+ *
+ * @var array
+ */
+ public $trusted_static_methods = [];
+
+ /**
+ * This is an array of trusted static properties.
+ * If empty access to all static classes and properties is allowed.
+ * Format:
+ * array (
+ * 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed
+ * 'class_2' => array(), // all properties of class allowed
+ * )
+ * If set to null none is allowed.
+ *
+ * @var array
+ */
+ public $trusted_static_properties = [];
+
+ /**
+ * This is an array of allowed tags.
+ * If empty no restriction by allowed_tags.
+ *
+ * @var array
+ */
+ public $allowed_tags = [];
+
+ /**
+ * This is an array of disabled tags.
+ * If empty no restriction by disabled_tags.
+ *
+ * @var array
+ */
+ public $disabled_tags = [];
+
+ /**
+ * This is an array of allowed modifier plugins.
+ * If empty no restriction by allowed_modifiers.
+ *
+ * @var array
+ */
+ public $allowed_modifiers = [];
+
+ /**
+ * This is an array of disabled modifier plugins.
+ * If empty no restriction by disabled_modifiers.
+ *
+ * @var array
+ */
+ public $disabled_modifiers = [];
+
+ /**
+ * This is an array of disabled special $smarty variables.
+ *
+ * @var array
+ */
+ public $disabled_special_smarty_vars = [];
+
+ /**
+ * This is an array of trusted streams.
+ * If empty all streams are allowed.
+ * To disable all streams set $streams = null.
+ *
+ * @var array
+ */
+ public $streams = ['file'];
+
+ /**
+ * + flag if constants can be accessed from template
+ *
+ * @var boolean
+ */
+ public $allow_constants = true;
+
+ /**
+ * + flag if super globals can be accessed from template
+ *
+ * @var boolean
+ */
+ public $allow_super_globals = true;
+
+ /**
+ * max template nesting level
+ *
+ * @var int
+ */
+ public $max_template_nesting = 0;
+
+ /**
+ * current template nesting level
+ *
+ * @var int
+ */
+ private $_current_template_nesting = 0;
+
+ /**
+ * Cache for $resource_dir lookup
+ *
+ * @var array
+ */
+ protected $_resource_dir = [];
+
+ /**
+ * Cache for $template_dir lookup
+ *
+ * @var array
+ */
+ protected $_template_dir = [];
+
+ /**
+ * Cache for $config_dir lookup
+ *
+ * @var array
+ */
+ protected $_config_dir = [];
+
+ /**
+ * Cache for $secure_dir lookup
+ *
+ * @var array
+ */
+ protected $_secure_dir = [];
+
+ /**
+ * @param Smarty $smarty
+ */
+ public function __construct(Smarty $smarty) {
+ $this->smarty = $smarty;
+ }
+
+ /**
+ * Check if static class is trusted.
+ *
+ * @param string $class_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if class is trusted
+ */
+ public function isTrustedStaticClass($class_name, $compiler) {
+ if (isset($this->static_classes)
+ && (empty($this->static_classes) || in_array($class_name, $this->static_classes))
+ ) {
+ return true;
+ }
+ $compiler->trigger_template_error("access to static class '{$class_name}' not allowed by security setting");
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if static class method/property is trusted.
+ *
+ * @param string $class_name
+ * @param string $params
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if class method is trusted
+ */
+ public function isTrustedStaticClassAccess($class_name, $params, $compiler) {
+ if (!isset($params[2])) {
+ // fall back
+ return $this->isTrustedStaticClass($class_name, $compiler);
+ }
+ if ($params[2] === 'method') {
+ $allowed = $this->trusted_static_methods;
+ $name = substr($params[0], 0, strpos($params[0], '('));
+ } else {
+ $allowed = $this->trusted_static_properties;
+ // strip '$'
+ $name = substr($params[0], 1);
+ }
+ if (isset($allowed)) {
+ if (empty($allowed)) {
+ // fall back
+ return $this->isTrustedStaticClass($class_name, $compiler);
+ }
+ if (isset($allowed[$class_name])
+ && (empty($allowed[$class_name]) || in_array($name, $allowed[$class_name]))
+ ) {
+ return true;
+ }
+ }
+ $compiler->trigger_template_error("access to static class '{$class_name}' {$params[2]} '{$name}' not allowed by security setting");
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if tag is trusted.
+ *
+ * @param string $tag_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ */
+ public function isTrustedTag($tag_name, $compiler) {
+ $tag_name = strtolower($tag_name);
+
+ // check for internal always required tags
+ if (in_array($tag_name, ['assign', 'call'])) {
+ return true;
+ }
+ // check security settings
+ if (empty($this->allowed_tags)) {
+ if (empty($this->disabled_tags) || !in_array($tag_name, $this->disabled_tags)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error("tag '{$tag_name}' disabled by security setting", null, true);
+ }
+ } elseif (in_array($tag_name, $this->allowed_tags) && !in_array($tag_name, $this->disabled_tags)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error("tag '{$tag_name}' not allowed by security setting", null, true);
+ }
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if special $smarty variable is trusted.
+ *
+ * @param string $var_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ */
+ public function isTrustedSpecialSmartyVar($var_name, $compiler) {
+ if (!in_array($var_name, $this->disabled_special_smarty_vars)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error(
+ "special variable '\$smarty.{$var_name}' not allowed by security setting",
+ null,
+ true
+ );
+ }
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if modifier plugin is trusted.
+ *
+ * @param string $modifier_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ */
+ public function isTrustedModifier($modifier_name, $compiler) {
+ // check for internal always allowed modifier
+ if (in_array($modifier_name, ['default'])) {
+ return true;
+ }
+ // check security settings
+ if (empty($this->allowed_modifiers)) {
+ if (empty($this->disabled_modifiers) || !in_array($modifier_name, $this->disabled_modifiers)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error(
+ "modifier '{$modifier_name}' disabled by security setting",
+ null,
+ true
+ );
+ }
+ } elseif (in_array($modifier_name, $this->allowed_modifiers)
+ && !in_array($modifier_name, $this->disabled_modifiers)
+ ) {
+ return true;
+ } else {
+ $compiler->trigger_template_error(
+ "modifier '{$modifier_name}' not allowed by security setting",
+ null,
+ true
+ );
+ }
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if constants are enabled or trusted
+ *
+ * @param string $const constant name
+ * @param object $compiler compiler object
+ *
+ * @return bool
+ */
+ public function isTrustedConstant($const, $compiler) {
+ if (in_array($const, ['true', 'false', 'null'])) {
+ return true;
+ }
+ if (!empty($this->trusted_constants)) {
+ if (!in_array(strtolower($const), $this->trusted_constants)) {
+ $compiler->trigger_template_error("Security: access to constant '{$const}' not permitted");
+ return false;
+ }
+ return true;
+ }
+ if ($this->allow_constants) {
+ return true;
+ }
+ $compiler->trigger_template_error("Security: access to constants not permitted");
+ return false;
+ }
+
+ /**
+ * Check if stream is trusted.
+ *
+ * @param string $stream_name
+ *
+ * @return boolean true if stream is trusted
+ * @throws Exception if stream is not trusted
+ */
+ public function isTrustedStream($stream_name) {
+ if (isset($this->streams) && (empty($this->streams) || in_array($stream_name, $this->streams))) {
+ return true;
+ }
+ throw new Exception("stream '{$stream_name}' not allowed by security setting");
+ }
+
+ /**
+ * Check if directory of file resource is trusted.
+ *
+ * @param string $filepath
+ * @param null|bool $isConfig
+ *
+ * @return bool true if directory is trusted
+ * @throws \Smarty\Exception if directory is not trusted
+ */
+ public function isTrustedResourceDir($filepath, $isConfig = null) {
+ $_dir = $this->smarty->getTemplateDir();
+ if ($this->_template_dir !== $_dir) {
+ $this->_updateResourceDir($this->_template_dir, $_dir);
+ $this->_template_dir = $_dir;
+ }
+ $_dir = $this->smarty->getConfigDir();
+ if ($this->_config_dir !== $_dir) {
+ $this->_updateResourceDir($this->_config_dir, $_dir);
+ $this->_config_dir = $_dir;
+ }
+ if ($this->_secure_dir !== $this->secure_dir) {
+ $this->secure_dir = (array)$this->secure_dir;
+ foreach ($this->secure_dir as $k => $d) {
+ $this->secure_dir[$k] = $this->smarty->_realpath($d . DIRECTORY_SEPARATOR, true);
+ }
+ $this->_updateResourceDir($this->_secure_dir, $this->secure_dir);
+ $this->_secure_dir = $this->secure_dir;
+ }
+ $addPath = $this->_checkDir($filepath, $this->_resource_dir);
+ if ($addPath !== false) {
+ $this->_resource_dir = array_merge($this->_resource_dir, $addPath);
+ }
+ return true;
+ }
+
+ /**
+ * Check if URI (e.g. {fetch} or {html_image}) is trusted
+ * To simplify things, isTrustedUri() resolves all input to "{$PROTOCOL}://{$HOSTNAME}".
+ * So "http://username:password@hello.world.example.org:8080/some-path?some=query-string"
+ * is reduced to "http://hello.world.example.org" prior to applying the patters from {@link $trusted_uri}.
+ *
+ * @param string $uri
+ *
+ * @return boolean true if URI is trusted
+ * @throws Exception if URI is not trusted
+ * @uses $trusted_uri for list of patterns to match against $uri
+ */
+ public function isTrustedUri($uri) {
+ $_uri = parse_url($uri);
+ if (!empty($_uri['scheme']) && !empty($_uri['host'])) {
+ $_uri = $_uri['scheme'] . '://' . $_uri['host'];
+ foreach ($this->trusted_uri as $pattern) {
+ if (preg_match($pattern, $_uri)) {
+ return true;
+ }
+ }
+ }
+ throw new Exception("URI '{$uri}' not allowed by security setting");
+ }
+
+ /**
+ * Remove old directories and its sub folders, add new directories
+ *
+ * @param array $oldDir
+ * @param array $newDir
+ */
+ private function _updateResourceDir($oldDir, $newDir) {
+ foreach ($oldDir as $directory) {
+ // $directory = $this->smarty->_realpath($directory, true);
+ $length = strlen($directory);
+ foreach ($this->_resource_dir as $dir) {
+ if (substr($dir, 0, $length) === $directory) {
+ unset($this->_resource_dir[$dir]);
+ }
+ }
+ }
+ foreach ($newDir as $directory) {
+ // $directory = $this->smarty->_realpath($directory, true);
+ $this->_resource_dir[$directory] = true;
+ }
+ }
+
+ /**
+ * Check if file is inside a valid directory
+ *
+ * @param string $filepath
+ * @param array $dirs valid directories
+ *
+ * @return array|bool
+ * @throws \Smarty\Exception
+ */
+ private function _checkDir($filepath, $dirs) {
+ $directory = dirname($this->smarty->_realpath($filepath, true)) . DIRECTORY_SEPARATOR;
+ $_directory = [];
+ if (!preg_match('#[\\\\/][.][.][\\\\/]#', $directory)) {
+ while (true) {
+ // test if the directory is trusted
+ if (isset($dirs[$directory])) {
+ return $_directory;
+ }
+ // abort if we've reached root
+ if (!preg_match('#[\\\\/][^\\\\/]+[\\\\/]$#', $directory)) {
+ // give up
+ break;
+ }
+ // remember the directory to add it to _resource_dir in case we're successful
+ $_directory[$directory] = true;
+ // bubble up one level
+ $directory = preg_replace('#[\\\\/][^\\\\/]+[\\\\/]$#', DIRECTORY_SEPARATOR, $directory);
+ }
+ }
+ // give up
+ throw new Exception(sprintf('Smarty Security: not trusted file path \'%s\' ', $filepath));
+ }
+
+ /**
+ * Loads security class and enables security
+ *
+ * @param \Smarty $smarty
+ * @param string|Security $security_class if a string is used, it must be class-name
+ *
+ * @return \Smarty current Smarty instance for chaining
+ * @throws \Smarty\Exception when an invalid class name is provided
+ */
+ public static function enableSecurity(Smarty $smarty, $security_class) {
+ if ($security_class instanceof Security) {
+ $smarty->security_policy = $security_class;
+ return $smarty;
+ } elseif (is_object($security_class)) {
+ throw new Exception("Class '" . get_class($security_class) . "' must extend \\Smarty\\Security.");
+ }
+ if ($security_class === null) {
+ $security_class = $smarty->security_class;
+ }
+ if (!class_exists($security_class)) {
+ throw new Exception("Security class '$security_class' is not defined");
+ } elseif ($security_class !== Security::class && !is_subclass_of($security_class, Security::class)) {
+ throw new Exception("Class '$security_class' must extend " . Security::class . ".");
+ } else {
+ $smarty->security_policy = new $security_class($smarty);
+ }
+ return $smarty;
+ }
+
+ /**
+ * Start template processing
+ *
+ * @param $template
+ *
+ * @throws Exception
+ */
+ public function startTemplate($template) {
+ if ($this->max_template_nesting > 0 && $this->_current_template_nesting++ >= $this->max_template_nesting) {
+ throw new Exception("maximum template nesting level of '{$this->max_template_nesting}' exceeded when calling '{$template->template_resource}'");
+ }
+ }
+
+ /**
+ * Exit template processing
+ */
+ public function endTemplate() {
+ if ($this->max_template_nesting > 0) {
+ $this->_current_template_nesting--;
+ }
+ }
+
+ /**
+ * Register callback functions call at start/end of template rendering
+ *
+ * @param \Smarty\Template $template
+ */
+ public function registerCallBacks(Template $template) {
+ $template->startRenderCallbacks[] = [$this, 'startTemplate'];
+ $template->endRenderCallbacks[] = [$this, 'endTemplate'];
+ }
+}
diff --git a/vendor/smarty/smarty/src/Smarty.php b/vendor/smarty/smarty/src/Smarty.php
new file mode 100644
index 000000000..15baba8f3
--- /dev/null
+++ b/vendor/smarty/smarty/src/Smarty.php
@@ -0,0 +1,2239 @@
+<?php
+
+namespace Smarty;
+
+use FilesystemIterator;
+use RecursiveDirectoryIterator;
+use RecursiveIteratorIterator;
+use Smarty\Cacheresource\File;
+use Smarty\Extension\Base;
+use Smarty\Extension\BCPluginsAdapter;
+use Smarty\Extension\CallbackWrapper;
+use Smarty\Extension\CoreExtension;
+use Smarty\Extension\DefaultExtension;
+use Smarty\Extension\ExtensionInterface;
+use Smarty\Filter\Output\TrimWhitespace;
+use Smarty\Runtime\CaptureRuntime;
+use Smarty\Runtime\DefaultPluginHandlerRuntime;
+use Smarty\Runtime\ForeachRuntime;
+use Smarty\Runtime\InheritanceRuntime;
+use Smarty\Runtime\TplFunctionRuntime;
+
+
+/**
+ * Project: Smarty: the PHP compiling template engine
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3.0 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * For questions, help, comments, discussion, etc., please join the
+ * Smarty mailing list. Send a blank e-mail to
+ * smarty-discussion-subscribe@googlegroups.com
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews <uwe dot tews at gmail dot com>
+ * @author Rodney Rehm
+ * @author Simon Wisselink
+ */
+
+/**
+ * This is the main Smarty class
+ */
+class Smarty extends \Smarty\TemplateBase {
+
+ /**
+ * smarty version
+ */
+ const SMARTY_VERSION = '5.4.3';
+
+ /**
+ * define caching modes
+ */
+ const CACHING_OFF = 0;
+ const CACHING_LIFETIME_CURRENT = 1;
+ const CACHING_LIFETIME_SAVED = 2;
+ /**
+ * define constant for clearing cache files be saved expiration dates
+ */
+ const CLEAR_EXPIRED = -1;
+ /**
+ * define compile check modes
+ */
+ const COMPILECHECK_OFF = 0;
+ const COMPILECHECK_ON = 1;
+ /**
+ * filter types
+ */
+ const FILTER_POST = 'post';
+ const FILTER_PRE = 'pre';
+ const FILTER_OUTPUT = 'output';
+ const FILTER_VARIABLE = 'variable';
+ /**
+ * plugin types
+ */
+ const PLUGIN_FUNCTION = 'function';
+ const PLUGIN_BLOCK = 'block';
+ const PLUGIN_COMPILER = 'compiler';
+ const PLUGIN_MODIFIER = 'modifier';
+ const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler';
+
+ /**
+ * The character set to adhere to (defaults to "UTF-8")
+ */
+ public static $_CHARSET = 'UTF-8';
+
+ /**
+ * The date format to be used internally
+ * (accepts date() and strftime())
+ */
+ public static $_DATE_FORMAT = '%b %e, %Y';
+
+ /**
+ * Flag denoting if PCRE should run in UTF-8 mode
+ */
+ public static $_UTF8_MODIFIER = 'u';
+
+ /**
+ * Flag denoting if operating system is windows
+ */
+ public static $_IS_WINDOWS = false;
+
+ /**
+ * auto literal on delimiters with whitespace
+ *
+ * @var boolean
+ */
+ public $auto_literal = true;
+
+ /**
+ * display error on not assigned variables
+ *
+ * @var boolean
+ */
+ public $error_unassigned = false;
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_templateDirNormalized = false;
+
+ /**
+ * joined template directory string used in cache keys
+ *
+ * @var string
+ */
+ public $_joined_template_dir = null;
+
+ /**
+ * flag if config_dir is normalized
+ *
+ * @var bool
+ */
+ public $_configDirNormalized = false;
+
+ /**
+ * joined config directory string used in cache keys
+ *
+ * @var string
+ */
+ public $_joined_config_dir = null;
+
+ /**
+ * default template handler
+ *
+ * @var callable
+ */
+ public $default_template_handler_func = null;
+
+ /**
+ * default config handler
+ *
+ * @var callable
+ */
+ public $default_config_handler_func = null;
+
+ /**
+ * default plugin handler
+ *
+ * @var callable
+ */
+ private $default_plugin_handler_func = null;
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_compileDirNormalized = false;
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_cacheDirNormalized = false;
+
+ /**
+ * force template compiling?
+ *
+ * @var boolean
+ */
+ public $force_compile = false;
+
+ /**
+ * use sub dirs for compiled/cached files?
+ *
+ * @var boolean
+ */
+ public $use_sub_dirs = false;
+
+ /**
+ * merge compiled includes
+ *
+ * @var boolean
+ */
+ public $merge_compiled_includes = false;
+
+ /**
+ * force cache file creation
+ *
+ * @var boolean
+ */
+ public $force_cache = false;
+
+ /**
+ * template left-delimiter
+ *
+ * @var string
+ */
+ private $left_delimiter = "{";
+
+ /**
+ * template right-delimiter
+ *
+ * @var string
+ */
+ private $right_delimiter = "}";
+
+ /**
+ * array of strings which shall be treated as literal by compiler
+ *
+ * @var array string
+ */
+ public $literals = [];
+
+ /**
+ * class name
+ * This should be instance of \Smarty\Security.
+ *
+ * @var string
+ * @see \Smarty\Security
+ */
+ public $security_class = \Smarty\Security::class;
+
+ /**
+ * implementation of security class
+ *
+ * @var \Smarty\Security
+ */
+ public $security_policy = null;
+
+ /**
+ * debug mode
+ * Setting this to true enables the debug-console. Setting it to 2 enables individual Debug Console window by
+ * template name.
+ *
+ * @var boolean|int
+ */
+ public $debugging = false;
+
+ /**
+ * This determines if debugging is enable-able from the browser.
+ * <ul>
+ * <li>NONE => no debugging control allowed</li>
+ * <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li>
+ * </ul>
+ *
+ * @var string
+ */
+ public $debugging_ctrl = 'NONE';
+
+ /**
+ * Name of debugging URL-param.
+ * Only used when $debugging_ctrl is set to 'URL'.
+ * The name of the URL-parameter that activates debugging.
+ *
+ * @var string
+ */
+ public $smarty_debug_id = 'SMARTY_DEBUG';
+
+ /**
+ * Path of debug template.
+ *
+ * @var string
+ */
+ public $debug_tpl = null;
+
+ /**
+ * When set, smarty uses this value as error_reporting-level.
+ *
+ * @var int
+ */
+ public $error_reporting = null;
+
+ /**
+ * Controls whether variables with the same name overwrite each other.
+ *
+ * @var boolean
+ */
+ public $config_overwrite = true;
+
+ /**
+ * Controls whether config values of on/true/yes and off/false/no get converted to boolean.
+ *
+ * @var boolean
+ */
+ public $config_booleanize = true;
+
+ /**
+ * Controls whether hidden config sections/vars are read from the file.
+ *
+ * @var boolean
+ */
+ public $config_read_hidden = false;
+
+ /**
+ * locking concurrent compiles
+ *
+ * @var boolean
+ */
+ public $compile_locking = true;
+
+ /**
+ * Controls whether cache resources should use locking mechanism
+ *
+ * @var boolean
+ */
+ public $cache_locking = false;
+
+ /**
+ * seconds to wait for acquiring a lock before ignoring the write lock
+ *
+ * @var float
+ */
+ public $locking_timeout = 10;
+
+ /**
+ * resource type used if none given
+ * Must be a valid key of $registered_resources.
+ *
+ * @var string
+ */
+ public $default_resource_type = 'file';
+
+ /**
+ * cache resource
+ * Must be a subclass of \Smarty\Cacheresource\Base
+ *
+ * @var \Smarty\Cacheresource\Base
+ */
+ private $cacheResource;
+
+ /**
+ * config type
+ *
+ * @var string
+ */
+ public $default_config_type = 'file';
+
+ /**
+ * check If-Modified-Since headers
+ *
+ * @var boolean
+ */
+ public $cache_modified_check = false;
+
+ /**
+ * registered plugins
+ *
+ * @var array
+ */
+ public $registered_plugins = [];
+
+ /**
+ * registered objects
+ *
+ * @var array
+ */
+ public $registered_objects = [];
+
+ /**
+ * registered classes
+ *
+ * @var array
+ */
+ public $registered_classes = [];
+
+ /**
+ * registered resources
+ *
+ * @var array
+ */
+ public $registered_resources = [];
+
+ /**
+ * registered cache resources
+ *
+ * @var array
+ * @deprecated since 5.0
+ */
+ private $registered_cache_resources = [];
+
+ /**
+ * default modifier
+ *
+ * @var array
+ */
+ public $default_modifiers = [];
+
+ /**
+ * autoescape variable output
+ *
+ * @var boolean
+ */
+ public $escape_html = false;
+
+ /**
+ * start time for execution time calculation
+ *
+ * @var int
+ */
+ public $start_time = 0;
+
+ /**
+ * internal flag to enable parser debugging
+ *
+ * @var bool
+ */
+ public $_parserdebug = false;
+
+ /**
+ * Debug object
+ *
+ * @var \Smarty\Debug
+ */
+ public $_debug = null;
+
+ /**
+ * template directory
+ *
+ * @var array
+ */
+ protected $template_dir = ['./templates/'];
+
+ /**
+ * flags for normalized template directory entries
+ *
+ * @var array
+ */
+ protected $_processedTemplateDir = [];
+
+ /**
+ * config directory
+ *
+ * @var array
+ */
+ protected $config_dir = ['./configs/'];
+
+ /**
+ * flags for normalized template directory entries
+ *
+ * @var array
+ */
+ protected $_processedConfigDir = [];
+
+ /**
+ * compile directory
+ *
+ * @var string
+ */
+ protected $compile_dir = './templates_c/';
+
+ /**
+ * cache directory
+ *
+ * @var string
+ */
+ protected $cache_dir = './cache/';
+
+ /**
+ * PHP7 Compatibility mode
+ *
+ * @var bool
+ */
+ private $isMutingUndefinedOrNullWarnings = false;
+
+ /**
+ * Cache of loaded resource handlers.
+ *
+ * @var array
+ */
+ public $_resource_handlers = [];
+
+ /**
+ * Cache of loaded cacheresource handlers.
+ *
+ * @var array
+ */
+ public $_cacheresource_handlers = [];
+
+ /**
+ * List of extensions
+ *
+ * @var ExtensionInterface[]
+ */
+ private $extensions = [];
+ /**
+ * @var BCPluginsAdapter
+ */
+ private $BCPluginsAdapter;
+
+ /**
+ * Initialize new Smarty object
+ */
+ public function __construct() {
+
+ $this->start_time = microtime(true);
+ // Check if we're running on Windows
+ \Smarty\Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
+ // let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8
+ if (\Smarty\Smarty::$_CHARSET !== 'UTF-8') {
+ \Smarty\Smarty::$_UTF8_MODIFIER = '';
+ }
+
+ $this->BCPluginsAdapter = new BCPluginsAdapter($this);
+
+ $this->extensions[] = new CoreExtension();
+ $this->extensions[] = new DefaultExtension();
+ $this->extensions[] = $this->BCPluginsAdapter;
+
+ $this->cacheResource = new File();
+ }
+
+ /**
+ * Load an additional extension.
+ *
+ * @return void
+ */
+ public function addExtension(ExtensionInterface $extension) {
+ $this->extensions[] = $extension;
+ }
+
+ /**
+ * Returns all loaded extensions
+ *
+ * @return array|ExtensionInterface[]
+ */
+ public function getExtensions(): array {
+ return $this->extensions;
+ }
+
+ /**
+ * Replace the entire list extensions, allowing you to determine the exact order of the extensions.
+ *
+ * @param ExtensionInterface[] $extensions
+ *
+ * @return void
+ */
+ public function setExtensions(array $extensions): void {
+ $this->extensions = $extensions;
+ }
+
+ /**
+ * Check if a template resource exists
+ *
+ * @param string $resource_name template name
+ *
+ * @return bool status
+ * @throws \Smarty\Exception
+ */
+ public function templateExists($resource_name) {
+ // create source object
+ $source = Template\Source::load(null, $this, $resource_name);
+ return $source->exists;
+ }
+
+ /**
+ * Loads security class and enables security
+ *
+ * @param string|\Smarty\Security $security_class if a string is used, it must be class-name
+ *
+ * @return static current Smarty instance for chaining
+ * @throws \Smarty\Exception
+ */
+ public function enableSecurity($security_class = null) {
+ \Smarty\Security::enableSecurity($this, $security_class);
+ return $this;
+ }
+
+ /**
+ * Disable security
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function disableSecurity() {
+ $this->security_policy = null;
+ return $this;
+ }
+
+ /**
+ * Add template directory(s)
+ *
+ * @param string|array $template_dir directory(s) of template sources
+ * @param string $key of the array element to assign the template dir to
+ * @param bool $isConfig true for config_dir
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function addTemplateDir($template_dir, $key = null, $isConfig = false) {
+ if ($isConfig) {
+ $processed = &$this->_processedConfigDir;
+ $dir = &$this->config_dir;
+ $this->_configDirNormalized = false;
+ } else {
+ $processed = &$this->_processedTemplateDir;
+ $dir = &$this->template_dir;
+ $this->_templateDirNormalized = false;
+ }
+ if (is_array($template_dir)) {
+ foreach ($template_dir as $k => $v) {
+ if (is_int($k)) {
+ // indexes are not merged but appended
+ $dir[] = $v;
+ } else {
+ // string indexes are overridden
+ $dir[$k] = $v;
+ unset($processed[$key]);
+ }
+ }
+ } else {
+ if ($key !== null) {
+ // override directory at specified index
+ $dir[$key] = $template_dir;
+ unset($processed[$key]);
+ } else {
+ // append new directory
+ $dir[] = $template_dir;
+ }
+ }
+ return $this;
+ }
+
+ /**
+ * Get template directories
+ *
+ * @param mixed $index index of directory to get, null to get all
+ * @param bool $isConfig true for config_dir
+ *
+ * @return array|string list of template directories, or directory of $index
+ */
+ public function getTemplateDir($index = null, $isConfig = false) {
+ if ($isConfig) {
+ $dir = &$this->config_dir;
+ } else {
+ $dir = &$this->template_dir;
+ }
+ if ($isConfig ? !$this->_configDirNormalized : !$this->_templateDirNormalized) {
+ $this->_normalizeTemplateConfig($isConfig);
+ }
+ if ($index !== null) {
+ return isset($dir[$index]) ? $dir[$index] : null;
+ }
+ return $dir;
+ }
+
+ /**
+ * Set template directory
+ *
+ * @param string|array $template_dir directory(s) of template sources
+ * @param bool $isConfig true for config_dir
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function setTemplateDir($template_dir, $isConfig = false) {
+ if ($isConfig) {
+ $this->config_dir = [];
+ $this->_processedConfigDir = [];
+ } else {
+ $this->template_dir = [];
+ $this->_processedTemplateDir = [];
+ }
+ $this->addTemplateDir($template_dir, null, $isConfig);
+ return $this;
+ }
+
+ /**
+ * Adds a template directory before any existing directoires
+ *
+ * @param string $new_template_dir directory of template sources
+ * @param bool $is_config true for config_dir
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function prependTemplateDir($new_template_dir, $is_config = false) {
+ $current_template_dirs = $is_config ? $this->config_dir : $this->template_dir;
+ array_unshift($current_template_dirs, $new_template_dir);
+ $this->setTemplateDir($current_template_dirs, $is_config);
+ return $this;
+ }
+
+ /**
+ * Add config directory(s)
+ *
+ * @param string|array $config_dir directory(s) of config sources
+ * @param mixed $key key of the array element to assign the config dir to
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function addConfigDir($config_dir, $key = null) {
+ return $this->addTemplateDir($config_dir, $key, true);
+ }
+
+ /**
+ * Get config directory
+ *
+ * @param mixed $index index of directory to get, null to get all
+ *
+ * @return array configuration directory
+ */
+ public function getConfigDir($index = null) {
+ return $this->getTemplateDir($index, true);
+ }
+
+ /**
+ * Set config directory
+ *
+ * @param $config_dir
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function setConfigDir($config_dir) {
+ return $this->setTemplateDir($config_dir, true);
+ }
+
+ /**
+ * Registers plugin to be used in templates
+ *
+ * @param string $type plugin type
+ * @param string $name name of template tag
+ * @param callable $callback PHP callback to register
+ * @param bool $cacheable if true (default) this function is cache able
+ *
+ * @return $this
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::registerPlugin()
+ */
+ public function registerPlugin($type, $name, $callback, $cacheable = true) {
+ if (isset($this->registered_plugins[$type][$name])) {
+ throw new Exception("Plugin tag '{$name}' already registered");
+ } elseif (!is_callable($callback) && !class_exists($callback)) {
+ throw new Exception("Plugin '{$name}' not callable");
+ } else {
+ $this->registered_plugins[$type][$name] = [$callback, (bool)$cacheable];
+ }
+ return $this;
+ }
+
+ /**
+ * Returns plugin previously registered using ::registerPlugin as a numerical array as follows or null if not found:
+ * [
+ * 0 => the callback
+ * 1 => (bool) $cacheable
+ * 2 => (array) $cache_attr
+ * ]
+ *
+ * @param string $type plugin type
+ * @param string $name name of template tag
+ *
+ * @return array|null
+ *
+ * @api Smarty::unregisterPlugin()
+ */
+ public function getRegisteredPlugin($type, $name): ?array {
+ if (isset($this->registered_plugins[$type][$name])) {
+ return $this->registered_plugins[$type][$name];
+ }
+ return null;
+ }
+
+ /**
+ * Unregisters plugin previously registered using ::registerPlugin
+ *
+ * @param string $type plugin type
+ * @param string $name name of template tag
+ *
+ * @return $this
+ *
+ * @api Smarty::unregisterPlugin()
+ */
+ public function unregisterPlugin($type, $name) {
+ if (isset($this->registered_plugins[$type][$name])) {
+ unset($this->registered_plugins[$type][$name]);
+ }
+ return $this;
+ }
+
+ /**
+ * Adds directory of plugin files
+ *
+ * @param null|array|string $plugins_dir
+ *
+ * @return static current Smarty instance for chaining
+ * @deprecated since 5.0
+ */
+ public function addPluginsDir($plugins_dir) {
+ trigger_error('Using Smarty::addPluginsDir() to load plugins is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::addExtension() to add an extension or Smarty::registerPlugin to ' .
+ 'quickly register a plugin using a callback function.', E_USER_DEPRECATED);
+
+ foreach ((array)$plugins_dir as $v) {
+ $path = $this->_realpath(rtrim($v ?? '', '/\\') . DIRECTORY_SEPARATOR, true);
+ $this->BCPluginsAdapter->loadPluginsFromDir($path);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Get plugin directories
+ *
+ * @return array list of plugin directories
+ * @deprecated since 5.0
+ */
+ public function getPluginsDir() {
+ trigger_error('Using Smarty::getPluginsDir() is deprecated and will be ' .
+ 'removed in a future release. It will always return an empty array.', E_USER_DEPRECATED);
+ return [];
+ }
+
+ /**
+ * Set plugins directory
+ *
+ * @param string|array $plugins_dir directory(s) of plugins
+ *
+ * @return static current Smarty instance for chaining
+ * @deprecated since 5.0
+ */
+ public function setPluginsDir($plugins_dir) {
+ trigger_error('Using Smarty::getPluginsDir() is deprecated and will be ' .
+ 'removed in a future release. For now, it will remove the DefaultExtension from the extensions list and ' .
+ 'proceed to call Smartyy::addPluginsDir..', E_USER_DEPRECATED);
+
+ $this->extensions = array_filter(
+ $this->extensions,
+ function ($extension) {
+ return !($extension instanceof DefaultExtension);
+ }
+ );
+
+ return $this->addPluginsDir($plugins_dir);
+ }
+
+ /**
+ * Registers a default plugin handler
+ *
+ * @param callable $callback class/method name
+ *
+ * @return $this
+ * @throws Exception if $callback is not callable
+ *
+ * @api Smarty::registerDefaultPluginHandler()
+ *
+ * @deprecated since 5.0
+ */
+ public function registerDefaultPluginHandler($callback) {
+
+ trigger_error('Using Smarty::registerDefaultPluginHandler() is deprecated and will be ' .
+ 'removed in a future release. Please rewrite your plugin handler as an extension.',
+ E_USER_DEPRECATED);
+
+ if (is_callable($callback)) {
+ $this->default_plugin_handler_func = $callback;
+ } else {
+ throw new Exception("Default plugin handler '$callback' not callable");
+ }
+ return $this;
+ }
+
+ /**
+ * Get compiled directory
+ *
+ * @return string path to compiled templates
+ */
+ public function getCompileDir() {
+ if (!$this->_compileDirNormalized) {
+ $this->_normalizeDir('compile_dir', $this->compile_dir);
+ $this->_compileDirNormalized = true;
+ }
+ return $this->compile_dir;
+ }
+
+ /**
+ *
+ * @param string $compile_dir directory to store compiled templates in
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function setCompileDir($compile_dir) {
+ $this->_normalizeDir('compile_dir', $compile_dir);
+ $this->_compileDirNormalized = true;
+ return $this;
+ }
+
+ /**
+ * Get cache directory
+ *
+ * @return string path of cache directory
+ */
+ public function getCacheDir() {
+ if (!$this->_cacheDirNormalized) {
+ $this->_normalizeDir('cache_dir', $this->cache_dir);
+ $this->_cacheDirNormalized = true;
+ }
+ return $this->cache_dir;
+ }
+
+ /**
+ * Set cache directory
+ *
+ * @param string $cache_dir directory to store cached templates in
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function setCacheDir($cache_dir) {
+ $this->_normalizeDir('cache_dir', $cache_dir);
+ $this->_cacheDirNormalized = true;
+ return $this;
+ }
+
+ private $templates = [];
+
+ /**
+ * Creates a template object
+ *
+ * @param string $template_name
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param null $parent next higher level of Smarty variables
+ *
+ * @return Template template object
+ * @throws Exception
+ */
+ public function createTemplate($template_name, $cache_id = null, $compile_id = null, $parent = null): Template {
+
+ $data = [];
+
+ // Shuffle params for backward compatibility: if 2nd param is an object, it's the parent
+ if (is_object($cache_id)) {
+ $parent = $cache_id;
+ $cache_id = null;
+ }
+
+ // Shuffle params for backward compatibility: if 2nd param is an array, it's data
+ if (is_array($cache_id)) {
+ $data = $cache_id;
+ $cache_id = null;
+ }
+
+ return $this->doCreateTemplate($template_name, $cache_id, $compile_id, $parent, null, null, false, $data);
+ }
+
+ /**
+ * Get unique template id
+ *
+ * @param string $resource_name
+ * @param null|mixed $cache_id
+ * @param null|mixed $compile_id
+ * @param null $caching
+ *
+ * @return string
+ */
+ private function generateUniqueTemplateId(
+ $resource_name,
+ $cache_id = null,
+ $compile_id = null,
+ $caching = null
+ ): string {
+ // defaults for optional params
+ $cache_id = $cache_id ?? $this->cache_id;
+ $compile_id = $compile_id ?? $this->compile_id;
+ $caching = (int)$caching ?? $this->caching;
+
+ // Add default resource type to resource name if it is missing
+ if (strpos($resource_name, ':') === false) {
+ $resource_name = "{$this->default_resource_type}:{$resource_name}";
+ }
+
+ $_templateId = $resource_name . '#' . $cache_id . '#' . $compile_id . '#' . $caching;
+
+ // hash very long IDs to prevent problems with filename length
+ // do not hash shorter IDs, so they remain recognizable
+ if (strlen($_templateId) > 150) {
+ $_templateId = sha1($_templateId);
+ }
+
+ return $_templateId;
+ }
+
+ /**
+ * Normalize path
+ * - remove /./ and /../
+ * - make it absolute if required
+ *
+ * @param string $path file path
+ * @param bool $realpath if true - convert to absolute
+ * false - convert to relative
+ * null - keep as it is but
+ * remove /./ /../
+ *
+ * @return string
+ */
+ public function _realpath($path, $realpath = null) {
+ $nds = ['/' => '\\', '\\' => '/'];
+ preg_match(
+ '%^(?<root>(?:[[:alpha:]]:[\\\\/]|/|[\\\\]{2}[[:alpha:]]+|[[:print:]]{2,}:[/]{2}|[\\\\])?)(?<path>(.*))$%u',
+ $path,
+ $parts
+ );
+ $path = $parts['path'];
+ if ($parts['root'] === '\\') {
+ $parts['root'] = substr(getcwd(), 0, 2) . $parts['root'];
+ } else {
+ if ($realpath !== null && !$parts['root']) {
+ $path = getcwd() . DIRECTORY_SEPARATOR . $path;
+ }
+ }
+ // normalize DIRECTORY_SEPARATOR
+ $path = str_replace($nds[DIRECTORY_SEPARATOR], DIRECTORY_SEPARATOR, $path);
+ $parts['root'] = str_replace($nds[DIRECTORY_SEPARATOR], DIRECTORY_SEPARATOR, $parts['root']);
+ do {
+ $path = preg_replace(
+ ['#[\\\\/]{2}#', '#[\\\\/][.][\\\\/]#', '#[\\\\/]([^\\\\/.]+)[\\\\/][.][.][\\\\/]#'],
+ DIRECTORY_SEPARATOR,
+ $path,
+ -1,
+ $count
+ );
+ } while ($count > 0);
+ return $realpath !== false ? $parts['root'] . $path : str_ireplace(getcwd(), '.', $parts['root'] . $path);
+ }
+
+ /**
+ * @param boolean $use_sub_dirs
+ */
+ public function setUseSubDirs($use_sub_dirs) {
+ $this->use_sub_dirs = $use_sub_dirs;
+ }
+
+ /**
+ * @param int $error_reporting
+ */
+ public function setErrorReporting($error_reporting) {
+ $this->error_reporting = $error_reporting;
+ }
+
+ /**
+ * @param boolean $escape_html
+ */
+ public function setEscapeHtml($escape_html) {
+ $this->escape_html = $escape_html;
+ }
+
+ /**
+ * Return auto_literal flag
+ *
+ * @return boolean
+ */
+ public function getAutoLiteral() {
+ return $this->auto_literal;
+ }
+
+ /**
+ * Set auto_literal flag
+ *
+ * @param boolean $auto_literal
+ */
+ public function setAutoLiteral($auto_literal = true) {
+ $this->auto_literal = $auto_literal;
+ }
+
+ /**
+ * @param boolean $force_compile
+ */
+ public function setForceCompile($force_compile) {
+ $this->force_compile = $force_compile;
+ }
+
+ /**
+ * @param boolean $merge_compiled_includes
+ */
+ public function setMergeCompiledIncludes($merge_compiled_includes) {
+ $this->merge_compiled_includes = $merge_compiled_includes;
+ }
+
+ /**
+ * Get left delimiter
+ *
+ * @return string
+ */
+ public function getLeftDelimiter() {
+ return $this->left_delimiter;
+ }
+
+ /**
+ * Set left delimiter
+ *
+ * @param string $left_delimiter
+ */
+ public function setLeftDelimiter($left_delimiter) {
+ $this->left_delimiter = $left_delimiter;
+ }
+
+ /**
+ * Get right delimiter
+ *
+ * @return string $right_delimiter
+ */
+ public function getRightDelimiter() {
+ return $this->right_delimiter;
+ }
+
+ /**
+ * Set right delimiter
+ *
+ * @param string
+ */
+ public function setRightDelimiter($right_delimiter) {
+ $this->right_delimiter = $right_delimiter;
+ }
+
+ /**
+ * @param boolean $debugging
+ */
+ public function setDebugging($debugging) {
+ $this->debugging = $debugging;
+ }
+
+ /**
+ * @param boolean $config_overwrite
+ */
+ public function setConfigOverwrite($config_overwrite) {
+ $this->config_overwrite = $config_overwrite;
+ }
+
+ /**
+ * @param boolean $config_booleanize
+ */
+ public function setConfigBooleanize($config_booleanize) {
+ $this->config_booleanize = $config_booleanize;
+ }
+
+ /**
+ * @param boolean $config_read_hidden
+ */
+ public function setConfigReadHidden($config_read_hidden) {
+ $this->config_read_hidden = $config_read_hidden;
+ }
+
+ /**
+ * @param boolean $compile_locking
+ */
+ public function setCompileLocking($compile_locking) {
+ $this->compile_locking = $compile_locking;
+ }
+
+ /**
+ * @param string $default_resource_type
+ */
+ public function setDefaultResourceType($default_resource_type) {
+ $this->default_resource_type = $default_resource_type;
+ }
+
+ /**
+ * Test install
+ *
+ * @param null $errors
+ */
+ public function testInstall(&$errors = null) {
+ \Smarty\TestInstall::testInstall($this, $errors);
+ }
+
+ /**
+ * Get Smarty object
+ *
+ * @return static
+ */
+ public function getSmarty() {
+ return $this;
+ }
+
+ /**
+ * Normalize and set directory string
+ *
+ * @param string $dirName cache_dir or compile_dir
+ * @param string $dir filepath of folder
+ */
+ private function _normalizeDir($dirName, $dir) {
+ $this->{$dirName} = $this->_realpath(rtrim($dir ?? '', "/\\") . DIRECTORY_SEPARATOR, true);
+ }
+
+ /**
+ * Normalize template_dir or config_dir
+ *
+ * @param bool $isConfig true for config_dir
+ */
+ private function _normalizeTemplateConfig($isConfig) {
+ if ($isConfig) {
+ $processed = &$this->_processedConfigDir;
+ $dir = &$this->config_dir;
+ } else {
+ $processed = &$this->_processedTemplateDir;
+ $dir = &$this->template_dir;
+ }
+ if (!is_array($dir)) {
+ $dir = (array)$dir;
+ }
+ foreach ($dir as $k => $v) {
+ if (!isset($processed[$k])) {
+ $dir[$k] = $this->_realpath(rtrim($v ?? '', "/\\") . DIRECTORY_SEPARATOR, true);
+ $processed[$k] = true;
+ }
+ }
+
+ if ($isConfig) {
+ $this->_configDirNormalized = true;
+ $this->_joined_config_dir = join('#', $this->config_dir);
+ } else {
+ $this->_templateDirNormalized = true;
+ $this->_joined_template_dir = join('#', $this->template_dir);
+ }
+
+ }
+
+ /**
+ * Mutes errors for "undefined index", "undefined array key" and "trying to read property of null".
+ *
+ * @void
+ */
+ public function muteUndefinedOrNullWarnings(): void {
+ $this->isMutingUndefinedOrNullWarnings = true;
+ }
+
+ /**
+ * Indicates if Smarty will mute errors for "undefined index", "undefined array key" and "trying to read property of null".
+ *
+ * @return bool
+ */
+ public function isMutingUndefinedOrNullWarnings(): bool {
+ return $this->isMutingUndefinedOrNullWarnings;
+ }
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @param string $template_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time
+ * @param string $type resource type
+ *
+ * @return int number of cache files deleted
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::clearCache()
+ */
+ public function clearCache(
+ $template_name,
+ $cache_id = null,
+ $compile_id = null,
+ $exp_time = null
+ ) {
+ return $this->getCacheResource()->clear($this, $template_name, $cache_id, $compile_id, $exp_time);
+ }
+
+ /**
+ * Empty cache folder
+ *
+ * @param integer $exp_time expiration time
+ * @param string $type resource type
+ *
+ * @return int number of cache files deleted
+ *
+ * @api Smarty::clearAllCache()
+ */
+ public function clearAllCache($exp_time = null) {
+ return $this->getCacheResource()->clearAll($this, $exp_time);
+ }
+
+ /**
+ * Delete compiled template file
+ *
+ * @param string $resource_name template name
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time
+ *
+ * @return int number of template files deleted
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::clearCompiledTemplate()
+ */
+ public function clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null) {
+ $_compile_dir = $this->getCompileDir();
+ if ($_compile_dir === '/') { //We should never want to delete this!
+ return 0;
+ }
+ $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
+ $_dir_sep = $this->use_sub_dirs ? DIRECTORY_SEPARATOR : '^';
+ if (isset($resource_name)) {
+ $_save_stat = $this->caching;
+ $this->caching = \Smarty\Smarty::CACHING_OFF;
+ /* @var Template $tpl */
+ $tpl = $this->doCreateTemplate($resource_name);
+ $this->caching = $_save_stat;
+ if (!$tpl->getSource()->handler->recompiled && $tpl->getSource()->exists) {
+ $_resource_part_1 = basename(str_replace('^', DIRECTORY_SEPARATOR, $tpl->getCompiled()->filepath));
+ $_resource_part_1_length = strlen($_resource_part_1);
+ } else {
+ return 0;
+ }
+ $_resource_part_2 = str_replace('.php', '.cache.php', $_resource_part_1);
+ $_resource_part_2_length = strlen($_resource_part_2);
+ }
+ $_dir = $_compile_dir;
+ if ($this->use_sub_dirs && isset($_compile_id)) {
+ $_dir .= $_compile_id . $_dir_sep;
+ }
+ if (isset($_compile_id)) {
+ $_compile_id_part = $_compile_dir . $_compile_id . $_dir_sep;
+ $_compile_id_part_length = strlen($_compile_id_part);
+ }
+ $_count = 0;
+ try {
+ $_compileDirs = new RecursiveDirectoryIterator($_dir);
+ } catch (\UnexpectedValueException $e) {
+ // path not found / not a dir
+ return 0;
+ }
+ $_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST);
+ foreach ($_compile as $_file) {
+ if (substr(basename($_file->getPathname()), 0, 1) === '.') {
+ continue;
+ }
+ $_filepath = (string)$_file;
+ if ($_file->isDir()) {
+ if (!$_compile->isDot()) {
+ // delete folder if empty
+ @rmdir($_file->getPathname());
+ }
+ } else {
+ // delete only php files
+ if (substr($_filepath, -4) !== '.php') {
+ continue;
+ }
+ $unlink = false;
+ if ((!isset($_compile_id) ||
+ (isset($_filepath[$_compile_id_part_length]) &&
+ $a = !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length)))
+ && (!isset($resource_name) || (isset($_filepath[$_resource_part_1_length])
+ && substr_compare(
+ $_filepath,
+ $_resource_part_1,
+ -$_resource_part_1_length,
+ $_resource_part_1_length
+ ) === 0) || (isset($_filepath[$_resource_part_2_length])
+ && substr_compare(
+ $_filepath,
+ $_resource_part_2,
+ -$_resource_part_2_length,
+ $_resource_part_2_length
+ ) === 0))
+ ) {
+ if (isset($exp_time)) {
+ if (is_file($_filepath) && time() - filemtime($_filepath) >= $exp_time) {
+ $unlink = true;
+ }
+ } else {
+ $unlink = true;
+ }
+ }
+ if ($unlink && is_file($_filepath) && @unlink($_filepath)) {
+ $_count++;
+ if (function_exists('opcache_invalidate')
+ && (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api')) < 1)
+ ) {
+ opcache_invalidate($_filepath, true);
+ } elseif (function_exists('apc_delete_file')) {
+ apc_delete_file($_filepath);
+ }
+ }
+ }
+ }
+ return $_count;
+ }
+
+ /**
+ * Compile all template files
+ *
+ * @param string $extension file extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit
+ * @param int $max_errors
+ *
+ * @return integer number of template files recompiled
+ * @api Smarty::compileAllTemplates()
+ *
+ */
+ public function compileAllTemplates(
+ $extension = '.tpl',
+ $force_compile = false,
+ $time_limit = 0,
+ $max_errors = null
+ ) {
+ return $this->compileAll($extension, $force_compile, $time_limit, $max_errors);
+ }
+
+ /**
+ * Compile all config files
+ *
+ * @param string $extension file extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit
+ * @param int $max_errors
+ *
+ * @return int number of template files recompiled
+ * @api Smarty::compileAllConfig()
+ *
+ */
+ public function compileAllConfig(
+ $extension = '.conf',
+ $force_compile = false,
+ $time_limit = 0,
+ $max_errors = null
+ ) {
+ return $this->compileAll($extension, $force_compile, $time_limit, $max_errors, true);
+ }
+
+ /**
+ * Compile all template or config files
+ *
+ * @param string $extension template file name extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit set maximum execution time
+ * @param int $max_errors set maximum allowed errors
+ * @param bool $isConfig flag true if called for config files
+ *
+ * @return int number of template files compiled
+ */
+ protected function compileAll(
+ $extension,
+ $force_compile,
+ $time_limit,
+ $max_errors,
+ $isConfig = false
+ ) {
+ // switch off time limit
+ if (function_exists('set_time_limit')) {
+ @set_time_limit($time_limit);
+ }
+ $_count = 0;
+ $_error_count = 0;
+ $sourceDir = $isConfig ? $this->getConfigDir() : $this->getTemplateDir();
+ // loop over array of source directories
+ foreach ($sourceDir as $_dir) {
+ $_dir_1 = new RecursiveDirectoryIterator(
+ $_dir,
+ defined('FilesystemIterator::FOLLOW_SYMLINKS') ?
+ FilesystemIterator::FOLLOW_SYMLINKS : 0
+ );
+ $_dir_2 = new RecursiveIteratorIterator($_dir_1);
+ foreach ($_dir_2 as $_fileinfo) {
+ $_file = $_fileinfo->getFilename();
+ if (substr(basename($_fileinfo->getPathname()), 0, 1) === '.' || strpos($_file, '.svn') !== false) {
+ continue;
+ }
+ if (substr_compare($_file, $extension, -strlen($extension)) !== 0) {
+ continue;
+ }
+ if ($_fileinfo->getPath() !== substr($_dir, 0, -1)) {
+ $_file = substr($_fileinfo->getPath(), strlen($_dir)) . DIRECTORY_SEPARATOR . $_file;
+ }
+ echo "\n", $_dir, '---', $_file;
+ flush();
+ $_start_time = microtime(true);
+ $_smarty = clone $this;
+ //
+ $_smarty->force_compile = $force_compile;
+ try {
+ $_tpl = $this->doCreateTemplate($_file);
+ $_tpl->caching = self::CACHING_OFF;
+ $_tpl->setSource(
+ $isConfig ? \Smarty\Template\Config::load($_tpl) : \Smarty\Template\Source::load($_tpl)
+ );
+ if ($_tpl->mustCompile()) {
+ $_tpl->compileTemplateSource();
+ $_count++;
+ echo ' compiled in ', microtime(true) - $_start_time, ' seconds';
+ flush();
+ } else {
+ echo ' is up to date';
+ flush();
+ }
+ } catch (\Exception $e) {
+ echo "\n ------>Error: ", $e->getMessage(), "\n";
+ $_error_count++;
+ }
+ // free memory
+ unset($_tpl);
+ if ($max_errors !== null && $_error_count === $max_errors) {
+ echo "\ntoo many errors\n";
+ exit(1);
+ }
+ }
+ }
+ echo "\n";
+ return $_count;
+ }
+
+ /**
+ * check client side cache
+ *
+ * @param \Smarty\Template\Cached $cached
+ * @param Template $_template
+ * @param string $content
+ *
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ */
+ public function cacheModifiedCheck(Template\Cached $cached, Template $_template, $content) {
+ $_isCached = $_template->isCached() && !$_template->getCompiled()->getNocacheCode();
+ $_last_modified_date =
+ @substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3);
+ if ($_isCached && $cached->timestamp <= strtotime($_last_modified_date)) {
+ switch (PHP_SAPI) {
+ case 'cgi': // php-cgi < 5.3
+ case 'cgi-fcgi': // php-cgi >= 5.3
+ case 'fpm-fcgi': // php-fpm >= 5.3.3
+ header('Status: 304 Not Modified');
+ break;
+ case 'cli':
+ if (/* ^phpunit */
+ !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
+ ) {
+ $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified';
+ }
+ break;
+ default:
+ if (/* ^phpunit */
+ !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
+ ) {
+ $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified';
+ } else {
+ header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
+ }
+ break;
+ }
+ } else {
+ switch (PHP_SAPI) {
+ case 'cli':
+ if (/* ^phpunit */
+ !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
+ ) {
+ $_SERVER['SMARTY_PHPUNIT_HEADERS'][] =
+ 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT';
+ }
+ break;
+ default:
+ header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT');
+ break;
+ }
+ echo $content;
+ }
+ }
+
+ public function getModifierCallback(string $modifierName) {
+ foreach ($this->getExtensions() as $extension) {
+ if ($callback = $extension->getModifierCallback($modifierName)) {
+ return [new CallbackWrapper($modifierName, $callback), 'handle'];
+ }
+ }
+ return null;
+ }
+
+ public function getFunctionHandler(string $functionName): ?\Smarty\FunctionHandler\FunctionHandlerInterface {
+ foreach ($this->getExtensions() as $extension) {
+ if ($handler = $extension->getFunctionHandler($functionName)) {
+ return $handler;
+ }
+ }
+ return null;
+ }
+
+ public function getBlockHandler(string $blockTagName): ?\Smarty\BlockHandler\BlockHandlerInterface {
+ foreach ($this->getExtensions() as $extension) {
+ if ($handler = $extension->getBlockHandler($blockTagName)) {
+ return $handler;
+ }
+ }
+ return null;
+ }
+
+ public function getModifierCompiler(string $modifier): ?\Smarty\Compile\Modifier\ModifierCompilerInterface {
+ foreach ($this->getExtensions() as $extension) {
+ if ($handler = $extension->getModifierCompiler($modifier)) {
+ return $handler;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Run pre-filters over template source
+ *
+ * @param string $source the content which shall be processed by the filters
+ * @param Template $template template object
+ *
+ * @return string the filtered source
+ */
+ public function runPreFilters($source, Template $template) {
+
+ foreach ($this->getExtensions() as $extension) {
+ /** @var \Smarty\Filter\FilterInterface $filter */
+ foreach ($extension->getPreFilters() as $filter) {
+ $source = $filter->filter($source, $template);
+ }
+ }
+
+ // return filtered output
+ return $source;
+ }
+
+ /**
+ * Run post-filters over template's compiled code
+ *
+ * @param string $code the content which shall be processed by the filters
+ * @param Template $template template object
+ *
+ * @return string the filtered code
+ */
+ public function runPostFilters($code, Template $template) {
+
+ foreach ($this->getExtensions() as $extension) {
+ /** @var \Smarty\Filter\FilterInterface $filter */
+ foreach ($extension->getPostFilters() as $filter) {
+ $code = $filter->filter($code, $template);
+ }
+ }
+
+ // return filtered output
+ return $code;
+ }
+
+ /**
+ * Run filters over template output
+ *
+ * @param string $content the content which shall be processed by the filters
+ * @param Template $template template object
+ *
+ * @return string the filtered (modified) output
+ */
+ public function runOutputFilters($content, Template $template) {
+
+ foreach ($this->getExtensions() as $extension) {
+ /** @var \Smarty\Filter\FilterInterface $filter */
+ foreach ($extension->getOutputFilters() as $filter) {
+ $content = $filter->filter($content, $template);
+ }
+ }
+
+ // return filtered output
+ return $content;
+ }
+
+ /**
+ * Writes file in a safe way to disk
+ *
+ * @param string $_filepath complete filepath
+ * @param string $_contents file content
+ *
+ * @return boolean true
+ * @throws Exception
+ */
+ public function writeFile($_filepath, $_contents) {
+ $_error_reporting = error_reporting();
+ error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING);
+ $_dirpath = dirname($_filepath);
+ // if subdirs, create dir structure
+ if ($_dirpath !== '.') {
+ $i = 0;
+ // loop if concurrency problem occurs
+ // see https://bugs.php.net/bug.php?id=35326
+ while (!is_dir($_dirpath)) {
+ if (@mkdir($_dirpath, 0777, true)) {
+ break;
+ }
+ clearstatcache();
+ if (++$i === 3) {
+ error_reporting($_error_reporting);
+ throw new Exception("unable to create directory {$_dirpath}");
+ }
+ sleep(1);
+ }
+ }
+ // write to tmp file, then move to overt file lock race condition
+ $_tmp_file = $_dirpath . DIRECTORY_SEPARATOR . str_replace(['.', ','], '_', uniqid('wrt', true));
+ if (!file_put_contents($_tmp_file, $_contents)) {
+ error_reporting($_error_reporting);
+ throw new Exception("unable to write file {$_tmp_file}");
+ }
+ /*
+ * Windows' rename() fails if the destination exists,
+ * Linux' rename() properly handles the overwrite.
+ * Simply unlink()ing a file might cause other processes
+ * currently reading that file to fail, but linux' rename()
+ * seems to be smart enough to handle that for us.
+ */
+ if (\Smarty\Smarty::$_IS_WINDOWS) {
+ // remove original file
+ if (is_file($_filepath)) {
+ @unlink($_filepath);
+ }
+ // rename tmp file
+ $success = @rename($_tmp_file, $_filepath);
+ } else {
+ // rename tmp file
+ $success = @rename($_tmp_file, $_filepath);
+ if (!$success) {
+ // remove original file
+ if (is_file($_filepath)) {
+ @unlink($_filepath);
+ }
+ // rename tmp file
+ $success = @rename($_tmp_file, $_filepath);
+ }
+ }
+ if (!$success) {
+ error_reporting($_error_reporting);
+ throw new Exception("unable to write file {$_filepath}");
+ }
+ // set file permissions
+ @chmod($_filepath, 0666 & ~umask());
+ error_reporting($_error_reporting);
+ return true;
+ }
+
+ private $runtimes = [];
+
+ /**
+ * Loads and returns a runtime extension or null if not found
+ *
+ * @param string $type
+ *
+ * @return object|null
+ */
+ public function getRuntime(string $type) {
+
+ if (isset($this->runtimes[$type])) {
+ return $this->runtimes[$type];
+ }
+
+ // Lazy load runtimes when/if needed
+ switch ($type) {
+ case 'Capture':
+ return $this->runtimes[$type] = new CaptureRuntime();
+ case 'Foreach':
+ return $this->runtimes[$type] = new ForeachRuntime();
+ case 'Inheritance':
+ return $this->runtimes[$type] = new InheritanceRuntime();
+ case 'TplFunction':
+ return $this->runtimes[$type] = new TplFunctionRuntime();
+ case 'DefaultPluginHandler':
+ return $this->runtimes[$type] = new DefaultPluginHandlerRuntime(
+ $this->getDefaultPluginHandlerFunc()
+ );
+ }
+
+ throw new \Smarty\Exception('Trying to load invalid runtime ' . $type);
+ }
+
+ /**
+ * Indicates if a runtime is available.
+ *
+ * @param string $type
+ *
+ * @return bool
+ */
+ public function hasRuntime(string $type): bool {
+ try {
+ $this->getRuntime($type);
+ return true;
+ } catch (\Smarty\Exception $e) {
+ return false;
+ }
+ }
+
+ /**
+ * @return callable|null
+ */
+ public function getDefaultPluginHandlerFunc(): ?callable {
+ return $this->default_plugin_handler_func;
+ }
+
+ /**
+ * load a filter of specified type and name
+ *
+ * @param string $type filter type
+ * @param string $name filter name
+ *
+ * @return bool
+ * @throws \Smarty\Exception
+ * @api Smarty::loadFilter()
+ *
+ * @deprecated since 5.0
+ */
+ public function loadFilter($type, $name) {
+
+ if ($type == \Smarty\Smarty::FILTER_VARIABLE) {
+ foreach ($this->getExtensions() as $extension) {
+ if ($extension->getModifierCallback($name)) {
+
+ trigger_error('Using Smarty::loadFilter() to load variable filters is deprecated and will ' .
+ 'be removed in a future release. Use Smarty::addDefaultModifiers() to add a modifier.',
+ E_USER_DEPRECATED);
+
+ $this->addDefaultModifiers([$name]);
+ return true;
+ }
+ }
+ }
+
+ trigger_error('Using Smarty::loadFilter() to load filters is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::addExtension() to add an extension or Smarty::registerFilter to ' .
+ 'quickly register a filter using a callback function.', E_USER_DEPRECATED);
+
+ if ($type == \Smarty\Smarty::FILTER_OUTPUT && $name == 'trimwhitespace') {
+ $this->BCPluginsAdapter->addOutputFilter(new TrimWhitespace());
+ return true;
+ }
+
+ $_plugin = "smarty_{$type}filter_{$name}";
+ if (!is_callable($_plugin) && class_exists($_plugin, false)) {
+ $_plugin = [$_plugin, 'execute'];
+ }
+
+ if (is_callable($_plugin)) {
+ $this->registerFilter($type, $_plugin, $name);
+ return true;
+ }
+
+ throw new Exception("{$type}filter '{$name}' not found or callable");
+ }
+
+ /**
+ * load a filter of specified type and name
+ *
+ * @param string $type filter type
+ * @param string $name filter name
+ *
+ * @return static
+ * @throws \Smarty\Exception
+ * @api Smarty::unloadFilter()
+ *
+ *
+ * @deprecated since 5.0
+ */
+ public function unloadFilter($type, $name) {
+ trigger_error('Using Smarty::unloadFilter() to unload filters is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::addExtension() to add an extension or Smarty::(un)registerFilter to ' .
+ 'quickly (un)register a filter using a callback function.', E_USER_DEPRECATED);
+
+ return $this->unregisterFilter($type, $name);
+ }
+
+ private $_caching_type = 'file';
+
+ /**
+ * @param $type
+ *
+ * @return void
+ * @deprecated since 5.0
+ */
+ public function setCachingType($type) {
+ trigger_error('Using Smarty::setCachingType() is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::setCacheResource() instead.', E_USER_DEPRECATED);
+ $this->_caching_type = $type;
+ $this->activateBCCacheResource();
+ }
+
+ /**
+ * @return string
+ * @deprecated since 5.0
+ */
+ public function getCachingType(): string {
+ trigger_error('Using Smarty::getCachingType() is deprecated and will be ' .
+ 'removed in a future release.', E_USER_DEPRECATED);
+ return $this->_caching_type;
+ }
+
+ /**
+ * Registers a resource to fetch a template
+ *
+ * @param string $name name of resource type
+ * @param Base $resource_handler
+ *
+ * @return static
+ *
+ * @api Smarty::registerCacheResource()
+ *
+ * @deprecated since 5.0
+ */
+ public function registerCacheResource($name, \Smarty\Cacheresource\Base $resource_handler) {
+
+ trigger_error('Using Smarty::registerCacheResource() is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::setCacheResource() instead.', E_USER_DEPRECATED);
+
+ $this->registered_cache_resources[$name] = $resource_handler;
+ $this->activateBCCacheResource();
+ return $this;
+ }
+
+ /**
+ * Unregisters a resource to fetch a template
+ *
+ * @param $name
+ *
+ * @return static
+ * @api Smarty::unregisterCacheResource()
+ *
+ * @deprecated since 5.0
+ *
+ */
+ public function unregisterCacheResource($name) {
+
+ trigger_error('Using Smarty::unregisterCacheResource() is deprecated and will be ' .
+ 'removed in a future release.', E_USER_DEPRECATED);
+
+ if (isset($this->registered_cache_resources[$name])) {
+ unset($this->registered_cache_resources[$name]);
+ }
+ return $this;
+ }
+
+ private function activateBCCacheResource() {
+ if ($this->_caching_type == 'file') {
+ $this->setCacheResource(new File());
+ }
+ if (isset($this->registered_cache_resources[$this->_caching_type])) {
+ $this->setCacheResource($this->registered_cache_resources[$this->_caching_type]);
+ }
+ }
+
+ /**
+ * Registers a filter function
+ *
+ * @param string $type filter type
+ * @param callable $callback
+ * @param string|null $name optional filter name
+ *
+ * @return static
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::registerFilter()
+ */
+ public function registerFilter($type, $callback, $name = null) {
+ $name = $name ?? $this->_getFilterName($callback);
+ if (!is_callable($callback)) {
+ throw new Exception("{$type}filter '{$name}' not callable");
+ }
+ switch ($type) {
+ case 'variable':
+ $this->registerPlugin(self::PLUGIN_MODIFIER, $name, $callback);
+ trigger_error('Using Smarty::registerFilter() to register variable filters is deprecated and ' .
+ 'will be removed in a future release. Use Smarty::addDefaultModifiers() to add a modifier.',
+ E_USER_DEPRECATED);
+
+ $this->addDefaultModifiers([$name]);
+ break;
+ case 'output':
+ $this->BCPluginsAdapter->addCallableAsOutputFilter($callback, $name);
+ break;
+ case 'pre':
+ $this->BCPluginsAdapter->addCallableAsPreFilter($callback, $name);
+ break;
+ case 'post':
+ $this->BCPluginsAdapter->addCallableAsPostFilter($callback, $name);
+ break;
+ default:
+ throw new Exception("Illegal filter type '{$type}'");
+ }
+
+ return $this;
+ }
+
+ /**
+ * Return internal filter name
+ *
+ * @param callback $callable
+ *
+ * @return string|null internal filter name or null if callable cannot be serialized
+ */
+ private function _getFilterName($callable) {
+ if (is_array($callable)) {
+ $_class_name = is_object($callable[0]) ? get_class($callable[0]) : $callable[0];
+ return $_class_name . '_' . $callable[1];
+ } elseif (is_string($callable)) {
+ return $callable;
+ }
+ return null;
+ }
+
+ /**
+ * Unregisters a filter function. Smarty cannot unregister closures/anonymous functions if
+ * no name was given in ::registerFilter.
+ *
+ * @param string $type filter type
+ * @param callback|string $name the name previously used in ::registerFilter
+ *
+ * @return static
+ * @throws \Smarty\Exception
+ * @api Smarty::unregisterFilter()
+ *
+ *
+ */
+ public function unregisterFilter($type, $name) {
+
+ if (!is_string($name)) {
+ $name = $this->_getFilterName($name);
+ }
+
+ if ($name) {
+ switch ($type) {
+ case 'output':
+ $this->BCPluginsAdapter->removeOutputFilter($name);
+ break;
+ case 'pre':
+ $this->BCPluginsAdapter->removePreFilter($name);
+ break;
+ case 'post':
+ $this->BCPluginsAdapter->removePostFilter($name);
+ break;
+ default:
+ throw new Exception("Illegal filter type '{$type}'");
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * Add default modifiers
+ *
+ * @param array|string $modifiers modifier or list of modifiers
+ * to add
+ *
+ * @return static
+ * @api Smarty::addDefaultModifiers()
+ *
+ */
+ public function addDefaultModifiers($modifiers) {
+ if (is_array($modifiers)) {
+ $this->default_modifiers = array_merge($this->default_modifiers, $modifiers);
+ } else {
+ $this->default_modifiers[] = $modifiers;
+ }
+ return $this;
+ }
+
+ /**
+ * Get default modifiers
+ *
+ * @return array list of default modifiers
+ * @api Smarty::getDefaultModifiers()
+ *
+ */
+ public function getDefaultModifiers() {
+ return $this->default_modifiers;
+ }
+
+ /**
+ * Set default modifiers
+ *
+ * @param array|string $modifiers modifier or list of modifiers
+ * to set
+ *
+ * @return static
+ * @api Smarty::setDefaultModifiers()
+ *
+ */
+ public function setDefaultModifiers($modifiers) {
+ $this->default_modifiers = (array)$modifiers;
+ return $this;
+ }
+
+ /**
+ * @return Cacheresource\Base
+ */
+ public function getCacheResource(): Cacheresource\Base {
+ return $this->cacheResource;
+ }
+
+ /**
+ * @param Cacheresource\Base $cacheResource
+ */
+ public function setCacheResource(Cacheresource\Base $cacheResource): void {
+ $this->cacheResource = $cacheResource;
+ }
+
+ /**
+ * fetches a rendered Smarty template
+ *
+ * @param string $template the resource handle of the template file or template object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ *
+ * @return string rendered template output
+ * @throws Exception
+ * @throws Exception
+ */
+ public function fetch($template = null, $cache_id = null, $compile_id = null) {
+ return $this->returnOrCreateTemplate($template, $cache_id, $compile_id)->fetch();
+ }
+
+ /**
+ * displays a Smarty template
+ *
+ * @param string $template the resource handle of the template file or template object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ *
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ */
+ public function display($template = null, $cache_id = null, $compile_id = null) {
+ $this->returnOrCreateTemplate($template, $cache_id, $compile_id)->display();
+ }
+
+ /**
+ * @param $resource_name
+ * @param $cache_id
+ * @param $compile_id
+ * @param $parent
+ * @param $caching
+ * @param $cache_lifetime
+ * @param bool $isConfig
+ * @param array $data
+ *
+ * @return Template
+ * @throws Exception
+ */
+ public function doCreateTemplate(
+ $resource_name,
+ $cache_id = null,
+ $compile_id = null,
+ $parent = null,
+ $caching = null,
+ $cache_lifetime = null,
+ bool $isConfig = false,
+ array $data = []): Template {
+
+ if (!$this->_templateDirNormalized) {
+ $this->_normalizeTemplateConfig(false);
+ }
+
+ $_templateId = $this->generateUniqueTemplateId($resource_name, $cache_id, $compile_id, $caching);
+
+ if (!isset($this->templates[$_templateId])) {
+ $newTemplate = new Template($resource_name, $this, $parent ?: $this, $cache_id, $compile_id, $caching, $isConfig);
+ $newTemplate->templateId = $_templateId; // @TODO this could go in constructor ^?
+ $this->templates[$_templateId] = $newTemplate;
+ }
+
+ $tpl = clone $this->templates[$_templateId];
+
+ $tpl->setParent($parent ?: $this);
+
+ if ($cache_lifetime) {
+ $tpl->setCacheLifetime($cache_lifetime);
+ }
+
+ // fill data if present
+ foreach ($data as $_key => $_val) {
+ $tpl->assign($_key, $_val);
+ }
+
+ $tpl->tplFunctions = array_merge($parent->tplFunctions ?? [], $tpl->tplFunctions ?? []);
+
+ if (!$this->debugging && $this->debugging_ctrl === 'URL') {
+ $tpl->getSmarty()->getDebug()->debugUrl($tpl->getSmarty());
+ }
+ return $tpl;
+ }
+
+ /**
+ * test if cache is valid
+ *
+ * @param null|string|Template $template the resource handle of the template file or template
+ * object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ *
+ * @return bool cache status
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::isCached()
+ */
+ public function isCached($template = null, $cache_id = null, $compile_id = null) {
+ return $this->returnOrCreateTemplate($template, $cache_id, $compile_id)->isCached();
+ }
+
+ /**
+ * @param $template
+ * @param $cache_id
+ * @param $compile_id
+ * @param $parent
+ *
+ * @return Template
+ * @throws Exception
+ */
+ private function returnOrCreateTemplate($template, $cache_id = null, $compile_id = null) {
+ if (!($template instanceof Template)) {
+ $template = $this->createTemplate($template, $cache_id, $compile_id, $this);
+ $template->caching = $this->caching;
+ }
+ return $template;
+ }
+
+ /**
+ * Sets if Smarty should check If-Modified-Since headers to determine cache validity.
+ * @param bool $cache_modified_check
+ * @return void
+ */
+ public function setCacheModifiedCheck($cache_modified_check): void {
+ $this->cache_modified_check = (bool) $cache_modified_check;
+ }
+
+}
+
diff --git a/vendor/smarty/smarty/src/Template.php b/vendor/smarty/smarty/src/Template.php
new file mode 100644
index 000000000..242fb2388
--- /dev/null
+++ b/vendor/smarty/smarty/src/Template.php
@@ -0,0 +1,732 @@
+<?php
+/**
+ * Smarty Internal Plugin Template
+ * This file contains the Smarty template engine
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty;
+
+use Smarty\Resource\BasePlugin;
+use Smarty\Runtime\InheritanceRuntime;
+use Smarty\Template\Source;
+use Smarty\Template\Cached;
+use Smarty\Template\Compiled;
+use Smarty\Template\Config;
+
+/**
+ * Main class with template data structures and methods
+ */
+#[\AllowDynamicProperties]
+class Template extends TemplateBase {
+
+ /**
+ * caching mode to create nocache code but no cache file
+ */
+ public const CACHING_NOCACHE_CODE = 9999;
+
+ /**
+ * @var Compiled
+ */
+ private $compiled = null;
+
+ /**
+ * @var Cached
+ */
+ private $cached = null;
+
+ /**
+ * @var \Smarty\Compiler\Template
+ */
+ private $compiler = null;
+
+ /**
+ * Source instance
+ *
+ * @var Source|Config
+ */
+ private $source = null;
+
+ /**
+ * Template resource
+ *
+ * @var string
+ */
+ public $template_resource = null;
+
+ /**
+ * Template ID
+ *
+ * @var null|string
+ */
+ public $templateId = null;
+
+ /**
+ * Callbacks called before rendering template
+ *
+ * @var callback[]
+ */
+ public $startRenderCallbacks = [];
+
+ /**
+ * Callbacks called after rendering template
+ *
+ * @var callback[]
+ */
+ public $endRenderCallbacks = [];
+
+ /**
+ * Template left-delimiter. If null, defaults to $this->getSmarty()-getLeftDelimiter().
+ *
+ * @var string
+ */
+ private $left_delimiter = null;
+
+ /**
+ * Template right-delimiter. If null, defaults to $this->getSmarty()-getRightDelimiter().
+ *
+ * @var string
+ */
+ private $right_delimiter = null;
+
+ /**
+ * @var InheritanceRuntime|null
+ */
+ private $inheritance;
+
+ /**
+ * Create template data object
+ * Some of the global Smarty settings copied to template scope
+ * It load the required template resources and caching plugins
+ *
+ * @param string $template_resource template resource string
+ * @param Smarty $smarty Smarty instance
+ * @param \Smarty\Data|null $_parent back pointer to parent object with variables or null
+ * @param mixed $_cache_id cache id or null
+ * @param mixed $_compile_id compile id or null
+ * @param bool|int|null $_caching use caching?
+ * @param bool $_isConfig
+ *
+ * @throws \Smarty\Exception
+ */
+ public function __construct(
+ $template_resource,
+ Smarty $smarty,
+ ?\Smarty\Data $_parent = null,
+ $_cache_id = null,
+ $_compile_id = null,
+ $_caching = null,
+ $_isConfig = false
+ ) {
+ $this->smarty = $smarty;
+ // Smarty parameter
+ $this->cache_id = $_cache_id === null ? $this->smarty->cache_id : $_cache_id;
+ $this->compile_id = $_compile_id === null ? $this->smarty->compile_id : $_compile_id;
+ $this->caching = (int)($_caching === null ? $this->smarty->caching : $_caching);
+ $this->cache_lifetime = $this->smarty->cache_lifetime;
+ $this->compile_check = (int)$smarty->compile_check;
+ $this->parent = $_parent;
+ // Template resource
+ $this->template_resource = $template_resource;
+
+ $this->source = $_isConfig ? Config::load($this) : Source::load($this);
+ $this->compiled = Compiled::load($this);
+
+ if ($smarty->security_policy) {
+ $smarty->security_policy->registerCallBacks($this);
+ }
+ }
+
+ /**
+ * render template
+ *
+ * @param bool $no_output_filter if true do not run output filter
+ * @param null|bool $display true: display, false: fetch null: sub-template
+ *
+ * @return string
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ */
+ private function render($no_output_filter = true, $display = null) {
+ if ($this->smarty->debugging) {
+ $this->smarty->getDebug()->start_template($this, $display);
+ }
+ // checks if template exists
+ if ($this->compile_check && !$this->getSource()->exists) {
+ throw new Exception(
+ "Unable to load '{$this->getSource()->type}:{$this->getSource()->name}'" .
+ ($this->_isSubTpl() ? " in '{$this->parent->template_resource}'" : '')
+ );
+ }
+
+ // disable caching for evaluated code
+ if ($this->getSource()->handler->recompiled) {
+ $this->caching = \Smarty\Smarty::CACHING_OFF;
+ }
+
+ foreach ($this->startRenderCallbacks as $callback) {
+ call_user_func($callback, $this);
+ }
+
+ try {
+
+ // read from cache or render
+ if ($this->caching === \Smarty\Smarty::CACHING_LIFETIME_CURRENT || $this->caching === \Smarty\Smarty::CACHING_LIFETIME_SAVED) {
+ $this->getCached()->render($this, $no_output_filter);
+ } else {
+ $this->getCompiled()->render($this);
+ }
+
+ } finally {
+ foreach ($this->endRenderCallbacks as $callback) {
+ call_user_func($callback, $this);
+ }
+ }
+
+ // display or fetch
+ if ($display) {
+ if ($this->caching && $this->smarty->cache_modified_check) {
+ $this->smarty->cacheModifiedCheck(
+ $this->getCached(),
+ $this,
+ isset($content) ? $content : ob_get_clean()
+ );
+ } else {
+ if ((!$this->caching || $this->getCached()->getNocacheCode() || $this->getSource()->handler->recompiled)
+ && !$no_output_filter
+ ) {
+ echo $this->smarty->runOutputFilters(ob_get_clean(), $this);
+ } else {
+ echo ob_get_clean();
+ }
+ }
+ if ($this->smarty->debugging) {
+ $this->smarty->getDebug()->end_template($this);
+ // debug output
+ $this->smarty->getDebug()->display_debug($this, true);
+ }
+ return '';
+ } else {
+ if ($this->smarty->debugging) {
+ $this->smarty->getDebug()->end_template($this);
+ if ($this->smarty->debugging === 2 && $display === false) {
+ $this->smarty->getDebug()->display_debug($this, true);
+ }
+ }
+ if (
+ !$no_output_filter
+ && (!$this->caching || $this->getCached()->getNocacheCode() || $this->getSource()->handler->recompiled)
+ ) {
+
+ return $this->smarty->runOutputFilters(ob_get_clean(), $this);
+ }
+ // return cache content
+ return null;
+ }
+ }
+
+ /**
+ * Runtime function to render sub-template
+ *
+ * @param string $template_name template name
+ * @param mixed $cache_id cache id
+ * @param mixed $compile_id compile id
+ * @param integer $caching cache mode
+ * @param integer $cache_lifetime lifetime of cache data
+ * @param array $extra_vars passed parameter template variables
+ * @param int|null $scope
+ *
+ * @throws Exception
+ */
+ public function renderSubTemplate(
+ $template_name,
+ $cache_id,
+ $compile_id,
+ $caching,
+ $cache_lifetime,
+ array $extra_vars = [],
+ ?int $scope = null,
+ ?string $currentDir = null
+ ) {
+
+ $name = $this->parseResourceName($template_name);
+ if ($currentDir && preg_match('/^\.{1,2}\//', $name)) {
+ // relative template resource name, append it to current template name
+ $template_name = $currentDir . DIRECTORY_SEPARATOR . $name;
+ }
+
+ $tpl = $this->smarty->doCreateTemplate($template_name, $cache_id, $compile_id, $this, $caching, $cache_lifetime);
+
+ $tpl->inheritance = $this->getInheritance(); // re-use the same Inheritance object inside the inheritance tree
+
+ if ($scope) {
+ $tpl->defaultScope = $scope;
+ }
+
+ if ($caching) {
+ if ($tpl->templateId !== $this->templateId && $caching !== \Smarty\Template::CACHING_NOCACHE_CODE) {
+ $tpl->getCached(true);
+ } else {
+ // re-use the same Cache object across subtemplates to gather hashes and file dependencies.
+ $tpl->setCached($this->getCached());
+ }
+ }
+
+ foreach ($extra_vars as $_key => $_val) {
+ $tpl->assign($_key, $_val);
+ }
+ if ($tpl->caching === \Smarty\Template::CACHING_NOCACHE_CODE) {
+ if ($tpl->getCompiled()->getNocacheCode()) {
+ $this->getCached()->hashes[$tpl->getCompiled()->nocache_hash] = true;
+ }
+ }
+
+ $tpl->render();
+ }
+
+ /**
+ * Remove type indicator from resource name if present.
+ * E.g. $this->parseResourceName('file:template.tpl') returns 'template.tpl'
+ *
+ * @note "C:/foo.tpl" was forced to file resource up till Smarty 3.1.3 (including).
+ *
+ * @param string $resource_name template_resource or config_resource to parse
+ *
+ * @return string
+ */
+ private function parseResourceName($resource_name): string {
+ if (preg_match('/^([A-Za-z0-9_\-]{2,}):/', $resource_name, $match)) {
+ return substr($resource_name, strlen($match[0]));
+ }
+ return $resource_name;
+ }
+
+ /**
+ * Check if this is a sub template
+ *
+ * @return bool true is sub template
+ */
+ public function _isSubTpl() {
+ return isset($this->parent) && $this->parent instanceof Template;
+ }
+
+ public function assign($tpl_var, $value = null, $nocache = false, $scope = null) {
+ return parent::assign($tpl_var, $value, $nocache, $scope);
+ }
+
+ /**
+ * Compiles the template
+ * If the template is not evaluated the compiled template is saved on disk
+ *
+ * @TODO only used in compileAll and 1 unit test: can we move this and make compileAndWrite private?
+ *
+ * @throws \Exception
+ */
+ public function compileTemplateSource() {
+ return $this->getCompiled()->compileAndWrite($this);
+ }
+
+ /**
+ * Return cached content
+ *
+ * @return null|string
+ * @throws Exception
+ */
+ public function getCachedContent() {
+ return $this->getCached()->getContent($this);
+ }
+
+ /**
+ * Writes the content to cache resource
+ *
+ * @param string $content
+ *
+ * @return bool
+ *
+ * @TODO this method is only used in unit tests that (mostly) try to test CacheResources.
+ */
+ public function writeCachedContent($content) {
+ if ($this->getSource()->handler->recompiled || !$this->caching
+ ) {
+ // don't write cache file
+ return false;
+ }
+ $codeframe = $this->createCodeFrame($content, '', true);
+ return $this->getCached()->writeCache($this, $codeframe);
+ }
+
+ /**
+ * Get unique template id
+ *
+ * @return string
+ */
+ public function getTemplateId() {
+ return $this->templateId;
+ }
+
+ /**
+ * runtime error not matching capture tags
+ *
+ * @throws \Smarty\Exception
+ */
+ public function capture_error() {
+ throw new Exception("Not matching {capture} open/close in '{$this->template_resource}'");
+ }
+
+ /**
+ * Return Compiled object
+ *
+ * @param bool $forceNew force new compiled object
+ */
+ public function getCompiled($forceNew = false) {
+ if ($forceNew || !isset($this->compiled)) {
+ $this->compiled = Compiled::load($this);
+ }
+ return $this->compiled;
+ }
+
+ /**
+ * Return Cached object
+ *
+ * @param bool $forceNew force new cached object
+ *
+ * @throws Exception
+ */
+ public function getCached($forceNew = false): Cached {
+ if ($forceNew || !isset($this->cached)) {
+ $cacheResource = $this->smarty->getCacheResource();
+ $this->cached = new Cached(
+ $this->source,
+ $cacheResource,
+ $this->compile_id,
+ $this->cache_id
+ );
+ if ($this->isCachingEnabled()) {
+ $cacheResource->populate($this->cached, $this);
+ } else {
+ $this->cached->setValid(false);
+ }
+ }
+ return $this->cached;
+ }
+
+ private function isCachingEnabled(): bool {
+ return $this->caching && !$this->getSource()->handler->recompiled;
+ }
+
+ /**
+ * Helper function for InheritanceRuntime object
+ *
+ * @return InheritanceRuntime
+ * @throws Exception
+ */
+ public function getInheritance(): InheritanceRuntime {
+ if (is_null($this->inheritance)) {
+ $this->inheritance = clone $this->getSmarty()->getRuntime('Inheritance');
+ }
+ return $this->inheritance;
+ }
+
+ /**
+ * Sets a new InheritanceRuntime object.
+ *
+ * @param InheritanceRuntime $inheritanceRuntime
+ *
+ * @return void
+ */
+ public function setInheritance(InheritanceRuntime $inheritanceRuntime) {
+ $this->inheritance = $inheritanceRuntime;
+ }
+
+ /**
+ * Return Compiler object
+ */
+ public function getCompiler() {
+ if (!isset($this->compiler)) {
+ $this->compiler = $this->getSource()->createCompiler();
+ }
+ return $this->compiler;
+ }
+
+ /**
+ * Create code frame for compiled and cached templates
+ *
+ * @param string $content optional template content
+ * @param string $functions compiled template function and block code
+ * @param bool $cache flag for cache file
+ * @param Compiler\Template|null $compiler
+ *
+ * @return string
+ * @throws Exception
+ */
+ public function createCodeFrame($content = '', $functions = '', $cache = false, ?\Smarty\Compiler\Template $compiler = null) {
+ return $this->getCodeFrameCompiler()->create($content, $functions, $cache, $compiler);
+ }
+
+ /**
+ * Template data object destructor
+ */
+ public function __destruct() {
+ if ($this->smarty->cache_locking && $this->getCached()->is_locked) {
+ $this->getCached()->handler->releaseLock($this->smarty, $this->getCached());
+ }
+ }
+
+ /**
+ * Returns if the current template must be compiled by the Smarty compiler
+ * It does compare the timestamps of template source and the compiled templates and checks the force compile
+ * configuration
+ *
+ * @return bool
+ * @throws \Smarty\Exception
+ */
+ public function mustCompile(): bool {
+ if (!$this->getSource()->exists) {
+ if ($this->_isSubTpl()) {
+ $parent_resource = " in '{$this->parent->template_resource}'";
+ } else {
+ $parent_resource = '';
+ }
+ throw new Exception("Unable to load {$this->getSource()->type} '{$this->getSource()->name}'{$parent_resource}");
+ }
+
+ // @TODO move this logic to Compiled
+ return $this->smarty->force_compile
+ || $this->getSource()->handler->recompiled
+ || !$this->getCompiled()->exists
+ || ($this->compile_check && $this->getCompiled()->getTimeStamp() < $this->getSource()->getTimeStamp());
+ }
+
+ private function getCodeFrameCompiler(): Compiler\CodeFrame {
+ return new \Smarty\Compiler\CodeFrame($this);
+ }
+
+ /**
+ * Get left delimiter
+ *
+ * @return string
+ */
+ public function getLeftDelimiter()
+ {
+ return $this->left_delimiter ?? $this->getSmarty()->getLeftDelimiter();
+ }
+
+ /**
+ * Set left delimiter
+ *
+ * @param string $left_delimiter
+ */
+ public function setLeftDelimiter($left_delimiter)
+ {
+ $this->left_delimiter = $left_delimiter;
+ }
+
+ /**
+ * Get right delimiter
+ *
+ * @return string $right_delimiter
+ */
+ public function getRightDelimiter()
+ {
+ return $this->right_delimiter ?? $this->getSmarty()->getRightDelimiter();;
+ }
+
+ /**
+ * Set right delimiter
+ *
+ * @param string
+ */
+ public function setRightDelimiter($right_delimiter)
+ {
+ $this->right_delimiter = $right_delimiter;
+ }
+
+ /**
+ * gets a stream variable
+ *
+ * @param string $variable the stream of the variable
+ *
+ * @return mixed
+ * @throws \Smarty\Exception
+ *
+ */
+ public function getStreamVariable($variable)
+ {
+
+ trigger_error("Using stream variables (\`\{\$foo:bar\}\`)is deprecated.", E_USER_DEPRECATED);
+
+ $_result = '';
+ $fp = fopen($variable, 'r+');
+ if ($fp) {
+ while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
+ $_result .= $current_line;
+ }
+ fclose($fp);
+ return $_result;
+ }
+ if ($this->getSmarty()->error_unassigned) {
+ throw new Exception('Undefined stream variable "' . $variable . '"');
+ }
+ return null;
+ }
+ /**
+ * @inheritdoc
+ */
+ public function configLoad($config_file, $sections = null)
+ {
+ $confObj = parent::configLoad($config_file, $sections);
+
+ $this->getCompiled()->file_dependency[ $confObj->getSource()->uid ] =
+ array($confObj->getSource()->getResourceName(), $confObj->getSource()->getTimeStamp(), $confObj->getSource()->type);
+
+ return $confObj;
+ }
+
+ public function fetch() {
+ $result = $this->_execute(0);
+ return $result === null ? ob_get_clean() : $result;
+ }
+
+ public function display() {
+ $this->_execute(1);
+ }
+
+ /**
+ * test if cache is valid
+ *
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
+ *
+ * @return bool cache status
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::isCached()
+ */
+ public function isCached(): bool {
+ return (bool) $this->_execute(2);
+ }
+
+ /**
+ * fetches a rendered Smarty template
+ *
+ * @param string $function function type 0 = fetch, 1 = display, 2 = isCache
+ *
+ * @return mixed
+ * @throws Exception
+ * @throws \Throwable
+ */
+ private function _execute($function) {
+
+ $smarty = $this->getSmarty();
+
+ // make sure we have integer values
+ $this->caching = (int)$this->caching;
+ // fetch template content
+ $level = ob_get_level();
+ try {
+ $_smarty_old_error_level =
+ isset($smarty->error_reporting) ? error_reporting($smarty->error_reporting) : null;
+
+ if ($smarty->isMutingUndefinedOrNullWarnings()) {
+ $errorHandler = new \Smarty\ErrorHandler();
+ $errorHandler->activate();
+ }
+
+ if ($function === 2) {
+ if ($this->caching) {
+ // return cache status of template
+ $result = $this->getCached()->isCached($this);
+ } else {
+ return false;
+ }
+ } else {
+
+ // After rendering a template, the tpl/config variables are reset, so the template can be re-used.
+ $this->pushStack();
+
+ // Start output-buffering.
+ ob_start();
+
+ $result = $this->render(false, $function);
+
+ // Restore the template to its previous state
+ $this->popStack();
+ }
+
+ if (isset($errorHandler)) {
+ $errorHandler->deactivate();
+ }
+
+ if (isset($_smarty_old_error_level)) {
+ error_reporting($_smarty_old_error_level);
+ }
+ return $result;
+ } catch (\Throwable $e) {
+ while (ob_get_level() > $level) {
+ ob_end_clean();
+ }
+ if (isset($errorHandler)) {
+ $errorHandler->deactivate();
+ }
+
+ if (isset($_smarty_old_error_level)) {
+ error_reporting($_smarty_old_error_level);
+ }
+ throw $e;
+ }
+ }
+
+ /**
+ * @return Config|Source|null
+ */
+ public function getSource() {
+ return $this->source;
+ }
+
+ /**
+ * @param Config|Source|null $source
+ */
+ public function setSource($source): void {
+ $this->source = $source;
+ }
+
+ /**
+ * Sets the Cached object, so subtemplates can share one Cached object to gather meta-data.
+ *
+ * @param Cached $cached
+ *
+ * @return void
+ */
+ private function setCached(Cached $cached) {
+ $this->cached = $cached;
+ }
+
+ /**
+ * @param string $compile_id
+ *
+ * @throws Exception
+ */
+ public function setCompileId($compile_id) {
+ parent::setCompileId($compile_id);
+ $this->getCompiled(true);
+ if ($this->caching) {
+ $this->getCached(true);
+ }
+ }
+
+ /**
+ * @param string $cache_id
+ *
+ * @throws Exception
+ */
+ public function setCacheId($cache_id) {
+ parent::setCacheId($cache_id);
+ $this->getCached(true);
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Template/Cached.php b/vendor/smarty/smarty/src/Template/Cached.php
new file mode 100644
index 000000000..78635db06
--- /dev/null
+++ b/vendor/smarty/smarty/src/Template/Cached.php
@@ -0,0 +1,428 @@
+<?php
+
+namespace Smarty\Template;
+
+use Smarty\Exception;
+use Smarty\Template;
+use Smarty\Template\Cacheresource\Base;
+use Smarty\Template\Compiler\CodeFrame;
+
+/**
+ * Represents a cached version of a template or config file.
+ * @author Rodney Rehm
+ */
+class Cached extends GeneratedPhpFile {
+
+ /**
+ * Cache Is Valid
+ *
+ * @var boolean
+ */
+ private $valid = null;
+
+ /**
+ * @param bool|null $valid
+ */
+ public function setValid(?bool $valid): void {
+ $this->valid = $valid;
+ }
+
+ /**
+ * CacheResource Handler
+ *
+ * @var \Smarty\Cacheresource\Base
+ */
+ public $handler = null;
+
+ /**
+ * Template Cache Id (\Smarty\Template::$cache_id)
+ *
+ * @var string
+ */
+ public $cache_id = null;
+
+ /**
+ * saved cache lifetime in seconds
+ *
+ * @var int
+ */
+ public $cache_lifetime = 0;
+
+ /**
+ * Id for cache locking
+ *
+ * @var string
+ */
+ public $lock_id = null;
+
+ /**
+ * flag that cache is locked by this instance
+ *
+ * @var bool
+ */
+ public $is_locked = false;
+
+ /**
+ * Source Object
+ *
+ * @var Source
+ */
+ public $source = null;
+
+ /**
+ * Nocache hash codes of processed compiled templates
+ *
+ * @var array
+ */
+ public $hashes = [];
+
+ /**
+ * Content buffer
+ *
+ * @var string
+ */
+ public $content = null;
+
+ /**
+ * create Cached Object container
+ *
+ * @param Source $source
+ * @param \Smarty\Cacheresource\Base $handler
+ * @param $compile_id
+ * @param $cache_id
+ */
+ public function __construct(Source $source, \Smarty\Cacheresource\Base $handler, $compile_id, $cache_id) {
+ $this->compile_id = $compile_id;
+ $this->cache_id = $cache_id;
+ $this->source = $source;
+ $this->handler = $handler;
+ }
+
+ /**
+ * Render cache template
+ *
+ * @param \Smarty\Template $_template
+ * @param bool $no_output_filter
+ *
+ * @throws \Exception
+ */
+ public function render(Template $_template, $no_output_filter = true) {
+
+ if (!$this->isCached($_template)) {
+ $this->updateCache($_template, $no_output_filter);
+ } else {
+ if (!$this->processed) {
+ $this->process($_template);
+ }
+ }
+
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->start_cache($_template);
+ }
+
+ $this->getRenderedTemplateCode($_template, $this->unifunc);
+
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->end_cache($_template);
+ }
+
+ }
+
+ /**
+ * Check if cache is valid, lock cache if required
+ *
+ * @param Template $_template
+ *
+ * @return bool flag true if cache is valid
+ * @throws Exception
+ */
+ public function isCached(Template $_template) {
+ if ($this->valid !== null) {
+ return $this->valid;
+ }
+ while (true) {
+ while (true) {
+ if ($this->exists === false || $_template->getSmarty()->force_compile || $_template->getSmarty()->force_cache) {
+ $this->valid = false;
+ } else {
+ $this->valid = true;
+ }
+ if ($this->valid && $_template->caching === \Smarty\Smarty::CACHING_LIFETIME_CURRENT
+ && $_template->cache_lifetime >= 0 && time() > ($this->timestamp + $_template->cache_lifetime)
+ ) {
+ // lifetime expired
+ $this->valid = false;
+ }
+ if ($this->valid && $_template->compile_check === \Smarty\Smarty::COMPILECHECK_ON
+ && $_template->getSource()->getTimeStamp() > $this->timestamp
+ ) {
+ $this->valid = false;
+ }
+ if ($this->valid || !$_template->getSmarty()->cache_locking) {
+ break;
+ }
+ if (!$this->handler->locked($_template->getSmarty(), $this)) {
+ $this->handler->acquireLock($_template->getSmarty(), $this);
+ break 2;
+ }
+ $this->handler->populate($this, $_template);
+ }
+ if ($this->valid) {
+ if (!$_template->getSmarty()->cache_locking || $this->handler->locked($_template->getSmarty(), $this) === null) {
+ // load cache file for the following checks
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->start_cache($_template);
+ }
+ if ($this->handler->process($_template, $this) === false) {
+ $this->valid = false;
+ } else {
+ $this->processed = true;
+ }
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->end_cache($_template);
+ }
+ } else {
+ $this->is_locked = true;
+ continue;
+ }
+ } else {
+ return $this->valid;
+ }
+ if ($this->valid && $_template->caching === \Smarty\Smarty::CACHING_LIFETIME_SAVED
+ && $_template->getCached()->cache_lifetime >= 0
+ && (time() > ($_template->getCached()->timestamp + $_template->getCached()->cache_lifetime))
+ ) {
+ $this->valid = false;
+ }
+ if ($_template->getSmarty()->cache_locking) {
+ if (!$this->valid) {
+ $this->handler->acquireLock($_template->getSmarty(), $this);
+ } elseif ($this->is_locked) {
+ $this->handler->releaseLock($_template->getSmarty(), $this);
+ }
+ }
+ return $this->valid;
+ }
+ return $this->valid;
+ }
+
+ /**
+ * Process cached template
+ *
+ * @param Template $_template template object
+ */
+ private function process(Template $_template) {
+ if ($this->handler->process($_template, $this) === false) {
+ $this->valid = false;
+ }
+ $this->processed = $this->valid;
+ }
+
+ /**
+ * Read cache content from handler
+ *
+ * @param Template $_template template object
+ *
+ * @return string|false content
+ */
+ public function readCache(Template $_template) {
+ if (!$_template->getSource()->handler->recompiled) {
+ return $this->handler->retrieveCachedContent($_template);
+ }
+ return false;
+ }
+
+ /**
+ * Write this cache object to handler
+ *
+ * @param string $content content to cache
+ *
+ * @return bool success
+ */
+ public function writeCache(Template $_template, $content) {
+ if (!$_template->getSource()->handler->recompiled) {
+ if ($this->handler->storeCachedContent($_template, $content)) {
+ $this->content = null;
+ $this->timestamp = time();
+ $this->exists = true;
+ $this->valid = true;
+ $this->cache_lifetime = $_template->cache_lifetime;
+ $this->processed = false;
+ if ($_template->getSmarty()->cache_locking) {
+ $this->handler->releaseLock($_template->getSmarty(), $this);
+ }
+ return true;
+ }
+ $this->content = null;
+ $this->timestamp = false;
+ $this->exists = false;
+ $this->valid = false;
+ $this->processed = false;
+ }
+ return false;
+ }
+
+ /**
+ * Cache was invalid , so render from compiled and write to cache
+ *
+ * @param Template $_template
+ * @param bool $no_output_filter
+ *
+ * @throws \Smarty\Exception
+ */
+ private function updateCache(Template $_template, $no_output_filter) {
+
+ ob_start();
+
+ $_template->getCompiled()->render($_template);
+
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->start_cache($_template);
+ }
+
+ $this->removeNoCacheHash($_template, $no_output_filter);
+ $this->process($_template);
+
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->end_cache($_template);
+ }
+ }
+
+ /**
+ * Sanitize content and write it to cache resource
+ *
+ * @param Template $_template
+ * @param bool $no_output_filter
+ *
+ * @throws \Smarty\Exception
+ */
+ private function removeNoCacheHash(Template $_template, $no_output_filter) {
+ $php_pattern = '/(<%|%>|<\?php|<\?|\?>|<script\s+language\s*=\s*[\"\']?\s*php\s*[\"\']?\s*>)/';
+ $content = ob_get_clean();
+ $hash_array = $this->hashes;
+ $hash_array[$_template->getCompiled()->nocache_hash] = true;
+ $hash_array = array_keys($hash_array);
+ $nocache_hash = '(' . implode('|', $hash_array) . ')';
+ $_template->getCached()->setNocacheCode(false);
+ // get text between non-cached items
+ $cache_split =
+ preg_split(
+ "!/\*%%SmartyNocache:{$nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$nocache_hash}%%\*/!s",
+ $content
+ );
+ // get non-cached items
+ preg_match_all(
+ "!/\*%%SmartyNocache:{$nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$nocache_hash}%%\*/!s",
+ $content,
+ $cache_parts
+ );
+ $content = '';
+ // loop over items, stitch back together
+ foreach ($cache_split as $curr_idx => $curr_split) {
+ if (preg_match($php_pattern, $curr_split)) {
+ // escape PHP tags in template content
+ $php_split = preg_split(
+ $php_pattern,
+ $curr_split
+ );
+ preg_match_all(
+ $php_pattern,
+ $curr_split,
+ $php_parts
+ );
+ foreach ($php_split as $idx_php => $curr_php) {
+ $content .= $curr_php;
+ if (isset($php_parts[0][$idx_php])) {
+ $content .= "<?php echo '{$php_parts[ 1 ][ $idx_php ]}'; ?>\n";
+ }
+ }
+ } else {
+ $content .= $curr_split;
+ }
+ if (isset($cache_parts[0][$curr_idx])) {
+ $_template->getCached()->setNocacheCode(true);
+ $content .= $cache_parts[2][$curr_idx];
+ }
+ }
+ if (
+ !$no_output_filter
+ && !$_template->getCached()->getNocacheCode()
+ ) {
+ $content = $_template->getSmarty()->runOutputFilters($content, $_template);
+ }
+
+ $codeframe = (new \Smarty\Compiler\CodeFrame($_template))->create($content, '', true);
+ $this->writeCache($_template, $codeframe);
+ }
+
+ /**
+ * @return Source|null
+ */
+ public function getSource(): ?Source {
+ return $this->source;
+ }
+
+ /**
+ * @param Source|null $source
+ */
+ public function setSource(?Source $source): void {
+ $this->source = $source;
+ }
+
+ /**
+ * Returns the generated content
+ *
+ * @param Template $template
+ *
+ * @return string|null
+ * @throws \Exception
+ */
+ public function getContent(Template $template) {
+ ob_start();
+ $this->render($template);
+ return ob_get_clean();
+ }
+
+ /**
+ * This function is executed automatically when a generated file is included
+ * - Decode saved properties
+ * - Check if file is valid
+ *
+ * @param Template $_template
+ * @param array $properties special template properties
+ *
+ * @return bool flag if compiled or cache file is valid
+ * @throws Exception
+ */
+ public function isFresh(Template $_template, array $properties): bool {
+
+ // on cache resources other than file check version stored in cache code
+ if (\Smarty\Smarty::SMARTY_VERSION !== $properties['version']) {
+ return false;
+ }
+
+ $is_valid = true;
+
+ if (!empty($properties['file_dependency']) && ($_template->compile_check === \Smarty\Smarty::COMPILECHECK_ON)) {
+ $is_valid = $this->checkFileDependencies($properties['file_dependency'], $_template);
+ }
+
+ // CACHING_LIFETIME_SAVED cache expiry has to be validated here since otherwise we'd define the unifunc
+ if ($_template->caching === \Smarty\Smarty::CACHING_LIFETIME_SAVED && $properties['cache_lifetime'] >= 0
+ && (time() > ($this->timestamp + $properties['cache_lifetime']))
+ ) {
+ $is_valid = false;
+ }
+
+ $this->cache_lifetime = $properties['cache_lifetime'];
+ $this->setValid($is_valid);
+
+ if ($is_valid) {
+ $this->unifunc = $properties['unifunc'];
+ $this->setNocacheCode($properties['has_nocache_code']);
+ $this->file_dependency = $properties['file_dependency'];
+ }
+ return $is_valid && !function_exists($properties['unifunc']);
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Template/Compiled.php b/vendor/smarty/smarty/src/Template/Compiled.php
new file mode 100644
index 000000000..5a07db0e6
--- /dev/null
+++ b/vendor/smarty/smarty/src/Template/Compiled.php
@@ -0,0 +1,305 @@
+<?php
+
+namespace Smarty\Template;
+
+use Smarty\Exception;
+use Smarty\Template;
+
+/**
+ * Represents a compiled version of a template or config file.
+ * @author Rodney Rehm
+ */
+class Compiled extends GeneratedPhpFile {
+
+ /**
+ * nocache hash
+ *
+ * @var string|null
+ */
+ public $nocache_hash = null;
+
+ /**
+ * Included sub templates
+ * - index name
+ * - value use count
+ *
+ * @var int[]
+ */
+ public $includes = [];
+ /**
+ * @var bool
+ */
+ private $isValid = false;
+
+ /**
+ * get a Compiled Object of this source
+ *
+ * @param Template $_template template object
+ *
+ * @return Compiled compiled object
+ */
+ public static function load($_template) {
+ $compiled = new Compiled();
+ if ($_template->getSource()->handler->supportsCompiledTemplates()) {
+ $compiled->populateCompiledFilepath($_template);
+ }
+ return $compiled;
+ }
+
+ /**
+ * populate Compiled Object with compiled filepath
+ *
+ * @param Template $_template template object
+ **/
+ private function populateCompiledFilepath(Template $_template) {
+ $source = $_template->getSource();
+ $smarty = $_template->getSmarty();
+ $this->filepath = $smarty->getCompileDir();
+ if (isset($_template->compile_id)) {
+ $this->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) .
+ ($smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^');
+ }
+ // if use_sub_dirs, break file into directories
+ if ($smarty->use_sub_dirs) {
+ $this->filepath .= $source->uid[0] . $source->uid[1] . DIRECTORY_SEPARATOR . $source->uid[2] .
+ $source->uid[3] . DIRECTORY_SEPARATOR . $source->uid[4] . $source->uid[5] .
+ DIRECTORY_SEPARATOR;
+ }
+ $this->filepath .= $source->uid . '_';
+ if ($source->isConfig) {
+ $this->filepath .= (int)$smarty->config_read_hidden + (int)$smarty->config_booleanize * 2 +
+ (int)$smarty->config_overwrite * 4;
+ } else {
+ $this->filepath .= (int)$smarty->escape_html * 2;
+ }
+ $this->filepath .= '.' . $source->type . '_' . $source->getBasename();
+
+ if ($_template->caching) {
+ $this->filepath .= '.cache';
+ }
+ $this->filepath .= '.php';
+ $this->timestamp = $this->exists = is_file($this->filepath);
+ if ($this->exists) {
+ $this->timestamp = filemtime($this->filepath);
+ }
+ }
+
+ /**
+ * render compiled template code
+ *
+ * @param Template $_template
+ *
+ * @return string
+ * @throws \Smarty\Exception
+ */
+ public function render(Template $_template) {
+
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->start_render($_template);
+ }
+ if (!$this->processed) {
+ $this->compileAndLoad($_template);
+ }
+
+ // @TODO Can't Cached handle this? Maybe introduce an event to decouple.
+ if ($_template->caching) {
+ $_template->getCached()->file_dependency =
+ array_merge($_template->getCached()->file_dependency, $this->file_dependency);
+ }
+
+ $this->getRenderedTemplateCode($_template, $this->unifunc);
+
+ // @TODO Can't Cached handle this? Maybe introduce an event to decouple and remove the $_template->caching property.
+ if ($_template->caching && $this->getNocacheCode()) {
+ $_template->getCached()->hashes[$this->nocache_hash] = true;
+ }
+
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->end_render($_template);
+ }
+ }
+
+ /**
+ * load compiled template or compile from source
+ *
+ * @param Template $_smarty_tpl do not change variable name, is used by compiled template
+ *
+ * @throws Exception
+ */
+ private function compileAndLoad(Template $_smarty_tpl) {
+
+ if ($_smarty_tpl->getSource()->handler->recompiled) {
+ $this->recompile($_smarty_tpl);
+ return;
+ }
+
+ if ($this->exists && !$_smarty_tpl->getSmarty()->force_compile
+ && !($_smarty_tpl->compile_check && $_smarty_tpl->getSource()->getTimeStamp() > $this->getTimeStamp())
+ ) {
+ $this->loadCompiledTemplate($_smarty_tpl, false);
+ }
+
+ if (!$this->isValid) {
+ $this->compileAndWrite($_smarty_tpl);
+ $this->loadCompiledTemplate($_smarty_tpl);
+ }
+
+ $this->processed = true;
+ }
+
+ /**
+ * compile template from source
+ *
+ * @param Template $_smarty_tpl do not change variable name, is used by compiled template
+ *
+ * @throws Exception
+ */
+ private function recompile(Template $_smarty_tpl) {
+ $level = ob_get_level();
+ ob_start();
+ // call compiler
+ try {
+ eval('?>' . $this->doCompile($_smarty_tpl));
+ } catch (\Exception $e) {
+ while (ob_get_level() > $level) {
+ ob_end_clean();
+ }
+ throw $e;
+ }
+ ob_get_clean();
+ $this->timestamp = time();
+ $this->exists = true;
+ }
+
+ /**
+ * compile template from source
+ *
+ * @param Template $_template
+ *
+ * @throws Exception
+ */
+ public function compileAndWrite(Template $_template) {
+ // compile locking
+ if ($saved_timestamp = (!$_template->getSource()->handler->recompiled && is_file($this->filepath))) {
+ $saved_timestamp = $this->getTimeStamp();
+ touch($this->filepath);
+ }
+ // compile locking
+ try {
+ // call compiler
+ $this->write($_template, $this->doCompile($_template));
+ } catch (\Exception $e) {
+ // restore old timestamp in case of error
+ if ($saved_timestamp && is_file($this->filepath)) {
+ touch($this->filepath, $saved_timestamp);
+ }
+ throw $e;
+ }
+ }
+
+ /**
+ * Do the actual compiling.
+ *
+ * @param Template $_smarty_tpl
+ *
+ * @return string
+ * @throws Exception
+ */
+ private function doCompile(Template $_smarty_tpl): string {
+ $this->file_dependency = [];
+ $this->includes = [];
+ $this->nocache_hash = null;
+ $this->unifunc = null;
+ return $_smarty_tpl->getCompiler()->compileTemplate($_smarty_tpl);
+ }
+
+ /**
+ * Write compiled code by handler
+ *
+ * @param Template $_template template object
+ * @param string $code compiled code
+ *
+ * @return bool success
+ * @throws \Smarty\Exception
+ */
+ private function write(Template $_template, $code) {
+ if (!$_template->getSource()->handler->recompiled) {
+ if ($_template->getSmarty()->writeFile($this->filepath, $code) === true) {
+ $this->timestamp = $this->exists = is_file($this->filepath);
+ if ($this->exists) {
+ $this->timestamp = filemtime($this->filepath);
+ return true;
+ }
+ }
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Load fresh compiled template by including the PHP file
+ * HHVM requires a workaround because of a PHP incompatibility
+ *
+ * @param Template $_smarty_tpl do not change/remove variable name, is used by compiled template
+ * @param bool $invalidateCachedFiles forces a revalidation of the file in opcache or apc cache (if available)
+ *
+ */
+ private function loadCompiledTemplate(Template $_smarty_tpl, bool $invalidateCachedFiles = true) {
+
+ if ($invalidateCachedFiles) {
+ if (function_exists('opcache_invalidate')
+ && (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1)
+ ) {
+ opcache_invalidate($this->filepath, true);
+ } elseif (function_exists('apc_compile_file')) {
+ apc_compile_file($this->filepath);
+ }
+ }
+ if (defined('HHVM_VERSION')) {
+ eval('?>' . file_get_contents($this->filepath));
+ } else {
+ include $this->filepath;
+ }
+
+ }
+
+ /**
+ * This function is executed automatically when a compiled or cached template file is included
+ * - Decode saved properties from compiled template and cache files
+ * - Check if compiled or cache file is valid
+ *
+ * @param Template $_template
+ * @param array $properties special template properties
+ *
+ * @return bool flag if compiled or cache file is valid
+ * @throws Exception
+ */
+ public function isFresh(Template $_template, array $properties): bool {
+
+ // on cache resources other than file check version stored in cache code
+ if (\Smarty\Smarty::SMARTY_VERSION !== $properties['version']) {
+ return false;
+ }
+
+ $is_valid = true;
+ if (!empty($properties['file_dependency']) && $_template->compile_check) {
+ $is_valid = $this->checkFileDependencies($properties['file_dependency'], $_template);
+ }
+
+ $this->isValid = $is_valid;
+ $this->includes = $properties['includes'] ?? [];
+
+ if ($is_valid) {
+ $this->unifunc = $properties['unifunc'];
+ $this->setNocacheCode($properties['has_nocache_code']);
+ $this->file_dependency = $properties['file_dependency'];
+ }
+ return $is_valid && !function_exists($properties['unifunc']);
+ }
+
+ /**
+ * This method is here only to fix an issue when upgrading from Smarty v4 to v5.
+ */
+ public function _decodeProperties($a, $b, $c = false): bool { return false; }
+
+}
diff --git a/vendor/smarty/smarty/src/Template/Config.php b/vendor/smarty/smarty/src/Template/Config.php
new file mode 100644
index 000000000..b2fcbf813
--- /dev/null
+++ b/vendor/smarty/smarty/src/Template/Config.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Smarty\Template;
+
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\Exception;
+
+/**
+ * Smarty Config Resource Data Object
+ * Metadata Container for Config Files
+ *
+ * @author Uwe Tews
+ */
+class Config extends Source {
+
+ /**
+ * Flag that source is a config file
+ *
+ * @var bool
+ */
+ public $isConfig = true;
+
+ /**
+ * @var array
+ */
+ static protected $_incompatible_resources = ['extends' => true];
+
+ public function createCompiler(): \Smarty\Compiler\BaseCompiler {
+ return new \Smarty\Compiler\Configfile($this->smarty);
+ }
+
+ protected static function getDefaultHandlerFunc(Smarty $smarty) {
+ return $smarty->default_config_handler_func;
+ }
+}
diff --git a/vendor/smarty/smarty/src/Template/GeneratedPhpFile.php b/vendor/smarty/smarty/src/Template/GeneratedPhpFile.php
new file mode 100644
index 000000000..f436e9769
--- /dev/null
+++ b/vendor/smarty/smarty/src/Template/GeneratedPhpFile.php
@@ -0,0 +1,159 @@
+<?php
+
+namespace Smarty\Template;
+
+use Smarty\Exception;
+use Smarty\Resource\FilePlugin;
+use Smarty\Template;
+
+/**
+ * Base class for generated PHP files, such as compiled and cached versions of templates and config files.
+ *
+ * @author Rodney Rehm
+ */
+abstract class GeneratedPhpFile {
+
+ /**
+ * Compiled Filepath
+ *
+ * @var string
+ */
+ public $filepath = null;
+
+ /**
+ * Compiled Timestamp
+ *
+ * @var int|bool
+ */
+ public $timestamp = false;
+
+ /**
+ * Compiled Existence
+ *
+ * @var boolean
+ */
+ public $exists = false;
+
+ /**
+ * Template Compile Id (\Smarty\Template::$compile_id)
+ *
+ * @var string
+ */
+ public $compile_id = null;
+
+ /**
+ * Compiled Content Loaded
+ *
+ * @var boolean
+ */
+ protected $processed = false;
+
+ /**
+ * unique function name for compiled template code
+ *
+ * @var string
+ */
+ public $unifunc = '';
+
+ /**
+ * flag if template does contain nocache code sections
+ *
+ * @var bool
+ */
+ private $has_nocache_code = false;
+
+ /**
+ * resource file dependency
+ *
+ * @var array
+ */
+ public $file_dependency = [];
+
+ /**
+ * Get compiled time stamp
+ *
+ * @return int
+ */
+ public function getTimeStamp() {
+ if ($this->exists && !$this->timestamp) {
+ $this->timestamp = filemtime($this->filepath);
+ }
+ return $this->timestamp;
+ }
+
+ /**
+ * @return bool
+ */
+ public function getNocacheCode(): bool {
+ return $this->has_nocache_code;
+ }
+
+ /**
+ * @param bool $has_nocache_code
+ */
+ public function setNocacheCode(bool $has_nocache_code): void {
+ $this->has_nocache_code = $has_nocache_code;
+ }
+
+ /**
+ * get rendered template content by calling compiled or cached template code
+ *
+ * @param string $unifunc function with template code
+ *
+ * @throws \Exception
+ */
+ protected function getRenderedTemplateCode(\Smarty\Template $_template, $unifunc) {
+ $level = ob_get_level();
+ try {
+ if (empty($unifunc) || !function_exists($unifunc)) {
+ throw new \Smarty\Exception("Invalid compiled template for '{$this->filepath}'");
+ }
+ $unifunc($_template);
+ } catch (\Exception $e) {
+ while (ob_get_level() > $level) {
+ ob_end_clean();
+ }
+
+ throw $e;
+ }
+ }
+
+ /**
+ * @param $file_dependency
+ * @param Template $_template
+ *
+ * @return bool
+ * @throws Exception
+ */
+ protected function checkFileDependencies($file_dependency, Template $_template): bool {
+ // check file dependencies at compiled code
+ foreach ($file_dependency as $_file_to_check) {
+
+ $handler = \Smarty\Resource\BasePlugin::load($_template->getSmarty(), $_file_to_check[2]);
+
+ if ($handler instanceof FilePlugin) {
+ if ($_template->getSource()->getResourceName() === $_file_to_check[0]) {
+ // do not recheck current template
+ continue;
+ }
+ $mtime = $handler->getResourceNameTimestamp($_file_to_check[0], $_template->getSmarty(), $_template->getSource()->isConfig);
+ } else {
+
+ if ($handler->checkTimestamps()) {
+ // @TODO this doesn't actually check any dependencies, but only the main source file
+ // and that might to be irrelevant, as the comment "do not recheck current template" above suggests
+ $source = Source::load($_template, $_template->getSmarty());
+ $mtime = $source->getTimeStamp();
+ } else {
+ continue;
+ }
+ }
+
+ if ($mtime === false || $mtime > $_file_to_check[1]) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/Template/Source.php b/vendor/smarty/smarty/src/Template/Source.php
new file mode 100644
index 000000000..2c2022ee5
--- /dev/null
+++ b/vendor/smarty/smarty/src/Template/Source.php
@@ -0,0 +1,285 @@
+<?php
+
+namespace Smarty\Template;
+
+use Smarty\Resource\FilePlugin;
+use Smarty\Smarty;
+use Smarty\Template;
+use Smarty\Exception;
+
+/**
+ * Meta-data Container for Template source files
+ * @author Rodney Rehm
+ */
+class Source {
+
+ /**
+ * Unique Template ID
+ *
+ * @var string|null
+ */
+ public $uid = null;
+
+ /**
+ * Template Resource (\Smarty\Template::$template_resource)
+ *
+ * @var string
+ */
+ public $resource = null;
+
+ /**
+ * Resource Type
+ *
+ * @var string
+ */
+ public $type = null;
+
+ /**
+ * Resource Name
+ *
+ * @var string
+ */
+ public $name = null;
+
+ /**
+ * Source Timestamp
+ *
+ * @var int
+ */
+ public $timestamp = null;
+
+ /**
+ * Source Existence
+ *
+ * @var boolean
+ */
+ public $exists = false;
+
+ /**
+ * Source File Base name
+ *
+ * @var string
+ */
+ public $basename = null;
+
+ /**
+ * The Components an extended template is made of
+ *
+ * @var \Smarty\Template\Source[]
+ */
+ public $components = null;
+
+ /**
+ * Resource Handler
+ *
+ * @var \Smarty\Resource\BasePlugin
+ */
+ public $handler = null;
+
+ /**
+ * Smarty instance
+ *
+ * @var Smarty
+ */
+ protected $smarty = null;
+
+ /**
+ * Resource is source
+ *
+ * @var bool
+ */
+ public $isConfig = false;
+
+ /**
+ * Template source content eventually set by default handler
+ *
+ * @var string
+ */
+ public $content = null;
+
+ /**
+ * @var array
+ */
+ static protected $_incompatible_resources = [];
+
+ /**
+ * create Source Object container
+ *
+ * @param Smarty $smarty Smarty instance this source object belongs to
+ * @param string $resource full template_resource
+ * @param string $type type of resource
+ * @param string $name resource name
+ *
+ * @throws \Smarty\Exception
+ * @internal param \Smarty\Resource\Base $handler Resource Handler this source object communicates with
+ */
+ public function __construct(Smarty $smarty, $type, $name) {
+ $this->handler = \Smarty\Resource\BasePlugin::load($smarty, $type);
+
+ $this->smarty = $smarty;
+ $this->resource = $type . ':' . $name;
+ $this->type = $type;
+ $this->name = $name;
+ }
+
+ /**
+ * initialize Source Object for given resource
+ * Either [$_template] or [$smarty, $template_resource] must be specified
+ *
+ * @param Template|null $_template template object
+ * @param Smarty|null $smarty smarty object
+ * @param null $template_resource resource identifier
+ *
+ * @return Source Source Object
+ * @throws Exception
+ */
+ public static function load(
+ ?Template $_template = null,
+ ?Smarty $smarty = null,
+ $template_resource = null
+ ) {
+ if ($_template) {
+ $smarty = $_template->getSmarty();
+ $template_resource = $_template->template_resource;
+ }
+ if (empty($template_resource)) {
+ throw new Exception('Source: Missing name');
+ }
+ // parse resource_name, load resource handler, identify unique resource name
+ if (preg_match('/^([A-Za-z0-9_\-]{2,}):([\s\S]*)$/', $template_resource, $match)) {
+ $type = $match[1];
+ $name = $match[2];
+ } else {
+ // no resource given, use default
+ // or single character before the colon is not a resource type, but part of the filepath
+ $type = $smarty->default_resource_type;
+ $name = $template_resource;
+ }
+
+ if (isset(self::$_incompatible_resources[$type])) {
+ throw new Exception("Unable to use resource '{$type}' for " . __METHOD__);
+ }
+
+ // create new source object
+ $source = new static($smarty, $type, $name);
+ $source->handler->populate($source, $_template);
+ if (!$source->exists && static::getDefaultHandlerFunc($smarty)) {
+ $source->_getDefaultTemplate(static::getDefaultHandlerFunc($smarty));
+ $source->handler->populate($source, $_template);
+ }
+ return $source;
+ }
+
+ protected static function getDefaultHandlerFunc(Smarty $smarty) {
+ return $smarty->default_template_handler_func;
+ }
+
+ /**
+ * Get source time stamp
+ *
+ * @return int
+ */
+ public function getTimeStamp() {
+ if (!isset($this->timestamp)) {
+ $this->handler->populateTimestamp($this);
+ }
+ return $this->timestamp;
+ }
+
+ /**
+ * Get source content
+ *
+ * @return string
+ * @throws \Smarty\Exception
+ */
+ public function getContent() {
+ return $this->content ?? $this->handler->getContent($this);
+ }
+
+ /**
+ * get default content from template or config resource handler
+ *
+ * @throws \Smarty\Exception
+ */
+ public function _getDefaultTemplate($default_handler) {
+ $_content = $_timestamp = null;
+ $_return = \call_user_func_array(
+ $default_handler,
+ [$this->type, $this->name, &$_content, &$_timestamp, $this->smarty]
+ );
+ if (is_string($_return)) {
+ $this->exists = is_file($_return);
+ if ($this->exists) {
+ $this->timestamp = filemtime($_return);
+ } else {
+ throw new Exception(
+ 'Default handler: Unable to load ' .
+ "default file '{$_return}' for '{$this->type}:{$this->name}'"
+ );
+ }
+ $this->name = $_return;
+ $this->uid = sha1($_return);
+ } elseif ($_return === true) {
+ $this->content = $_content;
+ $this->exists = true;
+ $this->uid = $this->name = sha1($_content);
+ $this->handler = \Smarty\Resource\BasePlugin::load($this->smarty, 'eval');
+ } else {
+ $this->exists = false;
+ throw new Exception(
+ 'Default handler: No ' . ($this->isConfig ? 'config' : 'template') .
+ " default content for '{$this->type}:{$this->name}'"
+ );
+ }
+ }
+
+ public function createCompiler(): \Smarty\Compiler\BaseCompiler {
+ return new \Smarty\Compiler\Template($this->smarty);
+ }
+
+ public function getSmarty() {
+ return $this->smarty;
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @return string resource's basename
+ */
+ public function getBasename()
+ {
+ return $this->handler->getBasename($this);
+ }
+
+ /**
+ * Return source name
+ * e.g.: 'sub/index.tpl'
+ *
+ * @return string
+ */
+ public function getResourceName(): string {
+ return (string) $this->name;
+ }
+
+ /**
+ * Return source name, including the type prefix.
+ * e.g.: 'file:sub/index.tpl'
+ *
+ * @return string
+ */
+ public function getFullResourceName(): string {
+ return $this->type . ':' . $this->name;
+ }
+
+ public function getFilepath(): ?string {
+ if ($this->handler instanceof FilePlugin) {
+ return $this->handler->getFilePath($this->name, $this->smarty, $this->isConfig);
+ }
+ return null;
+ }
+
+ public function isConfig(): bool {
+ return $this->isConfig;
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/TemplateBase.php b/vendor/smarty/smarty/src/TemplateBase.php
new file mode 100644
index 000000000..f01d11076
--- /dev/null
+++ b/vendor/smarty/smarty/src/TemplateBase.php
@@ -0,0 +1,425 @@
+<?php
+/**
+ * Smarty Internal Plugin Smarty Template Base
+ * This file contains the basic shared methods for template handling
+ *
+
+
+ * @author Uwe Tews
+ */
+
+namespace Smarty;
+
+/**
+ * Class with shared smarty/template methods
+ */
+abstract class TemplateBase extends Data {
+
+ /**
+ * Set this if you want different sets of cache files for the same
+ * templates.
+ *
+ * @var string
+ */
+ public $cache_id = null;
+
+ /**
+ * Set this if you want different sets of compiled files for the same
+ * templates.
+ *
+ * @var string
+ */
+ public $compile_id = null;
+
+ /**
+ * caching enabled
+ *
+ * @var int
+ */
+ public $caching = \Smarty\Smarty::CACHING_OFF;
+
+ /**
+ * check template for modifications?
+ *
+ * @var int
+ */
+ public $compile_check = \Smarty\Smarty::COMPILECHECK_ON;
+
+ /**
+ * cache lifetime in seconds
+ *
+ * @var int
+ */
+ public $cache_lifetime = 3600;
+
+ /**
+ * Array of source information for known template functions
+ *
+ * @var array
+ */
+ public $tplFunctions = [];
+
+ /**
+ * @var Debug
+ */
+ private $debug;
+
+ /**
+ * Registers object to be used in templates
+ *
+ * @param string $object_name
+ * @param object $object the referenced PHP object to register
+ * @param array $allowed_methods_properties list of allowed methods (empty = all)
+ * @param bool $format smarty argument format, else traditional
+ * @param array $block_methods list of block-methods
+ *
+ * @return static
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::registerObject()
+ */
+ public function registerObject(
+ $object_name,
+ $object,
+ $allowed_methods_properties = [],
+ $format = true,
+ $block_methods = []
+ ) {
+ $smarty = $this->getSmarty();
+ // test if allowed methods callable
+ if (!empty($allowed_methods_properties)) {
+ foreach ((array)$allowed_methods_properties as $method) {
+ if (!is_callable([$object, $method]) && !property_exists($object, $method)) {
+ throw new Exception("Undefined method or property '$method' in registered object");
+ }
+ }
+ }
+ // test if block methods callable
+ if (!empty($block_methods)) {
+ foreach ((array)$block_methods as $method) {
+ if (!is_callable([$object, $method])) {
+ throw new Exception("Undefined method '$method' in registered object");
+ }
+ }
+ }
+ // register the object
+ $smarty->registered_objects[$object_name] =
+ [$object, (array)$allowed_methods_properties, (boolean)$format, (array)$block_methods];
+ return $this;
+ }
+
+ /**
+ * Registers plugin to be used in templates
+ *
+ * @param string $object_name name of object
+ *
+ * @return static
+ * @api Smarty::unregisterObject()
+ *
+ */
+ public function unregisterObject($object_name) {
+ $smarty = $this->getSmarty();
+ if (isset($smarty->registered_objects[$object_name])) {
+ unset($smarty->registered_objects[$object_name]);
+ }
+ return $this;
+ }
+
+ /**
+ * @return int
+ */
+ public function getCompileCheck(): int {
+ return $this->compile_check;
+ }
+
+ /**
+ * @param int $compile_check
+ */
+ public function setCompileCheck($compile_check) {
+ $this->compile_check = (int)$compile_check;
+ }
+
+ /**
+ * @param int $caching
+ */
+ public function setCaching($caching) {
+ $this->caching = (int)$caching;
+ }
+
+ /**
+ * @param int $cache_lifetime
+ */
+ public function setCacheLifetime($cache_lifetime) {
+ $this->cache_lifetime = $cache_lifetime;
+ }
+
+ /**
+ * @param string $compile_id
+ */
+ public function setCompileId($compile_id) {
+ $this->compile_id = $compile_id;
+ }
+
+ /**
+ * @param string $cache_id
+ */
+ public function setCacheId($cache_id) {
+ $this->cache_id = $cache_id;
+ }
+
+ /**
+ * creates a data object
+ *
+ * @param Data|null $parent next higher level of Smarty
+ * variables
+ * @param null $name optional data block name
+ *
+ * @return Data data object
+ * @throws Exception
+ * @api Smarty::createData()
+ *
+ */
+ public function createData(?Data $parent = null, $name = null) {
+ /* @var Smarty $smarty */
+ $smarty = $this->getSmarty();
+ $dataObj = new Data($parent, $smarty, $name);
+ if ($smarty->debugging) {
+ $smarty->getDebug()->register_data($dataObj);
+ }
+ return $dataObj;
+ }
+
+ /**
+ * return name of debugging template
+ *
+ * @return string
+ * @api Smarty::getDebugTemplate()
+ *
+ */
+ public function getDebugTemplate() {
+ $smarty = $this->getSmarty();
+ return $smarty->debug_tpl;
+ }
+
+ /**
+ * @return Debug
+ */
+ public function getDebug(): Debug {
+ if (!isset($this->debug)) {
+ $this->debug = new \Smarty\Debug();
+ }
+ return $this->debug;
+ }
+
+
+ /**
+ * return a reference to a registered object
+ *
+ * @param string $object_name object name
+ *
+ * @return object
+ * @throws \Smarty\Exception if no such object is found
+ *
+ * @api Smarty::getRegisteredObject()
+ */
+ public function getRegisteredObject($object_name) {
+ $smarty = $this->getSmarty();
+ if (!isset($smarty->registered_objects[$object_name])) {
+ throw new Exception("'$object_name' is not a registered object");
+ }
+ if (!is_object($smarty->registered_objects[$object_name][0])) {
+ throw new Exception("registered '$object_name' is not an object");
+ }
+ return $smarty->registered_objects[$object_name][0];
+ }
+
+ /**
+ * Get literals
+ *
+ * @return array list of literals
+ * @api Smarty::getLiterals()
+ *
+ */
+ public function getLiterals() {
+ $smarty = $this->getSmarty();
+ return (array)$smarty->literals;
+ }
+
+ /**
+ * Add literals
+ *
+ * @param array|string $literals literal or list of literals
+ * to addto add
+ *
+ * @return static
+ * @throws \Smarty\Exception
+ * @api Smarty::addLiterals()
+ *
+ */
+ public function addLiterals($literals = null) {
+ if (isset($literals)) {
+ $this->_setLiterals($this->getSmarty(), (array)$literals);
+ }
+ return $this;
+ }
+
+ /**
+ * Set literals
+ *
+ * @param array|string $literals literal or list of literals
+ * to setto set
+ *
+ * @return static
+ * @throws \Smarty\Exception
+ * @api Smarty::setLiterals()
+ *
+ */
+ public function setLiterals($literals = null) {
+ $smarty = $this->getSmarty();
+ $smarty->literals = [];
+ if (!empty($literals)) {
+ $this->_setLiterals($smarty, (array)$literals);
+ }
+ return $this;
+ }
+
+ /**
+ * common setter for literals for easier handling of duplicates the
+ * Smarty::$literals array gets filled with identical key values
+ *
+ * @param Smarty $smarty
+ * @param array $literals
+ *
+ * @throws \Smarty\Exception
+ */
+ private function _setLiterals(Smarty $smarty, $literals) {
+ $literals = array_combine($literals, $literals);
+ $error = isset($literals[$smarty->getLeftDelimiter()]) ? [$smarty->getLeftDelimiter()] : [];
+ $error = isset($literals[$smarty->getRightDelimiter()]) ? $error[] = $smarty->getRightDelimiter() : $error;
+ if (!empty($error)) {
+ throw new Exception(
+ 'User defined literal(s) "' . $error .
+ '" may not be identical with left or right delimiter'
+ );
+ }
+ $smarty->literals = array_merge((array)$smarty->literals, (array)$literals);
+ }
+
+ /**
+ * Registers static classes to be used in templates
+ *
+ * @param string $class_name
+ * @param string $class_impl the referenced PHP class to
+ * register
+ *
+ * @return static
+ * @throws \Smarty\Exception
+ * @api Smarty::registerClass()
+ *
+ */
+ public function registerClass($class_name, $class_impl) {
+ $smarty = $this->getSmarty();
+ // test if exists
+ if (!class_exists($class_impl)) {
+ throw new Exception("Undefined class '$class_impl' in register template class");
+ }
+ // register the class
+ $smarty->registered_classes[$class_name] = $class_impl;
+ return $this;
+ }
+
+ /**
+ * Register config default handler
+ *
+ * @param callable $callback class/method name
+ *
+ * @return static
+ * @throws Exception if $callback is not callable
+ * @api Smarty::registerDefaultConfigHandler()
+ *
+ */
+ public function registerDefaultConfigHandler($callback) {
+ $smarty = $this->getSmarty();
+ if (is_callable($callback)) {
+ $smarty->default_config_handler_func = $callback;
+ } else {
+ throw new Exception('Default config handler not callable');
+ }
+ return $this;
+ }
+
+ /**
+ * Register template default handler
+ *
+ * @param callable $callback class/method name
+ *
+ * @return static
+ * @throws Exception if $callback is not callable
+ * @api Smarty::registerDefaultTemplateHandler()
+ *
+ */
+ public function registerDefaultTemplateHandler($callback) {
+ $smarty = $this->getSmarty();
+ if (is_callable($callback)) {
+ $smarty->default_template_handler_func = $callback;
+ } else {
+ throw new Exception('Default template handler not callable');
+ }
+ return $this;
+ }
+
+ /**
+ * Registers a resource to fetch a template
+ *
+ * @param string $name name of resource type
+ * @param \Smarty\Resource\BasePlugin $resource_handler instance of Smarty\Resource\BasePlugin
+ *
+ * @return static
+ *
+ * @api Smarty::registerResource()
+ */
+ public function registerResource($name, \Smarty\Resource\BasePlugin $resource_handler) {
+ $smarty = $this->getSmarty();
+ $smarty->registered_resources[$name] = $resource_handler;
+ return $this;
+ }
+
+ /**
+ * Unregisters a resource to fetch a template
+ *
+ * @param string $type name of resource type
+ *
+ * @return static
+ * @api Smarty::unregisterResource()
+ *
+ */
+ public function unregisterResource($type) {
+ $smarty = $this->getSmarty();
+ if (isset($smarty->registered_resources[$type])) {
+ unset($smarty->registered_resources[$type]);
+ }
+ return $this;
+ }
+
+ /**
+ * set the debug template
+ *
+ * @param string $tpl_name
+ *
+ * @return static
+ * @throws Exception if file is not readable
+ * @api Smarty::setDebugTemplate()
+ *
+ */
+ public function setDebugTemplate($tpl_name) {
+ $smarty = $this->getSmarty();
+ if (!is_readable($tpl_name)) {
+ throw new Exception("Unknown file '{$tpl_name}'");
+ }
+ $smarty->debug_tpl = $tpl_name;
+ return $this;
+ }
+
+
+
+}
diff --git a/vendor/smarty/smarty/src/TestInstall.php b/vendor/smarty/smarty/src/TestInstall.php
new file mode 100644
index 000000000..e24c39848
--- /dev/null
+++ b/vendor/smarty/smarty/src/TestInstall.php
@@ -0,0 +1,211 @@
+<?php
+
+namespace Smarty;
+
+/**
+ * Smarty Internal TestInstall
+ * Test Smarty installation
+ *
+
+
+ * @author Uwe Tews
+ */
+
+/**
+ * TestInstall class
+ *
+
+
+ */
+class TestInstall
+{
+ /**
+ * diagnose Smarty setup
+ * If $errors is secified, the diagnostic report will be appended to the array, rather than being output.
+ *
+ * @param \Smarty $smarty
+ * @param array $errors array to push results into rather than outputting them
+ *
+ * @return bool status, true if everything is fine, false else
+ */
+ public static function testInstall(Smarty $smarty, &$errors = null)
+ {
+ $status = true;
+ if ($errors === null) {
+ echo "<PRE>\n";
+ echo "Smarty Installation test...\n";
+ echo "Testing template directory...\n";
+ }
+ $_stream_resolve_include_path = function_exists('stream_resolve_include_path');
+ // test if all registered template_dir are accessible
+ foreach ($smarty->getTemplateDir() as $template_dir) {
+ $_template_dir = $template_dir;
+ $template_dir = realpath($template_dir);
+ // resolve include_path or fail existence
+ if (!$template_dir) {
+ $status = false;
+ $message = "FAILED: $_template_dir does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'template_dir' ] = $message;
+ }
+ continue;
+ }
+ if (!is_dir($template_dir)) {
+ $status = false;
+ $message = "FAILED: $template_dir is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'template_dir' ] = $message;
+ }
+ } elseif (!is_readable($template_dir)) {
+ $status = false;
+ $message = "FAILED: $template_dir is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'template_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "$template_dir is OK.\n";
+ }
+ }
+ }
+ if ($errors === null) {
+ echo "Testing compile directory...\n";
+ }
+ // test if registered compile_dir is accessible
+ $__compile_dir = $smarty->getCompileDir();
+ $_compile_dir = realpath($__compile_dir);
+ if (!$_compile_dir) {
+ $status = false;
+ $message = "FAILED: {$__compile_dir} does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } elseif (!is_dir($_compile_dir)) {
+ $status = false;
+ $message = "FAILED: {$_compile_dir} is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } elseif (!is_readable($_compile_dir)) {
+ $status = false;
+ $message = "FAILED: {$_compile_dir} is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } elseif (!is_writable($_compile_dir)) {
+ $status = false;
+ $message = "FAILED: {$_compile_dir} is not writable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "{$_compile_dir} is OK.\n";
+ }
+ }
+ if ($errors === null) {
+ echo "Testing plugins directory...\n";
+ }
+ if ($errors === null) {
+ echo "Testing cache directory...\n";
+ }
+ // test if all registered cache_dir is accessible
+ $__cache_dir = $smarty->getCacheDir();
+ $_cache_dir = realpath($__cache_dir);
+ if (!$_cache_dir) {
+ $status = false;
+ $message = "FAILED: {$__cache_dir} does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } elseif (!is_dir($_cache_dir)) {
+ $status = false;
+ $message = "FAILED: {$_cache_dir} is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } elseif (!is_readable($_cache_dir)) {
+ $status = false;
+ $message = "FAILED: {$_cache_dir} is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } elseif (!is_writable($_cache_dir)) {
+ $status = false;
+ $message = "FAILED: {$_cache_dir} is not writable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "{$_cache_dir} is OK.\n";
+ }
+ }
+ if ($errors === null) {
+ echo "Testing configs directory...\n";
+ }
+ // test if all registered config_dir are accessible
+ foreach ($smarty->getConfigDir() as $config_dir) {
+ $_config_dir = $config_dir;
+ // resolve include_path or fail existence
+ if (!$config_dir) {
+ $status = false;
+ $message = "FAILED: $_config_dir does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'config_dir' ] = $message;
+ }
+ continue;
+ }
+ if (!is_dir($config_dir)) {
+ $status = false;
+ $message = "FAILED: $config_dir is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'config_dir' ] = $message;
+ }
+ } elseif (!is_readable($config_dir)) {
+ $status = false;
+ $message = "FAILED: $config_dir is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'config_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "$config_dir is OK.\n";
+ }
+ }
+ }
+ if ($errors === null) {
+ echo "Tests complete.\n";
+ echo "</PRE>\n";
+ }
+ return $status;
+ }
+}
diff --git a/vendor/smarty/smarty/src/UndefinedVariable.php b/vendor/smarty/smarty/src/UndefinedVariable.php
new file mode 100644
index 000000000..53f13f416
--- /dev/null
+++ b/vendor/smarty/smarty/src/UndefinedVariable.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Smarty;
+
+/**
+ * class for undefined variable object
+ * This class defines an object for undefined variable handling
+ */
+class UndefinedVariable extends Variable {
+
+ /**
+ * Always returns an empty string.
+ *
+ * @return string
+ */
+ public function __toString() {
+ return '';
+ }
+}
diff --git a/vendor/smarty/smarty/src/Variable.php b/vendor/smarty/smarty/src/Variable.php
new file mode 100644
index 000000000..0e38d1257
--- /dev/null
+++ b/vendor/smarty/smarty/src/Variable.php
@@ -0,0 +1,118 @@
+<?php
+
+namespace Smarty;
+
+/**
+ * class for the Smarty variable object
+ * This class defines the Smarty variable object
+ *
+
+
+ */
+#[\AllowDynamicProperties]
+class Variable
+{
+ /**
+ * template variable
+ *
+ * @var mixed
+ */
+ public $value = null;
+
+ /**
+ * Other r/w properties for foreach, for, while, etc.
+ */
+ public $step, $total, $first, $last, $key, $show, $iteration, $index = null;
+
+ /**
+ * @param mixed|null $value
+ */
+ public function setValue($value): void {
+ $this->value = $value;
+ }
+
+ /**
+ * if true any output of this variable will be not cached
+ *
+ * @var boolean
+ */
+ private $nocache = false;
+
+ /**
+ * @param bool $nocache
+ */
+ public function setNocache(bool $nocache): void {
+ $this->nocache = $nocache;
+ }
+
+ /**
+ * create Smarty variable object
+ *
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ */
+ public function __construct($value = null, $nocache = false)
+ {
+ $this->value = $value;
+ $this->nocache = $nocache;
+ }
+
+ public function getValue() {
+ return $this->value;
+ }
+
+ /**
+ * <<magic>> String conversion
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return (string)$this->value;
+ }
+
+ /**
+ * Handles ++$a and --$a in templates.
+ *
+ * @param $operator '++' or '--', defaults to '++'
+ *
+ * @return int|mixed
+ * @throws Exception
+ */
+ public function preIncDec($operator = '++') {
+ if ($operator == '--') {
+ return --$this->value;
+ } elseif ($operator == '++') {
+ return ++$this->value;
+ } else {
+ throw new Exception("Invalid incdec operator. Use '--' or '++'.");
+ }
+ return $this->value;
+ }
+
+ /**
+ * Handles $a++ and $a-- in templates.
+ *
+ * @param $operator '++' or '--', defaults to '++'
+ *
+ * @return int|mixed
+ * @throws Exception
+ */
+ public function postIncDec($operator = '++') {
+ if ($operator == '--') {
+ return $this->value--;
+ } elseif ($operator == '++') {
+ return $this->value++;
+ } else {
+ throw new Exception("Invalid incdec operator. Use '--' or '++'.");
+ }
+ }
+
+ /**
+ * @return bool
+ */
+ public function isNocache(): bool {
+ return $this->nocache;
+ }
+
+}
diff --git a/vendor/smarty/smarty/src/debug.tpl b/vendor/smarty/smarty/src/debug.tpl
new file mode 100644
index 000000000..3dd25bf37
--- /dev/null
+++ b/vendor/smarty/smarty/src/debug.tpl
@@ -0,0 +1,174 @@
+{capture name='_smarty_debug' assign='debug_output'}
+ <!DOCTYPE html>
+ <html lang="en">
+ <head>
+ <title>Smarty Debug Console</title>
+ <style>
+ {literal}
+ body, h1, h2, h3, td, th, p {
+ font-family: sans-serif;
+ font-weight: normal;
+ font-size: 0.9em;
+ margin: 1px;
+ padding: 0;
+ }
+
+ h1 {
+ margin: 0;
+ text-align: left;
+ padding: 2px;
+ background-color: #f0c040;
+ color: black;
+ font-weight: bold;
+ font-size: 1.2em;
+ }
+
+ h2 {
+ background-color: #9B410E;
+ color: white;
+ text-align: left;
+ font-weight: bold;
+ padding: 2px;
+ border-top: 1px solid black;
+ }
+
+ h3 {
+ text-align: left;
+ font-weight: bold;
+ color: black;
+ font-size: 0.7em;
+ padding: 2px;
+ }
+
+ body {
+ background: black;
+ }
+
+ p, table, div {
+ background: #f0ead8;
+ }
+
+ p {
+ margin: 0;
+ font-style: italic;
+ text-align: center;
+ }
+
+ table {
+ width: 100%;
+ }
+
+ th, td {
+ font-family: monospace;
+ vertical-align: top;
+ text-align: left;
+ }
+
+ td {
+ color: green;
+ }
+
+ tr:nth-child(odd) {
+ background-color: #eeeeee;
+ }
+
+ tr:nth-child(even) {
+ background-color: #fafafa;
+ }
+
+ .exectime {
+ font-size: 0.8em;
+ font-style: italic;
+ }
+
+ #bold div {
+ color: black;
+ font-weight: bold;
+ }
+
+ #blue h3 {
+ color: blue;
+ }
+
+ #normal div {
+ color: black;
+ font-weight: normal;
+ }
+
+ #table_assigned_vars th {
+ color: blue;
+ font-weight: bold;
+ }
+
+ #table_config_vars th {
+ color: maroon;
+ }
+ {/literal}
+ </style>
+ </head>
+ <body>
+
+ <h1>Smarty {\Smarty\Smarty::SMARTY_VERSION} Debug Console
+ - {if isset($template_name)}{$template_name|debug_print_var nofilter} {/if}{if !empty($template_data)}Total Time {$execution_time|string_format:"%.5f"}{/if}</h1>
+
+ {if !empty($template_data)}
+ <h2>included templates &amp; config files (load time in seconds)</h2>
+ <div>
+ {foreach $template_data as $template}
+ <span style="color: brown;">{$template.name}</span>
+ <br>&nbsp;&nbsp;<span class="exectime">
+ (compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"})
+ </span>
+ <br>
+ {/foreach}
+ </div>
+ {/if}
+
+ <h2>assigned template variables</h2>
+
+ <table id="table_assigned_vars">
+ {foreach $assigned_vars as $vars}
+ <tr>
+ <td>
+ <h3 style="color: blue;">${$vars@key}</h3>
+ {if isset($vars['nocache'])}<strong>Nocache</strong><br>{/if}
+ {if isset($vars['scope'])}<strong>Origin:</strong> {$vars['scope']|debug_print_var nofilter}{/if}
+ </td>
+ <td>
+ <h3>Value</h3>
+ {$vars['value']|debug_print_var:10:80 nofilter}
+ </td>
+ <td>
+ {if isset($vars['attributes'])}
+ <h3>Attributes</h3>
+ {$vars['attributes']|debug_print_var nofilter}
+ {/if}
+ </td>
+ </tr>
+ {/foreach}
+ </table>
+
+ <h2>assigned config file variables</h2>
+
+ <table id="table_config_vars">
+ {foreach $config_vars as $vars}
+ <tr>
+ <td>
+ <h3 style="color: blue;">#{$vars@key}#</h3>
+ {if isset($vars['scope'])}<strong>Origin:</strong> {$vars['scope']|debug_print_var nofilter}{/if}
+ </td>
+ <td>
+ {$vars['value']|debug_print_var:10:80 nofilter}
+ </td>
+ </tr>
+ {/foreach}
+
+ </table>
+ </body>
+ </html>
+{/capture}
+<script>
+ _smarty_console = window.open("", "console{$targetWindow}", "width=1024,height=600,left={$offset},top={$offset},resizable,scrollbars=yes");
+ _smarty_console.document.write("{$debug_output|escape:'javascript' nofilter}");
+ _smarty_console.document.close();
+</script>
diff --git a/vendor/smarty/smarty/src/functions.php b/vendor/smarty/smarty/src/functions.php
new file mode 100644
index 000000000..590789ba3
--- /dev/null
+++ b/vendor/smarty/smarty/src/functions.php
@@ -0,0 +1,253 @@
+<?php
+/**
+ * This file is part of the Smarty package.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Smarty\Exception;
+
+/**
+ * Converts the first characters in $string to uppercase (A-Z) if it is an ASCII lowercase character (a-z).
+ *
+ * May not be required when running PHP8.2+: https://wiki.php.net/rfc/strtolower-ascii
+ *
+ * @param $string
+ *
+ * @return string
+ */
+function smarty_ucfirst_ascii($string): string {
+ return smarty_strtoupper_ascii(substr($string, 0, 1)) . substr($string, 1);
+}
+
+/**
+ * Converts all uppercase ASCII characters (A-Z) in $string to lowercase (a-z).
+ *
+ * May not be required when running PHP8.2+: https://wiki.php.net/rfc/strtolower-ascii
+ *
+ * @param $string
+ *
+ * @return string
+ */
+function smarty_strtolower_ascii($string): string {
+ return strtr($string, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
+}
+
+/**
+ * Converts all lowercase ASCII characters (a-z) in $string to uppercase (A-Z).
+ *
+ * May not be required when running PHP8.2+: https://wiki.php.net/rfc/strtolower-ascii
+ *
+ * @param $string
+ *
+ * @return string
+ */
+function smarty_strtoupper_ascii($string): string {
+ return strtr($string, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ');
+}
+
+/**
+ * Function: smarty_make_timestamp
+ * Purpose: used by other smarty functions to make a timestamp from a string.
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime()
+ *
+ * @return int
+ */
+function smarty_make_timestamp($string)
+{
+ if (empty($string)) {
+ // use "now":
+ return time();
+ } elseif ($string instanceof DateTime
+ || (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface)
+ ) {
+ return (int)$string->format('U'); // PHP 5.2 BC
+ } elseif (strlen($string) === 14 && ctype_digit((string)$string)) {
+ // it is mysql timestamp format of YYYYMMDDHHMMSS?
+ return mktime(
+ substr($string, 8, 2),
+ substr($string, 10, 2),
+ substr($string, 12, 2),
+ substr($string, 4, 2),
+ substr($string, 6, 2),
+ substr($string, 0, 4)
+ );
+ } elseif (is_numeric($string)) {
+ // it is a numeric string, we handle it as timestamp
+ return (int)$string;
+ } else {
+ // strtotime should handle it
+ $time = strtotime($string);
+ if ($time === -1 || $time === false) {
+ // strtotime() was not able to parse $string, use "now":
+ return time();
+ }
+ return $time;
+ }
+}
+
+/**
+ * Multibyte string replace
+ *
+ * @param string|string[] $search the string to be searched
+ * @param string|string[] $replace the replacement string
+ * @param string $subject the source string
+ * @param int &$count number of matches found
+ *
+ * @return string replaced string
+ * @author Rodney Rehm
+ */
+function smarty_mb_str_replace($search, $replace, $subject, &$count = 0)
+{
+ if (!is_array($search) && is_array($replace)) {
+ return false;
+ }
+ if (is_array($subject)) {
+ // call mb_replace for each single string in $subject
+ foreach ($subject as &$string) {
+ $string = smarty_mb_str_replace($search, $replace, $string, $c);
+ $count += $c;
+ }
+ } elseif (is_array($search)) {
+ if (!is_array($replace)) {
+ foreach ($search as &$string) {
+ $subject = smarty_mb_str_replace($string, $replace, $subject, $c);
+ $count += $c;
+ }
+ } else {
+ $n = max(count($search), count($replace));
+ while ($n--) {
+ $subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c);
+ $count += $c;
+ next($search);
+ next($replace);
+ }
+ }
+ } else {
+ $mb_reg_charset = mb_regex_encoding();
+ // Check if mbstring regex is using UTF-8
+ $reg_is_unicode = !strcasecmp($mb_reg_charset, "UTF-8");
+ if(!$reg_is_unicode) {
+ // ...and set to UTF-8 if not
+ mb_regex_encoding("UTF-8");
+ }
+
+ // See if charset used by Smarty is matching one used by regex...
+ $current_charset = mb_regex_encoding();
+ $convert_result = (bool)strcasecmp(\Smarty\Smarty::$_CHARSET, $current_charset);
+ if($convert_result) {
+ // ...convert to it if not.
+ $subject = mb_convert_encoding($subject, $current_charset, \Smarty\Smarty::$_CHARSET);
+ $search = mb_convert_encoding($search, $current_charset, \Smarty\Smarty::$_CHARSET);
+ $replace = mb_convert_encoding($replace, $current_charset, \Smarty\Smarty::$_CHARSET);
+ }
+
+ $parts = mb_split(preg_quote($search), $subject ?? "") ?: array();
+ // If original regex encoding was not unicode...
+ if(!$reg_is_unicode) {
+ // ...restore original regex encoding to avoid breaking the system.
+ mb_regex_encoding($mb_reg_charset);
+ }
+ if($parts === false) {
+ // This exception is thrown if call to mb_split failed.
+ // Usually it happens, when $search or $replace are not valid for given mb_regex_encoding().
+ // There may be other cases for it to fail, please file an issue if you find a reproducible one.
+ throw new Exception("Source string is not a valid $current_charset sequence (probably)");
+ }
+
+ $count = count($parts) - 1;
+ $subject = implode($replace, $parts);
+ // Convert results back to charset used by Smarty, if needed.
+ if($convert_result) {
+ $subject = mb_convert_encoding($subject, \Smarty\Smarty::$_CHARSET, $current_charset);
+ }
+ }
+ return $subject;
+}
+/**
+ * escape_special_chars common function
+ * Function: smarty_function_escape_special_chars
+ * Purpose: used by other smarty functions to escape
+ * special chars except for already escaped ones
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string text that should by escaped
+ *
+ * @return string
+ */
+function smarty_function_escape_special_chars($string)
+{
+ if (!is_array($string)) {
+ $string = htmlspecialchars((string) $string, ENT_COMPAT, \Smarty\Smarty::$_CHARSET, false);
+ }
+ return $string;
+}
+
+/**
+ * Smarty wordwrap supporting multibyte
+ * Name: smarty_mb_wordwrap
+ * Purpose: Wrap a string to a given number of characters
+ *
+ * @link https://php.net/manual/en/function.wordwrap.php for similarity
+ *
+ * @param string $str the string to wrap
+ * @param int $width the width of the output
+ * @param string $break the character used to break the line
+ * @param boolean $cut ignored parameter, just for the sake of
+ *
+ * @return string wrapped string
+ * @author Rodney Rehm
+ */
+function smarty_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
+{
+ // break words into tokens using white space as a delimiter
+ $tokens = preg_split('!(\s)!S' . \Smarty\Smarty::$_UTF8_MODIFIER, $str, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
+ $length = 0;
+ $t = '';
+ $_previous = false;
+ $_space = false;
+ foreach ($tokens as $_token) {
+ $token_length = mb_strlen($_token, \Smarty\Smarty::$_CHARSET);
+ $_tokens = array($_token);
+ if ($token_length > $width) {
+ if ($cut) {
+ $_tokens = preg_split(
+ '!(.{' . $width . '})!S' . \Smarty\Smarty::$_UTF8_MODIFIER,
+ $_token,
+ -1,
+ PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE
+ );
+ }
+ }
+ foreach ($_tokens as $token) {
+ $_space = !!preg_match('!^\s$!S' . \Smarty\Smarty::$_UTF8_MODIFIER, $token);
+ $token_length = mb_strlen($token, \Smarty\Smarty::$_CHARSET);
+ $length += $token_length;
+ if ($length > $width) {
+ // remove space before inserted break
+ if ($_previous) {
+ $t = mb_substr($t, 0, -1, \Smarty\Smarty::$_CHARSET);
+ }
+ if (!$_space) {
+ // add the break before the token
+ if (!empty($t)) {
+ $t .= $break;
+ }
+ $length = $token_length;
+ }
+ } elseif ($token === "\n") {
+ // hard break must reset counters
+ $length = 0;
+ }
+ $_previous = $_space;
+ // add the token
+ $t .= $token;
+ }
+ }
+ return $t;
+}
diff --git a/vendor/spomky-labs/otphp/README.md b/vendor/spomky-labs/otphp/README.md
index b23282ea1..542de6fbd 100644
--- a/vendor/spomky-labs/otphp/README.md
+++ b/vendor/spomky-labs/otphp/README.md
@@ -2,6 +2,7 @@ TOTP / HOTP library in PHP
==========================
![Build Status](https://github.com/spomky-labs/otphp/workflows/Integrate/badge.svg)
+![Build Status](https://github.com/spomky-labs/otphp/workflows/Infection/badge.svg)
[![Latest Stable Version](https://poser.pugx.org/spomky-labs/otphp/v/stable.png)](https://packagist.org/packages/spomky-labs/otphp)
[![Total Downloads](https://poser.pugx.org/spomky-labs/otphp/downloads.png)](https://packagist.org/packages/spomky-labs/otphp)
diff --git a/vendor/spomky-labs/otphp/composer.json b/vendor/spomky-labs/otphp/composer.json
index 080df371a..bff1e48f3 100644
--- a/vendor/spomky-labs/otphp/composer.json
+++ b/vendor/spomky-labs/otphp/composer.json
@@ -16,23 +16,25 @@
}
],
"require": {
- "php": "^8.1",
+ "php": ">=8.1",
"ext-mbstring": "*",
- "paragonie/constant_time_encoding": "^2.0"
+ "paragonie/constant_time_encoding": "^2.0 || ^3.0",
+ "psr/clock": "^1.0",
+ "symfony/deprecation-contracts": "^3.2"
},
"require-dev": {
"ekino/phpstan-banned-code": "^1.0",
- "infection/infection": "^0.26",
+ "infection/infection": "^0.26|^0.27|^0.28|^0.29",
"php-parallel-lint/php-parallel-lint": "^1.3",
"phpstan/phpstan": "^1.0",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-phpunit": "^1.0",
"phpstan/phpstan-strict-rules": "^1.0",
- "phpunit/phpunit": "^9.5.26",
+ "phpunit/phpunit": "^9.5.26|^10.0|^11.0",
"qossmic/deptrac-shim": "^1.0",
- "rector/rector": "^0.15",
- "symfony/phpunit-bridge": "^6.1",
- "symplify/easy-coding-standard": "^11.0"
+ "rector/rector": "^1.0",
+ "symfony/phpunit-bridge": "^6.1|^7.0",
+ "symplify/easy-coding-standard": "^12.0"
},
"autoload": {
"psr-4": { "OTPHP\\": "src/" }
diff --git a/vendor/spomky-labs/otphp/src/Factory.php b/vendor/spomky-labs/otphp/src/Factory.php
index 409d8751e..4bf41a84a 100644
--- a/vendor/spomky-labs/otphp/src/Factory.php
+++ b/vendor/spomky-labs/otphp/src/Factory.php
@@ -4,10 +4,11 @@ declare(strict_types=1);
namespace OTPHP;
-use function assert;
-use function count;
use InvalidArgumentException;
+use Psr\Clock\ClockInterface;
use Throwable;
+use function assert;
+use function count;
/**
* This class is used to load OTP object from a provisioning Uri.
@@ -16,7 +17,7 @@ use Throwable;
*/
final class Factory implements FactoryInterface
{
- public static function loadFromProvisioningUri(string $uri): OTPInterface
+ public static function loadFromProvisioningUri(string $uri, ?ClockInterface $clock = null): OTPInterface
{
try {
$parsed_url = Url::fromString($uri);
@@ -24,8 +25,16 @@ final class Factory implements FactoryInterface
} catch (Throwable $throwable) {
throw new InvalidArgumentException('Not a valid OTP provisioning URI', $throwable->getCode(), $throwable);
}
+ if ($clock === null) {
+ trigger_deprecation(
+ 'spomky-labs/otphp',
+ '11.3.0',
+ 'The parameter "$clock" will become mandatory in 12.0.0. Please set a valid PSR Clock implementation instead of "null".'
+ );
+ $clock = new InternalClock();
+ }
- $otp = self::createOTP($parsed_url);
+ $otp = self::createOTP($parsed_url, $clock);
self::populateOTP($otp, $parsed_url);
@@ -62,11 +71,11 @@ final class Factory implements FactoryInterface
$otp->setIssuer($result[0]);
}
- private static function createOTP(Url $parsed_url): OTPInterface
+ private static function createOTP(Url $parsed_url, ClockInterface $clock): OTPInterface
{
switch ($parsed_url->getHost()) {
case 'totp':
- $totp = TOTP::createFromSecret($parsed_url->getSecret());
+ $totp = TOTP::createFromSecret($parsed_url->getSecret(), $clock);
$totp->setLabel(self::getLabel($parsed_url->getPath()));
return $totp;
diff --git a/vendor/spomky-labs/otphp/src/HOTP.php b/vendor/spomky-labs/otphp/src/HOTP.php
index 1588d48aa..835de35f3 100644
--- a/vendor/spomky-labs/otphp/src/HOTP.php
+++ b/vendor/spomky-labs/otphp/src/HOTP.php
@@ -46,6 +46,9 @@ final class HOTP extends OTP implements HOTPInterface
return self::createFromSecret(self::generateSecret());
}
+ /**
+ * @return 0|positive-int
+ */
public function getCounter(): int
{
$value = $this->getParameter('counter');
@@ -63,6 +66,8 @@ final class HOTP extends OTP implements HOTPInterface
/**
* If the counter is not provided, the OTP is verified at the actual counter.
+ *
+ * @param null|0|positive-int $counter
*/
public function verify(string $otp, null|int $counter = null, null|int $window = null): bool
{
@@ -97,9 +102,6 @@ final class HOTP extends OTP implements HOTPInterface
]];
}
- /**
- * @param positive-int $counter
- */
private function updateCounter(int $counter): void
{
$this->setCounter($counter);
diff --git a/vendor/spomky-labs/otphp/src/HOTPInterface.php b/vendor/spomky-labs/otphp/src/HOTPInterface.php
index 449e9383b..915569a03 100644
--- a/vendor/spomky-labs/otphp/src/HOTPInterface.php
+++ b/vendor/spomky-labs/otphp/src/HOTPInterface.php
@@ -10,8 +10,6 @@ interface HOTPInterface extends OTPInterface
/**
* The initial counter (a positive integer).
- *
- * @return 0|positive-int
*/
public function getCounter(): int;
@@ -34,8 +32,5 @@ interface HOTPInterface extends OTPInterface
int $digits = 6
): self;
- /**
- * @param 0|positive-int $counter
- */
public function setCounter(int $counter): void;
}
diff --git a/vendor/spomky-labs/otphp/src/InternalClock.php b/vendor/spomky-labs/otphp/src/InternalClock.php
new file mode 100644
index 000000000..8be469318
--- /dev/null
+++ b/vendor/spomky-labs/otphp/src/InternalClock.php
@@ -0,0 +1,19 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OTPHP;
+
+use DateTimeImmutable;
+use Psr\Clock\ClockInterface;
+
+/**
+ * @internal
+ */
+final class InternalClock implements ClockInterface
+{
+ public function now(): DateTimeImmutable
+ {
+ return new DateTimeImmutable();
+ }
+}
diff --git a/vendor/spomky-labs/otphp/src/OTP.php b/vendor/spomky-labs/otphp/src/OTP.php
index 4765d49eb..f4c242c8f 100644
--- a/vendor/spomky-labs/otphp/src/OTP.php
+++ b/vendor/spomky-labs/otphp/src/OTP.php
@@ -4,14 +4,14 @@ declare(strict_types=1);
namespace OTPHP;
-use function assert;
-use function chr;
-use function count;
use Exception;
use InvalidArgumentException;
-use function is_string;
use ParagonIE\ConstantTime\Base32;
use RuntimeException;
+use function assert;
+use function chr;
+use function count;
+use function is_string;
use const STR_PAD_LEFT;
abstract class OTP implements OTPInterface
@@ -35,6 +35,9 @@ abstract class OTP implements OTPInterface
return str_replace($placeholder, $provisioning_uri, $uri);
}
+ /**
+ * @param 0|positive-int $input
+ */
public function at(int $input): string
{
return $this->generateOTP($input);
@@ -100,7 +103,7 @@ abstract class OTP implements OTPInterface
$this->hasColon($label) === false || throw new InvalidArgumentException('Label must not contain a colon.');
$options = [...$options, ...$this->getParameters()];
$this->filterOptions($options);
- $params = str_replace(['+', '%7E'], ['%20', '~'], http_build_query($options));
+ $params = str_replace(['+', '%7E'], ['%20', '~'], http_build_query($options, '', '&'));
return sprintf(
'otpauth://%s/%s?%s',
@@ -134,9 +137,6 @@ abstract class OTP implements OTPInterface
return $decoded;
}
- /**
- * @param 0|positive-int $int
- */
private function intToByteString(int $int): string
{
$result = [];
diff --git a/vendor/spomky-labs/otphp/src/OTPInterface.php b/vendor/spomky-labs/otphp/src/OTPInterface.php
index f14eef9f4..39ce4acd0 100644
--- a/vendor/spomky-labs/otphp/src/OTPInterface.php
+++ b/vendor/spomky-labs/otphp/src/OTPInterface.php
@@ -27,9 +27,6 @@ interface OTPInterface
*/
public function setSecret(string $secret): void;
- /**
- * @param positive-int $digits
- */
public function setDigits(int $digits): void;
/**
@@ -38,6 +35,8 @@ interface OTPInterface
public function setDigest(string $digest): void;
/**
+ * Generate the OTP at the specified input.
+ *
* @param 0|positive-int $input
*
* @return non-empty-string Return the OTP at the specified timestamp
diff --git a/vendor/spomky-labs/otphp/src/ParameterTrait.php b/vendor/spomky-labs/otphp/src/ParameterTrait.php
index 3b2641e0c..dc92861c4 100644
--- a/vendor/spomky-labs/otphp/src/ParameterTrait.php
+++ b/vendor/spomky-labs/otphp/src/ParameterTrait.php
@@ -4,10 +4,10 @@ declare(strict_types=1);
namespace OTPHP;
+use InvalidArgumentException;
use function array_key_exists;
use function assert;
use function in_array;
-use InvalidArgumentException;
use function is_int;
use function is_string;
diff --git a/vendor/spomky-labs/otphp/src/TOTP.php b/vendor/spomky-labs/otphp/src/TOTP.php
index 3a7d72870..035e04f95 100644
--- a/vendor/spomky-labs/otphp/src/TOTP.php
+++ b/vendor/spomky-labs/otphp/src/TOTP.php
@@ -4,8 +4,9 @@ declare(strict_types=1);
namespace OTPHP;
-use function assert;
use InvalidArgumentException;
+use Psr\Clock\ClockInterface;
+use function assert;
use function is_int;
/**
@@ -13,16 +14,34 @@ use function is_int;
*/
final class TOTP extends OTP implements TOTPInterface
{
+ private readonly ClockInterface $clock;
+
+ public function __construct(string $secret, ?ClockInterface $clock = null)
+ {
+ parent::__construct($secret);
+ if ($clock === null) {
+ trigger_deprecation(
+ 'spomky-labs/otphp',
+ '11.3.0',
+ 'The parameter "$clock" will become mandatory in 12.0.0. Please set a valid PSR Clock implementation instead of "null".'
+ );
+ $clock = new InternalClock();
+ }
+
+ $this->clock = $clock;
+ }
+
public static function create(
null|string $secret = null,
int $period = self::DEFAULT_PERIOD,
string $digest = self::DEFAULT_DIGEST,
int $digits = self::DEFAULT_DIGITS,
- int $epoch = self::DEFAULT_EPOCH
+ int $epoch = self::DEFAULT_EPOCH,
+ ?ClockInterface $clock = null
): self {
$totp = $secret !== null
- ? self::createFromSecret($secret)
- : self::generate()
+ ? self::createFromSecret($secret, $clock)
+ : self::generate($clock)
;
$totp->setPeriod($period);
$totp->setDigest($digest);
@@ -32,9 +51,9 @@ final class TOTP extends OTP implements TOTPInterface
return $totp;
}
- public static function createFromSecret(string $secret): self
+ public static function createFromSecret(string $secret, ?ClockInterface $clock = null): self
{
- $totp = new self($secret);
+ $totp = new self($secret, $clock);
$totp->setPeriod(self::DEFAULT_PERIOD);
$totp->setDigest(self::DEFAULT_DIGEST);
$totp->setDigits(self::DEFAULT_DIGITS);
@@ -43,9 +62,9 @@ final class TOTP extends OTP implements TOTPInterface
return $totp;
}
- public static function generate(): self
+ public static function generate(?ClockInterface $clock = null): self
{
- return self::createFromSecret(self::generateSecret());
+ return self::createFromSecret(self::generateSecret(), $clock);
}
public function getPeriod(): int
@@ -68,9 +87,14 @@ final class TOTP extends OTP implements TOTPInterface
{
$period = $this->getPeriod();
- return $period - (time() % $this->getPeriod());
+ return $period - ($this->clock->now()->getTimestamp() % $this->getPeriod());
}
+ /**
+ * The OTP at the specified input.
+ *
+ * @param 0|positive-int $input
+ */
public function at(int $input): string
{
return $this->generateOTP($this->timecode($input));
@@ -78,16 +102,24 @@ final class TOTP extends OTP implements TOTPInterface
public function now(): string
{
- return $this->at(time());
+ $timestamp = $this->clock->now()
+ ->getTimestamp();
+ assert($timestamp >= 0, 'The timestamp must return a positive integer.');
+
+ return $this->at($timestamp);
}
/**
* If no timestamp is provided, the OTP is verified at the actual timestamp. When used, the leeway parameter will
* allow time drift. The passed value is in seconds.
+ *
+ * @param 0|positive-int $timestamp
+ * @param null|0|positive-int $leeway
*/
public function verify(string $otp, null|int $timestamp = null, null|int $leeway = null): bool
{
- $timestamp ??= time();
+ $timestamp ??= $this->clock->now()
+ ->getTimestamp();
$timestamp >= 0 || throw new InvalidArgumentException('Timestamp must be at least 0.');
if ($leeway === null) {
@@ -98,8 +130,12 @@ final class TOTP extends OTP implements TOTPInterface
$leeway < $this->getPeriod() || throw new InvalidArgumentException(
'The leeway must be lower than the TOTP period'
);
+ $timestampMinusLeeway = $timestamp - $leeway;
+ $timestampMinusLeeway >= 0 || throw new InvalidArgumentException(
+ 'The timestamp must be greater than or equal to the leeway.'
+ );
- return $this->compareOTP($this->at($timestamp - $leeway), $otp)
+ return $this->compareOTP($this->at($timestampMinusLeeway), $otp)
|| $this->compareOTP($this->at($timestamp), $otp)
|| $this->compareOTP($this->at($timestamp + $leeway), $otp);
}
@@ -133,23 +169,21 @@ final class TOTP extends OTP implements TOTPInterface
*/
protected function getParameterMap(): array
{
- return array_merge(
- parent::getParameterMap(),
- [
- 'period' => static function ($value): int {
- (int) $value > 0 || throw new InvalidArgumentException('Period must be at least 1.');
-
- return (int) $value;
- },
- 'epoch' => static function ($value): int {
- (int) $value >= 0 || throw new InvalidArgumentException(
- 'Epoch must be greater than or equal to 0.'
- );
-
- return (int) $value;
- },
- ]
- );
+ return [
+ ...parent::getParameterMap(),
+ 'period' => static function ($value): int {
+ (int) $value > 0 || throw new InvalidArgumentException('Period must be at least 1.');
+
+ return (int) $value;
+ },
+ 'epoch' => static function ($value): int {
+ (int) $value >= 0 || throw new InvalidArgumentException(
+ 'Epoch must be greater than or equal to 0.'
+ );
+
+ return (int) $value;
+ },
+ ];
}
/**
diff --git a/vendor/spomky-labs/otphp/src/TOTPInterface.php b/vendor/spomky-labs/otphp/src/TOTPInterface.php
index 47ef16ac0..a79fedcce 100644
--- a/vendor/spomky-labs/otphp/src/TOTPInterface.php
+++ b/vendor/spomky-labs/otphp/src/TOTPInterface.php
@@ -29,14 +29,8 @@ interface TOTPInterface extends OTPInterface
int $digits = self::DEFAULT_DIGITS
): self;
- /**
- * @param positive-int $period
- */
public function setPeriod(int $period): void;
- /**
- * @param 0|positive-int $epoch
- */
public function setEpoch(int $epoch): void;
/**
@@ -48,18 +42,10 @@ interface TOTPInterface extends OTPInterface
/**
* Get the period of time for OTP generation (a non-null positive integer, in second).
- *
- * @return positive-int
*/
public function getPeriod(): int;
- /**
- * @return 0|positive-int
- */
public function expiresIn(): int;
- /**
- * @return 0|positive-int
- */
public function getEpoch(): int;
}
diff --git a/vendor/spomky-labs/otphp/src/Url.php b/vendor/spomky-labs/otphp/src/Url.php
index 76919d27a..e88cd6d29 100644
--- a/vendor/spomky-labs/otphp/src/Url.php
+++ b/vendor/spomky-labs/otphp/src/Url.php
@@ -4,8 +4,8 @@ declare(strict_types=1);
namespace OTPHP;
-use function array_key_exists;
use InvalidArgumentException;
+use function array_key_exists;
use function is_string;
/**
@@ -80,7 +80,6 @@ final class Url
array_key_exists($key, $parsed_url) || throw new InvalidArgumentException(
'Not a valid OTP provisioning URI'
);
- is_string($parsed_url[$key]) || throw new InvalidArgumentException('Not a valid OTP provisioning URI');
}
$scheme = $parsed_url['scheme'] ?? null;
$host = $parsed_url['host'] ?? null;
diff --git a/vendor/symfony/deprecation-contracts/CHANGELOG.md b/vendor/symfony/deprecation-contracts/CHANGELOG.md
new file mode 100644
index 000000000..7932e2613
--- /dev/null
+++ b/vendor/symfony/deprecation-contracts/CHANGELOG.md
@@ -0,0 +1,5 @@
+CHANGELOG
+=========
+
+The changelog is maintained for all Symfony contracts at the following URL:
+https://github.com/symfony/contracts/blob/main/CHANGELOG.md
diff --git a/vendor/symfony/deprecation-contracts/LICENSE b/vendor/symfony/deprecation-contracts/LICENSE
new file mode 100644
index 000000000..0ed3a2465
--- /dev/null
+++ b/vendor/symfony/deprecation-contracts/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2020-present Fabien Potencier
+
+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.
diff --git a/vendor/symfony/deprecation-contracts/README.md b/vendor/symfony/deprecation-contracts/README.md
new file mode 100644
index 000000000..9814864c0
--- /dev/null
+++ b/vendor/symfony/deprecation-contracts/README.md
@@ -0,0 +1,26 @@
+Symfony Deprecation Contracts
+=============================
+
+A generic function and convention to trigger deprecation notices.
+
+This package provides a single global function named `trigger_deprecation()` that triggers silenced deprecation notices.
+
+By using a custom PHP error handler such as the one provided by the Symfony ErrorHandler component,
+the triggered deprecations can be caught and logged for later discovery, both on dev and prod environments.
+
+The function requires at least 3 arguments:
+ - the name of the Composer package that is triggering the deprecation
+ - the version of the package that introduced the deprecation
+ - the message of the deprecation
+ - more arguments can be provided: they will be inserted in the message using `printf()` formatting
+
+Example:
+```php
+trigger_deprecation('symfony/blockchain', '8.9', 'Using "%s" is deprecated, use "%s" instead.', 'bitcoin', 'fabcoin');
+```
+
+This will generate the following message:
+`Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.`
+
+While not recommended, the deprecation notices can be completely ignored by declaring an empty
+`function trigger_deprecation() {}` in your application.
diff --git a/vendor/symfony/deprecation-contracts/composer.json b/vendor/symfony/deprecation-contracts/composer.json
new file mode 100644
index 000000000..ceb6c0796
--- /dev/null
+++ b/vendor/symfony/deprecation-contracts/composer.json
@@ -0,0 +1,35 @@
+{
+ "name": "symfony/deprecation-contracts",
+ "type": "library",
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=8.1"
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ }
+}
diff --git a/vendor/symfony/deprecation-contracts/function.php b/vendor/symfony/deprecation-contracts/function.php
new file mode 100644
index 000000000..2d56512ba
--- /dev/null
+++ b/vendor/symfony/deprecation-contracts/function.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (!function_exists('trigger_deprecation')) {
+ /**
+ * Triggers a silenced deprecation notice.
+ *
+ * @param string $package The name of the Composer package that is triggering the deprecation
+ * @param string $version The version of the package that introduced the deprecation
+ * @param string $message The message of the deprecation
+ * @param mixed ...$args Values to insert in the message using printf() formatting
+ *
+ * @author Nicolas Grekas <p@tchwork.com>
+ */
+ function trigger_deprecation(string $package, string $version, string $message, mixed ...$args): void
+ {
+ @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED);
+ }
+}
diff --git a/vendor/symfony/polyfill-mbstring/LICENSE b/vendor/symfony/polyfill-mbstring/LICENSE
new file mode 100644
index 000000000..6e3afce69
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015-present Fabien Potencier
+
+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.
diff --git a/vendor/symfony/polyfill-mbstring/Mbstring.php b/vendor/symfony/polyfill-mbstring/Mbstring.php
new file mode 100644
index 000000000..3d45c9d9a
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/Mbstring.php
@@ -0,0 +1,1045 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Mbstring;
+
+/**
+ * Partial mbstring implementation in PHP, iconv based, UTF-8 centric.
+ *
+ * Implemented:
+ * - mb_chr - Returns a specific character from its Unicode code point
+ * - mb_convert_encoding - Convert character encoding
+ * - mb_convert_variables - Convert character code in variable(s)
+ * - mb_decode_mimeheader - Decode string in MIME header field
+ * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED
+ * - mb_decode_numericentity - Decode HTML numeric string reference to character
+ * - mb_encode_numericentity - Encode character to HTML numeric string reference
+ * - mb_convert_case - Perform case folding on a string
+ * - mb_detect_encoding - Detect character encoding
+ * - mb_get_info - Get internal settings of mbstring
+ * - mb_http_input - Detect HTTP input character encoding
+ * - mb_http_output - Set/Get HTTP output character encoding
+ * - mb_internal_encoding - Set/Get internal character encoding
+ * - mb_list_encodings - Returns an array of all supported encodings
+ * - mb_ord - Returns the Unicode code point of a character
+ * - mb_output_handler - Callback function converts character encoding in output buffer
+ * - mb_scrub - Replaces ill-formed byte sequences with substitute characters
+ * - mb_strlen - Get string length
+ * - mb_strpos - Find position of first occurrence of string in a string
+ * - mb_strrpos - Find position of last occurrence of a string in a string
+ * - mb_str_split - Convert a string to an array
+ * - mb_strtolower - Make a string lowercase
+ * - mb_strtoupper - Make a string uppercase
+ * - mb_substitute_character - Set/Get substitution character
+ * - mb_substr - Get part of string
+ * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive
+ * - mb_stristr - Finds first occurrence of a string within another, case insensitive
+ * - mb_strrchr - Finds the last occurrence of a character in a string within another
+ * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive
+ * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive
+ * - mb_strstr - Finds first occurrence of a string within another
+ * - mb_strwidth - Return width of string
+ * - mb_substr_count - Count the number of substring occurrences
+ * - mb_ucfirst - Make a string's first character uppercase
+ * - mb_lcfirst - Make a string's first character lowercase
+ * - mb_trim - Strip whitespace (or other characters) from the beginning and end of a string
+ * - mb_ltrim - Strip whitespace (or other characters) from the beginning of a string
+ * - mb_rtrim - Strip whitespace (or other characters) from the end of a string
+ *
+ * Not implemented:
+ * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
+ * - mb_ereg_* - Regular expression with multibyte support
+ * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable
+ * - mb_preferred_mime_name - Get MIME charset string
+ * - mb_regex_encoding - Returns current encoding for multibyte regex as string
+ * - mb_regex_set_options - Set/Get the default options for mbregex functions
+ * - mb_send_mail - Send encoded mail
+ * - mb_split - Split multibyte string using regular expression
+ * - mb_strcut - Get part of string
+ * - mb_strimwidth - Get truncated string with specified width
+ *
+ * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @internal
+ */
+final class Mbstring
+{
+ public const MB_CASE_FOLD = \PHP_INT_MAX;
+
+ private const SIMPLE_CASE_FOLD = [
+ ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"],
+ ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'],
+ ];
+
+ private static $encodingList = ['ASCII', 'UTF-8'];
+ private static $language = 'neutral';
+ private static $internalEncoding = 'UTF-8';
+
+ public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
+ {
+ if (\is_array($s)) {
+ $r = [];
+ foreach ($s as $str) {
+ $r[] = self::mb_convert_encoding($str, $toEncoding, $fromEncoding);
+ }
+
+ return $r;
+ }
+
+ if (\is_array($fromEncoding) || (null !== $fromEncoding && false !== strpos($fromEncoding, ','))) {
+ $fromEncoding = self::mb_detect_encoding($s, $fromEncoding);
+ } else {
+ $fromEncoding = self::getEncoding($fromEncoding);
+ }
+
+ $toEncoding = self::getEncoding($toEncoding);
+
+ if ('BASE64' === $fromEncoding) {
+ $s = base64_decode($s);
+ $fromEncoding = $toEncoding;
+ }
+
+ if ('BASE64' === $toEncoding) {
+ return base64_encode($s);
+ }
+
+ if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) {
+ if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) {
+ $fromEncoding = 'Windows-1252';
+ }
+ if ('UTF-8' !== $fromEncoding) {
+ $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s);
+ }
+
+ return preg_replace_callback('/[\x80-\xFF]+/', [__CLASS__, 'html_encoding_callback'], $s);
+ }
+
+ if ('HTML-ENTITIES' === $fromEncoding) {
+ $s = html_entity_decode($s, \ENT_COMPAT, 'UTF-8');
+ $fromEncoding = 'UTF-8';
+ }
+
+ return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
+ }
+
+ public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars)
+ {
+ $ok = true;
+ array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
+ if (false === $v = self::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
+ $ok = false;
+ }
+ });
+
+ return $ok ? $fromEncoding : false;
+ }
+
+ public static function mb_decode_mimeheader($s)
+ {
+ return iconv_mime_decode($s, 2, self::$internalEncoding);
+ }
+
+ public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null)
+ {
+ trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', \E_USER_WARNING);
+ }
+
+ public static function mb_decode_numericentity($s, $convmap, $encoding = null)
+ {
+ if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) {
+ trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) {
+ return false;
+ }
+
+ if (null !== $encoding && !\is_scalar($encoding)) {
+ trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+ return ''; // Instead of null (cf. mb_encode_numericentity).
+ }
+
+ $s = (string) $s;
+ if ('' === $s) {
+ return '';
+ }
+
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $encoding) {
+ $encoding = null;
+ if (!preg_match('//u', $s)) {
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+ }
+ } else {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ $cnt = floor(\count($convmap) / 4) * 4;
+
+ for ($i = 0; $i < $cnt; $i += 4) {
+ // collector_decode_htmlnumericentity ignores $convmap[$i + 3]
+ $convmap[$i] += $convmap[$i + 2];
+ $convmap[$i + 1] += $convmap[$i + 2];
+ }
+
+ $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) {
+ $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1];
+ for ($i = 0; $i < $cnt; $i += 4) {
+ if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) {
+ return self::mb_chr($c - $convmap[$i + 2]);
+ }
+ }
+
+ return $m[0];
+ }, $s);
+
+ if (null === $encoding) {
+ return $s;
+ }
+
+ return iconv('UTF-8', $encoding.'//IGNORE', $s);
+ }
+
+ public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false)
+ {
+ if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) {
+ trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) {
+ return false;
+ }
+
+ if (null !== $encoding && !\is_scalar($encoding)) {
+ trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+ return null; // Instead of '' (cf. mb_decode_numericentity).
+ }
+
+ if (null !== $is_hex && !\is_scalar($is_hex)) {
+ trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ $s = (string) $s;
+ if ('' === $s) {
+ return '';
+ }
+
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $encoding) {
+ $encoding = null;
+ if (!preg_match('//u', $s)) {
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+ }
+ } else {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
+
+ $cnt = floor(\count($convmap) / 4) * 4;
+ $i = 0;
+ $len = \strlen($s);
+ $result = '';
+
+ while ($i < $len) {
+ $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
+ $uchr = substr($s, $i, $ulen);
+ $i += $ulen;
+ $c = self::mb_ord($uchr);
+
+ for ($j = 0; $j < $cnt; $j += 4) {
+ if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) {
+ $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3];
+ $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';';
+ continue 2;
+ }
+ }
+ $result .= $uchr;
+ }
+
+ if (null === $encoding) {
+ return $result;
+ }
+
+ return iconv('UTF-8', $encoding.'//IGNORE', $result);
+ }
+
+ public static function mb_convert_case($s, $mode, $encoding = null)
+ {
+ $s = (string) $s;
+ if ('' === $s) {
+ return '';
+ }
+
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $encoding) {
+ $encoding = null;
+ if (!preg_match('//u', $s)) {
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+ }
+ } else {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ if (\MB_CASE_TITLE == $mode) {
+ static $titleRegexp = null;
+ if (null === $titleRegexp) {
+ $titleRegexp = self::getData('titleCaseRegexp');
+ }
+ $s = preg_replace_callback($titleRegexp, [__CLASS__, 'title_case'], $s);
+ } else {
+ if (\MB_CASE_UPPER == $mode) {
+ static $upper = null;
+ if (null === $upper) {
+ $upper = self::getData('upperCase');
+ }
+ $map = $upper;
+ } else {
+ if (self::MB_CASE_FOLD === $mode) {
+ static $caseFolding = null;
+ if (null === $caseFolding) {
+ $caseFolding = self::getData('caseFolding');
+ }
+ $s = strtr($s, $caseFolding);
+ }
+
+ static $lower = null;
+ if (null === $lower) {
+ $lower = self::getData('lowerCase');
+ }
+ $map = $lower;
+ }
+
+ static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
+
+ $i = 0;
+ $len = \strlen($s);
+
+ while ($i < $len) {
+ $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
+ $uchr = substr($s, $i, $ulen);
+ $i += $ulen;
+
+ if (isset($map[$uchr])) {
+ $uchr = $map[$uchr];
+ $nlen = \strlen($uchr);
+
+ if ($nlen == $ulen) {
+ $nlen = $i;
+ do {
+ $s[--$nlen] = $uchr[--$ulen];
+ } while ($ulen);
+ } else {
+ $s = substr_replace($s, $uchr, $i - $ulen, $ulen);
+ $len += $nlen - $ulen;
+ $i += $nlen - $ulen;
+ }
+ }
+ }
+ }
+
+ if (null === $encoding) {
+ return $s;
+ }
+
+ return iconv('UTF-8', $encoding.'//IGNORE', $s);
+ }
+
+ public static function mb_internal_encoding($encoding = null)
+ {
+ if (null === $encoding) {
+ return self::$internalEncoding;
+ }
+
+ $normalizedEncoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $normalizedEncoding || false !== @iconv($normalizedEncoding, $normalizedEncoding, ' ')) {
+ self::$internalEncoding = $normalizedEncoding;
+
+ return true;
+ }
+
+ if (80000 > \PHP_VERSION_ID) {
+ return false;
+ }
+
+ throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding));
+ }
+
+ public static function mb_language($lang = null)
+ {
+ if (null === $lang) {
+ return self::$language;
+ }
+
+ switch ($normalizedLang = strtolower($lang)) {
+ case 'uni':
+ case 'neutral':
+ self::$language = $normalizedLang;
+
+ return true;
+ }
+
+ if (80000 > \PHP_VERSION_ID) {
+ return false;
+ }
+
+ throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang));
+ }
+
+ public static function mb_list_encodings()
+ {
+ return ['UTF-8'];
+ }
+
+ public static function mb_encoding_aliases($encoding)
+ {
+ switch (strtoupper($encoding)) {
+ case 'UTF8':
+ case 'UTF-8':
+ return ['utf8'];
+ }
+
+ return false;
+ }
+
+ public static function mb_check_encoding($var = null, $encoding = null)
+ {
+ if (null === $encoding) {
+ if (null === $var) {
+ return false;
+ }
+ $encoding = self::$internalEncoding;
+ }
+
+ if (!\is_array($var)) {
+ return self::mb_detect_encoding($var, [$encoding]) || false !== @iconv($encoding, $encoding, $var);
+ }
+
+ foreach ($var as $key => $value) {
+ if (!self::mb_check_encoding($key, $encoding)) {
+ return false;
+ }
+ if (!self::mb_check_encoding($value, $encoding)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public static function mb_detect_encoding($str, $encodingList = null, $strict = false)
+ {
+ if (null === $encodingList) {
+ $encodingList = self::$encodingList;
+ } else {
+ if (!\is_array($encodingList)) {
+ $encodingList = array_map('trim', explode(',', $encodingList));
+ }
+ $encodingList = array_map('strtoupper', $encodingList);
+ }
+
+ foreach ($encodingList as $enc) {
+ switch ($enc) {
+ case 'ASCII':
+ if (!preg_match('/[\x80-\xFF]/', $str)) {
+ return $enc;
+ }
+ break;
+
+ case 'UTF8':
+ case 'UTF-8':
+ if (preg_match('//u', $str)) {
+ return 'UTF-8';
+ }
+ break;
+
+ default:
+ if (0 === strncmp($enc, 'ISO-8859-', 9)) {
+ return $enc;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ public static function mb_detect_order($encodingList = null)
+ {
+ if (null === $encodingList) {
+ return self::$encodingList;
+ }
+
+ if (!\is_array($encodingList)) {
+ $encodingList = array_map('trim', explode(',', $encodingList));
+ }
+ $encodingList = array_map('strtoupper', $encodingList);
+
+ foreach ($encodingList as $enc) {
+ switch ($enc) {
+ default:
+ if (strncmp($enc, 'ISO-8859-', 9)) {
+ return false;
+ }
+ // no break
+ case 'ASCII':
+ case 'UTF8':
+ case 'UTF-8':
+ }
+ }
+
+ self::$encodingList = $encodingList;
+
+ return true;
+ }
+
+ public static function mb_strlen($s, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return \strlen($s);
+ }
+
+ return @iconv_strlen($s, $encoding);
+ }
+
+ public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return strpos($haystack, $needle, $offset);
+ }
+
+ $needle = (string) $needle;
+ if ('' === $needle) {
+ if (80000 > \PHP_VERSION_ID) {
+ trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING);
+
+ return false;
+ }
+
+ return 0;
+ }
+
+ return iconv_strpos($haystack, $needle, $offset, $encoding);
+ }
+
+ public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return strrpos($haystack, $needle, $offset);
+ }
+
+ if ($offset != (int) $offset) {
+ $offset = 0;
+ } elseif ($offset = (int) $offset) {
+ if ($offset < 0) {
+ if (0 > $offset += self::mb_strlen($needle)) {
+ $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
+ }
+ $offset = 0;
+ } else {
+ $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
+ }
+ }
+
+ $pos = '' !== $needle || 80000 > \PHP_VERSION_ID
+ ? iconv_strrpos($haystack, $needle, $encoding)
+ : self::mb_strlen($haystack, $encoding);
+
+ return false !== $pos ? $offset + $pos : false;
+ }
+
+ public static function mb_str_split($string, $split_length = 1, $encoding = null)
+ {
+ if (null !== $string && !\is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) {
+ trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ if (1 > $split_length = (int) $split_length) {
+ if (80000 > \PHP_VERSION_ID) {
+ trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING);
+
+ return false;
+ }
+
+ throw new \ValueError('Argument #2 ($length) must be greater than 0');
+ }
+
+ if (null === $encoding) {
+ $encoding = mb_internal_encoding();
+ }
+
+ if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
+ $rx = '/(';
+ while (65535 < $split_length) {
+ $rx .= '.{65535}';
+ $split_length -= 65535;
+ }
+ $rx .= '.{'.$split_length.'})/us';
+
+ return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY);
+ }
+
+ $result = [];
+ $length = mb_strlen($string, $encoding);
+
+ for ($i = 0; $i < $length; $i += $split_length) {
+ $result[] = mb_substr($string, $i, $split_length, $encoding);
+ }
+
+ return $result;
+ }
+
+ public static function mb_strtolower($s, $encoding = null)
+ {
+ return self::mb_convert_case($s, \MB_CASE_LOWER, $encoding);
+ }
+
+ public static function mb_strtoupper($s, $encoding = null)
+ {
+ return self::mb_convert_case($s, \MB_CASE_UPPER, $encoding);
+ }
+
+ public static function mb_substitute_character($c = null)
+ {
+ if (null === $c) {
+ return 'none';
+ }
+ if (0 === strcasecmp($c, 'none')) {
+ return true;
+ }
+ if (80000 > \PHP_VERSION_ID) {
+ return false;
+ }
+ if (\is_int($c) || 'long' === $c || 'entity' === $c) {
+ return false;
+ }
+
+ throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint');
+ }
+
+ public static function mb_substr($s, $start, $length = null, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return (string) substr($s, $start, null === $length ? 2147483647 : $length);
+ }
+
+ if ($start < 0) {
+ $start = iconv_strlen($s, $encoding) + $start;
+ if ($start < 0) {
+ $start = 0;
+ }
+ }
+
+ if (null === $length) {
+ $length = 2147483647;
+ } elseif ($length < 0) {
+ $length = iconv_strlen($s, $encoding) + $length - $start;
+ if ($length < 0) {
+ return '';
+ }
+ }
+
+ return (string) iconv_substr($s, $start, $length, $encoding);
+ }
+
+ public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ [$haystack, $needle] = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], [
+ self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding),
+ self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding),
+ ]);
+
+ return self::mb_strpos($haystack, $needle, $offset, $encoding);
+ }
+
+ public static function mb_stristr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $pos = self::mb_stripos($haystack, $needle, 0, $encoding);
+
+ return self::getSubpart($pos, $part, $haystack, $encoding);
+ }
+
+ public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ $pos = strrpos($haystack, $needle);
+ } else {
+ $needle = self::mb_substr($needle, 0, 1, $encoding);
+ $pos = iconv_strrpos($haystack, $needle, $encoding);
+ }
+
+ return self::getSubpart($pos, $part, $haystack, $encoding);
+ }
+
+ public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $needle = self::mb_substr($needle, 0, 1, $encoding);
+ $pos = self::mb_strripos($haystack, $needle, $encoding);
+
+ return self::getSubpart($pos, $part, $haystack, $encoding);
+ }
+
+ public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ $haystack = self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding);
+ $needle = self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding);
+
+ $haystack = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $haystack);
+ $needle = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $needle);
+
+ return self::mb_strrpos($haystack, $needle, $offset, $encoding);
+ }
+
+ public static function mb_strstr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $pos = strpos($haystack, $needle);
+ if (false === $pos) {
+ return false;
+ }
+ if ($part) {
+ return substr($haystack, 0, $pos);
+ }
+
+ return substr($haystack, $pos);
+ }
+
+ public static function mb_get_info($type = 'all')
+ {
+ $info = [
+ 'internal_encoding' => self::$internalEncoding,
+ 'http_output' => 'pass',
+ 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)',
+ 'func_overload' => 0,
+ 'func_overload_list' => 'no overload',
+ 'mail_charset' => 'UTF-8',
+ 'mail_header_encoding' => 'BASE64',
+ 'mail_body_encoding' => 'BASE64',
+ 'illegal_chars' => 0,
+ 'encoding_translation' => 'Off',
+ 'language' => self::$language,
+ 'detect_order' => self::$encodingList,
+ 'substitute_character' => 'none',
+ 'strict_detection' => 'Off',
+ ];
+
+ if ('all' === $type) {
+ return $info;
+ }
+ if (isset($info[$type])) {
+ return $info[$type];
+ }
+
+ return false;
+ }
+
+ public static function mb_http_input($type = '')
+ {
+ return false;
+ }
+
+ public static function mb_http_output($encoding = null)
+ {
+ return null !== $encoding ? 'pass' === $encoding : 'pass';
+ }
+
+ public static function mb_strwidth($s, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' !== $encoding) {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide);
+
+ return ($wide << 1) + iconv_strlen($s, 'UTF-8');
+ }
+
+ public static function mb_substr_count($haystack, $needle, $encoding = null)
+ {
+ return substr_count($haystack, $needle);
+ }
+
+ public static function mb_output_handler($contents, $status)
+ {
+ return $contents;
+ }
+
+ public static function mb_chr($code, $encoding = null)
+ {
+ if (0x80 > $code %= 0x200000) {
+ $s = \chr($code);
+ } elseif (0x800 > $code) {
+ $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
+ } elseif (0x10000 > $code) {
+ $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
+ } else {
+ $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
+ }
+
+ if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
+ $s = mb_convert_encoding($s, $encoding, 'UTF-8');
+ }
+
+ return $s;
+ }
+
+ public static function mb_ord($s, $encoding = null)
+ {
+ if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
+ $s = mb_convert_encoding($s, 'UTF-8', $encoding);
+ }
+
+ if (1 === \strlen($s)) {
+ return \ord($s);
+ }
+
+ $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
+ if (0xF0 <= $code) {
+ return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
+ }
+ if (0xE0 <= $code) {
+ return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
+ }
+ if (0xC0 <= $code) {
+ return (($code - 0xC0) << 6) + $s[2] - 0x80;
+ }
+
+ return $code;
+ }
+
+ public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, ?string $encoding = null): string
+ {
+ if (!\in_array($pad_type, [\STR_PAD_RIGHT, \STR_PAD_LEFT, \STR_PAD_BOTH], true)) {
+ throw new \ValueError('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH');
+ }
+
+ if (null === $encoding) {
+ $encoding = self::mb_internal_encoding();
+ } else {
+ self::assertEncoding($encoding, 'mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given');
+ }
+
+ if (self::mb_strlen($pad_string, $encoding) <= 0) {
+ throw new \ValueError('mb_str_pad(): Argument #3 ($pad_string) must be a non-empty string');
+ }
+
+ $paddingRequired = $length - self::mb_strlen($string, $encoding);
+
+ if ($paddingRequired < 1) {
+ return $string;
+ }
+
+ switch ($pad_type) {
+ case \STR_PAD_LEFT:
+ return self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding).$string;
+ case \STR_PAD_RIGHT:
+ return $string.self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding);
+ default:
+ $leftPaddingLength = floor($paddingRequired / 2);
+ $rightPaddingLength = $paddingRequired - $leftPaddingLength;
+
+ return self::mb_substr(str_repeat($pad_string, $leftPaddingLength), 0, $leftPaddingLength, $encoding).$string.self::mb_substr(str_repeat($pad_string, $rightPaddingLength), 0, $rightPaddingLength, $encoding);
+ }
+ }
+
+ public static function mb_ucfirst(string $string, ?string $encoding = null): string
+ {
+ if (null === $encoding) {
+ $encoding = self::mb_internal_encoding();
+ } else {
+ self::assertEncoding($encoding, 'mb_ucfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given');
+ }
+
+ $firstChar = mb_substr($string, 0, 1, $encoding);
+ $firstChar = mb_convert_case($firstChar, \MB_CASE_TITLE, $encoding);
+
+ return $firstChar.mb_substr($string, 1, null, $encoding);
+ }
+
+ public static function mb_lcfirst(string $string, ?string $encoding = null): string
+ {
+ if (null === $encoding) {
+ $encoding = self::mb_internal_encoding();
+ } else {
+ self::assertEncoding($encoding, 'mb_lcfirst(): Argument #2 ($encoding) must be a valid encoding, "%s" given');
+ }
+
+ $firstChar = mb_substr($string, 0, 1, $encoding);
+ $firstChar = mb_convert_case($firstChar, \MB_CASE_LOWER, $encoding);
+
+ return $firstChar.mb_substr($string, 1, null, $encoding);
+ }
+
+ private static function getSubpart($pos, $part, $haystack, $encoding)
+ {
+ if (false === $pos) {
+ return false;
+ }
+ if ($part) {
+ return self::mb_substr($haystack, 0, $pos, $encoding);
+ }
+
+ return self::mb_substr($haystack, $pos, null, $encoding);
+ }
+
+ private static function html_encoding_callback(array $m)
+ {
+ $i = 1;
+ $entities = '';
+ $m = unpack('C*', htmlentities($m[0], \ENT_COMPAT, 'UTF-8'));
+
+ while (isset($m[$i])) {
+ if (0x80 > $m[$i]) {
+ $entities .= \chr($m[$i++]);
+ continue;
+ }
+ if (0xF0 <= $m[$i]) {
+ $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
+ } elseif (0xE0 <= $m[$i]) {
+ $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
+ } else {
+ $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80;
+ }
+
+ $entities .= '&#'.$c.';';
+ }
+
+ return $entities;
+ }
+
+ private static function title_case(array $s)
+ {
+ return self::mb_convert_case($s[1], \MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], \MB_CASE_LOWER, 'UTF-8');
+ }
+
+ private static function getData($file)
+ {
+ if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
+ return require $file;
+ }
+
+ return false;
+ }
+
+ private static function getEncoding($encoding)
+ {
+ if (null === $encoding) {
+ return self::$internalEncoding;
+ }
+
+ if ('UTF-8' === $encoding) {
+ return 'UTF-8';
+ }
+
+ $encoding = strtoupper($encoding);
+
+ if ('8BIT' === $encoding || 'BINARY' === $encoding) {
+ return 'CP850';
+ }
+
+ if ('UTF8' === $encoding) {
+ return 'UTF-8';
+ }
+
+ return $encoding;
+ }
+
+ public static function mb_trim(string $string, ?string $characters = null, ?string $encoding = null): string
+ {
+ return self::mb_internal_trim('{^[%s]+|[%1$s]+$}Du', $string, $characters, $encoding, __FUNCTION__);
+ }
+
+ public static function mb_ltrim(string $string, ?string $characters = null, ?string $encoding = null): string
+ {
+ return self::mb_internal_trim('{^[%s]+}Du', $string, $characters, $encoding, __FUNCTION__);
+ }
+
+ public static function mb_rtrim(string $string, ?string $characters = null, ?string $encoding = null): string
+ {
+ return self::mb_internal_trim('{[%s]+$}D', $string, $characters, $encoding, __FUNCTION__);
+ }
+
+ private static function mb_internal_trim(string $regex, string $string, ?string $characters, ?string $encoding, string $function): string
+ {
+ if (null === $encoding) {
+ $encoding = self::mb_internal_encoding();
+ } else {
+ self::assertEncoding($encoding, $function.'(): Argument #3 ($encoding) must be a valid encoding, "%s" given');
+ }
+
+ if ('' === $characters) {
+ return null === $encoding ? $string : self::mb_convert_encoding($string, $encoding);
+ }
+
+ if ('UTF-8' === $encoding) {
+ $encoding = null;
+ if (!preg_match('//u', $string)) {
+ $string = @iconv('UTF-8', 'UTF-8//IGNORE', $string);
+ }
+ if (null !== $characters && !preg_match('//u', $characters)) {
+ $characters = @iconv('UTF-8', 'UTF-8//IGNORE', $characters);
+ }
+ } else {
+ $string = iconv($encoding, 'UTF-8//IGNORE', $string);
+
+ if (null !== $characters) {
+ $characters = iconv($encoding, 'UTF-8//IGNORE', $characters);
+ }
+ }
+
+ if (null === $characters) {
+ $characters = "\\0 \f\n\r\t\v\u{00A0}\u{1680}\u{2000}\u{2001}\u{2002}\u{2003}\u{2004}\u{2005}\u{2006}\u{2007}\u{2008}\u{2009}\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0085}\u{180E}";
+ } else {
+ $characters = preg_quote($characters);
+ }
+
+ $string = preg_replace(sprintf($regex, $characters), '', $string);
+
+ if (null === $encoding) {
+ return $string;
+ }
+
+ return iconv('UTF-8', $encoding.'//IGNORE', $string);
+ }
+
+ private static function assertEncoding(string $encoding, string $errorFormat): void
+ {
+ try {
+ $validEncoding = @self::mb_check_encoding('', $encoding);
+ } catch (\ValueError $e) {
+ throw new \ValueError(sprintf($errorFormat, $encoding));
+ }
+
+ // BC for PHP 7.3 and lower
+ if (!$validEncoding) {
+ throw new \ValueError(sprintf($errorFormat, $encoding));
+ }
+ }
+}
diff --git a/vendor/symfony/polyfill-mbstring/README.md b/vendor/symfony/polyfill-mbstring/README.md
new file mode 100644
index 000000000..478b40da2
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/README.md
@@ -0,0 +1,13 @@
+Symfony Polyfill / Mbstring
+===========================
+
+This component provides a partial, native PHP implementation for the
+[Mbstring](https://php.net/mbstring) extension.
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php
new file mode 100644
index 000000000..512bba0bf
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php
@@ -0,0 +1,119 @@
+<?php
+
+return [
+ 'İ' => 'i̇',
+ 'µ' => 'μ',
+ 'ſ' => 's',
+ 'ͅ' => 'ι',
+ 'ς' => 'σ',
+ 'ϐ' => 'β',
+ 'ϑ' => 'θ',
+ 'ϕ' => 'φ',
+ 'ϖ' => 'π',
+ 'ϰ' => 'κ',
+ 'ϱ' => 'ρ',
+ 'ϵ' => 'ε',
+ 'ẛ' => 'ṡ',
+ 'ι' => 'ι',
+ 'ß' => 'ss',
+ 'ʼn' => 'ʼn',
+ 'ǰ' => 'ǰ',
+ 'ΐ' => 'ΐ',
+ 'ΰ' => 'ΰ',
+ 'և' => 'եւ',
+ 'ẖ' => 'ẖ',
+ 'ẗ' => 'ẗ',
+ 'ẘ' => 'ẘ',
+ 'ẙ' => 'ẙ',
+ 'ẚ' => 'aʾ',
+ 'ẞ' => 'ss',
+ 'ὐ' => 'ὐ',
+ 'ὒ' => 'ὒ',
+ 'ὔ' => 'ὔ',
+ 'ὖ' => 'ὖ',
+ 'ᾀ' => 'ἀι',
+ 'ᾁ' => 'ἁι',
+ 'ᾂ' => 'ἂι',
+ 'ᾃ' => 'ἃι',
+ 'ᾄ' => 'ἄι',
+ 'ᾅ' => 'ἅι',
+ 'ᾆ' => 'ἆι',
+ 'ᾇ' => 'ἇι',
+ 'ᾈ' => 'ἀι',
+ 'ᾉ' => 'ἁι',
+ 'ᾊ' => 'ἂι',
+ 'ᾋ' => 'ἃι',
+ 'ᾌ' => 'ἄι',
+ 'ᾍ' => 'ἅι',
+ 'ᾎ' => 'ἆι',
+ 'ᾏ' => 'ἇι',
+ 'ᾐ' => 'ἠι',
+ 'ᾑ' => 'ἡι',
+ 'ᾒ' => 'ἢι',
+ 'ᾓ' => 'ἣι',
+ 'ᾔ' => 'ἤι',
+ 'ᾕ' => 'ἥι',
+ 'ᾖ' => 'ἦι',
+ 'ᾗ' => 'ἧι',
+ 'ᾘ' => 'ἠι',
+ 'ᾙ' => 'ἡι',
+ 'ᾚ' => 'ἢι',
+ 'ᾛ' => 'ἣι',
+ 'ᾜ' => 'ἤι',
+ 'ᾝ' => 'ἥι',
+ 'ᾞ' => 'ἦι',
+ 'ᾟ' => 'ἧι',
+ 'ᾠ' => 'ὠι',
+ 'ᾡ' => 'ὡι',
+ 'ᾢ' => 'ὢι',
+ 'ᾣ' => 'ὣι',
+ 'ᾤ' => 'ὤι',
+ 'ᾥ' => 'ὥι',
+ 'ᾦ' => 'ὦι',
+ 'ᾧ' => 'ὧι',
+ 'ᾨ' => 'ὠι',
+ 'ᾩ' => 'ὡι',
+ 'ᾪ' => 'ὢι',
+ 'ᾫ' => 'ὣι',
+ 'ᾬ' => 'ὤι',
+ 'ᾭ' => 'ὥι',
+ 'ᾮ' => 'ὦι',
+ 'ᾯ' => 'ὧι',
+ 'ᾲ' => 'ὰι',
+ 'ᾳ' => 'αι',
+ 'ᾴ' => 'άι',
+ 'ᾶ' => 'ᾶ',
+ 'ᾷ' => 'ᾶι',
+ 'ᾼ' => 'αι',
+ 'ῂ' => 'ὴι',
+ 'ῃ' => 'ηι',
+ 'ῄ' => 'ήι',
+ 'ῆ' => 'ῆ',
+ 'ῇ' => 'ῆι',
+ 'ῌ' => 'ηι',
+ 'ῒ' => 'ῒ',
+ 'ῖ' => 'ῖ',
+ 'ῗ' => 'ῗ',
+ 'ῢ' => 'ῢ',
+ 'ῤ' => 'ῤ',
+ 'ῦ' => 'ῦ',
+ 'ῧ' => 'ῧ',
+ 'ῲ' => 'ὼι',
+ 'ῳ' => 'ωι',
+ 'ῴ' => 'ώι',
+ 'ῶ' => 'ῶ',
+ 'ῷ' => 'ῶι',
+ 'ῼ' => 'ωι',
+ 'ff' => 'ff',
+ 'fi' => 'fi',
+ 'fl' => 'fl',
+ 'ffi' => 'ffi',
+ 'ffl' => 'ffl',
+ 'ſt' => 'st',
+ 'st' => 'st',
+ 'ﬓ' => 'մն',
+ 'ﬔ' => 'մե',
+ 'ﬕ' => 'մի',
+ 'ﬖ' => 'վն',
+ 'ﬗ' => 'մխ',
+];
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
new file mode 100644
index 000000000..fac60b081
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
@@ -0,0 +1,1397 @@
+<?php
+
+return array (
+ 'A' => 'a',
+ 'B' => 'b',
+ 'C' => 'c',
+ 'D' => 'd',
+ 'E' => 'e',
+ 'F' => 'f',
+ 'G' => 'g',
+ 'H' => 'h',
+ 'I' => 'i',
+ 'J' => 'j',
+ 'K' => 'k',
+ 'L' => 'l',
+ 'M' => 'm',
+ 'N' => 'n',
+ 'O' => 'o',
+ 'P' => 'p',
+ 'Q' => 'q',
+ 'R' => 'r',
+ 'S' => 's',
+ 'T' => 't',
+ 'U' => 'u',
+ 'V' => 'v',
+ 'W' => 'w',
+ 'X' => 'x',
+ 'Y' => 'y',
+ 'Z' => 'z',
+ 'À' => 'à',
+ 'Á' => 'á',
+ 'Â' => 'â',
+ 'Ã' => 'ã',
+ 'Ä' => 'ä',
+ 'Å' => 'å',
+ 'Æ' => 'æ',
+ 'Ç' => 'ç',
+ 'È' => 'è',
+ 'É' => 'é',
+ 'Ê' => 'ê',
+ 'Ë' => 'ë',
+ 'Ì' => 'ì',
+ 'Í' => 'í',
+ 'Î' => 'î',
+ 'Ï' => 'ï',
+ 'Ð' => 'ð',
+ 'Ñ' => 'ñ',
+ 'Ò' => 'ò',
+ 'Ó' => 'ó',
+ 'Ô' => 'ô',
+ 'Õ' => 'õ',
+ 'Ö' => 'ö',
+ 'Ø' => 'ø',
+ 'Ù' => 'ù',
+ 'Ú' => 'ú',
+ 'Û' => 'û',
+ 'Ü' => 'ü',
+ 'Ý' => 'ý',
+ 'Þ' => 'þ',
+ 'Ā' => 'ā',
+ 'Ă' => 'ă',
+ 'Ą' => 'ą',
+ 'Ć' => 'ć',
+ 'Ĉ' => 'ĉ',
+ 'Ċ' => 'ċ',
+ 'Č' => 'č',
+ 'Ď' => 'ď',
+ 'Đ' => 'đ',
+ 'Ē' => 'ē',
+ 'Ĕ' => 'ĕ',
+ 'Ė' => 'ė',
+ 'Ę' => 'ę',
+ 'Ě' => 'ě',
+ 'Ĝ' => 'ĝ',
+ 'Ğ' => 'ğ',
+ 'Ġ' => 'ġ',
+ 'Ģ' => 'ģ',
+ 'Ĥ' => 'ĥ',
+ 'Ħ' => 'ħ',
+ 'Ĩ' => 'ĩ',
+ 'Ī' => 'ī',
+ 'Ĭ' => 'ĭ',
+ 'Į' => 'į',
+ 'İ' => 'i̇',
+ 'IJ' => 'ij',
+ 'Ĵ' => 'ĵ',
+ 'Ķ' => 'ķ',
+ 'Ĺ' => 'ĺ',
+ 'Ļ' => 'ļ',
+ 'Ľ' => 'ľ',
+ 'Ŀ' => 'ŀ',
+ 'Ł' => 'ł',
+ 'Ń' => 'ń',
+ 'Ņ' => 'ņ',
+ 'Ň' => 'ň',
+ 'Ŋ' => 'ŋ',
+ 'Ō' => 'ō',
+ 'Ŏ' => 'ŏ',
+ 'Ő' => 'ő',
+ 'Œ' => 'œ',
+ 'Ŕ' => 'ŕ',
+ 'Ŗ' => 'ŗ',
+ 'Ř' => 'ř',
+ 'Ś' => 'ś',
+ 'Ŝ' => 'ŝ',
+ 'Ş' => 'ş',
+ 'Š' => 'š',
+ 'Ţ' => 'ţ',
+ 'Ť' => 'ť',
+ 'Ŧ' => 'ŧ',
+ 'Ũ' => 'ũ',
+ 'Ū' => 'ū',
+ 'Ŭ' => 'ŭ',
+ 'Ů' => 'ů',
+ 'Ű' => 'ű',
+ 'Ų' => 'ų',
+ 'Ŵ' => 'ŵ',
+ 'Ŷ' => 'ŷ',
+ 'Ÿ' => 'ÿ',
+ 'Ź' => 'ź',
+ 'Ż' => 'ż',
+ 'Ž' => 'ž',
+ 'Ɓ' => 'ɓ',
+ 'Ƃ' => 'ƃ',
+ 'Ƅ' => 'ƅ',
+ 'Ɔ' => 'ɔ',
+ 'Ƈ' => 'ƈ',
+ 'Ɖ' => 'ɖ',
+ 'Ɗ' => 'ɗ',
+ 'Ƌ' => 'ƌ',
+ 'Ǝ' => 'ǝ',
+ 'Ə' => 'ə',
+ 'Ɛ' => 'ɛ',
+ 'Ƒ' => 'ƒ',
+ 'Ɠ' => 'ɠ',
+ 'Ɣ' => 'ɣ',
+ 'Ɩ' => 'ɩ',
+ 'Ɨ' => 'ɨ',
+ 'Ƙ' => 'ƙ',
+ 'Ɯ' => 'ɯ',
+ 'Ɲ' => 'ɲ',
+ 'Ɵ' => 'ɵ',
+ 'Ơ' => 'ơ',
+ 'Ƣ' => 'ƣ',
+ 'Ƥ' => 'ƥ',
+ 'Ʀ' => 'ʀ',
+ 'Ƨ' => 'ƨ',
+ 'Ʃ' => 'ʃ',
+ 'Ƭ' => 'ƭ',
+ 'Ʈ' => 'ʈ',
+ 'Ư' => 'ư',
+ 'Ʊ' => 'ʊ',
+ 'Ʋ' => 'ʋ',
+ 'Ƴ' => 'ƴ',
+ 'Ƶ' => 'ƶ',
+ 'Ʒ' => 'ʒ',
+ 'Ƹ' => 'ƹ',
+ 'Ƽ' => 'ƽ',
+ 'DŽ' => 'dž',
+ 'Dž' => 'dž',
+ 'LJ' => 'lj',
+ 'Lj' => 'lj',
+ 'NJ' => 'nj',
+ 'Nj' => 'nj',
+ 'Ǎ' => 'ǎ',
+ 'Ǐ' => 'ǐ',
+ 'Ǒ' => 'ǒ',
+ 'Ǔ' => 'ǔ',
+ 'Ǖ' => 'ǖ',
+ 'Ǘ' => 'ǘ',
+ 'Ǚ' => 'ǚ',
+ 'Ǜ' => 'ǜ',
+ 'Ǟ' => 'ǟ',
+ 'Ǡ' => 'ǡ',
+ 'Ǣ' => 'ǣ',
+ 'Ǥ' => 'ǥ',
+ 'Ǧ' => 'ǧ',
+ 'Ǩ' => 'ǩ',
+ 'Ǫ' => 'ǫ',
+ 'Ǭ' => 'ǭ',
+ 'Ǯ' => 'ǯ',
+ 'DZ' => 'dz',
+ 'Dz' => 'dz',
+ 'Ǵ' => 'ǵ',
+ 'Ƕ' => 'ƕ',
+ 'Ƿ' => 'ƿ',
+ 'Ǹ' => 'ǹ',
+ 'Ǻ' => 'ǻ',
+ 'Ǽ' => 'ǽ',
+ 'Ǿ' => 'ǿ',
+ 'Ȁ' => 'ȁ',
+ 'Ȃ' => 'ȃ',
+ 'Ȅ' => 'ȅ',
+ 'Ȇ' => 'ȇ',
+ 'Ȉ' => 'ȉ',
+ 'Ȋ' => 'ȋ',
+ 'Ȍ' => 'ȍ',
+ 'Ȏ' => 'ȏ',
+ 'Ȑ' => 'ȑ',
+ 'Ȓ' => 'ȓ',
+ 'Ȕ' => 'ȕ',
+ 'Ȗ' => 'ȗ',
+ 'Ș' => 'ș',
+ 'Ț' => 'ț',
+ 'Ȝ' => 'ȝ',
+ 'Ȟ' => 'ȟ',
+ 'Ƞ' => 'ƞ',
+ 'Ȣ' => 'ȣ',
+ 'Ȥ' => 'ȥ',
+ 'Ȧ' => 'ȧ',
+ 'Ȩ' => 'ȩ',
+ 'Ȫ' => 'ȫ',
+ 'Ȭ' => 'ȭ',
+ 'Ȯ' => 'ȯ',
+ 'Ȱ' => 'ȱ',
+ 'Ȳ' => 'ȳ',
+ 'Ⱥ' => 'ⱥ',
+ 'Ȼ' => 'ȼ',
+ 'Ƚ' => 'ƚ',
+ 'Ⱦ' => 'ⱦ',
+ 'Ɂ' => 'ɂ',
+ 'Ƀ' => 'ƀ',
+ 'Ʉ' => 'ʉ',
+ 'Ʌ' => 'ʌ',
+ 'Ɇ' => 'ɇ',
+ 'Ɉ' => 'ɉ',
+ 'Ɋ' => 'ɋ',
+ 'Ɍ' => 'ɍ',
+ 'Ɏ' => 'ɏ',
+ 'Ͱ' => 'ͱ',
+ 'Ͳ' => 'ͳ',
+ 'Ͷ' => 'ͷ',
+ 'Ϳ' => 'ϳ',
+ 'Ά' => 'ά',
+ 'Έ' => 'έ',
+ 'Ή' => 'ή',
+ 'Ί' => 'ί',
+ 'Ό' => 'ό',
+ 'Ύ' => 'ύ',
+ 'Ώ' => 'ώ',
+ 'Α' => 'α',
+ 'Β' => 'β',
+ 'Γ' => 'γ',
+ 'Δ' => 'δ',
+ 'Ε' => 'ε',
+ 'Ζ' => 'ζ',
+ 'Η' => 'η',
+ 'Θ' => 'θ',
+ 'Ι' => 'ι',
+ 'Κ' => 'κ',
+ 'Λ' => 'λ',
+ 'Μ' => 'μ',
+ 'Ν' => 'ν',
+ 'Ξ' => 'ξ',
+ 'Ο' => 'ο',
+ 'Π' => 'π',
+ 'Ρ' => 'ρ',
+ 'Σ' => 'σ',
+ 'Τ' => 'τ',
+ 'Υ' => 'υ',
+ 'Φ' => 'φ',
+ 'Χ' => 'χ',
+ 'Ψ' => 'ψ',
+ 'Ω' => 'ω',
+ 'Ϊ' => 'ϊ',
+ 'Ϋ' => 'ϋ',
+ 'Ϗ' => 'ϗ',
+ 'Ϙ' => 'ϙ',
+ 'Ϛ' => 'ϛ',
+ 'Ϝ' => 'ϝ',
+ 'Ϟ' => 'ϟ',
+ 'Ϡ' => 'ϡ',
+ 'Ϣ' => 'ϣ',
+ 'Ϥ' => 'ϥ',
+ 'Ϧ' => 'ϧ',
+ 'Ϩ' => 'ϩ',
+ 'Ϫ' => 'ϫ',
+ 'Ϭ' => 'ϭ',
+ 'Ϯ' => 'ϯ',
+ 'ϴ' => 'θ',
+ 'Ϸ' => 'ϸ',
+ 'Ϲ' => 'ϲ',
+ 'Ϻ' => 'ϻ',
+ 'Ͻ' => 'ͻ',
+ 'Ͼ' => 'ͼ',
+ 'Ͽ' => 'ͽ',
+ 'Ѐ' => 'ѐ',
+ 'Ё' => 'ё',
+ 'Ђ' => 'ђ',
+ 'Ѓ' => 'ѓ',
+ 'Є' => 'є',
+ 'Ѕ' => 'ѕ',
+ 'І' => 'і',
+ 'Ї' => 'ї',
+ 'Ј' => 'ј',
+ 'Љ' => 'љ',
+ 'Њ' => 'њ',
+ 'Ћ' => 'ћ',
+ 'Ќ' => 'ќ',
+ 'Ѝ' => 'ѝ',
+ 'Ў' => 'ў',
+ 'Џ' => 'џ',
+ 'А' => 'а',
+ 'Б' => 'б',
+ 'В' => 'в',
+ 'Г' => 'г',
+ 'Д' => 'д',
+ 'Е' => 'е',
+ 'Ж' => 'ж',
+ 'З' => 'з',
+ 'И' => 'и',
+ 'Й' => 'й',
+ 'К' => 'к',
+ 'Л' => 'л',
+ 'М' => 'м',
+ 'Н' => 'н',
+ 'О' => 'о',
+ 'П' => 'п',
+ 'Р' => 'р',
+ 'С' => 'с',
+ 'Т' => 'т',
+ 'У' => 'у',
+ 'Ф' => 'ф',
+ 'Х' => 'х',
+ 'Ц' => 'ц',
+ 'Ч' => 'ч',
+ 'Ш' => 'ш',
+ 'Щ' => 'щ',
+ 'Ъ' => 'ъ',
+ 'Ы' => 'ы',
+ 'Ь' => 'ь',
+ 'Э' => 'э',
+ 'Ю' => 'ю',
+ 'Я' => 'я',
+ 'Ѡ' => 'ѡ',
+ 'Ѣ' => 'ѣ',
+ 'Ѥ' => 'ѥ',
+ 'Ѧ' => 'ѧ',
+ 'Ѩ' => 'ѩ',
+ 'Ѫ' => 'ѫ',
+ 'Ѭ' => 'ѭ',
+ 'Ѯ' => 'ѯ',
+ 'Ѱ' => 'ѱ',
+ 'Ѳ' => 'ѳ',
+ 'Ѵ' => 'ѵ',
+ 'Ѷ' => 'ѷ',
+ 'Ѹ' => 'ѹ',
+ 'Ѻ' => 'ѻ',
+ 'Ѽ' => 'ѽ',
+ 'Ѿ' => 'ѿ',
+ 'Ҁ' => 'ҁ',
+ 'Ҋ' => 'ҋ',
+ 'Ҍ' => 'ҍ',
+ 'Ҏ' => 'ҏ',
+ 'Ґ' => 'ґ',
+ 'Ғ' => 'ғ',
+ 'Ҕ' => 'ҕ',
+ 'Җ' => 'җ',
+ 'Ҙ' => 'ҙ',
+ 'Қ' => 'қ',
+ 'Ҝ' => 'ҝ',
+ 'Ҟ' => 'ҟ',
+ 'Ҡ' => 'ҡ',
+ 'Ң' => 'ң',
+ 'Ҥ' => 'ҥ',
+ 'Ҧ' => 'ҧ',
+ 'Ҩ' => 'ҩ',
+ 'Ҫ' => 'ҫ',
+ 'Ҭ' => 'ҭ',
+ 'Ү' => 'ү',
+ 'Ұ' => 'ұ',
+ 'Ҳ' => 'ҳ',
+ 'Ҵ' => 'ҵ',
+ 'Ҷ' => 'ҷ',
+ 'Ҹ' => 'ҹ',
+ 'Һ' => 'һ',
+ 'Ҽ' => 'ҽ',
+ 'Ҿ' => 'ҿ',
+ 'Ӏ' => 'ӏ',
+ 'Ӂ' => 'ӂ',
+ 'Ӄ' => 'ӄ',
+ 'Ӆ' => 'ӆ',
+ 'Ӈ' => 'ӈ',
+ 'Ӊ' => 'ӊ',
+ 'Ӌ' => 'ӌ',
+ 'Ӎ' => 'ӎ',
+ 'Ӑ' => 'ӑ',
+ 'Ӓ' => 'ӓ',
+ 'Ӕ' => 'ӕ',
+ 'Ӗ' => 'ӗ',
+ 'Ә' => 'ә',
+ 'Ӛ' => 'ӛ',
+ 'Ӝ' => 'ӝ',
+ 'Ӟ' => 'ӟ',
+ 'Ӡ' => 'ӡ',
+ 'Ӣ' => 'ӣ',
+ 'Ӥ' => 'ӥ',
+ 'Ӧ' => 'ӧ',
+ 'Ө' => 'ө',
+ 'Ӫ' => 'ӫ',
+ 'Ӭ' => 'ӭ',
+ 'Ӯ' => 'ӯ',
+ 'Ӱ' => 'ӱ',
+ 'Ӳ' => 'ӳ',
+ 'Ӵ' => 'ӵ',
+ 'Ӷ' => 'ӷ',
+ 'Ӹ' => 'ӹ',
+ 'Ӻ' => 'ӻ',
+ 'Ӽ' => 'ӽ',
+ 'Ӿ' => 'ӿ',
+ 'Ԁ' => 'ԁ',
+ 'Ԃ' => 'ԃ',
+ 'Ԅ' => 'ԅ',
+ 'Ԇ' => 'ԇ',
+ 'Ԉ' => 'ԉ',
+ 'Ԋ' => 'ԋ',
+ 'Ԍ' => 'ԍ',
+ 'Ԏ' => 'ԏ',
+ 'Ԑ' => 'ԑ',
+ 'Ԓ' => 'ԓ',
+ 'Ԕ' => 'ԕ',
+ 'Ԗ' => 'ԗ',
+ 'Ԙ' => 'ԙ',
+ 'Ԛ' => 'ԛ',
+ 'Ԝ' => 'ԝ',
+ 'Ԟ' => 'ԟ',
+ 'Ԡ' => 'ԡ',
+ 'Ԣ' => 'ԣ',
+ 'Ԥ' => 'ԥ',
+ 'Ԧ' => 'ԧ',
+ 'Ԩ' => 'ԩ',
+ 'Ԫ' => 'ԫ',
+ 'Ԭ' => 'ԭ',
+ 'Ԯ' => 'ԯ',
+ 'Ա' => 'ա',
+ 'Բ' => 'բ',
+ 'Գ' => 'գ',
+ 'Դ' => 'դ',
+ 'Ե' => 'ե',
+ 'Զ' => 'զ',
+ 'Է' => 'է',
+ 'Ը' => 'ը',
+ 'Թ' => 'թ',
+ 'Ժ' => 'ժ',
+ 'Ի' => 'ի',
+ 'Լ' => 'լ',
+ 'Խ' => 'խ',
+ 'Ծ' => 'ծ',
+ 'Կ' => 'կ',
+ 'Հ' => 'հ',
+ 'Ձ' => 'ձ',
+ 'Ղ' => 'ղ',
+ 'Ճ' => 'ճ',
+ 'Մ' => 'մ',
+ 'Յ' => 'յ',
+ 'Ն' => 'ն',
+ 'Շ' => 'շ',
+ 'Ո' => 'ո',
+ 'Չ' => 'չ',
+ 'Պ' => 'պ',
+ 'Ջ' => 'ջ',
+ 'Ռ' => 'ռ',
+ 'Ս' => 'ս',
+ 'Վ' => 'վ',
+ 'Տ' => 'տ',
+ 'Ր' => 'ր',
+ 'Ց' => 'ց',
+ 'Ւ' => 'ւ',
+ 'Փ' => 'փ',
+ 'Ք' => 'ք',
+ 'Օ' => 'օ',
+ 'Ֆ' => 'ֆ',
+ 'Ⴀ' => 'ⴀ',
+ 'Ⴁ' => 'ⴁ',
+ 'Ⴂ' => 'ⴂ',
+ 'Ⴃ' => 'ⴃ',
+ 'Ⴄ' => 'ⴄ',
+ 'Ⴅ' => 'ⴅ',
+ 'Ⴆ' => 'ⴆ',
+ 'Ⴇ' => 'ⴇ',
+ 'Ⴈ' => 'ⴈ',
+ 'Ⴉ' => 'ⴉ',
+ 'Ⴊ' => 'ⴊ',
+ 'Ⴋ' => 'ⴋ',
+ 'Ⴌ' => 'ⴌ',
+ 'Ⴍ' => 'ⴍ',
+ 'Ⴎ' => 'ⴎ',
+ 'Ⴏ' => 'ⴏ',
+ 'Ⴐ' => 'ⴐ',
+ 'Ⴑ' => 'ⴑ',
+ 'Ⴒ' => 'ⴒ',
+ 'Ⴓ' => 'ⴓ',
+ 'Ⴔ' => 'ⴔ',
+ 'Ⴕ' => 'ⴕ',
+ 'Ⴖ' => 'ⴖ',
+ 'Ⴗ' => 'ⴗ',
+ 'Ⴘ' => 'ⴘ',
+ 'Ⴙ' => 'ⴙ',
+ 'Ⴚ' => 'ⴚ',
+ 'Ⴛ' => 'ⴛ',
+ 'Ⴜ' => 'ⴜ',
+ 'Ⴝ' => 'ⴝ',
+ 'Ⴞ' => 'ⴞ',
+ 'Ⴟ' => 'ⴟ',
+ 'Ⴠ' => 'ⴠ',
+ 'Ⴡ' => 'ⴡ',
+ 'Ⴢ' => 'ⴢ',
+ 'Ⴣ' => 'ⴣ',
+ 'Ⴤ' => 'ⴤ',
+ 'Ⴥ' => 'ⴥ',
+ 'Ⴧ' => 'ⴧ',
+ 'Ⴭ' => 'ⴭ',
+ 'Ꭰ' => 'ꭰ',
+ 'Ꭱ' => 'ꭱ',
+ 'Ꭲ' => 'ꭲ',
+ 'Ꭳ' => 'ꭳ',
+ 'Ꭴ' => 'ꭴ',
+ 'Ꭵ' => 'ꭵ',
+ 'Ꭶ' => 'ꭶ',
+ 'Ꭷ' => 'ꭷ',
+ 'Ꭸ' => 'ꭸ',
+ 'Ꭹ' => 'ꭹ',
+ 'Ꭺ' => 'ꭺ',
+ 'Ꭻ' => 'ꭻ',
+ 'Ꭼ' => 'ꭼ',
+ 'Ꭽ' => 'ꭽ',
+ 'Ꭾ' => 'ꭾ',
+ 'Ꭿ' => 'ꭿ',
+ 'Ꮀ' => 'ꮀ',
+ 'Ꮁ' => 'ꮁ',
+ 'Ꮂ' => 'ꮂ',
+ 'Ꮃ' => 'ꮃ',
+ 'Ꮄ' => 'ꮄ',
+ 'Ꮅ' => 'ꮅ',
+ 'Ꮆ' => 'ꮆ',
+ 'Ꮇ' => 'ꮇ',
+ 'Ꮈ' => 'ꮈ',
+ 'Ꮉ' => 'ꮉ',
+ 'Ꮊ' => 'ꮊ',
+ 'Ꮋ' => 'ꮋ',
+ 'Ꮌ' => 'ꮌ',
+ 'Ꮍ' => 'ꮍ',
+ 'Ꮎ' => 'ꮎ',
+ 'Ꮏ' => 'ꮏ',
+ 'Ꮐ' => 'ꮐ',
+ 'Ꮑ' => 'ꮑ',
+ 'Ꮒ' => 'ꮒ',
+ 'Ꮓ' => 'ꮓ',
+ 'Ꮔ' => 'ꮔ',
+ 'Ꮕ' => 'ꮕ',
+ 'Ꮖ' => 'ꮖ',
+ 'Ꮗ' => 'ꮗ',
+ 'Ꮘ' => 'ꮘ',
+ 'Ꮙ' => 'ꮙ',
+ 'Ꮚ' => 'ꮚ',
+ 'Ꮛ' => 'ꮛ',
+ 'Ꮜ' => 'ꮜ',
+ 'Ꮝ' => 'ꮝ',
+ 'Ꮞ' => 'ꮞ',
+ 'Ꮟ' => 'ꮟ',
+ 'Ꮠ' => 'ꮠ',
+ 'Ꮡ' => 'ꮡ',
+ 'Ꮢ' => 'ꮢ',
+ 'Ꮣ' => 'ꮣ',
+ 'Ꮤ' => 'ꮤ',
+ 'Ꮥ' => 'ꮥ',
+ 'Ꮦ' => 'ꮦ',
+ 'Ꮧ' => 'ꮧ',
+ 'Ꮨ' => 'ꮨ',
+ 'Ꮩ' => 'ꮩ',
+ 'Ꮪ' => 'ꮪ',
+ 'Ꮫ' => 'ꮫ',
+ 'Ꮬ' => 'ꮬ',
+ 'Ꮭ' => 'ꮭ',
+ 'Ꮮ' => 'ꮮ',
+ 'Ꮯ' => 'ꮯ',
+ 'Ꮰ' => 'ꮰ',
+ 'Ꮱ' => 'ꮱ',
+ 'Ꮲ' => 'ꮲ',
+ 'Ꮳ' => 'ꮳ',
+ 'Ꮴ' => 'ꮴ',
+ 'Ꮵ' => 'ꮵ',
+ 'Ꮶ' => 'ꮶ',
+ 'Ꮷ' => 'ꮷ',
+ 'Ꮸ' => 'ꮸ',
+ 'Ꮹ' => 'ꮹ',
+ 'Ꮺ' => 'ꮺ',
+ 'Ꮻ' => 'ꮻ',
+ 'Ꮼ' => 'ꮼ',
+ 'Ꮽ' => 'ꮽ',
+ 'Ꮾ' => 'ꮾ',
+ 'Ꮿ' => 'ꮿ',
+ 'Ᏸ' => 'ᏸ',
+ 'Ᏹ' => 'ᏹ',
+ 'Ᏺ' => 'ᏺ',
+ 'Ᏻ' => 'ᏻ',
+ 'Ᏼ' => 'ᏼ',
+ 'Ᏽ' => 'ᏽ',
+ 'Ა' => 'ა',
+ 'Ბ' => 'ბ',
+ 'Გ' => 'გ',
+ 'Დ' => 'დ',
+ 'Ე' => 'ე',
+ 'Ვ' => 'ვ',
+ 'Ზ' => 'ზ',
+ 'Თ' => 'თ',
+ 'Ი' => 'ი',
+ 'Კ' => 'კ',
+ 'Ლ' => 'ლ',
+ 'Მ' => 'მ',
+ 'Ნ' => 'ნ',
+ 'Ო' => 'ო',
+ 'Პ' => 'პ',
+ 'Ჟ' => 'ჟ',
+ 'Რ' => 'რ',
+ 'Ს' => 'ს',
+ 'Ტ' => 'ტ',
+ 'Უ' => 'უ',
+ 'Ფ' => 'ფ',
+ 'Ქ' => 'ქ',
+ 'Ღ' => 'ღ',
+ 'Ყ' => 'ყ',
+ 'Შ' => 'შ',
+ 'Ჩ' => 'ჩ',
+ 'Ც' => 'ც',
+ 'Ძ' => 'ძ',
+ 'Წ' => 'წ',
+ 'Ჭ' => 'ჭ',
+ 'Ხ' => 'ხ',
+ 'Ჯ' => 'ჯ',
+ 'Ჰ' => 'ჰ',
+ 'Ჱ' => 'ჱ',
+ 'Ჲ' => 'ჲ',
+ 'Ჳ' => 'ჳ',
+ 'Ჴ' => 'ჴ',
+ 'Ჵ' => 'ჵ',
+ 'Ჶ' => 'ჶ',
+ 'Ჷ' => 'ჷ',
+ 'Ჸ' => 'ჸ',
+ 'Ჹ' => 'ჹ',
+ 'Ჺ' => 'ჺ',
+ 'Ჽ' => 'ჽ',
+ 'Ჾ' => 'ჾ',
+ 'Ჿ' => 'ჿ',
+ 'Ḁ' => 'ḁ',
+ 'Ḃ' => 'ḃ',
+ 'Ḅ' => 'ḅ',
+ 'Ḇ' => 'ḇ',
+ 'Ḉ' => 'ḉ',
+ 'Ḋ' => 'ḋ',
+ 'Ḍ' => 'ḍ',
+ 'Ḏ' => 'ḏ',
+ 'Ḑ' => 'ḑ',
+ 'Ḓ' => 'ḓ',
+ 'Ḕ' => 'ḕ',
+ 'Ḗ' => 'ḗ',
+ 'Ḙ' => 'ḙ',
+ 'Ḛ' => 'ḛ',
+ 'Ḝ' => 'ḝ',
+ 'Ḟ' => 'ḟ',
+ 'Ḡ' => 'ḡ',
+ 'Ḣ' => 'ḣ',
+ 'Ḥ' => 'ḥ',
+ 'Ḧ' => 'ḧ',
+ 'Ḩ' => 'ḩ',
+ 'Ḫ' => 'ḫ',
+ 'Ḭ' => 'ḭ',
+ 'Ḯ' => 'ḯ',
+ 'Ḱ' => 'ḱ',
+ 'Ḳ' => 'ḳ',
+ 'Ḵ' => 'ḵ',
+ 'Ḷ' => 'ḷ',
+ 'Ḹ' => 'ḹ',
+ 'Ḻ' => 'ḻ',
+ 'Ḽ' => 'ḽ',
+ 'Ḿ' => 'ḿ',
+ 'Ṁ' => 'ṁ',
+ 'Ṃ' => 'ṃ',
+ 'Ṅ' => 'ṅ',
+ 'Ṇ' => 'ṇ',
+ 'Ṉ' => 'ṉ',
+ 'Ṋ' => 'ṋ',
+ 'Ṍ' => 'ṍ',
+ 'Ṏ' => 'ṏ',
+ 'Ṑ' => 'ṑ',
+ 'Ṓ' => 'ṓ',
+ 'Ṕ' => 'ṕ',
+ 'Ṗ' => 'ṗ',
+ 'Ṙ' => 'ṙ',
+ 'Ṛ' => 'ṛ',
+ 'Ṝ' => 'ṝ',
+ 'Ṟ' => 'ṟ',
+ 'Ṡ' => 'ṡ',
+ 'Ṣ' => 'ṣ',
+ 'Ṥ' => 'ṥ',
+ 'Ṧ' => 'ṧ',
+ 'Ṩ' => 'ṩ',
+ 'Ṫ' => 'ṫ',
+ 'Ṭ' => 'ṭ',
+ 'Ṯ' => 'ṯ',
+ 'Ṱ' => 'ṱ',
+ 'Ṳ' => 'ṳ',
+ 'Ṵ' => 'ṵ',
+ 'Ṷ' => 'ṷ',
+ 'Ṹ' => 'ṹ',
+ 'Ṻ' => 'ṻ',
+ 'Ṽ' => 'ṽ',
+ 'Ṿ' => 'ṿ',
+ 'Ẁ' => 'ẁ',
+ 'Ẃ' => 'ẃ',
+ 'Ẅ' => 'ẅ',
+ 'Ẇ' => 'ẇ',
+ 'Ẉ' => 'ẉ',
+ 'Ẋ' => 'ẋ',
+ 'Ẍ' => 'ẍ',
+ 'Ẏ' => 'ẏ',
+ 'Ẑ' => 'ẑ',
+ 'Ẓ' => 'ẓ',
+ 'Ẕ' => 'ẕ',
+ 'ẞ' => 'ß',
+ 'Ạ' => 'ạ',
+ 'Ả' => 'ả',
+ 'Ấ' => 'ấ',
+ 'Ầ' => 'ầ',
+ 'Ẩ' => 'ẩ',
+ 'Ẫ' => 'ẫ',
+ 'Ậ' => 'ậ',
+ 'Ắ' => 'ắ',
+ 'Ằ' => 'ằ',
+ 'Ẳ' => 'ẳ',
+ 'Ẵ' => 'ẵ',
+ 'Ặ' => 'ặ',
+ 'Ẹ' => 'ẹ',
+ 'Ẻ' => 'ẻ',
+ 'Ẽ' => 'ẽ',
+ 'Ế' => 'ế',
+ 'Ề' => 'ề',
+ 'Ể' => 'ể',
+ 'Ễ' => 'ễ',
+ 'Ệ' => 'ệ',
+ 'Ỉ' => 'ỉ',
+ 'Ị' => 'ị',
+ 'Ọ' => 'ọ',
+ 'Ỏ' => 'ỏ',
+ 'Ố' => 'ố',
+ 'Ồ' => 'ồ',
+ 'Ổ' => 'ổ',
+ 'Ỗ' => 'ỗ',
+ 'Ộ' => 'ộ',
+ 'Ớ' => 'ớ',
+ 'Ờ' => 'ờ',
+ 'Ở' => 'ở',
+ 'Ỡ' => 'ỡ',
+ 'Ợ' => 'ợ',
+ 'Ụ' => 'ụ',
+ 'Ủ' => 'ủ',
+ 'Ứ' => 'ứ',
+ 'Ừ' => 'ừ',
+ 'Ử' => 'ử',
+ 'Ữ' => 'ữ',
+ 'Ự' => 'ự',
+ 'Ỳ' => 'ỳ',
+ 'Ỵ' => 'ỵ',
+ 'Ỷ' => 'ỷ',
+ 'Ỹ' => 'ỹ',
+ 'Ỻ' => 'ỻ',
+ 'Ỽ' => 'ỽ',
+ 'Ỿ' => 'ỿ',
+ 'Ἀ' => 'ἀ',
+ 'Ἁ' => 'ἁ',
+ 'Ἂ' => 'ἂ',
+ 'Ἃ' => 'ἃ',
+ 'Ἄ' => 'ἄ',
+ 'Ἅ' => 'ἅ',
+ 'Ἆ' => 'ἆ',
+ 'Ἇ' => 'ἇ',
+ 'Ἐ' => 'ἐ',
+ 'Ἑ' => 'ἑ',
+ 'Ἒ' => 'ἒ',
+ 'Ἓ' => 'ἓ',
+ 'Ἔ' => 'ἔ',
+ 'Ἕ' => 'ἕ',
+ 'Ἠ' => 'ἠ',
+ 'Ἡ' => 'ἡ',
+ 'Ἢ' => 'ἢ',
+ 'Ἣ' => 'ἣ',
+ 'Ἤ' => 'ἤ',
+ 'Ἥ' => 'ἥ',
+ 'Ἦ' => 'ἦ',
+ 'Ἧ' => 'ἧ',
+ 'Ἰ' => 'ἰ',
+ 'Ἱ' => 'ἱ',
+ 'Ἲ' => 'ἲ',
+ 'Ἳ' => 'ἳ',
+ 'Ἴ' => 'ἴ',
+ 'Ἵ' => 'ἵ',
+ 'Ἶ' => 'ἶ',
+ 'Ἷ' => 'ἷ',
+ 'Ὀ' => 'ὀ',
+ 'Ὁ' => 'ὁ',
+ 'Ὂ' => 'ὂ',
+ 'Ὃ' => 'ὃ',
+ 'Ὄ' => 'ὄ',
+ 'Ὅ' => 'ὅ',
+ 'Ὑ' => 'ὑ',
+ 'Ὓ' => 'ὓ',
+ 'Ὕ' => 'ὕ',
+ 'Ὗ' => 'ὗ',
+ 'Ὠ' => 'ὠ',
+ 'Ὡ' => 'ὡ',
+ 'Ὢ' => 'ὢ',
+ 'Ὣ' => 'ὣ',
+ 'Ὤ' => 'ὤ',
+ 'Ὥ' => 'ὥ',
+ 'Ὦ' => 'ὦ',
+ 'Ὧ' => 'ὧ',
+ 'ᾈ' => 'ᾀ',
+ 'ᾉ' => 'ᾁ',
+ 'ᾊ' => 'ᾂ',
+ 'ᾋ' => 'ᾃ',
+ 'ᾌ' => 'ᾄ',
+ 'ᾍ' => 'ᾅ',
+ 'ᾎ' => 'ᾆ',
+ 'ᾏ' => 'ᾇ',
+ 'ᾘ' => 'ᾐ',
+ 'ᾙ' => 'ᾑ',
+ 'ᾚ' => 'ᾒ',
+ 'ᾛ' => 'ᾓ',
+ 'ᾜ' => 'ᾔ',
+ 'ᾝ' => 'ᾕ',
+ 'ᾞ' => 'ᾖ',
+ 'ᾟ' => 'ᾗ',
+ 'ᾨ' => 'ᾠ',
+ 'ᾩ' => 'ᾡ',
+ 'ᾪ' => 'ᾢ',
+ 'ᾫ' => 'ᾣ',
+ 'ᾬ' => 'ᾤ',
+ 'ᾭ' => 'ᾥ',
+ 'ᾮ' => 'ᾦ',
+ 'ᾯ' => 'ᾧ',
+ 'Ᾰ' => 'ᾰ',
+ 'Ᾱ' => 'ᾱ',
+ 'Ὰ' => 'ὰ',
+ 'Ά' => 'ά',
+ 'ᾼ' => 'ᾳ',
+ 'Ὲ' => 'ὲ',
+ 'Έ' => 'έ',
+ 'Ὴ' => 'ὴ',
+ 'Ή' => 'ή',
+ 'ῌ' => 'ῃ',
+ 'Ῐ' => 'ῐ',
+ 'Ῑ' => 'ῑ',
+ 'Ὶ' => 'ὶ',
+ 'Ί' => 'ί',
+ 'Ῠ' => 'ῠ',
+ 'Ῡ' => 'ῡ',
+ 'Ὺ' => 'ὺ',
+ 'Ύ' => 'ύ',
+ 'Ῥ' => 'ῥ',
+ 'Ὸ' => 'ὸ',
+ 'Ό' => 'ό',
+ 'Ὼ' => 'ὼ',
+ 'Ώ' => 'ώ',
+ 'ῼ' => 'ῳ',
+ 'Ω' => 'ω',
+ 'K' => 'k',
+ 'Å' => 'å',
+ 'Ⅎ' => 'ⅎ',
+ 'Ⅰ' => 'ⅰ',
+ 'Ⅱ' => 'ⅱ',
+ 'Ⅲ' => 'ⅲ',
+ 'Ⅳ' => 'ⅳ',
+ 'Ⅴ' => 'ⅴ',
+ 'Ⅵ' => 'ⅵ',
+ 'Ⅶ' => 'ⅶ',
+ 'Ⅷ' => 'ⅷ',
+ 'Ⅸ' => 'ⅸ',
+ 'Ⅹ' => 'ⅹ',
+ 'Ⅺ' => 'ⅺ',
+ 'Ⅻ' => 'ⅻ',
+ 'Ⅼ' => 'ⅼ',
+ 'Ⅽ' => 'ⅽ',
+ 'Ⅾ' => 'ⅾ',
+ 'Ⅿ' => 'ⅿ',
+ 'Ↄ' => 'ↄ',
+ 'Ⓐ' => 'ⓐ',
+ 'Ⓑ' => 'ⓑ',
+ 'Ⓒ' => 'ⓒ',
+ 'Ⓓ' => 'ⓓ',
+ 'Ⓔ' => 'ⓔ',
+ 'Ⓕ' => 'ⓕ',
+ 'Ⓖ' => 'ⓖ',
+ 'Ⓗ' => 'ⓗ',
+ 'Ⓘ' => 'ⓘ',
+ 'Ⓙ' => 'ⓙ',
+ 'Ⓚ' => 'ⓚ',
+ 'Ⓛ' => 'ⓛ',
+ 'Ⓜ' => 'ⓜ',
+ 'Ⓝ' => 'ⓝ',
+ 'Ⓞ' => 'ⓞ',
+ 'Ⓟ' => 'ⓟ',
+ 'Ⓠ' => 'ⓠ',
+ 'Ⓡ' => 'ⓡ',
+ 'Ⓢ' => 'ⓢ',
+ 'Ⓣ' => 'ⓣ',
+ 'Ⓤ' => 'ⓤ',
+ 'Ⓥ' => 'ⓥ',
+ 'Ⓦ' => 'ⓦ',
+ 'Ⓧ' => 'ⓧ',
+ 'Ⓨ' => 'ⓨ',
+ 'Ⓩ' => 'ⓩ',
+ 'Ⰰ' => 'ⰰ',
+ 'Ⰱ' => 'ⰱ',
+ 'Ⰲ' => 'ⰲ',
+ 'Ⰳ' => 'ⰳ',
+ 'Ⰴ' => 'ⰴ',
+ 'Ⰵ' => 'ⰵ',
+ 'Ⰶ' => 'ⰶ',
+ 'Ⰷ' => 'ⰷ',
+ 'Ⰸ' => 'ⰸ',
+ 'Ⰹ' => 'ⰹ',
+ 'Ⰺ' => 'ⰺ',
+ 'Ⰻ' => 'ⰻ',
+ 'Ⰼ' => 'ⰼ',
+ 'Ⰽ' => 'ⰽ',
+ 'Ⰾ' => 'ⰾ',
+ 'Ⰿ' => 'ⰿ',
+ 'Ⱀ' => 'ⱀ',
+ 'Ⱁ' => 'ⱁ',
+ 'Ⱂ' => 'ⱂ',
+ 'Ⱃ' => 'ⱃ',
+ 'Ⱄ' => 'ⱄ',
+ 'Ⱅ' => 'ⱅ',
+ 'Ⱆ' => 'ⱆ',
+ 'Ⱇ' => 'ⱇ',
+ 'Ⱈ' => 'ⱈ',
+ 'Ⱉ' => 'ⱉ',
+ 'Ⱊ' => 'ⱊ',
+ 'Ⱋ' => 'ⱋ',
+ 'Ⱌ' => 'ⱌ',
+ 'Ⱍ' => 'ⱍ',
+ 'Ⱎ' => 'ⱎ',
+ 'Ⱏ' => 'ⱏ',
+ 'Ⱐ' => 'ⱐ',
+ 'Ⱑ' => 'ⱑ',
+ 'Ⱒ' => 'ⱒ',
+ 'Ⱓ' => 'ⱓ',
+ 'Ⱔ' => 'ⱔ',
+ 'Ⱕ' => 'ⱕ',
+ 'Ⱖ' => 'ⱖ',
+ 'Ⱗ' => 'ⱗ',
+ 'Ⱘ' => 'ⱘ',
+ 'Ⱙ' => 'ⱙ',
+ 'Ⱚ' => 'ⱚ',
+ 'Ⱛ' => 'ⱛ',
+ 'Ⱜ' => 'ⱜ',
+ 'Ⱝ' => 'ⱝ',
+ 'Ⱞ' => 'ⱞ',
+ 'Ⱡ' => 'ⱡ',
+ 'Ɫ' => 'ɫ',
+ 'Ᵽ' => 'ᵽ',
+ 'Ɽ' => 'ɽ',
+ 'Ⱨ' => 'ⱨ',
+ 'Ⱪ' => 'ⱪ',
+ 'Ⱬ' => 'ⱬ',
+ 'Ɑ' => 'ɑ',
+ 'Ɱ' => 'ɱ',
+ 'Ɐ' => 'ɐ',
+ 'Ɒ' => 'ɒ',
+ 'Ⱳ' => 'ⱳ',
+ 'Ⱶ' => 'ⱶ',
+ 'Ȿ' => 'ȿ',
+ 'Ɀ' => 'ɀ',
+ 'Ⲁ' => 'ⲁ',
+ 'Ⲃ' => 'ⲃ',
+ 'Ⲅ' => 'ⲅ',
+ 'Ⲇ' => 'ⲇ',
+ 'Ⲉ' => 'ⲉ',
+ 'Ⲋ' => 'ⲋ',
+ 'Ⲍ' => 'ⲍ',
+ 'Ⲏ' => 'ⲏ',
+ 'Ⲑ' => 'ⲑ',
+ 'Ⲓ' => 'ⲓ',
+ 'Ⲕ' => 'ⲕ',
+ 'Ⲗ' => 'ⲗ',
+ 'Ⲙ' => 'ⲙ',
+ 'Ⲛ' => 'ⲛ',
+ 'Ⲝ' => 'ⲝ',
+ 'Ⲟ' => 'ⲟ',
+ 'Ⲡ' => 'ⲡ',
+ 'Ⲣ' => 'ⲣ',
+ 'Ⲥ' => 'ⲥ',
+ 'Ⲧ' => 'ⲧ',
+ 'Ⲩ' => 'ⲩ',
+ 'Ⲫ' => 'ⲫ',
+ 'Ⲭ' => 'ⲭ',
+ 'Ⲯ' => 'ⲯ',
+ 'Ⲱ' => 'ⲱ',
+ 'Ⲳ' => 'ⲳ',
+ 'Ⲵ' => 'ⲵ',
+ 'Ⲷ' => 'ⲷ',
+ 'Ⲹ' => 'ⲹ',
+ 'Ⲻ' => 'ⲻ',
+ 'Ⲽ' => 'ⲽ',
+ 'Ⲿ' => 'ⲿ',
+ 'Ⳁ' => 'ⳁ',
+ 'Ⳃ' => 'ⳃ',
+ 'Ⳅ' => 'ⳅ',
+ 'Ⳇ' => 'ⳇ',
+ 'Ⳉ' => 'ⳉ',
+ 'Ⳋ' => 'ⳋ',
+ 'Ⳍ' => 'ⳍ',
+ 'Ⳏ' => 'ⳏ',
+ 'Ⳑ' => 'ⳑ',
+ 'Ⳓ' => 'ⳓ',
+ 'Ⳕ' => 'ⳕ',
+ 'Ⳗ' => 'ⳗ',
+ 'Ⳙ' => 'ⳙ',
+ 'Ⳛ' => 'ⳛ',
+ 'Ⳝ' => 'ⳝ',
+ 'Ⳟ' => 'ⳟ',
+ 'Ⳡ' => 'ⳡ',
+ 'Ⳣ' => 'ⳣ',
+ 'Ⳬ' => 'ⳬ',
+ 'Ⳮ' => 'ⳮ',
+ 'Ⳳ' => 'ⳳ',
+ 'Ꙁ' => 'ꙁ',
+ 'Ꙃ' => 'ꙃ',
+ 'Ꙅ' => 'ꙅ',
+ 'Ꙇ' => 'ꙇ',
+ 'Ꙉ' => 'ꙉ',
+ 'Ꙋ' => 'ꙋ',
+ 'Ꙍ' => 'ꙍ',
+ 'Ꙏ' => 'ꙏ',
+ 'Ꙑ' => 'ꙑ',
+ 'Ꙓ' => 'ꙓ',
+ 'Ꙕ' => 'ꙕ',
+ 'Ꙗ' => 'ꙗ',
+ 'Ꙙ' => 'ꙙ',
+ 'Ꙛ' => 'ꙛ',
+ 'Ꙝ' => 'ꙝ',
+ 'Ꙟ' => 'ꙟ',
+ 'Ꙡ' => 'ꙡ',
+ 'Ꙣ' => 'ꙣ',
+ 'Ꙥ' => 'ꙥ',
+ 'Ꙧ' => 'ꙧ',
+ 'Ꙩ' => 'ꙩ',
+ 'Ꙫ' => 'ꙫ',
+ 'Ꙭ' => 'ꙭ',
+ 'Ꚁ' => 'ꚁ',
+ 'Ꚃ' => 'ꚃ',
+ 'Ꚅ' => 'ꚅ',
+ 'Ꚇ' => 'ꚇ',
+ 'Ꚉ' => 'ꚉ',
+ 'Ꚋ' => 'ꚋ',
+ 'Ꚍ' => 'ꚍ',
+ 'Ꚏ' => 'ꚏ',
+ 'Ꚑ' => 'ꚑ',
+ 'Ꚓ' => 'ꚓ',
+ 'Ꚕ' => 'ꚕ',
+ 'Ꚗ' => 'ꚗ',
+ 'Ꚙ' => 'ꚙ',
+ 'Ꚛ' => 'ꚛ',
+ 'Ꜣ' => 'ꜣ',
+ 'Ꜥ' => 'ꜥ',
+ 'Ꜧ' => 'ꜧ',
+ 'Ꜩ' => 'ꜩ',
+ 'Ꜫ' => 'ꜫ',
+ 'Ꜭ' => 'ꜭ',
+ 'Ꜯ' => 'ꜯ',
+ 'Ꜳ' => 'ꜳ',
+ 'Ꜵ' => 'ꜵ',
+ 'Ꜷ' => 'ꜷ',
+ 'Ꜹ' => 'ꜹ',
+ 'Ꜻ' => 'ꜻ',
+ 'Ꜽ' => 'ꜽ',
+ 'Ꜿ' => 'ꜿ',
+ 'Ꝁ' => 'ꝁ',
+ 'Ꝃ' => 'ꝃ',
+ 'Ꝅ' => 'ꝅ',
+ 'Ꝇ' => 'ꝇ',
+ 'Ꝉ' => 'ꝉ',
+ 'Ꝋ' => 'ꝋ',
+ 'Ꝍ' => 'ꝍ',
+ 'Ꝏ' => 'ꝏ',
+ 'Ꝑ' => 'ꝑ',
+ 'Ꝓ' => 'ꝓ',
+ 'Ꝕ' => 'ꝕ',
+ 'Ꝗ' => 'ꝗ',
+ 'Ꝙ' => 'ꝙ',
+ 'Ꝛ' => 'ꝛ',
+ 'Ꝝ' => 'ꝝ',
+ 'Ꝟ' => 'ꝟ',
+ 'Ꝡ' => 'ꝡ',
+ 'Ꝣ' => 'ꝣ',
+ 'Ꝥ' => 'ꝥ',
+ 'Ꝧ' => 'ꝧ',
+ 'Ꝩ' => 'ꝩ',
+ 'Ꝫ' => 'ꝫ',
+ 'Ꝭ' => 'ꝭ',
+ 'Ꝯ' => 'ꝯ',
+ 'Ꝺ' => 'ꝺ',
+ 'Ꝼ' => 'ꝼ',
+ 'Ᵹ' => 'ᵹ',
+ 'Ꝿ' => 'ꝿ',
+ 'Ꞁ' => 'ꞁ',
+ 'Ꞃ' => 'ꞃ',
+ 'Ꞅ' => 'ꞅ',
+ 'Ꞇ' => 'ꞇ',
+ 'Ꞌ' => 'ꞌ',
+ 'Ɥ' => 'ɥ',
+ 'Ꞑ' => 'ꞑ',
+ 'Ꞓ' => 'ꞓ',
+ 'Ꞗ' => 'ꞗ',
+ 'Ꞙ' => 'ꞙ',
+ 'Ꞛ' => 'ꞛ',
+ 'Ꞝ' => 'ꞝ',
+ 'Ꞟ' => 'ꞟ',
+ 'Ꞡ' => 'ꞡ',
+ 'Ꞣ' => 'ꞣ',
+ 'Ꞥ' => 'ꞥ',
+ 'Ꞧ' => 'ꞧ',
+ 'Ꞩ' => 'ꞩ',
+ 'Ɦ' => 'ɦ',
+ 'Ɜ' => 'ɜ',
+ 'Ɡ' => 'ɡ',
+ 'Ɬ' => 'ɬ',
+ 'Ɪ' => 'ɪ',
+ 'Ʞ' => 'ʞ',
+ 'Ʇ' => 'ʇ',
+ 'Ʝ' => 'ʝ',
+ 'Ꭓ' => 'ꭓ',
+ 'Ꞵ' => 'ꞵ',
+ 'Ꞷ' => 'ꞷ',
+ 'Ꞹ' => 'ꞹ',
+ 'Ꞻ' => 'ꞻ',
+ 'Ꞽ' => 'ꞽ',
+ 'Ꞿ' => 'ꞿ',
+ 'Ꟃ' => 'ꟃ',
+ 'Ꞔ' => 'ꞔ',
+ 'Ʂ' => 'ʂ',
+ 'Ᶎ' => 'ᶎ',
+ 'Ꟈ' => 'ꟈ',
+ 'Ꟊ' => 'ꟊ',
+ 'Ꟶ' => 'ꟶ',
+ 'A' => 'a',
+ 'B' => 'b',
+ 'C' => 'c',
+ 'D' => 'd',
+ 'E' => 'e',
+ 'F' => 'f',
+ 'G' => 'g',
+ 'H' => 'h',
+ 'I' => 'i',
+ 'J' => 'j',
+ 'K' => 'k',
+ 'L' => 'l',
+ 'M' => 'm',
+ 'N' => 'n',
+ 'O' => 'o',
+ 'P' => 'p',
+ 'Q' => 'q',
+ 'R' => 'r',
+ 'S' => 's',
+ 'T' => 't',
+ 'U' => 'u',
+ 'V' => 'v',
+ 'W' => 'w',
+ 'X' => 'x',
+ 'Y' => 'y',
+ 'Z' => 'z',
+ '𐐀' => '𐐨',
+ '𐐁' => '𐐩',
+ '𐐂' => '𐐪',
+ '𐐃' => '𐐫',
+ '𐐄' => '𐐬',
+ '𐐅' => '𐐭',
+ '𐐆' => '𐐮',
+ '𐐇' => '𐐯',
+ '𐐈' => '𐐰',
+ '𐐉' => '𐐱',
+ '𐐊' => '𐐲',
+ '𐐋' => '𐐳',
+ '𐐌' => '𐐴',
+ '𐐍' => '𐐵',
+ '𐐎' => '𐐶',
+ '𐐏' => '𐐷',
+ '𐐐' => '𐐸',
+ '𐐑' => '𐐹',
+ '𐐒' => '𐐺',
+ '𐐓' => '𐐻',
+ '𐐔' => '𐐼',
+ '𐐕' => '𐐽',
+ '𐐖' => '𐐾',
+ '𐐗' => '𐐿',
+ '𐐘' => '𐑀',
+ '𐐙' => '𐑁',
+ '𐐚' => '𐑂',
+ '𐐛' => '𐑃',
+ '𐐜' => '𐑄',
+ '𐐝' => '𐑅',
+ '𐐞' => '𐑆',
+ '𐐟' => '𐑇',
+ '𐐠' => '𐑈',
+ '𐐡' => '𐑉',
+ '𐐢' => '𐑊',
+ '𐐣' => '𐑋',
+ '𐐤' => '𐑌',
+ '𐐥' => '𐑍',
+ '𐐦' => '𐑎',
+ '𐐧' => '𐑏',
+ '𐒰' => '𐓘',
+ '𐒱' => '𐓙',
+ '𐒲' => '𐓚',
+ '𐒳' => '𐓛',
+ '𐒴' => '𐓜',
+ '𐒵' => '𐓝',
+ '𐒶' => '𐓞',
+ '𐒷' => '𐓟',
+ '𐒸' => '𐓠',
+ '𐒹' => '𐓡',
+ '𐒺' => '𐓢',
+ '𐒻' => '𐓣',
+ '𐒼' => '𐓤',
+ '𐒽' => '𐓥',
+ '𐒾' => '𐓦',
+ '𐒿' => '𐓧',
+ '𐓀' => '𐓨',
+ '𐓁' => '𐓩',
+ '𐓂' => '𐓪',
+ '𐓃' => '𐓫',
+ '𐓄' => '𐓬',
+ '𐓅' => '𐓭',
+ '𐓆' => '𐓮',
+ '𐓇' => '𐓯',
+ '𐓈' => '𐓰',
+ '𐓉' => '𐓱',
+ '𐓊' => '𐓲',
+ '𐓋' => '𐓳',
+ '𐓌' => '𐓴',
+ '𐓍' => '𐓵',
+ '𐓎' => '𐓶',
+ '𐓏' => '𐓷',
+ '𐓐' => '𐓸',
+ '𐓑' => '𐓹',
+ '𐓒' => '𐓺',
+ '𐓓' => '𐓻',
+ '𐲀' => '𐳀',
+ '𐲁' => '𐳁',
+ '𐲂' => '𐳂',
+ '𐲃' => '𐳃',
+ '𐲄' => '𐳄',
+ '𐲅' => '𐳅',
+ '𐲆' => '𐳆',
+ '𐲇' => '𐳇',
+ '𐲈' => '𐳈',
+ '𐲉' => '𐳉',
+ '𐲊' => '𐳊',
+ '𐲋' => '𐳋',
+ '𐲌' => '𐳌',
+ '𐲍' => '𐳍',
+ '𐲎' => '𐳎',
+ '𐲏' => '𐳏',
+ '𐲐' => '𐳐',
+ '𐲑' => '𐳑',
+ '𐲒' => '𐳒',
+ '𐲓' => '𐳓',
+ '𐲔' => '𐳔',
+ '𐲕' => '𐳕',
+ '𐲖' => '𐳖',
+ '𐲗' => '𐳗',
+ '𐲘' => '𐳘',
+ '𐲙' => '𐳙',
+ '𐲚' => '𐳚',
+ '𐲛' => '𐳛',
+ '𐲜' => '𐳜',
+ '𐲝' => '𐳝',
+ '𐲞' => '𐳞',
+ '𐲟' => '𐳟',
+ '𐲠' => '𐳠',
+ '𐲡' => '𐳡',
+ '𐲢' => '𐳢',
+ '𐲣' => '𐳣',
+ '𐲤' => '𐳤',
+ '𐲥' => '𐳥',
+ '𐲦' => '𐳦',
+ '𐲧' => '𐳧',
+ '𐲨' => '𐳨',
+ '𐲩' => '𐳩',
+ '𐲪' => '𐳪',
+ '𐲫' => '𐳫',
+ '𐲬' => '𐳬',
+ '𐲭' => '𐳭',
+ '𐲮' => '𐳮',
+ '𐲯' => '𐳯',
+ '𐲰' => '𐳰',
+ '𐲱' => '𐳱',
+ '𐲲' => '𐳲',
+ '𑢠' => '𑣀',
+ '𑢡' => '𑣁',
+ '𑢢' => '𑣂',
+ '𑢣' => '𑣃',
+ '𑢤' => '𑣄',
+ '𑢥' => '𑣅',
+ '𑢦' => '𑣆',
+ '𑢧' => '𑣇',
+ '𑢨' => '𑣈',
+ '𑢩' => '𑣉',
+ '𑢪' => '𑣊',
+ '𑢫' => '𑣋',
+ '𑢬' => '𑣌',
+ '𑢭' => '𑣍',
+ '𑢮' => '𑣎',
+ '𑢯' => '𑣏',
+ '𑢰' => '𑣐',
+ '𑢱' => '𑣑',
+ '𑢲' => '𑣒',
+ '𑢳' => '𑣓',
+ '𑢴' => '𑣔',
+ '𑢵' => '𑣕',
+ '𑢶' => '𑣖',
+ '𑢷' => '𑣗',
+ '𑢸' => '𑣘',
+ '𑢹' => '𑣙',
+ '𑢺' => '𑣚',
+ '𑢻' => '𑣛',
+ '𑢼' => '𑣜',
+ '𑢽' => '𑣝',
+ '𑢾' => '𑣞',
+ '𑢿' => '𑣟',
+ '𖹀' => '𖹠',
+ '𖹁' => '𖹡',
+ '𖹂' => '𖹢',
+ '𖹃' => '𖹣',
+ '𖹄' => '𖹤',
+ '𖹅' => '𖹥',
+ '𖹆' => '𖹦',
+ '𖹇' => '𖹧',
+ '𖹈' => '𖹨',
+ '𖹉' => '𖹩',
+ '𖹊' => '𖹪',
+ '𖹋' => '𖹫',
+ '𖹌' => '𖹬',
+ '𖹍' => '𖹭',
+ '𖹎' => '𖹮',
+ '𖹏' => '𖹯',
+ '𖹐' => '𖹰',
+ '𖹑' => '𖹱',
+ '𖹒' => '𖹲',
+ '𖹓' => '𖹳',
+ '𖹔' => '𖹴',
+ '𖹕' => '𖹵',
+ '𖹖' => '𖹶',
+ '𖹗' => '𖹷',
+ '𖹘' => '𖹸',
+ '𖹙' => '𖹹',
+ '𖹚' => '𖹺',
+ '𖹛' => '𖹻',
+ '𖹜' => '𖹼',
+ '𖹝' => '𖹽',
+ '𖹞' => '𖹾',
+ '𖹟' => '𖹿',
+ '𞤀' => '𞤢',
+ '𞤁' => '𞤣',
+ '𞤂' => '𞤤',
+ '𞤃' => '𞤥',
+ '𞤄' => '𞤦',
+ '𞤅' => '𞤧',
+ '𞤆' => '𞤨',
+ '𞤇' => '𞤩',
+ '𞤈' => '𞤪',
+ '𞤉' => '𞤫',
+ '𞤊' => '𞤬',
+ '𞤋' => '𞤭',
+ '𞤌' => '𞤮',
+ '𞤍' => '𞤯',
+ '𞤎' => '𞤰',
+ '𞤏' => '𞤱',
+ '𞤐' => '𞤲',
+ '𞤑' => '𞤳',
+ '𞤒' => '𞤴',
+ '𞤓' => '𞤵',
+ '𞤔' => '𞤶',
+ '𞤕' => '𞤷',
+ '𞤖' => '𞤸',
+ '𞤗' => '𞤹',
+ '𞤘' => '𞤺',
+ '𞤙' => '𞤻',
+ '𞤚' => '𞤼',
+ '𞤛' => '𞤽',
+ '𞤜' => '𞤾',
+ '𞤝' => '𞤿',
+ '𞤞' => '𞥀',
+ '𞤟' => '𞥁',
+ '𞤠' => '𞥂',
+ '𞤡' => '𞥃',
+);
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
new file mode 100644
index 000000000..2a8f6e73b
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
@@ -0,0 +1,5 @@
+<?php
+
+// from Case_Ignorable in https://unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
+
+return '/(?<![\x{0027}\x{002E}\x{003A}\x{005E}\x{0060}\x{00A8}\x{00AD}\x{00AF}\x{00B4}\x{00B7}\x{00B8}\x{02B0}-\x{02C1}\x{02C2}-\x{02C5}\x{02C6}-\x{02D1}\x{02D2}-\x{02DF}\x{02E0}-\x{02E4}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EE}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037A}\x{0384}-\x{0385}\x{0387}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0559}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{05F4}\x{0600}-\x{0605}\x{0610}-\x{061A}\x{061C}\x{0640}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DD}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07FA}\x{07FD}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0971}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E46}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EB9}\x{0EBB}-\x{0EBC}\x{0EC6}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{10FC}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17D7}\x{17DD}\x{180B}-\x{180D}\x{180E}\x{1843}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AA7}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1C78}-\x{1C7D}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1D2C}-\x{1D6A}\x{1D78}\x{1D9B}-\x{1DBF}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{200B}-\x{200F}\x{2018}\x{2019}\x{2024}\x{2027}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{2066}-\x{206F}\x{2071}\x{207F}\x{2090}-\x{209C}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2C7C}-\x{2C7D}\x{2CEF}-\x{2CF1}\x{2D6F}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E2F}\x{3005}\x{302A}-\x{302D}\x{3031}-\x{3035}\x{303B}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{309D}-\x{309E}\x{30FC}-\x{30FE}\x{A015}\x{A4F8}-\x{A4FD}\x{A60C}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A67F}\x{A69C}-\x{A69D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A770}\x{A788}\x{A789}-\x{A78A}\x{A7F8}-\x{A7F9}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}\x{A9CF}\x{A9E5}\x{A9E6}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA70}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AADD}\x{AAEC}-\x{AAED}\x{AAF3}-\x{AAF4}\x{AAF6}\x{AB5B}\x{AB5C}-\x{AB5F}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FBB2}-\x{FBC1}\x{FE00}-\x{FE0F}\x{FE13}\x{FE20}-\x{FE2F}\x{FE52}\x{FE55}\x{FEFF}\x{FF07}\x{FF0E}\x{FF1A}\x{FF3E}\x{FF40}\x{FF70}\x{FF9E}-\x{FF9F}\x{FFE3}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{110BD}\x{110CD}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16B40}-\x{16B43}\x{16F8F}-\x{16F92}\x{16F93}-\x{16F9F}\x{16FE0}-\x{16FE1}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1F3FB}-\x{1F3FF}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}])(\pL)(\pL*+)/u';
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
new file mode 100644
index 000000000..56b9cb852
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
@@ -0,0 +1,1489 @@
+<?php
+
+return array (
+ 'a' => 'A',
+ 'b' => 'B',
+ 'c' => 'C',
+ 'd' => 'D',
+ 'e' => 'E',
+ 'f' => 'F',
+ 'g' => 'G',
+ 'h' => 'H',
+ 'i' => 'I',
+ 'j' => 'J',
+ 'k' => 'K',
+ 'l' => 'L',
+ 'm' => 'M',
+ 'n' => 'N',
+ 'o' => 'O',
+ 'p' => 'P',
+ 'q' => 'Q',
+ 'r' => 'R',
+ 's' => 'S',
+ 't' => 'T',
+ 'u' => 'U',
+ 'v' => 'V',
+ 'w' => 'W',
+ 'x' => 'X',
+ 'y' => 'Y',
+ 'z' => 'Z',
+ 'µ' => 'Μ',
+ 'à' => 'À',
+ 'á' => 'Á',
+ 'â' => 'Â',
+ 'ã' => 'Ã',
+ 'ä' => 'Ä',
+ 'å' => 'Å',
+ 'æ' => 'Æ',
+ 'ç' => 'Ç',
+ 'è' => 'È',
+ 'é' => 'É',
+ 'ê' => 'Ê',
+ 'ë' => 'Ë',
+ 'ì' => 'Ì',
+ 'í' => 'Í',
+ 'î' => 'Î',
+ 'ï' => 'Ï',
+ 'ð' => 'Ð',
+ 'ñ' => 'Ñ',
+ 'ò' => 'Ò',
+ 'ó' => 'Ó',
+ 'ô' => 'Ô',
+ 'õ' => 'Õ',
+ 'ö' => 'Ö',
+ 'ø' => 'Ø',
+ 'ù' => 'Ù',
+ 'ú' => 'Ú',
+ 'û' => 'Û',
+ 'ü' => 'Ü',
+ 'ý' => 'Ý',
+ 'þ' => 'Þ',
+ 'ÿ' => 'Ÿ',
+ 'ā' => 'Ā',
+ 'ă' => 'Ă',
+ 'ą' => 'Ą',
+ 'ć' => 'Ć',
+ 'ĉ' => 'Ĉ',
+ 'ċ' => 'Ċ',
+ 'č' => 'Č',
+ 'ď' => 'Ď',
+ 'đ' => 'Đ',
+ 'ē' => 'Ē',
+ 'ĕ' => 'Ĕ',
+ 'ė' => 'Ė',
+ 'ę' => 'Ę',
+ 'ě' => 'Ě',
+ 'ĝ' => 'Ĝ',
+ 'ğ' => 'Ğ',
+ 'ġ' => 'Ġ',
+ 'ģ' => 'Ģ',
+ 'ĥ' => 'Ĥ',
+ 'ħ' => 'Ħ',
+ 'ĩ' => 'Ĩ',
+ 'ī' => 'Ī',
+ 'ĭ' => 'Ĭ',
+ 'į' => 'Į',
+ 'ı' => 'I',
+ 'ij' => 'IJ',
+ 'ĵ' => 'Ĵ',
+ 'ķ' => 'Ķ',
+ 'ĺ' => 'Ĺ',
+ 'ļ' => 'Ļ',
+ 'ľ' => 'Ľ',
+ 'ŀ' => 'Ŀ',
+ 'ł' => 'Ł',
+ 'ń' => 'Ń',
+ 'ņ' => 'Ņ',
+ 'ň' => 'Ň',
+ 'ŋ' => 'Ŋ',
+ 'ō' => 'Ō',
+ 'ŏ' => 'Ŏ',
+ 'ő' => 'Ő',
+ 'œ' => 'Œ',
+ 'ŕ' => 'Ŕ',
+ 'ŗ' => 'Ŗ',
+ 'ř' => 'Ř',
+ 'ś' => 'Ś',
+ 'ŝ' => 'Ŝ',
+ 'ş' => 'Ş',
+ 'š' => 'Š',
+ 'ţ' => 'Ţ',
+ 'ť' => 'Ť',
+ 'ŧ' => 'Ŧ',
+ 'ũ' => 'Ũ',
+ 'ū' => 'Ū',
+ 'ŭ' => 'Ŭ',
+ 'ů' => 'Ů',
+ 'ű' => 'Ű',
+ 'ų' => 'Ų',
+ 'ŵ' => 'Ŵ',
+ 'ŷ' => 'Ŷ',
+ 'ź' => 'Ź',
+ 'ż' => 'Ż',
+ 'ž' => 'Ž',
+ 'ſ' => 'S',
+ 'ƀ' => 'Ƀ',
+ 'ƃ' => 'Ƃ',
+ 'ƅ' => 'Ƅ',
+ 'ƈ' => 'Ƈ',
+ 'ƌ' => 'Ƌ',
+ 'ƒ' => 'Ƒ',
+ 'ƕ' => 'Ƕ',
+ 'ƙ' => 'Ƙ',
+ 'ƚ' => 'Ƚ',
+ 'ƞ' => 'Ƞ',
+ 'ơ' => 'Ơ',
+ 'ƣ' => 'Ƣ',
+ 'ƥ' => 'Ƥ',
+ 'ƨ' => 'Ƨ',
+ 'ƭ' => 'Ƭ',
+ 'ư' => 'Ư',
+ 'ƴ' => 'Ƴ',
+ 'ƶ' => 'Ƶ',
+ 'ƹ' => 'Ƹ',
+ 'ƽ' => 'Ƽ',
+ 'ƿ' => 'Ƿ',
+ 'Dž' => 'DŽ',
+ 'dž' => 'DŽ',
+ 'Lj' => 'LJ',
+ 'lj' => 'LJ',
+ 'Nj' => 'NJ',
+ 'nj' => 'NJ',
+ 'ǎ' => 'Ǎ',
+ 'ǐ' => 'Ǐ',
+ 'ǒ' => 'Ǒ',
+ 'ǔ' => 'Ǔ',
+ 'ǖ' => 'Ǖ',
+ 'ǘ' => 'Ǘ',
+ 'ǚ' => 'Ǚ',
+ 'ǜ' => 'Ǜ',
+ 'ǝ' => 'Ǝ',
+ 'ǟ' => 'Ǟ',
+ 'ǡ' => 'Ǡ',
+ 'ǣ' => 'Ǣ',
+ 'ǥ' => 'Ǥ',
+ 'ǧ' => 'Ǧ',
+ 'ǩ' => 'Ǩ',
+ 'ǫ' => 'Ǫ',
+ 'ǭ' => 'Ǭ',
+ 'ǯ' => 'Ǯ',
+ 'Dz' => 'DZ',
+ 'dz' => 'DZ',
+ 'ǵ' => 'Ǵ',
+ 'ǹ' => 'Ǹ',
+ 'ǻ' => 'Ǻ',
+ 'ǽ' => 'Ǽ',
+ 'ǿ' => 'Ǿ',
+ 'ȁ' => 'Ȁ',
+ 'ȃ' => 'Ȃ',
+ 'ȅ' => 'Ȅ',
+ 'ȇ' => 'Ȇ',
+ 'ȉ' => 'Ȉ',
+ 'ȋ' => 'Ȋ',
+ 'ȍ' => 'Ȍ',
+ 'ȏ' => 'Ȏ',
+ 'ȑ' => 'Ȑ',
+ 'ȓ' => 'Ȓ',
+ 'ȕ' => 'Ȕ',
+ 'ȗ' => 'Ȗ',
+ 'ș' => 'Ș',
+ 'ț' => 'Ț',
+ 'ȝ' => 'Ȝ',
+ 'ȟ' => 'Ȟ',
+ 'ȣ' => 'Ȣ',
+ 'ȥ' => 'Ȥ',
+ 'ȧ' => 'Ȧ',
+ 'ȩ' => 'Ȩ',
+ 'ȫ' => 'Ȫ',
+ 'ȭ' => 'Ȭ',
+ 'ȯ' => 'Ȯ',
+ 'ȱ' => 'Ȱ',
+ 'ȳ' => 'Ȳ',
+ 'ȼ' => 'Ȼ',
+ 'ȿ' => 'Ȿ',
+ 'ɀ' => 'Ɀ',
+ 'ɂ' => 'Ɂ',
+ 'ɇ' => 'Ɇ',
+ 'ɉ' => 'Ɉ',
+ 'ɋ' => 'Ɋ',
+ 'ɍ' => 'Ɍ',
+ 'ɏ' => 'Ɏ',
+ 'ɐ' => 'Ɐ',
+ 'ɑ' => 'Ɑ',
+ 'ɒ' => 'Ɒ',
+ 'ɓ' => 'Ɓ',
+ 'ɔ' => 'Ɔ',
+ 'ɖ' => 'Ɖ',
+ 'ɗ' => 'Ɗ',
+ 'ə' => 'Ə',
+ 'ɛ' => 'Ɛ',
+ 'ɜ' => 'Ɜ',
+ 'ɠ' => 'Ɠ',
+ 'ɡ' => 'Ɡ',
+ 'ɣ' => 'Ɣ',
+ 'ɥ' => 'Ɥ',
+ 'ɦ' => 'Ɦ',
+ 'ɨ' => 'Ɨ',
+ 'ɩ' => 'Ɩ',
+ 'ɪ' => 'Ɪ',
+ 'ɫ' => 'Ɫ',
+ 'ɬ' => 'Ɬ',
+ 'ɯ' => 'Ɯ',
+ 'ɱ' => 'Ɱ',
+ 'ɲ' => 'Ɲ',
+ 'ɵ' => 'Ɵ',
+ 'ɽ' => 'Ɽ',
+ 'ʀ' => 'Ʀ',
+ 'ʂ' => 'Ʂ',
+ 'ʃ' => 'Ʃ',
+ 'ʇ' => 'Ʇ',
+ 'ʈ' => 'Ʈ',
+ 'ʉ' => 'Ʉ',
+ 'ʊ' => 'Ʊ',
+ 'ʋ' => 'Ʋ',
+ 'ʌ' => 'Ʌ',
+ 'ʒ' => 'Ʒ',
+ 'ʝ' => 'Ʝ',
+ 'ʞ' => 'Ʞ',
+ 'ͅ' => 'Ι',
+ 'ͱ' => 'Ͱ',
+ 'ͳ' => 'Ͳ',
+ 'ͷ' => 'Ͷ',
+ 'ͻ' => 'Ͻ',
+ 'ͼ' => 'Ͼ',
+ 'ͽ' => 'Ͽ',
+ 'ά' => 'Ά',
+ 'έ' => 'Έ',
+ 'ή' => 'Ή',
+ 'ί' => 'Ί',
+ 'α' => 'Α',
+ 'β' => 'Β',
+ 'γ' => 'Γ',
+ 'δ' => 'Δ',
+ 'ε' => 'Ε',
+ 'ζ' => 'Ζ',
+ 'η' => 'Η',
+ 'θ' => 'Θ',
+ 'ι' => 'Ι',
+ 'κ' => 'Κ',
+ 'λ' => 'Λ',
+ 'μ' => 'Μ',
+ 'ν' => 'Ν',
+ 'ξ' => 'Ξ',
+ 'ο' => 'Ο',
+ 'π' => 'Π',
+ 'ρ' => 'Ρ',
+ 'ς' => 'Σ',
+ 'σ' => 'Σ',
+ 'τ' => 'Τ',
+ 'υ' => 'Υ',
+ 'φ' => 'Φ',
+ 'χ' => 'Χ',
+ 'ψ' => 'Ψ',
+ 'ω' => 'Ω',
+ 'ϊ' => 'Ϊ',
+ 'ϋ' => 'Ϋ',
+ 'ό' => 'Ό',
+ 'ύ' => 'Ύ',
+ 'ώ' => 'Ώ',
+ 'ϐ' => 'Β',
+ 'ϑ' => 'Θ',
+ 'ϕ' => 'Φ',
+ 'ϖ' => 'Π',
+ 'ϗ' => 'Ϗ',
+ 'ϙ' => 'Ϙ',
+ 'ϛ' => 'Ϛ',
+ 'ϝ' => 'Ϝ',
+ 'ϟ' => 'Ϟ',
+ 'ϡ' => 'Ϡ',
+ 'ϣ' => 'Ϣ',
+ 'ϥ' => 'Ϥ',
+ 'ϧ' => 'Ϧ',
+ 'ϩ' => 'Ϩ',
+ 'ϫ' => 'Ϫ',
+ 'ϭ' => 'Ϭ',
+ 'ϯ' => 'Ϯ',
+ 'ϰ' => 'Κ',
+ 'ϱ' => 'Ρ',
+ 'ϲ' => 'Ϲ',
+ 'ϳ' => 'Ϳ',
+ 'ϵ' => 'Ε',
+ 'ϸ' => 'Ϸ',
+ 'ϻ' => 'Ϻ',
+ 'а' => 'А',
+ 'б' => 'Б',
+ 'в' => 'В',
+ 'г' => 'Г',
+ 'д' => 'Д',
+ 'е' => 'Е',
+ 'ж' => 'Ж',
+ 'з' => 'З',
+ 'и' => 'И',
+ 'й' => 'Й',
+ 'к' => 'К',
+ 'л' => 'Л',
+ 'м' => 'М',
+ 'н' => 'Н',
+ 'о' => 'О',
+ 'п' => 'П',
+ 'р' => 'Р',
+ 'с' => 'С',
+ 'т' => 'Т',
+ 'у' => 'У',
+ 'ф' => 'Ф',
+ 'х' => 'Х',
+ 'ц' => 'Ц',
+ 'ч' => 'Ч',
+ 'ш' => 'Ш',
+ 'щ' => 'Щ',
+ 'ъ' => 'Ъ',
+ 'ы' => 'Ы',
+ 'ь' => 'Ь',
+ 'э' => 'Э',
+ 'ю' => 'Ю',
+ 'я' => 'Я',
+ 'ѐ' => 'Ѐ',
+ 'ё' => 'Ё',
+ 'ђ' => 'Ђ',
+ 'ѓ' => 'Ѓ',
+ 'є' => 'Є',
+ 'ѕ' => 'Ѕ',
+ 'і' => 'І',
+ 'ї' => 'Ї',
+ 'ј' => 'Ј',
+ 'љ' => 'Љ',
+ 'њ' => 'Њ',
+ 'ћ' => 'Ћ',
+ 'ќ' => 'Ќ',
+ 'ѝ' => 'Ѝ',
+ 'ў' => 'Ў',
+ 'џ' => 'Џ',
+ 'ѡ' => 'Ѡ',
+ 'ѣ' => 'Ѣ',
+ 'ѥ' => 'Ѥ',
+ 'ѧ' => 'Ѧ',
+ 'ѩ' => 'Ѩ',
+ 'ѫ' => 'Ѫ',
+ 'ѭ' => 'Ѭ',
+ 'ѯ' => 'Ѯ',
+ 'ѱ' => 'Ѱ',
+ 'ѳ' => 'Ѳ',
+ 'ѵ' => 'Ѵ',
+ 'ѷ' => 'Ѷ',
+ 'ѹ' => 'Ѹ',
+ 'ѻ' => 'Ѻ',
+ 'ѽ' => 'Ѽ',
+ 'ѿ' => 'Ѿ',
+ 'ҁ' => 'Ҁ',
+ 'ҋ' => 'Ҋ',
+ 'ҍ' => 'Ҍ',
+ 'ҏ' => 'Ҏ',
+ 'ґ' => 'Ґ',
+ 'ғ' => 'Ғ',
+ 'ҕ' => 'Ҕ',
+ 'җ' => 'Җ',
+ 'ҙ' => 'Ҙ',
+ 'қ' => 'Қ',
+ 'ҝ' => 'Ҝ',
+ 'ҟ' => 'Ҟ',
+ 'ҡ' => 'Ҡ',
+ 'ң' => 'Ң',
+ 'ҥ' => 'Ҥ',
+ 'ҧ' => 'Ҧ',
+ 'ҩ' => 'Ҩ',
+ 'ҫ' => 'Ҫ',
+ 'ҭ' => 'Ҭ',
+ 'ү' => 'Ү',
+ 'ұ' => 'Ұ',
+ 'ҳ' => 'Ҳ',
+ 'ҵ' => 'Ҵ',
+ 'ҷ' => 'Ҷ',
+ 'ҹ' => 'Ҹ',
+ 'һ' => 'Һ',
+ 'ҽ' => 'Ҽ',
+ 'ҿ' => 'Ҿ',
+ 'ӂ' => 'Ӂ',
+ 'ӄ' => 'Ӄ',
+ 'ӆ' => 'Ӆ',
+ 'ӈ' => 'Ӈ',
+ 'ӊ' => 'Ӊ',
+ 'ӌ' => 'Ӌ',
+ 'ӎ' => 'Ӎ',
+ 'ӏ' => 'Ӏ',
+ 'ӑ' => 'Ӑ',
+ 'ӓ' => 'Ӓ',
+ 'ӕ' => 'Ӕ',
+ 'ӗ' => 'Ӗ',
+ 'ә' => 'Ә',
+ 'ӛ' => 'Ӛ',
+ 'ӝ' => 'Ӝ',
+ 'ӟ' => 'Ӟ',
+ 'ӡ' => 'Ӡ',
+ 'ӣ' => 'Ӣ',
+ 'ӥ' => 'Ӥ',
+ 'ӧ' => 'Ӧ',
+ 'ө' => 'Ө',
+ 'ӫ' => 'Ӫ',
+ 'ӭ' => 'Ӭ',
+ 'ӯ' => 'Ӯ',
+ 'ӱ' => 'Ӱ',
+ 'ӳ' => 'Ӳ',
+ 'ӵ' => 'Ӵ',
+ 'ӷ' => 'Ӷ',
+ 'ӹ' => 'Ӹ',
+ 'ӻ' => 'Ӻ',
+ 'ӽ' => 'Ӽ',
+ 'ӿ' => 'Ӿ',
+ 'ԁ' => 'Ԁ',
+ 'ԃ' => 'Ԃ',
+ 'ԅ' => 'Ԅ',
+ 'ԇ' => 'Ԇ',
+ 'ԉ' => 'Ԉ',
+ 'ԋ' => 'Ԋ',
+ 'ԍ' => 'Ԍ',
+ 'ԏ' => 'Ԏ',
+ 'ԑ' => 'Ԑ',
+ 'ԓ' => 'Ԓ',
+ 'ԕ' => 'Ԕ',
+ 'ԗ' => 'Ԗ',
+ 'ԙ' => 'Ԙ',
+ 'ԛ' => 'Ԛ',
+ 'ԝ' => 'Ԝ',
+ 'ԟ' => 'Ԟ',
+ 'ԡ' => 'Ԡ',
+ 'ԣ' => 'Ԣ',
+ 'ԥ' => 'Ԥ',
+ 'ԧ' => 'Ԧ',
+ 'ԩ' => 'Ԩ',
+ 'ԫ' => 'Ԫ',
+ 'ԭ' => 'Ԭ',
+ 'ԯ' => 'Ԯ',
+ 'ա' => 'Ա',
+ 'բ' => 'Բ',
+ 'գ' => 'Գ',
+ 'դ' => 'Դ',
+ 'ե' => 'Ե',
+ 'զ' => 'Զ',
+ 'է' => 'Է',
+ 'ը' => 'Ը',
+ 'թ' => 'Թ',
+ 'ժ' => 'Ժ',
+ 'ի' => 'Ի',
+ 'լ' => 'Լ',
+ 'խ' => 'Խ',
+ 'ծ' => 'Ծ',
+ 'կ' => 'Կ',
+ 'հ' => 'Հ',
+ 'ձ' => 'Ձ',
+ 'ղ' => 'Ղ',
+ 'ճ' => 'Ճ',
+ 'մ' => 'Մ',
+ 'յ' => 'Յ',
+ 'ն' => 'Ն',
+ 'շ' => 'Շ',
+ 'ո' => 'Ո',
+ 'չ' => 'Չ',
+ 'պ' => 'Պ',
+ 'ջ' => 'Ջ',
+ 'ռ' => 'Ռ',
+ 'ս' => 'Ս',
+ 'վ' => 'Վ',
+ 'տ' => 'Տ',
+ 'ր' => 'Ր',
+ 'ց' => 'Ց',
+ 'ւ' => 'Ւ',
+ 'փ' => 'Փ',
+ 'ք' => 'Ք',
+ 'օ' => 'Օ',
+ 'ֆ' => 'Ֆ',
+ 'ა' => 'Ა',
+ 'ბ' => 'Ბ',
+ 'გ' => 'Გ',
+ 'დ' => 'Დ',
+ 'ე' => 'Ე',
+ 'ვ' => 'Ვ',
+ 'ზ' => 'Ზ',
+ 'თ' => 'Თ',
+ 'ი' => 'Ი',
+ 'კ' => 'Კ',
+ 'ლ' => 'Ლ',
+ 'მ' => 'Მ',
+ 'ნ' => 'Ნ',
+ 'ო' => 'Ო',
+ 'პ' => 'Პ',
+ 'ჟ' => 'Ჟ',
+ 'რ' => 'Რ',
+ 'ს' => 'Ს',
+ 'ტ' => 'Ტ',
+ 'უ' => 'Უ',
+ 'ფ' => 'Ფ',
+ 'ქ' => 'Ქ',
+ 'ღ' => 'Ღ',
+ 'ყ' => 'Ყ',
+ 'შ' => 'Შ',
+ 'ჩ' => 'Ჩ',
+ 'ც' => 'Ც',
+ 'ძ' => 'Ძ',
+ 'წ' => 'Წ',
+ 'ჭ' => 'Ჭ',
+ 'ხ' => 'Ხ',
+ 'ჯ' => 'Ჯ',
+ 'ჰ' => 'Ჰ',
+ 'ჱ' => 'Ჱ',
+ 'ჲ' => 'Ჲ',
+ 'ჳ' => 'Ჳ',
+ 'ჴ' => 'Ჴ',
+ 'ჵ' => 'Ჵ',
+ 'ჶ' => 'Ჶ',
+ 'ჷ' => 'Ჷ',
+ 'ჸ' => 'Ჸ',
+ 'ჹ' => 'Ჹ',
+ 'ჺ' => 'Ჺ',
+ 'ჽ' => 'Ჽ',
+ 'ჾ' => 'Ჾ',
+ 'ჿ' => 'Ჿ',
+ 'ᏸ' => 'Ᏸ',
+ 'ᏹ' => 'Ᏹ',
+ 'ᏺ' => 'Ᏺ',
+ 'ᏻ' => 'Ᏻ',
+ 'ᏼ' => 'Ᏼ',
+ 'ᏽ' => 'Ᏽ',
+ 'ᲀ' => 'В',
+ 'ᲁ' => 'Д',
+ 'ᲂ' => 'О',
+ 'ᲃ' => 'С',
+ 'ᲄ' => 'Т',
+ 'ᲅ' => 'Т',
+ 'ᲆ' => 'Ъ',
+ 'ᲇ' => 'Ѣ',
+ 'ᲈ' => 'Ꙋ',
+ 'ᵹ' => 'Ᵹ',
+ 'ᵽ' => 'Ᵽ',
+ 'ᶎ' => 'Ᶎ',
+ 'ḁ' => 'Ḁ',
+ 'ḃ' => 'Ḃ',
+ 'ḅ' => 'Ḅ',
+ 'ḇ' => 'Ḇ',
+ 'ḉ' => 'Ḉ',
+ 'ḋ' => 'Ḋ',
+ 'ḍ' => 'Ḍ',
+ 'ḏ' => 'Ḏ',
+ 'ḑ' => 'Ḑ',
+ 'ḓ' => 'Ḓ',
+ 'ḕ' => 'Ḕ',
+ 'ḗ' => 'Ḗ',
+ 'ḙ' => 'Ḙ',
+ 'ḛ' => 'Ḛ',
+ 'ḝ' => 'Ḝ',
+ 'ḟ' => 'Ḟ',
+ 'ḡ' => 'Ḡ',
+ 'ḣ' => 'Ḣ',
+ 'ḥ' => 'Ḥ',
+ 'ḧ' => 'Ḧ',
+ 'ḩ' => 'Ḩ',
+ 'ḫ' => 'Ḫ',
+ 'ḭ' => 'Ḭ',
+ 'ḯ' => 'Ḯ',
+ 'ḱ' => 'Ḱ',
+ 'ḳ' => 'Ḳ',
+ 'ḵ' => 'Ḵ',
+ 'ḷ' => 'Ḷ',
+ 'ḹ' => 'Ḹ',
+ 'ḻ' => 'Ḻ',
+ 'ḽ' => 'Ḽ',
+ 'ḿ' => 'Ḿ',
+ 'ṁ' => 'Ṁ',
+ 'ṃ' => 'Ṃ',
+ 'ṅ' => 'Ṅ',
+ 'ṇ' => 'Ṇ',
+ 'ṉ' => 'Ṉ',
+ 'ṋ' => 'Ṋ',
+ 'ṍ' => 'Ṍ',
+ 'ṏ' => 'Ṏ',
+ 'ṑ' => 'Ṑ',
+ 'ṓ' => 'Ṓ',
+ 'ṕ' => 'Ṕ',
+ 'ṗ' => 'Ṗ',
+ 'ṙ' => 'Ṙ',
+ 'ṛ' => 'Ṛ',
+ 'ṝ' => 'Ṝ',
+ 'ṟ' => 'Ṟ',
+ 'ṡ' => 'Ṡ',
+ 'ṣ' => 'Ṣ',
+ 'ṥ' => 'Ṥ',
+ 'ṧ' => 'Ṧ',
+ 'ṩ' => 'Ṩ',
+ 'ṫ' => 'Ṫ',
+ 'ṭ' => 'Ṭ',
+ 'ṯ' => 'Ṯ',
+ 'ṱ' => 'Ṱ',
+ 'ṳ' => 'Ṳ',
+ 'ṵ' => 'Ṵ',
+ 'ṷ' => 'Ṷ',
+ 'ṹ' => 'Ṹ',
+ 'ṻ' => 'Ṻ',
+ 'ṽ' => 'Ṽ',
+ 'ṿ' => 'Ṿ',
+ 'ẁ' => 'Ẁ',
+ 'ẃ' => 'Ẃ',
+ 'ẅ' => 'Ẅ',
+ 'ẇ' => 'Ẇ',
+ 'ẉ' => 'Ẉ',
+ 'ẋ' => 'Ẋ',
+ 'ẍ' => 'Ẍ',
+ 'ẏ' => 'Ẏ',
+ 'ẑ' => 'Ẑ',
+ 'ẓ' => 'Ẓ',
+ 'ẕ' => 'Ẕ',
+ 'ẛ' => 'Ṡ',
+ 'ạ' => 'Ạ',
+ 'ả' => 'Ả',
+ 'ấ' => 'Ấ',
+ 'ầ' => 'Ầ',
+ 'ẩ' => 'Ẩ',
+ 'ẫ' => 'Ẫ',
+ 'ậ' => 'Ậ',
+ 'ắ' => 'Ắ',
+ 'ằ' => 'Ằ',
+ 'ẳ' => 'Ẳ',
+ 'ẵ' => 'Ẵ',
+ 'ặ' => 'Ặ',
+ 'ẹ' => 'Ẹ',
+ 'ẻ' => 'Ẻ',
+ 'ẽ' => 'Ẽ',
+ 'ế' => 'Ế',
+ 'ề' => 'Ề',
+ 'ể' => 'Ể',
+ 'ễ' => 'Ễ',
+ 'ệ' => 'Ệ',
+ 'ỉ' => 'Ỉ',
+ 'ị' => 'Ị',
+ 'ọ' => 'Ọ',
+ 'ỏ' => 'Ỏ',
+ 'ố' => 'Ố',
+ 'ồ' => 'Ồ',
+ 'ổ' => 'Ổ',
+ 'ỗ' => 'Ỗ',
+ 'ộ' => 'Ộ',
+ 'ớ' => 'Ớ',
+ 'ờ' => 'Ờ',
+ 'ở' => 'Ở',
+ 'ỡ' => 'Ỡ',
+ 'ợ' => 'Ợ',
+ 'ụ' => 'Ụ',
+ 'ủ' => 'Ủ',
+ 'ứ' => 'Ứ',
+ 'ừ' => 'Ừ',
+ 'ử' => 'Ử',
+ 'ữ' => 'Ữ',
+ 'ự' => 'Ự',
+ 'ỳ' => 'Ỳ',
+ 'ỵ' => 'Ỵ',
+ 'ỷ' => 'Ỷ',
+ 'ỹ' => 'Ỹ',
+ 'ỻ' => 'Ỻ',
+ 'ỽ' => 'Ỽ',
+ 'ỿ' => 'Ỿ',
+ 'ἀ' => 'Ἀ',
+ 'ἁ' => 'Ἁ',
+ 'ἂ' => 'Ἂ',
+ 'ἃ' => 'Ἃ',
+ 'ἄ' => 'Ἄ',
+ 'ἅ' => 'Ἅ',
+ 'ἆ' => 'Ἆ',
+ 'ἇ' => 'Ἇ',
+ 'ἐ' => 'Ἐ',
+ 'ἑ' => 'Ἑ',
+ 'ἒ' => 'Ἒ',
+ 'ἓ' => 'Ἓ',
+ 'ἔ' => 'Ἔ',
+ 'ἕ' => 'Ἕ',
+ 'ἠ' => 'Ἠ',
+ 'ἡ' => 'Ἡ',
+ 'ἢ' => 'Ἢ',
+ 'ἣ' => 'Ἣ',
+ 'ἤ' => 'Ἤ',
+ 'ἥ' => 'Ἥ',
+ 'ἦ' => 'Ἦ',
+ 'ἧ' => 'Ἧ',
+ 'ἰ' => 'Ἰ',
+ 'ἱ' => 'Ἱ',
+ 'ἲ' => 'Ἲ',
+ 'ἳ' => 'Ἳ',
+ 'ἴ' => 'Ἴ',
+ 'ἵ' => 'Ἵ',
+ 'ἶ' => 'Ἶ',
+ 'ἷ' => 'Ἷ',
+ 'ὀ' => 'Ὀ',
+ 'ὁ' => 'Ὁ',
+ 'ὂ' => 'Ὂ',
+ 'ὃ' => 'Ὃ',
+ 'ὄ' => 'Ὄ',
+ 'ὅ' => 'Ὅ',
+ 'ὑ' => 'Ὑ',
+ 'ὓ' => 'Ὓ',
+ 'ὕ' => 'Ὕ',
+ 'ὗ' => 'Ὗ',
+ 'ὠ' => 'Ὠ',
+ 'ὡ' => 'Ὡ',
+ 'ὢ' => 'Ὢ',
+ 'ὣ' => 'Ὣ',
+ 'ὤ' => 'Ὤ',
+ 'ὥ' => 'Ὥ',
+ 'ὦ' => 'Ὦ',
+ 'ὧ' => 'Ὧ',
+ 'ὰ' => 'Ὰ',
+ 'ά' => 'Ά',
+ 'ὲ' => 'Ὲ',
+ 'έ' => 'Έ',
+ 'ὴ' => 'Ὴ',
+ 'ή' => 'Ή',
+ 'ὶ' => 'Ὶ',
+ 'ί' => 'Ί',
+ 'ὸ' => 'Ὸ',
+ 'ό' => 'Ό',
+ 'ὺ' => 'Ὺ',
+ 'ύ' => 'Ύ',
+ 'ὼ' => 'Ὼ',
+ 'ώ' => 'Ώ',
+ 'ᾀ' => 'ἈΙ',
+ 'ᾁ' => 'ἉΙ',
+ 'ᾂ' => 'ἊΙ',
+ 'ᾃ' => 'ἋΙ',
+ 'ᾄ' => 'ἌΙ',
+ 'ᾅ' => 'ἍΙ',
+ 'ᾆ' => 'ἎΙ',
+ 'ᾇ' => 'ἏΙ',
+ 'ᾐ' => 'ἨΙ',
+ 'ᾑ' => 'ἩΙ',
+ 'ᾒ' => 'ἪΙ',
+ 'ᾓ' => 'ἫΙ',
+ 'ᾔ' => 'ἬΙ',
+ 'ᾕ' => 'ἭΙ',
+ 'ᾖ' => 'ἮΙ',
+ 'ᾗ' => 'ἯΙ',
+ 'ᾠ' => 'ὨΙ',
+ 'ᾡ' => 'ὩΙ',
+ 'ᾢ' => 'ὪΙ',
+ 'ᾣ' => 'ὫΙ',
+ 'ᾤ' => 'ὬΙ',
+ 'ᾥ' => 'ὭΙ',
+ 'ᾦ' => 'ὮΙ',
+ 'ᾧ' => 'ὯΙ',
+ 'ᾰ' => 'Ᾰ',
+ 'ᾱ' => 'Ᾱ',
+ 'ᾳ' => 'ΑΙ',
+ 'ι' => 'Ι',
+ 'ῃ' => 'ΗΙ',
+ 'ῐ' => 'Ῐ',
+ 'ῑ' => 'Ῑ',
+ 'ῠ' => 'Ῠ',
+ 'ῡ' => 'Ῡ',
+ 'ῥ' => 'Ῥ',
+ 'ῳ' => 'ΩΙ',
+ 'ⅎ' => 'Ⅎ',
+ 'ⅰ' => 'Ⅰ',
+ 'ⅱ' => 'Ⅱ',
+ 'ⅲ' => 'Ⅲ',
+ 'ⅳ' => 'Ⅳ',
+ 'ⅴ' => 'Ⅴ',
+ 'ⅵ' => 'Ⅵ',
+ 'ⅶ' => 'Ⅶ',
+ 'ⅷ' => 'Ⅷ',
+ 'ⅸ' => 'Ⅸ',
+ 'ⅹ' => 'Ⅹ',
+ 'ⅺ' => 'Ⅺ',
+ 'ⅻ' => 'Ⅻ',
+ 'ⅼ' => 'Ⅼ',
+ 'ⅽ' => 'Ⅽ',
+ 'ⅾ' => 'Ⅾ',
+ 'ⅿ' => 'Ⅿ',
+ 'ↄ' => 'Ↄ',
+ 'ⓐ' => 'Ⓐ',
+ 'ⓑ' => 'Ⓑ',
+ 'ⓒ' => 'Ⓒ',
+ 'ⓓ' => 'Ⓓ',
+ 'ⓔ' => 'Ⓔ',
+ 'ⓕ' => 'Ⓕ',
+ 'ⓖ' => 'Ⓖ',
+ 'ⓗ' => 'Ⓗ',
+ 'ⓘ' => 'Ⓘ',
+ 'ⓙ' => 'Ⓙ',
+ 'ⓚ' => 'Ⓚ',
+ 'ⓛ' => 'Ⓛ',
+ 'ⓜ' => 'Ⓜ',
+ 'ⓝ' => 'Ⓝ',
+ 'ⓞ' => 'Ⓞ',
+ 'ⓟ' => 'Ⓟ',
+ 'ⓠ' => 'Ⓠ',
+ 'ⓡ' => 'Ⓡ',
+ 'ⓢ' => 'Ⓢ',
+ 'ⓣ' => 'Ⓣ',
+ 'ⓤ' => 'Ⓤ',
+ 'ⓥ' => 'Ⓥ',
+ 'ⓦ' => 'Ⓦ',
+ 'ⓧ' => 'Ⓧ',
+ 'ⓨ' => 'Ⓨ',
+ 'ⓩ' => 'Ⓩ',
+ 'ⰰ' => 'Ⰰ',
+ 'ⰱ' => 'Ⰱ',
+ 'ⰲ' => 'Ⰲ',
+ 'ⰳ' => 'Ⰳ',
+ 'ⰴ' => 'Ⰴ',
+ 'ⰵ' => 'Ⰵ',
+ 'ⰶ' => 'Ⰶ',
+ 'ⰷ' => 'Ⰷ',
+ 'ⰸ' => 'Ⰸ',
+ 'ⰹ' => 'Ⰹ',
+ 'ⰺ' => 'Ⰺ',
+ 'ⰻ' => 'Ⰻ',
+ 'ⰼ' => 'Ⰼ',
+ 'ⰽ' => 'Ⰽ',
+ 'ⰾ' => 'Ⰾ',
+ 'ⰿ' => 'Ⰿ',
+ 'ⱀ' => 'Ⱀ',
+ 'ⱁ' => 'Ⱁ',
+ 'ⱂ' => 'Ⱂ',
+ 'ⱃ' => 'Ⱃ',
+ 'ⱄ' => 'Ⱄ',
+ 'ⱅ' => 'Ⱅ',
+ 'ⱆ' => 'Ⱆ',
+ 'ⱇ' => 'Ⱇ',
+ 'ⱈ' => 'Ⱈ',
+ 'ⱉ' => 'Ⱉ',
+ 'ⱊ' => 'Ⱊ',
+ 'ⱋ' => 'Ⱋ',
+ 'ⱌ' => 'Ⱌ',
+ 'ⱍ' => 'Ⱍ',
+ 'ⱎ' => 'Ⱎ',
+ 'ⱏ' => 'Ⱏ',
+ 'ⱐ' => 'Ⱐ',
+ 'ⱑ' => 'Ⱑ',
+ 'ⱒ' => 'Ⱒ',
+ 'ⱓ' => 'Ⱓ',
+ 'ⱔ' => 'Ⱔ',
+ 'ⱕ' => 'Ⱕ',
+ 'ⱖ' => 'Ⱖ',
+ 'ⱗ' => 'Ⱗ',
+ 'ⱘ' => 'Ⱘ',
+ 'ⱙ' => 'Ⱙ',
+ 'ⱚ' => 'Ⱚ',
+ 'ⱛ' => 'Ⱛ',
+ 'ⱜ' => 'Ⱜ',
+ 'ⱝ' => 'Ⱝ',
+ 'ⱞ' => 'Ⱞ',
+ 'ⱡ' => 'Ⱡ',
+ 'ⱥ' => 'Ⱥ',
+ 'ⱦ' => 'Ⱦ',
+ 'ⱨ' => 'Ⱨ',
+ 'ⱪ' => 'Ⱪ',
+ 'ⱬ' => 'Ⱬ',
+ 'ⱳ' => 'Ⱳ',
+ 'ⱶ' => 'Ⱶ',
+ 'ⲁ' => 'Ⲁ',
+ 'ⲃ' => 'Ⲃ',
+ 'ⲅ' => 'Ⲅ',
+ 'ⲇ' => 'Ⲇ',
+ 'ⲉ' => 'Ⲉ',
+ 'ⲋ' => 'Ⲋ',
+ 'ⲍ' => 'Ⲍ',
+ 'ⲏ' => 'Ⲏ',
+ 'ⲑ' => 'Ⲑ',
+ 'ⲓ' => 'Ⲓ',
+ 'ⲕ' => 'Ⲕ',
+ 'ⲗ' => 'Ⲗ',
+ 'ⲙ' => 'Ⲙ',
+ 'ⲛ' => 'Ⲛ',
+ 'ⲝ' => 'Ⲝ',
+ 'ⲟ' => 'Ⲟ',
+ 'ⲡ' => 'Ⲡ',
+ 'ⲣ' => 'Ⲣ',
+ 'ⲥ' => 'Ⲥ',
+ 'ⲧ' => 'Ⲧ',
+ 'ⲩ' => 'Ⲩ',
+ 'ⲫ' => 'Ⲫ',
+ 'ⲭ' => 'Ⲭ',
+ 'ⲯ' => 'Ⲯ',
+ 'ⲱ' => 'Ⲱ',
+ 'ⲳ' => 'Ⲳ',
+ 'ⲵ' => 'Ⲵ',
+ 'ⲷ' => 'Ⲷ',
+ 'ⲹ' => 'Ⲹ',
+ 'ⲻ' => 'Ⲻ',
+ 'ⲽ' => 'Ⲽ',
+ 'ⲿ' => 'Ⲿ',
+ 'ⳁ' => 'Ⳁ',
+ 'ⳃ' => 'Ⳃ',
+ 'ⳅ' => 'Ⳅ',
+ 'ⳇ' => 'Ⳇ',
+ 'ⳉ' => 'Ⳉ',
+ 'ⳋ' => 'Ⳋ',
+ 'ⳍ' => 'Ⳍ',
+ 'ⳏ' => 'Ⳏ',
+ 'ⳑ' => 'Ⳑ',
+ 'ⳓ' => 'Ⳓ',
+ 'ⳕ' => 'Ⳕ',
+ 'ⳗ' => 'Ⳗ',
+ 'ⳙ' => 'Ⳙ',
+ 'ⳛ' => 'Ⳛ',
+ 'ⳝ' => 'Ⳝ',
+ 'ⳟ' => 'Ⳟ',
+ 'ⳡ' => 'Ⳡ',
+ 'ⳣ' => 'Ⳣ',
+ 'ⳬ' => 'Ⳬ',
+ 'ⳮ' => 'Ⳮ',
+ 'ⳳ' => 'Ⳳ',
+ 'ⴀ' => 'Ⴀ',
+ 'ⴁ' => 'Ⴁ',
+ 'ⴂ' => 'Ⴂ',
+ 'ⴃ' => 'Ⴃ',
+ 'ⴄ' => 'Ⴄ',
+ 'ⴅ' => 'Ⴅ',
+ 'ⴆ' => 'Ⴆ',
+ 'ⴇ' => 'Ⴇ',
+ 'ⴈ' => 'Ⴈ',
+ 'ⴉ' => 'Ⴉ',
+ 'ⴊ' => 'Ⴊ',
+ 'ⴋ' => 'Ⴋ',
+ 'ⴌ' => 'Ⴌ',
+ 'ⴍ' => 'Ⴍ',
+ 'ⴎ' => 'Ⴎ',
+ 'ⴏ' => 'Ⴏ',
+ 'ⴐ' => 'Ⴐ',
+ 'ⴑ' => 'Ⴑ',
+ 'ⴒ' => 'Ⴒ',
+ 'ⴓ' => 'Ⴓ',
+ 'ⴔ' => 'Ⴔ',
+ 'ⴕ' => 'Ⴕ',
+ 'ⴖ' => 'Ⴖ',
+ 'ⴗ' => 'Ⴗ',
+ 'ⴘ' => 'Ⴘ',
+ 'ⴙ' => 'Ⴙ',
+ 'ⴚ' => 'Ⴚ',
+ 'ⴛ' => 'Ⴛ',
+ 'ⴜ' => 'Ⴜ',
+ 'ⴝ' => 'Ⴝ',
+ 'ⴞ' => 'Ⴞ',
+ 'ⴟ' => 'Ⴟ',
+ 'ⴠ' => 'Ⴠ',
+ 'ⴡ' => 'Ⴡ',
+ 'ⴢ' => 'Ⴢ',
+ 'ⴣ' => 'Ⴣ',
+ 'ⴤ' => 'Ⴤ',
+ 'ⴥ' => 'Ⴥ',
+ 'ⴧ' => 'Ⴧ',
+ 'ⴭ' => 'Ⴭ',
+ 'ꙁ' => 'Ꙁ',
+ 'ꙃ' => 'Ꙃ',
+ 'ꙅ' => 'Ꙅ',
+ 'ꙇ' => 'Ꙇ',
+ 'ꙉ' => 'Ꙉ',
+ 'ꙋ' => 'Ꙋ',
+ 'ꙍ' => 'Ꙍ',
+ 'ꙏ' => 'Ꙏ',
+ 'ꙑ' => 'Ꙑ',
+ 'ꙓ' => 'Ꙓ',
+ 'ꙕ' => 'Ꙕ',
+ 'ꙗ' => 'Ꙗ',
+ 'ꙙ' => 'Ꙙ',
+ 'ꙛ' => 'Ꙛ',
+ 'ꙝ' => 'Ꙝ',
+ 'ꙟ' => 'Ꙟ',
+ 'ꙡ' => 'Ꙡ',
+ 'ꙣ' => 'Ꙣ',
+ 'ꙥ' => 'Ꙥ',
+ 'ꙧ' => 'Ꙧ',
+ 'ꙩ' => 'Ꙩ',
+ 'ꙫ' => 'Ꙫ',
+ 'ꙭ' => 'Ꙭ',
+ 'ꚁ' => 'Ꚁ',
+ 'ꚃ' => 'Ꚃ',
+ 'ꚅ' => 'Ꚅ',
+ 'ꚇ' => 'Ꚇ',
+ 'ꚉ' => 'Ꚉ',
+ 'ꚋ' => 'Ꚋ',
+ 'ꚍ' => 'Ꚍ',
+ 'ꚏ' => 'Ꚏ',
+ 'ꚑ' => 'Ꚑ',
+ 'ꚓ' => 'Ꚓ',
+ 'ꚕ' => 'Ꚕ',
+ 'ꚗ' => 'Ꚗ',
+ 'ꚙ' => 'Ꚙ',
+ 'ꚛ' => 'Ꚛ',
+ 'ꜣ' => 'Ꜣ',
+ 'ꜥ' => 'Ꜥ',
+ 'ꜧ' => 'Ꜧ',
+ 'ꜩ' => 'Ꜩ',
+ 'ꜫ' => 'Ꜫ',
+ 'ꜭ' => 'Ꜭ',
+ 'ꜯ' => 'Ꜯ',
+ 'ꜳ' => 'Ꜳ',
+ 'ꜵ' => 'Ꜵ',
+ 'ꜷ' => 'Ꜷ',
+ 'ꜹ' => 'Ꜹ',
+ 'ꜻ' => 'Ꜻ',
+ 'ꜽ' => 'Ꜽ',
+ 'ꜿ' => 'Ꜿ',
+ 'ꝁ' => 'Ꝁ',
+ 'ꝃ' => 'Ꝃ',
+ 'ꝅ' => 'Ꝅ',
+ 'ꝇ' => 'Ꝇ',
+ 'ꝉ' => 'Ꝉ',
+ 'ꝋ' => 'Ꝋ',
+ 'ꝍ' => 'Ꝍ',
+ 'ꝏ' => 'Ꝏ',
+ 'ꝑ' => 'Ꝑ',
+ 'ꝓ' => 'Ꝓ',
+ 'ꝕ' => 'Ꝕ',
+ 'ꝗ' => 'Ꝗ',
+ 'ꝙ' => 'Ꝙ',
+ 'ꝛ' => 'Ꝛ',
+ 'ꝝ' => 'Ꝝ',
+ 'ꝟ' => 'Ꝟ',
+ 'ꝡ' => 'Ꝡ',
+ 'ꝣ' => 'Ꝣ',
+ 'ꝥ' => 'Ꝥ',
+ 'ꝧ' => 'Ꝧ',
+ 'ꝩ' => 'Ꝩ',
+ 'ꝫ' => 'Ꝫ',
+ 'ꝭ' => 'Ꝭ',
+ 'ꝯ' => 'Ꝯ',
+ 'ꝺ' => 'Ꝺ',
+ 'ꝼ' => 'Ꝼ',
+ 'ꝿ' => 'Ꝿ',
+ 'ꞁ' => 'Ꞁ',
+ 'ꞃ' => 'Ꞃ',
+ 'ꞅ' => 'Ꞅ',
+ 'ꞇ' => 'Ꞇ',
+ 'ꞌ' => 'Ꞌ',
+ 'ꞑ' => 'Ꞑ',
+ 'ꞓ' => 'Ꞓ',
+ 'ꞔ' => 'Ꞔ',
+ 'ꞗ' => 'Ꞗ',
+ 'ꞙ' => 'Ꞙ',
+ 'ꞛ' => 'Ꞛ',
+ 'ꞝ' => 'Ꞝ',
+ 'ꞟ' => 'Ꞟ',
+ 'ꞡ' => 'Ꞡ',
+ 'ꞣ' => 'Ꞣ',
+ 'ꞥ' => 'Ꞥ',
+ 'ꞧ' => 'Ꞧ',
+ 'ꞩ' => 'Ꞩ',
+ 'ꞵ' => 'Ꞵ',
+ 'ꞷ' => 'Ꞷ',
+ 'ꞹ' => 'Ꞹ',
+ 'ꞻ' => 'Ꞻ',
+ 'ꞽ' => 'Ꞽ',
+ 'ꞿ' => 'Ꞿ',
+ 'ꟃ' => 'Ꟃ',
+ 'ꟈ' => 'Ꟈ',
+ 'ꟊ' => 'Ꟊ',
+ 'ꟶ' => 'Ꟶ',
+ 'ꭓ' => 'Ꭓ',
+ 'ꭰ' => 'Ꭰ',
+ 'ꭱ' => 'Ꭱ',
+ 'ꭲ' => 'Ꭲ',
+ 'ꭳ' => 'Ꭳ',
+ 'ꭴ' => 'Ꭴ',
+ 'ꭵ' => 'Ꭵ',
+ 'ꭶ' => 'Ꭶ',
+ 'ꭷ' => 'Ꭷ',
+ 'ꭸ' => 'Ꭸ',
+ 'ꭹ' => 'Ꭹ',
+ 'ꭺ' => 'Ꭺ',
+ 'ꭻ' => 'Ꭻ',
+ 'ꭼ' => 'Ꭼ',
+ 'ꭽ' => 'Ꭽ',
+ 'ꭾ' => 'Ꭾ',
+ 'ꭿ' => 'Ꭿ',
+ 'ꮀ' => 'Ꮀ',
+ 'ꮁ' => 'Ꮁ',
+ 'ꮂ' => 'Ꮂ',
+ 'ꮃ' => 'Ꮃ',
+ 'ꮄ' => 'Ꮄ',
+ 'ꮅ' => 'Ꮅ',
+ 'ꮆ' => 'Ꮆ',
+ 'ꮇ' => 'Ꮇ',
+ 'ꮈ' => 'Ꮈ',
+ 'ꮉ' => 'Ꮉ',
+ 'ꮊ' => 'Ꮊ',
+ 'ꮋ' => 'Ꮋ',
+ 'ꮌ' => 'Ꮌ',
+ 'ꮍ' => 'Ꮍ',
+ 'ꮎ' => 'Ꮎ',
+ 'ꮏ' => 'Ꮏ',
+ 'ꮐ' => 'Ꮐ',
+ 'ꮑ' => 'Ꮑ',
+ 'ꮒ' => 'Ꮒ',
+ 'ꮓ' => 'Ꮓ',
+ 'ꮔ' => 'Ꮔ',
+ 'ꮕ' => 'Ꮕ',
+ 'ꮖ' => 'Ꮖ',
+ 'ꮗ' => 'Ꮗ',
+ 'ꮘ' => 'Ꮘ',
+ 'ꮙ' => 'Ꮙ',
+ 'ꮚ' => 'Ꮚ',
+ 'ꮛ' => 'Ꮛ',
+ 'ꮜ' => 'Ꮜ',
+ 'ꮝ' => 'Ꮝ',
+ 'ꮞ' => 'Ꮞ',
+ 'ꮟ' => 'Ꮟ',
+ 'ꮠ' => 'Ꮠ',
+ 'ꮡ' => 'Ꮡ',
+ 'ꮢ' => 'Ꮢ',
+ 'ꮣ' => 'Ꮣ',
+ 'ꮤ' => 'Ꮤ',
+ 'ꮥ' => 'Ꮥ',
+ 'ꮦ' => 'Ꮦ',
+ 'ꮧ' => 'Ꮧ',
+ 'ꮨ' => 'Ꮨ',
+ 'ꮩ' => 'Ꮩ',
+ 'ꮪ' => 'Ꮪ',
+ 'ꮫ' => 'Ꮫ',
+ 'ꮬ' => 'Ꮬ',
+ 'ꮭ' => 'Ꮭ',
+ 'ꮮ' => 'Ꮮ',
+ 'ꮯ' => 'Ꮯ',
+ 'ꮰ' => 'Ꮰ',
+ 'ꮱ' => 'Ꮱ',
+ 'ꮲ' => 'Ꮲ',
+ 'ꮳ' => 'Ꮳ',
+ 'ꮴ' => 'Ꮴ',
+ 'ꮵ' => 'Ꮵ',
+ 'ꮶ' => 'Ꮶ',
+ 'ꮷ' => 'Ꮷ',
+ 'ꮸ' => 'Ꮸ',
+ 'ꮹ' => 'Ꮹ',
+ 'ꮺ' => 'Ꮺ',
+ 'ꮻ' => 'Ꮻ',
+ 'ꮼ' => 'Ꮼ',
+ 'ꮽ' => 'Ꮽ',
+ 'ꮾ' => 'Ꮾ',
+ 'ꮿ' => 'Ꮿ',
+ 'a' => 'A',
+ 'b' => 'B',
+ 'c' => 'C',
+ 'd' => 'D',
+ 'e' => 'E',
+ 'f' => 'F',
+ 'g' => 'G',
+ 'h' => 'H',
+ 'i' => 'I',
+ 'j' => 'J',
+ 'k' => 'K',
+ 'l' => 'L',
+ 'm' => 'M',
+ 'n' => 'N',
+ 'o' => 'O',
+ 'p' => 'P',
+ 'q' => 'Q',
+ 'r' => 'R',
+ 's' => 'S',
+ 't' => 'T',
+ 'u' => 'U',
+ 'v' => 'V',
+ 'w' => 'W',
+ 'x' => 'X',
+ 'y' => 'Y',
+ 'z' => 'Z',
+ '𐐨' => '𐐀',
+ '𐐩' => '𐐁',
+ '𐐪' => '𐐂',
+ '𐐫' => '𐐃',
+ '𐐬' => '𐐄',
+ '𐐭' => '𐐅',
+ '𐐮' => '𐐆',
+ '𐐯' => '𐐇',
+ '𐐰' => '𐐈',
+ '𐐱' => '𐐉',
+ '𐐲' => '𐐊',
+ '𐐳' => '𐐋',
+ '𐐴' => '𐐌',
+ '𐐵' => '𐐍',
+ '𐐶' => '𐐎',
+ '𐐷' => '𐐏',
+ '𐐸' => '𐐐',
+ '𐐹' => '𐐑',
+ '𐐺' => '𐐒',
+ '𐐻' => '𐐓',
+ '𐐼' => '𐐔',
+ '𐐽' => '𐐕',
+ '𐐾' => '𐐖',
+ '𐐿' => '𐐗',
+ '𐑀' => '𐐘',
+ '𐑁' => '𐐙',
+ '𐑂' => '𐐚',
+ '𐑃' => '𐐛',
+ '𐑄' => '𐐜',
+ '𐑅' => '𐐝',
+ '𐑆' => '𐐞',
+ '𐑇' => '𐐟',
+ '𐑈' => '𐐠',
+ '𐑉' => '𐐡',
+ '𐑊' => '𐐢',
+ '𐑋' => '𐐣',
+ '𐑌' => '𐐤',
+ '𐑍' => '𐐥',
+ '𐑎' => '𐐦',
+ '𐑏' => '𐐧',
+ '𐓘' => '𐒰',
+ '𐓙' => '𐒱',
+ '𐓚' => '𐒲',
+ '𐓛' => '𐒳',
+ '𐓜' => '𐒴',
+ '𐓝' => '𐒵',
+ '𐓞' => '𐒶',
+ '𐓟' => '𐒷',
+ '𐓠' => '𐒸',
+ '𐓡' => '𐒹',
+ '𐓢' => '𐒺',
+ '𐓣' => '𐒻',
+ '𐓤' => '𐒼',
+ '𐓥' => '𐒽',
+ '𐓦' => '𐒾',
+ '𐓧' => '𐒿',
+ '𐓨' => '𐓀',
+ '𐓩' => '𐓁',
+ '𐓪' => '𐓂',
+ '𐓫' => '𐓃',
+ '𐓬' => '𐓄',
+ '𐓭' => '𐓅',
+ '𐓮' => '𐓆',
+ '𐓯' => '𐓇',
+ '𐓰' => '𐓈',
+ '𐓱' => '𐓉',
+ '𐓲' => '𐓊',
+ '𐓳' => '𐓋',
+ '𐓴' => '𐓌',
+ '𐓵' => '𐓍',
+ '𐓶' => '𐓎',
+ '𐓷' => '𐓏',
+ '𐓸' => '𐓐',
+ '𐓹' => '𐓑',
+ '𐓺' => '𐓒',
+ '𐓻' => '𐓓',
+ '𐳀' => '𐲀',
+ '𐳁' => '𐲁',
+ '𐳂' => '𐲂',
+ '𐳃' => '𐲃',
+ '𐳄' => '𐲄',
+ '𐳅' => '𐲅',
+ '𐳆' => '𐲆',
+ '𐳇' => '𐲇',
+ '𐳈' => '𐲈',
+ '𐳉' => '𐲉',
+ '𐳊' => '𐲊',
+ '𐳋' => '𐲋',
+ '𐳌' => '𐲌',
+ '𐳍' => '𐲍',
+ '𐳎' => '𐲎',
+ '𐳏' => '𐲏',
+ '𐳐' => '𐲐',
+ '𐳑' => '𐲑',
+ '𐳒' => '𐲒',
+ '𐳓' => '𐲓',
+ '𐳔' => '𐲔',
+ '𐳕' => '𐲕',
+ '𐳖' => '𐲖',
+ '𐳗' => '𐲗',
+ '𐳘' => '𐲘',
+ '𐳙' => '𐲙',
+ '𐳚' => '𐲚',
+ '𐳛' => '𐲛',
+ '𐳜' => '𐲜',
+ '𐳝' => '𐲝',
+ '𐳞' => '𐲞',
+ '𐳟' => '𐲟',
+ '𐳠' => '𐲠',
+ '𐳡' => '𐲡',
+ '𐳢' => '𐲢',
+ '𐳣' => '𐲣',
+ '𐳤' => '𐲤',
+ '𐳥' => '𐲥',
+ '𐳦' => '𐲦',
+ '𐳧' => '𐲧',
+ '𐳨' => '𐲨',
+ '𐳩' => '𐲩',
+ '𐳪' => '𐲪',
+ '𐳫' => '𐲫',
+ '𐳬' => '𐲬',
+ '𐳭' => '𐲭',
+ '𐳮' => '𐲮',
+ '𐳯' => '𐲯',
+ '𐳰' => '𐲰',
+ '𐳱' => '𐲱',
+ '𐳲' => '𐲲',
+ '𑣀' => '𑢠',
+ '𑣁' => '𑢡',
+ '𑣂' => '𑢢',
+ '𑣃' => '𑢣',
+ '𑣄' => '𑢤',
+ '𑣅' => '𑢥',
+ '𑣆' => '𑢦',
+ '𑣇' => '𑢧',
+ '𑣈' => '𑢨',
+ '𑣉' => '𑢩',
+ '𑣊' => '𑢪',
+ '𑣋' => '𑢫',
+ '𑣌' => '𑢬',
+ '𑣍' => '𑢭',
+ '𑣎' => '𑢮',
+ '𑣏' => '𑢯',
+ '𑣐' => '𑢰',
+ '𑣑' => '𑢱',
+ '𑣒' => '𑢲',
+ '𑣓' => '𑢳',
+ '𑣔' => '𑢴',
+ '𑣕' => '𑢵',
+ '𑣖' => '𑢶',
+ '𑣗' => '𑢷',
+ '𑣘' => '𑢸',
+ '𑣙' => '𑢹',
+ '𑣚' => '𑢺',
+ '𑣛' => '𑢻',
+ '𑣜' => '𑢼',
+ '𑣝' => '𑢽',
+ '𑣞' => '𑢾',
+ '𑣟' => '𑢿',
+ '𖹠' => '𖹀',
+ '𖹡' => '𖹁',
+ '𖹢' => '𖹂',
+ '𖹣' => '𖹃',
+ '𖹤' => '𖹄',
+ '𖹥' => '𖹅',
+ '𖹦' => '𖹆',
+ '𖹧' => '𖹇',
+ '𖹨' => '𖹈',
+ '𖹩' => '𖹉',
+ '𖹪' => '𖹊',
+ '𖹫' => '𖹋',
+ '𖹬' => '𖹌',
+ '𖹭' => '𖹍',
+ '𖹮' => '𖹎',
+ '𖹯' => '𖹏',
+ '𖹰' => '𖹐',
+ '𖹱' => '𖹑',
+ '𖹲' => '𖹒',
+ '𖹳' => '𖹓',
+ '𖹴' => '𖹔',
+ '𖹵' => '𖹕',
+ '𖹶' => '𖹖',
+ '𖹷' => '𖹗',
+ '𖹸' => '𖹘',
+ '𖹹' => '𖹙',
+ '𖹺' => '𖹚',
+ '𖹻' => '𖹛',
+ '𖹼' => '𖹜',
+ '𖹽' => '𖹝',
+ '𖹾' => '𖹞',
+ '𖹿' => '𖹟',
+ '𞤢' => '𞤀',
+ '𞤣' => '𞤁',
+ '𞤤' => '𞤂',
+ '𞤥' => '𞤃',
+ '𞤦' => '𞤄',
+ '𞤧' => '𞤅',
+ '𞤨' => '𞤆',
+ '𞤩' => '𞤇',
+ '𞤪' => '𞤈',
+ '𞤫' => '𞤉',
+ '𞤬' => '𞤊',
+ '𞤭' => '𞤋',
+ '𞤮' => '𞤌',
+ '𞤯' => '𞤍',
+ '𞤰' => '𞤎',
+ '𞤱' => '𞤏',
+ '𞤲' => '𞤐',
+ '𞤳' => '𞤑',
+ '𞤴' => '𞤒',
+ '𞤵' => '𞤓',
+ '𞤶' => '𞤔',
+ '𞤷' => '𞤕',
+ '𞤸' => '𞤖',
+ '𞤹' => '𞤗',
+ '𞤺' => '𞤘',
+ '𞤻' => '𞤙',
+ '𞤼' => '𞤚',
+ '𞤽' => '𞤛',
+ '𞤾' => '𞤜',
+ '𞤿' => '𞤝',
+ '𞥀' => '𞤞',
+ '𞥁' => '𞤟',
+ '𞥂' => '𞤠',
+ '𞥃' => '𞤡',
+ 'ß' => 'SS',
+ 'ff' => 'FF',
+ 'fi' => 'FI',
+ 'fl' => 'FL',
+ 'ffi' => 'FFI',
+ 'ffl' => 'FFL',
+ 'ſt' => 'ST',
+ 'st' => 'ST',
+ 'և' => 'ԵՒ',
+ 'ﬓ' => 'ՄՆ',
+ 'ﬔ' => 'ՄԵ',
+ 'ﬕ' => 'ՄԻ',
+ 'ﬖ' => 'ՎՆ',
+ 'ﬗ' => 'ՄԽ',
+ 'ʼn' => 'ʼN',
+ 'ΐ' => 'Ϊ́',
+ 'ΰ' => 'Ϋ́',
+ 'ǰ' => 'J̌',
+ 'ẖ' => 'H̱',
+ 'ẗ' => 'T̈',
+ 'ẘ' => 'W̊',
+ 'ẙ' => 'Y̊',
+ 'ẚ' => 'Aʾ',
+ 'ὐ' => 'Υ̓',
+ 'ὒ' => 'Υ̓̀',
+ 'ὔ' => 'Υ̓́',
+ 'ὖ' => 'Υ̓͂',
+ 'ᾶ' => 'Α͂',
+ 'ῆ' => 'Η͂',
+ 'ῒ' => 'Ϊ̀',
+ 'ΐ' => 'Ϊ́',
+ 'ῖ' => 'Ι͂',
+ 'ῗ' => 'Ϊ͂',
+ 'ῢ' => 'Ϋ̀',
+ 'ΰ' => 'Ϋ́',
+ 'ῤ' => 'Ρ̓',
+ 'ῦ' => 'Υ͂',
+ 'ῧ' => 'Ϋ͂',
+ 'ῶ' => 'Ω͂',
+ 'ᾈ' => 'ἈΙ',
+ 'ᾉ' => 'ἉΙ',
+ 'ᾊ' => 'ἊΙ',
+ 'ᾋ' => 'ἋΙ',
+ 'ᾌ' => 'ἌΙ',
+ 'ᾍ' => 'ἍΙ',
+ 'ᾎ' => 'ἎΙ',
+ 'ᾏ' => 'ἏΙ',
+ 'ᾘ' => 'ἨΙ',
+ 'ᾙ' => 'ἩΙ',
+ 'ᾚ' => 'ἪΙ',
+ 'ᾛ' => 'ἫΙ',
+ 'ᾜ' => 'ἬΙ',
+ 'ᾝ' => 'ἭΙ',
+ 'ᾞ' => 'ἮΙ',
+ 'ᾟ' => 'ἯΙ',
+ 'ᾨ' => 'ὨΙ',
+ 'ᾩ' => 'ὩΙ',
+ 'ᾪ' => 'ὪΙ',
+ 'ᾫ' => 'ὫΙ',
+ 'ᾬ' => 'ὬΙ',
+ 'ᾭ' => 'ὭΙ',
+ 'ᾮ' => 'ὮΙ',
+ 'ᾯ' => 'ὯΙ',
+ 'ᾼ' => 'ΑΙ',
+ 'ῌ' => 'ΗΙ',
+ 'ῼ' => 'ΩΙ',
+ 'ᾲ' => 'ᾺΙ',
+ 'ᾴ' => 'ΆΙ',
+ 'ῂ' => 'ῊΙ',
+ 'ῄ' => 'ΉΙ',
+ 'ῲ' => 'ῺΙ',
+ 'ῴ' => 'ΏΙ',
+ 'ᾷ' => 'Α͂Ι',
+ 'ῇ' => 'Η͂Ι',
+ 'ῷ' => 'Ω͂Ι',
+);
diff --git a/vendor/symfony/polyfill-mbstring/bootstrap.php b/vendor/symfony/polyfill-mbstring/bootstrap.php
new file mode 100644
index 000000000..ff51ae079
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/bootstrap.php
@@ -0,0 +1,172 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Mbstring as p;
+
+if (\PHP_VERSION_ID >= 80000) {
+ return require __DIR__.'/bootstrap80.php';
+}
+
+if (!function_exists('mb_convert_encoding')) {
+ function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); }
+}
+if (!function_exists('mb_decode_mimeheader')) {
+ function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); }
+}
+if (!function_exists('mb_encode_mimeheader')) {
+ function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = "\r\n", $indent = 0) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); }
+}
+if (!function_exists('mb_decode_numericentity')) {
+ function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); }
+}
+if (!function_exists('mb_encode_numericentity')) {
+ function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); }
+}
+if (!function_exists('mb_convert_case')) {
+ function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); }
+}
+if (!function_exists('mb_internal_encoding')) {
+ function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); }
+}
+if (!function_exists('mb_language')) {
+ function mb_language($language = null) { return p\Mbstring::mb_language($language); }
+}
+if (!function_exists('mb_list_encodings')) {
+ function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
+}
+if (!function_exists('mb_encoding_aliases')) {
+ function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
+}
+if (!function_exists('mb_check_encoding')) {
+ function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); }
+}
+if (!function_exists('mb_detect_encoding')) {
+ function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); }
+}
+if (!function_exists('mb_detect_order')) {
+ function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); }
+}
+if (!function_exists('mb_parse_str')) {
+ function mb_parse_str($string, &$result = []) { parse_str($string, $result); return (bool) $result; }
+}
+if (!function_exists('mb_strlen')) {
+ function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); }
+}
+if (!function_exists('mb_strpos')) {
+ function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strtolower')) {
+ function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); }
+}
+if (!function_exists('mb_strtoupper')) {
+ function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); }
+}
+if (!function_exists('mb_substitute_character')) {
+ function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); }
+}
+if (!function_exists('mb_substr')) {
+ function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); }
+}
+if (!function_exists('mb_stripos')) {
+ function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_stristr')) {
+ function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrchr')) {
+ function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrichr')) {
+ function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strripos')) {
+ function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strrpos')) {
+ function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strstr')) {
+ function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_get_info')) {
+ function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
+}
+if (!function_exists('mb_http_output')) {
+ function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); }
+}
+if (!function_exists('mb_strwidth')) {
+ function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); }
+}
+if (!function_exists('mb_substr_count')) {
+ function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); }
+}
+if (!function_exists('mb_output_handler')) {
+ function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); }
+}
+if (!function_exists('mb_http_input')) {
+ function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type); }
+}
+
+if (!function_exists('mb_convert_variables')) {
+ function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); }
+}
+
+if (!function_exists('mb_ord')) {
+ function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+ function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+ function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
+}
+if (!function_exists('mb_str_split')) {
+ function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); }
+}
+
+if (!function_exists('mb_str_pad')) {
+ function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); }
+}
+
+if (!function_exists('mb_ucfirst')) {
+ function mb_ucfirst(string $string, ?string $encoding = null): string { return p\Mbstring::mb_ucfirst($string, $encoding); }
+}
+
+if (!function_exists('mb_lcfirst')) {
+ function mb_lcfirst(string $string, ?string $encoding = null): string { return p\Mbstring::mb_lcfirst($string, $encoding); }
+}
+
+if (!function_exists('mb_trim')) {
+ function mb_trim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_trim($string, $characters, $encoding); }
+}
+
+if (!function_exists('mb_ltrim')) {
+ function mb_ltrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_ltrim($string, $characters, $encoding); }
+}
+
+if (!function_exists('mb_rtrim')) {
+ function mb_rtrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_rtrim($string, $characters, $encoding); }
+}
+
+
+if (extension_loaded('mbstring')) {
+ return;
+}
+
+if (!defined('MB_CASE_UPPER')) {
+ define('MB_CASE_UPPER', 0);
+}
+if (!defined('MB_CASE_LOWER')) {
+ define('MB_CASE_LOWER', 1);
+}
+if (!defined('MB_CASE_TITLE')) {
+ define('MB_CASE_TITLE', 2);
+}
diff --git a/vendor/symfony/polyfill-mbstring/bootstrap80.php b/vendor/symfony/polyfill-mbstring/bootstrap80.php
new file mode 100644
index 000000000..5be7d2018
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/bootstrap80.php
@@ -0,0 +1,167 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Mbstring as p;
+
+if (!function_exists('mb_convert_encoding')) {
+ function mb_convert_encoding(array|string|null $string, ?string $to_encoding, array|string|null $from_encoding = null): array|string|false { return p\Mbstring::mb_convert_encoding($string ?? '', (string) $to_encoding, $from_encoding); }
+}
+if (!function_exists('mb_decode_mimeheader')) {
+ function mb_decode_mimeheader(?string $string): string { return p\Mbstring::mb_decode_mimeheader((string) $string); }
+}
+if (!function_exists('mb_encode_mimeheader')) {
+ function mb_encode_mimeheader(?string $string, ?string $charset = null, ?string $transfer_encoding = null, ?string $newline = "\r\n", ?int $indent = 0): string { return p\Mbstring::mb_encode_mimeheader((string) $string, $charset, $transfer_encoding, (string) $newline, (int) $indent); }
+}
+if (!function_exists('mb_decode_numericentity')) {
+ function mb_decode_numericentity(?string $string, array $map, ?string $encoding = null): string { return p\Mbstring::mb_decode_numericentity((string) $string, $map, $encoding); }
+}
+if (!function_exists('mb_encode_numericentity')) {
+ function mb_encode_numericentity(?string $string, array $map, ?string $encoding = null, ?bool $hex = false): string { return p\Mbstring::mb_encode_numericentity((string) $string, $map, $encoding, (bool) $hex); }
+}
+if (!function_exists('mb_convert_case')) {
+ function mb_convert_case(?string $string, ?int $mode, ?string $encoding = null): string { return p\Mbstring::mb_convert_case((string) $string, (int) $mode, $encoding); }
+}
+if (!function_exists('mb_internal_encoding')) {
+ function mb_internal_encoding(?string $encoding = null): string|bool { return p\Mbstring::mb_internal_encoding($encoding); }
+}
+if (!function_exists('mb_language')) {
+ function mb_language(?string $language = null): string|bool { return p\Mbstring::mb_language($language); }
+}
+if (!function_exists('mb_list_encodings')) {
+ function mb_list_encodings(): array { return p\Mbstring::mb_list_encodings(); }
+}
+if (!function_exists('mb_encoding_aliases')) {
+ function mb_encoding_aliases(?string $encoding): array { return p\Mbstring::mb_encoding_aliases((string) $encoding); }
+}
+if (!function_exists('mb_check_encoding')) {
+ function mb_check_encoding(array|string|null $value = null, ?string $encoding = null): bool { return p\Mbstring::mb_check_encoding($value, $encoding); }
+}
+if (!function_exists('mb_detect_encoding')) {
+ function mb_detect_encoding(?string $string, array|string|null $encodings = null, ?bool $strict = false): string|false { return p\Mbstring::mb_detect_encoding((string) $string, $encodings, (bool) $strict); }
+}
+if (!function_exists('mb_detect_order')) {
+ function mb_detect_order(array|string|null $encoding = null): array|bool { return p\Mbstring::mb_detect_order($encoding); }
+}
+if (!function_exists('mb_parse_str')) {
+ function mb_parse_str(?string $string, &$result = []): bool { parse_str((string) $string, $result); return (bool) $result; }
+}
+if (!function_exists('mb_strlen')) {
+ function mb_strlen(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strlen((string) $string, $encoding); }
+}
+if (!function_exists('mb_strpos')) {
+ function mb_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strtolower')) {
+ function mb_strtolower(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtolower((string) $string, $encoding); }
+}
+if (!function_exists('mb_strtoupper')) {
+ function mb_strtoupper(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtoupper((string) $string, $encoding); }
+}
+if (!function_exists('mb_substitute_character')) {
+ function mb_substitute_character(string|int|null $substitute_character = null): string|int|bool { return p\Mbstring::mb_substitute_character($substitute_character); }
+}
+if (!function_exists('mb_substr')) {
+ function mb_substr(?string $string, ?int $start, ?int $length = null, ?string $encoding = null): string { return p\Mbstring::mb_substr((string) $string, (int) $start, $length, $encoding); }
+}
+if (!function_exists('mb_stripos')) {
+ function mb_stripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_stripos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_stristr')) {
+ function mb_stristr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_stristr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrchr')) {
+ function mb_strrchr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrchr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrichr')) {
+ function mb_strrichr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrichr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strripos')) {
+ function mb_strripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strripos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strrpos')) {
+ function mb_strrpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strrpos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strstr')) {
+ function mb_strstr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strstr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_get_info')) {
+ function mb_get_info(?string $type = 'all'): array|string|int|false|null { return p\Mbstring::mb_get_info((string) $type); }
+}
+if (!function_exists('mb_http_output')) {
+ function mb_http_output(?string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding); }
+}
+if (!function_exists('mb_strwidth')) {
+ function mb_strwidth(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strwidth((string) $string, $encoding); }
+}
+if (!function_exists('mb_substr_count')) {
+ function mb_substr_count(?string $haystack, ?string $needle, ?string $encoding = null): int { return p\Mbstring::mb_substr_count((string) $haystack, (string) $needle, $encoding); }
+}
+if (!function_exists('mb_output_handler')) {
+ function mb_output_handler(?string $string, ?int $status): string { return p\Mbstring::mb_output_handler((string) $string, (int) $status); }
+}
+if (!function_exists('mb_http_input')) {
+ function mb_http_input(?string $type = null): array|string|false { return p\Mbstring::mb_http_input($type); }
+}
+
+if (!function_exists('mb_convert_variables')) {
+ function mb_convert_variables(?string $to_encoding, array|string|null $from_encoding, mixed &$var, mixed &...$vars): string|false { return p\Mbstring::mb_convert_variables((string) $to_encoding, $from_encoding ?? '', $var, ...$vars); }
+}
+
+if (!function_exists('mb_ord')) {
+ function mb_ord(?string $string, ?string $encoding = null): int|false { return p\Mbstring::mb_ord((string) $string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+ function mb_chr(?int $codepoint, ?string $encoding = null): string|false { return p\Mbstring::mb_chr((int) $codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+ function mb_scrub(?string $string, ?string $encoding = null): string { $encoding ??= mb_internal_encoding(); return mb_convert_encoding((string) $string, $encoding, $encoding); }
+}
+if (!function_exists('mb_str_split')) {
+ function mb_str_split(?string $string, ?int $length = 1, ?string $encoding = null): array { return p\Mbstring::mb_str_split((string) $string, (int) $length, $encoding); }
+}
+
+if (!function_exists('mb_str_pad')) {
+ function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); }
+}
+
+if (!function_exists('mb_ucfirst')) {
+ function mb_ucfirst($string, ?string $encoding = null): string { return p\Mbstring::mb_ucfirst($string, $encoding); }
+}
+
+if (!function_exists('mb_lcfirst')) {
+ function mb_lcfirst($string, ?string $encoding = null): string { return p\Mbstring::mb_lcfirst($string, $encoding); }
+}
+
+if (!function_exists('mb_trim')) {
+ function mb_trim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_trim($string, $characters, $encoding); }
+}
+
+if (!function_exists('mb_ltrim')) {
+ function mb_ltrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_ltrim($string, $characters, $encoding); }
+}
+
+if (!function_exists('mb_rtrim')) {
+ function mb_rtrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Mbstring::mb_rtrim($string, $characters, $encoding); }
+}
+
+if (extension_loaded('mbstring')) {
+ return;
+}
+
+if (!defined('MB_CASE_UPPER')) {
+ define('MB_CASE_UPPER', 0);
+}
+if (!defined('MB_CASE_LOWER')) {
+ define('MB_CASE_LOWER', 1);
+}
+if (!defined('MB_CASE_TITLE')) {
+ define('MB_CASE_TITLE', 2);
+}
diff --git a/vendor/symfony/polyfill-mbstring/composer.json b/vendor/symfony/polyfill-mbstring/composer.json
new file mode 100644
index 000000000..4ed241a33
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/composer.json
@@ -0,0 +1,38 @@
+{
+ "name": "symfony/polyfill-mbstring",
+ "type": "library",
+ "description": "Symfony polyfill for the Mbstring extension",
+ "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
+ "files": [ "bootstrap.php" ]
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ }
+}
diff --git a/vendor/symfony/polyfill-php81/LICENSE b/vendor/symfony/polyfill-php81/LICENSE
deleted file mode 100644
index 99c6bdf35..000000000
--- a/vendor/symfony/polyfill-php81/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2021-present Fabien Potencier
-
-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.
diff --git a/vendor/symfony/polyfill-php81/Php81.php b/vendor/symfony/polyfill-php81/Php81.php
deleted file mode 100644
index f0507b765..000000000
--- a/vendor/symfony/polyfill-php81/Php81.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Php81;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-final class Php81
-{
- public static function array_is_list(array $array): bool
- {
- if ([] === $array || $array === array_values($array)) {
- return true;
- }
-
- $nextKey = -1;
-
- foreach ($array as $k => $v) {
- if ($k !== ++$nextKey) {
- return false;
- }
- }
-
- return true;
- }
-}
diff --git a/vendor/symfony/polyfill-php81/README.md b/vendor/symfony/polyfill-php81/README.md
deleted file mode 100644
index c07ef7820..000000000
--- a/vendor/symfony/polyfill-php81/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-Symfony Polyfill / Php81
-========================
-
-This component provides features added to PHP 8.1 core:
-
-- [`array_is_list`](https://php.net/array_is_list)
-- [`enum_exists`](https://php.net/enum-exists)
-- [`MYSQLI_REFRESH_REPLICA`](https://php.net/mysqli.constants#constantmysqli-refresh-replica) constant
-- [`ReturnTypeWillChange`](https://wiki.php.net/rfc/internal_method_return_types)
-- [`CURLStringFile`](https://php.net/CURLStringFile) (but only if PHP >= 7.4 is used)
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php b/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php
deleted file mode 100644
index eb5952ee3..000000000
--- a/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-if (\PHP_VERSION_ID >= 70400 && extension_loaded('curl')) {
- /**
- * @property string $data
- */
- class CURLStringFile extends CURLFile
- {
- private $data;
-
- public function __construct(string $data, string $postname, string $mime = 'application/octet-stream')
- {
- $this->data = $data;
- parent::__construct('data://application/octet-stream;base64,'.base64_encode($data), $mime, $postname);
- }
-
- public function __set(string $name, $value): void
- {
- if ('data' !== $name) {
- $this->$name = $value;
-
- return;
- }
-
- if (is_object($value) ? !method_exists($value, '__toString') : !is_scalar($value)) {
- throw new \TypeError('Cannot assign '.gettype($value).' to property CURLStringFile::$data of type string');
- }
-
- $this->name = 'data://application/octet-stream;base64,'.base64_encode($value);
- }
-
- public function __isset(string $name): bool
- {
- return isset($this->$name);
- }
-
- public function &__get(string $name)
- {
- return $this->$name;
- }
- }
-}
diff --git a/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php b/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php
deleted file mode 100644
index cb7720a8d..000000000
--- a/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-if (\PHP_VERSION_ID < 80100) {
- #[Attribute(Attribute::TARGET_METHOD)]
- final class ReturnTypeWillChange
- {
- public function __construct()
- {
- }
- }
-}
diff --git a/vendor/symfony/polyfill-php81/bootstrap.php b/vendor/symfony/polyfill-php81/bootstrap.php
deleted file mode 100644
index 9f872e02f..000000000
--- a/vendor/symfony/polyfill-php81/bootstrap.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Php81 as p;
-
-if (\PHP_VERSION_ID >= 80100) {
- return;
-}
-
-if (defined('MYSQLI_REFRESH_SLAVE') && !defined('MYSQLI_REFRESH_REPLICA')) {
- define('MYSQLI_REFRESH_REPLICA', 64);
-}
-
-if (!function_exists('array_is_list')) {
- function array_is_list(array $array): bool { return p\Php81::array_is_list($array); }
-}
-
-if (!function_exists('enum_exists')) {
- function enum_exists(string $enum, bool $autoload = true): bool { return $autoload && class_exists($enum) && false; }
-}
diff --git a/vendor/symfony/polyfill-php81/composer.json b/vendor/symfony/polyfill-php81/composer.json
deleted file mode 100644
index 381af79ac..000000000
--- a/vendor/symfony/polyfill-php81/composer.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "symfony/polyfill-php81",
- "type": "library",
- "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
- "keywords": ["polyfill", "shim", "compatibility", "portable"],
- "homepage": "https://symfony.com",
- "license": "MIT",
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "require": {
- "php": ">=7.1"
- },
- "autoload": {
- "psr-4": { "Symfony\\Polyfill\\Php81\\": "" },
- "files": [ "bootstrap.php" ],
- "classmap": [ "Resources/stubs" ]
- },
- "minimum-stability": "dev",
- "extra": {
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- }
-}
diff --git a/vendor/twbs/bootstrap-icons/.browserslistrc b/vendor/twbs/bootstrap-icons/.browserslistrc
new file mode 100644
index 000000000..c71c8b9c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.browserslistrc
@@ -0,0 +1,11 @@
+# https://github.com/browserslist/browserslist#readme
+
+>= 0.5%
+last 2 major versions
+not dead
+Chrome >= 60
+Firefox >= 60
+Firefox ESR
+iOS >= 12
+Safari >= 12
+not Explorer <= 11
diff --git a/vendor/twbs/bootstrap-icons/.editorconfig b/vendor/twbs/bootstrap-icons/.editorconfig
new file mode 100644
index 000000000..f29d257cc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.editorconfig
@@ -0,0 +1,11 @@
+# editorconfig.org
+
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/vendor/twbs/bootstrap-icons/.eslintignore b/vendor/twbs/bootstrap-icons/.eslintignore
new file mode 100644
index 000000000..83750dc23
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.eslintignore
@@ -0,0 +1,4 @@
+**/*.min.js
+**/dist/
+**/vendor/
+/_site/
diff --git a/vendor/twbs/bootstrap-icons/.eslintrc.json b/vendor/twbs/bootstrap-icons/.eslintrc.json
new file mode 100644
index 000000000..86206cda8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.eslintrc.json
@@ -0,0 +1,34 @@
+{
+ "root": true,
+ "env": {
+ "es6": true,
+ "node": true
+ },
+ "parserOptions": {
+ "ecmaVersion": 2020,
+ "sourceType": "module"
+ },
+ "extends": "eslint:recommended",
+ "rules": {
+ "no-return-await": "error",
+ "object-curly-spacing": [
+ "error",
+ "always"
+ ],
+ "prefer-template": "error",
+ "semi": [
+ "error",
+ "never"
+ ],
+ "strict": "error"
+ },
+ "overrides": [
+ {
+ "files": "docs/assets/js/**",
+ "env": {
+ "browser": true,
+ "node": false
+ }
+ }
+ ]
+}
diff --git a/vendor/twbs/bootstrap-icons/.fantasticonrc.js b/vendor/twbs/bootstrap-icons/.fantasticonrc.js
new file mode 100644
index 000000000..ab25affc1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.fantasticonrc.js
@@ -0,0 +1,32 @@
+'use strict'
+
+const codepoints = require('./font/bootstrap-icons.json')
+
+module.exports = {
+ inputDir: './icons',
+ outputDir: './font',
+ fontTypes: ['woff2', 'woff'],
+ assetTypes: ['css', 'scss', 'json'],
+ name: 'bootstrap-icons',
+ codepoints,
+ prefix: 'bi',
+ selector: '.bi',
+ fontsUrl: './fonts',
+ formatOptions: {
+ json: {
+ indent: 2
+ }
+ },
+ // Use our custom Handlebars templates
+ templates: {
+ css: './build/font/css.hbs',
+ scss: './build/font/scss.hbs'
+ },
+ pathOptions: {
+ json: './font/bootstrap-icons.json',
+ css: './font/bootstrap-icons.css',
+ scss: './font/bootstrap-icons.scss',
+ woff: './font/fonts/bootstrap-icons.woff',
+ woff2: './font/fonts/bootstrap-icons.woff2'
+ }
+}
diff --git a/vendor/twbs/bootstrap-icons/.gitattributes b/vendor/twbs/bootstrap-icons/.gitattributes
new file mode 100644
index 000000000..205021e49
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.gitattributes
@@ -0,0 +1,2 @@
+# Enforce Unix newlines
+* text=auto eol=lf
diff --git a/vendor/twbs/bootstrap-icons/.github/ISSUE_TEMPLATE/bug_report.md b/vendor/twbs/bootstrap-icons/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..89973e5a3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,16 @@
+---
+name: Bug report
+about: Report a problem with an icon or our documentation.
+title: ''
+labels: bug
+assignees: ''
+
+---
+
+Before opening, [search for duplicate or closed issues](https://github.com/twbs/icons/issues?utf8=%E2%9C%93&q=is%3Aissue).
+
+As appropriate, please include:
+
+- Operating system and version (Windows, macOS, Android, iOS)
+- Browser and version (Chrome, Firefox, Safari, Microsoft Edge, Opera, Android Browser)
+- A [reduced test case](https://css-tricks.com/reduced-test-cases/) or suggested fix using [CodePen](https://codepen.io/) or [JS Bin](https://jsbin.com/)
diff --git a/vendor/twbs/bootstrap-icons/.github/ISSUE_TEMPLATE/icon-request.md b/vendor/twbs/bootstrap-icons/.github/ISSUE_TEMPLATE/icon-request.md
new file mode 100644
index 000000000..e43d007a4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.github/ISSUE_TEMPLATE/icon-request.md
@@ -0,0 +1,10 @@
+---
+name: Icon request
+about: Suggest new icons to add to the project
+title: ''
+labels: icon-request
+assignees: ''
+
+---
+
+
diff --git a/vendor/twbs/bootstrap-icons/.github/codeql/codeql-config.yml b/vendor/twbs/bootstrap-icons/.github/codeql/codeql-config.yml
new file mode 100644
index 000000000..d2d76ddbf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.github/codeql/codeql-config.yml
@@ -0,0 +1,3 @@
+name: "CodeQL config"
+paths-ignore:
+ - "**/vendor/**"
diff --git a/vendor/twbs/bootstrap-icons/.github/dependabot.yml b/vendor/twbs/bootstrap-icons/.github/dependabot.yml
new file mode 100644
index 000000000..bb60c64fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.github/dependabot.yml
@@ -0,0 +1,17 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: monthly
+ reviewers:
+ - XhmikosR
+ - package-ecosystem: npm
+ directory: "/"
+ schedule:
+ interval: monthly
+ labels:
+ - dependencies
+ reviewers:
+ - XhmikosR
+ versioning-strategy: increase
diff --git a/vendor/twbs/bootstrap-icons/.github/preview.png b/vendor/twbs/bootstrap-icons/.github/preview.png
new file mode 100644
index 000000000..c453a71c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.github/preview.png
Binary files differ
diff --git a/vendor/twbs/bootstrap-icons/.github/release-drafter.yml b/vendor/twbs/bootstrap-icons/.github/release-drafter.yml
new file mode 100644
index 000000000..9bf0dce82
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.github/release-drafter.yml
@@ -0,0 +1,33 @@
+name-template: 'v$NEXT_PATCH_VERSION 🌈'
+tag-template: 'v$NEXT_PATCH_VERSION'
+prerelease: true
+exclude-labels:
+ - 'skip-changelog'
+categories:
+ - title: '🚀 Features'
+ labels:
+ - 'new-feature'
+ - 'feature'
+ - 'enhancement'
+ - title: '🐛 Bug fixes'
+ labels:
+ - 'fix'
+ - 'bugfix'
+ - 'bug'
+ - title: '📖 Docs'
+ labels:
+ - 'docs'
+ - title: '🧰 Maintenance'
+ labels:
+ - 'build'
+ - 'meta'
+ - 'chore'
+ - 'CI'
+ - title: '📦 Dependencies'
+ labels:
+ - 'dependencies'
+change-template: '- #$NUMBER: $TITLE'
+template: |
+ ## Changes
+
+ $CHANGES
diff --git a/vendor/twbs/bootstrap-icons/.github/workflows/codeql.yml b/vendor/twbs/bootstrap-icons/.github/workflows/codeql.yml
new file mode 100644
index 000000000..0a2f4fa05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.github/workflows/codeql.yml
@@ -0,0 +1,44 @@
+name: "CodeQL"
+
+on:
+ push:
+ branches:
+ - main
+ - "!dependabot/**"
+ pull_request:
+ branches:
+ - main
+ - "!dependabot/**"
+ schedule:
+ - cron: "0 0 * * 0"
+ workflow_dispatch:
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ steps:
+ - name: Clone repository
+ uses: actions/checkout@v4
+ with:
+ persist-credentials: false
+
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v3
+ with:
+ config-file: ./.github/codeql/codeql-config.yml
+ languages: "javascript"
+ queries: +security-and-quality
+
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v3
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v3
+ with:
+ category: "/language:javascript"
diff --git a/vendor/twbs/bootstrap-icons/.github/workflows/deploy.yml b/vendor/twbs/bootstrap-icons/.github/workflows/deploy.yml
new file mode 100644
index 000000000..6f936d308
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.github/workflows/deploy.yml
@@ -0,0 +1,63 @@
+name: Deploy
+
+on:
+ release:
+ types:
+ - published
+ workflow_dispatch:
+
+env:
+ FORCE_COLOR: 2
+ NODE: 20
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ if: github.repository == 'twbs/icons' && startsWith(github.ref, 'refs/tags/v')
+
+ steps:
+ - name: Clone repository
+ uses: actions/checkout@v4
+ with:
+ persist-credentials: false
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: "${{ env.NODE }}"
+ cache: npm
+
+ - name: Install npm dependencies
+ run: npm ci
+
+ - name: Prepare release
+ run: npm run release
+
+ - name: Deploy docs
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ allow_empty_commit: false
+ personal_token: ${{ secrets.PERSONAL_TOKEN }}
+ publish_branch: gh-pages
+ publish_dir: ./_site/
+
+ publish:
+ needs: build
+ runs-on: ubuntu-latest
+ if: github.repository == 'twbs/icons' && startsWith(github.ref, 'refs/tags/v')
+
+ steps:
+ - name: Clone repository
+ uses: actions/checkout@v4
+ with:
+ persist-credentials: false
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version: "${{ env.NODE }}"
+ registry-url: "https://registry.npmjs.org"
+
+ - name: Publish on npm
+ run: npm publish
+ env:
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/vendor/twbs/bootstrap-icons/.github/workflows/lint.yml b/vendor/twbs/bootstrap-icons/.github/workflows/lint.yml
new file mode 100644
index 000000000..373f47fed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.github/workflows/lint.yml
@@ -0,0 +1,37 @@
+name: Lint
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ workflow_dispatch:
+
+env:
+ FORCE_COLOR: 2
+ NODE: 20
+
+permissions:
+ contents: read
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Clone repository
+ uses: actions/checkout@v4
+ with:
+ persist-credentials: false
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: "${{ env.NODE }}"
+ cache: npm
+
+ - name: Install npm dependencies
+ run: npm ci
+
+ - name: Lint
+ run: npm run test
diff --git a/vendor/twbs/bootstrap-icons/.github/workflows/release-notes.yml b/vendor/twbs/bootstrap-icons/.github/workflows/release-notes.yml
new file mode 100644
index 000000000..c92b0b188
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.github/workflows/release-notes.yml
@@ -0,0 +1,23 @@
+name: Release notes
+
+on:
+ push:
+ branches:
+ - main
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+jobs:
+ update_release_draft:
+ permissions:
+ # allow release-drafter/release-drafter to create GitHub releases and add labels to PRs
+ contents: write
+ pull-requests: write
+ runs-on: ubuntu-latest
+ if: github.repository == 'twbs/icons'
+ steps:
+ - uses: release-drafter/release-drafter@v5
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/vendor/twbs/bootstrap-icons/.github/workflows/test.yml b/vendor/twbs/bootstrap-icons/.github/workflows/test.yml
new file mode 100644
index 000000000..5c3e314b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.github/workflows/test.yml
@@ -0,0 +1,51 @@
+name: Tests
+
+on:
+ push:
+ branches:
+ - main
+ - "!dependabot/**"
+ pull_request:
+ workflow_dispatch:
+
+env:
+ FORCE_COLOR: 2
+ NODE: 20
+
+permissions:
+ contents: read
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Clone repository
+ uses: actions/checkout@v4
+ with:
+ persist-credentials: false
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: "${{ env.NODE }}"
+ cache: npm
+
+ - run: java -version
+
+ - name: Install npm dependencies
+ run: npm ci
+
+ - name: Build the icons
+ run: npm run icons
+
+ - name: Build and test docs
+ run: npm run docs-test
+
+ - name: Run linkinator
+ uses: JustinBeckwith/linkinator-action@v1
+ with:
+ paths: _site
+ recurse: true
+ verbosity: error
+ skip: "^(?!http://localhost)"
diff --git a/vendor/twbs/bootstrap-icons/.gitignore b/vendor/twbs/bootstrap-icons/.gitignore
new file mode 100644
index 000000000..43fee9317
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.gitignore
@@ -0,0 +1,12 @@
+.DS_Store
+/.hugo_build.lock
+/.cache/
+/_site/
+/node_modules/
+/resources/
+
+# Editor folders
+/.vscode/
+
+# Release zip files
+bootstrap-icons-*.zip
diff --git a/vendor/twbs/bootstrap-icons/.stylelintrc.json b/vendor/twbs/bootstrap-icons/.stylelintrc.json
new file mode 100644
index 000000000..0be1b2936
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/.stylelintrc.json
@@ -0,0 +1,15 @@
+{
+ "extends": [
+ "stylelint-config-twbs-bootstrap"
+ ],
+ "reportInvalidScopeDisables": true,
+ "reportNeedlessDisables": true,
+ "overrides": [
+ {
+ "files": "**/*.scss",
+ "rules": {
+ "scss/selector-no-union-class-name": true
+ }
+ }
+ ]
+}
diff --git a/vendor/twbs/bootstrap-icons/LICENSE b/vendor/twbs/bootstrap-icons/LICENSE
new file mode 100644
index 000000000..f95243911
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2019-2024 The Bootstrap Authors
+
+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.
diff --git a/vendor/twbs/bootstrap-icons/README.md b/vendor/twbs/bootstrap-icons/README.md
new file mode 100644
index 000000000..4e38a7f03
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/README.md
@@ -0,0 +1,100 @@
+<p align="center">
+ <a href="https://getbootstrap.com/">
+ <img src="https://getbootstrap.com/docs/5.2/assets/brand/bootstrap-logo-shadow.png" alt="Bootstrap logo" width="200" height="165">
+ </a>
+</p>
+
+<h3 align="center">Bootstrap Icons</h3>
+
+<p align="center">
+ Official open source SVG icon library for Bootstrap with over 2,000 icons.
+ <br>
+ <a href="https://icons.getbootstrap.com/"><strong>Explore Bootstrap Icons »</strong></a>
+ <br>
+ <br>
+ <a href="https://getbootstrap.com/">Bootstrap</a>
+ ·
+ <a href="https://themes.getbootstrap.com/">Themes</a>
+ ·
+ <a href="https://blog.getbootstrap.com/">Blog</a>
+ <br>
+</p>
+
+[![Bootstrap Icons preview](https://github.com/twbs/icons/blob/main/.github/preview.png)](https://icons.getbootstrap.com/)
+
+## Install
+
+Bootstrap Icons are packaged up and published to npm. We only include the processed SVGs in this package—it's up to you and your team to implement. [Read our docs](https://icons.getbootstrap.com/) for usage instructions.
+
+```shell
+npm i bootstrap-icons
+```
+
+For those [using Packagist](https://packagist.org/packages/twbs/bootstrap-icons), you can also install Bootstrap Icons via Composer:
+
+```shell
+composer require twbs/bootstrap-icons
+```
+
+[Also available in Figma](https://www.figma.com/community/file/1042482994486402696/Bootstrap-Icons).
+
+## Usage
+
+Depending on your setup, you can include Bootstrap Icons in a handful of ways.
+
+- Copy-paste SVGs as embedded HTML
+- Reference via `<img>` element
+- Use the SVG sprite
+- Include via CSS
+
+[See the docs for more information](https://icons.getbootstrap.com/#usage).
+
+## Development
+
+[![Build Status](https://img.shields.io/github/actions/workflow/status/twbs/icons/test.yml?branch=main&label=Tests&logo=github)](https://github.com/twbs/icons/actions/workflows/test.yml?query=workflow%3ATests+branch%3Amain)
+[![npm version](https://img.shields.io/npm/v/bootstrap-icons?logo=npm&logoColor=fff)](https://www.npmjs.com/package/bootstrap-icons)
+
+Clone the repo, install dependencies, and start the Hugo server locally.
+
+```shell
+git clone https://github.com/twbs/icons/
+cd icons
+npm i
+npm start
+```
+
+Then open `http://localhost:4000` in your browser.
+
+### npm scripts
+
+Here are some key scripts you'll use during development. Be sure to look to our `package.json` or `npm run` output for a complete list of scripts.
+
+| Script | Description |
+|--------------|-------------------------------------------------------------------------------|
+| `start` | Alias for running `docs-serve` |
+| `docs-serve` | Starts a local Hugo server |
+| `pages` | Generates permalink pages for each icon with template Markdown |
+| `icons` | Processes and optimizes SVGs in `icons` directory, generates fonts and sprite |
+
+## Adding SVGs
+
+Icons are typically only added by @mdo, but exceptions can be made. New glyphs are designed in Figma first on a 16x16px grid, then exported as flattened SVGs with `fill` (no stroke). Once a new SVG icon has been added to the `icons` directory, we use an npm script to:
+
+1. Optimize our SVGs with SVGO.
+2. Modify the SVGs source code, removing all attributes before setting new attributes and values in our preferred order.
+
+Use `npm run icons` to run the script, run `npm run pages` to build permalink pages, complete those pages, and, finally, commit the results in a new branch for updating.
+
+**Warning**: Please exclude any auto-generated files, like `font/**` and `bootstrap-icons.svg` from your branch because they cause conflicts, and we generally update the dist files before a release.
+
+## Publishing
+
+Documentation is published automatically when a new Git tag is published. See our [GitHub Actions](https://github.com/twbs/icons/tree/main/.github/workflows) and [`package.json`](https://github.com/twbs/icons/blob/main/package.json) for more information.
+
+## License
+
+[MIT](LICENSE)
+
+## Author
+
+[@mdo](https://github.com/mdo)
diff --git a/vendor/twbs/bootstrap-icons/bootstrap-icons.svg b/vendor/twbs/bootstrap-icons/bootstrap-icons.svg
new file mode 100644
index 000000000..b7d55a8e2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/bootstrap-icons.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><symbol class="bi bi-0-circle" viewBox="0 0 16 16" id="0-circle"><path d="M7.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/></symbol><symbol class="bi bi-0-circle-fill" viewBox="0 0 16 16" id="0-circle-fill"><path d="M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.012 4.158c1.858 0 2.96-1.582 2.96-3.99V7.84c0-2.426-1.079-3.996-2.936-3.996-1.864 0-2.965 1.588-2.965 3.996v.328c0 2.42 1.09 3.99 2.941 3.99"/></symbol><symbol class="bi bi-0-square" viewBox="0 0 16 16" id="0-square"><path d="M7.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-0-square-fill" viewBox="0 0 16 16" id="0-square-fill"><path d="M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99"/></symbol><symbol class="bi bi-1-circle" viewBox="0 0 16 16" id="1-circle"><path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/></symbol><symbol class="bi bi-1-circle-fill" viewBox="0 0 16 16" id="1-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.283 4.002H7.971L6.072 5.385v1.271l1.834-1.318h.065V12h1.312z"/></symbol><symbol class="bi bi-1-square" viewBox="0 0 16 16" id="1-square"><path d="M9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-1-square-fill" viewBox="0 0 16 16" id="1-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm7.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/></symbol><symbol class="bi bi-123" viewBox="0 0 16 16" id="123"><path d="M2.873 11.297V4.142H1.699L0 5.379v1.137l1.64-1.18h.06v5.961zm3.213-5.09v-.063c0-.618.44-1.169 1.196-1.169.676 0 1.174.44 1.174 1.106 0 .624-.42 1.101-.807 1.526L4.99 10.553v.744h4.78v-.99H6.643v-.069L8.41 8.252c.65-.724 1.237-1.332 1.237-2.27C9.646 4.849 8.723 4 7.308 4c-1.573 0-2.36 1.064-2.36 2.15v.057zm6.559 1.883h.786c.823 0 1.374.481 1.379 1.179.01.707-.55 1.216-1.421 1.21-.77-.005-1.326-.419-1.379-.953h-1.095c.042 1.053.938 1.918 2.464 1.918 1.478 0 2.642-.839 2.62-2.144-.02-1.143-.922-1.651-1.551-1.714v-.063c.535-.09 1.347-.66 1.326-1.678-.026-1.053-.933-1.855-2.359-1.845-1.5.005-2.317.88-2.348 1.898h1.116c.032-.498.498-.944 1.206-.944.703 0 1.206.435 1.206 1.07.005.64-.504 1.106-1.2 1.106h-.75z"/></symbol><symbol class="bi bi-2-circle" viewBox="0 0 16 16" id="2-circle"><path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/></symbol><symbol class="bi bi-2-circle-fill" viewBox="0 0 16 16" id="2-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.646 6.24c0-.691.493-1.306 1.336-1.306.756 0 1.313.492 1.313 1.236 0 .697-.469 1.23-.902 1.705l-2.971 3.293V12h5.344v-1.107H7.268v-.077l1.974-2.22.096-.107c.688-.763 1.287-1.428 1.287-2.43 0-1.266-1.031-2.215-2.613-2.215-1.758 0-2.637 1.19-2.637 2.402v.065h1.271v-.07Z"/></symbol><symbol class="bi bi-2-square" viewBox="0 0 16 16" id="2-square"><path d="M6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-2-square-fill" viewBox="0 0 16 16" id="2-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm4.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/></symbol><symbol class="bi bi-3-circle" viewBox="0 0 16 16" id="3-circle"><path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/></symbol><symbol class="bi bi-3-circle-fill" viewBox="0 0 16 16" id="3-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.082.414c.92 0 1.535.54 1.541 1.318.012.791-.615 1.36-1.588 1.354-.861-.006-1.482-.469-1.54-1.066H5.104c.047 1.177 1.05 2.144 2.754 2.144 1.653 0 2.954-.937 2.93-2.396-.023-1.278-1.031-1.846-1.734-1.916v-.07c.597-.1 1.505-.739 1.482-1.876-.03-1.177-1.043-2.074-2.637-2.062-1.675.006-2.59.984-2.625 2.12h1.248c.036-.556.557-1.054 1.348-1.054.785 0 1.348.486 1.348 1.195.006.715-.563 1.237-1.342 1.237h-.838v1.072h.879Z"/></symbol><symbol class="bi bi-3-square" viewBox="0 0 16 16" id="3-square"><path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-3-square-fill" viewBox="0 0 16 16" id="3-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/></symbol><symbol class="bi bi-4-circle" viewBox="0 0 16 16" id="4-circle"><path d="M7.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/></symbol><symbol class="bi bi-4-circle-fill" viewBox="0 0 16 16" id="4-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M7.519 5.057c-.886 1.418-1.772 2.838-2.542 4.265v1.12H8.85V12h1.26v-1.559h1.007V9.334H10.11V4.002H8.176zM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/></symbol><symbol class="bi bi-4-square" viewBox="0 0 16 16" id="4-square"><path d="M7.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-4-square-fill" viewBox="0 0 16 16" id="4-square-fill"><path d="M6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265Z"/></symbol><symbol class="bi bi-5-circle" viewBox="0 0 16 16" id="5-circle"><path d="M1 8a7 7 0 1 1 14 0A7 7 0 0 1 1 8m15 0A8 8 0 1 0 0 8a8 8 0 0 0 16 0m-8.006 4.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/></symbol><symbol class="bi bi-5-circle-fill" viewBox="0 0 16 16" id="5-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.006 4.158c1.74 0 2.924-1.119 2.924-2.806 0-1.641-1.178-2.584-2.56-2.584-.897 0-1.442.421-1.612.68h-.064l.193-2.344h3.621V4.002H5.791L5.445 8.63h1.149c.193-.358.668-.809 1.435-.809.85 0 1.582.604 1.582 1.57 0 1.085-.779 1.682-1.57 1.682-.697 0-1.389-.31-1.53-1.031H5.276c.065 1.213 1.149 2.115 2.72 2.115Z"/></symbol><symbol class="bi bi-5-square" viewBox="0 0 16 16" id="5-square"><path d="M7.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-5-square-fill" viewBox="0 0 16 16" id="5-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/></symbol><symbol class="bi bi-6-circle" viewBox="0 0 16 16" id="6-circle"><path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/></symbol><symbol class="bi bi-6-circle-fill" viewBox="0 0 16 16" id="6-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.21 3.855c-1.868 0-3.116 1.395-3.116 4.407 0 1.183.228 2.039.597 2.642.569.926 1.477 1.254 2.409 1.254 1.629 0 2.847-1.013 2.847-2.783 0-1.676-1.254-2.555-2.508-2.555-1.125 0-1.752.61-1.98 1.155h-.082c-.012-1.946.727-3.036 1.805-3.036.802 0 1.213.457 1.312.815h1.29c-.06-.908-.962-1.899-2.573-1.899Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/></symbol><symbol class="bi bi-6-square" viewBox="0 0 16 16" id="6-square"><path d="M8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-6-square-fill" viewBox="0 0 16 16" id="6-square-fill"><path d="M8.111 7.863c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Z"/></symbol><symbol class="bi bi-7-circle" viewBox="0 0 16 16" id="7-circle"><path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/></symbol><symbol class="bi bi-7-circle-fill" viewBox="0 0 16 16" id="7-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.37 5.11h3.972v.07L6.025 12H7.42l3.258-6.85V4.002H5.369v1.107Z"/></symbol><symbol class="bi bi-7-square" viewBox="0 0 16 16" id="7-square"><path d="M5.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-7-square-fill" viewBox="0 0 16 16" id="7-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/></symbol><symbol class="bi bi-8-circle" viewBox="0 0 16 16" id="8-circle"><path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.03 1.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/></symbol><symbol class="bi bi-8-circle-fill" viewBox="0 0 16 16" id="8-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.03 1.803c0-1.248-.943-1.84-1.646-1.992v-.065c.598-.187 1.336-.72 1.336-1.781 0-1.225-1.084-2.121-2.654-2.121s-2.66.896-2.66 2.12c0 1.044.709 1.589 1.33 1.782v.065c-.697.152-1.647.732-1.647 2.003 0 1.39 1.19 2.344 2.953 2.344 1.77 0 2.989-.96 2.989-2.355Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/></symbol><symbol class="bi bi-8-square" viewBox="0 0 16 16" id="8-square"><path d="M10.97 9.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-8-square-fill" viewBox="0 0 16 16" id="8-square-fill"><path d="M6.623 6.094c0 .738.586 1.254 1.383 1.254s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23m-.281 3.644c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm8.97 9.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Z"/></symbol><symbol class="bi bi-9-circle" viewBox="0 0 16 16" id="9-circle"><path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.223 4.146c-1.593 0-2.425-.89-2.52-1.798h1.296c.1.357.539.72 1.248.72 1.36 0 1.88-1.353 1.834-3.023h-.076c-.235.627-.873 1.184-1.934 1.184-1.395 0-2.566-.961-2.566-2.666 0-1.711 1.242-2.731 2.87-2.731 1.512 0 2.971.867 2.971 4.014 0 2.836-1.02 4.3-3.123 4.3m.118-3.972c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/></symbol><symbol class="bi bi-9-circle-fill" viewBox="0 0 16 16" id="9-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.223 4.146c2.104 0 3.123-1.464 3.123-4.3 0-3.147-1.459-4.014-2.97-4.014-1.63 0-2.871 1.02-2.871 2.73 0 1.706 1.171 2.667 2.566 2.667 1.06 0 1.7-.557 1.934-1.184h.076c.047 1.67-.475 3.023-1.834 3.023-.71 0-1.149-.363-1.248-.72H5.258c.094.908.926 1.798 2.52 1.798Zm.118-3.972c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/></symbol><symbol class="bi bi-9-square" viewBox="0 0 16 16" id="9-square"><path d="M7.777 12.146c-1.593 0-2.425-.89-2.52-1.798h1.296c.1.357.539.72 1.248.72 1.36 0 1.88-1.353 1.834-3.023h-.076c-.235.627-.873 1.184-1.934 1.184-1.395 0-2.566-.961-2.566-2.666 0-1.711 1.242-2.731 2.87-2.731 1.512 0 2.971.867 2.971 4.014 0 2.836-1.02 4.3-3.123 4.3m.118-3.972c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-9-square-fill" viewBox="0 0 16 16" id="9-square-fill"><path d="M7.895 8.174c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.777 12.146c-1.593 0-2.425-.89-2.52-1.798h1.296c.1.357.539.72 1.248.72 1.36 0 1.88-1.353 1.834-3.023h-.076c-.235.627-.873 1.184-1.934 1.184-1.395 0-2.566-.961-2.566-2.666 0-1.711 1.242-2.731 2.87-2.731 1.512 0 2.971.867 2.971 4.014 0 2.836-1.02 4.3-3.123 4.3"/></symbol><symbol class="bi bi-activity" viewBox="0 0 16 16" id="activity"><path fill-rule="evenodd" d="M6 2a.5.5 0 0 1 .47.33L10 12.036l1.53-4.208A.5.5 0 0 1 12 7.5h3.5a.5.5 0 0 1 0 1h-3.15l-1.88 5.17a.5.5 0 0 1-.94 0L6 3.964 4.47 8.171A.5.5 0 0 1 4 8.5H.5a.5.5 0 0 1 0-1h3.15l1.88-5.17A.5.5 0 0 1 6 2"/></symbol><symbol class="bi bi-airplane" viewBox="0 0 16 16" id="airplane"><path d="M6.428 1.151C6.708.591 7.213 0 8 0s1.292.592 1.572 1.151C9.861 1.73 10 2.431 10 3v3.691l5.17 2.585a1.5 1.5 0 0 1 .83 1.342V12a.5.5 0 0 1-.582.493l-5.507-.918-.375 2.253 1.318 1.318A.5.5 0 0 1 10.5 16h-5a.5.5 0 0 1-.354-.854l1.319-1.318-.376-2.253-5.507.918A.5.5 0 0 1 0 12v-1.382a1.5 1.5 0 0 1 .83-1.342L6 6.691V3c0-.568.14-1.271.428-1.849m.894.448C7.111 2.02 7 2.569 7 3v4a.5.5 0 0 1-.276.447l-5.448 2.724a.5.5 0 0 0-.276.447v.792l5.418-.903a.5.5 0 0 1 .575.41l.5 3a.5.5 0 0 1-.14.437L6.708 15h2.586l-.647-.646a.5.5 0 0 1-.14-.436l.5-3a.5.5 0 0 1 .576-.411L15 11.41v-.792a.5.5 0 0 0-.276-.447L9.276 7.447A.5.5 0 0 1 9 7V3c0-.432-.11-.979-.322-1.401C8.458 1.159 8.213 1 8 1s-.458.158-.678.599"/></symbol><symbol class="bi bi-airplane-engines" viewBox="0 0 16 16" id="airplane-engines"><path d="M8 0c-.787 0-1.292.592-1.572 1.151A4.35 4.35 0 0 0 6 3v3.691l-2 1V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.191l-1.17.585A1.5 1.5 0 0 0 0 10.618V12a.5.5 0 0 0 .582.493l1.631-.272.313.937a.5.5 0 0 0 .948 0l.405-1.214 2.21-.369.375 2.253-1.318 1.318A.5.5 0 0 0 5.5 16h5a.5.5 0 0 0 .354-.854l-1.318-1.318.375-2.253 2.21.369.405 1.214a.5.5 0 0 0 .948 0l.313-.937 1.63.272A.5.5 0 0 0 16 12v-1.382a1.5 1.5 0 0 0-.83-1.342L14 8.691V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v.191l-2-1V3c0-.568-.14-1.271-.428-1.849C9.292.591 8.787 0 8 0M7 3c0-.432.11-.979.322-1.401C7.542 1.159 7.787 1 8 1s.458.158.678.599C8.889 2.02 9 2.569 9 3v4a.5.5 0 0 0 .276.447l5.448 2.724a.5.5 0 0 1 .276.447v.792l-5.418-.903a.5.5 0 0 0-.575.41l-.5 3a.5.5 0 0 0 .14.437l.646.646H6.707l.647-.646a.5.5 0 0 0 .14-.436l-.5-3a.5.5 0 0 0-.576-.411L1 11.41v-.792a.5.5 0 0 1 .276-.447l5.448-2.724A.5.5 0 0 0 7 7z"/></symbol><symbol class="bi bi-airplane-engines-fill" viewBox="0 0 16 16" id="airplane-engines-fill"><path d="M8 0c-.787 0-1.292.592-1.572 1.151A4.35 4.35 0 0 0 6 3v3.691l-2 1V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.191l-1.17.585A1.5 1.5 0 0 0 0 10.618V12a.5.5 0 0 0 .582.493l1.631-.272.313.937a.5.5 0 0 0 .948 0l.405-1.214 2.21-.369.375 2.253-1.318 1.318A.5.5 0 0 0 5.5 16h5a.5.5 0 0 0 .354-.854l-1.318-1.318.375-2.253 2.21.369.405 1.214a.5.5 0 0 0 .948 0l.313-.937 1.63.272A.5.5 0 0 0 16 12v-1.382a1.5 1.5 0 0 0-.83-1.342L14 8.691V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v.191l-2-1V3c0-.568-.14-1.271-.428-1.849C9.292.591 8.787 0 8 0"/></symbol><symbol class="bi bi-airplane-fill" viewBox="0 0 16 16" id="airplane-fill"><path d="M6.428 1.151C6.708.591 7.213 0 8 0s1.292.592 1.572 1.151C9.861 1.73 10 2.431 10 3v3.691l5.17 2.585a1.5 1.5 0 0 1 .83 1.342V12a.5.5 0 0 1-.582.493l-5.507-.918-.375 2.253 1.318 1.318A.5.5 0 0 1 10.5 16h-5a.5.5 0 0 1-.354-.854l1.319-1.318-.376-2.253-5.507.918A.5.5 0 0 1 0 12v-1.382a1.5 1.5 0 0 1 .83-1.342L6 6.691V3c0-.568.14-1.271.428-1.849"/></symbol><symbol class="bi bi-alarm" viewBox="0 0 16 16" id="alarm"><path d="M8.5 5.5a.5.5 0 0 0-1 0v3.362l-1.429 2.38a.5.5 0 1 0 .858.515l1.5-2.5A.5.5 0 0 0 8.5 9z"/><path d="M6.5 0a.5.5 0 0 0 0 1H7v1.07a7.001 7.001 0 0 0-3.273 12.474l-.602.602a.5.5 0 0 0 .707.708l.746-.746A6.97 6.97 0 0 0 8 16a6.97 6.97 0 0 0 3.422-.892l.746.746a.5.5 0 0 0 .707-.708l-.601-.602A7.001 7.001 0 0 0 9 2.07V1h.5a.5.5 0 0 0 0-1zm1.038 3.018a6 6 0 0 1 .924 0 6 6 0 1 1-.924 0M0 3.5c0 .753.333 1.429.86 1.887A8.04 8.04 0 0 1 4.387 1.86 2.5 2.5 0 0 0 0 3.5M13.5 1c-.753 0-1.429.333-1.887.86a8.04 8.04 0 0 1 3.527 3.527A2.5 2.5 0 0 0 13.5 1"/></symbol><symbol class="bi bi-alarm-fill" viewBox="0 0 16 16" id="alarm-fill"><path d="M6 .5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1H9v1.07a7.001 7.001 0 0 1 3.274 12.474l.601.602a.5.5 0 0 1-.707.708l-.746-.746A6.97 6.97 0 0 1 8 16a6.97 6.97 0 0 1-3.422-.892l-.746.746a.5.5 0 0 1-.707-.708l.602-.602A7.001 7.001 0 0 1 7 2.07V1h-.5A.5.5 0 0 1 6 .5m2.5 5a.5.5 0 0 0-1 0v3.362l-1.429 2.38a.5.5 0 1 0 .858.515l1.5-2.5A.5.5 0 0 0 8.5 9zM.86 5.387A2.5 2.5 0 1 1 4.387 1.86 8.04 8.04 0 0 0 .86 5.387M11.613 1.86a2.5 2.5 0 1 1 3.527 3.527 8.04 8.04 0 0 0-3.527-3.527"/></symbol><symbol class="bi bi-alexa" viewBox="0 0 16 16" id="alexa"><path d="M7.996 0A8 8 0 0 0 0 8a8 8 0 0 0 6.93 7.93v-1.613a1.06 1.06 0 0 0-.717-1.008A5.6 5.6 0 0 1 2.4 7.865 5.58 5.58 0 0 1 8.054 2.4a5.6 5.6 0 0 1 5.535 5.81l-.002.046-.012.192-.005.061a5 5 0 0 1-.033.284l-.01.068c-.685 4.516-6.564 7.054-6.596 7.068A7.998 7.998 0 0 0 15.992 8 8 8 0 0 0 7.996.001Z"/></symbol><symbol class="bi bi-align-bottom" viewBox="0 0 16 16" id="align-bottom"><rect width="4" height="12" x="6" y="1" rx="1"/><path d="M1.5 14a.5.5 0 0 0 0 1zm13 1a.5.5 0 0 0 0-1zm-13 0h13v-1h-13z"/></symbol><symbol class="bi bi-align-center" viewBox="0 0 16 16" id="align-center"><path d="M8 1a.5.5 0 0 1 .5.5V6h-1V1.5A.5.5 0 0 1 8 1m0 14a.5.5 0 0 1-.5-.5V10h1v4.5a.5.5 0 0 1-.5.5M2 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-align-end" viewBox="0 0 16 16" id="align-end"><path fill-rule="evenodd" d="M14.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5"/><path d="M13 7a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-align-middle" viewBox="0 0 16 16" id="align-middle"><path d="M6 13a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1zM1 8a.5.5 0 0 0 .5.5H6v-1H1.5A.5.5 0 0 0 1 8m14 0a.5.5 0 0 1-.5.5H10v-1h4.5a.5.5 0 0 1 .5.5"/></symbol><symbol class="bi bi-align-start" viewBox="0 0 16 16" id="align-start"><path fill-rule="evenodd" d="M1.5 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13a.5.5 0 0 1 .5-.5"/><path d="M3 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-align-top" viewBox="0 0 16 16" id="align-top"><rect width="4" height="12" rx="1" transform="matrix(1 0 0 -1 6 15)"/><path d="M1.5 2a.5.5 0 0 1 0-1zm13-1a.5.5 0 0 1 0 1zm-13 0h13v1h-13z"/></symbol><symbol class="bi bi-alipay" viewBox="0 0 16 16" id="alipay"><path d="M2.541 0H13.5a2.55 2.55 0 0 1 2.54 2.563v8.297c-.006 0-.531-.046-2.978-.813-.412-.14-.916-.327-1.479-.536q-.456-.17-.957-.353a13 13 0 0 0 1.325-3.373H8.822V4.649h3.831v-.634h-3.83V2.121H7.26c-.274 0-.274.273-.274.273v1.621H3.11v.634h3.875v1.136h-3.2v.634H9.99c-.227.789-.532 1.53-.894 2.202-2.013-.67-4.161-1.212-5.51-.878-.864.214-1.42.597-1.746.998-1.499 1.84-.424 4.633 2.741 4.633 1.872 0 3.675-1.053 5.072-2.787 2.08 1.008 6.37 2.738 6.387 2.745v.105A2.55 2.55 0 0 1 13.5 16H2.541A2.55 2.55 0 0 1 0 13.437V2.563A2.55 2.55 0 0 1 2.541 0"/><path d="M2.309 9.27c-1.22 1.073-.49 3.034 1.978 3.034 1.434 0 2.868-.925 3.994-2.406-1.602-.789-2.959-1.353-4.425-1.207-.397.04-1.14.217-1.547.58Z"/></symbol><symbol class="bi bi-alphabet" viewBox="0 0 16 16" id="alphabet"><path d="M2.204 11.078c.767 0 1.201-.356 1.406-.737h.059V11h1.216V7.519c0-1.314-.947-1.783-2.11-1.783C1.355 5.736.75 6.42.69 7.27h1.216c.064-.323.313-.552.84-.552s.864.249.864.771v.464H2.346C1.145 7.953.5 8.568.5 9.496c0 .977.693 1.582 1.704 1.582m.42-.947c-.44 0-.845-.235-.845-.718 0-.395.269-.684.84-.684h.991v.538c0 .503-.444.864-.986.864m5.593.937c1.216 0 1.948-.869 1.948-2.31v-.702c0-1.44-.727-2.305-1.929-2.305-.742 0-1.328.347-1.499.889h-.063V3.983h-1.29V11h1.27v-.791h.064c.21.532.776.86 1.499.86Zm-.43-1.025c-.66 0-1.113-.518-1.113-1.28V8.12c0-.825.42-1.343 1.098-1.343.684 0 1.075.518 1.075 1.416v.45c0 .888-.386 1.401-1.06 1.401Zm2.834-1.328c0 1.47.87 2.378 2.305 2.378 1.416 0 2.139-.777 2.158-1.763h-1.186c-.06.425-.313.732-.933.732-.66 0-1.05-.512-1.05-1.352v-.625c0-.81.371-1.328 1.045-1.328.635 0 .879.425.918.776h1.187c-.02-.986-.787-1.806-2.14-1.806-1.41 0-2.304.918-2.304 2.338z"/></symbol><symbol class="bi bi-alphabet-uppercase" viewBox="0 0 16 16" id="alphabet-uppercase"><path d="M1.226 10.88H0l2.056-6.26h1.42l2.047 6.26h-1.29l-.48-1.61H1.707l-.48 1.61ZM2.76 5.818h-.054l-.75 2.532H3.51zm3.217 5.062V4.62h2.56c1.09 0 1.808.582 1.808 1.54 0 .762-.444 1.22-1.05 1.372v.055c.736.074 1.365.587 1.365 1.528 0 1.119-.89 1.766-2.133 1.766zM7.18 5.55v1.675h.8c.812 0 1.171-.308 1.171-.853 0-.51-.328-.822-.898-.822zm0 2.537V9.95h.903c.951 0 1.342-.312 1.342-.909 0-.591-.382-.954-1.095-.954zm5.089-.711v.775c0 1.156.49 1.803 1.347 1.803.705 0 1.163-.454 1.212-1.096H16v.12C15.942 10.173 14.95 11 13.607 11c-1.648 0-2.573-1.073-2.573-2.849v-.78c0-1.775.934-2.871 2.573-2.871 1.347 0 2.34.849 2.393 2.087v.115h-1.172c-.05-.665-.516-1.156-1.212-1.156-.849 0-1.347.67-1.347 1.83"/></symbol><symbol class="bi bi-alt" viewBox="0 0 16 16" id="alt"><path d="M1 13.5a.5.5 0 0 0 .5.5h3.797a.5.5 0 0 0 .439-.26L11 3h3.5a.5.5 0 0 0 0-1h-3.797a.5.5 0 0 0-.439.26L5 13H1.5a.5.5 0 0 0-.5.5m10 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-amazon" viewBox="0 0 16 16" id="amazon"><path d="M10.813 11.968c.157.083.36.074.5-.05l.005.005a90 90 0 0 1 1.623-1.405c.173-.143.143-.372.006-.563l-.125-.17c-.345-.465-.673-.906-.673-1.791v-3.3l.001-.335c.008-1.265.014-2.421-.933-3.305C10.404.274 9.06 0 8.03 0 6.017 0 3.77.75 3.296 3.24c-.047.264.143.404.316.443l2.054.22c.19-.009.33-.196.366-.387.176-.857.896-1.271 1.703-1.271.435 0 .929.16 1.188.55.264.39.26.91.257 1.376v.432q-.3.033-.621.065c-1.113.114-2.397.246-3.36.67C3.873 5.91 2.94 7.08 2.94 8.798c0 2.2 1.387 3.298 3.168 3.298 1.506 0 2.328-.354 3.489-1.54l.167.246c.274.405.456.675 1.047 1.166ZM6.03 8.431C6.03 6.627 7.647 6.3 9.177 6.3v.57c.001.776.002 1.434-.396 2.133-.336.595-.87.961-1.465.961-.812 0-1.286-.619-1.286-1.533M.435 12.174c2.629 1.603 6.698 4.084 13.183.997.28-.116.475.078.199.431C13.538 13.96 11.312 16 7.57 16 3.832 16 .968 13.446.094 12.386c-.24-.275.036-.4.199-.299z"/><path d="M13.828 11.943c.567-.07 1.468-.027 1.645.204.135.176-.004.966-.233 1.533-.23.563-.572.961-.762 1.115s-.333.094-.23-.137c.105-.23.684-1.663.455-1.963-.213-.278-1.177-.177-1.625-.13l-.09.009q-.142.013-.233.024c-.193.021-.245.027-.274-.032-.074-.209.779-.556 1.347-.623"/></symbol><symbol class="bi bi-amd" viewBox="0 0 16 16" id="amd"><path d="m.334 0 4.358 4.359h7.15v7.15l4.358 4.358V0zM.2 9.72l4.487-4.488v6.281h6.28L6.48 16H.2z"/></symbol><symbol class="bi bi-android" viewBox="0 0 16 16" id="android"><path d="M2.76 3.061a.5.5 0 0 1 .679.2l1.283 2.352A8.9 8.9 0 0 1 8 5a8.9 8.9 0 0 1 3.278.613l1.283-2.352a.5.5 0 1 1 .878.478l-1.252 2.295C14.475 7.266 16 9.477 16 12H0c0-2.523 1.525-4.734 3.813-5.966L2.56 3.74a.5.5 0 0 1 .2-.678ZM5 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2m6 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-android2" viewBox="0 0 16 16" id="android2"><path d="m10.213 1.471.691-1.26q.069-.124-.048-.192-.128-.057-.195.058l-.7 1.27A4.8 4.8 0 0 0 8.005.941q-1.032 0-1.956.404l-.7-1.27Q5.281-.037 5.154.02q-.117.069-.049.193l.691 1.259a4.25 4.25 0 0 0-1.673 1.476A3.7 3.7 0 0 0 3.5 5.02h9q0-1.125-.623-2.072a4.27 4.27 0 0 0-1.664-1.476ZM6.22 3.303a.37.37 0 0 1-.267.11.35.35 0 0 1-.263-.11.37.37 0 0 1-.107-.264.37.37 0 0 1 .107-.265.35.35 0 0 1 .263-.11q.155 0 .267.11a.36.36 0 0 1 .112.265.36.36 0 0 1-.112.264m4.101 0a.35.35 0 0 1-.262.11.37.37 0 0 1-.268-.11.36.36 0 0 1-.112-.264q0-.154.112-.265a.37.37 0 0 1 .268-.11q.155 0 .262.11a.37.37 0 0 1 .107.265q0 .153-.107.264M3.5 11.77q0 .441.311.75.311.306.76.307h.758l.01 2.182q0 .414.292.703a.96.96 0 0 0 .7.288.97.97 0 0 0 .71-.288.95.95 0 0 0 .292-.703v-2.182h1.343v2.182q0 .414.292.703a.97.97 0 0 0 .71.288.97.97 0 0 0 .71-.288.95.95 0 0 0 .292-.703v-2.182h.76q.436 0 .749-.308.31-.307.311-.75V5.365h-9zm10.495-6.587a.98.98 0 0 0-.702.278.9.9 0 0 0-.293.685v4.063q0 .406.293.69a.97.97 0 0 0 .702.284q.42 0 .712-.284a.92.92 0 0 0 .293-.69V6.146a.9.9 0 0 0-.293-.685 1 1 0 0 0-.712-.278m-12.702.283a1 1 0 0 1 .712-.283q.41 0 .702.283a.9.9 0 0 1 .293.68v4.063a.93.93 0 0 1-.288.69.97.97 0 0 1-.707.284 1 1 0 0 1-.712-.284.92.92 0 0 1-.293-.69V6.146q0-.396.293-.68"/></symbol><symbol class="bi bi-app" viewBox="0 0 16 16" id="app"><path d="M11 2a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4z"/></symbol><symbol class="bi bi-app-indicator" viewBox="0 0 16 16" id="app-indicator"><path d="M5.5 2A3.5 3.5 0 0 0 2 5.5v5A3.5 3.5 0 0 0 5.5 14h5a3.5 3.5 0 0 0 3.5-3.5V8a.5.5 0 0 1 1 0v2.5a4.5 4.5 0 0 1-4.5 4.5h-5A4.5 4.5 0 0 1 1 10.5v-5A4.5 4.5 0 0 1 5.5 1H8a.5.5 0 0 1 0 1z"/><path d="M16 3a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/></symbol><symbol class="bi bi-apple" viewBox="0 0 16 16" id="apple"><path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516s1.52.087 2.475-1.258.762-2.391.728-2.43m3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422s1.675-2.789 1.698-2.854-.597-.79-1.254-1.157a3.7 3.7 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56s.625 1.924 1.273 2.796c.576.984 1.34 1.667 1.659 1.899s1.219.386 1.843.067c.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758q.52-1.185.473-1.282"/><path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516s1.52.087 2.475-1.258.762-2.391.728-2.43m3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422s1.675-2.789 1.698-2.854-.597-.79-1.254-1.157a3.7 3.7 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56s.625 1.924 1.273 2.796c.576.984 1.34 1.667 1.659 1.899s1.219.386 1.843.067c.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758q.52-1.185.473-1.282"/></symbol><symbol class="bi bi-archive" viewBox="0 0 16 16" id="archive"><path d="M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v7.5a2.5 2.5 0 0 1-2.5 2.5h-9A2.5 2.5 0 0 1 1 12.5V5a1 1 0 0 1-1-1zm2 3v7.5A1.5 1.5 0 0 0 3.5 14h9a1.5 1.5 0 0 0 1.5-1.5V5zm13-3H1v2h14zM5 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-archive-fill" viewBox="0 0 16 16" id="archive-fill"><path d="M12.643 15C13.979 15 15 13.845 15 12.5V5H1v7.5C1 13.845 2.021 15 3.357 15zM5.5 7h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1M.8 1a.8.8 0 0 0-.8.8V3a.8.8 0 0 0 .8.8h14.4A.8.8 0 0 0 16 3V1.8a.8.8 0 0 0-.8-.8z"/></symbol><symbol class="bi bi-arrow-90deg-down" viewBox="0 0 16 16" id="arrow-90deg-down"><path fill-rule="evenodd" d="M4.854 14.854a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L4 13.293V3.5A2.5 2.5 0 0 1 6.5 1h8a.5.5 0 0 1 0 1h-8A1.5 1.5 0 0 0 5 3.5v9.793l3.146-3.147a.5.5 0 0 1 .708.708z"/></symbol><symbol class="bi bi-arrow-90deg-left" viewBox="0 0 16 16" id="arrow-90deg-left"><path fill-rule="evenodd" d="M1.146 4.854a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 4H12.5A2.5 2.5 0 0 1 15 6.5v8a.5.5 0 0 1-1 0v-8A1.5 1.5 0 0 0 12.5 5H2.707l3.147 3.146a.5.5 0 1 1-.708.708z"/></symbol><symbol class="bi bi-arrow-90deg-right" viewBox="0 0 16 16" id="arrow-90deg-right"><path fill-rule="evenodd" d="M14.854 4.854a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 4H3.5A2.5 2.5 0 0 0 1 6.5v8a.5.5 0 0 0 1 0v-8A1.5 1.5 0 0 1 3.5 5h9.793l-3.147 3.146a.5.5 0 0 0 .708.708z"/></symbol><symbol class="bi bi-arrow-90deg-up" viewBox="0 0 16 16" id="arrow-90deg-up"><path fill-rule="evenodd" d="M4.854 1.146a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L4 2.707V12.5A2.5 2.5 0 0 0 6.5 15h8a.5.5 0 0 0 0-1h-8A1.5 1.5 0 0 1 5 12.5V2.707l3.146 3.147a.5.5 0 1 0 .708-.708z"/></symbol><symbol class="bi bi-arrow-bar-down" viewBox="0 0 16 16" id="arrow-bar-down"><path fill-rule="evenodd" d="M1 3.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13a.5.5 0 0 1-.5-.5M8 6a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 .708-.708L7.5 12.293V6.5A.5.5 0 0 1 8 6"/></symbol><symbol class="bi bi-arrow-bar-left" viewBox="0 0 16 16" id="arrow-bar-left"><path fill-rule="evenodd" d="M12.5 15a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5M10 8a.5.5 0 0 1-.5.5H3.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L3.707 7.5H9.5a.5.5 0 0 1 .5.5"/></symbol><symbol class="bi bi-arrow-bar-right" viewBox="0 0 16 16" id="arrow-bar-right"><path fill-rule="evenodd" d="M6 8a.5.5 0 0 0 .5.5h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L12.293 7.5H6.5A.5.5 0 0 0 6 8m-2.5 7a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5"/></symbol><symbol class="bi bi-arrow-bar-up" viewBox="0 0 16 16" id="arrow-bar-up"><path fill-rule="evenodd" d="M8 10a.5.5 0 0 0 .5-.5V3.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 3.707V9.5a.5.5 0 0 0 .5.5m-7 2.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-arrow-clockwise" viewBox="0 0 16 16" id="arrow-clockwise"><path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2z"/><path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466"/></symbol><symbol class="bi bi-arrow-counterclockwise" viewBox="0 0 16 16" id="arrow-counterclockwise"><path fill-rule="evenodd" d="M8 3a5 5 0 1 1-4.546 2.914.5.5 0 0 0-.908-.417A6 6 0 1 0 8 2z"/><path d="M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466"/></symbol><symbol class="bi bi-arrow-down" viewBox="0 0 16 16" id="arrow-down"><path fill-rule="evenodd" d="M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1"/></symbol><symbol class="bi bi-arrow-down-circle" viewBox="0 0 16 16" id="arrow-down-circle"><path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.5 4.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293z"/></symbol><symbol class="bi bi-arrow-down-circle-fill" viewBox="0 0 16 16" id="arrow-down-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.5 4.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293z"/></symbol><symbol class="bi bi-arrow-down-left" viewBox="0 0 16 16" id="arrow-down-left"><path fill-rule="evenodd" d="M2 13.5a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 0-1H3.707L13.854 2.854a.5.5 0 0 0-.708-.708L3 12.293V7.5a.5.5 0 0 0-1 0z"/></symbol><symbol class="bi bi-arrow-down-left-circle" viewBox="0 0 16 16" id="arrow-down-left-circle"><path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.904-2.854a.5.5 0 1 1 .707.708L6.707 9.95h2.768a.5.5 0 1 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.475a.5.5 0 1 1 1 0v2.768z"/></symbol><symbol class="bi bi-arrow-down-left-circle-fill" viewBox="0 0 16 16" id="arrow-down-left-circle-fill"><path d="M16 8A8 8 0 1 0 0 8a8 8 0 0 0 16 0m-5.904-2.803a.5.5 0 1 1 .707.707L6.707 10h2.768a.5.5 0 0 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.525a.5.5 0 0 1 1 0v2.768z"/></symbol><symbol class="bi bi-arrow-down-left-square" viewBox="0 0 16 16" id="arrow-down-left-square"><path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm10.096 3.146a.5.5 0 1 1 .707.708L6.707 9.95h2.768a.5.5 0 1 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.475a.5.5 0 1 1 1 0v2.768z"/></symbol><symbol class="bi bi-arrow-down-left-square-fill" viewBox="0 0 16 16" id="arrow-down-left-square-fill"><path d="M2 16a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2zm8.096-10.803L6 9.293V6.525a.5.5 0 0 0-1 0V10.5a.5.5 0 0 0 .5.5h3.975a.5.5 0 0 0 0-1H6.707l4.096-4.096a.5.5 0 1 0-.707-.707"/></symbol><symbol class="bi bi-arrow-down-right" viewBox="0 0 16 16" id="arrow-down-right"><path fill-rule="evenodd" d="M14 13.5a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1 0-1h4.793L2.146 2.854a.5.5 0 1 1 .708-.708L13 12.293V7.5a.5.5 0 0 1 1 0z"/></symbol><symbol class="bi bi-arrow-down-right-circle" viewBox="0 0 16 16" id="arrow-down-right-circle"><path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.854 5.146a.5.5 0 1 0-.708.708L9.243 9.95H6.475a.5.5 0 1 0 0 1h3.975a.5.5 0 0 0 .5-.5V6.475a.5.5 0 1 0-1 0v2.768z"/></symbol><symbol class="bi bi-arrow-down-right-circle-fill" viewBox="0 0 16 16" id="arrow-down-right-circle-fill"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m5.904-2.803a.5.5 0 1 0-.707.707L9.293 10H6.525a.5.5 0 0 0 0 1H10.5a.5.5 0 0 0 .5-.5V6.525a.5.5 0 0 0-1 0v2.768z"/></symbol><symbol class="bi bi-arrow-down-right-square" viewBox="0 0 16 16" id="arrow-down-right-square"><path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.854 3.146a.5.5 0 1 0-.708.708L9.243 9.95H6.475a.5.5 0 1 0 0 1h3.975a.5.5 0 0 0 .5-.5V6.475a.5.5 0 1 0-1 0v2.768z"/></symbol><symbol class="bi bi-arrow-down-right-square-fill" viewBox="0 0 16 16" id="arrow-down-right-square-fill"><path d="M14 16a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2zM5.904 5.197 10 9.293V6.525a.5.5 0 0 1 1 0V10.5a.5.5 0 0 1-.5.5H6.525a.5.5 0 0 1 0-1h2.768L5.197 5.904a.5.5 0 0 1 .707-.707"/></symbol><symbol class="bi bi-arrow-down-short" viewBox="0 0 16 16" id="arrow-down-short"><path fill-rule="evenodd" d="M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4"/></symbol><symbol class="bi bi-arrow-down-square" viewBox="0 0 16 16" id="arrow-down-square"><path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8.5 2.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293z"/></symbol><symbol class="bi bi-arrow-down-square-fill" viewBox="0 0 16 16" id="arrow-down-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.5 4.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-arrow-down-up" viewBox="0 0 16 16" id="arrow-down-up"><path fill-rule="evenodd" d="M11.5 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L11 2.707V14.5a.5.5 0 0 0 .5.5m-7-14a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L4 13.293V1.5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-arrow-left" viewBox="0 0 16 16" id="arrow-left"><path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8"/></symbol><symbol class="bi bi-arrow-left-circle" viewBox="0 0 16 16" id="arrow-left-circle"><path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-4.5-.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5z"/></symbol><symbol class="bi bi-arrow-left-circle-fill" viewBox="0 0 16 16" id="arrow-left-circle-fill"><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0m3.5 7.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5z"/></symbol><symbol class="bi bi-arrow-left-right" viewBox="0 0 16 16" id="arrow-left-right"><path fill-rule="evenodd" d="M1 11.5a.5.5 0 0 0 .5.5h11.793l-3.147 3.146a.5.5 0 0 0 .708.708l4-4a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 11H1.5a.5.5 0 0 0-.5.5m14-7a.5.5 0 0 1-.5.5H2.707l3.147 3.146a.5.5 0 1 1-.708.708l-4-4a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 4H14.5a.5.5 0 0 1 .5.5"/></symbol><symbol class="bi bi-arrow-left-short" viewBox="0 0 16 16" id="arrow-left-short"><path fill-rule="evenodd" d="M12 8a.5.5 0 0 1-.5.5H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5a.5.5 0 0 1 .5.5"/></symbol><symbol class="bi bi-arrow-left-square" viewBox="0 0 16 16" id="arrow-left-square"><path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm11.5 5.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5z"/></symbol><symbol class="bi bi-arrow-left-square-fill" viewBox="0 0 16 16" id="arrow-left-square-fill"><path d="M16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2zm-4.5-6.5H5.707l2.147-2.146a.5.5 0 1 0-.708-.708l-3 3a.5.5 0 0 0 0 .708l3 3a.5.5 0 0 0 .708-.708L5.707 8.5H11.5a.5.5 0 0 0 0-1"/></symbol><symbol class="bi bi-arrow-repeat" viewBox="0 0 16 16" id="arrow-repeat"><path d="M11.534 7h3.932a.25.25 0 0 1 .192.41l-1.966 2.36a.25.25 0 0 1-.384 0l-1.966-2.36a.25.25 0 0 1 .192-.41m-11 2h3.932a.25.25 0 0 0 .192-.41L2.692 6.23a.25.25 0 0 0-.384 0L.342 8.59A.25.25 0 0 0 .534 9"/><path fill-rule="evenodd" d="M8 3c-1.552 0-2.94.707-3.857 1.818a.5.5 0 1 1-.771-.636A6.002 6.002 0 0 1 13.917 7H12.9A5 5 0 0 0 8 3M3.1 9a5.002 5.002 0 0 0 8.757 2.182.5.5 0 1 1 .771.636A6.002 6.002 0 0 1 2.083 9z"/></symbol><symbol class="bi bi-arrow-return-left" viewBox="0 0 16 16" id="arrow-return-left"><path fill-rule="evenodd" d="M14.5 1.5a.5.5 0 0 1 .5.5v4.8a2.5 2.5 0 0 1-2.5 2.5H2.707l3.347 3.346a.5.5 0 0 1-.708.708l-4.2-4.2a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 8.3H12.5A1.5 1.5 0 0 0 14 6.8V2a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-arrow-return-right" viewBox="0 0 16 16" id="arrow-return-right"><path fill-rule="evenodd" d="M1.5 1.5A.5.5 0 0 0 1 2v4.8a2.5 2.5 0 0 0 2.5 2.5h9.793l-3.347 3.346a.5.5 0 0 0 .708.708l4.2-4.2a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 8.3H3.5A1.5 1.5 0 0 1 2 6.8V2a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-arrow-right" viewBox="0 0 16 16" id="arrow-right"><path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8"/></symbol><symbol class="bi bi-arrow-right-circle" viewBox="0 0 16 16" id="arrow-right-circle"><path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M4.5 7.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5z"/></symbol><symbol class="bi bi-arrow-right-circle-fill" viewBox="0 0 16 16" id="arrow-right-circle-fill"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M4.5 7.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5z"/></symbol><symbol class="bi bi-arrow-right-short" viewBox="0 0 16 16" id="arrow-right-short"><path fill-rule="evenodd" d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8"/></symbol><symbol class="bi bi-arrow-right-square" viewBox="0 0 16 16" id="arrow-right-square"><path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm4.5 5.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5z"/></symbol><symbol class="bi bi-arrow-right-square-fill" viewBox="0 0 16 16" id="arrow-right-square-fill"><path d="M0 14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2zm4.5-6.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-arrow-through-heart" viewBox="0 0 16 16" id="arrow-through-heart"><path fill-rule="evenodd" d="M2.854 15.854A.5.5 0 0 1 2 15.5V14H.5a.5.5 0 0 1-.354-.854l1.5-1.5A.5.5 0 0 1 2 11.5h1.793l.53-.53c-.771-.802-1.328-1.58-1.704-2.32-.798-1.575-.775-2.996-.213-4.092C3.426 2.565 6.18 1.809 8 3.233c1.25-.98 2.944-.928 4.212-.152L13.292 2 12.147.854A.5.5 0 0 1 12.5 0h3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.854.354L14 2.707l-1.006 1.006c.236.248.44.531.6.845.562 1.096.585 2.517-.213 4.092-.793 1.563-2.395 3.288-5.105 5.08L8 13.912l-.276-.182a22 22 0 0 1-2.685-2.062l-.539.54V14a.5.5 0 0 1-.146.354zm2.893-4.894A20.4 20.4 0 0 0 8 12.71c2.456-1.666 3.827-3.207 4.489-4.512.679-1.34.607-2.42.215-3.185-.817-1.595-3.087-2.054-4.346-.761L8 4.62l-.358-.368c-1.259-1.293-3.53-.834-4.346.761-.392.766-.464 1.845.215 3.185.323.636.815 1.33 1.519 2.065l1.866-1.867a.5.5 0 1 1 .708.708z"/></symbol><symbol class="bi bi-arrow-through-heart-fill" viewBox="0 0 16 16" id="arrow-through-heart-fill"><path fill-rule="evenodd" d="M2.854 15.854A.5.5 0 0 1 2 15.5V14H.5a.5.5 0 0 1-.354-.854l1.5-1.5A.5.5 0 0 1 2 11.5h1.793l3.103-3.104a.5.5 0 1 1 .708.708L4.5 12.207V14a.5.5 0 0 1-.146.354zM16 3.5a.5.5 0 0 1-.854.354L14 2.707l-1.006 1.006c.236.248.44.531.6.845.562 1.096.585 2.517-.213 4.092-.793 1.563-2.395 3.288-5.105 5.08L8 13.912l-.276-.182A24 24 0 0 1 5.8 12.323L8.31 9.81a1.5 1.5 0 0 0-2.122-2.122L3.657 10.22a9 9 0 0 1-1.039-1.57c-.798-1.576-.775-2.997-.213-4.093C3.426 2.565 6.18 1.809 8 3.233c1.25-.98 2.944-.928 4.212-.152L13.292 2 12.147.854A.5.5 0 0 1 12.5 0h3a.5.5 0 0 1 .5.5z"/></symbol><symbol class="bi bi-arrow-up" viewBox="0 0 16 16" id="arrow-up"><path fill-rule="evenodd" d="M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5"/></symbol><symbol class="bi bi-arrow-up-circle" viewBox="0 0 16 16" id="arrow-up-circle"><path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-7.5 3.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707z"/></symbol><symbol class="bi bi-arrow-up-circle-fill" viewBox="0 0 16 16" id="arrow-up-circle-fill"><path d="M16 8A8 8 0 1 0 0 8a8 8 0 0 0 16 0m-7.5 3.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707z"/></symbol><symbol class="bi bi-arrow-up-left" viewBox="0 0 16 16" id="arrow-up-left"><path fill-rule="evenodd" d="M2 2.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1H3.707l10.147 10.146a.5.5 0 0 1-.708.708L3 3.707V8.5a.5.5 0 0 1-1 0z"/></symbol><symbol class="bi bi-arrow-up-left-circle" viewBox="0 0 16 16" id="arrow-up-left-circle"><path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.904 2.803a.5.5 0 1 0 .707-.707L6.707 6h2.768a.5.5 0 1 0 0-1H5.5a.5.5 0 0 0-.5.5v3.975a.5.5 0 0 0 1 0V6.707z"/></symbol><symbol class="bi bi-arrow-up-left-circle-fill" viewBox="0 0 16 16" id="arrow-up-left-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.904 2.803a.5.5 0 1 0 .707-.707L6.707 6h2.768a.5.5 0 1 0 0-1H5.5a.5.5 0 0 0-.5.5v3.975a.5.5 0 0 0 1 0V6.707z"/></symbol><symbol class="bi bi-arrow-up-left-square" viewBox="0 0 16 16" id="arrow-up-left-square"><path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm10.096 8.803a.5.5 0 1 0 .707-.707L6.707 6h2.768a.5.5 0 1 0 0-1H5.5a.5.5 0 0 0-.5.5v3.975a.5.5 0 0 0 1 0V6.707z"/></symbol><symbol class="bi bi-arrow-up-left-square-fill" viewBox="0 0 16 16" id="arrow-up-left-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm8.096 10.803L6 6.707v2.768a.5.5 0 0 1-1 0V5.5a.5.5 0 0 1 .5-.5h3.975a.5.5 0 1 1 0 1H6.707l4.096 4.096a.5.5 0 1 1-.707.707"/></symbol><symbol class="bi bi-arrow-up-right" viewBox="0 0 16 16" id="arrow-up-right"><path fill-rule="evenodd" d="M14 2.5a.5.5 0 0 0-.5-.5h-6a.5.5 0 0 0 0 1h4.793L2.146 13.146a.5.5 0 0 0 .708.708L13 3.707V8.5a.5.5 0 0 0 1 0z"/></symbol><symbol class="bi bi-arrow-up-right-circle" viewBox="0 0 16 16" id="arrow-up-right-circle"><path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.854 10.803a.5.5 0 1 1-.708-.707L9.243 6H6.475a.5.5 0 1 1 0-1h3.975a.5.5 0 0 1 .5.5v3.975a.5.5 0 1 1-1 0V6.707z"/></symbol><symbol class="bi bi-arrow-up-right-circle-fill" viewBox="0 0 16 16" id="arrow-up-right-circle-fill"><path d="M0 8a8 8 0 1 0 16 0A8 8 0 0 0 0 8m5.904 2.803a.5.5 0 1 1-.707-.707L9.293 6H6.525a.5.5 0 1 1 0-1H10.5a.5.5 0 0 1 .5.5v3.975a.5.5 0 0 1-1 0V6.707z"/></symbol><symbol class="bi bi-arrow-up-right-square" viewBox="0 0 16 16" id="arrow-up-right-square"><path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.854 8.803a.5.5 0 1 1-.708-.707L9.243 6H6.475a.5.5 0 1 1 0-1h3.975a.5.5 0 0 1 .5.5v3.975a.5.5 0 1 1-1 0V6.707z"/></symbol><symbol class="bi bi-arrow-up-right-square-fill" viewBox="0 0 16 16" id="arrow-up-right-square-fill"><path d="M14 0a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zM5.904 10.803 10 6.707v2.768a.5.5 0 0 0 1 0V5.5a.5.5 0 0 0-.5-.5H6.525a.5.5 0 1 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 .707.707"/></symbol><symbol class="bi bi-arrow-up-short" viewBox="0 0 16 16" id="arrow-up-short"><path fill-rule="evenodd" d="M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5"/></symbol><symbol class="bi bi-arrow-up-square" viewBox="0 0 16 16" id="arrow-up-square"><path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8.5 9.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707z"/></symbol><symbol class="bi bi-arrow-up-square-fill" viewBox="0 0 16 16" id="arrow-up-square-fill"><path d="M2 16a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2zm6.5-4.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 1 0"/></symbol><symbol class="bi bi-arrows" viewBox="0 0 16 16" id="arrows"><path d="M1.146 8.354a.5.5 0 0 1 0-.708l2-2a.5.5 0 1 1 .708.708L2.707 7.5h10.586l-1.147-1.146a.5.5 0 0 1 .708-.708l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L13.293 8.5H2.707l1.147 1.146a.5.5 0 0 1-.708.708z"/></symbol><symbol class="bi bi-arrows-angle-contract" viewBox="0 0 16 16" id="arrows-angle-contract"><path fill-rule="evenodd" d="M.172 15.828a.5.5 0 0 0 .707 0l4.096-4.096V14.5a.5.5 0 1 0 1 0v-3.975a.5.5 0 0 0-.5-.5H1.5a.5.5 0 0 0 0 1h2.768L.172 15.121a.5.5 0 0 0 0 .707M15.828.172a.5.5 0 0 0-.707 0l-4.096 4.096V1.5a.5.5 0 1 0-1 0v3.975a.5.5 0 0 0 .5.5H14.5a.5.5 0 0 0 0-1h-2.768L15.828.879a.5.5 0 0 0 0-.707"/></symbol><symbol class="bi bi-arrows-angle-expand" viewBox="0 0 16 16" id="arrows-angle-expand"><path fill-rule="evenodd" d="M5.828 10.172a.5.5 0 0 0-.707 0l-4.096 4.096V11.5a.5.5 0 0 0-1 0v3.975a.5.5 0 0 0 .5.5H4.5a.5.5 0 0 0 0-1H1.732l4.096-4.096a.5.5 0 0 0 0-.707m4.344-4.344a.5.5 0 0 0 .707 0l4.096-4.096V4.5a.5.5 0 1 0 1 0V.525a.5.5 0 0 0-.5-.5H11.5a.5.5 0 0 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 0 .707"/></symbol><symbol class="bi bi-arrows-collapse" viewBox="0 0 16 16" id="arrows-collapse"><path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8m7-8a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 4.293V.5A.5.5 0 0 1 8 0m-.5 11.707-1.146 1.147a.5.5 0 0 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 11.707V15.5a.5.5 0 0 1-1 0z"/></symbol><symbol class="bi bi-arrows-collapse-vertical" viewBox="0 0 16 16" id="arrows-collapse-vertical"><path d="M8 15a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5M0 8a.5.5 0 0 1 .5-.5h3.793L3.146 6.354a.5.5 0 1 1 .708-.708l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L4.293 8.5H.5A.5.5 0 0 1 0 8m11.707.5 1.147 1.146a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708l2-2a.5.5 0 0 1 .708.708L11.707 7.5H15.5a.5.5 0 0 1 0 1z"/></symbol><symbol class="bi bi-arrows-expand" viewBox="0 0 16 16" id="arrows-expand"><path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8M7.646.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 1.707V5.5a.5.5 0 0 1-1 0V1.707L6.354 2.854a.5.5 0 1 1-.708-.708zM8 10a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7.5 14.293V10.5A.5.5 0 0 1 8 10"/></symbol><symbol class="bi bi-arrows-expand-vertical" viewBox="0 0 16 16" id="arrows-expand-vertical"><path d="M8 15a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5M.146 8.354a.5.5 0 0 1 0-.708l2-2a.5.5 0 1 1 .708.708L1.707 7.5H5.5a.5.5 0 0 1 0 1H1.707l1.147 1.146a.5.5 0 0 1-.708.708zM10 8a.5.5 0 0 1 .5-.5h3.793l-1.147-1.146a.5.5 0 0 1 .708-.708l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L14.293 8.5H10.5A.5.5 0 0 1 10 8"/></symbol><symbol class="bi bi-arrows-fullscreen" viewBox="0 0 16 16" id="arrows-fullscreen"><path fill-rule="evenodd" d="M5.828 10.172a.5.5 0 0 0-.707 0l-4.096 4.096V11.5a.5.5 0 0 0-1 0v3.975a.5.5 0 0 0 .5.5H4.5a.5.5 0 0 0 0-1H1.732l4.096-4.096a.5.5 0 0 0 0-.707m4.344 0a.5.5 0 0 1 .707 0l4.096 4.096V11.5a.5.5 0 1 1 1 0v3.975a.5.5 0 0 1-.5.5H11.5a.5.5 0 0 1 0-1h2.768l-4.096-4.096a.5.5 0 0 1 0-.707m0-4.344a.5.5 0 0 0 .707 0l4.096-4.096V4.5a.5.5 0 1 0 1 0V.525a.5.5 0 0 0-.5-.5H11.5a.5.5 0 0 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 0 .707m-4.344 0a.5.5 0 0 1-.707 0L1.025 1.732V4.5a.5.5 0 0 1-1 0V.525a.5.5 0 0 1 .5-.5H4.5a.5.5 0 0 1 0 1H1.732l4.096 4.096a.5.5 0 0 1 0 .707"/></symbol><symbol class="bi bi-arrows-move" viewBox="0 0 16 16" id="arrows-move"><path fill-rule="evenodd" d="M7.646.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 1.707V5.5a.5.5 0 0 1-1 0V1.707L6.354 2.854a.5.5 0 1 1-.708-.708zM8 10a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7.5 14.293V10.5A.5.5 0 0 1 8 10M.146 8.354a.5.5 0 0 1 0-.708l2-2a.5.5 0 1 1 .708.708L1.707 7.5H5.5a.5.5 0 0 1 0 1H1.707l1.147 1.146a.5.5 0 0 1-.708.708zM10 8a.5.5 0 0 1 .5-.5h3.793l-1.147-1.146a.5.5 0 0 1 .708-.708l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L14.293 8.5H10.5A.5.5 0 0 1 10 8"/></symbol><symbol class="bi bi-arrows-vertical" viewBox="0 0 16 16" id="arrows-vertical"><path d="M8.354 14.854a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7.5 13.293V2.707L6.354 3.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 2.707v10.586l1.146-1.147a.5.5 0 0 1 .708.708z"/></symbol><symbol class="bi bi-aspect-ratio" viewBox="0 0 16 16" id="aspect-ratio"><path d="M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5zM1.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5z"/><path d="M2 4.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1H3v2.5a.5.5 0 0 1-1 0zm12 7a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1 0-1H13V8.5a.5.5 0 0 1 1 0z"/></symbol><symbol class="bi bi-aspect-ratio-fill" viewBox="0 0 16 16" id="aspect-ratio-fill"><path d="M0 12.5v-9A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5M2.5 4a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 1 0V5h2.5a.5.5 0 0 0 0-1zm11 8a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-1 0V11h-2.5a.5.5 0 0 0 0 1z"/></symbol><symbol class="bi bi-asterisk" viewBox="0 0 16 16" id="asterisk"><path d="M8 0a1 1 0 0 1 1 1v5.268l4.562-2.634a1 1 0 1 1 1 1.732L10 8l4.562 2.634a1 1 0 1 1-1 1.732L9 9.732V15a1 1 0 1 1-2 0V9.732l-4.562 2.634a1 1 0 1 1-1-1.732L6 8 1.438 5.366a1 1 0 0 1 1-1.732L7 6.268V1a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-at" viewBox="0 0 16 16" id="at"><path d="M13.106 7.222c0-2.967-2.249-5.032-5.482-5.032-3.35 0-5.646 2.318-5.646 5.702 0 3.493 2.235 5.708 5.762 5.708.862 0 1.689-.123 2.304-.335v-.862c-.43.199-1.354.328-2.29.328-2.926 0-4.813-1.88-4.813-4.798 0-2.844 1.921-4.881 4.594-4.881 2.735 0 4.608 1.688 4.608 4.156 0 1.682-.554 2.769-1.416 2.769-.492 0-.772-.28-.772-.76V5.206H8.923v.834h-.11c-.266-.595-.881-.964-1.6-.964-1.4 0-2.378 1.162-2.378 2.823 0 1.737.957 2.906 2.379 2.906.8 0 1.415-.39 1.709-1.087h.11c.081.67.703 1.148 1.503 1.148 1.572 0 2.57-1.415 2.57-3.643zm-7.177.704c0-1.197.54-1.907 1.456-1.907.93 0 1.524.738 1.524 1.907S8.308 9.84 7.371 9.84c-.895 0-1.442-.725-1.442-1.914"/></symbol><symbol class="bi bi-award" viewBox="0 0 16 16" id="award"><path d="M9.669.864 8 0 6.331.864l-1.858.282-.842 1.68-1.337 1.32L2.6 6l-.306 1.854 1.337 1.32.842 1.68 1.858.282L8 12l1.669-.864 1.858-.282.842-1.68 1.337-1.32L13.4 6l.306-1.854-1.337-1.32-.842-1.68zm1.196 1.193.684 1.365 1.086 1.072L12.387 6l.248 1.506-1.086 1.072-.684 1.365-1.51.229L8 10.874l-1.355-.702-1.51-.229-.684-1.365-1.086-1.072L3.614 6l-.25-1.506 1.087-1.072.684-1.365 1.51-.229L8 1.126l1.356.702z"/><path d="M4 11.794V16l4-1 4 1v-4.206l-2.018.306L8 13.126 6.018 12.1z"/></symbol><symbol class="bi bi-award-fill" viewBox="0 0 16 16" id="award-fill"><path d="m8 0 1.669.864 1.858.282.842 1.68 1.337 1.32L13.4 6l.306 1.854-1.337 1.32-.842 1.68-1.858.282L8 12l-1.669-.864-1.858-.282-.842-1.68-1.337-1.32L2.6 6l-.306-1.854 1.337-1.32.842-1.68L6.331.864z"/><path d="M4 11.794V16l4-1 4 1v-4.206l-2.018.306L8 13.126 6.018 12.1z"/></symbol><symbol class="bi bi-back" viewBox="0 0 16 16" id="back"><path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-backpack" viewBox="0 0 16 16" id="backpack"><path d="M4.04 7.43a4 4 0 0 1 7.92 0 .5.5 0 1 1-.99.14 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.14M4 9.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm1 .5v3h6v-3h-1v.5a.5.5 0 0 1-1 0V10z"/><path d="M6 2.341V2a2 2 0 1 1 4 0v.341c2.33.824 4 3.047 4 5.659v5.5a2.5 2.5 0 0 1-2.5 2.5h-7A2.5 2.5 0 0 1 2 13.5V8a6 6 0 0 1 4-5.659M7 2v.083a6 6 0 0 1 2 0V2a1 1 0 0 0-2 0m1 1a5 5 0 0 0-5 5v5.5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5V8a5 5 0 0 0-5-5"/></symbol><symbol class="bi bi-backpack-fill" viewBox="0 0 16 16" id="backpack-fill"><path d="M5 13v-3h4v.5a.5.5 0 0 0 1 0V10h1v3z"/><path d="M6 2v.341C3.67 3.165 2 5.388 2 8v5.5A2.5 2.5 0 0 0 4.5 16h7a2.5 2.5 0 0 0 2.5-2.5V8a6 6 0 0 0-4-5.659V2a2 2 0 1 0-4 0m2-1a1 1 0 0 1 1 1v.083a6 6 0 0 0-2 0V2a1 1 0 0 1 1-1m0 3a4 4 0 0 1 3.96 3.43.5.5 0 1 1-.99.14 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.14A4 4 0 0 1 8 4M4.5 9h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-backpack2" viewBox="0 0 16 16" id="backpack2"><path d="M4.04 7.43a4 4 0 0 1 7.92 0 .5.5 0 1 1-.99.14 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.14"/><path fill-rule="evenodd" d="M4 9.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm1 .5v3h6v-3h-1v.5a.5.5 0 0 1-1 0V10z"/><path d="M6 2.341V2a2 2 0 1 1 4 0v.341c2.33.824 4 3.047 4 5.659v1.191l1.17.585a1.5 1.5 0 0 1 .83 1.342V13.5a1.5 1.5 0 0 1-1.5 1.5h-1c-.456.607-1.182 1-2 1h-7a2.5 2.5 0 0 1-2-1h-1A1.5 1.5 0 0 1 0 13.5v-2.382a1.5 1.5 0 0 1 .83-1.342L2 9.191V8a6 6 0 0 1 4-5.659M7 2v.083a6 6 0 0 1 2 0V2a1 1 0 0 0-2 0M3 13.5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5V8A5 5 0 0 0 3 8zm-1-3.19-.724.362a.5.5 0 0 0-.276.447V13.5a.5.5 0 0 0 .5.5H2zm12 0V14h.5a.5.5 0 0 0 .5-.5v-2.382a.5.5 0 0 0-.276-.447L14 10.309Z"/></symbol><symbol class="bi bi-backpack2-fill" viewBox="0 0 16 16" id="backpack2-fill"><path d="M5 13h6v-3h-1v.5a.5.5 0 0 1-1 0V10H5z"/><path d="M6 2v.341C3.67 3.165 2 5.388 2 8v1.191l-1.17.585A1.5 1.5 0 0 0 0 11.118V13.5A1.5 1.5 0 0 0 1.5 15h1c.456.607 1.182 1 2 1h7c.818 0 1.544-.393 2-1h1a1.5 1.5 0 0 0 1.5-1.5v-2.382a1.5 1.5 0 0 0-.83-1.342L14 9.191V8a6 6 0 0 0-4-5.659V2a2 2 0 1 0-4 0m2-1a1 1 0 0 1 1 1v.083a6 6 0 0 0-2 0V2a1 1 0 0 1 1-1m0 3a4 4 0 0 1 3.96 3.43.5.5 0 1 1-.99.14 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.14A4 4 0 0 1 8 4M4.5 9h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-backpack3" viewBox="0 0 16 16" id="backpack3"><path d="M4.04 7.43a4 4 0 0 1 7.92 0 .5.5 0 1 1-.99.14 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.14M4 9.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm1 .5v3h6v-3h-1v.5a.5.5 0 0 1-1 0V10z"/><path d="M6 2.341V2a2 2 0 1 1 4 0v.341c.465.165.904.385 1.308.653l.416-1.247a1 1 0 0 1 1.748-.284l.77 1.027a1 1 0 0 1 .15.917l-.803 2.407C13.854 6.49 14 7.229 14 8v5.5a2.5 2.5 0 0 1-2.5 2.5h-7A2.5 2.5 0 0 1 2 13.5V8c0-.771.146-1.509.41-2.186l-.802-2.407a1 1 0 0 1 .15-.917l.77-1.027a1 1 0 0 1 1.748.284l.416 1.247A6 6 0 0 1 6 2.34ZM7 2v.083a6 6 0 0 1 2 0V2a1 1 0 1 0-2 0m5.941 2.595.502-1.505-.77-1.027-.532 1.595q.447.427.8.937M3.86 3.658l-.532-1.595-.77 1.027.502 1.505q.352-.51.8-.937M8 3a5 5 0 0 0-5 5v5.5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5V8a5 5 0 0 0-5-5"/></symbol><symbol class="bi bi-backpack3-fill" viewBox="0 0 16 16" id="backpack3-fill"><path d="M5 10v3h6v-3h-1v.5a.5.5 0 0 1-1 0V10z"/><path d="M6 2v.341a6 6 0 0 0-1.308.653l-.416-1.247a1 1 0 0 0-1.749-.284l-.77 1.027a1 1 0 0 0-.149.917l.803 2.407A6 6 0 0 0 2 8v5.5A2.5 2.5 0 0 0 4.5 16h7a2.5 2.5 0 0 0 2.5-2.5V8c0-.771-.146-1.509-.41-2.186l.801-2.407a1 1 0 0 0-.148-.917l-.77-1.027a1 1 0 0 0-1.75.284l-.415 1.247A6 6 0 0 0 10 2.34V2a2 2 0 1 0-4 0m1 0a1 1 0 0 1 2 0v.083a6 6 0 0 0-2 0zm5.941 2.595a6 6 0 0 0-.8-.937l.531-1.595.77 1.027zM3.86 3.658a6 6 0 0 0-.8.937L2.557 3.09l.77-1.027zm.18 3.772a4 4 0 0 1 7.92 0 .5.5 0 1 1-.99.142 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.142M4 9.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-backpack4" viewBox="0 0 16 16" id="backpack4"><path d="M4 9.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm1 .5v3h6v-3h-1v.5a.5.5 0 0 1-1 0V10z"/><path d="M8 0a2 2 0 0 0-2 2H3.5a2 2 0 0 0-2 2v1c0 .52.198.993.523 1.349A.5.5 0 0 0 2 6.5V14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V6.5a.5.5 0 0 0-.023-.151c.325-.356.523-.83.523-1.349V4a2 2 0 0 0-2-2H10a2 2 0 0 0-2-2m0 1a1 1 0 0 0-1 1h2a1 1 0 0 0-1-1M3 14V6.937q.24.062.5.063h4v.5a.5.5 0 0 0 1 0V7h4q.26 0 .5-.063V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1m9.5-11a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/></symbol><symbol class="bi bi-backpack4-fill" viewBox="0 0 16 16" id="backpack4-fill"><path d="M8 0a2 2 0 0 0-2 2H3.5a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h4v.5a.5.5 0 0 0 1 0V7h4a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H10a2 2 0 0 0-2-2m1 2a1 1 0 0 0-2 0zm-4 9v2h6v-2h-1v.5a.5.5 0 0 1-1 0V11z"/><path d="M14 7.599A3 3 0 0 1 12.5 8H9.415a1.5 1.5 0 0 1-2.83 0H3.5A3 3 0 0 1 2 7.599V14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM4 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-backspace" viewBox="0 0 16 16" id="backspace"><path d="M5.83 5.146a.5.5 0 0 0 0 .708L7.975 8l-2.147 2.146a.5.5 0 0 0 .707.708l2.147-2.147 2.146 2.147a.5.5 0 0 0 .707-.708L9.39 8l2.146-2.146a.5.5 0 0 0-.707-.708L8.683 7.293 6.536 5.146a.5.5 0 0 0-.707 0z"/><path d="M13.683 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-7.08a2 2 0 0 1-1.519-.698L.241 8.65a1 1 0 0 1 0-1.302L5.084 1.7A2 2 0 0 1 6.603 1zm-7.08 1a1 1 0 0 0-.76.35L1 8l4.844 5.65a1 1 0 0 0 .759.35h7.08a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-backspace-fill" viewBox="0 0 16 16" id="backspace-fill"><path d="M15.683 3a2 2 0 0 0-2-2h-7.08a2 2 0 0 0-1.519.698L.241 7.35a1 1 0 0 0 0 1.302l4.843 5.65A2 2 0 0 0 6.603 15h7.08a2 2 0 0 0 2-2zM5.829 5.854a.5.5 0 1 1 .707-.708l2.147 2.147 2.146-2.147a.5.5 0 1 1 .707.708L9.39 8l2.146 2.146a.5.5 0 0 1-.707.708L8.683 8.707l-2.147 2.147a.5.5 0 0 1-.707-.708L7.976 8z"/></symbol><symbol class="bi bi-backspace-reverse" viewBox="0 0 16 16" id="backspace-reverse"><path d="M9.854 5.146a.5.5 0 0 1 0 .708L7.707 8l2.147 2.146a.5.5 0 0 1-.708.708L7 8.707l-2.146 2.147a.5.5 0 0 1-.708-.708L6.293 8 4.146 5.854a.5.5 0 1 1 .708-.708L7 7.293l2.146-2.147a.5.5 0 0 1 .708 0"/><path d="M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h7.08a2 2 0 0 0 1.519-.698l4.843-5.651a1 1 0 0 0 0-1.302L10.6 1.7A2 2 0 0 0 9.08 1zm7.08 1a1 1 0 0 1 .76.35L14.682 8l-4.844 5.65a1 1 0 0 1-.759.35H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z"/></symbol><symbol class="bi bi-backspace-reverse-fill" viewBox="0 0 16 16" id="backspace-reverse-fill"><path d="M0 3a2 2 0 0 1 2-2h7.08a2 2 0 0 1 1.519.698l4.843 5.651a1 1 0 0 1 0 1.302L10.6 14.3a2 2 0 0 1-1.52.7H2a2 2 0 0 1-2-2zm9.854 2.854a.5.5 0 0 0-.708-.708L7 7.293 4.854 5.146a.5.5 0 1 0-.708.708L6.293 8l-2.147 2.146a.5.5 0 0 0 .708.708L7 8.707l2.146 2.147a.5.5 0 0 0 .708-.708L7.707 8z"/></symbol><symbol class="bi bi-badge-3d" viewBox="0 0 16 16" id="badge-3d"><path d="M4.52 8.368h.664c.646 0 1.055.378 1.06.9.008.537-.427.919-1.086.919-.598-.004-1.037-.325-1.068-.756H3c.03.914.791 1.688 2.153 1.688 1.24 0 2.285-.66 2.272-1.798-.013-.953-.747-1.38-1.292-1.432v-.062c.44-.07 1.125-.527 1.108-1.375-.013-.906-.8-1.57-2.053-1.565-1.31.005-2.043.734-2.074 1.67h1.103c.022-.391.383-.751.936-.751.532 0 .928.33.928.813.004.479-.383.835-.928.835h-.632v.914zm3.606-3.367V11h2.189C12.125 11 13 9.893 13 7.985c0-1.894-.861-2.984-2.685-2.984zm1.187.967h.844c1.112 0 1.621.686 1.621 2.04 0 1.353-.505 2.02-1.621 2.02h-.844z"/><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-badge-3d-fill" viewBox="0 0 16 16" id="badge-3d-fill"><path d="M10.157 5.968h-.844v4.06h.844c1.116 0 1.621-.667 1.621-2.02 0-1.354-.51-2.04-1.621-2.04"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.184 4.368c.646 0 1.055.378 1.06.9.008.537-.427.919-1.086.919-.598-.004-1.037-.325-1.068-.756H3c.03.914.791 1.688 2.153 1.688 1.24 0 2.285-.66 2.272-1.798-.013-.953-.747-1.38-1.292-1.432v-.062c.44-.07 1.125-.527 1.108-1.375-.013-.906-.8-1.57-2.053-1.565-1.31.005-2.043.734-2.074 1.67h1.103c.022-.391.383-.751.936-.751.532 0 .928.33.928.813.004.479-.383.835-.928.835h-.632v.914zM8.126 11h2.189C12.125 11 13 9.893 13 7.985c0-1.894-.861-2.984-2.685-2.984H8.126z"/></symbol><symbol class="bi bi-badge-4k" viewBox="0 0 16 16" id="badge-4k"><path d="M4.807 5.001C4.021 6.298 3.203 7.6 2.5 8.917v.971h2.905V11h1.112V9.888h.733V8.93h-.733V5.001zm-1.23 3.93v-.032a47 47 0 0 1 1.766-3.001h.062V8.93zm9.831-3.93h-1.306L9.835 7.687h-.057V5H8.59v6h1.187V9.075l.615-.699L12.072 11H13.5l-2.232-3.415z"/><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-badge-4k-fill" viewBox="0 0 16 16" id="badge-4k-fill"><path d="M3.577 8.9v.03h1.828V5.898h-.062a47 47 0 0 0-1.766 3.001z"/><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm2.372 3.715.435-.714h1.71v3.93h.733v.957h-.733V11H5.405V9.888H2.5v-.971c.574-1.077 1.225-2.142 1.872-3.202m7.73-.714h1.306l-2.14 2.584L13.5 11h-1.428l-1.679-2.624-.615.7V11H8.59V5.001h1.187v2.686h.057L12.102 5z"/></symbol><symbol class="bi bi-badge-8k" viewBox="0 0 16 16" id="badge-8k"><path d="M4.837 11.114c1.406 0 2.333-.725 2.333-1.766 0-.945-.712-1.38-1.256-1.49v-.053c.496-.15 1.02-.55 1.02-1.331 0-.914-.831-1.587-2.084-1.587-1.257 0-2.087.673-2.087 1.587 0 .773.51 1.177 1.02 1.331v.053c-.546.11-1.258.54-1.258 1.494 0 1.042.906 1.762 2.312 1.762m.013-3.643c-.545 0-.95-.356-.95-.866s.405-.852.95-.852.945.343.945.852c0 .51-.4.866-.945.866m0 2.786c-.65 0-1.142-.395-1.142-.984S4.2 8.28 4.85 8.28c.646 0 1.143.404 1.143.993s-.497.984-1.143.984M13.408 5h-1.306L9.835 7.685h-.057V5H8.59v5.998h1.187V9.075l.615-.699 1.679 2.623H13.5l-2.232-3.414z"/><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-badge-8k-fill" viewBox="0 0 16 16" id="badge-8k-fill"><path d="M3.9 6.605c0 .51.405.866.95.866s.945-.356.945-.866-.4-.852-.945-.852-.95.343-.95.852m-.192 2.668c0 .589.492.984 1.142.984.646 0 1.143-.395 1.143-.984S5.496 8.28 4.85 8.28c-.65 0-1.142.404-1.142.993"/><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm5.17 7.348c0 1.041-.927 1.766-2.333 1.766s-2.312-.72-2.312-1.762c0-.954.712-1.384 1.257-1.494v-.053c-.51-.154-1.02-.558-1.02-1.331 0-.914.831-1.587 2.088-1.587 1.253 0 2.083.673 2.083 1.587 0 .782-.523 1.182-1.02 1.331v.053c.545.11 1.257.545 1.257 1.49M12.102 5h1.306l-2.14 2.584 2.232 3.415h-1.428l-1.679-2.624-.615.699v1.925H8.59V5h1.187v2.685h.057z"/></symbol><symbol class="bi bi-badge-ad" viewBox="0 0 16 16" id="badge-ad"><path d="m3.7 11 .47-1.542h2.004L6.644 11h1.261L5.901 5.001H4.513L2.5 11zm1.503-4.852.734 2.426H4.416l.734-2.426zm4.759.128c-1.059 0-1.753.765-1.753 2.043v.695c0 1.279.685 2.043 1.74 2.043.677 0 1.222-.33 1.367-.804h.057V11h1.138V4.685h-1.16v2.36h-.053c-.18-.475-.68-.77-1.336-.77zm.387.923c.58 0 1.002.44 1.002 1.138v.602c0 .76-.396 1.2-.984 1.2-.598 0-.972-.449-.972-1.248v-.453c0-.795.37-1.24.954-1.24z"/><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-badge-ad-fill" viewBox="0 0 16 16" id="badge-ad-fill"><path d="M11.35 8.337c0-.699-.42-1.138-1.001-1.138-.584 0-.954.444-.954 1.239v.453c0 .8.374 1.248.972 1.248.588 0 .984-.44.984-1.2zm-5.413.237-.734-2.426H5.15l-.734 2.426h1.52z"/><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm6.209 6.32c0-1.28.694-2.044 1.753-2.044.655 0 1.156.294 1.336.769h.053v-2.36h1.16V11h-1.138v-.747h-.057c-.145.474-.69.804-1.367.804-1.055 0-1.74-.764-1.74-2.043v-.695zm-4.04 1.138L3.7 11H2.5l2.013-5.999H5.9L7.905 11H6.644l-.47-1.542H4.17z"/></symbol><symbol class="bi bi-badge-ar" viewBox="0 0 16 16" id="badge-ar"><path d="m3.794 11 .47-1.542H6.27L6.739 11H8L5.996 5.001H4.607L2.595 11zm1.503-4.852.734 2.426h-1.52l.734-2.426zm5.598-1.147H8.5V11h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9zm-1.222 2.87V5.933h1.05c.63 0 1.05.347 1.05.989 0 .633-.408.95-1.067.95z"/><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-badge-ar-fill" viewBox="0 0 16 16" id="badge-ar-fill"><path d="m6.031 8.574-.734-2.426h-.052L4.51 8.574h1.52zm3.642-2.641v1.938h1.033c.66 0 1.068-.316 1.068-.95 0-.64-.422-.988-1.05-.988z"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm4.265 5.458h2.004L6.739 11H8L5.996 5.001H4.607L2.595 11h1.2zM8.5 5v6h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9z"/></symbol><symbol class="bi bi-badge-cc" viewBox="0 0 16 16" id="badge-cc"><path d="M3.708 7.755c0-1.111.488-1.753 1.319-1.753.681 0 1.138.47 1.186 1.107H7.36V7c-.052-1.186-1.024-2-2.342-2C3.414 5 2.5 6.05 2.5 7.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114H6.213c-.048.615-.496 1.05-1.186 1.05-.84 0-1.319-.62-1.319-1.727zm6.14 0c0-1.111.488-1.753 1.318-1.753.682 0 1.139.47 1.187 1.107H13.5V7c-.053-1.186-1.024-2-2.342-2C9.554 5 8.64 6.05 8.64 7.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114h-1.147c-.048.615-.497 1.05-1.187 1.05-.839 0-1.318-.62-1.318-1.727z"/><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-badge-cc-fill" viewBox="0 0 16 16" id="badge-cc-fill"><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm3.027 4.002c-.83 0-1.319.642-1.319 1.753v.743c0 1.107.48 1.727 1.319 1.727.69 0 1.138-.435 1.186-1.05H7.36v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747C2.5 6.051 3.414 5 5.018 5c1.318 0 2.29.813 2.342 2v.11H6.213c-.048-.638-.505-1.108-1.186-1.108m6.14 0c-.831 0-1.319.642-1.319 1.753v.743c0 1.107.48 1.727 1.318 1.727.69 0 1.139-.435 1.187-1.05H13.5v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.751 2.518-2.751 1.318 0 2.29.813 2.342 2v.11h-1.147c-.048-.638-.505-1.108-1.187-1.108z"/></symbol><symbol class="bi bi-badge-hd" viewBox="0 0 16 16" id="badge-hd"><path d="M7.396 11V5.001H6.209v2.44H3.687V5H2.5v6h1.187V8.43h2.522V11zM8.5 5.001V11h2.188c1.811 0 2.685-1.107 2.685-3.015 0-1.894-.86-2.984-2.684-2.984zm1.187.967h.843c1.112 0 1.622.686 1.622 2.04 0 1.353-.505 2.02-1.622 2.02h-.843z"/><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-badge-hd-fill" viewBox="0 0 16 16" id="badge-hd-fill"><path d="M10.53 5.968h-.843v4.06h.843c1.117 0 1.622-.667 1.622-2.02 0-1.354-.51-2.04-1.622-2.04"/><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm5.396 3.001V11H6.209V8.43H3.687V11H2.5V5.001h1.187v2.44h2.522V5h1.187zM8.5 11V5.001h2.188c1.824 0 2.685 1.09 2.685 2.984C13.373 9.893 12.5 11 10.69 11z"/></symbol><symbol class="bi bi-badge-sd" viewBox="0 0 16 16" id="badge-sd"><path fill-rule="evenodd" d="M15 4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.077 7.114c-1.524 0-2.263-.8-2.315-1.749h1.147c.079.466.527.809 1.234.809.739 0 1.13-.339 1.13-.83 0-.418-.3-.634-.923-.779l-.927-.215c-.932-.21-1.52-.747-1.52-1.657 0-1.098.918-1.815 2.24-1.815 1.371 0 2.162.77 2.22 1.692H6.238c-.075-.43-.466-.76-1.103-.76-.655 0-1.046.338-1.046.804 0 .36.294.598.821.712l.932.216c.971.22 1.613.685 1.613 1.691 0 1.117-.857 1.881-2.378 1.881M8.307 11V5.001h2.19c1.823 0 2.684 1.09 2.684 2.984 0 1.908-.874 3.015-2.685 3.015zm2.031-5.032h-.844v4.06h.844c1.116 0 1.622-.667 1.622-2.02 0-1.354-.51-2.04-1.622-2.04"/></symbol><symbol class="bi bi-badge-sd-fill" viewBox="0 0 16 16" id="badge-sd-fill"><path d="M10.338 5.968h-.844v4.06h.844c1.116 0 1.622-.667 1.622-2.02 0-1.354-.51-2.04-1.622-2.04"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.077 7.114c1.521 0 2.378-.764 2.378-1.88 0-1.007-.642-1.473-1.613-1.692l-.932-.216c-.527-.114-.821-.351-.821-.712 0-.466.39-.804 1.046-.804.637 0 1.028.33 1.103.76h1.125c-.058-.923-.849-1.692-2.22-1.692-1.322 0-2.24.717-2.24 1.815 0 .91.588 1.446 1.52 1.657l.927.215c.624.145.923.36.923.778 0 .492-.391.83-1.13.83-.707 0-1.155-.342-1.234-.808H2.762c.052.95.79 1.75 2.315 1.75ZM8.307 11h2.19c1.81 0 2.684-1.107 2.684-3.015 0-1.894-.861-2.984-2.685-2.984H8.308z"/></symbol><symbol class="bi bi-badge-tm" viewBox="0 0 16 16" id="badge-tm"><path d="M5.295 11V5.995H7V5H2.403v.994h1.701V11zm3.397 0V7.01h.058l1.428 3.239h.773l1.42-3.24h.057V11H13.5V5.001h-1.2l-1.71 3.894h-.039l-1.71-3.894H7.634V11h1.06z"/><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-badge-tm-fill" viewBox="0 0 16 16" id="badge-tm-fill"><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm3.295 3.995V11H4.104V5.995h-1.7V5H7v.994H5.295zM8.692 7.01V11H7.633V5.001h1.209l1.71 3.894h.039l1.71-3.894H13.5V11h-1.072V7.01h-.057l-1.42 3.239h-.773L8.75 7.008h-.058z"/></symbol><symbol class="bi bi-badge-vo" viewBox="0 0 16 16" id="badge-vo"><path d="M4.508 11h1.429l1.99-5.999H6.61L5.277 9.708H5.22L3.875 5.001H2.5zM13.5 8.39v-.77c0-1.696-.962-2.733-2.566-2.733S8.363 5.916 8.363 7.621v.769c0 1.691.967 2.724 2.57 2.724 1.605 0 2.567-1.033 2.567-2.724m-1.204-.778v.782c0 1.156-.571 1.732-1.362 1.732-.796 0-1.363-.576-1.363-1.732v-.782c0-1.156.567-1.736 1.363-1.736.79 0 1.362.58 1.362 1.736"/><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-badge-vo-fill" viewBox="0 0 16 16" id="badge-vo-fill"><path d="M12.296 8.394v-.782c0-1.156-.571-1.736-1.362-1.736-.796 0-1.363.58-1.363 1.736v.782c0 1.156.567 1.732 1.363 1.732.79 0 1.362-.576 1.362-1.732"/><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm11.5 5.62v.77c0 1.691-.962 2.724-2.566 2.724S8.363 10.081 8.363 8.39v-.77c0-1.704.967-2.733 2.57-2.733 1.605 0 2.567 1.037 2.567 2.734zM5.937 11H4.508L2.5 5.001h1.375L5.22 9.708h.057L6.61 5.001h1.318z"/></symbol><symbol class="bi bi-badge-vr" viewBox="0 0 16 16" id="badge-vr"><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/><path d="M4.508 11h1.429l1.99-5.999H6.61L5.277 9.708H5.22L3.875 5.001H2.5zm6.387-5.999H8.5V11h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9zm-1.222 2.87V5.933h1.05c.63 0 1.05.347 1.05.989 0 .633-.408.95-1.067.95z"/></symbol><symbol class="bi bi-badge-vr-fill" viewBox="0 0 16 16" id="badge-vr-fill"><path d="M9.673 5.933v1.938h1.033c.66 0 1.068-.316 1.068-.95 0-.64-.422-.988-1.05-.988z"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.937 7 1.99-5.999H6.61L5.277 9.708H5.22L3.875 5.001H2.5L4.508 11zM8.5 5.001V11h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9H8.5z"/></symbol><symbol class="bi bi-badge-wc" viewBox="0 0 16 16" id="badge-wc"><path d="M10.348 7.643c0-1.112.488-1.754 1.318-1.754.682 0 1.139.47 1.187 1.108H14v-.11c-.053-1.187-1.024-2-2.342-2-1.604 0-2.518 1.05-2.518 2.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114h-1.147c-.048.615-.497 1.05-1.187 1.05-.839 0-1.318-.62-1.318-1.727zM4.457 11l1.02-4.184h.045L6.542 11h1.006L9 5.001H7.818l-.82 4.355h-.056L5.97 5.001h-.94l-.972 4.355h-.053l-.827-4.355H2L3.452 11z"/><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-badge-wc-fill" viewBox="0 0 16 16" id="badge-wc-fill"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm11.666 1.89c.682 0 1.139.47 1.187 1.107H14v-.11c-.053-1.187-1.024-2-2.342-2-1.604 0-2.518 1.05-2.518 2.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114h-1.147c-.048.615-.497 1.05-1.187 1.05-.839 0-1.318-.62-1.318-1.727v-.742c0-1.112.488-1.754 1.318-1.754zm-6.188.926h.044L6.542 11h1.006L9 5.001H7.818l-.82 4.355h-.056L5.97 5.001h-.94l-.972 4.355h-.053l-.827-4.355H2L3.452 11h1.005z"/></symbol><symbol class="bi bi-bag" viewBox="0 0 16 16" id="bag"><path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-bag-check" viewBox="0 0 16 16" id="bag-check"><path fill-rule="evenodd" d="M10.854 8.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708 0"/><path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-bag-check-fill" viewBox="0 0 16 16" id="bag-check-fill"><path fill-rule="evenodd" d="M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0m-.646 5.354a.5.5 0 0 0-.708-.708L7.5 10.793 6.354 9.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/></symbol><symbol class="bi bi-bag-dash" viewBox="0 0 16 16" id="bag-dash"><path fill-rule="evenodd" d="M5.5 10a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/><path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-bag-dash-fill" viewBox="0 0 16 16" id="bag-dash-fill"><path fill-rule="evenodd" d="M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0M6 9.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-bag-fill" viewBox="0 0 16 16" id="bag-fill"><path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4z"/></symbol><symbol class="bi bi-bag-heart" viewBox="0 0 16 16" id="bag-heart"><path fill-rule="evenodd" d="M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0M14 14V5H2v9a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1M8 7.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-bag-heart-fill" viewBox="0 0 16 16" id="bag-heart-fill"><path d="M11.5 4v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m0 6.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-bag-plus" viewBox="0 0 16 16" id="bag-plus"><path fill-rule="evenodd" d="M8 7.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0v-1.5H6a.5.5 0 0 1 0-1h1.5V8a.5.5 0 0 1 .5-.5"/><path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-bag-plus-fill" viewBox="0 0 16 16" id="bag-plus-fill"><path fill-rule="evenodd" d="M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0M8.5 8a.5.5 0 0 0-1 0v1.5H6a.5.5 0 0 0 0 1h1.5V12a.5.5 0 0 0 1 0v-1.5H10a.5.5 0 0 0 0-1H8.5z"/></symbol><symbol class="bi bi-bag-x" viewBox="0 0 16 16" id="bag-x"><path fill-rule="evenodd" d="M6.146 8.146a.5.5 0 0 1 .708 0L8 9.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 10l1.147 1.146a.5.5 0 0 1-.708.708L8 10.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 10 6.146 8.854a.5.5 0 0 1 0-.708"/><path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-bag-x-fill" viewBox="0 0 16 16" id="bag-x-fill"><path fill-rule="evenodd" d="M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0M6.854 8.146a.5.5 0 1 0-.708.708L7.293 10l-1.147 1.146a.5.5 0 0 0 .708.708L8 10.707l1.146 1.147a.5.5 0 0 0 .708-.708L8.707 10l1.147-1.146a.5.5 0 0 0-.708-.708L8 9.293z"/></symbol><symbol class="bi bi-balloon" viewBox="0 0 16 16" id="balloon"><path fill-rule="evenodd" d="M8 9.984C10.403 9.506 12 7.48 12 5a4 4 0 0 0-8 0c0 2.48 1.597 4.506 4 4.984M13 5c0 2.837-1.789 5.227-4.52 5.901l.244.487a.25.25 0 1 1-.448.224l-.008-.017c.008.11.02.202.037.29.054.27.161.488.419 1.003.288.578.235 1.15.076 1.629-.157.469-.422.867-.588 1.115l-.004.007a.25.25 0 1 1-.416-.278c.168-.252.4-.6.533-1.003.133-.396.163-.824-.049-1.246l-.013-.028c-.24-.48-.38-.758-.448-1.102a3 3 0 0 1-.052-.45l-.04.08a.25.25 0 1 1-.447-.224l.244-.487C4.789 10.227 3 7.837 3 5a5 5 0 0 1 10 0m-6.938-.495a2 2 0 0 1 1.443-1.443C7.773 2.994 8 2.776 8 2.5s-.226-.504-.498-.459a3 3 0 0 0-2.46 2.461c-.046.272.182.498.458.498s.494-.227.562-.495"/></symbol><symbol class="bi bi-balloon-fill" viewBox="0 0 16 16" id="balloon-fill"><path fill-rule="evenodd" d="M8.48 10.901C11.211 10.227 13 7.837 13 5A5 5 0 0 0 3 5c0 2.837 1.789 5.227 4.52 5.901l-.244.487a.25.25 0 1 0 .448.224l.04-.08c.009.17.024.315.051.45.068.344.208.622.448 1.102l.013.028c.212.422.182.85.05 1.246-.135.402-.366.751-.534 1.003a.25.25 0 0 0 .416.278l.004-.007c.166-.248.431-.646.588-1.115.16-.479.212-1.051-.076-1.629-.258-.515-.365-.732-.419-1.004a2 2 0 0 1-.037-.289l.008.017a.25.25 0 1 0 .448-.224zM4.352 3.356a4 4 0 0 1 3.15-2.325C7.774.997 8 1.224 8 1.5s-.226.496-.498.542c-.95.162-1.749.78-2.173 1.617a.6.6 0 0 1-.52.341c-.346 0-.599-.329-.457-.644"/></symbol><symbol class="bi bi-balloon-heart" viewBox="0 0 16 16" id="balloon-heart"><path fill-rule="evenodd" d="m8 2.42-.717-.737c-1.13-1.161-3.243-.777-4.01.72-.35.685-.451 1.707.236 3.062C4.16 6.753 5.52 8.32 8 10.042c2.479-1.723 3.839-3.29 4.491-4.577.687-1.355.587-2.377.236-3.061-.767-1.498-2.88-1.882-4.01-.721zm-.49 8.5c-10.78-7.44-3-13.155.359-10.063q.068.062.132.129.065-.067.132-.129c3.36-3.092 11.137 2.624.357 10.063l.235.468a.25.25 0 1 1-.448.224l-.008-.017c.008.11.02.202.037.29.054.27.161.488.419 1.003.288.578.235 1.15.076 1.629-.157.469-.422.867-.588 1.115l-.004.007a.25.25 0 1 1-.416-.278c.168-.252.4-.6.533-1.003.133-.396.163-.824-.049-1.246l-.013-.028c-.24-.48-.38-.758-.448-1.102a3 3 0 0 1-.052-.45l-.04.08a.25.25 0 1 1-.447-.224l.235-.468ZM6.013 2.06c-.649-.18-1.483.083-1.85.798-.131.258-.245.689-.08 1.335.063.244.414.198.487-.043.21-.697.627-1.447 1.359-1.692.217-.073.304-.337.084-.398"/></symbol><symbol class="bi bi-balloon-heart-fill" viewBox="0 0 16 16" id="balloon-heart-fill"><path fill-rule="evenodd" d="M8.49 10.92C19.412 3.382 11.28-2.387 8 .986 4.719-2.387-3.413 3.382 7.51 10.92l-.234.468a.25.25 0 1 0 .448.224l.04-.08c.009.17.024.315.051.45.068.344.208.622.448 1.102l.013.028c.212.422.182.85.05 1.246-.135.402-.366.751-.534 1.003a.25.25 0 0 0 .416.278l.004-.007c.166-.248.431-.646.588-1.115.16-.479.212-1.051-.076-1.629-.258-.515-.365-.732-.419-1.004a2 2 0 0 1-.037-.289l.008.017a.25.25 0 1 0 .448-.224l-.235-.468ZM6.726 1.269c-1.167-.61-2.8-.142-3.454 1.135-.237.463-.36 1.08-.202 1.85.055.27.467.197.527-.071.285-1.256 1.177-2.462 2.989-2.528.234-.008.348-.278.14-.386"/></symbol><symbol class="bi bi-ban" viewBox="0 0 16 16" id="ban"><path d="M15 8a6.97 6.97 0 0 0-1.71-4.584l-9.874 9.875A7 7 0 0 0 15 8M2.71 12.584l9.874-9.875a7 7 0 0 0-9.874 9.874ZM16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0"/></symbol><symbol class="bi bi-ban-fill" viewBox="0 0 16 16" id="ban-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M2.71 12.584q.328.378.706.707l9.875-9.875a7 7 0 0 0-.707-.707l-9.875 9.875Z"/></symbol><symbol class="bi bi-bandaid" viewBox="0 0 16 16" id="bandaid"><path d="M14.121 1.879a3 3 0 0 0-4.242 0L8.733 3.026l4.261 4.26 1.127-1.165a3 3 0 0 0 0-4.242M12.293 8 8.027 3.734 3.738 8.031 8 12.293zm-5.006 4.994L3.03 8.737 1.879 9.88a3 3 0 0 0 4.241 4.24l.006-.006 1.16-1.121ZM2.679 7.676l6.492-6.504a4 4 0 0 1 5.66 5.653l-1.477 1.529-5.006 5.006-1.523 1.472a4 4 0 0 1-5.653-5.66l.001-.002 1.505-1.492z"/><path d="M5.56 7.646a.5.5 0 1 1-.706.708.5.5 0 0 1 .707-.708Zm1.415-1.414a.5.5 0 1 1-.707.707.5.5 0 0 1 .707-.707M8.39 4.818a.5.5 0 1 1-.708.707.5.5 0 0 1 .707-.707Zm0 5.657a.5.5 0 1 1-.708.707.5.5 0 0 1 .707-.707ZM9.803 9.06a.5.5 0 1 1-.707.708.5.5 0 0 1 .707-.707Zm1.414-1.414a.5.5 0 1 1-.706.708.5.5 0 0 1 .707-.708ZM6.975 9.06a.5.5 0 1 1-.707.708.5.5 0 0 1 .707-.707ZM8.39 7.646a.5.5 0 1 1-.708.708.5.5 0 0 1 .707-.708Zm1.413-1.414a.5.5 0 1 1-.707.707.5.5 0 0 1 .707-.707"/></symbol><symbol class="bi bi-bandaid-fill" viewBox="0 0 16 16" id="bandaid-fill"><path d="m2.68 7.676 6.49-6.504a4 4 0 0 1 5.66 5.653l-1.477 1.529-5.006 5.006-1.523 1.472a4 4 0 0 1-5.653-5.66l.001-.002 1.505-1.492.001-.002Zm5.71-2.858a.5.5 0 1 0-.708.707.5.5 0 0 0 .707-.707ZM6.974 6.939a.5.5 0 1 0-.707-.707.5.5 0 0 0 .707.707M5.56 8.354a.5.5 0 1 0-.707-.708.5.5 0 0 0 .707.708m2.828 2.828a.5.5 0 1 0-.707-.707.5.5 0 0 0 .707.707m1.414-2.121a.5.5 0 1 0-.707.707.5.5 0 0 0 .707-.707m1.414-.707a.5.5 0 1 0-.706-.708.5.5 0 0 0 .707.708Zm-4.242.707a.5.5 0 1 0-.707.707.5.5 0 0 0 .707-.707m1.414-.707a.5.5 0 1 0-.707-.708.5.5 0 0 0 .707.708m1.414-2.122a.5.5 0 1 0-.707.707.5.5 0 0 0 .707-.707M8.646 3.354l4 4 .708-.708-4-4zm-1.292 9.292-4-4-.708.708 4 4z"/></symbol><symbol class="bi bi-bank" viewBox="0 0 16 16" id="bank"><path d="m8 0 6.61 3h.89a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H15v7a.5.5 0 0 1 .485.38l.5 2a.498.498 0 0 1-.485.62H.5a.498.498 0 0 1-.485-.62l.5-2A.5.5 0 0 1 1 13V6H.5a.5.5 0 0 1-.5-.5v-2A.5.5 0 0 1 .5 3h.89zM3.777 3h8.447L8 1zM2 6v7h1V6zm2 0v7h2.5V6zm3.5 0v7h1V6zm2 0v7H12V6zM13 6v7h1V6zm2-1V4H1v1zm-.39 9H1.39l-.25 1h13.72z"/></symbol><symbol class="bi bi-bank2" viewBox="0 0 16 16" id="bank2"><path d="M8.277.084a.5.5 0 0 0-.554 0l-7.5 5A.5.5 0 0 0 .5 6h1.875v7H1.5a.5.5 0 0 0 0 1h13a.5.5 0 1 0 0-1h-.875V6H15.5a.5.5 0 0 0 .277-.916zM12.375 6v7h-1.25V6zm-2.5 0v7h-1.25V6zm-2.5 0v7h-1.25V6zm-2.5 0v7h-1.25V6zM8 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2M.5 15a.5.5 0 0 0 0 1h15a.5.5 0 1 0 0-1z"/></symbol><symbol class="bi bi-bar-chart" viewBox="0 0 16 16" id="bar-chart"><path d="M4 11H2v3h2zm5-4H7v7h2zm5-5v12h-2V2zm-2-1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM6 7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm-5 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-bar-chart-fill" viewBox="0 0 16 16" id="bar-chart-fill"><path d="M1 11a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5-4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5-5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-bar-chart-line" viewBox="0 0 16 16" id="bar-chart-line"><path d="M11 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v12h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h1V7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7h1zm1 12h2V2h-2zm-3 0V7H7v7zm-5 0v-3H2v3z"/></symbol><symbol class="bi bi-bar-chart-line-fill" viewBox="0 0 16 16" id="bar-chart-line-fill"><path d="M11 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v12h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h1V7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7h1z"/></symbol><symbol class="bi bi-bar-chart-steps" viewBox="0 0 16 16" id="bar-chart-steps"><path d="M.5 0a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-1 0V.5A.5.5 0 0 1 .5 0M2 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5zm2 4a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm2 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1-.5-.5zm2 4a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-basket" viewBox="0 0 16 16" id="basket"><path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1v4.5a2.5 2.5 0 0 1-2.5 2.5h-9A2.5 2.5 0 0 1 1 13.5V9a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h1.217L5.07 1.243a.5.5 0 0 1 .686-.172zM2 9v4.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V9zM1 7v1h14V7zm3 3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3A.5.5 0 0 1 4 10m2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3A.5.5 0 0 1 6 10m2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3A.5.5 0 0 1 8 10m2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 .5-.5m2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-basket-fill" viewBox="0 0 16 16" id="basket-fill"><path d="M5.071 1.243a.5.5 0 0 1 .858.514L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H15v5a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V9H.5a.5.5 0 0 1-.5-.5v-2A.5.5 0 0 1 .5 6h1.717zM3.5 10.5a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0z"/></symbol><symbol class="bi bi-basket2" viewBox="0 0 16 16" id="basket2"><path d="M4 10a1 1 0 0 1 2 0v2a1 1 0 0 1-2 0zm3 0a1 1 0 0 1 2 0v2a1 1 0 0 1-2 0zm3 0a1 1 0 1 1 2 0v2a1 1 0 0 1-2 0z"/><path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-.623l-1.844 6.456a.75.75 0 0 1-.722.544H3.69a.75.75 0 0 1-.722-.544L1.123 8H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM2.163 8l1.714 6h8.246l1.714-6z"/></symbol><symbol class="bi bi-basket2-fill" viewBox="0 0 16 16" id="basket2-fill"><path d="M5.929 1.757a.5.5 0 1 0-.858-.514L2.217 6H.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h.623l1.844 6.456A.75.75 0 0 0 3.69 15h8.622a.75.75 0 0 0 .722-.544L14.877 8h.623a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1.717L10.93 1.243a.5.5 0 1 0-.858.514L12.617 6H3.383zM4 10a1 1 0 0 1 2 0v2a1 1 0 1 1-2 0zm3 0a1 1 0 0 1 2 0v2a1 1 0 1 1-2 0zm4-1a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0v-2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-basket3" viewBox="0 0 16 16" id="basket3"><path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6z"/></symbol><symbol class="bi bi-basket3-fill" viewBox="0 0 16 16" id="basket3-fill"><path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM2.468 15.426.943 9h14.114l-1.525 6.426a.75.75 0 0 1-.729.574H3.197a.75.75 0 0 1-.73-.574z"/></symbol><symbol class="bi bi-battery" viewBox="0 0 16 16" id="battery"><path d="M0 6a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm14 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8"/></symbol><symbol class="bi bi-battery-charging" viewBox="0 0 16 16" id="battery-charging"><path d="M9.585 2.568a.5.5 0 0 1 .226.58L8.677 6.832h1.99a.5.5 0 0 1 .364.843l-5.334 5.667a.5.5 0 0 1-.842-.49L5.99 9.167H4a.5.5 0 0 1-.364-.843l5.333-5.667a.5.5 0 0 1 .616-.09z"/><path d="M2 4h4.332l-.94 1H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h2.38l-.308 1H2a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2"/><path d="M2 6h2.45L2.908 7.639A1.5 1.5 0 0 0 3.313 10H2zm8.595-2-.308 1H12a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H9.276l-.942 1H12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z"/><path d="M12 10h-1.783l1.542-1.639q.146-.156.241-.34zm0-3.354V6h-.646a1.5 1.5 0 0 1 .646.646M16 8a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8"/></symbol><symbol class="bi bi-battery-full" viewBox="0 0 16 16" id="battery-full"><path d="M2 6h10v4H2z"/><path d="M2 4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm10 1a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm4 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8"/></symbol><symbol class="bi bi-battery-half" viewBox="0 0 16 16" id="battery-half"><path d="M2 6h5v4H2z"/><path d="M2 4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm10 1a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm4 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8"/></symbol><symbol class="bi bi-behance" viewBox="0 0 16 16" id="behance"><path d="M4.654 3c.461 0 .887.035 1.278.14.39.07.711.216.996.391s.497.426.641.747c.14.32.216.711.216 1.137 0 .496-.106.922-.356 1.242-.215.32-.566.606-.997.817.606.176 1.067.496 1.348.922s.461.957.461 1.563c0 .496-.105.922-.285 1.278a2.3 2.3 0 0 1-.782.887c-.32.215-.711.39-1.137.496a5.3 5.3 0 0 1-1.278.176L0 12.803V3zm-.285 3.978c.39 0 .71-.105.957-.285.246-.18.355-.497.355-.887 0-.216-.035-.426-.105-.567a1 1 0 0 0-.32-.355 1.8 1.8 0 0 0-.461-.176c-.176-.035-.356-.035-.567-.035H2.17v2.31c0-.005 2.2-.005 2.2-.005zm.105 4.193c.215 0 .426-.035.606-.07.176-.035.356-.106.496-.216s.25-.215.356-.39c.07-.176.14-.391.14-.641 0-.496-.14-.852-.426-1.102-.285-.215-.676-.32-1.137-.32H2.17v2.734h2.305zm6.858-.035q.428.427 1.278.426c.39 0 .746-.106 1.032-.286q.426-.32.53-.64h1.74c-.286.851-.712 1.457-1.278 1.848-.566.355-1.243.566-2.06.566a4.1 4.1 0 0 1-1.527-.285 2.8 2.8 0 0 1-1.137-.782 2.85 2.85 0 0 1-.712-1.172c-.175-.461-.25-.957-.25-1.528 0-.531.07-1.032.25-1.493.18-.46.426-.852.747-1.207.32-.32.711-.606 1.137-.782a4 4 0 0 1 1.493-.285c.606 0 1.137.105 1.598.355.46.25.817.532 1.102.958.285.39.496.851.641 1.348.07.496.105.996.07 1.563h-5.15c0 .58.21 1.11.496 1.396m2.24-3.732c-.25-.25-.642-.391-1.103-.391-.32 0-.566.07-.781.176s-.356.25-.496.39a.96.96 0 0 0-.25.497c-.036.175-.07.32-.07.46h3.196c-.07-.526-.25-.882-.497-1.132zm-3.127-3.728h3.978v.957h-3.978z"/></symbol><symbol class="bi bi-bell" viewBox="0 0 16 16" id="bell"><path d="M8 16a2 2 0 0 0 2-2H6a2 2 0 0 0 2 2M8 1.918l-.797.161A4 4 0 0 0 4 6c0 .628-.134 2.197-.459 3.742-.16.767-.376 1.566-.663 2.258h10.244c-.287-.692-.502-1.49-.663-2.258C12.134 8.197 12 6.628 12 6a4 4 0 0 0-3.203-3.92zM14.22 12c.223.447.481.801.78 1H1c.299-.199.557-.553.78-1C2.68 10.2 3 6.88 3 6c0-2.42 1.72-4.44 4.005-4.901a1 1 0 1 1 1.99 0A5 5 0 0 1 13 6c0 .88.32 4.2 1.22 6"/></symbol><symbol class="bi bi-bell-fill" viewBox="0 0 16 16" id="bell-fill"><path d="M8 16a2 2 0 0 0 2-2H6a2 2 0 0 0 2 2m.995-14.901a1 1 0 1 0-1.99 0A5 5 0 0 0 3 6c0 1.098-.5 6-2 7h14c-1.5-1-2-5.902-2-7 0-2.42-1.72-4.44-4.005-4.901"/></symbol><symbol class="bi bi-bell-slash" viewBox="0 0 16 16" id="bell-slash"><path d="M5.164 14H15c-.299-.199-.557-.553-.78-1-.9-1.8-1.22-5.12-1.22-6q0-.396-.06-.776l-.938.938c.02.708.157 2.154.457 3.58.161.767.377 1.566.663 2.258H6.164zm5.581-9.91a4 4 0 0 0-1.948-1.01L8 2.917l-.797.161A4 4 0 0 0 4 7c0 .628-.134 2.197-.459 3.742q-.075.358-.166.718l-1.653 1.653q.03-.055.059-.113C2.679 11.2 3 7.88 3 7c0-2.42 1.72-4.44 4.005-4.901a1 1 0 1 1 1.99 0c.942.19 1.788.645 2.457 1.284zM10 15a2 2 0 1 1-4 0zm-9.375.625a.53.53 0 0 0 .75.75l14.75-14.75a.53.53 0 0 0-.75-.75z"/></symbol><symbol class="bi bi-bell-slash-fill" viewBox="0 0 16 16" id="bell-slash-fill"><path d="M5.164 14H15c-1.5-1-2-5.902-2-7q0-.396-.06-.776zm6.288-10.617A5 5 0 0 0 8.995 2.1a1 1 0 1 0-1.99 0A5 5 0 0 0 3 7c0 .898-.335 4.342-1.278 6.113zM10 15a2 2 0 1 1-4 0zm-9.375.625a.53.53 0 0 0 .75.75l14.75-14.75a.53.53 0 0 0-.75-.75z"/></symbol><symbol class="bi bi-bezier" viewBox="0 0 16 16" id="bezier"><path fill-rule="evenodd" d="M0 10.5A1.5 1.5 0 0 1 1.5 9h1A1.5 1.5 0 0 1 4 10.5v1A1.5 1.5 0 0 1 2.5 13h-1A1.5 1.5 0 0 1 0 11.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm10.5.5A1.5 1.5 0 0 1 13.5 9h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM6 4.5A1.5 1.5 0 0 1 7.5 3h1A1.5 1.5 0 0 1 10 4.5v1A1.5 1.5 0 0 1 8.5 7h-1A1.5 1.5 0 0 1 6 5.5zM7.5 4a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M6 4.5H1.866a1 1 0 1 0 0 1h2.668A6.52 6.52 0 0 0 1.814 9H2.5q.186 0 .358.043a5.52 5.52 0 0 1 3.185-3.185A1.5 1.5 0 0 1 6 5.5zm3.957 1.358A1.5 1.5 0 0 0 10 5.5v-1h4.134a1 1 0 1 1 0 1h-2.668a6.52 6.52 0 0 1 2.72 3.5H13.5q-.185 0-.358.043a5.52 5.52 0 0 0-3.185-3.185"/></symbol><symbol class="bi bi-bezier2" viewBox="0 0 16 16" id="bezier2"><path fill-rule="evenodd" d="M1 2.5A1.5 1.5 0 0 1 2.5 1h1A1.5 1.5 0 0 1 5 2.5h4.134a1 1 0 1 1 0 1h-2.01q.269.27.484.605C8.246 5.097 8.5 6.459 8.5 8c0 1.993.257 3.092.713 3.7.356.476.895.721 1.787.784A1.5 1.5 0 0 1 12.5 11h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5H6.866a1 1 0 1 1 0-1h1.711a3 3 0 0 1-.165-.2C7.743 11.407 7.5 10.007 7.5 8c0-1.46-.246-2.597-.733-3.355-.39-.605-.952-1-1.767-1.112A1.5 1.5 0 0 1 3.5 5h-1A1.5 1.5 0 0 1 1 3.5zM2.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm10 10a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-bicycle" viewBox="0 0 16 16" id="bicycle"><path d="M4 4.5a.5.5 0 0 1 .5-.5H6a.5.5 0 0 1 0 1v.5h4.14l.386-1.158A.5.5 0 0 1 11 4h1a.5.5 0 0 1 0 1h-.64l-.311.935.807 1.29a3 3 0 1 1-.848.53l-.508-.812-2.076 3.322A.5.5 0 0 1 8 10.5H5.959a3 3 0 1 1-1.815-3.274L5 5.856V5h-.5a.5.5 0 0 1-.5-.5m1.5 2.443-.508.814c.5.444.85 1.054.967 1.743h1.139zM8 9.057 9.598 6.5H6.402zM4.937 9.5a2 2 0 0 0-.487-.877l-.548.877zM3.603 8.092A2 2 0 1 0 4.937 10.5H3a.5.5 0 0 1-.424-.765zm7.947.53a2 2 0 1 0 .848-.53l1.026 1.643a.5.5 0 1 1-.848.53z"/></symbol><symbol class="bi bi-bing" viewBox="0 0 16 16" id="bing"><path d="M8.35 5.046a.615.615 0 0 0-.54.575c-.009.13-.006.14.289.899.67 1.727.833 2.142.86 2.2q.101.215.277.395c.089.092.148.141.247.208.176.117.262.15.944.351.664.197 1.026.327 1.338.482.405.201.688.43.866.7.128.195.242.544.291.896.02.137.02.44 0 .564-.041.27-.124.495-.252.684-.067.1-.044.084.055-.039.278-.346.562-.938.707-1.475a4.42 4.42 0 0 0-2.14-5.028 70 70 0 0 0-.888-.465l-.53-.277-.353-.184c-.16-.082-.266-.138-.345-.18-.368-.192-.523-.27-.568-.283a1 1 0 0 0-.194-.03z"/><path d="M9.152 11.493a3 3 0 0 0-.135.083 320 320 0 0 0-1.513.934l-.8.496c-.012.01-.587.367-.876.543a1.9 1.9 0 0 1-.732.257c-.12.017-.349.017-.47 0a1.9 1.9 0 0 1-.884-.358 2.5 2.5 0 0 1-.365-.364 1.9 1.9 0 0 1-.34-.76 1 1 0 0 0-.027-.121c-.005-.006.004.092.022.22.018.132.057.324.098.489a4.1 4.1 0 0 0 2.487 2.796c.359.142.72.23 1.114.275.147.016.566.023.72.011a4.1 4.1 0 0 0 1.956-.661l.235-.149.394-.248.258-.163 1.164-.736c.51-.32.663-.433.9-.665.099-.097.248-.262.255-.283.002-.005.028-.046.059-.091a1.64 1.64 0 0 0 .25-.682c.02-.124.02-.427 0-.565a3 3 0 0 0-.213-.758c-.15-.314-.47-.6-.928-.83a2 2 0 0 0-.273-.12c-.006 0-.433.26-.948.58l-1.113.687z"/><path d="m3.004 12.184.03.129c.089.402.245.693.515.963a1.82 1.82 0 0 0 1.312.543c.361 0 .673-.09.994-.287l.472-.29.373-.23V5.334c0-1.537-.003-2.45-.008-2.521a1.82 1.82 0 0 0-.535-1.177c-.097-.096-.18-.16-.427-.33L4.183.24c-.239-.163-.258-.175-.33-.2a.63.63 0 0 0-.842.464c-.009.042-.01.603-.01 3.646l.003 8.035Z"/></symbol><symbol class="bi bi-binoculars" viewBox="0 0 16 16" id="binoculars"><path d="M3 2.5A1.5 1.5 0 0 1 4.5 1h1A1.5 1.5 0 0 1 7 2.5V5h2V2.5A1.5 1.5 0 0 1 10.5 1h1A1.5 1.5 0 0 1 13 2.5v2.382a.5.5 0 0 0 .276.447l.895.447A1.5 1.5 0 0 1 15 7.118V14.5a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 14.5v-3a.5.5 0 0 1 .146-.354l.854-.853V9.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v.793l.854.853A.5.5 0 0 1 7 11.5v3A1.5 1.5 0 0 1 5.5 16h-3A1.5 1.5 0 0 1 1 14.5V7.118a1.5 1.5 0 0 1 .83-1.342l.894-.447A.5.5 0 0 0 3 4.882zM4.5 2a.5.5 0 0 0-.5.5V3h2v-.5a.5.5 0 0 0-.5-.5zM6 4H4v.882a1.5 1.5 0 0 1-.83 1.342l-.894.447A.5.5 0 0 0 2 7.118V13h4v-1.293l-.854-.853A.5.5 0 0 1 5 10.5v-1A1.5 1.5 0 0 1 6.5 8h3A1.5 1.5 0 0 1 11 9.5v1a.5.5 0 0 1-.146.354l-.854.853V13h4V7.118a.5.5 0 0 0-.276-.447l-.895-.447A1.5 1.5 0 0 1 12 4.882V4h-2v1.5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm4-1h2v-.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 11h-4v.5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5zm-8 0H2v.5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5z"/></symbol><symbol class="bi bi-binoculars-fill" viewBox="0 0 16 16" id="binoculars-fill"><path d="M4.5 1A1.5 1.5 0 0 0 3 2.5V3h4v-.5A1.5 1.5 0 0 0 5.5 1zM7 4v1h2V4h4v.882a.5.5 0 0 0 .276.447l.895.447A1.5 1.5 0 0 1 15 7.118V13H9v-1.5a.5.5 0 0 1 .146-.354l.854-.853V9.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v.793l.854.853A.5.5 0 0 1 7 11.5V13H1V7.118a1.5 1.5 0 0 1 .83-1.342l.894-.447A.5.5 0 0 0 3 4.882V4zM1 14v.5A1.5 1.5 0 0 0 2.5 16h3A1.5 1.5 0 0 0 7 14.5V14zm8 0v.5a1.5 1.5 0 0 0 1.5 1.5h3a1.5 1.5 0 0 0 1.5-1.5V14zm4-11H9v-.5A1.5 1.5 0 0 1 10.5 1h1A1.5 1.5 0 0 1 13 2.5z"/></symbol><symbol class="bi bi-blockquote-left" viewBox="0 0 16 16" id="blockquote-left"><path d="M2.5 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1zm5 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm-5 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1zm.79-5.373q.168-.117.444-.275L3.524 6q-.183.111-.452.287-.27.176-.51.428a2.4 2.4 0 0 0-.398.562Q2 7.587 2 7.969q0 .54.217.873.217.328.72.328.322 0 .504-.211a.7.7 0 0 0 .188-.463q0-.345-.211-.521-.205-.182-.568-.182h-.282q.036-.305.123-.498a1.4 1.4 0 0 1 .252-.37 2 2 0 0 1 .346-.298zm2.167 0q.17-.117.445-.275L5.692 6q-.183.111-.452.287-.27.176-.51.428a2.4 2.4 0 0 0-.398.562q-.165.31-.164.692 0 .54.217.873.217.328.72.328.322 0 .504-.211a.7.7 0 0 0 .188-.463q0-.345-.211-.521-.205-.182-.568-.182h-.282a1.8 1.8 0 0 1 .118-.492q.087-.194.257-.375a2 2 0 0 1 .346-.3z"/></symbol><symbol class="bi bi-blockquote-right" viewBox="0 0 16 16" id="blockquote-right"><path d="M2.5 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1zm10.113-5.373a7 7 0 0 0-.445-.275l.21-.352q.183.111.452.287.27.176.51.428.234.246.398.562.164.31.164.692 0 .54-.216.873-.217.328-.721.328-.322 0-.504-.211a.7.7 0 0 1-.188-.463q0-.345.211-.521.205-.182.569-.182h.281a1.7 1.7 0 0 0-.123-.498 1.4 1.4 0 0 0-.252-.37 2 2 0 0 0-.346-.298m-2.168 0A7 7 0 0 0 10 6.352L10.21 6q.183.111.452.287.27.176.51.428.234.246.398.562.164.31.164.692 0 .54-.216.873-.217.328-.721.328-.322 0-.504-.211a.7.7 0 0 1-.188-.463q0-.345.211-.521.206-.182.569-.182h.281a1.8 1.8 0 0 0-.117-.492 1.4 1.4 0 0 0-.258-.375 2 2 0 0 0-.346-.3z"/></symbol><symbol class="bi bi-bluetooth" viewBox="0 0 16 16" id="bluetooth"><path fill-rule="evenodd" d="m8.543 3.948 1.316 1.316L8.543 6.58zm0 8.104 1.316-1.316L8.543 9.42zm-1.41-4.043L4.275 5.133l.827-.827L7.377 6.58V1.128l4.137 4.136L8.787 8.01l2.745 2.745-4.136 4.137V9.42l-2.294 2.274-.827-.827zM7.903 16c3.498 0 5.904-1.655 5.904-8.01 0-6.335-2.406-7.99-5.903-7.99S2 1.655 2 8.01C2 14.344 4.407 16 7.904 16Z"/></symbol><symbol class="bi bi-body-text" viewBox="0 0 16 16" id="body-text"><path fill-rule="evenodd" d="M0 .5A.5.5 0 0 1 .5 0h4a.5.5 0 0 1 0 1h-4A.5.5 0 0 1 0 .5m0 2A.5.5 0 0 1 .5 2h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m9 0a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m-9 2A.5.5 0 0 1 .5 4h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m5 0a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m7 0a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m-12 2A.5.5 0 0 1 .5 6h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m8 0a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m-8 2A.5.5 0 0 1 .5 8h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m7 0a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-7 2a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-book" viewBox="0 0 16 16" id="book"><path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/></symbol><symbol class="bi bi-book-fill" viewBox="0 0 16 16" id="book-fill"><path d="M8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/></symbol><symbol class="bi bi-book-half" viewBox="0 0 16 16" id="book-half"><path d="M8.5 2.687c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/></symbol><symbol class="bi bi-bookmark" viewBox="0 0 16 16" id="bookmark"><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-bookmark-check" viewBox="0 0 16 16" id="bookmark-check"><path fill-rule="evenodd" d="M10.854 5.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 7.793l2.646-2.647a.5.5 0 0 1 .708 0"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-bookmark-check-fill" viewBox="0 0 16 16" id="bookmark-check-fill"><path fill-rule="evenodd" d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5m8.854-9.646a.5.5 0 0 0-.708-.708L7.5 7.793 6.354 6.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/></symbol><symbol class="bi bi-bookmark-dash" viewBox="0 0 16 16" id="bookmark-dash"><path fill-rule="evenodd" d="M5.5 6.5A.5.5 0 0 1 6 6h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-bookmark-dash-fill" viewBox="0 0 16 16" id="bookmark-dash-fill"><path fill-rule="evenodd" d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5M6 6a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-bookmark-fill" viewBox="0 0 16 16" id="bookmark-fill"><path d="M2 2v13.5a.5.5 0 0 0 .74.439L8 13.069l5.26 2.87A.5.5 0 0 0 14 15.5V2a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2"/></symbol><symbol class="bi bi-bookmark-heart" viewBox="0 0 16 16" id="bookmark-heart"><path fill-rule="evenodd" d="M8 4.41c1.387-1.425 4.854 1.07 0 4.277C3.146 5.48 6.613 2.986 8 4.412z"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-bookmark-heart-fill" viewBox="0 0 16 16" id="bookmark-heart-fill"><path d="M2 15.5a.5.5 0 0 0 .74.439L8 13.069l5.26 2.87A.5.5 0 0 0 14 15.5V2a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2zM8 4.41c1.387-1.425 4.854 1.07 0 4.277C3.146 5.48 6.613 2.986 8 4.412z"/></symbol><symbol class="bi bi-bookmark-plus" viewBox="0 0 16 16" id="bookmark-plus"><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/><path d="M8 4a.5.5 0 0 1 .5.5V6H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V7H6a.5.5 0 0 1 0-1h1.5V4.5A.5.5 0 0 1 8 4"/></symbol><symbol class="bi bi-bookmark-plus-fill" viewBox="0 0 16 16" id="bookmark-plus-fill"><path fill-rule="evenodd" d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5m6.5-11a.5.5 0 0 0-1 0V6H6a.5.5 0 0 0 0 1h1.5v1.5a.5.5 0 0 0 1 0V7H10a.5.5 0 0 0 0-1H8.5z"/></symbol><symbol class="bi bi-bookmark-star" viewBox="0 0 16 16" id="bookmark-star"><path d="M7.84 4.1a.178.178 0 0 1 .32 0l.634 1.285a.18.18 0 0 0 .134.098l1.42.206c.145.021.204.2.098.303L9.42 6.993a.18.18 0 0 0-.051.158l.242 1.414a.178.178 0 0 1-.258.187l-1.27-.668a.18.18 0 0 0-.165 0l-1.27.668a.178.178 0 0 1-.257-.187l.242-1.414a.18.18 0 0 0-.05-.158l-1.03-1.001a.178.178 0 0 1 .098-.303l1.42-.206a.18.18 0 0 0 .134-.098z"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-bookmark-star-fill" viewBox="0 0 16 16" id="bookmark-star-fill"><path fill-rule="evenodd" d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5M8.16 4.1a.178.178 0 0 0-.32 0l-.634 1.285a.18.18 0 0 1-.134.098l-1.42.206a.178.178 0 0 0-.098.303L6.58 6.993c.042.041.061.1.051.158L6.39 8.565a.178.178 0 0 0 .258.187l1.27-.668a.18.18 0 0 1 .165 0l1.27.668a.178.178 0 0 0 .257-.187L9.368 7.15a.18.18 0 0 1 .05-.158l1.028-1.001a.178.178 0 0 0-.098-.303l-1.42-.206a.18.18 0 0 1-.134-.098z"/></symbol><symbol class="bi bi-bookmark-x" viewBox="0 0 16 16" id="bookmark-x"><path fill-rule="evenodd" d="M6.146 5.146a.5.5 0 0 1 .708 0L8 6.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 7l1.147 1.146a.5.5 0 0 1-.708.708L8 7.707 6.854 8.854a.5.5 0 1 1-.708-.708L7.293 7 6.146 5.854a.5.5 0 0 1 0-.708"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-bookmark-x-fill" viewBox="0 0 16 16" id="bookmark-x-fill"><path fill-rule="evenodd" d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5M6.854 5.146a.5.5 0 1 0-.708.708L7.293 7 6.146 8.146a.5.5 0 1 0 .708.708L8 7.707l1.146 1.147a.5.5 0 1 0 .708-.708L8.707 7l1.147-1.146a.5.5 0 0 0-.708-.708L8 6.293z"/></symbol><symbol class="bi bi-bookmarks" viewBox="0 0 16 16" id="bookmarks"><path d="M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v10.566l3.723-2.482a.5.5 0 0 1 .554 0L11 14.566V4a1 1 0 0 0-1-1z"/><path d="M4.268 1H12a1 1 0 0 1 1 1v11.768l.223.148A.5.5 0 0 0 14 13.5V2a2 2 0 0 0-2-2H6a2 2 0 0 0-1.732 1"/></symbol><symbol class="bi bi-bookmarks-fill" viewBox="0 0 16 16" id="bookmarks-fill"><path d="M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5z"/><path d="M4.268 1A2 2 0 0 1 6 0h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L13 13.768V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-bookshelf" viewBox="0 0 16 16" id="bookshelf"><path d="M2.5 0a.5.5 0 0 1 .5.5V2h10V.5a.5.5 0 0 1 1 0v15a.5.5 0 0 1-1 0V15H3v.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 .5-.5M3 14h10v-3H3zm0-4h10V7H3zm0-4h10V3H3z"/></symbol><symbol class="bi bi-boombox" viewBox="0 0 16 16" id="boombox"><path d="M2.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m7.5-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m-7-1a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm5.5 6.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/><path d="M11.5 13a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5m0-1a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3M5 10.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/><path d="M7 10.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0m-1 0a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/><path d="M14 0a.5.5 0 0 1 .5.5V2h.5a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h12.5V.5A.5.5 0 0 1 14 0M1 3v3h14V3zm14 4H1v7h14z"/></symbol><symbol class="bi bi-boombox-fill" viewBox="0 0 16 16" id="boombox-fill"><path d="M14 0a.5.5 0 0 1 .5.5V2h.5a1 1 0 0 1 1 1v2H0V3a1 1 0 0 1 1-1h12.5V.5A.5.5 0 0 1 14 0M2 3.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m2 0a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m7.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1.5-.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0M9.5 3h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1M6 10.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-1.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m7 1a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m.5-1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/><path d="M0 6h16v8a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm2 4.5a2.5 2.5 0 1 0 5 0 2.5 2.5 0 0 0-5 0m7 0a2.5 2.5 0 1 0 5 0 2.5 2.5 0 0 0-5 0"/></symbol><symbol class="bi bi-bootstrap" viewBox="0 0 16 16" id="bootstrap"><path d="M5.062 12h3.475c1.804 0 2.888-.908 2.888-2.396 0-1.102-.761-1.916-1.904-2.034v-.1c.832-.14 1.482-.93 1.482-1.816 0-1.3-.955-2.11-2.542-2.11H5.062zm1.313-4.875V4.658h1.78c.973 0 1.542.457 1.542 1.237 0 .802-.604 1.23-1.764 1.23zm0 3.762V8.162h1.822c1.236 0 1.887.463 1.887 1.348 0 .896-.627 1.377-1.811 1.377z"/><path d="M0 4a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4zm4-3a3 3 0 0 0-3 3v8a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3z"/></symbol><symbol class="bi bi-bootstrap-fill" viewBox="0 0 16 16" id="bootstrap-fill"><path d="M6.375 7.125V4.658h1.78c.973 0 1.542.457 1.542 1.237 0 .802-.604 1.23-1.764 1.23zm0 3.762h1.898c1.184 0 1.81-.48 1.81-1.377 0-.885-.65-1.348-1.886-1.348H6.375z"/><path d="M4.002 0a4 4 0 0 0-4 4v8a4 4 0 0 0 4 4h8a4 4 0 0 0 4-4V4a4 4 0 0 0-4-4zm1.06 12V3.545h3.399c1.587 0 2.543.809 2.543 2.11 0 .884-.65 1.675-1.483 1.816v.1c1.143.117 1.904.931 1.904 2.033 0 1.488-1.084 2.396-2.888 2.396z"/></symbol><symbol class="bi bi-bootstrap-reboot" viewBox="0 0 16 16" id="bootstrap-reboot"><path d="M1.161 8a6.84 6.84 0 1 0 6.842-6.84.58.58 0 1 1 0-1.16 8 8 0 1 1-6.556 3.412l-.663-.577a.58.58 0 0 1 .227-.997l2.52-.69a.58.58 0 0 1 .728.633l-.332 2.592a.58.58 0 0 1-.956.364l-.643-.56A6.8 6.8 0 0 0 1.16 8z"/><path d="M6.641 11.671V8.843h1.57l1.498 2.828h1.314L9.377 8.665c.897-.3 1.427-1.106 1.427-2.1 0-1.37-.943-2.246-2.456-2.246H5.5v7.352zm0-3.75V5.277h1.57c.881 0 1.416.499 1.416 1.32 0 .84-.504 1.324-1.386 1.324z"/></symbol><symbol class="bi bi-border" viewBox="0 0 16 16" id="border"><path d="M0 0h.969v.5H1v.469H.969V1H.5V.969H0zm2.844 1h-.938V0h.938zm1.875 0H3.78V0h.938v1zm1.875 0h-.938V0h.938zm.937 0V.969H7.5V.5h.031V0h.938v.5H8.5v.469h-.031V1zm2.813 0h-.938V0h.938zm1.875 0h-.938V0h.938zm1.875 0h-.938V0h.938zM15.5 1h-.469V.969H15V.5h.031V0H16v.969h-.5zM1 1.906v.938H0v-.938zm6.5.938v-.938h1v.938zm7.5 0v-.938h1v.938zM1 3.78v.938H0V3.78zm6.5.938V3.78h1v.938zm7.5 0V3.78h1v.938zM1 5.656v.938H0v-.938zm6.5.938v-.938h1v.938zm7.5 0v-.938h1v.938zM.969 8.5H.5v-.031H0V7.53h.5V7.5h.469v.031H1v.938H.969zm1.875 0h-.938v-1h.938zm1.875 0H3.78v-1h.938v1zm1.875 0h-.938v-1h.938zm1.875-.031V8.5H7.53v-.031H7.5V7.53h.031V7.5h.938v.031H8.5v.938zm1.875.031h-.938v-1h.938zm1.875 0h-.938v-1h.938zm1.875 0h-.938v-1h.938zm1.406 0h-.469v-.031H15V7.53h.031V7.5h.469v.031h.5v.938h-.5zM0 10.344v-.938h1v.938zm7.5 0v-.938h1v.938zm8.5-.938v.938h-1v-.938zM0 12.22v-.938h1v.938zm7.5 0v-.938h1v.938zm8.5-.938v.938h-1v-.938zM0 14.094v-.938h1v.938zm7.5 0v-.938h1v.938zm8.5-.938v.938h-1v-.938zM.969 16H0v-.969h.5V15h.469v.031H1v.469H.969zm1.875 0h-.938v-1h.938zm1.875 0H3.78v-1h.938v1zm1.875 0h-.938v-1h.938zm.937 0v-.5H7.5v-.469h.031V15h.938v.031H8.5v.469h-.031v.5zm2.813 0h-.938v-1h.938zm1.875 0h-.938v-1h.938zm1.875 0h-.938v-1h.938zm.937 0v-.5H15v-.469h.031V15h.469v.031h.5V16z"/></symbol><symbol class="bi bi-border-all" viewBox="0 0 16 16" id="border-all"><path d="M0 0h16v16H0zm1 1v6.5h6.5V1zm7.5 0v6.5H15V1zM15 8.5H8.5V15H15zM7.5 15V8.5H1V15z"/></symbol><symbol class="bi bi-border-bottom" viewBox="0 0 16 16" id="border-bottom"><path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969zm.937 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469zM9.406 1h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031zM1 2.844v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5zm1.406 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031zM0 9.406v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zM0 15h16v1H0z"/></symbol><symbol class="bi bi-border-center" viewBox="0 0 16 16" id="border-center"><path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969zm.937 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469zM9.406 1h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031zM1 2.844v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM0 8.5v-1h16v1zm0 .906v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0zm1.906 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469zm1.875.5h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469z"/></symbol><symbol class="bi bi-border-inner" viewBox="0 0 16 16" id="border-inner"><path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969zm.937 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938z"/><path d="M8.5 7.5H16v1H8.5V16h-1V8.5H0v-1h7.5V0h1z"/><path d="M9.406 1h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031zM1 2.844v-.938H0v.938zm14-.938v.938h1v-.938zM1 4.719V3.78H0v.938h1zm14-.938v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm14-.938v.938h1v-.938zM0 9.406v.938h1v-.938zm16 .938v-.938h-1v.938zm-16 .937v.938h1v-.938zm16 .938v-.938h-1v.938zm-16 .937v.938h1v-.938zm16 .938v-.938h-1v.938zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0zm1.906 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm3.75 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469z"/></symbol><symbol class="bi bi-border-left" viewBox="0 0 16 16" id="border-left"><path d="M0 0v16h1V0zm1.906 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469zM9.406 1h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031zM7.5 1.906v.938h1v-.938zm7.5 0v.938h1v-.938zM7.5 3.781v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM7.5 5.656v.938h1v-.938zm7.5 0v.938h1v-.938zM1.906 8.5h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031zM7.5 9.406v.938h1v-.938zm8.5.938v-.938h-1v.938zm-8.5.937v.938h1v-.938zm8.5.938v-.938h-1v.938zm-8.5.937v.938h1v-.938zm8.5.938v-.938h-1v.938zM1.906 16h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469zm1.875.5h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469z"/></symbol><symbol class="bi bi-border-middle" viewBox="0 0 16 16" id="border-middle"><path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969zm.937 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938zM8.5 16h-1V0h1zm.906-15h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031zM1 2.844v-.938H0v.938zm14-.938v.938h1v-.938zM1 4.719V3.78H0v.938h1zm14-.938v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm14-.938v.938h1v-.938zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5zm1.406 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm3.75 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031zM0 9.406v.938h1v-.938zm16 .938v-.938h-1v.938zm-16 .937v.938h1v-.938zm16 .938v-.938h-1v.938zm-16 .937v.938h1v-.938zm16 .938v-.938h-1v.938zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0zm1.906 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm3.75 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469z"/></symbol><symbol class="bi bi-border-outer" viewBox="0 0 16 16" id="border-outer"><path d="M7.5 1.906v.938h1v-.938zm0 1.875v.938h1V3.78h-1zm0 1.875v.938h1v-.938zM1.906 8.5h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zM7.5 9.406v.938h1v-.938zm0 1.875v.938h1v-.938zm0 1.875v.938h1v-.938z"/><path d="M0 0v16h16V0zm1 1h14v14H1z"/></symbol><symbol class="bi bi-border-right" viewBox="0 0 16 16" id="border-right"><path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969zm.937 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469zM9.406 1h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zM16 0h-1v16h1zM1 2.844v-.938H0v.938zm6.5-.938v.938h1v-.938zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm6.5-.938v.938h1v-.938zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5zm1.406 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zM0 9.406v.938h1v-.938zm7.5 0v.938h1v-.938zM0 11.281v.938h1v-.938zm7.5 0v.938h1v-.938zM0 13.156v.938h1v-.938zm7.5 0v.938h1v-.938zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0zm1.906 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469zm1.875.5h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938z"/></symbol><symbol class="bi bi-border-style" viewBox="0 0 16 16" id="border-style"><path d="M1 3.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm8 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-4 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm8 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-4-4a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-border-top" viewBox="0 0 16 16" id="border-top"><path d="M0 0v1h16V0zm1 2.844v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5zm1.406 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031zM0 9.406v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0zm1.906 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469zm1.875.5h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469z"/></symbol><symbol class="bi bi-border-width" viewBox="0 0 16 16" id="border-width"><path d="M0 3.5A.5.5 0 0 1 .5 3h15a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5zm0 5A.5.5 0 0 1 .5 8h15a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h15a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-bounding-box" viewBox="0 0 16 16" id="bounding-box"><path d="M5 2V0H0v5h2v6H0v5h5v-2h6v2h5v-5h-2V5h2V0h-5v2zm6 1v2h2v6h-2v2H5v-2H3V5h2V3zm1-2h3v3h-3zm3 11v3h-3v-3zM4 15H1v-3h3zM1 4V1h3v3z"/></symbol><symbol class="bi bi-bounding-box-circles" viewBox="0 0 16 16" id="bounding-box-circles"><path d="M2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2M0 2a2 2 0 0 1 3.937-.5h8.126A2 2 0 1 1 14.5 3.937v8.126a2 2 0 1 1-2.437 2.437H3.937A2 2 0 1 1 1.5 12.063V3.937A2 2 0 0 1 0 2m2.5 1.937v8.126c.703.18 1.256.734 1.437 1.437h8.126a2 2 0 0 1 1.437-1.437V3.937A2 2 0 0 1 12.063 2.5H3.937A2 2 0 0 1 2.5 3.937M14 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2M2 13a1 1 0 1 0 0 2 1 1 0 0 0 0-2m12 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/></symbol><symbol class="bi bi-box" viewBox="0 0 16 16" id="box"><path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5 8 5.961 14.154 3.5zM15 4.239l-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464z"/></symbol><symbol class="bi bi-box-arrow-down" viewBox="0 0 16 16" id="box-arrow-down"><path fill-rule="evenodd" d="M3.5 10a.5.5 0 0 1-.5-.5v-8a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 0 0 1h2A1.5 1.5 0 0 0 14 9.5v-8A1.5 1.5 0 0 0 12.5 0h-9A1.5 1.5 0 0 0 2 1.5v8A1.5 1.5 0 0 0 3.5 11h2a.5.5 0 0 0 0-1z"/><path fill-rule="evenodd" d="M7.646 15.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 14.293V5.5a.5.5 0 0 0-1 0v8.793l-2.146-2.147a.5.5 0 0 0-.708.708z"/></symbol><symbol class="bi bi-box-arrow-down-left" viewBox="0 0 16 16" id="box-arrow-down-left"><path fill-rule="evenodd" d="M7.364 12.5a.5.5 0 0 0 .5.5H14.5a1.5 1.5 0 0 0 1.5-1.5v-10A1.5 1.5 0 0 0 14.5 0h-10A1.5 1.5 0 0 0 3 1.5v6.636a.5.5 0 1 0 1 0V1.5a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v10a.5.5 0 0 1-.5.5H7.864a.5.5 0 0 0-.5.5"/><path fill-rule="evenodd" d="M0 15.5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 0-1H1.707l8.147-8.146a.5.5 0 0 0-.708-.708L1 14.293V10.5a.5.5 0 0 0-1 0z"/></symbol><symbol class="bi bi-box-arrow-down-right" viewBox="0 0 16 16" id="box-arrow-down-right"><path fill-rule="evenodd" d="M8.636 12.5a.5.5 0 0 1-.5.5H1.5A1.5 1.5 0 0 1 0 11.5v-10A1.5 1.5 0 0 1 1.5 0h10A1.5 1.5 0 0 1 13 1.5v6.636a.5.5 0 0 1-1 0V1.5a.5.5 0 0 0-.5-.5h-10a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h6.636a.5.5 0 0 1 .5.5"/><path fill-rule="evenodd" d="M16 15.5a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1 0-1h3.793L6.146 6.854a.5.5 0 1 1 .708-.708L15 14.293V10.5a.5.5 0 0 1 1 0z"/></symbol><symbol class="bi bi-box-arrow-in-down" viewBox="0 0 16 16" id="box-arrow-in-down"><path fill-rule="evenodd" d="M3.5 6a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 1 0-1h2A1.5 1.5 0 0 1 14 6.5v8a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-8A1.5 1.5 0 0 1 3.5 5h2a.5.5 0 0 1 0 1z"/><path fill-rule="evenodd" d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708z"/></symbol><symbol class="bi bi-box-arrow-in-down-left" viewBox="0 0 16 16" id="box-arrow-in-down-left"><path fill-rule="evenodd" d="M9.636 2.5a.5.5 0 0 0-.5-.5H2.5A1.5 1.5 0 0 0 1 3.5v10A1.5 1.5 0 0 0 2.5 15h10a1.5 1.5 0 0 0 1.5-1.5V6.864a.5.5 0 0 0-1 0V13.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5"/><path fill-rule="evenodd" d="M5 10.5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 0-1H6.707l8.147-8.146a.5.5 0 0 0-.708-.708L6 9.293V5.5a.5.5 0 0 0-1 0z"/></symbol><symbol class="bi bi-box-arrow-in-down-right" viewBox="0 0 16 16" id="box-arrow-in-down-right"><path fill-rule="evenodd" d="M6.364 2.5a.5.5 0 0 1 .5-.5H13.5A1.5 1.5 0 0 1 15 3.5v10a1.5 1.5 0 0 1-1.5 1.5h-10A1.5 1.5 0 0 1 2 13.5V6.864a.5.5 0 1 1 1 0V13.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5v-10a.5.5 0 0 0-.5-.5H6.864a.5.5 0 0 1-.5-.5"/><path fill-rule="evenodd" d="M11 10.5a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1 0-1h3.793L1.146 1.854a.5.5 0 1 1 .708-.708L10 9.293V5.5a.5.5 0 0 1 1 0z"/></symbol><symbol class="bi bi-box-arrow-in-left" viewBox="0 0 16 16" id="box-arrow-in-left"><path fill-rule="evenodd" d="M10 3.5a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 1 1 0v2A1.5 1.5 0 0 1 9.5 14h-8A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2h8A1.5 1.5 0 0 1 11 3.5v2a.5.5 0 0 1-1 0z"/><path fill-rule="evenodd" d="M4.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H14.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708z"/></symbol><symbol class="bi bi-box-arrow-in-right" viewBox="0 0 16 16" id="box-arrow-in-right"><path fill-rule="evenodd" d="M6 3.5a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 0-1 0v2A1.5 1.5 0 0 0 6.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-8A1.5 1.5 0 0 0 5 3.5v2a.5.5 0 0 0 1 0z"/><path fill-rule="evenodd" d="M11.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H1.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708z"/></symbol><symbol class="bi bi-box-arrow-in-up" viewBox="0 0 16 16" id="box-arrow-in-up"><path fill-rule="evenodd" d="M3.5 10a.5.5 0 0 1-.5-.5v-8a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 0 0 1h2A1.5 1.5 0 0 0 14 9.5v-8A1.5 1.5 0 0 0 12.5 0h-9A1.5 1.5 0 0 0 2 1.5v8A1.5 1.5 0 0 0 3.5 11h2a.5.5 0 0 0 0-1z"/><path fill-rule="evenodd" d="M7.646 4.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V14.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708z"/></symbol><symbol class="bi bi-box-arrow-in-up-left" viewBox="0 0 16 16" id="box-arrow-in-up-left"><path fill-rule="evenodd" d="M9.636 13.5a.5.5 0 0 1-.5.5H2.5A1.5 1.5 0 0 1 1 12.5v-10A1.5 1.5 0 0 1 2.5 1h10A1.5 1.5 0 0 1 14 2.5v6.636a.5.5 0 0 1-1 0V2.5a.5.5 0 0 0-.5-.5h-10a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h6.636a.5.5 0 0 1 .5.5"/><path fill-rule="evenodd" d="M5 5.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1H6.707l8.147 8.146a.5.5 0 0 1-.708.708L6 6.707V10.5a.5.5 0 0 1-1 0z"/></symbol><symbol class="bi bi-box-arrow-in-up-right" viewBox="0 0 16 16" id="box-arrow-in-up-right"><path fill-rule="evenodd" d="M6.364 13.5a.5.5 0 0 0 .5.5H13.5a1.5 1.5 0 0 0 1.5-1.5v-10A1.5 1.5 0 0 0 13.5 1h-10A1.5 1.5 0 0 0 2 2.5v6.636a.5.5 0 1 0 1 0V2.5a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v10a.5.5 0 0 1-.5.5H6.864a.5.5 0 0 0-.5.5"/><path fill-rule="evenodd" d="M11 5.5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793l-8.147 8.146a.5.5 0 0 0 .708.708L10 6.707V10.5a.5.5 0 0 0 1 0z"/></symbol><symbol class="bi bi-box-arrow-left" viewBox="0 0 16 16" id="box-arrow-left"><path fill-rule="evenodd" d="M6 12.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v2a.5.5 0 0 1-1 0v-2A1.5 1.5 0 0 1 6.5 2h8A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 5 12.5v-2a.5.5 0 0 1 1 0z"/><path fill-rule="evenodd" d="M.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L1.707 7.5H10.5a.5.5 0 0 1 0 1H1.707l2.147 2.146a.5.5 0 0 1-.708.708z"/></symbol><symbol class="bi bi-box-arrow-right" viewBox="0 0 16 16" id="box-arrow-right"><path fill-rule="evenodd" d="M10 12.5a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v2a.5.5 0 0 0 1 0v-2A1.5 1.5 0 0 0 9.5 2h-8A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-2a.5.5 0 0 0-1 0z"/><path fill-rule="evenodd" d="M15.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L14.293 7.5H5.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708z"/></symbol><symbol class="bi bi-box-arrow-up" viewBox="0 0 16 16" id="box-arrow-up"><path fill-rule="evenodd" d="M3.5 6a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 1 0-1h2A1.5 1.5 0 0 1 14 6.5v8a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-8A1.5 1.5 0 0 1 3.5 5h2a.5.5 0 0 1 0 1z"/><path fill-rule="evenodd" d="M7.646.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 1.707V10.5a.5.5 0 0 1-1 0V1.707L5.354 3.854a.5.5 0 1 1-.708-.708z"/></symbol><symbol class="bi bi-box-arrow-up-left" viewBox="0 0 16 16" id="box-arrow-up-left"><path fill-rule="evenodd" d="M7.364 3.5a.5.5 0 0 1 .5-.5H14.5A1.5 1.5 0 0 1 16 4.5v10a1.5 1.5 0 0 1-1.5 1.5h-10A1.5 1.5 0 0 1 3 14.5V7.864a.5.5 0 1 1 1 0V14.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5v-10a.5.5 0 0 0-.5-.5H7.864a.5.5 0 0 1-.5-.5"/><path fill-rule="evenodd" d="M0 .5A.5.5 0 0 1 .5 0h5a.5.5 0 0 1 0 1H1.707l8.147 8.146a.5.5 0 0 1-.708.708L1 1.707V5.5a.5.5 0 0 1-1 0z"/></symbol><symbol class="bi bi-box-arrow-up-right" viewBox="0 0 16 16" id="box-arrow-up-right"><path fill-rule="evenodd" d="M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5"/><path fill-rule="evenodd" d="M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0z"/></symbol><symbol class="bi bi-box-fill" viewBox="0 0 16 16" id="box-fill"><path fill-rule="evenodd" d="M15.528 2.973a.75.75 0 0 1 .472.696v8.662a.75.75 0 0 1-.472.696l-7.25 2.9a.75.75 0 0 1-.557 0l-7.25-2.9A.75.75 0 0 1 0 12.331V3.669a.75.75 0 0 1 .471-.696L7.443.184l.004-.001.274-.11a.75.75 0 0 1 .558 0l.274.11.004.001zm-1.374.527L8 5.962 1.846 3.5 1 3.839v.4l6.5 2.6v7.922l.5.2.5-.2V6.84l6.5-2.6v-.4l-.846-.339Z"/></symbol><symbol class="bi bi-box-seam" viewBox="0 0 16 16" id="box-seam"><path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5l2.404.961L10.404 2zm3.564 1.426L5.596 5 8 5.961 14.154 3.5zm3.25 1.7-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464z"/></symbol><symbol class="bi bi-box-seam-fill" viewBox="0 0 16 16" id="box-seam-fill"><path fill-rule="evenodd" d="M15.528 2.973a.75.75 0 0 1 .472.696v8.662a.75.75 0 0 1-.472.696l-7.25 2.9a.75.75 0 0 1-.557 0l-7.25-2.9A.75.75 0 0 1 0 12.331V3.669a.75.75 0 0 1 .471-.696L7.443.184l.01-.003.268-.108a.75.75 0 0 1 .558 0l.269.108.01.003zM10.404 2 4.25 4.461 1.846 3.5 1 3.839v.4l6.5 2.6v7.922l.5.2.5-.2V6.84l6.5-2.6v-.4l-.846-.339L8 5.961 5.596 5l6.154-2.461z"/></symbol><symbol class="bi bi-box2" viewBox="0 0 16 16" id="box2"><path d="M2.95.4a1 1 0 0 1 .8-.4h8.5a1 1 0 0 1 .8.4l2.85 3.8a.5.5 0 0 1 .1.3V15a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V4.5a.5.5 0 0 1 .1-.3zM7.5 1H3.75L1.5 4h6zm1 0v3h6l-2.25-3zM15 5H1v10h14z"/></symbol><symbol class="bi bi-box2-fill" viewBox="0 0 16 16" id="box2-fill"><path d="M3.75 0a1 1 0 0 0-.8.4L.1 4.2a.5.5 0 0 0-.1.3V15a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V4.5a.5.5 0 0 0-.1-.3L13.05.4a1 1 0 0 0-.8-.4zM15 4.667V5H1v-.333L1.5 4h6V1h1v3h6z"/></symbol><symbol class="bi bi-box2-heart" viewBox="0 0 16 16" id="box2-heart"><path d="M8 7.982C9.664 6.309 13.825 9.236 8 13 2.175 9.236 6.336 6.31 8 7.982"/><path d="M3.75 0a1 1 0 0 0-.8.4L.1 4.2a.5.5 0 0 0-.1.3V15a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V4.5a.5.5 0 0 0-.1-.3L13.05.4a1 1 0 0 0-.8-.4zm0 1H7.5v3h-6zM8.5 4V1h3.75l2.25 3zM15 5v10H1V5z"/></symbol><symbol class="bi bi-box2-heart-fill" viewBox="0 0 16 16" id="box2-heart-fill"><path d="M3.75 0a1 1 0 0 0-.8.4L.1 4.2a.5.5 0 0 0-.1.3V15a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V4.5a.5.5 0 0 0-.1-.3L13.05.4a1 1 0 0 0-.8-.4zM8.5 4h6l.5.667V5H1v-.333L1.5 4h6V1h1zM8 7.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-boxes" viewBox="0 0 16 16" id="boxes"><path d="M7.752.066a.5.5 0 0 1 .496 0l3.75 2.143a.5.5 0 0 1 .252.434v3.995l3.498 2A.5.5 0 0 1 16 9.07v4.286a.5.5 0 0 1-.252.434l-3.75 2.143a.5.5 0 0 1-.496 0l-3.502-2-3.502 2.001a.5.5 0 0 1-.496 0l-3.75-2.143A.5.5 0 0 1 0 13.357V9.071a.5.5 0 0 1 .252-.434L3.75 6.638V2.643a.5.5 0 0 1 .252-.434zM4.25 7.504 1.508 9.071l2.742 1.567 2.742-1.567zM7.5 9.933l-2.75 1.571v3.134l2.75-1.571zm1 3.134 2.75 1.571v-3.134L8.5 9.933zm.508-3.996 2.742 1.567 2.742-1.567-2.742-1.567zm2.242-2.433V3.504L8.5 5.076V8.21zM7.5 8.21V5.076L4.75 3.504v3.134zM5.258 2.643 8 4.21l2.742-1.567L8 1.076zM15 9.933l-2.75 1.571v3.134L15 13.067zM3.75 14.638v-3.134L1 9.933v3.134z"/></symbol><symbol class="bi bi-braces" viewBox="0 0 16 16" id="braces"><path d="M2.114 8.063V7.9c1.005-.102 1.497-.615 1.497-1.6V4.503c0-1.094.39-1.538 1.354-1.538h.273V2h-.376C3.25 2 2.49 2.759 2.49 4.352v1.524c0 1.094-.376 1.456-1.49 1.456v1.299c1.114 0 1.49.362 1.49 1.456v1.524c0 1.593.759 2.352 2.372 2.352h.376v-.964h-.273c-.964 0-1.354-.444-1.354-1.538V9.663c0-.984-.492-1.497-1.497-1.6M13.886 7.9v.163c-1.005.103-1.497.616-1.497 1.6v1.798c0 1.094-.39 1.538-1.354 1.538h-.273v.964h.376c1.613 0 2.372-.759 2.372-2.352v-1.524c0-1.094.376-1.456 1.49-1.456V7.332c-1.114 0-1.49-.362-1.49-1.456V4.352C13.51 2.759 12.75 2 11.138 2h-.376v.964h.273c.964 0 1.354.444 1.354 1.538V6.3c0 .984.492 1.497 1.497 1.6"/></symbol><symbol class="bi bi-braces-asterisk" viewBox="0 0 16 16" id="braces-asterisk"><path fill-rule="evenodd" d="M1.114 8.063V7.9c1.005-.102 1.497-.615 1.497-1.6V4.503c0-1.094.39-1.538 1.354-1.538h.273V2h-.376C2.25 2 1.49 2.759 1.49 4.352v1.524c0 1.094-.376 1.456-1.49 1.456v1.299c1.114 0 1.49.362 1.49 1.456v1.524c0 1.593.759 2.352 2.372 2.352h.376v-.964h-.273c-.964 0-1.354-.444-1.354-1.538V9.663c0-.984-.492-1.497-1.497-1.6M14.886 7.9v.164c-1.005.103-1.497.616-1.497 1.6v1.798c0 1.094-.39 1.538-1.354 1.538h-.273v.964h.376c1.613 0 2.372-.759 2.372-2.352v-1.524c0-1.094.376-1.456 1.49-1.456v-1.3c-1.114 0-1.49-.362-1.49-1.456V4.352C14.51 2.759 13.75 2 12.138 2h-.376v.964h.273c.964 0 1.354.444 1.354 1.538V6.3c0 .984.492 1.497 1.497 1.6M7.5 11.5V9.207l-1.621 1.621-.707-.707L6.792 8.5H4.5v-1h2.293L5.172 5.879l.707-.707L7.5 6.792V4.5h1v2.293l1.621-1.621.707.707L9.208 7.5H11.5v1H9.207l1.621 1.621-.707.707L8.5 9.208V11.5z"/></symbol><symbol class="bi bi-bricks" viewBox="0 0 16 16" id="bricks"><path d="M0 .5A.5.5 0 0 1 .5 0h15a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H14v2h1.5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H14v2h1.5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5H2v-2H.5a.5.5 0 0 1-.5-.5v-3A.5.5 0 0 1 .5 6H2V4H.5a.5.5 0 0 1-.5-.5zM3 4v2h4.5V4zm5.5 0v2H13V4zM3 10v2h4.5v-2zm5.5 0v2H13v-2zM1 1v2h3.5V1zm4.5 0v2h5V1zm6 0v2H15V1zM1 7v2h3.5V7zm4.5 0v2h5V7zm6 0v2H15V7zM1 13v2h3.5v-2zm4.5 0v2h5v-2zm6 0v2H15v-2z"/></symbol><symbol class="bi bi-briefcase" viewBox="0 0 16 16" id="briefcase"><path d="M6.5 1A1.5 1.5 0 0 0 5 2.5V3H1.5A1.5 1.5 0 0 0 0 4.5v8A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-8A1.5 1.5 0 0 0 14.5 3H11v-.5A1.5 1.5 0 0 0 9.5 1zm0 1h3a.5.5 0 0 1 .5.5V3H6v-.5a.5.5 0 0 1 .5-.5m1.886 6.914L15 7.151V12.5a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5V7.15l6.614 1.764a1.5 1.5 0 0 0 .772 0M1.5 4h13a.5.5 0 0 1 .5.5v1.616L8.129 7.948a.5.5 0 0 1-.258 0L1 6.116V4.5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-briefcase-fill" viewBox="0 0 16 16" id="briefcase-fill"><path d="M6.5 1A1.5 1.5 0 0 0 5 2.5V3H1.5A1.5 1.5 0 0 0 0 4.5v1.384l7.614 2.03a1.5 1.5 0 0 0 .772 0L16 5.884V4.5A1.5 1.5 0 0 0 14.5 3H11v-.5A1.5 1.5 0 0 0 9.5 1zm0 1h3a.5.5 0 0 1 .5.5V3H6v-.5a.5.5 0 0 1 .5-.5"/><path d="M0 12.5A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5V6.85L8.129 8.947a.5.5 0 0 1-.258 0L0 6.85z"/></symbol><symbol class="bi bi-brightness-alt-high" viewBox="0 0 16 16" id="brightness-alt-high"><path d="M8 3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 3m8 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5m-13.5.5a.5.5 0 0 0 0-1h-2a.5.5 0 0 0 0 1zm11.157-6.157a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m-9.9 2.121a.5.5 0 0 0 .707-.707L3.05 5.343a.5.5 0 1 0-.707.707zM8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4m0 1a3 3 0 0 1 2.959 2.5H5.04A3 3 0 0 1 8 8"/></symbol><symbol class="bi bi-brightness-alt-high-fill" viewBox="0 0 16 16" id="brightness-alt-high-fill"><path d="M8 3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 3m8 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5m-13.5.5a.5.5 0 0 0 0-1h-2a.5.5 0 0 0 0 1zm11.157-6.157a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m-9.9 2.121a.5.5 0 0 0 .707-.707L3.05 5.343a.5.5 0 1 0-.707.707zM8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4"/></symbol><symbol class="bi bi-brightness-alt-low" viewBox="0 0 16 16" id="brightness-alt-low"><path d="M8.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m5 6a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1M2 11a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m10.243-3.536a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m-8.486-.707a.5.5 0 1 0 .707.707.5.5 0 0 0-.707-.707M8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4m0 1a3 3 0 0 1 2.959 2.5H5.04A3 3 0 0 1 8 8"/></symbol><symbol class="bi bi-brightness-alt-low-fill" viewBox="0 0 16 16" id="brightness-alt-low-fill"><path d="M8.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m5 6a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1M2 11a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m10.243-3.536a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m-8.486-.707a.5.5 0 1 0 .707.707.5.5 0 0 0-.707-.707M8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4"/></symbol><symbol class="bi bi-brightness-high" viewBox="0 0 16 16" id="brightness-high"><path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/></symbol><symbol class="bi bi-brightness-high-fill" viewBox="0 0 16 16" id="brightness-high-fill"><path d="M12 8a4 4 0 1 1-8 0 4 4 0 0 1 8 0M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/></symbol><symbol class="bi bi-brightness-low" viewBox="0 0 16 16" id="brightness-low"><path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8m.5-9.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 11a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m5-5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m-11 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m9.743-4.036a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m-7.779 7.779a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m7.072 0a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707M3.757 4.464a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707"/></symbol><symbol class="bi bi-brightness-low-fill" viewBox="0 0 16 16" id="brightness-low-fill"><path d="M12 8a4 4 0 1 1-8 0 4 4 0 0 1 8 0M8.5 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 11a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m5-5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m-11 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m9.743-4.036a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m-7.779 7.779a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m7.072 0a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707M3.757 4.464a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707"/></symbol><symbol class="bi bi-brilliance" viewBox="0 0 16 16" id="brilliance"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16M1 8a7 7 0 0 0 7 7 3.5 3.5 0 1 0 0-7 3.5 3.5 0 1 1 0-7 7 7 0 0 0-7 7"/></symbol><symbol class="bi bi-broadcast" viewBox="0 0 16 16" id="broadcast"><path d="M3.05 3.05a7 7 0 0 0 0 9.9.5.5 0 0 1-.707.707 8 8 0 0 1 0-11.314.5.5 0 0 1 .707.707m2.122 2.122a4 4 0 0 0 0 5.656.5.5 0 1 1-.708.708 5 5 0 0 1 0-7.072.5.5 0 0 1 .708.708m5.656-.708a.5.5 0 0 1 .708 0 5 5 0 0 1 0 7.072.5.5 0 1 1-.708-.708 4 4 0 0 0 0-5.656.5.5 0 0 1 0-.708m2.122-2.12a.5.5 0 0 1 .707 0 8 8 0 0 1 0 11.313.5.5 0 0 1-.707-.707 7 7 0 0 0 0-9.9.5.5 0 0 1 0-.707zM10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/></symbol><symbol class="bi bi-broadcast-pin" viewBox="0 0 16 16" id="broadcast-pin"><path d="M3.05 3.05a7 7 0 0 0 0 9.9.5.5 0 0 1-.707.707 8 8 0 0 1 0-11.314.5.5 0 0 1 .707.707m2.122 2.122a4 4 0 0 0 0 5.656.5.5 0 1 1-.708.708 5 5 0 0 1 0-7.072.5.5 0 0 1 .708.708m5.656-.708a.5.5 0 0 1 .708 0 5 5 0 0 1 0 7.072.5.5 0 1 1-.708-.708 4 4 0 0 0 0-5.656.5.5 0 0 1 0-.708m2.122-2.12a.5.5 0 0 1 .707 0 8 8 0 0 1 0 11.313.5.5 0 0 1-.707-.707 7 7 0 0 0 0-9.9.5.5 0 0 1 0-.707zM6 8a2 2 0 1 1 2.5 1.937V15.5a.5.5 0 0 1-1 0V9.937A2 2 0 0 1 6 8"/></symbol><symbol class="bi bi-browser-chrome" viewBox="0 0 16 16" id="browser-chrome"><path fill-rule="evenodd" d="M16 8a8 8 0 0 1-7.022 7.94l1.902-7.098a3 3 0 0 0 .05-1.492A3 3 0 0 0 10.237 6h5.511A8 8 0 0 1 16 8M0 8a8 8 0 0 0 7.927 8l1.426-5.321a3 3 0 0 1-.723.255 3 3 0 0 1-1.743-.147 3 3 0 0 1-1.043-.7L.633 4.876A8 8 0 0 0 0 8m5.004-.167L1.108 3.936A8.003 8.003 0 0 1 15.418 5H8.066a3 3 0 0 0-1.252.243 2.99 2.99 0 0 0-1.81 2.59M8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/></symbol><symbol class="bi bi-browser-edge" viewBox="0 0 16 16" id="browser-edge"><path d="M9.482 9.341c-.069.062-.17.153-.17.309 0 .162.107.325.3.456.877.613 2.521.54 2.592.538h.002c.667 0 1.32-.18 1.894-.519A3.84 3.84 0 0 0 16 6.819c.018-1.316-.44-2.218-.666-2.664l-.04-.08C13.963 1.487 11.106 0 8 0A8 8 0 0 0 .473 5.29C1.488 4.048 3.183 3.262 5 3.262c2.83 0 5.01 1.885 5.01 4.797h-.004v.002c0 .338-.168.832-.487 1.244l.006-.006z"/><path d="M.01 7.753a8.14 8.14 0 0 0 .753 3.641 8 8 0 0 0 6.495 4.564 5 5 0 0 1-.785-.377h-.01l-.12-.075a5.5 5.5 0 0 1-1.56-1.463A5.543 5.543 0 0 1 6.81 5.8l.01-.004.025-.012c.208-.098.62-.292 1.167-.285q.194.001.384.033a4 4 0 0 0-.993-.698l-.01-.005C6.348 4.282 5.199 4.263 5 4.263c-2.44 0-4.824 1.634-4.99 3.49m10.263 7.912q.133-.04.265-.084-.153.047-.307.086z"/><path d="M10.228 15.667a5 5 0 0 0 .303-.086l.082-.025a8.02 8.02 0 0 0 4.162-3.3.25.25 0 0 0-.331-.35q-.322.168-.663.294a6.4 6.4 0 0 1-2.243.4c-2.957 0-5.532-2.031-5.532-4.644q.003-.203.046-.399a4.54 4.54 0 0 0-.46 5.898l.003.005c.315.441.707.821 1.158 1.121h.003l.144.09c.877.55 1.721 1.078 3.328.996"/></symbol><symbol class="bi bi-browser-firefox" viewBox="0 0 16 16" id="browser-firefox"><path d="M13.384 3.408c.535.276 1.22 1.152 1.556 1.963a8 8 0 0 1 .503 3.897l-.009.077-.026.224A7.758 7.758 0 0 1 .006 8.257v-.04q.025-.545.114-1.082c.01-.074.075-.42.09-.489l.01-.051a6.6 6.6 0 0 1 1.041-2.35q.327-.465.725-.87.35-.358.758-.65a1.5 1.5 0 0 1 .26-.137c-.018.268-.04 1.553.268 1.943h.003a5.7 5.7 0 0 1 1.868-1.443 3.6 3.6 0 0 0 .021 1.896q.105.07.2.152c.107.09.226.207.454.433l.068.066.009.009a2 2 0 0 0 .213.18c.383.287.943.563 1.306.741.201.1.342.168.359.193l.004.008c-.012.193-.695.858-.933.858-2.206 0-2.564 1.335-2.564 1.335.087.997.714 1.839 1.517 2.357a4 4 0 0 0 .439.241q.114.05.228.094c.325.115.665.18 1.01.194 3.043.143 4.155-2.804 3.129-4.745v-.001a3 3 0 0 0-.731-.9 3 3 0 0 0-.571-.37l-.003-.002a2.68 2.68 0 0 1 1.87.454 3.92 3.92 0 0 0-3.396-1.983q-.116.001-.23.01l-.042.003V4.31h-.002a4 4 0 0 0-.8.14 7 7 0 0 0-.333-.314 2 2 0 0 0-.2-.152 4 4 0 0 1-.088-.383 5 5 0 0 1 1.352-.289l.05-.003c.052-.004.125-.01.205-.012C7.996 2.212 8.733.843 10.17.002l-.003.005.003-.001.002-.002h.002l.002-.002h.015a.02.02 0 0 1 .012.007 2.4 2.4 0 0 0 .206.48q.09.153.183.297c.49.774 1.023 1.379 1.543 1.968.771.874 1.512 1.715 2.036 3.02l-.001-.013a8 8 0 0 0-.786-2.353"/></symbol><symbol class="bi bi-browser-safari" viewBox="0 0 16 16" id="browser-safari"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.25-14.75v1.5a.25.25 0 0 1-.5 0v-1.5a.25.25 0 0 1 .5 0m0 12v1.5a.25.25 0 1 1-.5 0v-1.5a.25.25 0 1 1 .5 0M4.5 1.938a.25.25 0 0 1 .342.091l.75 1.3a.25.25 0 0 1-.434.25l-.75-1.3a.25.25 0 0 1 .092-.341m6 10.392a.25.25 0 0 1 .341.092l.75 1.299a.25.25 0 1 1-.432.25l-.75-1.3a.25.25 0 0 1 .091-.34ZM2.28 4.408l1.298.75a.25.25 0 0 1-.25.434l-1.299-.75a.25.25 0 0 1 .25-.434Zm10.392 6 1.299.75a.25.25 0 1 1-.25.434l-1.3-.75a.25.25 0 0 1 .25-.434ZM1 8a.25.25 0 0 1 .25-.25h1.5a.25.25 0 0 1 0 .5h-1.5A.25.25 0 0 1 1 8m12 0a.25.25 0 0 1 .25-.25h1.5a.25.25 0 1 1 0 .5h-1.5A.25.25 0 0 1 13 8M2.03 11.159l1.298-.75a.25.25 0 0 1 .25.432l-1.299.75a.25.25 0 0 1-.25-.432Zm10.392-6 1.299-.75a.25.25 0 1 1 .25.433l-1.3.75a.25.25 0 0 1-.25-.434ZM4.5 14.061a.25.25 0 0 1-.092-.341l.75-1.3a.25.25 0 0 1 .434.25l-.75 1.3a.25.25 0 0 1-.342.091m6-10.392a.25.25 0 0 1-.091-.342l.75-1.299a.25.25 0 1 1 .432.25l-.75 1.3a.25.25 0 0 1-.341.09ZM6.494 1.415l.13.483a.25.25 0 1 1-.483.13l-.13-.483a.25.25 0 0 1 .483-.13M9.86 13.972l.13.483a.25.25 0 1 1-.483.13l-.13-.483a.25.25 0 0 1 .483-.13M3.05 3.05a.25.25 0 0 1 .354 0l.353.354a.25.25 0 0 1-.353.353l-.354-.353a.25.25 0 0 1 0-.354m9.193 9.193a.25.25 0 0 1 .353 0l.354.353a.25.25 0 1 1-.354.354l-.353-.354a.25.25 0 0 1 0-.353M1.545 6.01l.483.13a.25.25 0 1 1-.13.483l-.483-.13a.25.25 0 1 1 .13-.482Zm12.557 3.365.483.13a.25.25 0 1 1-.13.483l-.483-.13a.25.25 0 1 1 .13-.483m-12.863.436a.25.25 0 0 1 .176-.306l.483-.13a.25.25 0 1 1 .13.483l-.483.13a.25.25 0 0 1-.306-.177m12.557-3.365a.25.25 0 0 1 .176-.306l.483-.13a.25.25 0 1 1 .13.483l-.483.13a.25.25 0 0 1-.306-.177M3.045 12.944a.3.3 0 0 1-.029-.376l3.898-5.592a.3.3 0 0 1 .062-.062l5.602-3.884a.278.278 0 0 1 .392.392L9.086 9.024a.3.3 0 0 1-.062.062l-5.592 3.898a.3.3 0 0 1-.382-.034zm3.143 1.817a.25.25 0 0 1-.176-.306l.129-.483a.25.25 0 0 1 .483.13l-.13.483a.25.25 0 0 1-.306.176M9.553 2.204a.25.25 0 0 1-.177-.306l.13-.483a.25.25 0 1 1 .483.13l-.13.483a.25.25 0 0 1-.306.176"/></symbol><symbol class="bi bi-brush" viewBox="0 0 16 16" id="brush"><path d="M15.825.12a.5.5 0 0 1 .132.584c-1.53 3.43-4.743 8.17-7.095 10.64a6.1 6.1 0 0 1-2.373 1.534c-.018.227-.06.538-.16.868-.201.659-.667 1.479-1.708 1.74a8.1 8.1 0 0 1-3.078.132 4 4 0 0 1-.562-.135 1.4 1.4 0 0 1-.466-.247.7.7 0 0 1-.204-.288.62.62 0 0 1 .004-.443c.095-.245.316-.38.461-.452.394-.197.625-.453.867-.826.095-.144.184-.297.287-.472l.117-.198c.151-.255.326-.54.546-.848.528-.739 1.201-.925 1.746-.896q.19.012.348.048c.062-.172.142-.38.238-.608.261-.619.658-1.419 1.187-2.069 2.176-2.67 6.18-6.206 9.117-8.104a.5.5 0 0 1 .596.04M4.705 11.912a1.2 1.2 0 0 0-.419-.1c-.246-.013-.573.05-.879.479-.197.275-.355.532-.5.777l-.105.177c-.106.181-.213.362-.32.528a3.4 3.4 0 0 1-.76.861c.69.112 1.736.111 2.657-.12.559-.139.843-.569.993-1.06a3 3 0 0 0 .126-.75zm1.44.026c.12-.04.277-.1.458-.183a5.1 5.1 0 0 0 1.535-1.1c1.9-1.996 4.412-5.57 6.052-8.631-2.59 1.927-5.566 4.66-7.302 6.792-.442.543-.795 1.243-1.042 1.826-.121.288-.214.54-.275.72v.001l.575.575zm-4.973 3.04.007-.005zm3.582-3.043.002.001h-.002z"/></symbol><symbol class="bi bi-brush-fill" viewBox="0 0 16 16" id="brush-fill"><path d="M15.825.12a.5.5 0 0 1 .132.584c-1.53 3.43-4.743 8.17-7.095 10.64a6.1 6.1 0 0 1-2.373 1.534c-.018.227-.06.538-.16.868-.201.659-.667 1.479-1.708 1.74a8.1 8.1 0 0 1-3.078.132 4 4 0 0 1-.562-.135 1.4 1.4 0 0 1-.466-.247.7.7 0 0 1-.204-.288.62.62 0 0 1 .004-.443c.095-.245.316-.38.461-.452.394-.197.625-.453.867-.826.095-.144.184-.297.287-.472l.117-.198c.151-.255.326-.54.546-.848.528-.739 1.201-.925 1.746-.896q.19.012.348.048c.062-.172.142-.38.238-.608.261-.619.658-1.419 1.187-2.069 2.176-2.67 6.18-6.206 9.117-8.104a.5.5 0 0 1 .596.04"/></symbol><symbol class="bi bi-bucket" viewBox="0 0 16 16" id="bucket"><path d="M2.522 5H2a.5.5 0 0 0-.494.574l1.372 9.149A1.5 1.5 0 0 0 4.36 16h7.278a1.5 1.5 0 0 0 1.483-1.277l1.373-9.149A.5.5 0 0 0 14 5h-.522A5.5 5.5 0 0 0 2.522 5m1.005 0a4.5 4.5 0 0 1 8.945 0zm9.892 1-1.286 8.574a.5.5 0 0 1-.494.426H4.36a.5.5 0 0 1-.494-.426L2.58 6h10.838z"/></symbol><symbol class="bi bi-bucket-fill" viewBox="0 0 16 16" id="bucket-fill"><path d="M2.522 5H2a.5.5 0 0 0-.494.574l1.372 9.149A1.5 1.5 0 0 0 4.36 16h7.278a1.5 1.5 0 0 0 1.483-1.277l1.373-9.149A.5.5 0 0 0 14 5h-.522A5.5 5.5 0 0 0 2.522 5m1.005 0a4.5 4.5 0 0 1 8.945 0z"/></symbol><symbol class="bi bi-bug" viewBox="0 0 16 16" id="bug"><path d="M4.355.522a.5.5 0 0 1 .623.333l.291.956A5 5 0 0 1 8 1c1.007 0 1.946.298 2.731.811l.29-.956a.5.5 0 1 1 .957.29l-.41 1.352A5 5 0 0 1 13 6h.5a.5.5 0 0 0 .5-.5V5a.5.5 0 0 1 1 0v.5A1.5 1.5 0 0 1 13.5 7H13v1h1.5a.5.5 0 0 1 0 1H13v1h.5a1.5 1.5 0 0 1 1.5 1.5v.5a.5.5 0 1 1-1 0v-.5a.5.5 0 0 0-.5-.5H13a5 5 0 0 1-10 0h-.5a.5.5 0 0 0-.5.5v.5a.5.5 0 1 1-1 0v-.5A1.5 1.5 0 0 1 2.5 10H3V9H1.5a.5.5 0 0 1 0-1H3V7h-.5A1.5 1.5 0 0 1 1 5.5V5a.5.5 0 0 1 1 0v.5a.5.5 0 0 0 .5.5H3c0-1.364.547-2.601 1.432-3.503l-.41-1.352a.5.5 0 0 1 .333-.623M4 7v4a4 4 0 0 0 3.5 3.97V7zm4.5 0v7.97A4 4 0 0 0 12 11V7zM12 6a4 4 0 0 0-1.334-2.982A3.98 3.98 0 0 0 8 2a3.98 3.98 0 0 0-2.667 1.018A4 4 0 0 0 4 6z"/></symbol><symbol class="bi bi-bug-fill" viewBox="0 0 16 16" id="bug-fill"><path d="M4.978.855a.5.5 0 1 0-.956.29l.41 1.352A5 5 0 0 0 3 6h10a5 5 0 0 0-1.432-3.503l.41-1.352a.5.5 0 1 0-.956-.29l-.291.956A5 5 0 0 0 8 1a5 5 0 0 0-2.731.811l-.29-.956z"/><path d="M13 6v1H8.5v8.975A5 5 0 0 0 13 11h.5a.5.5 0 0 1 .5.5v.5a.5.5 0 1 0 1 0v-.5a1.5 1.5 0 0 0-1.5-1.5H13V9h1.5a.5.5 0 0 0 0-1H13V7h.5A1.5 1.5 0 0 0 15 5.5V5a.5.5 0 0 0-1 0v.5a.5.5 0 0 1-.5.5zm-5.5 9.975V7H3V6h-.5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 0-1 0v.5A1.5 1.5 0 0 0 2.5 7H3v1H1.5a.5.5 0 0 0 0 1H3v1h-.5A1.5 1.5 0 0 0 1 11.5v.5a.5.5 0 1 0 1 0v-.5a.5.5 0 0 1 .5-.5H3a5 5 0 0 0 4.5 4.975"/></symbol><symbol class="bi bi-building" viewBox="0 0 16 16" id="building"><path d="M4 2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zm11 0H3v14h3v-2.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5V15h3z"/></symbol><symbol class="bi bi-building-add" viewBox="0 0 16 16" id="building-add"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/><path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-check" viewBox="0 0 16 16" id="building-check"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/><path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-dash" viewBox="0 0 16 16" id="building-dash"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/><path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-down" viewBox="0 0 16 16" id="building-down"><path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/><path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-exclamation" viewBox="0 0 16 16" id="building-exclamation"><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/><path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm8.5 4.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/></symbol><symbol class="bi bi-building-fill" viewBox="0 0 16 16" id="building-fill"><path d="M3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h3v-3.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5V16h3a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm1 2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5M4 5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM7.5 5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5m2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM4.5 8h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5m2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-building-fill-add" viewBox="0 0 16 16" id="building-fill-add"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-fill-check" viewBox="0 0 16 16" id="building-fill-check"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-fill-dash" viewBox="0 0 16 16" id="building-fill-dash"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-fill-down" viewBox="0 0 16 16" id="building-fill-down"><path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-fill-exclamation" viewBox="0 0 16 16" id="building-fill-exclamation"><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/></symbol><symbol class="bi bi-building-fill-gear" viewBox="0 0 16 16" id="building-fill-gear"><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M11.886 9.46c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/></symbol><symbol class="bi bi-building-fill-lock" viewBox="0 0 16 16" id="building-fill-lock"><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.764a3 3 0 0 0-4.989 2.497 2 2 0 0 0-.743.739H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5"/><path d="M9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-building-fill-slash" viewBox="0 0 16 16" id="building-fill-slash"><path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95Z"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-fill-up" viewBox="0 0 16 16" id="building-fill-up"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-fill-x" viewBox="0 0 16 16" id="building-fill-x"><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/></symbol><symbol class="bi bi-building-gear" viewBox="0 0 16 16" id="building-gear"><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/><path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm4.386 1.46c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/></symbol><symbol class="bi bi-building-lock" viewBox="0 0 16 16" id="building-lock"><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/><path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-building-slash" viewBox="0 0 16 16" id="building-slash"><path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95Z"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/><path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-up" viewBox="0 0 16 16" id="building-up"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/><path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-building-x" viewBox="0 0 16 16" id="building-x"><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/><path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm5 8a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/></symbol><symbol class="bi bi-buildings" viewBox="0 0 16 16" id="buildings"><path d="M14.763.075A.5.5 0 0 1 15 .5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5V14h-1v1.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V10a.5.5 0 0 1 .342-.474L6 7.64V4.5a.5.5 0 0 1 .276-.447l8-4a.5.5 0 0 1 .487.022M6 8.694 1 10.36V15h5zM7 15h2v-1.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5V15h2V1.309l-7 3.5z"/><path d="M2 11h1v1H2zm2 0h1v1H4zm-2 2h1v1H2zm2 0h1v1H4zm4-4h1v1H8zm2 0h1v1h-1zm-2 2h1v1H8zm2 0h1v1h-1zm2-2h1v1h-1zm0 2h1v1h-1zM8 7h1v1H8zm2 0h1v1h-1zm2 0h1v1h-1zM8 5h1v1H8zm2 0h1v1h-1zm2 0h1v1h-1zm0-2h1v1h-1z"/></symbol><symbol class="bi bi-buildings-fill" viewBox="0 0 16 16" id="buildings-fill"><path d="M15 .5a.5.5 0 0 0-.724-.447l-8 4A.5.5 0 0 0 6 4.5v3.14L.342 9.526A.5.5 0 0 0 0 10v5.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5V14h1v1.5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5zM2 11h1v1H2zm2 0h1v1H4zm-1 2v1H2v-1zm1 0h1v1H4zm9-10v1h-1V3zM8 5h1v1H8zm1 2v1H8V7zM8 9h1v1H8zm2 0h1v1h-1zm-1 2v1H8v-1zm1 0h1v1h-1zm3-2v1h-1V9zm-1 2h1v1h-1zm-2-4h1v1h-1zm3 0v1h-1V7zm-2-2v1h-1V5zm1 0h1v1h-1z"/></symbol><symbol class="bi bi-bullseye" viewBox="0 0 16 16" id="bullseye"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M8 13A5 5 0 1 1 8 3a5 5 0 0 1 0 10m0 1A6 6 0 1 0 8 2a6 6 0 0 0 0 12"/><path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8"/><path d="M9.5 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/></symbol><symbol class="bi bi-bus-front" viewBox="0 0 16 16" id="bus-front"><path d="M5 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0m8 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-6-1a1 1 0 1 0 0 2h2a1 1 0 1 0 0-2zm1-6c-1.876 0-3.426.109-4.552.226A.5.5 0 0 0 3 4.723v3.554a.5.5 0 0 0 .448.497C4.574 8.891 6.124 9 8 9s3.426-.109 4.552-.226A.5.5 0 0 0 13 8.277V4.723a.5.5 0 0 0-.448-.497A44 44 0 0 0 8 4m0-1c-1.837 0-3.353.107-4.448.22a.5.5 0 1 1-.104-.994A44 44 0 0 1 8 2c1.876 0 3.426.109 4.552.226a.5.5 0 1 1-.104.994A43 43 0 0 0 8 3"/><path d="M15 8a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1V2.64c0-1.188-.845-2.232-2.064-2.372A44 44 0 0 0 8 0C5.9 0 4.208.136 3.064.268 1.845.408 1 1.452 1 2.64V4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1v3.5c0 .818.393 1.544 1 2v2a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5V14h6v1.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-2c.607-.456 1-1.182 1-2zM8 1c2.056 0 3.71.134 4.822.261.676.078 1.178.66 1.178 1.379v8.86a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 11.5V2.64c0-.72.502-1.301 1.178-1.379A43 43 0 0 1 8 1"/></symbol><symbol class="bi bi-bus-front-fill" viewBox="0 0 16 16" id="bus-front-fill"><path d="M16 7a1 1 0 0 1-1 1v3.5c0 .818-.393 1.544-1 2v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5V14H5v1.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-2a2.5 2.5 0 0 1-1-2V8a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1V2.64C1 1.452 1.845.408 3.064.268A44 44 0 0 1 8 0c2.1 0 3.792.136 4.936.268C14.155.408 15 1.452 15 2.64V4a1 1 0 0 1 1 1zM3.552 3.22A43 43 0 0 1 8 3c1.837 0 3.353.107 4.448.22a.5.5 0 0 0 .104-.994A44 44 0 0 0 8 2c-1.876 0-3.426.109-4.552.226a.5.5 0 1 0 .104.994M8 4c-1.876 0-3.426.109-4.552.226A.5.5 0 0 0 3 4.723v3.554a.5.5 0 0 0 .448.497C4.574 8.891 6.124 9 8 9s3.426-.109 4.552-.226A.5.5 0 0 0 13 8.277V4.723a.5.5 0 0 0-.448-.497A44 44 0 0 0 8 4m-3 7a1 1 0 1 0-2 0 1 1 0 0 0 2 0m8 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m-7 0a1 1 0 0 0 1 1h2a1 1 0 1 0 0-2H7a1 1 0 0 0-1 1"/></symbol><symbol class="bi bi-c-circle" viewBox="0 0 16 16" id="c-circle"><path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.146 4.992c-1.212 0-1.927.92-1.927 2.502v1.06c0 1.571.703 2.462 1.927 2.462.979 0 1.641-.586 1.729-1.418h1.295v.093c-.1 1.448-1.354 2.467-3.03 2.467-2.091 0-3.269-1.336-3.269-3.603V7.482c0-2.261 1.201-3.638 3.27-3.638 1.681 0 2.935 1.054 3.029 2.572v.088H9.875c-.088-.879-.768-1.512-1.729-1.512"/></symbol><symbol class="bi bi-c-circle-fill" viewBox="0 0 16 16" id="c-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.146 4.992c.961 0 1.641.633 1.729 1.512h1.295v-.088c-.094-1.518-1.348-2.572-3.03-2.572-2.068 0-3.269 1.377-3.269 3.638v1.073c0 2.267 1.178 3.603 3.27 3.603 1.675 0 2.93-1.02 3.029-2.467v-.093H9.875c-.088.832-.75 1.418-1.729 1.418-1.224 0-1.927-.891-1.927-2.461v-1.06c0-1.583.715-2.503 1.927-2.503"/></symbol><symbol class="bi bi-c-square" viewBox="0 0 16 16" id="c-square"><path d="M8.146 4.992c-1.212 0-1.927.92-1.927 2.502v1.06c0 1.571.703 2.462 1.927 2.462.979 0 1.641-.586 1.729-1.418h1.295v.093c-.1 1.448-1.354 2.467-3.03 2.467-2.091 0-3.269-1.336-3.269-3.603V7.482c0-2.261 1.201-3.638 3.27-3.638 1.681 0 2.935 1.054 3.029 2.572v.088H9.875c-.088-.879-.768-1.512-1.729-1.512"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-c-square-fill" viewBox="0 0 16 16" id="c-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.146 4.992c-1.212 0-1.927.92-1.927 2.502v1.06c0 1.571.703 2.462 1.927 2.462.979 0 1.641-.586 1.729-1.418h1.295v.093c-.1 1.448-1.354 2.467-3.03 2.467-2.091 0-3.269-1.336-3.269-3.603V7.482c0-2.261 1.201-3.638 3.27-3.638 1.681 0 2.935 1.054 3.029 2.572v.088H9.875c-.088-.879-.768-1.512-1.729-1.512"/></symbol><symbol class="bi bi-cake" viewBox="0 0 16 16" id="cake"><path d="m7.994.013-.595.79a.747.747 0 0 0 .101 1.01V4H5a2 2 0 0 0-2 2v3H2a2 2 0 0 0-2 2v4a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-4a2 2 0 0 0-2-2h-1V6a2 2 0 0 0-2-2H8.5V1.806A.747.747 0 0 0 8.592.802zM4 6a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v.414a.9.9 0 0 1-.646-.268 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0A.9.9 0 0 1 4 6.414zm0 1.414c.49 0 .98-.187 1.354-.56a.914.914 0 0 1 1.292 0c.748.747 1.96.747 2.708 0a.914.914 0 0 1 1.292 0c.374.373.864.56 1.354.56V9H4zM1 11a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.793l-.354.354a.914.914 0 0 1-1.293 0 1.914 1.914 0 0 0-2.707 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0L1 11.793zm11.646 1.854a1.915 1.915 0 0 0 2.354.279V15H1v-1.867c.737.452 1.715.36 2.354-.28a.914.914 0 0 1 1.292 0c.748.748 1.96.748 2.708 0a.914.914 0 0 1 1.292 0c.748.748 1.96.748 2.707 0a.914.914 0 0 1 1.293 0Z"/></symbol><symbol class="bi bi-cake-fill" viewBox="0 0 16 16" id="cake-fill"><path d="m7.399.804.595-.792.598.79A.747.747 0 0 1 8.5 1.806V4H11a2 2 0 0 1 2 2v3h1a2 2 0 0 1 2 2v4a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1v-4a2 2 0 0 1 2-2h1V6a2 2 0 0 1 2-2h2.5V1.813a.747.747 0 0 1-.101-1.01ZM12 6.414a.9.9 0 0 1-.646-.268 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0A.9.9 0 0 1 4 6.414v1c.49 0 .98-.187 1.354-.56a.914.914 0 0 1 1.292 0c.748.747 1.96.747 2.708 0a.914.914 0 0 1 1.292 0c.374.373.864.56 1.354.56zm2.646 5.732a.914.914 0 0 1-1.293 0 1.914 1.914 0 0 0-2.707 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0L1 11.793v1.34c.737.452 1.715.36 2.354-.28a.914.914 0 0 1 1.292 0c.748.748 1.96.748 2.708 0a.914.914 0 0 1 1.292 0c.748.748 1.96.748 2.707 0a.914.914 0 0 1 1.293 0 1.915 1.915 0 0 0 2.354.28v-1.34z"/></symbol><symbol class="bi bi-cake2" viewBox="0 0 16 16" id="cake2"><path d="m3.494.013-.595.79A.747.747 0 0 0 3 1.814v2.683q-.224.051-.432.107c-.702.187-1.305.418-1.745.696C.408 5.56 0 5.954 0 6.5v7c0 .546.408.94.823 1.201.44.278 1.043.51 1.745.696C3.978 15.773 5.898 16 8 16s4.022-.227 5.432-.603c.701-.187 1.305-.418 1.745-.696.415-.261.823-.655.823-1.201v-7c0-.546-.408-.94-.823-1.201-.44-.278-1.043-.51-1.745-.696A12 12 0 0 0 13 4.496v-2.69a.747.747 0 0 0 .092-1.004l-.598-.79-.595.792A.747.747 0 0 0 12 1.813V4.3a22 22 0 0 0-2-.23V1.806a.747.747 0 0 0 .092-1.004l-.598-.79-.595.792A.747.747 0 0 0 9 1.813v2.204a29 29 0 0 0-2 0V1.806A.747.747 0 0 0 7.092.802l-.598-.79-.595.792A.747.747 0 0 0 6 1.813V4.07c-.71.05-1.383.129-2 .23V1.806A.747.747 0 0 0 4.092.802zm-.668 5.556L3 5.524v.967q.468.111 1 .201V5.315a21 21 0 0 1 2-.242v1.855q.488.036 1 .054V5.018a28 28 0 0 1 2 0v1.964q.512-.018 1-.054V5.073c.72.054 1.393.137 2 .242v1.377q.532-.09 1-.201v-.967l.175.045c.655.175 1.15.374 1.469.575.344.217.356.35.356.356s-.012.139-.356.356c-.319.2-.814.4-1.47.575C11.87 7.78 10.041 8 8 8c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575C1.012 6.639 1 6.506 1 6.5s.012-.139.356-.356c.319-.2.814-.4 1.47-.575M15 7.806v1.027l-.68.907a.94.94 0 0 1-1.17.276 1.94 1.94 0 0 0-2.236.363l-.348.348a1 1 0 0 1-1.307.092l-.06-.044a2 2 0 0 0-2.399 0l-.06.044a1 1 0 0 1-1.306-.092l-.35-.35a1.935 1.935 0 0 0-2.233-.362.935.935 0 0 1-1.168-.277L1 8.82V7.806c.42.232.956.428 1.568.591C3.978 8.773 5.898 9 8 9s4.022-.227 5.432-.603c.612-.163 1.149-.36 1.568-.591m0 2.679V13.5c0 .006-.012.139-.356.355-.319.202-.814.401-1.47.576C11.87 14.78 10.041 15 8 15c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575-.344-.217-.356-.35-.356-.356v-3.02a1.935 1.935 0 0 0 2.298.43.935.935 0 0 1 1.08.175l.348.349a2 2 0 0 0 2.615.185l.059-.044a1 1 0 0 1 1.2 0l.06.044a2 2 0 0 0 2.613-.185l.348-.348a.94.94 0 0 1 1.082-.175c.781.39 1.718.208 2.297-.426"/></symbol><symbol class="bi bi-cake2-fill" viewBox="0 0 16 16" id="cake2-fill"><path d="m2.899.804.595-.792.598.79A.747.747 0 0 1 4 1.806v4.886q-.532-.09-1-.201V1.813a.747.747 0 0 1-.1-1.01ZM13 1.806v4.685a15 15 0 0 1-1 .201v-4.88a.747.747 0 0 1-.1-1.007l.595-.792.598.79A.746.746 0 0 1 13 1.806m-3 0a.746.746 0 0 0 .092-1.004l-.598-.79-.595.792A.747.747 0 0 0 9 1.813v5.17q.512-.02 1-.055zm-3 0v5.176q-.512-.018-1-.054V1.813a.747.747 0 0 1-.1-1.01l.595-.79.598.789A.747.747 0 0 1 7 1.806"/><path d="M4.5 6.988V4.226a23 23 0 0 1 1-.114V7.16c0 .131.101.24.232.25l.231.017q.498.037 1.02.055l.258.01a.25.25 0 0 0 .26-.25V4.003a29 29 0 0 1 1 0V7.24a.25.25 0 0 0 .258.25l.259-.009q.52-.018 1.019-.055l.231-.017a.25.25 0 0 0 .232-.25V4.112q.518.047 1 .114v2.762a.25.25 0 0 0 .292.246l.291-.049q.547-.091 1.033-.208l.192-.046a.25.25 0 0 0 .192-.243V4.621c.672.184 1.251.409 1.677.678.415.261.823.655.823 1.2V13.5c0 .546-.408.94-.823 1.201-.44.278-1.043.51-1.745.696-1.41.376-3.33.603-5.432.603s-4.022-.227-5.432-.603c-.702-.187-1.305-.418-1.745-.696C.408 14.44 0 14.046 0 13.5v-7c0-.546.408-.94.823-1.201.426-.269 1.005-.494 1.677-.678v2.067c0 .116.08.216.192.243l.192.046q.486.116 1.033.208l.292.05a.25.25 0 0 0 .291-.247M1 8.82v1.659a1.935 1.935 0 0 0 2.298.43.935.935 0 0 1 1.08.175l.348.349a2 2 0 0 0 2.615.185l.059-.044a1 1 0 0 1 1.2 0l.06.044a2 2 0 0 0 2.613-.185l.348-.348a.94.94 0 0 1 1.082-.175c.781.39 1.718.208 2.297-.426V8.833l-.68.907a.94.94 0 0 1-1.17.276 1.94 1.94 0 0 0-2.236.363l-.348.348a1 1 0 0 1-1.307.092l-.06-.044a2 2 0 0 0-2.399 0l-.06.044a1 1 0 0 1-1.306-.092l-.35-.35a1.935 1.935 0 0 0-2.233-.362.935.935 0 0 1-1.168-.277z"/></symbol><symbol class="bi bi-calculator" viewBox="0 0 16 16" id="calculator"><path d="M12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M4 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-calculator-fill" viewBox="0 0 16 16" id="calculator-fill"><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm2 .5v2a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-7a.5.5 0 0 0-.5.5m0 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 9a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 12.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 6a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM7 9.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m.5 2.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM10 6.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m.5 2.5a.5.5 0 0 0-.5.5v4a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-calendar" viewBox="0 0 16 16" id="calendar"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-calendar-check" viewBox="0 0 16 16" id="calendar-check"><path d="M10.854 7.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708 0"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-calendar-check-fill" viewBox="0 0 16 16" id="calendar-check-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2m-5.146-5.146-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708"/></symbol><symbol class="bi bi-calendar-date" viewBox="0 0 16 16" id="calendar-date"><path d="M6.445 11.688V6.354h-.633A13 13 0 0 0 4.5 7.16v.695c.375-.257.969-.62 1.258-.777h.012v4.61zm1.188-1.305c.047.64.594 1.406 1.703 1.406 1.258 0 2-1.066 2-2.871 0-1.934-.781-2.668-1.953-2.668-.926 0-1.797.672-1.797 1.809 0 1.16.824 1.77 1.676 1.77.746 0 1.23-.376 1.383-.79h.027c-.004 1.316-.461 2.164-1.305 2.164-.664 0-1.008-.45-1.05-.82zm2.953-2.317c0 .696-.559 1.18-1.184 1.18-.601 0-1.144-.383-1.144-1.2 0-.823.582-1.21 1.168-1.21.633 0 1.16.398 1.16 1.23"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-calendar-date-fill" viewBox="0 0 16 16" id="calendar-date-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zm5.402 9.746c.625 0 1.184-.484 1.184-1.18 0-.832-.527-1.23-1.16-1.23-.586 0-1.168.387-1.168 1.21 0 .817.543 1.2 1.144 1.2"/><path d="M16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2m-6.664-1.21c-1.11 0-1.656-.767-1.703-1.407h.683c.043.37.387.82 1.051.82.844 0 1.301-.848 1.305-2.164h-.027c-.153.414-.637.79-1.383.79-.852 0-1.676-.61-1.676-1.77 0-1.137.871-1.809 1.797-1.809 1.172 0 1.953.734 1.953 2.668 0 1.805-.742 2.871-2 2.871zm-2.89-5.435v5.332H5.77V8.079h-.012c-.29.156-.883.52-1.258.777V8.16a13 13 0 0 1 1.313-.805h.632z"/></symbol><symbol class="bi bi-calendar-day" viewBox="0 0 16 16" id="calendar-day"><path d="M4.684 11.523v-2.3h2.261v-.61H4.684V6.801h2.464v-.61H4v5.332zm3.296 0h.676V8.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a2 2 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98zm2.805-5.093c0 .238.192.425.43.425a.428.428 0 1 0 0-.855.426.426 0 0 0-.43.43m.094 5.093h.672V7.418h-.672z"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-calendar-day-fill" viewBox="0 0 16 16" id="calendar-day-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5h16zm-4.785-6.145a.428.428 0 1 0 0-.855.426.426 0 0 0-.43.43c0 .238.192.425.43.425m.336.563h-.672v4.105h.672zm-6.867 4.105v-2.3h2.261v-.61H4.684V7.801h2.464v-.61H4v5.332zm3.296 0h.676V9.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a2 2 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98z"/></symbol><symbol class="bi bi-calendar-event" viewBox="0 0 16 16" id="calendar-event"><path d="M11 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-calendar-event-fill" viewBox="0 0 16 16" id="calendar-event-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2m-3.5-7h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-calendar-fill" viewBox="0 0 16 16" id="calendar-fill"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5h16V4H0V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-calendar-heart" viewBox="0 0 16 16" id="calendar-heart"><path fill-rule="evenodd" d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM1 14V4h14v10a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1m7-6.507c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-calendar-heart-fill" viewBox="0 0 16 16" id="calendar-heart-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M8 7.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-calendar-minus" viewBox="0 0 16 16" id="calendar-minus"><path d="M5.5 9.5A.5.5 0 0 1 6 9h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-calendar-minus-fill" viewBox="0 0 16 16" id="calendar-minus-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-calendar-month" viewBox="0 0 16 16" id="calendar-month"><path d="M2.56 11.332 3.1 9.73h1.984l.54 1.602h.718L4.444 6h-.696L1.85 11.332zm1.544-4.527L4.9 9.18H3.284l.8-2.375zm5.746.422h-.676V9.77c0 .652-.414 1.023-1.004 1.023-.539 0-.98-.246-.98-1.012V7.227h-.676v2.746c0 .941.606 1.425 1.453 1.425.656 0 1.043-.28 1.188-.605h.027v.539h.668zm2.258 5.046c-.563 0-.91-.304-.985-.636h-.687c.094.683.625 1.199 1.668 1.199.93 0 1.746-.527 1.746-1.578V7.227h-.649v.578h-.019c-.191-.348-.637-.64-1.195-.64-.965 0-1.64.679-1.64 1.886v.34c0 1.23.683 1.902 1.64 1.902.558 0 1.008-.293 1.172-.648h.02v.605c0 .645-.423 1.023-1.071 1.023m.008-4.53c.648 0 1.062.527 1.062 1.359v.253c0 .848-.39 1.364-1.062 1.364-.692 0-1.098-.512-1.098-1.364v-.253c0-.868.406-1.36 1.098-1.36z"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-calendar-month-fill" viewBox="0 0 16 16" id="calendar-month-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zm.104 7.305L4.9 10.18H3.284l.8-2.375zm9.074 2.297c0-.832-.414-1.36-1.062-1.36-.692 0-1.098.492-1.098 1.36v.253c0 .852.406 1.364 1.098 1.364.671 0 1.062-.516 1.062-1.364z"/><path d="M16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M2.56 12.332h-.71L3.748 7h.696l1.898 5.332h-.719l-.539-1.602H3.1zm7.29-4.105v4.105h-.668v-.539h-.027c-.145.324-.532.605-1.188.605-.847 0-1.453-.484-1.453-1.425V8.227h.676v2.554c0 .766.441 1.012.98 1.012.59 0 1.004-.371 1.004-1.023V8.227zm1.273 4.41c.075.332.422.636.985.636.648 0 1.07-.378 1.07-1.023v-.605h-.02c-.163.355-.613.648-1.171.648-.957 0-1.64-.672-1.64-1.902v-.34c0-1.207.675-1.887 1.64-1.887.558 0 1.004.293 1.195.64h.02v-.577h.648v4.03c0 1.052-.816 1.579-1.746 1.579-1.043 0-1.574-.516-1.668-1.2z"/></symbol><symbol class="bi bi-calendar-plus" viewBox="0 0 16 16" id="calendar-plus"><path d="M8 7a.5.5 0 0 1 .5.5V9H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V10H6a.5.5 0 0 1 0-1h1.5V7.5A.5.5 0 0 1 8 7"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-calendar-plus-fill" viewBox="0 0 16 16" id="calendar-plus-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M8.5 8.5V10H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V11H6a.5.5 0 0 1 0-1h1.5V8.5a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-calendar-range" viewBox="0 0 16 16" id="calendar-range"><path d="M9 7a1 1 0 0 1 1-1h5v2h-5a1 1 0 0 1-1-1M1 9h4a1 1 0 0 1 0 2H1z"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-calendar-range-fill" viewBox="0 0 16 16" id="calendar-range-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 7V5H0v5h5a1 1 0 1 1 0 2H0v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9h-6a1 1 0 1 1 0-2z"/></symbol><symbol class="bi bi-calendar-week" viewBox="0 0 16 16" id="calendar-week"><path d="M11 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-calendar-week-fill" viewBox="0 0 16 16" id="calendar-week-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M9.5 7h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5m3 0h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5M2 10.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-calendar-x" viewBox="0 0 16 16" id="calendar-x"><path d="M6.146 7.146a.5.5 0 0 1 .708 0L8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 0 1 0-.708"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-calendar-x-fill" viewBox="0 0 16 16" id="calendar-x-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M6.854 8.146 8 9.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 10l1.147 1.146a.5.5 0 0 1-.708.708L8 10.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 10 6.146 8.854a.5.5 0 1 1 .708-.708"/></symbol><symbol class="bi bi-calendar2" viewBox="0 0 16 16" id="calendar2"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/><path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-calendar2-check" viewBox="0 0 16 16" id="calendar2-check"><path d="M10.854 8.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708 0"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/><path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-calendar2-check-fill" viewBox="0 0 16 16" id="calendar2-check-fill"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5m-2.6 5.854a.5.5 0 0 0-.708-.708L7.5 10.793 6.354 9.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/></symbol><symbol class="bi bi-calendar2-date" viewBox="0 0 16 16" id="calendar2-date"><path d="M6.445 12.688V7.354h-.633A13 13 0 0 0 4.5 8.16v.695c.375-.257.969-.62 1.258-.777h.012v4.61zm1.188-1.305c.047.64.594 1.406 1.703 1.406 1.258 0 2-1.066 2-2.871 0-1.934-.781-2.668-1.953-2.668-.926 0-1.797.672-1.797 1.809 0 1.16.824 1.77 1.676 1.77.746 0 1.23-.376 1.383-.79h.027c-.004 1.316-.461 2.164-1.305 2.164-.664 0-1.008-.45-1.05-.82zm2.953-2.317c0 .696-.559 1.18-1.184 1.18-.601 0-1.144-.383-1.144-1.2 0-.823.582-1.21 1.168-1.21.633 0 1.16.398 1.16 1.23"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/><path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-calendar2-date-fill" viewBox="0 0 16 16" id="calendar2-date-fill"><path d="M9.402 10.246c.625 0 1.184-.484 1.184-1.18 0-.832-.527-1.23-1.16-1.23-.586 0-1.168.387-1.168 1.21 0 .817.543 1.2 1.144 1.2"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5m-4.118 9.79c1.258 0 2-1.067 2-2.872 0-1.934-.781-2.668-1.953-2.668-.926 0-1.797.672-1.797 1.809 0 1.16.824 1.77 1.676 1.77.746 0 1.23-.376 1.383-.79h.027c-.004 1.316-.461 2.164-1.305 2.164-.664 0-1.008-.45-1.05-.82h-.684c.047.64.594 1.406 1.703 1.406zm-2.89-5.435h-.633A13 13 0 0 0 4.5 8.16v.695c.375-.257.969-.62 1.258-.777h.012v4.61h.675V7.354z"/></symbol><symbol class="bi bi-calendar2-day" viewBox="0 0 16 16" id="calendar2-day"><path d="M4.684 12.523v-2.3h2.261v-.61H4.684V7.801h2.464v-.61H4v5.332zm3.296 0h.676V9.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a2 2 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98zm2.805-5.093c0 .238.192.425.43.425a.428.428 0 1 0 0-.855.426.426 0 0 0-.43.43m.094 5.093h.672V8.418h-.672z"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/><path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-calendar2-day-fill" viewBox="0 0 16 16" id="calendar2-day-fill"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5m-2.24 4.855a.428.428 0 1 0 0-.855.426.426 0 0 0-.429.43c0 .238.192.425.43.425zm.337.563h-.672v4.105h.672zm-6.867 4.105v-2.3h2.261v-.61H4.684V7.801h2.464v-.61H4v5.332zm3.296 0h.676V9.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a2 2 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98z"/></symbol><symbol class="bi bi-calendar2-event" viewBox="0 0 16 16" id="calendar2-event"><path d="M11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/><path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-calendar2-event-fill" viewBox="0 0 16 16" id="calendar2-event-fill"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5M11.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-calendar2-fill" viewBox="0 0 16 16" id="calendar2-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM2.545 3h10.91c.3 0 .545.224.545.5v1c0 .276-.244.5-.546.5H2.545C2.245 5 2 4.776 2 4.5v-1c0-.276.244-.5.545-.5"/></symbol><symbol class="bi bi-calendar2-heart" viewBox="0 0 16 16" id="calendar2-heart"><path fill-rule="evenodd" d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM1 3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm2 .5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V4a.5.5 0 0 0-.5-.5zm5 4.493c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-calendar2-heart-fill" viewBox="0 0 16 16" id="calendar2-heart-fill"><path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zm-2 4v-1c0-.276.244-.5.545-.5h10.91c.3 0 .545.224.545.5v1c0 .276-.244.5-.546.5H2.545C2.245 5 2 4.776 2 4.5m6 3.493c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-calendar2-minus" viewBox="0 0 16 16" id="calendar2-minus"><path d="M5.5 10.5A.5.5 0 0 1 6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/><path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-calendar2-minus-fill" viewBox="0 0 16 16" id="calendar2-minus-fill"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5M6 10a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-calendar2-month" viewBox="0 0 16 16" id="calendar2-month"><path d="m2.56 12.332.54-1.602h1.984l.54 1.602h.718L4.444 7h-.696L1.85 12.332zm1.544-4.527L4.9 10.18H3.284l.8-2.375zm5.746.422h-.676v2.543c0 .652-.414 1.023-1.004 1.023-.539 0-.98-.246-.98-1.012V8.227h-.676v2.746c0 .941.606 1.425 1.453 1.425.656 0 1.043-.28 1.188-.605h.027v.539h.668zm2.258 5.046c-.563 0-.91-.304-.985-.636h-.687c.094.683.625 1.199 1.668 1.199.93 0 1.746-.527 1.746-1.578V8.227h-.649v.578h-.019c-.191-.348-.637-.64-1.195-.64-.965 0-1.64.679-1.64 1.886v.34c0 1.23.683 1.902 1.64 1.902.558 0 1.008-.293 1.172-.648h.02v.605c0 .645-.423 1.023-1.071 1.023m.008-4.53c.648 0 1.062.527 1.062 1.359v.253c0 .848-.39 1.364-1.062 1.364-.692 0-1.098-.512-1.098-1.364v-.253c0-.868.406-1.36 1.098-1.36z"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/><path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-calendar2-month-fill" viewBox="0 0 16 16" id="calendar2-month-fill"><path d="M4.104 7.805 4.9 10.18H3.284l.8-2.375zm9.074 2.297c0-.832-.414-1.36-1.062-1.36-.692 0-1.098.492-1.098 1.36v.253c0 .852.406 1.364 1.098 1.364.671 0 1.062-.516 1.062-1.364z"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5M2.561 12.332 3.1 10.73h1.984l.54 1.602h.718L4.444 7h-.696L1.85 12.332zM9.85 8.227h-.676v2.543c0 .652-.414 1.023-1.004 1.023-.539 0-.98-.246-.98-1.012V8.227h-.676v2.746c0 .941.606 1.425 1.453 1.425.656 0 1.043-.28 1.188-.605h.027v.539h.668zm1.273 4.41h-.687c.094.683.625 1.199 1.668 1.199.93 0 1.746-.527 1.746-1.578V8.227h-.649v.578h-.019c-.191-.348-.637-.64-1.195-.64-.965 0-1.64.679-1.64 1.886v.34c0 1.23.683 1.902 1.64 1.902.558 0 1.008-.293 1.172-.648h.02v.605c0 .645-.423 1.023-1.071 1.023-.563 0-.91-.304-.985-.636"/></symbol><symbol class="bi bi-calendar2-plus" viewBox="0 0 16 16" id="calendar2-plus"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/><path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5zM8 8a.5.5 0 0 1 .5.5V10H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V11H6a.5.5 0 0 1 0-1h1.5V8.5A.5.5 0 0 1 8 8"/></symbol><symbol class="bi bi-calendar2-plus-fill" viewBox="0 0 16 16" id="calendar2-plus-fill"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 3.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5H2.545c-.3 0-.545.224-.545.5m6.5 5a.5.5 0 0 0-1 0V10H6a.5.5 0 0 0 0 1h1.5v1.5a.5.5 0 0 0 1 0V11H10a.5.5 0 0 0 0-1H8.5z"/></symbol><symbol class="bi bi-calendar2-range" viewBox="0 0 16 16" id="calendar2-range"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/><path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5zM9 8a1 1 0 0 1 1-1h5v2h-5a1 1 0 0 1-1-1m-8 2h4a1 1 0 1 1 0 2H1z"/></symbol><symbol class="bi bi-calendar2-range-fill" viewBox="0 0 16 16" id="calendar2-range-fill"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5M10 7a1 1 0 0 0 0 2h5V7zm-4 4a1 1 0 0 0-1-1H1v2h4a1 1 0 0 0 1-1"/></symbol><symbol class="bi bi-calendar2-week" viewBox="0 0 16 16" id="calendar2-week"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/><path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5zM11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-calendar2-week-fill" viewBox="0 0 16 16" id="calendar2-week-fill"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5M8.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM3 10.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-calendar2-x" viewBox="0 0 16 16" id="calendar2-x"><path d="M6.146 8.146a.5.5 0 0 1 .708 0L8 9.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 10l1.147 1.146a.5.5 0 0 1-.708.708L8 10.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 10 6.146 8.854a.5.5 0 0 1 0-.708"/><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/><path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-calendar2-x-fill" viewBox="0 0 16 16" id="calendar2-x-fill"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5m-6.6 5.146a.5.5 0 1 0-.708.708L7.293 10l-1.147 1.146a.5.5 0 0 0 .708.708L8 10.707l1.146 1.147a.5.5 0 0 0 .708-.708L8.707 10l1.147-1.146a.5.5 0 0 0-.708-.708L8 9.293z"/></symbol><symbol class="bi bi-calendar3" viewBox="0 0 16 16" id="calendar3"><path d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857z"/><path d="M6.5 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-calendar3-event" viewBox="0 0 16 16" id="calendar3-event"><path d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857z"/><path d="M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-calendar3-event-fill" viewBox="0 0 16 16" id="calendar3-event-fill"><path fill-rule="evenodd" d="M2 0a2 2 0 0 0-2 2h16a2 2 0 0 0-2-2zM0 14V3h16v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m12-8a1 1 0 1 0 2 0 1 1 0 0 0-2 0"/></symbol><symbol class="bi bi-calendar3-fill" viewBox="0 0 16 16" id="calendar3-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2zm0 1v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3z"/></symbol><symbol class="bi bi-calendar3-range" viewBox="0 0 16 16" id="calendar3-range"><path d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857z"/><path d="M7 10a1 1 0 0 0 0-2H1v2zm2-3h6V5H9a1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-calendar3-range-fill" viewBox="0 0 16 16" id="calendar3-range-fill"><path fill-rule="evenodd" d="M2 0a2 2 0 0 0-2 2h16a2 2 0 0 0-2-2zM0 8V3h16v2h-6a1 1 0 1 0 0 2h6v7a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-4h6a1 1 0 1 0 0-2z"/></symbol><symbol class="bi bi-calendar3-week" viewBox="0 0 16 16" id="calendar3-week"><path d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857z"/><path d="M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2m-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m2-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-calendar3-week-fill" viewBox="0 0 16 16" id="calendar3-week-fill"><path fill-rule="evenodd" d="M2 0a2 2 0 0 0-2 2h16a2 2 0 0 0-2-2zM0 14V3h16v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m12-8a1 1 0 1 0 2 0 1 1 0 0 0-2 0M5 9a1 1 0 1 0 2 0 1 1 0 0 0-2 0m5-2a1 1 0 1 1 0-2 1 1 0 0 1 0 2M2 9a1 1 0 1 0 2 0 1 1 0 0 0-2 0"/></symbol><symbol class="bi bi-calendar4" viewBox="0 0 16 16" id="calendar4"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-calendar4-event" viewBox="0 0 16 16" id="calendar4-event"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/><path d="M11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-calendar4-range" viewBox="0 0 16 16" id="calendar4-range"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/><path d="M9 7.5a.5.5 0 0 1 .5-.5H15v2H9.5a.5.5 0 0 1-.5-.5zm-2 3v1a.5.5 0 0 1-.5.5H1v-2h5.5a.5.5 0 0 1 .5.5"/></symbol><symbol class="bi bi-calendar4-week" viewBox="0 0 16 16" id="calendar4-week"><path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/><path d="M11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-2 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-camera" viewBox="0 0 16 16" id="camera"><path d="M15 12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h1.172a3 3 0 0 0 2.12-.879l.83-.828A1 1 0 0 1 6.827 3h2.344a1 1 0 0 1 .707.293l.828.828A3 3 0 0 0 12.828 5H14a1 1 0 0 1 1 1zM2 4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-1.172a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 9.172 2H6.828a2 2 0 0 0-1.414.586l-.828.828A2 2 0 0 1 3.172 4z"/><path d="M8 11a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5m0 1a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M3 6.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-camera-fill" viewBox="0 0 16 16" id="camera-fill"><path d="M10.5 8.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0"/><path d="M2 4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-1.172a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 9.172 2H6.828a2 2 0 0 0-1.414.586l-.828.828A2 2 0 0 1 3.172 4zm.5 2a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m9 2.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0"/></symbol><symbol class="bi bi-camera-reels" viewBox="0 0 16 16" id="camera-reels"><path d="M6 3a3 3 0 1 1-6 0 3 3 0 0 1 6 0M1 3a2 2 0 1 0 4 0 2 2 0 0 0-4 0"/><path d="M9 6h.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 7.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 16H2a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2zm6 8.73V7.27l-3.5 1.555v4.35zM1 8v6a1 1 0 0 0 1 1h7.5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1"/><path d="M9 6a3 3 0 1 0 0-6 3 3 0 0 0 0 6M7 3a2 2 0 1 1 4 0 2 2 0 0 1-4 0"/></symbol><symbol class="bi bi-camera-reels-fill" viewBox="0 0 16 16" id="camera-reels-fill"><path d="M6 3a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/><path d="M9 6a3 3 0 1 1 0-6 3 3 0 0 1 0 6"/><path d="M9 6h.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 7.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 16H2a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z"/></symbol><symbol class="bi bi-camera-video" viewBox="0 0 16 16" id="camera-video"><path fill-rule="evenodd" d="M0 5a2 2 0 0 1 2-2h7.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 4.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 13H2a2 2 0 0 1-2-2zm11.5 5.175 3.5 1.556V4.269l-3.5 1.556zM2 4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h7.5a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-camera-video-fill" viewBox="0 0 16 16" id="camera-video-fill"><path fill-rule="evenodd" d="M0 5a2 2 0 0 1 2-2h7.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 4.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 13H2a2 2 0 0 1-2-2z"/></symbol><symbol class="bi bi-camera-video-off" viewBox="0 0 16 16" id="camera-video-off"><path fill-rule="evenodd" d="M10.961 12.365a2 2 0 0 0 .522-1.103l3.11 1.382A1 1 0 0 0 16 11.731V4.269a1 1 0 0 0-1.406-.913l-3.111 1.382A2 2 0 0 0 9.5 3H4.272l.714 1H9.5a1 1 0 0 1 1 1v6a1 1 0 0 1-.144.518zM1.428 4.18A1 1 0 0 0 1 5v6a1 1 0 0 0 1 1h5.014l.714 1H2a2 2 0 0 1-2-2V5c0-.675.334-1.272.847-1.634zM15 11.73l-3.5-1.555v-4.35L15 4.269zm-4.407 3.56-10-14 .814-.58 10 14z"/></symbol><symbol class="bi bi-camera-video-off-fill" viewBox="0 0 16 16" id="camera-video-off-fill"><path fill-rule="evenodd" d="M10.961 12.365a2 2 0 0 0 .522-1.103l3.11 1.382A1 1 0 0 0 16 11.731V4.269a1 1 0 0 0-1.406-.913l-3.111 1.382A2 2 0 0 0 9.5 3H4.272zm-10.114-9A2 2 0 0 0 0 5v6a2 2 0 0 0 2 2h5.728zm9.746 11.925-10-14 .814-.58 10 14z"/></symbol><symbol class="bi bi-camera2" viewBox="0 0 16 16" id="camera2"><path d="M5 8c0-1.657 2.343-3 4-3V4a4 4 0 0 0-4 4"/><path d="M12.318 3h2.015C15.253 3 16 3.746 16 4.667v6.666c0 .92-.746 1.667-1.667 1.667h-2.015A5.97 5.97 0 0 1 9 14a5.97 5.97 0 0 1-3.318-1H1.667C.747 13 0 12.254 0 11.333V4.667C0 3.747.746 3 1.667 3H2a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1h.682A5.97 5.97 0 0 1 9 2c1.227 0 2.367.368 3.318 1M2 4.5a.5.5 0 1 0-1 0 .5.5 0 0 0 1 0M14 8A5 5 0 1 0 4 8a5 5 0 0 0 10 0"/></symbol><symbol class="bi bi-capslock" viewBox="0 0 16 16" id="capslock"><path fill-rule="evenodd" d="M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-1H1.654C.78 9.5.326 8.455.924 7.816zM14.346 8.5 8 1.731 1.654 8.5H4.5a1 1 0 0 1 1 1v1h5v-1a1 1 0 0 1 1-1zm-9.846 5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1zm6 0h-5v1h5z"/></symbol><symbol class="bi bi-capslock-fill" viewBox="0 0 16 16" id="capslock-fill"><path d="M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-1H1.654C.78 9.5.326 8.455.924 7.816zM4.5 13.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-capsule" viewBox="0 0 16 16" id="capsule"><path d="M1.828 8.9 8.9 1.827a4 4 0 1 1 5.657 5.657l-7.07 7.071A4 4 0 1 1 1.827 8.9Zm9.128.771 2.893-2.893a3 3 0 1 0-4.243-4.242L6.713 5.429z"/></symbol><symbol class="bi bi-capsule-pill" viewBox="0 0 16 16" id="capsule-pill"><path d="M11.02 5.364a3 3 0 0 0-4.242-4.243L1.121 6.778a3 3 0 1 0 4.243 4.243l5.657-5.657Zm-6.413-.657 2.878-2.879a2 2 0 1 1 2.829 2.829L7.435 7.536zM12 8a4 4 0 1 1 0 8 4 4 0 0 1 0-8m-.5 1.042a3 3 0 0 0 0 5.917zm1 5.917a3 3 0 0 0 0-5.917z"/></symbol><symbol class="bi bi-car-front" viewBox="0 0 16 16" id="car-front"><path d="M4 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0m10 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M6 8a1 1 0 0 0 0 2h4a1 1 0 1 0 0-2zM4.862 4.276 3.906 6.19a.51.51 0 0 0 .497.731c.91-.073 2.35-.17 3.597-.17s2.688.097 3.597.17a.51.51 0 0 0 .497-.731l-.956-1.913A.5.5 0 0 0 10.691 4H5.309a.5.5 0 0 0-.447.276"/><path d="M2.52 3.515A2.5 2.5 0 0 1 4.82 2h6.362c1 0 1.904.596 2.298 1.515l.792 1.848c.075.175.21.319.38.404.5.25.855.715.965 1.262l.335 1.679q.05.242.049.49v.413c0 .814-.39 1.543-1 1.997V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.338c-1.292.048-2.745.088-4 .088s-2.708-.04-4-.088V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.892c-.61-.454-1-1.183-1-1.997v-.413a2.5 2.5 0 0 1 .049-.49l.335-1.68c.11-.546.465-1.012.964-1.261a.8.8 0 0 0 .381-.404l.792-1.848ZM4.82 3a1.5 1.5 0 0 0-1.379.91l-.792 1.847a1.8 1.8 0 0 1-.853.904.8.8 0 0 0-.43.564L1.03 8.904a1.5 1.5 0 0 0-.03.294v.413c0 .796.62 1.448 1.408 1.484 1.555.07 3.786.155 5.592.155s4.037-.084 5.592-.155A1.48 1.48 0 0 0 15 9.611v-.413q0-.148-.03-.294l-.335-1.68a.8.8 0 0 0-.43-.563 1.8 1.8 0 0 1-.853-.904l-.792-1.848A1.5 1.5 0 0 0 11.18 3z"/></symbol><symbol class="bi bi-car-front-fill" viewBox="0 0 16 16" id="car-front-fill"><path d="M2.52 3.515A2.5 2.5 0 0 1 4.82 2h6.362c1 0 1.904.596 2.298 1.515l.792 1.848c.075.175.21.319.38.404.5.25.855.715.965 1.262l.335 1.679q.05.242.049.49v.413c0 .814-.39 1.543-1 1.997V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.338c-1.292.048-2.745.088-4 .088s-2.708-.04-4-.088V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.892c-.61-.454-1-1.183-1-1.997v-.413a2.5 2.5 0 0 1 .049-.49l.335-1.68c.11-.546.465-1.012.964-1.261a.8.8 0 0 0 .381-.404l.792-1.848ZM3 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2m10 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2M6 8a1 1 0 0 0 0 2h4a1 1 0 1 0 0-2zM2.906 5.189a.51.51 0 0 0 .497.731c.91-.073 3.35-.17 4.597-.17s3.688.097 4.597.17a.51.51 0 0 0 .497-.731l-.956-1.913A.5.5 0 0 0 11.691 3H4.309a.5.5 0 0 0-.447.276L2.906 5.19Z"/></symbol><symbol class="bi bi-card-checklist" viewBox="0 0 16 16" id="card-checklist"><path d="M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2z"/><path d="M7 5.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m-1.496-.854a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0M7 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m-1.496-.854a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 0 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-card-heading" viewBox="0 0 16 16" id="card-heading"><path d="M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2z"/><path d="M3 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0-5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-card-image" viewBox="0 0 16 16" id="card-image"><path d="M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/><path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zm13 1a.5.5 0 0 1 .5.5v6l-3.775-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12v.54L1 12.5v-9a.5.5 0 0 1 .5-.5z"/></symbol><symbol class="bi bi-card-list" viewBox="0 0 16 16" id="card-list"><path d="M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2z"/><path d="M5 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 5 8m0-2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0 5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-1-5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M4 8a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-card-text" viewBox="0 0 16 16" id="card-text"><path d="M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2z"/><path d="M3 5.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3 8a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 8m0 2.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-caret-down" viewBox="0 0 16 16" id="caret-down"><path d="M3.204 5h9.592L8 10.481zm-.753.659 4.796 5.48a1 1 0 0 0 1.506 0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 0 0-.753 1.659"/></symbol><symbol class="bi bi-caret-down-fill" viewBox="0 0 16 16" id="caret-down-fill"><path d="M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z"/></symbol><symbol class="bi bi-caret-down-square" viewBox="0 0 16 16" id="caret-down-square"><path d="M3.626 6.832A.5.5 0 0 1 4 6h8a.5.5 0 0 1 .374.832l-4 4.5a.5.5 0 0 1-.748 0z"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-caret-down-square-fill" viewBox="0 0 16 16" id="caret-down-square-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm4 4a.5.5 0 0 0-.374.832l4 4.5a.5.5 0 0 0 .748 0l4-4.5A.5.5 0 0 0 12 6z"/></symbol><symbol class="bi bi-caret-left" viewBox="0 0 16 16" id="caret-left"><path d="M10 12.796V3.204L4.519 8zm-.659.753-5.48-4.796a1 1 0 0 1 0-1.506l5.48-4.796A1 1 0 0 1 11 3.204v9.592a1 1 0 0 1-1.659.753"/></symbol><symbol class="bi bi-caret-left-fill" viewBox="0 0 16 16" id="caret-left-fill"><path d="m3.86 8.753 5.482 4.796c.646.566 1.658.106 1.658-.753V3.204a1 1 0 0 0-1.659-.753l-5.48 4.796a1 1 0 0 0 0 1.506z"/></symbol><symbol class="bi bi-caret-left-square" viewBox="0 0 16 16" id="caret-left-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M10.205 12.456A.5.5 0 0 0 10.5 12V4a.5.5 0 0 0-.832-.374l-4.5 4a.5.5 0 0 0 0 .748l4.5 4a.5.5 0 0 0 .537.082"/></symbol><symbol class="bi bi-caret-left-square-fill" viewBox="0 0 16 16" id="caret-left-square-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm10.5 10V4a.5.5 0 0 0-.832-.374l-4.5 4a.5.5 0 0 0 0 .748l4.5 4A.5.5 0 0 0 10.5 12"/></symbol><symbol class="bi bi-caret-right" viewBox="0 0 16 16" id="caret-right"><path d="M6 12.796V3.204L11.481 8zm.659.753 5.48-4.796a1 1 0 0 0 0-1.506L6.66 2.451C6.011 1.885 5 2.345 5 3.204v9.592a1 1 0 0 0 1.659.753"/></symbol><symbol class="bi bi-caret-right-fill" viewBox="0 0 16 16" id="caret-right-fill"><path d="m12.14 8.753-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z"/></symbol><symbol class="bi bi-caret-right-square" viewBox="0 0 16 16" id="caret-right-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M5.795 12.456A.5.5 0 0 1 5.5 12V4a.5.5 0 0 1 .832-.374l4.5 4a.5.5 0 0 1 0 .748l-4.5 4a.5.5 0 0 1-.537.082"/></symbol><symbol class="bi bi-caret-right-square-fill" viewBox="0 0 16 16" id="caret-right-square-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.5 10a.5.5 0 0 0 .832.374l4.5-4a.5.5 0 0 0 0-.748l-4.5-4A.5.5 0 0 0 5.5 4z"/></symbol><symbol class="bi bi-caret-up" viewBox="0 0 16 16" id="caret-up"><path d="M3.204 11h9.592L8 5.519zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659"/></symbol><symbol class="bi bi-caret-up-fill" viewBox="0 0 16 16" id="caret-up-fill"><path d="m7.247 4.86-4.796 5.481c-.566.647-.106 1.659.753 1.659h9.592a1 1 0 0 0 .753-1.659l-4.796-5.48a1 1 0 0 0-1.506 0z"/></symbol><symbol class="bi bi-caret-up-square" viewBox="0 0 16 16" id="caret-up-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M3.544 10.705A.5.5 0 0 0 4 11h8a.5.5 0 0 0 .374-.832l-4-4.5a.5.5 0 0 0-.748 0l-4 4.5a.5.5 0 0 0-.082.537"/></symbol><symbol class="bi bi-caret-up-square-fill" viewBox="0 0 16 16" id="caret-up-square-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm4 9h8a.5.5 0 0 0 .374-.832l-4-4.5a.5.5 0 0 0-.748 0l-4 4.5A.5.5 0 0 0 4 11"/></symbol><symbol class="bi bi-cart" viewBox="0 0 16 16" id="cart"><path d="M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 13 12H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5M3.102 4l1.313 7h8.17l1.313-7zM5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4m7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4m-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2m7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></symbol><symbol class="bi bi-cart-check" viewBox="0 0 16 16" id="cart-check"><path d="M11.354 6.354a.5.5 0 0 0-.708-.708L8 8.293 6.854 7.146a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/><path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zm3.915 10L3.102 4h10.796l-1.313 7zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-cart-check-fill" viewBox="0 0 16 16" id="cart-check-fill"><path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-1.646-7.646-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L8 8.293l2.646-2.647a.5.5 0 0 1 .708.708"/></symbol><symbol class="bi bi-cart-dash" viewBox="0 0 16 16" id="cart-dash"><path d="M6.5 7a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/><path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zm3.915 10L3.102 4h10.796l-1.313 7zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-cart-dash-fill" viewBox="0 0 16 16" id="cart-dash-fill"><path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M6.5 7h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-cart-fill" viewBox="0 0 16 16" id="cart-fill"><path d="M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 13 12H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5M5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4m7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4m-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2m7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></symbol><symbol class="bi bi-cart-plus" viewBox="0 0 16 16" id="cart-plus"><path d="M9 5.5a.5.5 0 0 0-1 0V7H6.5a.5.5 0 0 0 0 1H8v1.5a.5.5 0 0 0 1 0V8h1.5a.5.5 0 0 0 0-1H9z"/><path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zm3.915 10L3.102 4h10.796l-1.313 7zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-cart-plus-fill" viewBox="0 0 16 16" id="cart-plus-fill"><path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M9 5.5V7h1.5a.5.5 0 0 1 0 1H9v1.5a.5.5 0 0 1-1 0V8H6.5a.5.5 0 0 1 0-1H8V5.5a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-cart-x" viewBox="0 0 16 16" id="cart-x"><path d="M7.354 5.646a.5.5 0 1 0-.708.708L7.793 7.5 6.646 8.646a.5.5 0 1 0 .708.708L8.5 8.207l1.146 1.147a.5.5 0 0 0 .708-.708L9.207 7.5l1.147-1.146a.5.5 0 0 0-.708-.708L8.5 6.793z"/><path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zm3.915 10L3.102 4h10.796l-1.313 7zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-cart-x-fill" viewBox="0 0 16 16" id="cart-x-fill"><path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7.354 5.646 8.5 6.793l1.146-1.147a.5.5 0 0 1 .708.708L9.207 7.5l1.147 1.146a.5.5 0 0 1-.708.708L8.5 8.207 7.354 9.354a.5.5 0 1 1-.708-.708L7.793 7.5 6.646 6.354a.5.5 0 1 1 .708-.708"/></symbol><symbol class="bi bi-cart2" viewBox="0 0 16 16" id="cart2"><path d="M0 2.5A.5.5 0 0 1 .5 2H2a.5.5 0 0 1 .485.379L2.89 4H14.5a.5.5 0 0 1 .485.621l-1.5 6A.5.5 0 0 1 13 11H4a.5.5 0 0 1-.485-.379L1.61 3H.5a.5.5 0 0 1-.5-.5M3.14 5l1.25 5h8.22l1.25-5zM5 13a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0m9-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0"/></symbol><symbol class="bi bi-cart3" viewBox="0 0 16 16" id="cart3"><path d="M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .49.598l-1 5a.5.5 0 0 1-.465.401l-9.397.472L4.415 11H13a.5.5 0 0 1 0 1H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5M3.102 4l.84 4.479 9.144-.459L13.89 4zM5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4m7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4m-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2m7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></symbol><symbol class="bi bi-cart4" viewBox="0 0 16 16" id="cart4"><path d="M0 2.5A.5.5 0 0 1 .5 2H2a.5.5 0 0 1 .485.379L2.89 4H14.5a.5.5 0 0 1 .485.621l-1.5 6A.5.5 0 0 1 13 11H4a.5.5 0 0 1-.485-.379L1.61 3H.5a.5.5 0 0 1-.5-.5M3.14 5l.5 2H5V5zM6 5v2h2V5zm3 0v2h2V5zm3 0v2h1.36l.5-2zm1.11 3H12v2h.61zM11 8H9v2h2zM8 8H6v2h2zM5 8H3.89l.5 2H5zm0 5a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0m9-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0"/></symbol><symbol class="bi bi-cash" viewBox="0 0 16 16" id="cash"><path d="M8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/><path d="M0 4a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm3 0a2 2 0 0 1-2 2v4a2 2 0 0 1 2 2h10a2 2 0 0 1 2-2V6a2 2 0 0 1-2-2z"/></symbol><symbol class="bi bi-cash-coin" viewBox="0 0 16 16" id="cash-coin"><path fill-rule="evenodd" d="M11 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8m5-4a5 5 0 1 1-10 0 5 5 0 0 1 10 0"/><path d="M9.438 11.944c.047.596.518 1.06 1.363 1.116v.44h.375v-.443c.875-.061 1.386-.529 1.386-1.207 0-.618-.39-.936-1.09-1.1l-.296-.07v-1.2c.376.043.614.248.671.532h.658c-.047-.575-.54-1.024-1.329-1.073V8.5h-.375v.45c-.747.073-1.255.522-1.255 1.158 0 .562.378.92 1.007 1.066l.248.061v1.272c-.384-.058-.639-.27-.696-.563h-.668zm1.36-1.354c-.369-.085-.569-.26-.569-.522 0-.294.216-.514.572-.578v1.1zm.432.746c.449.104.655.272.655.569 0 .339-.257.571-.709.614v-1.195z"/><path d="M1 0a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4.083q.088-.517.258-1H3a2 2 0 0 0-2-2V3a2 2 0 0 0 2-2h10a2 2 0 0 0 2 2v3.528c.38.34.717.728 1 1.154V1a1 1 0 0 0-1-1z"/><path d="M9.998 5.083 10 5a2 2 0 1 0-3.132 1.65 6 6 0 0 1 3.13-1.567"/></symbol><symbol class="bi bi-cash-stack" viewBox="0 0 16 16" id="cash-stack"><path d="M1 3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1zm7 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/><path d="M0 5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm3 0a2 2 0 0 1-2 2v4a2 2 0 0 1 2 2h10a2 2 0 0 1 2-2V7a2 2 0 0 1-2-2z"/></symbol><symbol class="bi bi-cassette" viewBox="0 0 16 16" id="cassette"><path d="M4 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2m9-1a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7 6a1 1 0 0 0 0 2h2a1 1 0 1 0 0-2z"/><path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zM1 3.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-.691l-1.362-2.724A.5.5 0 0 0 12 10H4a.5.5 0 0 0-.447.276L2.19 13H1.5a.5.5 0 0 1-.5-.5zM11.691 11l1 2H3.309l1-2z"/></symbol><symbol class="bi bi-cassette-fill" viewBox="0 0 16 16" id="cassette-fill"><path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h.191l1.862-3.724A.5.5 0 0 1 4 10h8a.5.5 0 0 1 .447.276L14.31 14h.191a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zM4 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2m8 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2M6 6a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2H7a1 1 0 0 1-1-1"/><path d="m13.191 14-1.5-3H4.309l-1.5 3z"/></symbol><symbol class="bi bi-cast" viewBox="0 0 16 16" id="cast"><path d="m7.646 9.354-3.792 3.792a.5.5 0 0 0 .353.854h7.586a.5.5 0 0 0 .354-.854L8.354 9.354a.5.5 0 0 0-.708 0"/><path d="M11.414 11H14.5a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.5-.5h-13a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5h3.086l-1 1H1.5A1.5 1.5 0 0 1 0 10.5v-7A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v7a1.5 1.5 0 0 1-1.5 1.5h-2.086z"/></symbol><symbol class="bi bi-cc-circle" viewBox="0 0 16 16" id="cc-circle"><path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.408 5.89c-.83 0-1.318.64-1.318 1.753v.742c0 1.108.479 1.727 1.318 1.727.69 0 1.138-.435 1.187-1.05h1.147v.114c-.058 1.147-1.029 1.938-2.343 1.938-1.612 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.319 0 2.29.812 2.343 1.999v.11H6.595c-.049-.638-.506-1.108-1.187-1.108Zm5.404 0c-.831 0-1.319.64-1.319 1.753v.742c0 1.108.48 1.727 1.319 1.727.69 0 1.138-.435 1.186-1.05h1.147v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.318 0 2.29.812 2.342 1.999v.11h-1.147c-.048-.638-.505-1.108-1.186-1.108Z"/></symbol><symbol class="bi bi-cc-circle-fill" viewBox="0 0 16 16" id="cc-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.408 5.89c.681 0 1.138.47 1.187 1.107h1.147v-.11c-.053-1.187-1.024-2-2.343-2-1.604 0-2.518 1.05-2.518 2.751v.747c0 1.7.906 2.73 2.518 2.73 1.314 0 2.285-.792 2.343-1.939v-.114H6.595c-.049.615-.497 1.05-1.187 1.05-.84 0-1.318-.62-1.318-1.727v-.742c0-1.112.488-1.754 1.318-1.754Zm5.404 0c.68 0 1.138.47 1.186 1.107h1.147v-.11c-.053-1.187-1.024-2-2.342-2-1.604 0-2.518 1.05-2.518 2.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114h-1.147c-.048.615-.496 1.05-1.186 1.05-.84 0-1.319-.62-1.319-1.727v-.742c0-1.112.488-1.754 1.319-1.754Z"/></symbol><symbol class="bi bi-cc-square" viewBox="0 0 16 16" id="cc-square"><path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.408 3.89c-.83 0-1.318.64-1.318 1.753v.742c0 1.108.479 1.727 1.318 1.727.69 0 1.138-.435 1.187-1.05h1.147v.114c-.058 1.147-1.029 1.938-2.343 1.938-1.612 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.319 0 2.29.812 2.343 1.999v.11H6.595c-.049-.638-.506-1.108-1.187-1.108Zm5.404 0c-.831 0-1.319.64-1.319 1.753v.742c0 1.108.48 1.727 1.319 1.727.69 0 1.138-.435 1.186-1.05h1.147v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.318 0 2.29.812 2.342 1.999v.11h-1.147c-.048-.638-.505-1.108-1.186-1.108Z"/><path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.408 3.89c-.83 0-1.318.64-1.318 1.753v.742c0 1.108.479 1.727 1.318 1.727.69 0 1.138-.435 1.187-1.05h1.147v.114c-.058 1.147-1.029 1.938-2.343 1.938-1.612 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.319 0 2.29.812 2.343 1.999v.11H6.595c-.049-.638-.506-1.108-1.187-1.108Zm5.404 0c-.831 0-1.319.64-1.319 1.753v.742c0 1.108.48 1.727 1.319 1.727.69 0 1.138-.435 1.186-1.05h1.147v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.318 0 2.29.812 2.342 1.999v.11h-1.147c-.048-.638-.505-1.108-1.186-1.108Z"/></symbol><symbol class="bi bi-cc-square-fill" viewBox="0 0 16 16" id="cc-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.408 5.89c-.83 0-1.318.64-1.318 1.753v.742c0 1.108.479 1.727 1.318 1.727.69 0 1.138-.435 1.187-1.05h1.147v.114c-.058 1.147-1.029 1.938-2.343 1.938-1.612 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.319 0 2.29.812 2.343 1.999v.11H6.595c-.049-.638-.506-1.108-1.187-1.108Zm5.404 0c-.831 0-1.319.64-1.319 1.753v.742c0 1.108.48 1.727 1.319 1.727.69 0 1.138-.435 1.186-1.05h1.147v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.318 0 2.29.812 2.342 1.999v.11h-1.147c-.048-.638-.505-1.108-1.186-1.108Z"/></symbol><symbol class="bi bi-chat" viewBox="0 0 16 16" id="chat"><path d="M2.678 11.894a1 1 0 0 1 .287.801 11 11 0 0 1-.398 2c1.395-.323 2.247-.697 2.634-.893a1 1 0 0 1 .71-.074A8 8 0 0 0 8 14c3.996 0 7-2.807 7-6s-3.004-6-7-6-7 2.808-7 6c0 1.468.617 2.83 1.678 3.894m-.493 3.905a22 22 0 0 1-.713.129c-.2.032-.352-.176-.273-.362a10 10 0 0 0 .244-.637l.003-.01c.248-.72.45-1.548.524-2.319C.743 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.52.263-1.639.742-3.468 1.105"/></symbol><symbol class="bi bi-chat-dots" viewBox="0 0 16 16" id="chat-dots"><path d="M5 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/><path d="m2.165 15.803.02-.004c1.83-.363 2.948-.842 3.468-1.105A9 9 0 0 0 8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6a10.4 10.4 0 0 1-.524 2.318l-.003.011a11 11 0 0 1-.244.637c-.079.186.074.394.273.362a22 22 0 0 0 .693-.125m.8-3.108a1 1 0 0 0-.287-.801C1.618 10.83 1 9.468 1 8c0-3.192 3.004-6 7-6s7 2.808 7 6-3.004 6-7 6a8 8 0 0 1-2.088-.272 1 1 0 0 0-.711.074c-.387.196-1.24.57-2.634.893a11 11 0 0 0 .398-2"/></symbol><symbol class="bi bi-chat-dots-fill" viewBox="0 0 16 16" id="chat-dots-fill"><path d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M5 8a1 1 0 1 0-2 0 1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-chat-fill" viewBox="0 0 16 16" id="chat-fill"><path d="M8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6-.097 1.016-.417 2.13-.771 2.966-.079.186.074.394.273.362 2.256-.37 3.597-.938 4.18-1.234A9 9 0 0 0 8 15"/></symbol><symbol class="bi bi-chat-heart" viewBox="0 0 16 16" id="chat-heart"><path fill-rule="evenodd" d="M2.965 12.695a1 1 0 0 0-.287-.801C1.618 10.83 1 9.468 1 8c0-3.192 3.004-6 7-6s7 2.808 7 6-3.004 6-7 6a8 8 0 0 1-2.088-.272 1 1 0 0 0-.711.074c-.387.196-1.24.57-2.634.893a11 11 0 0 0 .398-2m-.8 3.108.02-.004c1.83-.363 2.948-.842 3.468-1.105A9 9 0 0 0 8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6a10.4 10.4 0 0 1-.524 2.318l-.003.011a11 11 0 0 1-.244.637c-.079.186.074.394.273.362a22 22 0 0 0 .693-.125M8 5.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-chat-heart-fill" viewBox="0 0 16 16" id="chat-heart-fill"><path d="M8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6-.097 1.016-.417 2.13-.771 2.966-.079.186.074.394.273.362 2.256-.37 3.597-.938 4.18-1.234A9 9 0 0 0 8 15m0-9.007c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-chat-left" viewBox="0 0 16 16" id="chat-left"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-chat-left-dots" viewBox="0 0 16 16" id="chat-left-dots"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-chat-left-dots-fill" viewBox="0 0 16 16" id="chat-left-dots-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4.414a1 1 0 0 0-.707.293L.854 15.146A.5.5 0 0 1 0 14.793zm5 4a1 1 0 1 0-2 0 1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-chat-left-fill" viewBox="0 0 16 16" id="chat-left-fill"><path d="M2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-chat-left-heart" viewBox="0 0 16 16" id="chat-left-heart"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M8 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-chat-left-heart-fill" viewBox="0 0 16 16" id="chat-left-heart-fill"><path d="M2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-chat-left-quote" viewBox="0 0 16 16" id="chat-left-quote"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M7.066 4.76A1.665 1.665 0 0 0 4 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z"/></symbol><symbol class="bi bi-chat-left-quote-fill" viewBox="0 0 16 16" id="chat-left-quote-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4.414a1 1 0 0 0-.707.293L.854 15.146A.5.5 0 0 1 0 14.793zm7.194 2.766a1.7 1.7 0 0 0-.227-.272 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 5.734 4C4.776 4 4 4.746 4 5.667c0 .92.776 1.666 1.734 1.666.343 0 .662-.095.931-.26-.137.389-.39.804-.81 1.22a.405.405 0 0 0 .011.59c.173.16.447.155.614-.01 1.334-1.329 1.37-2.758.941-3.706a2.5 2.5 0 0 0-.227-.4zM11 7.073c-.136.389-.39.804-.81 1.22a.405.405 0 0 0 .012.59c.172.16.446.155.613-.01 1.334-1.329 1.37-2.758.942-3.706a2.5 2.5 0 0 0-.228-.4 1.7 1.7 0 0 0-.227-.273 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 10.07 4c-.957 0-1.734.746-1.734 1.667 0 .92.777 1.666 1.734 1.666.343 0 .662-.095.931-.26z"/></symbol><symbol class="bi bi-chat-left-text" viewBox="0 0 16 16" id="chat-left-text"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M3 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3 6a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 6m0 2.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-chat-left-text-fill" viewBox="0 0 16 16" id="chat-left-text-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4.414a1 1 0 0 0-.707.293L.854 15.146A.5.5 0 0 1 0 14.793zm3.5 1a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-chat-quote" viewBox="0 0 16 16" id="chat-quote"><path d="M2.678 11.894a1 1 0 0 1 .287.801 11 11 0 0 1-.398 2c1.395-.323 2.247-.697 2.634-.893a1 1 0 0 1 .71-.074A8 8 0 0 0 8 14c3.996 0 7-2.807 7-6s-3.004-6-7-6-7 2.808-7 6c0 1.468.617 2.83 1.678 3.894m-.493 3.905a22 22 0 0 1-.713.129c-.2.032-.352-.176-.273-.362a10 10 0 0 0 .244-.637l.003-.01c.248-.72.45-1.548.524-2.319C.743 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.52.263-1.639.742-3.468 1.105"/><path d="M7.066 6.76A1.665 1.665 0 0 0 4 7.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 0 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 7.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 0 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z"/></symbol><symbol class="bi bi-chat-quote-fill" viewBox="0 0 16 16" id="chat-quote-fill"><path d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M7.194 6.766a1.7 1.7 0 0 0-.227-.272 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 5.734 6C4.776 6 4 6.746 4 7.667c0 .92.776 1.666 1.734 1.666.343 0 .662-.095.931-.26-.137.389-.39.804-.81 1.22a.405.405 0 0 0 .011.59c.173.16.447.155.614-.01 1.334-1.329 1.37-2.758.941-3.706a2.5 2.5 0 0 0-.227-.4zM11 9.073c-.136.389-.39.804-.81 1.22a.405.405 0 0 0 .012.59c.172.16.446.155.613-.01 1.334-1.329 1.37-2.758.942-3.706a2.5 2.5 0 0 0-.228-.4 1.7 1.7 0 0 0-.227-.273 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 10.07 6c-.957 0-1.734.746-1.734 1.667 0 .92.777 1.666 1.734 1.666.343 0 .662-.095.931-.26z"/></symbol><symbol class="bi bi-chat-right" viewBox="0 0 16 16" id="chat-right"><path d="M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/></symbol><symbol class="bi bi-chat-right-dots" viewBox="0 0 16 16" id="chat-right-dots"><path d="M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/><path d="M5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-chat-right-dots-fill" viewBox="0 0 16 16" id="chat-right-dots-fill"><path d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353zM5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 1a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/></symbol><symbol class="bi bi-chat-right-fill" viewBox="0 0 16 16" id="chat-right-fill"><path d="M14 0a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/></symbol><symbol class="bi bi-chat-right-heart" viewBox="0 0 16 16" id="chat-right-heart"><path d="M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/><path d="M8 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-chat-right-heart-fill" viewBox="0 0 16 16" id="chat-right-heart-fill"><path d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353zM8 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-chat-right-quote" viewBox="0 0 16 16" id="chat-right-quote"><path d="M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/><path d="M7.066 4.76A1.665 1.665 0 0 0 4 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z"/></symbol><symbol class="bi bi-chat-right-quote-fill" viewBox="0 0 16 16" id="chat-right-quote-fill"><path d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353zM7.194 4.766q.13.188.227.401c.428.948.393 2.377-.942 3.706a.446.446 0 0 1-.612.01.405.405 0 0 1-.011-.59c.419-.416.672-.831.809-1.22-.269.165-.588.26-.93.26C4.775 7.333 4 6.587 4 5.667S4.776 4 5.734 4c.271 0 .528.06.756.166l.008.004c.169.07.327.182.469.324q.128.125.227.272M11 7.073c-.269.165-.588.26-.93.26-.958 0-1.735-.746-1.735-1.666S9.112 4 10.069 4c.271 0 .528.06.756.166l.008.004c.17.07.327.182.469.324q.128.125.227.272.131.188.228.401c.428.948.392 2.377-.942 3.706a.446.446 0 0 1-.613.01.405.405 0 0 1-.011-.59c.42-.416.672-.831.81-1.22z"/></symbol><symbol class="bi bi-chat-right-text" viewBox="0 0 16 16" id="chat-right-text"><path d="M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/><path d="M3 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3 6a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 6m0 2.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-chat-right-text-fill" viewBox="0 0 16 16" id="chat-right-text-fill"><path d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353zM3.5 3h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1 0-1m0 2.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1 0-1m0 2.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-chat-square" viewBox="0 0 16 16" id="chat-square"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-chat-square-dots" viewBox="0 0 16 16" id="chat-square-dots"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-chat-square-dots-fill" viewBox="0 0 16 16" id="chat-square-dots-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.5a1 1 0 0 0-.8.4l-1.9 2.533a1 1 0 0 1-1.6 0L5.3 12.4a1 1 0 0 0-.8-.4H2a2 2 0 0 1-2-2zm5 4a1 1 0 1 0-2 0 1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-chat-square-fill" viewBox="0 0 16 16" id="chat-square-fill"><path d="M2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-chat-square-heart" viewBox="0 0 16 16" id="chat-square-heart"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M8 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-chat-square-heart-fill" viewBox="0 0 16 16" id="chat-square-heart-fill"><path d="M2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-chat-square-quote" viewBox="0 0 16 16" id="chat-square-quote"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M7.066 4.76A1.665 1.665 0 0 0 4 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z"/></symbol><symbol class="bi bi-chat-square-quote-fill" viewBox="0 0 16 16" id="chat-square-quote-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.5a1 1 0 0 0-.8.4l-1.9 2.533a1 1 0 0 1-1.6 0L5.3 12.4a1 1 0 0 0-.8-.4H2a2 2 0 0 1-2-2zm7.194 2.766a1.7 1.7 0 0 0-.227-.272 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 5.734 4C4.776 4 4 4.746 4 5.667c0 .92.776 1.666 1.734 1.666.343 0 .662-.095.931-.26-.137.389-.39.804-.81 1.22a.405.405 0 0 0 .011.59c.173.16.447.155.614-.01 1.334-1.329 1.37-2.758.941-3.706a2.5 2.5 0 0 0-.227-.4zM11 7.073c-.136.389-.39.804-.81 1.22a.405.405 0 0 0 .012.59c.172.16.446.155.613-.01 1.334-1.329 1.37-2.758.942-3.706a2.5 2.5 0 0 0-.228-.4 1.7 1.7 0 0 0-.227-.273 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 10.07 4c-.957 0-1.734.746-1.734 1.667 0 .92.777 1.666 1.734 1.666.343 0 .662-.095.931-.26z"/></symbol><symbol class="bi bi-chat-square-text" viewBox="0 0 16 16" id="chat-square-text"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M3 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3 6a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 6m0 2.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-chat-square-text-fill" viewBox="0 0 16 16" id="chat-square-text-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.5a1 1 0 0 0-.8.4l-1.9 2.533a1 1 0 0 1-1.6 0L5.3 12.4a1 1 0 0 0-.8-.4H2a2 2 0 0 1-2-2zm3.5 1a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-chat-text" viewBox="0 0 16 16" id="chat-text"><path d="M2.678 11.894a1 1 0 0 1 .287.801 11 11 0 0 1-.398 2c1.395-.323 2.247-.697 2.634-.893a1 1 0 0 1 .71-.074A8 8 0 0 0 8 14c3.996 0 7-2.807 7-6s-3.004-6-7-6-7 2.808-7 6c0 1.468.617 2.83 1.678 3.894m-.493 3.905a22 22 0 0 1-.713.129c-.2.032-.352-.176-.273-.362a10 10 0 0 0 .244-.637l.003-.01c.248-.72.45-1.548.524-2.319C.743 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.52.263-1.639.742-3.468 1.105"/><path d="M4 5.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8m0 2.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-chat-text-fill" viewBox="0 0 16 16" id="chat-text-fill"><path d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M4.5 5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-check" viewBox="0 0 16 16" id="check"><path d="M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425z"/></symbol><symbol class="bi bi-check-all" viewBox="0 0 16 16" id="check-all"><path d="M8.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L2.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093L8.95 4.992zm-.92 5.14.92.92a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 1 0-1.091-1.028L9.477 9.417l-.485-.486z"/></symbol><symbol class="bi bi-check-circle" viewBox="0 0 16 16" id="check-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="m10.97 4.97-.02.022-3.473 4.425-2.093-2.094a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-1.071-1.05"/></symbol><symbol class="bi bi-check-circle-fill" viewBox="0 0 16 16" id="check-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/></symbol><symbol class="bi bi-check-lg" viewBox="0 0 16 16" id="check-lg"><path d="M12.736 3.97a.733.733 0 0 1 1.047 0c.286.289.29.756.01 1.05L7.88 12.01a.733.733 0 0 1-1.065.02L3.217 8.384a.757.757 0 0 1 0-1.06.733.733 0 0 1 1.047 0l3.052 3.093 5.4-6.425z"/></symbol><symbol class="bi bi-check-square" viewBox="0 0 16 16" id="check-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M10.97 4.97a.75.75 0 0 1 1.071 1.05l-3.992 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425z"/></symbol><symbol class="bi bi-check-square-fill" viewBox="0 0 16 16" id="check-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm10.03 4.97a.75.75 0 0 1 .011 1.05l-3.992 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.75.75 0 0 1 1.08-.022z"/></symbol><symbol class="bi bi-check2" viewBox="0 0 16 16" id="check2"><path d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-check2-all" viewBox="0 0 16 16" id="check2-all"><path d="M12.354 4.354a.5.5 0 0 0-.708-.708L5 10.293 1.854 7.146a.5.5 0 1 0-.708.708l3.5 3.5a.5.5 0 0 0 .708 0zm-4.208 7-.896-.897.707-.707.543.543 6.646-6.647a.5.5 0 0 1 .708.708l-7 7a.5.5 0 0 1-.708 0"/><path d="m5.354 7.146.896.897-.707.707-.897-.896a.5.5 0 1 1 .708-.708"/></symbol><symbol class="bi bi-check2-circle" viewBox="0 0 16 16" id="check2-circle"><path d="M2.5 8a5.5 5.5 0 0 1 8.25-4.764.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0 5.5 5.5 0 1 1-11 0"/><path d="M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0z"/></symbol><symbol class="bi bi-check2-square" viewBox="0 0 16 16" id="check2-square"><path d="M3 14.5A1.5 1.5 0 0 1 1.5 13V3A1.5 1.5 0 0 1 3 1.5h8a.5.5 0 0 1 0 1H3a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V8a.5.5 0 0 1 1 0v5a1.5 1.5 0 0 1-1.5 1.5z"/><path d="m8.354 10.354 7-7a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0"/></symbol><symbol class="bi bi-chevron-bar-contract" viewBox="0 0 16 16" id="chevron-bar-contract"><path fill-rule="evenodd" d="M3.646 14.854a.5.5 0 0 0 .708 0L8 11.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708m0-13.708a.5.5 0 0 1 .708 0L8 4.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8"/></symbol><symbol class="bi bi-chevron-bar-down" viewBox="0 0 16 16" id="chevron-bar-down"><path fill-rule="evenodd" d="M3.646 4.146a.5.5 0 0 1 .708 0L8 7.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708M1 11.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-chevron-bar-expand" viewBox="0 0 16 16" id="chevron-bar-expand"><path fill-rule="evenodd" d="M3.646 10.146a.5.5 0 0 1 .708 0L8 13.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708m0-4.292a.5.5 0 0 0 .708 0L8 2.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8"/></symbol><symbol class="bi bi-chevron-bar-left" viewBox="0 0 16 16" id="chevron-bar-left"><path fill-rule="evenodd" d="M11.854 3.646a.5.5 0 0 1 0 .708L8.207 8l3.647 3.646a.5.5 0 0 1-.708.708l-4-4a.5.5 0 0 1 0-.708l4-4a.5.5 0 0 1 .708 0M4.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-chevron-bar-right" viewBox="0 0 16 16" id="chevron-bar-right"><path fill-rule="evenodd" d="M4.146 3.646a.5.5 0 0 0 0 .708L7.793 8l-3.647 3.646a.5.5 0 0 0 .708.708l4-4a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708 0M11.5 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-chevron-bar-up" viewBox="0 0 16 16" id="chevron-bar-up"><path fill-rule="evenodd" d="M3.646 11.854a.5.5 0 0 0 .708 0L8 8.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708M2.4 5.2c0 .22.18.4.4.4h10.4a.4.4 0 0 0 0-.8H2.8a.4.4 0 0 0-.4.4"/></symbol><symbol class="bi bi-chevron-compact-down" viewBox="0 0 16 16" id="chevron-compact-down"><path fill-rule="evenodd" d="M1.553 6.776a.5.5 0 0 1 .67-.223L8 9.44l5.776-2.888a.5.5 0 1 1 .448.894l-6 3a.5.5 0 0 1-.448 0l-6-3a.5.5 0 0 1-.223-.67"/></symbol><symbol class="bi bi-chevron-compact-left" viewBox="0 0 16 16" id="chevron-compact-left"><path fill-rule="evenodd" d="M9.224 1.553a.5.5 0 0 1 .223.67L6.56 8l2.888 5.776a.5.5 0 1 1-.894.448l-3-6a.5.5 0 0 1 0-.448l3-6a.5.5 0 0 1 .67-.223"/></symbol><symbol class="bi bi-chevron-compact-right" viewBox="0 0 16 16" id="chevron-compact-right"><path fill-rule="evenodd" d="M6.776 1.553a.5.5 0 0 1 .671.223l3 6a.5.5 0 0 1 0 .448l-3 6a.5.5 0 1 1-.894-.448L9.44 8 6.553 2.224a.5.5 0 0 1 .223-.671"/></symbol><symbol class="bi bi-chevron-compact-up" viewBox="0 0 16 16" id="chevron-compact-up"><path fill-rule="evenodd" d="M7.776 5.553a.5.5 0 0 1 .448 0l6 3a.5.5 0 1 1-.448.894L8 6.56 2.224 9.447a.5.5 0 1 1-.448-.894z"/></symbol><symbol class="bi bi-chevron-contract" viewBox="0 0 16 16" id="chevron-contract"><path fill-rule="evenodd" d="M3.646 13.854a.5.5 0 0 0 .708 0L8 10.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708m0-11.708a.5.5 0 0 1 .708 0L8 5.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-chevron-double-down" viewBox="0 0 16 16" id="chevron-double-down"><path fill-rule="evenodd" d="M1.646 6.646a.5.5 0 0 1 .708 0L8 12.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/><path fill-rule="evenodd" d="M1.646 2.646a.5.5 0 0 1 .708 0L8 8.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-chevron-double-left" viewBox="0 0 16 16" id="chevron-double-left"><path fill-rule="evenodd" d="M8.354 1.646a.5.5 0 0 1 0 .708L2.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0"/><path fill-rule="evenodd" d="M12.354 1.646a.5.5 0 0 1 0 .708L6.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-chevron-double-right" viewBox="0 0 16 16" id="chevron-double-right"><path fill-rule="evenodd" d="M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708"/><path fill-rule="evenodd" d="M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-chevron-double-up" viewBox="0 0 16 16" id="chevron-double-up"><path fill-rule="evenodd" d="M7.646 2.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 3.707 2.354 9.354a.5.5 0 1 1-.708-.708z"/><path fill-rule="evenodd" d="M7.646 6.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 7.707l-5.646 5.647a.5.5 0 0 1-.708-.708z"/></symbol><symbol class="bi bi-chevron-down" viewBox="0 0 16 16" id="chevron-down"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-chevron-expand" viewBox="0 0 16 16" id="chevron-expand"><path fill-rule="evenodd" d="M3.646 9.146a.5.5 0 0 1 .708 0L8 12.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708m0-2.292a.5.5 0 0 0 .708 0L8 3.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708"/></symbol><symbol class="bi bi-chevron-left" viewBox="0 0 16 16" id="chevron-left"><path fill-rule="evenodd" d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-chevron-right" viewBox="0 0 16 16" id="chevron-right"><path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-chevron-up" viewBox="0 0 16 16" id="chevron-up"><path fill-rule="evenodd" d="M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z"/></symbol><symbol class="bi bi-circle" viewBox="0 0 16 16" id="circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/></symbol><symbol class="bi bi-circle-fill" viewBox="0 0 16 16" id="circle-fill"><circle cx="8" cy="8" r="8"/></symbol><symbol class="bi bi-circle-half" viewBox="0 0 16 16" id="circle-half"><path d="M8 15A7 7 0 1 0 8 1zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16"/></symbol><symbol class="bi bi-circle-square" viewBox="0 0 16 16" id="circle-square"><path d="M0 6a6 6 0 1 1 12 0A6 6 0 0 1 0 6"/><path d="M12.93 5h1.57a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-1.57a7 7 0 0 1-1-.22v1.79A1.5 1.5 0 0 0 5.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 4h-1.79q.145.486.22 1"/></symbol><symbol class="bi bi-clipboard" viewBox="0 0 16 16" id="clipboard"><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/><path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/></symbol><symbol class="bi bi-clipboard-check" viewBox="0 0 16 16" id="clipboard-check"><path fill-rule="evenodd" d="M10.854 7.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708 0"/><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/><path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/></symbol><symbol class="bi bi-clipboard-check-fill" viewBox="0 0 16 16" id="clipboard-check-fill"><path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708"/></symbol><symbol class="bi bi-clipboard-data" viewBox="0 0 16 16" id="clipboard-data"><path d="M4 11a1 1 0 1 1 2 0v1a1 1 0 1 1-2 0zm6-4a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0zM7 9a1 1 0 0 1 2 0v3a1 1 0 1 1-2 0z"/><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/><path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/></symbol><symbol class="bi bi-clipboard-data-fill" viewBox="0 0 16 16" id="clipboard-data-fill"><path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zM10 8a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0zm-6 4a1 1 0 1 1 2 0v1a1 1 0 1 1-2 0zm4-3a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0v-3a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-clipboard-fill" viewBox="0 0 16 16" id="clipboard-fill"><path fill-rule="evenodd" d="M10 1.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5zm-5 0A1.5 1.5 0 0 1 6.5 0h3A1.5 1.5 0 0 1 11 1.5v1A1.5 1.5 0 0 1 9.5 4h-3A1.5 1.5 0 0 1 5 2.5zm-2 0h1v1A2.5 2.5 0 0 0 6.5 5h3A2.5 2.5 0 0 0 12 2.5v-1h1a2 2 0 0 1 2 2V14a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3.5a2 2 0 0 1 2-2"/></symbol><symbol class="bi bi-clipboard-heart" viewBox="0 0 16 16" id="clipboard-heart"><path fill-rule="evenodd" d="M5 1.5A1.5 1.5 0 0 1 6.5 0h3A1.5 1.5 0 0 1 11 1.5v1A1.5 1.5 0 0 1 9.5 4h-3A1.5 1.5 0 0 1 5 2.5zm5 0a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5z"/><path d="M3 1.5h1v1H3a1 1 0 0 0-1 1V14a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3.5a1 1 0 0 0-1-1h-1v-1h1a2 2 0 0 1 2 2V14a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3.5a2 2 0 0 1 2-2"/><path d="M8 6.982C9.664 5.309 13.825 8.236 8 12 2.175 8.236 6.336 5.31 8 6.982"/></symbol><symbol class="bi bi-clipboard-heart-fill" viewBox="0 0 16 16" id="clipboard-heart-fill"><path fill-rule="evenodd" d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/><path fill-rule="evenodd" d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zm4 5.982c1.664-1.673 5.825 1.254 0 5.018-5.825-3.764-1.664-6.69 0-5.018"/></symbol><symbol class="bi bi-clipboard-minus" viewBox="0 0 16 16" id="clipboard-minus"><path fill-rule="evenodd" d="M5.5 9.5A.5.5 0 0 1 6 9h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/><path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/></symbol><symbol class="bi bi-clipboard-minus-fill" viewBox="0 0 16 16" id="clipboard-minus-fill"><path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zM6 9h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-clipboard-plus" viewBox="0 0 16 16" id="clipboard-plus"><path fill-rule="evenodd" d="M8 7a.5.5 0 0 1 .5.5V9H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V10H6a.5.5 0 0 1 0-1h1.5V7.5A.5.5 0 0 1 8 7"/><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/><path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/></symbol><symbol class="bi bi-clipboard-plus-fill" viewBox="0 0 16 16" id="clipboard-plus-fill"><path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zm4.5 6V9H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V10H6a.5.5 0 0 1 0-1h1.5V7.5a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-clipboard-pulse" viewBox="0 0 16 16" id="clipboard-pulse"><path fill-rule="evenodd" d="M10 1.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5zm-5 0A1.5 1.5 0 0 1 6.5 0h3A1.5 1.5 0 0 1 11 1.5v1A1.5 1.5 0 0 1 9.5 4h-3A1.5 1.5 0 0 1 5 2.5zm-2 0h1v1H3a1 1 0 0 0-1 1V14a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3.5a1 1 0 0 0-1-1h-1v-1h1a2 2 0 0 1 2 2V14a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3.5a2 2 0 0 1 2-2m6.979 3.856a.5.5 0 0 0-.968.04L7.92 10.49l-.94-3.135a.5.5 0 0 0-.895-.133L4.232 10H3.5a.5.5 0 0 0 0 1h1a.5.5 0 0 0 .416-.223l1.41-2.115 1.195 3.982a.5.5 0 0 0 .968-.04L9.58 7.51l.94 3.135A.5.5 0 0 0 11 11h1.5a.5.5 0 0 0 0-1h-1.128z"/></symbol><symbol class="bi bi-clipboard-x" viewBox="0 0 16 16" id="clipboard-x"><path fill-rule="evenodd" d="M6.146 7.146a.5.5 0 0 1 .708 0L8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 0 1 0-.708"/><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/><path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/></symbol><symbol class="bi bi-clipboard-x-fill" viewBox="0 0 16 16" id="clipboard-x-fill"><path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zm4 7.793 1.146-1.147a.5.5 0 1 1 .708.708L8.707 10l1.147 1.146a.5.5 0 0 1-.708.708L8 10.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 10 6.146 8.854a.5.5 0 1 1 .708-.708z"/></symbol><symbol class="bi bi-clipboard2" viewBox="0 0 16 16" id="clipboard2"><path d="M3.5 2a.5.5 0 0 0-.5.5v12a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-12a.5.5 0 0 0-.5-.5H12a.5.5 0 0 1 0-1h.5A1.5 1.5 0 0 1 14 2.5v12a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-12A1.5 1.5 0 0 1 3.5 1H4a.5.5 0 0 1 0 1z"/><path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-clipboard2-check" viewBox="0 0 16 16" id="clipboard2-check"><path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/><path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/><path d="M10.854 7.854a.5.5 0 0 0-.708-.708L7.5 9.793 6.354 8.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/></symbol><symbol class="bi bi-clipboard2-check-fill" viewBox="0 0 16 16" id="clipboard2-check-fill"><path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/><path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5m6.769 6.854-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708.708"/></symbol><symbol class="bi bi-clipboard2-data" viewBox="0 0 16 16" id="clipboard2-data"><path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/><path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/><path d="M10 7a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0zm-6 4a1 1 0 1 1 2 0v1a1 1 0 1 1-2 0zm4-3a1 1 0 0 0-1 1v3a1 1 0 1 0 2 0V9a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-clipboard2-data-fill" viewBox="0 0 16 16" id="clipboard2-data-fill"><path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/><path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5M10 7a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0zm-6 4a1 1 0 1 1 2 0v1a1 1 0 1 1-2 0zm4-3a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0V9a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-clipboard2-fill" viewBox="0 0 16 16" id="clipboard2-fill"><path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/><path d="M3.5 1h.585A1.5 1.5 0 0 0 4 1.5V2a1.5 1.5 0 0 0 1.5 1.5h5A1.5 1.5 0 0 0 12 2v-.5q-.001-.264-.085-.5h.585A1.5 1.5 0 0 1 14 2.5v12a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-12A1.5 1.5 0 0 1 3.5 1"/></symbol><symbol class="bi bi-clipboard2-heart" viewBox="0 0 16 16" id="clipboard2-heart"><path d="M10.058.501a.5.5 0 0 0-.5-.501h-2.98c-.276 0-.5.225-.5.501A.5.5 0 0 1 5.582 1a.497.497 0 0 0-.497.497V2a.5.5 0 0 0 .5.5h4.968a.5.5 0 0 0 .5-.5v-.503A.497.497 0 0 0 10.555 1a.5.5 0 0 1-.497-.499"/><path d="M3.605 2a.5.5 0 0 0-.5.5v12a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-12a.5.5 0 0 0-.5-.5h-.5a.5.5 0 0 1 0-1h.5a1.5 1.5 0 0 1 1.5 1.5v12a1.5 1.5 0 0 1-1.5 1.5h-9a1.5 1.5 0 0 1-1.5-1.5v-12a1.5 1.5 0 0 1 1.5-1.5h.5a.5.5 0 0 1 0 1z"/><path d="M8.068 6.482c1.656-1.673 5.795 1.254 0 5.018-5.795-3.764-1.656-6.69 0-5.018"/></symbol><symbol class="bi bi-clipboard2-heart-fill" viewBox="0 0 16 16" id="clipboard2-heart-fill"><path fill-rule="evenodd" d="M10.058.501a.5.5 0 0 0-.5-.501h-2.98c-.276 0-.5.225-.5.501A.5.5 0 0 1 5.582 1a.497.497 0 0 0-.497.497V2a.5.5 0 0 0 .5.5h4.968a.5.5 0 0 0 .5-.5v-.503A.497.497 0 0 0 10.555 1a.5.5 0 0 1-.497-.499"/><path fill-rule="evenodd" d="M4.174 1h-.57a1.5 1.5 0 0 0-1.5 1.5v12a1.5 1.5 0 0 0 1.5 1.5h9a1.5 1.5 0 0 0 1.5-1.5v-12a1.5 1.5 0 0 0-1.5-1.5h-.642q.084.236.085.5V2c0 .828-.668 1.5-1.492 1.5H5.581A1.496 1.496 0 0 1 4.09 2v-.5q.001-.264.085-.5Zm3.894 5.482c1.656-1.673 5.795 1.254 0 5.018-5.795-3.764-1.656-6.69 0-5.018"/></symbol><symbol class="bi bi-clipboard2-minus" viewBox="0 0 16 16" id="clipboard2-minus"><path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/><path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/><path d="M6 8a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-clipboard2-minus-fill" viewBox="0 0 16 16" id="clipboard2-minus-fill"><path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/><path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5M6 8h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-clipboard2-plus" viewBox="0 0 16 16" id="clipboard2-plus"><path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/><path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/><path d="M8.5 6.5a.5.5 0 0 0-1 0V8H6a.5.5 0 0 0 0 1h1.5v1.5a.5.5 0 0 0 1 0V9H10a.5.5 0 0 0 0-1H8.5z"/></symbol><symbol class="bi bi-clipboard2-plus-fill" viewBox="0 0 16 16" id="clipboard2-plus-fill"><path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/><path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5M8.5 6.5V8H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V9H6a.5.5 0 0 1 0-1h1.5V6.5a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-clipboard2-pulse" viewBox="0 0 16 16" id="clipboard2-pulse"><path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/><path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/><path d="M9.979 5.356a.5.5 0 0 0-.968.04L7.92 10.49l-.94-3.135a.5.5 0 0 0-.926-.08L4.69 10H4.5a.5.5 0 0 0 0 1H5a.5.5 0 0 0 .447-.276l.936-1.873 1.138 3.793a.5.5 0 0 0 .968-.04L9.58 7.51l.94 3.135A.5.5 0 0 0 11 11h.5a.5.5 0 0 0 0-1h-.128z"/></symbol><symbol class="bi bi-clipboard2-pulse-fill" viewBox="0 0 16 16" id="clipboard2-pulse-fill"><path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/><path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5M9.98 5.356 11.372 10h.128a.5.5 0 0 1 0 1H11a.5.5 0 0 1-.479-.356l-.94-3.135-1.092 5.096a.5.5 0 0 1-.968.039L6.383 8.85l-.936 1.873A.5.5 0 0 1 5 11h-.5a.5.5 0 0 1 0-1h.191l1.362-2.724a.5.5 0 0 1 .926.08l.94 3.135 1.092-5.096a.5.5 0 0 1 .968-.039Z"/></symbol><symbol class="bi bi-clipboard2-x" viewBox="0 0 16 16" id="clipboard2-x"><path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/><path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/><path d="M8 8.293 6.854 7.146a.5.5 0 1 0-.708.708L7.293 9l-1.147 1.146a.5.5 0 0 0 .708.708L8 9.707l1.146 1.147a.5.5 0 0 0 .708-.708L8.707 9l1.147-1.146a.5.5 0 0 0-.708-.708z"/></symbol><symbol class="bi bi-clipboard2-x-fill" viewBox="0 0 16 16" id="clipboard2-x-fill"><path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/><path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5M8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 1 1 .708-.708z"/></symbol><symbol class="bi bi-clock" viewBox="0 0 16 16" id="clock"><path d="M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71z"/><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0"/></symbol><symbol class="bi bi-clock-fill" viewBox="0 0 16 16" id="clock-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71z"/></symbol><symbol class="bi bi-clock-history" viewBox="0 0 16 16" id="clock-history"><path d="M8.515 1.019A7 7 0 0 0 8 1V0a8 8 0 0 1 .589.022zm2.004.45a7 7 0 0 0-.985-.299l.219-.976q.576.129 1.126.342zm1.37.71a7 7 0 0 0-.439-.27l.493-.87a8 8 0 0 1 .979.654l-.615.789a7 7 0 0 0-.418-.302zm1.834 1.79a7 7 0 0 0-.653-.796l.724-.69q.406.429.747.91zm.744 1.352a7 7 0 0 0-.214-.468l.893-.45a8 8 0 0 1 .45 1.088l-.95.313a7 7 0 0 0-.179-.483m.53 2.507a7 7 0 0 0-.1-1.025l.985-.17q.1.58.116 1.17zm-.131 1.538q.05-.254.081-.51l.993.123a8 8 0 0 1-.23 1.155l-.964-.267q.069-.247.12-.501m-.952 2.379q.276-.436.486-.908l.914.405q-.24.54-.555 1.038zm-.964 1.205q.183-.183.35-.378l.758.653a8 8 0 0 1-.401.432z"/><path d="M8 1a7 7 0 1 0 4.95 11.95l.707.707A8.001 8.001 0 1 1 8 0z"/><path d="M7.5 3a.5.5 0 0 1 .5.5v5.21l3.248 1.856a.5.5 0 0 1-.496.868l-3.5-2A.5.5 0 0 1 7 9V3.5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-cloud" viewBox="0 0 16 16" id="cloud"><path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/></symbol><symbol class="bi bi-cloud-arrow-down" viewBox="0 0 16 16" id="cloud-arrow-down"><path fill-rule="evenodd" d="M7.646 10.854a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 9.293V5.5a.5.5 0 0 0-1 0v3.793L6.354 8.146a.5.5 0 1 0-.708.708z"/><path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/></symbol><symbol class="bi bi-cloud-arrow-down-fill" viewBox="0 0 16 16" id="cloud-arrow-down-fill"><path d="M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2m2.354 6.854-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5a.5.5 0 0 1 1 0v3.793l1.146-1.147a.5.5 0 0 1 .708.708"/></symbol><symbol class="bi bi-cloud-arrow-up" viewBox="0 0 16 16" id="cloud-arrow-up"><path fill-rule="evenodd" d="M7.646 5.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0V6.707L6.354 7.854a.5.5 0 1 1-.708-.708z"/><path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/></symbol><symbol class="bi bi-cloud-arrow-up-fill" viewBox="0 0 16 16" id="cloud-arrow-up-fill"><path d="M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2m2.354 5.146a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0V6.707L6.354 7.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0z"/></symbol><symbol class="bi bi-cloud-check" viewBox="0 0 16 16" id="cloud-check"><path fill-rule="evenodd" d="M10.354 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708 0"/><path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/></symbol><symbol class="bi bi-cloud-check-fill" viewBox="0 0 16 16" id="cloud-check-fill"><path d="M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2m2.354 4.854-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708.708"/></symbol><symbol class="bi bi-cloud-download" viewBox="0 0 16 16" id="cloud-download"><path d="M4.406 1.342A5.53 5.53 0 0 1 8 0c2.69 0 4.923 2 5.166 4.579C14.758 4.804 16 6.137 16 7.773 16 9.569 14.502 11 12.687 11H10a.5.5 0 0 1 0-1h2.688C13.979 10 15 8.988 15 7.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 2.825 10.328 1 8 1a4.53 4.53 0 0 0-2.941 1.1c-.757.652-1.153 1.438-1.153 2.055v.448l-.445.049C2.064 4.805 1 5.952 1 7.318 1 8.785 2.23 10 3.781 10H6a.5.5 0 0 1 0 1H3.781C1.708 11 0 9.366 0 7.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383"/><path d="M7.646 15.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 14.293V5.5a.5.5 0 0 0-1 0v8.793l-2.146-2.147a.5.5 0 0 0-.708.708z"/></symbol><symbol class="bi bi-cloud-download-fill" viewBox="0 0 16 16" id="cloud-download-fill"><path fill-rule="evenodd" d="M8 0a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 4.095 0 5.555 0 7.318 0 9.366 1.708 11 3.781 11H7.5V5.5a.5.5 0 0 1 1 0V11h4.188C14.502 11 16 9.57 16 7.773c0-1.636-1.242-2.969-2.834-3.194C12.923 1.999 10.69 0 8 0m-.354 15.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 14.293V11h-1v3.293l-2.146-2.147a.5.5 0 0 0-.708.708z"/></symbol><symbol class="bi bi-cloud-drizzle" viewBox="0 0 16 16" id="cloud-drizzle"><path d="M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m-3.5 1.5a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m.747-8.498a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973M8.5 2a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 2"/></symbol><symbol class="bi bi-cloud-drizzle-fill" viewBox="0 0 16 16" id="cloud-drizzle-fill"><path d="M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m-3.5 1.5a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m.747-8.498a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973"/></symbol><symbol class="bi bi-cloud-fill" viewBox="0 0 16 16" id="cloud-fill"><path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383"/></symbol><symbol class="bi bi-cloud-fog" viewBox="0 0 16 16" id="cloud-fog"><path d="M3 13.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m10.405-9.473a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 12H13a3 3 0 0 0 .405-5.973M8.5 3a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 3"/></symbol><symbol class="bi bi-cloud-fog-fill" viewBox="0 0 16 16" id="cloud-fog-fill"><path d="M3 13.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m10.405-9.473a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 12H13a3 3 0 0 0 .405-5.973"/></symbol><symbol class="bi bi-cloud-fog2" viewBox="0 0 16 16" id="cloud-fog2"><path d="M8.5 4a4 4 0 0 0-3.8 2.745.5.5 0 1 1-.949-.313 5.002 5.002 0 0 1 9.654.595A3 3 0 0 1 13 13H.5a.5.5 0 0 1 0-1H13a2 2 0 0 0 .001-4h-.026a.5.5 0 0 1-.5-.445A4 4 0 0 0 8.5 4M0 8.5A.5.5 0 0 1 .5 8h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-cloud-fog2-fill" viewBox="0 0 16 16" id="cloud-fog2-fill"><path d="M8.5 3a5 5 0 0 1 4.905 4.027A3 3 0 0 1 13 13h-1.5a.5.5 0 0 0 0-1H1.05a3.5 3.5 0 0 1-.713-1H9.5a.5.5 0 0 0 0-1H.035a3.5 3.5 0 0 1 0-1H7.5a.5.5 0 0 0 0-1H.337a3.5 3.5 0 0 1 3.57-1.977A5 5 0 0 1 8.5 3"/></symbol><symbol class="bi bi-cloud-hail" viewBox="0 0 16 16" id="cloud-hail"><path d="M13.405 4.527a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.5H13a3 3 0 0 0 .405-5.973M8.5 1.5a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1-.001 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1.5M3.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316M7.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m3.592 3.724a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316"/></symbol><symbol class="bi bi-cloud-hail-fill" viewBox="0 0 16 16" id="cloud-hail-fill"><path d="M3.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316M7.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m3.592 3.724a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m1.247-6.999a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.5H13a3 3 0 0 0 .405-5.973"/></symbol><symbol class="bi bi-cloud-haze" viewBox="0 0 16 16" id="cloud-haze"><path d="M4 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-3 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m2 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973M8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1"/></symbol><symbol class="bi bi-cloud-haze-fill" viewBox="0 0 16 16" id="cloud-haze-fill"><path d="M4 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-3 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m2 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973"/></symbol><symbol class="bi bi-cloud-haze2" viewBox="0 0 16 16" id="cloud-haze2"><path d="M8.5 3a4 4 0 0 0-3.8 2.745.5.5 0 1 1-.949-.313 5.002 5.002 0 0 1 9.654.595A3 3 0 0 1 13 12H4.5a.5.5 0 0 1 0-1H13a2 2 0 0 0 .001-4h-.026a.5.5 0 0 1-.5-.445A4 4 0 0 0 8.5 3M0 7.5A.5.5 0 0 1 .5 7h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m2 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-2 4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-cloud-haze2-fill" viewBox="0 0 16 16" id="cloud-haze2-fill"><path d="M8.5 2a5 5 0 0 1 4.905 4.027A3 3 0 0 1 13 12H3.5A3.5 3.5 0 0 1 .035 9H5.5a.5.5 0 0 0 0-1H.035a3.5 3.5 0 0 1 3.871-2.977A5 5 0 0 1 8.5 2m-6 8a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zM0 13.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-cloud-lightning" viewBox="0 0 16 16" id="cloud-lightning"><path d="M13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973M8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1M7.053 11.276A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724z"/></symbol><symbol class="bi bi-cloud-lightning-fill" viewBox="0 0 16 16" id="cloud-lightning-fill"><path d="M7.053 11.276A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724zm6.352-7.249a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973"/></symbol><symbol class="bi bi-cloud-lightning-rain" viewBox="0 0 16 16" id="cloud-lightning-rain"><path d="M2.658 11.026a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m-7.5 1.5a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m-.753-8.499a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973M8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1M7.053 11.276A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724z"/></symbol><symbol class="bi bi-cloud-lightning-rain-fill" viewBox="0 0 16 16" id="cloud-lightning-rain-fill"><path d="M2.658 11.026a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m-7.5 1.5a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m-7.105-1.25A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724zm6.352-7.249a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973"/></symbol><symbol class="bi bi-cloud-minus" viewBox="0 0 16 16" id="cloud-minus"><path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/><path d="M6 7.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-cloud-minus-fill" viewBox="0 0 16 16" id="cloud-minus-fill"><path d="M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2M6 7.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-cloud-moon" viewBox="0 0 16 16" id="cloud-moon"><path d="M7 8a3.5 3.5 0 0 1 3.5 3.555.5.5 0 0 0 .625.492A1.503 1.503 0 0 1 13 13.5a1.5 1.5 0 0 1-1.5 1.5H3a2 2 0 1 1 .1-3.998.5.5 0 0 0 .509-.375A3.5 3.5 0 0 1 7 8m4.473 3a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5z"/><path d="M11.286 1.778a.5.5 0 0 0-.565-.755 4.595 4.595 0 0 0-3.18 5.003 5.5 5.5 0 0 1 1.055.209A3.6 3.6 0 0 1 9.83 2.617a4.593 4.593 0 0 0 4.31 5.744 3.58 3.58 0 0 1-2.241.634q.244.477.394 1a4.59 4.59 0 0 0 3.624-2.04.5.5 0 0 0-.565-.755 3.593 3.593 0 0 1-4.065-5.422z"/></symbol><symbol class="bi bi-cloud-moon-fill" viewBox="0 0 16 16" id="cloud-moon-fill"><path d="M11.473 11a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5z"/><path d="M11.286 1.778a.5.5 0 0 0-.565-.755 4.595 4.595 0 0 0-3.18 5.003 5.5 5.5 0 0 1 1.055.209A3.6 3.6 0 0 1 9.83 2.617a4.593 4.593 0 0 0 4.31 5.744 3.58 3.58 0 0 1-2.241.634q.244.477.394 1a4.59 4.59 0 0 0 3.624-2.04.5.5 0 0 0-.565-.755 3.593 3.593 0 0 1-4.065-5.422z"/></symbol><symbol class="bi bi-cloud-plus" viewBox="0 0 16 16" id="cloud-plus"><path fill-rule="evenodd" d="M8 5.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 .5-.5"/><path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/></symbol><symbol class="bi bi-cloud-plus-fill" viewBox="0 0 16 16" id="cloud-plus-fill"><path d="M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2m.5 4v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-cloud-rain" viewBox="0 0 16 16" id="cloud-rain"><path d="M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 0 1-.948-.316l1-3a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 1 1-.948-.316l1-3a.5.5 0 0 1 .632-.317m.247-6.998a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973M8.5 2a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 2"/></symbol><symbol class="bi bi-cloud-rain-fill" viewBox="0 0 16 16" id="cloud-rain-fill"><path d="M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 1 1-.948-.316l1-3a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 1 1-.948-.316l1-3a.5.5 0 0 1 .632-.317m.247-6.998a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973"/></symbol><symbol class="bi bi-cloud-rain-heavy" viewBox="0 0 16 16" id="cloud-rain-heavy"><path d="M4.176 11.032a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 1 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 1 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 1 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m.229-7.005a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973M8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1"/></symbol><symbol class="bi bi-cloud-rain-heavy-fill" viewBox="0 0 16 16" id="cloud-rain-heavy-fill"><path d="M4.176 11.032a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m.229-7.005a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973"/></symbol><symbol class="bi bi-cloud-slash" viewBox="0 0 16 16" id="cloud-slash"><path fill-rule="evenodd" d="M3.112 5.112a3 3 0 0 0-.17.613C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13H11l-1-1H3.781C2.231 12 1 10.785 1 9.318c0-1.365 1.064-2.513 2.46-2.666l.446-.05v-.447q0-.113.018-.231zm2.55-1.45-.725-.725A5.5 5.5 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773a3.2 3.2 0 0 1-1.516 2.711l-.733-.733C14.498 11.378 15 10.626 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3c-.875 0-1.678.26-2.339.661z"/><path d="m13.646 14.354-12-12 .708-.708 12 12z"/></symbol><symbol class="bi bi-cloud-slash-fill" viewBox="0 0 16 16" id="cloud-slash-fill"><path fill-rule="evenodd" d="M3.112 5.112a3 3 0 0 0-.17.613C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13H11zm11.372 7.372L4.937 2.937A5.5 5.5 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773a3.2 3.2 0 0 1-1.516 2.711m-.838 1.87-12-12 .708-.708 12 12z"/></symbol><symbol class="bi bi-cloud-sleet" viewBox="0 0 16 16" id="cloud-sleet"><path d="M13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973M8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1M2.375 13.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zM6.375 13.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zm2.151 2.447a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223z"/></symbol><symbol class="bi bi-cloud-sleet-fill" viewBox="0 0 16 16" id="cloud-sleet-fill"><path d="M2.375 13.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 1 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 1 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 0 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zM6.375 13.5a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 1 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 1 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 0 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zm2.151 2.447a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 1 1-.248.434l-.501-.286v.569a.25.25 0 0 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 1 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zm1.181-7.026a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973"/></symbol><symbol class="bi bi-cloud-snow" viewBox="0 0 16 16" id="cloud-snow"><path d="M13.405 4.277a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.25H13a3 3 0 0 0 .405-5.973M8.5 1.25a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1-.001 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1.25M2.625 11.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m2.75 2a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m5.5 0a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m-2.75-2a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m5.5 0a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25"/></symbol><symbol class="bi bi-cloud-snow-fill" viewBox="0 0 16 16" id="cloud-snow-fill"><path d="M2.625 11.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m2.75 2a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m5.5 0a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 0 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m-2.75-2a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m5.5 0a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 0 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m-.22-7.223a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.25H13a3 3 0 0 0 .405-5.973"/></symbol><symbol class="bi bi-cloud-sun" viewBox="0 0 16 16" id="cloud-sun"><path d="M7 8a3.5 3.5 0 0 1 3.5 3.555.5.5 0 0 0 .624.492A1.503 1.503 0 0 1 13 13.5a1.5 1.5 0 0 1-1.5 1.5H3a2 2 0 1 1 .1-3.998.5.5 0 0 0 .51-.375A3.5 3.5 0 0 1 7 8m4.473 3a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5z"/><path d="M10.5 1.5a.5.5 0 0 0-1 0v1a.5.5 0 0 0 1 0zm3.743 1.964a.5.5 0 1 0-.707-.707l-.708.707a.5.5 0 0 0 .708.708zm-7.779-.707a.5.5 0 0 0-.707.707l.707.708a.5.5 0 1 0 .708-.708zm1.734 3.374a2 2 0 1 1 3.296 2.198q.3.423.516.898a3 3 0 1 0-4.84-3.225q.529.017 1.028.129m4.484 4.074c.6.215 1.125.59 1.522 1.072a.5.5 0 0 0 .039-.742l-.707-.707a.5.5 0 0 0-.854.377M14.5 6.5a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-cloud-sun-fill" viewBox="0 0 16 16" id="cloud-sun-fill"><path d="M11.473 11a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5z"/><path d="M10.5 1.5a.5.5 0 0 0-1 0v1a.5.5 0 0 0 1 0zm3.743 1.964a.5.5 0 1 0-.707-.707l-.708.707a.5.5 0 0 0 .708.708zm-7.779-.707a.5.5 0 0 0-.707.707l.707.708a.5.5 0 1 0 .708-.708zm1.734 3.374a2 2 0 1 1 3.296 2.198q.3.423.516.898a3 3 0 1 0-4.84-3.225q.529.017 1.028.129m4.484 4.074c.6.215 1.125.59 1.522 1.072a.5.5 0 0 0 .039-.742l-.707-.707a.5.5 0 0 0-.854.377M14.5 6.5a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-cloud-upload" viewBox="0 0 16 16" id="cloud-upload"><path fill-rule="evenodd" d="M4.406 1.342A5.53 5.53 0 0 1 8 0c2.69 0 4.923 2 5.166 4.579C14.758 4.804 16 6.137 16 7.773 16 9.569 14.502 11 12.687 11H10a.5.5 0 0 1 0-1h2.688C13.979 10 15 8.988 15 7.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 2.825 10.328 1 8 1a4.53 4.53 0 0 0-2.941 1.1c-.757.652-1.153 1.438-1.153 2.055v.448l-.445.049C2.064 4.805 1 5.952 1 7.318 1 8.785 2.23 10 3.781 10H6a.5.5 0 0 1 0 1H3.781C1.708 11 0 9.366 0 7.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383"/><path fill-rule="evenodd" d="M7.646 4.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V14.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708z"/></symbol><symbol class="bi bi-cloud-upload-fill" viewBox="0 0 16 16" id="cloud-upload-fill"><path fill-rule="evenodd" d="M8 0a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 4.095 0 5.555 0 7.318 0 9.366 1.708 11 3.781 11H7.5V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V11h4.188C14.502 11 16 9.57 16 7.773c0-1.636-1.242-2.969-2.834-3.194C12.923 1.999 10.69 0 8 0m-.5 14.5V11h1v3.5a.5.5 0 0 1-1 0"/></symbol><symbol class="bi bi-clouds" viewBox="0 0 16 16" id="clouds"><path d="M16 7.5a2.5 2.5 0 0 1-1.456 2.272 3.5 3.5 0 0 0-.65-.824 1.5 1.5 0 0 0-.789-2.896.5.5 0 0 1-.627-.421 3 3 0 0 0-5.22-1.625 5.6 5.6 0 0 0-1.276.088 4.002 4.002 0 0 1 7.392.91A2.5 2.5 0 0 1 16 7.5"/><path d="M7 5a4.5 4.5 0 0 1 4.473 4h.027a2.5 2.5 0 0 1 0 5H3a3 3 0 0 1-.247-5.99A4.5 4.5 0 0 1 7 5m3.5 4.5a3.5 3.5 0 0 0-6.89-.873.5.5 0 0 1-.51.375A2 2 0 1 0 3 13h8.5a1.5 1.5 0 1 0-.376-2.953.5.5 0 0 1-.624-.492z"/></symbol><symbol class="bi bi-clouds-fill" viewBox="0 0 16 16" id="clouds-fill"><path d="M11.473 9a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 14h8.5a2.5 2.5 0 1 0-.027-5"/><path d="M14.544 9.772a3.5 3.5 0 0 0-2.225-1.676 5.5 5.5 0 0 0-6.337-4.002 4.002 4.002 0 0 1 7.392.91 2.5 2.5 0 0 1 1.17 4.769z"/></symbol><symbol class="bi bi-cloudy" viewBox="0 0 16 16" id="cloudy"><path d="M13.405 8.527a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 14.5H13a3 3 0 0 0 .405-5.973M8.5 5.5a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1-.001 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 5.5"/></symbol><symbol class="bi bi-cloudy-fill" viewBox="0 0 16 16" id="cloudy-fill"><path d="M13.405 7.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 13H13a3 3 0 0 0 .405-5.973"/></symbol><symbol class="bi bi-code" viewBox="0 0 16 16" id="code"><path d="M5.854 4.854a.5.5 0 1 0-.708-.708l-3.5 3.5a.5.5 0 0 0 0 .708l3.5 3.5a.5.5 0 0 0 .708-.708L2.707 8zm4.292 0a.5.5 0 0 1 .708-.708l3.5 3.5a.5.5 0 0 1 0 .708l-3.5 3.5a.5.5 0 0 1-.708-.708L13.293 8z"/></symbol><symbol class="bi bi-code-slash" viewBox="0 0 16 16" id="code-slash"><path d="M10.478 1.647a.5.5 0 1 0-.956-.294l-4 13a.5.5 0 0 0 .956.294zM4.854 4.146a.5.5 0 0 1 0 .708L1.707 8l3.147 3.146a.5.5 0 0 1-.708.708l-3.5-3.5a.5.5 0 0 1 0-.708l3.5-3.5a.5.5 0 0 1 .708 0m6.292 0a.5.5 0 0 0 0 .708L14.293 8l-3.147 3.146a.5.5 0 0 0 .708.708l3.5-3.5a.5.5 0 0 0 0-.708l-3.5-3.5a.5.5 0 0 0-.708 0"/></symbol><symbol class="bi bi-code-square" viewBox="0 0 16 16" id="code-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M6.854 4.646a.5.5 0 0 1 0 .708L4.207 8l2.647 2.646a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 0 1 .708 0m2.292 0a.5.5 0 0 0 0 .708L11.793 8l-2.647 2.646a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708 0"/></symbol><symbol class="bi bi-coin" viewBox="0 0 16 16" id="coin"><path d="M5.5 9.511c.076.954.83 1.697 2.182 1.785V12h.6v-.709c1.4-.098 2.218-.846 2.218-1.932 0-.987-.626-1.496-1.745-1.76l-.473-.112V5.57c.6.068.982.396 1.074.85h1.052c-.076-.919-.864-1.638-2.126-1.716V4h-.6v.719c-1.195.117-2.01.836-2.01 1.853 0 .9.606 1.472 1.613 1.707l.397.098v2.034c-.615-.093-1.022-.43-1.114-.9zm2.177-2.166c-.59-.137-.91-.416-.91-.836 0-.47.345-.822.915-.925v1.76h-.005zm.692 1.193c.717.166 1.048.435 1.048.91 0 .542-.412.914-1.135.982V8.518z"/><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M8 13.5a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11m0 .5A6 6 0 1 0 8 2a6 6 0 0 0 0 12"/></symbol><symbol class="bi bi-collection" viewBox="0 0 16 16" id="collection"><path d="M2.5 3.5a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1zm2-2a.5.5 0 0 1 0-1h7a.5.5 0 0 1 0 1zM0 13a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 16 13V6a1.5 1.5 0 0 0-1.5-1.5h-13A1.5 1.5 0 0 0 0 6zm1.5.5A.5.5 0 0 1 1 13V6a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5z"/></symbol><symbol class="bi bi-collection-fill" viewBox="0 0 16 16" id="collection-fill"><path d="M0 13a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 16 13V6a1.5 1.5 0 0 0-1.5-1.5h-13A1.5 1.5 0 0 0 0 6zM2 3a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 0-1h-11A.5.5 0 0 0 2 3m2-2a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7A.5.5 0 0 0 4 1"/></symbol><symbol class="bi bi-collection-play" viewBox="0 0 16 16" id="collection-play"><path d="M2 3a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 0-1h-11A.5.5 0 0 0 2 3m2-2a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7A.5.5 0 0 0 4 1m2.765 5.576A.5.5 0 0 0 6 7v5a.5.5 0 0 0 .765.424l4-2.5a.5.5 0 0 0 0-.848z"/><path d="M1.5 14.5A1.5 1.5 0 0 1 0 13V6a1.5 1.5 0 0 1 1.5-1.5h13A1.5 1.5 0 0 1 16 6v7a1.5 1.5 0 0 1-1.5 1.5zm13-1a.5.5 0 0 0 .5-.5V6a.5.5 0 0 0-.5-.5h-13A.5.5 0 0 0 1 6v7a.5.5 0 0 0 .5.5z"/></symbol><symbol class="bi bi-collection-play-fill" viewBox="0 0 16 16" id="collection-play-fill"><path d="M2.5 3.5a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1zm2-2a.5.5 0 0 1 0-1h7a.5.5 0 0 1 0 1zM0 13a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 16 13V6a1.5 1.5 0 0 0-1.5-1.5h-13A1.5 1.5 0 0 0 0 6zm6.258-6.437a.5.5 0 0 1 .507.013l4 2.5a.5.5 0 0 1 0 .848l-4 2.5A.5.5 0 0 1 6 12V7a.5.5 0 0 1 .258-.437"/></symbol><symbol class="bi bi-columns" viewBox="0 0 16 16" id="columns"><path d="M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm8.5 0v8H15V2zm0 9v3H15v-3zm-1-9H1v3h6.5zM1 14h6.5V6H1z"/></symbol><symbol class="bi bi-columns-gap" viewBox="0 0 16 16" id="columns-gap"><path d="M6 1v3H1V1zM1 0a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm14 12v3h-5v-3zm-5-1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1zM6 8v7H1V8zM1 7a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1zm14-6v7h-5V1zm-5-1a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-command" viewBox="0 0 16 16" id="command"><path d="M3.5 2A1.5 1.5 0 0 1 5 3.5V5H3.5a1.5 1.5 0 1 1 0-3M6 5V3.5A2.5 2.5 0 1 0 3.5 6H5v4H3.5A2.5 2.5 0 1 0 6 12.5V11h4v1.5a2.5 2.5 0 1 0 2.5-2.5H11V6h1.5A2.5 2.5 0 1 0 10 3.5V5zm4 1v4H6V6zm1-1V3.5A1.5 1.5 0 1 1 12.5 5zm0 6h1.5a1.5 1.5 0 1 1-1.5 1.5zm-6 0v1.5A1.5 1.5 0 1 1 3.5 11z"/></symbol><symbol class="bi bi-compass" viewBox="0 0 16 16" id="compass"><path d="M8 16.016a7.5 7.5 0 0 0 1.962-14.74A1 1 0 0 0 9 0H7a1 1 0 0 0-.962 1.276A7.5 7.5 0 0 0 8 16.016m6.5-7.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0"/><path d="m6.94 7.44 4.95-2.83-2.83 4.95-4.949 2.83 2.828-4.95z"/></symbol><symbol class="bi bi-compass-fill" viewBox="0 0 16 16" id="compass-fill"><path d="M15.5 8.516a7.5 7.5 0 1 1-9.462-7.24A1 1 0 0 1 7 0h2a1 1 0 0 1 .962 1.276 7.5 7.5 0 0 1 5.538 7.24m-3.61-3.905L6.94 7.439 4.11 12.39l4.95-2.828 2.828-4.95z"/></symbol><symbol class="bi bi-cone" viewBox="0 0 16 16" id="cone"><path d="M7.03 1.88c.252-1.01 1.688-1.01 1.94 0l2.905 11.62H14a.5.5 0 0 1 0 1H2a.5.5 0 0 1 0-1h2.125z"/></symbol><symbol class="bi bi-cone-striped" viewBox="0 0 16 16" id="cone-striped"><path d="m9.97 4.88.953 3.811C10.159 8.878 9.14 9 8 9s-2.158-.122-2.923-.309L6.03 4.88C6.635 4.957 7.3 5 8 5s1.365-.043 1.97-.12m-.245-.978L8.97.88C8.718-.13 7.282-.13 7.03.88L6.275 3.9C6.8 3.965 7.382 4 8 4s1.2-.036 1.725-.098m4.396 8.613a.5.5 0 0 1 .037.96l-6 2a.5.5 0 0 1-.316 0l-6-2a.5.5 0 0 1 .037-.96l2.391-.598.565-2.257c.862.212 1.964.339 3.165.339s2.303-.127 3.165-.339l.565 2.257z"/></symbol><symbol class="bi bi-controller" viewBox="0 0 16 16" id="controller"><path d="M11.5 6.027a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1.5 1.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2.5-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1.5 1.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m-6.5-3h1v1h1v1h-1v1h-1v-1h-1v-1h1z"/><path d="M3.051 3.26a.5.5 0 0 1 .354-.613l1.932-.518a.5.5 0 0 1 .62.39c.655-.079 1.35-.117 2.043-.117.72 0 1.443.041 2.12.126a.5.5 0 0 1 .622-.399l1.932.518a.5.5 0 0 1 .306.729q.211.136.373.297c.408.408.78 1.05 1.095 1.772.32.733.599 1.591.805 2.466s.34 1.78.364 2.606c.024.816-.059 1.602-.328 2.21a1.42 1.42 0 0 1-1.445.83c-.636-.067-1.115-.394-1.513-.773-.245-.232-.496-.526-.739-.808-.126-.148-.25-.292-.368-.423-.728-.804-1.597-1.527-3.224-1.527s-2.496.723-3.224 1.527c-.119.131-.242.275-.368.423-.243.282-.494.575-.739.808-.398.38-.877.706-1.513.773a1.42 1.42 0 0 1-1.445-.83c-.27-.608-.352-1.395-.329-2.21.024-.826.16-1.73.365-2.606.206-.875.486-1.733.805-2.466.315-.722.687-1.364 1.094-1.772a2.3 2.3 0 0 1 .433-.335l-.028-.079zm2.036.412c-.877.185-1.469.443-1.733.708-.276.276-.587.783-.885 1.465a14 14 0 0 0-.748 2.295 12.4 12.4 0 0 0-.339 2.406c-.022.755.062 1.368.243 1.776a.42.42 0 0 0 .426.24c.327-.034.61-.199.929-.502.212-.202.4-.423.615-.674.133-.156.276-.323.44-.504C4.861 9.969 5.978 9.027 8 9.027s3.139.942 3.965 1.855c.164.181.307.348.44.504.214.251.403.472.615.674.318.303.601.468.929.503a.42.42 0 0 0 .426-.241c.18-.408.265-1.02.243-1.776a12.4 12.4 0 0 0-.339-2.406 14 14 0 0 0-.748-2.295c-.298-.682-.61-1.19-.885-1.465-.264-.265-.856-.523-1.733-.708-.85-.179-1.877-.27-2.913-.27s-2.063.091-2.913.27"/></symbol><symbol class="bi bi-cookie" viewBox="0 0 16 16" id="cookie"><path d="M6 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m4.5.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m-.5 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/><path d="M8 0a7.96 7.96 0 0 0-4.075 1.114q-.245.102-.437.28A8 8 0 1 0 8 0m3.25 14.201a1.5 1.5 0 0 0-2.13.71A7 7 0 0 1 8 15a6.97 6.97 0 0 1-3.845-1.15 1.5 1.5 0 1 0-2.005-2.005A6.97 6.97 0 0 1 1 8c0-1.953.8-3.719 2.09-4.989a1.5 1.5 0 1 0 2.469-1.574A7 7 0 0 1 8 1c1.42 0 2.742.423 3.845 1.15a1.5 1.5 0 1 0 2.005 2.005A6.97 6.97 0 0 1 15 8c0 .596-.074 1.174-.214 1.727a1.5 1.5 0 1 0-1.025 2.25 7 7 0 0 1-2.51 2.224Z"/></symbol><symbol class="bi bi-copy" viewBox="0 0 16 16" id="copy"><path fill-rule="evenodd" d="M4 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 5a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-1h1v1a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h1v1z"/></symbol><symbol class="bi bi-cpu" viewBox="0 0 16 16" id="cpu"><path d="M5 0a.5.5 0 0 1 .5.5V2h1V.5a.5.5 0 0 1 1 0V2h1V.5a.5.5 0 0 1 1 0V2h1V.5a.5.5 0 0 1 1 0V2A2.5 2.5 0 0 1 14 4.5h1.5a.5.5 0 0 1 0 1H14v1h1.5a.5.5 0 0 1 0 1H14v1h1.5a.5.5 0 0 1 0 1H14v1h1.5a.5.5 0 0 1 0 1H14a2.5 2.5 0 0 1-2.5 2.5v1.5a.5.5 0 0 1-1 0V14h-1v1.5a.5.5 0 0 1-1 0V14h-1v1.5a.5.5 0 0 1-1 0V14h-1v1.5a.5.5 0 0 1-1 0V14A2.5 2.5 0 0 1 2 11.5H.5a.5.5 0 0 1 0-1H2v-1H.5a.5.5 0 0 1 0-1H2v-1H.5a.5.5 0 0 1 0-1H2v-1H.5a.5.5 0 0 1 0-1H2A2.5 2.5 0 0 1 4.5 2V.5A.5.5 0 0 1 5 0m-.5 3A1.5 1.5 0 0 0 3 4.5v7A1.5 1.5 0 0 0 4.5 13h7a1.5 1.5 0 0 0 1.5-1.5v-7A1.5 1.5 0 0 0 11.5 3zM5 6.5A1.5 1.5 0 0 1 6.5 5h3A1.5 1.5 0 0 1 11 6.5v3A1.5 1.5 0 0 1 9.5 11h-3A1.5 1.5 0 0 1 5 9.5zM6.5 6a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-cpu-fill" viewBox="0 0 16 16" id="cpu-fill"><path d="M6.5 6a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5z"/><path d="M5.5.5a.5.5 0 0 0-1 0V2A2.5 2.5 0 0 0 2 4.5H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2A2.5 2.5 0 0 0 4.5 14v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14a2.5 2.5 0 0 0 2.5-2.5h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14A2.5 2.5 0 0 0 11.5 2V.5a.5.5 0 0 0-1 0V2h-1V.5a.5.5 0 0 0-1 0V2h-1V.5a.5.5 0 0 0-1 0V2h-1zm1 4.5h3A1.5 1.5 0 0 1 11 6.5v3A1.5 1.5 0 0 1 9.5 11h-3A1.5 1.5 0 0 1 5 9.5v-3A1.5 1.5 0 0 1 6.5 5"/></symbol><symbol class="bi bi-credit-card" viewBox="0 0 16 16" id="credit-card"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v1h14V4a1 1 0 0 0-1-1zm13 4H1v5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/><path d="M2 10a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-credit-card-2-back" viewBox="0 0 16 16" id="credit-card-2-back"><path d="M11 5.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5z"/><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm13 2v5H1V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1m-1 9H2a1 1 0 0 1-1-1v-1h14v1a1 1 0 0 1-1 1"/></symbol><symbol class="bi bi-credit-card-2-back-fill" viewBox="0 0 16 16" id="credit-card-2-back-fill"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5H0zm11.5 1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM0 11v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1z"/></symbol><symbol class="bi bi-credit-card-2-front" viewBox="0 0 16 16" id="credit-card-2-front"><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/><path d="M2 5.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-credit-card-2-front-fill" viewBox="0 0 16 16" id="credit-card-2-front-fill"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2.5 1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm0 3a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm3 0a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm3 0a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm3 0a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-credit-card-fill" viewBox="0 0 16 16" id="credit-card-fill"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1H0zm0 3v5a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7zm3 2h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-crop" viewBox="0 0 16 16" id="crop"><path d="M3.5.5A.5.5 0 0 1 4 1v13h13a.5.5 0 0 1 0 1h-2v2a.5.5 0 0 1-1 0v-2H3.5a.5.5 0 0 1-.5-.5V4H1a.5.5 0 0 1 0-1h2V1a.5.5 0 0 1 .5-.5m2.5 3a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V4H6.5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-crosshair" viewBox="0 0 16 16" id="crosshair"><path d="M8.5.5a.5.5 0 0 0-1 0v.518A7 7 0 0 0 1.018 7.5H.5a.5.5 0 0 0 0 1h.518A7 7 0 0 0 7.5 14.982v.518a.5.5 0 0 0 1 0v-.518A7 7 0 0 0 14.982 8.5h.518a.5.5 0 0 0 0-1h-.518A7 7 0 0 0 8.5 1.018zm-6.48 7A6 6 0 0 1 7.5 2.02v.48a.5.5 0 0 0 1 0v-.48a6 6 0 0 1 5.48 5.48h-.48a.5.5 0 0 0 0 1h.48a6 6 0 0 1-5.48 5.48v-.48a.5.5 0 0 0-1 0v.48A6 6 0 0 1 2.02 8.5h.48a.5.5 0 0 0 0-1zM8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/></symbol><symbol class="bi bi-crosshair2" viewBox="0 0 16 16" id="crosshair2"><path d="M8 0a.5.5 0 0 1 .5.5v.518A7 7 0 0 1 14.982 7.5h.518a.5.5 0 0 1 0 1h-.518A7 7 0 0 1 8.5 14.982v.518a.5.5 0 0 1-1 0v-.518A7 7 0 0 1 1.018 8.5H.5a.5.5 0 0 1 0-1h.518A7 7 0 0 1 7.5 1.018V.5A.5.5 0 0 1 8 0m-.5 2.02A6 6 0 0 0 2.02 7.5h1.005A5 5 0 0 1 7.5 3.025zm1 1.005A5 5 0 0 1 12.975 7.5h1.005A6 6 0 0 0 8.5 2.02zM12.975 8.5A5 5 0 0 1 8.5 12.975v1.005a6 6 0 0 0 5.48-5.48zM7.5 12.975A5 5 0 0 1 3.025 8.5H2.02a6 6 0 0 0 5.48 5.48zM10 8a2 2 0 1 0-4 0 2 2 0 0 0 4 0"/></symbol><symbol class="bi bi-cup" viewBox="0 0 16 16" id="cup"><path fill-rule="evenodd" d="M.11 3.187A.5.5 0 0 1 .5 3h13a.5.5 0 0 1 .488.608l-.22.991a3.001 3.001 0 0 1-1.3 5.854l-.132.59A2.5 2.5 0 0 1 9.896 13H4.104a2.5 2.5 0 0 1-2.44-1.958L.012 3.608a.5.5 0 0 1 .098-.42Zm12.574 6.288a2 2 0 0 0 .866-3.899zM1.124 4l1.516 6.825A1.5 1.5 0 0 0 4.104 12h5.792a1.5 1.5 0 0 0 1.464-1.175L12.877 4H1.123Z"/></symbol><symbol class="bi bi-cup-fill" viewBox="0 0 16 16" id="cup-fill"><path fill-rule="evenodd" d="M.11 3.187A.5.5 0 0 1 .5 3h13a.5.5 0 0 1 .488.608l-.22.991a3.001 3.001 0 0 1-1.3 5.854l-.132.59A2.5 2.5 0 0 1 9.896 13H4.104a2.5 2.5 0 0 1-2.44-1.958L.012 3.608a.5.5 0 0 1 .098-.42Zm12.574 6.288a2 2 0 0 0 .866-3.899z"/></symbol><symbol class="bi bi-cup-hot" viewBox="0 0 16 16" id="cup-hot"><path fill-rule="evenodd" d="M.5 6a.5.5 0 0 0-.488.608l1.652 7.434A2.5 2.5 0 0 0 4.104 16h5.792a2.5 2.5 0 0 0 2.44-1.958l.131-.59a3 3 0 0 0 1.3-5.854l.221-.99A.5.5 0 0 0 13.5 6zM13 12.5a2 2 0 0 1-.316-.025l.867-3.898A2.001 2.001 0 0 1 13 12.5M2.64 13.825 1.123 7h11.754l-1.517 6.825A1.5 1.5 0 0 1 9.896 15H4.104a1.5 1.5 0 0 1-1.464-1.175"/><path d="m4.4.8-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.253.382l-.018.025-.005.008-.002.002A.5.5 0 0 1 3.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 3.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 3 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 4.4.8m3 0-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.253.382l-.018.025-.005.008-.002.002A.5.5 0 0 1 6.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 6.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 6 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 7.4.8m3 0-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.252.382l-.019.025-.005.008-.002.002A.5.5 0 0 1 9.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 9.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 9 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 10.4.8"/></symbol><symbol class="bi bi-cup-hot-fill" viewBox="0 0 16 16" id="cup-hot-fill"><path fill-rule="evenodd" d="M.5 6a.5.5 0 0 0-.488.608l1.652 7.434A2.5 2.5 0 0 0 4.104 16h5.792a2.5 2.5 0 0 0 2.44-1.958l.131-.59a3 3 0 0 0 1.3-5.854l.221-.99A.5.5 0 0 0 13.5 6zM13 12.5a2 2 0 0 1-.316-.025l.867-3.898A2.001 2.001 0 0 1 13 12.5"/><path d="m4.4.8-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.253.382l-.018.025-.005.008-.002.002A.5.5 0 0 1 3.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 3.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 3 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 4.4.8m3 0-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.253.382l-.018.025-.005.008-.002.002A.5.5 0 0 1 6.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 6.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 6 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 7.4.8m3 0-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.252.382l-.019.025-.005.008-.002.002A.5.5 0 0 1 9.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 9.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 9 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 10.4.8"/></symbol><symbol class="bi bi-cup-straw" viewBox="0 0 16 16" id="cup-straw"><path d="M13.902.334a.5.5 0 0 1-.28.65l-2.254.902-.4 1.927c.376.095.715.215.972.367.228.135.56.396.56.82q0 .069-.011.132l-.962 9.068a1.28 1.28 0 0 1-.524.93c-.488.34-1.494.87-3.01.87s-2.522-.53-3.01-.87a1.28 1.28 0 0 1-.524-.93L3.51 5.132A1 1 0 0 1 3.5 5c0-.424.332-.685.56-.82.262-.154.607-.276.99-.372C5.824 3.614 6.867 3.5 8 3.5c.712 0 1.389.045 1.985.127l.464-2.215a.5.5 0 0 1 .303-.356l2.5-1a.5.5 0 0 1 .65.278M9.768 4.607A14 14 0 0 0 8 4.5c-1.076 0-2.033.11-2.707.278A3.3 3.3 0 0 0 4.645 5c.146.073.362.15.648.222C5.967 5.39 6.924 5.5 8 5.5c.571 0 1.109-.03 1.588-.085zm.292 1.756C9.445 6.45 8.742 6.5 8 6.5c-1.133 0-2.176-.114-2.95-.308a6 6 0 0 1-.435-.127l.838 8.03c.013.121.06.186.102.215.357.249 1.168.69 2.438.69s2.081-.441 2.438-.69c.042-.029.09-.094.102-.215l.852-8.03a6 6 0 0 1-.435.127 9 9 0 0 1-.89.17zM4.467 4.884s.003.002.005.006zm7.066 0-.005.006zM11.354 5a3 3 0 0 0-.604-.21l-.099.445.055-.013c.286-.072.502-.149.648-.222"/></symbol><symbol class="bi bi-currency-bitcoin" viewBox="0 0 16 16" id="currency-bitcoin"><path d="M5.5 13v1.25c0 .138.112.25.25.25h1a.25.25 0 0 0 .25-.25V13h.5v1.25c0 .138.112.25.25.25h1a.25.25 0 0 0 .25-.25V13h.084c1.992 0 3.416-1.033 3.416-2.82 0-1.502-1.007-2.323-2.186-2.44v-.088c.97-.242 1.683-.974 1.683-2.19C11.997 3.93 10.847 3 9.092 3H9V1.75a.25.25 0 0 0-.25-.25h-1a.25.25 0 0 0-.25.25V3h-.573V1.75a.25.25 0 0 0-.25-.25H5.75a.25.25 0 0 0-.25.25V3l-1.998.011a.25.25 0 0 0-.25.25v.989c0 .137.11.25.248.25l.755-.005a.75.75 0 0 1 .745.75v5.505a.75.75 0 0 1-.75.75l-.748.011a.25.25 0 0 0-.25.25v1c0 .138.112.25.25.25zm1.427-8.513h1.719c.906 0 1.438.498 1.438 1.312 0 .871-.575 1.362-1.877 1.362h-1.28zm0 4.051h1.84c1.137 0 1.756.58 1.756 1.524 0 .953-.626 1.45-2.158 1.45H6.927z"/></symbol><symbol class="bi bi-currency-dollar" viewBox="0 0 16 16" id="currency-dollar"><path d="M4 10.781c.148 1.667 1.513 2.85 3.591 3.003V15h1.043v-1.216c2.27-.179 3.678-1.438 3.678-3.3 0-1.59-.947-2.51-2.956-3.028l-.722-.187V3.467c1.122.11 1.879.714 2.07 1.616h1.47c-.166-1.6-1.54-2.748-3.54-2.875V1H7.591v1.233c-1.939.23-3.27 1.472-3.27 3.156 0 1.454.966 2.483 2.661 2.917l.61.162v4.031c-1.149-.17-1.94-.8-2.131-1.718zm3.391-3.836c-1.043-.263-1.6-.825-1.6-1.616 0-.944.704-1.641 1.8-1.828v3.495l-.2-.05zm1.591 1.872c1.287.323 1.852.859 1.852 1.769 0 1.097-.826 1.828-2.2 1.939V8.73z"/></symbol><symbol class="bi bi-currency-euro" viewBox="0 0 16 16" id="currency-euro"><path d="M4 9.42h1.063C5.4 12.323 7.317 14 10.34 14c.622 0 1.167-.068 1.659-.185v-1.3c-.484.119-1.045.17-1.659.17-2.1 0-3.455-1.198-3.775-3.264h4.017v-.928H6.497v-.936q-.002-.165.008-.329h4.078v-.927H6.618c.388-1.898 1.719-2.985 3.723-2.985.614 0 1.175.05 1.659.177V2.194A6.6 6.6 0 0 0 10.341 2c-2.928 0-4.82 1.569-5.244 4.3H4v.928h1.01v1.265H4v.928z"/></symbol><symbol class="bi bi-currency-exchange" viewBox="0 0 16 16" id="currency-exchange"><path d="M0 5a5 5 0 0 0 4.027 4.905 6.5 6.5 0 0 1 .544-2.073C3.695 7.536 3.132 6.864 3 5.91h-.5v-.426h.466V5.05q-.001-.07.004-.135H2.5v-.427h.511C3.236 3.24 4.213 2.5 5.681 2.5c.316 0 .59.031.819.085v.733a3.5 3.5 0 0 0-.815-.082c-.919 0-1.538.466-1.734 1.252h1.917v.427h-1.98q-.004.07-.003.147v.422h1.983v.427H3.93c.118.602.468 1.03 1.005 1.229a6.5 6.5 0 0 1 4.97-3.113A5.002 5.002 0 0 0 0 5m16 5.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0m-7.75 1.322c.069.835.746 1.485 1.964 1.562V14h.54v-.62c1.259-.086 1.996-.74 1.996-1.69 0-.865-.563-1.31-1.57-1.54l-.426-.1V8.374c.54.06.884.347.966.745h.948c-.07-.804-.779-1.433-1.914-1.502V7h-.54v.629c-1.076.103-1.808.732-1.808 1.622 0 .787.544 1.288 1.45 1.493l.358.085v1.78c-.554-.08-.92-.376-1.003-.787zm1.96-1.895c-.532-.12-.82-.364-.82-.732 0-.41.311-.719.824-.809v1.54h-.005zm.622 1.044c.645.145.943.38.943.796 0 .474-.37.8-1.02.86v-1.674z"/></symbol><symbol class="bi bi-currency-pound" viewBox="0 0 16 16" id="currency-pound"><path d="M4 8.585h1.969c.115.465.186.939.186 1.43 0 1.385-.736 2.496-2.075 2.771V14H12v-1.24H6.492v-.129c.825-.525 1.135-1.446 1.135-2.694 0-.465-.07-.913-.168-1.352h3.29v-.972H7.22c-.186-.723-.372-1.455-.372-2.247 0-1.274 1.047-2.066 2.58-2.066a5.3 5.3 0 0 1 2.103.465V2.456A5.6 5.6 0 0 0 9.348 2C6.865 2 5.322 3.291 5.322 5.366c0 .775.195 1.515.399 2.247H4z"/></symbol><symbol class="bi bi-currency-rupee" viewBox="0 0 16 16" id="currency-rupee"><path d="M4 3.06h2.726c1.22 0 2.12.575 2.325 1.724H4v1.051h5.051C8.855 7.001 8 7.558 6.788 7.558H4v1.317L8.437 14h2.11L6.095 8.884h.855c2.316-.018 3.465-1.476 3.688-3.049H12V4.784h-1.345c-.08-.778-.357-1.335-.793-1.732H12V2H4z"/></symbol><symbol class="bi bi-currency-yen" viewBox="0 0 16 16" id="currency-yen"><path d="M8.75 14v-2.629h2.446v-.967H8.75v-1.31h2.445v-.967H9.128L12.5 2h-1.699L8.047 7.327h-.086L5.207 2H3.5l3.363 6.127H4.778v.968H7.25v1.31H4.78v.966h2.47V14h1.502z"/></symbol><symbol class="bi bi-cursor" viewBox="0 0 16 16" id="cursor"><path d="M14.082 2.182a.5.5 0 0 1 .103.557L8.528 15.467a.5.5 0 0 1-.917-.007L5.57 10.694.803 8.652a.5.5 0 0 1-.006-.916l12.728-5.657a.5.5 0 0 1 .556.103zM2.25 8.184l3.897 1.67a.5.5 0 0 1 .262.263l1.67 3.897L12.743 3.52z"/></symbol><symbol class="bi bi-cursor-fill" viewBox="0 0 16 16" id="cursor-fill"><path d="M14.082 2.182a.5.5 0 0 1 .103.557L8.528 15.467a.5.5 0 0 1-.917-.007L5.57 10.694.803 8.652a.5.5 0 0 1-.006-.916l12.728-5.657a.5.5 0 0 1 .556.103z"/></symbol><symbol class="bi bi-cursor-text" viewBox="0 0 16 16" id="cursor-text"><path d="M5 2a.5.5 0 0 1 .5-.5c.862 0 1.573.287 2.06.566.174.099.321.198.44.286.119-.088.266-.187.44-.286A4.17 4.17 0 0 1 10.5 1.5a.5.5 0 0 1 0 1c-.638 0-1.177.213-1.564.434a3.5 3.5 0 0 0-.436.294V7.5H9a.5.5 0 0 1 0 1h-.5v4.272c.1.08.248.187.436.294.387.221.926.434 1.564.434a.5.5 0 0 1 0 1 4.17 4.17 0 0 1-2.06-.566A5 5 0 0 1 8 13.65a5 5 0 0 1-.44.285 4.17 4.17 0 0 1-2.06.566.5.5 0 0 1 0-1c.638 0 1.177-.213 1.564-.434.188-.107.335-.214.436-.294V8.5H7a.5.5 0 0 1 0-1h.5V3.228a3.5 3.5 0 0 0-.436-.294A3.17 3.17 0 0 0 5.5 2.5.5.5 0 0 1 5 2m2.648 10.645"/></symbol><symbol class="bi bi-dash" viewBox="0 0 16 16" id="dash"><path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8"/></symbol><symbol class="bi bi-dash-circle" viewBox="0 0 16 16" id="dash-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8"/></symbol><symbol class="bi bi-dash-circle-dotted" viewBox="0 0 16 16" id="dash-circle-dotted"><path d="M8 0q-.264 0-.523.017l.064.998a7 7 0 0 1 .918 0l.064-.998A8 8 0 0 0 8 0M6.44.152q-.52.104-1.012.27l.321.948q.43-.147.884-.237L6.44.153zm4.132.271a8 8 0 0 0-1.011-.27l-.194.98q.453.09.884.237zm1.873.925a8 8 0 0 0-.906-.524l-.443.896q.413.205.793.459zM4.46.824q-.471.233-.905.524l.556.83a7 7 0 0 1 .793-.458zM2.725 1.985q-.394.346-.74.74l.752.66q.303-.345.648-.648zm11.29.74a8 8 0 0 0-.74-.74l-.66.752q.346.303.648.648zm1.161 1.735a8 8 0 0 0-.524-.905l-.83.556q.254.38.458.793l.896-.443zM1.348 3.555q-.292.433-.524.906l.896.443q.205-.413.459-.793zM.423 5.428a8 8 0 0 0-.27 1.011l.98.194q.09-.453.237-.884zM15.848 6.44a8 8 0 0 0-.27-1.012l-.948.321q.147.43.237.884zM.017 7.477a8 8 0 0 0 0 1.046l.998-.064a7 7 0 0 1 0-.918zM16 8a8 8 0 0 0-.017-.523l-.998.064a7 7 0 0 1 0 .918l.998.064A8 8 0 0 0 16 8M.152 9.56q.104.52.27 1.012l.948-.321a7 7 0 0 1-.237-.884l-.98.194zm15.425 1.012q.168-.493.27-1.011l-.98-.194q-.09.453-.237.884zM.824 11.54a8 8 0 0 0 .524.905l.83-.556a7 7 0 0 1-.458-.793zm13.828.905q.292-.434.524-.906l-.896-.443q-.205.413-.459.793zm-12.667.83q.346.394.74.74l.66-.752a7 7 0 0 1-.648-.648zm11.29.74q.394-.346.74-.74l-.752-.66q-.302.346-.648.648zm-1.735 1.161q.471-.233.905-.524l-.556-.83a7 7 0 0 1-.793.458zm-7.985-.524q.434.292.906.524l.443-.896a7 7 0 0 1-.793-.459zm1.873.925q.493.168 1.011.27l.194-.98a7 7 0 0 1-.884-.237zm4.132.271a8 8 0 0 0 1.012-.27l-.321-.948a7 7 0 0 1-.884.237l.194.98zm-2.083.135a8 8 0 0 0 1.046 0l-.064-.998a7 7 0 0 1-.918 0zM4.5 7.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-dash-circle-fill" viewBox="0 0 16 16" id="dash-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M4.5 7.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-dash-lg" viewBox="0 0 16 16" id="dash-lg"><path fill-rule="evenodd" d="M2 8a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11A.5.5 0 0 1 2 8"/></symbol><symbol class="bi bi-dash-square" viewBox="0 0 16 16" id="dash-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8"/></symbol><symbol class="bi bi-dash-square-dotted" viewBox="0 0 16 16" id="dash-square-dotted"><path d="M2.5 0q-.25 0-.487.048l.194.98A1.5 1.5 0 0 1 2.5 1h.458V0zm2.292 0h-.917v1h.917zm1.833 0h-.917v1h.917zm1.833 0h-.916v1h.916zm1.834 0h-.917v1h.917zm1.833 0h-.917v1h.917zM13.5 0h-.458v1h.458q.151 0 .293.029l.194-.981A2.5 2.5 0 0 0 13.5 0m2.079 1.11a2.5 2.5 0 0 0-.69-.689l-.556.831q.248.167.415.415l.83-.556zM1.11.421a2.5 2.5 0 0 0-.689.69l.831.556c.11-.164.251-.305.415-.415zM16 2.5q0-.25-.048-.487l-.98.194q.027.141.028.293v.458h1zM.048 2.013A2.5 2.5 0 0 0 0 2.5v.458h1V2.5q0-.151.029-.293zM0 3.875v.917h1v-.917zm16 .917v-.917h-1v.917zM0 5.708v.917h1v-.917zm16 .917v-.917h-1v.917zM0 7.542v.916h1v-.916zm15 .916h1v-.916h-1zM0 9.375v.917h1v-.917zm16 .917v-.917h-1v.917zm-16 .916v.917h1v-.917zm16 .917v-.917h-1v.917zm-16 .917v.458q0 .25.048.487l.98-.194A1.5 1.5 0 0 1 1 13.5v-.458zm16 .458v-.458h-1v.458q0 .151-.029.293l.981.194Q16 13.75 16 13.5M.421 14.89c.183.272.417.506.69.689l.556-.831a1.5 1.5 0 0 1-.415-.415zm14.469.689c.272-.183.506-.417.689-.69l-.831-.556c-.11.164-.251.305-.415.415l.556.83zm-12.877.373Q2.25 16 2.5 16h.458v-1H2.5q-.151 0-.293-.029zM13.5 16q.25 0 .487-.048l-.194-.98A1.5 1.5 0 0 1 13.5 15h-.458v1zm-9.625 0h.917v-1h-.917zm1.833 0h.917v-1h-.917zm1.834 0h.916v-1h-.916zm1.833 0h.917v-1h-.917zm1.833 0h.917v-1h-.917zM4.5 7.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-dash-square-fill" viewBox="0 0 16 16" id="dash-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm2.5 7.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-database" viewBox="0 0 16 16" id="database"><path d="M4.318 2.687C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4c0-.374.356-.875 1.318-1.313M13 5.698V7c0 .374-.356.875-1.318 1.313C10.766 8.729 9.464 9 8 9s-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777A5 5 0 0 0 13 5.698M14 4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16s3.022-.289 4.096-.777C13.125 14.755 14 14.007 14 13zm-1 4.698V10c0 .374-.356.875-1.318 1.313C10.766 11.729 9.464 12 8 12s-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10s3.022-.289 4.096-.777A5 5 0 0 0 13 8.698m0 3V13c0 .374-.356.875-1.318 1.313C10.766 14.729 9.464 15 8 15s-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13s3.022-.289 4.096-.777c.324-.147.633-.323.904-.525"/></symbol><symbol class="bi bi-database-add" viewBox="0 0 16 16" id="database-add"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0"/><path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/></symbol><symbol class="bi bi-database-check" viewBox="0 0 16 16" id="database-check"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514"/><path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/></symbol><symbol class="bi bi-database-dash" viewBox="0 0 16 16" id="database-dash"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1"/><path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/></symbol><symbol class="bi bi-database-down" viewBox="0 0 16 16" id="database-down"><path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0"/><path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/></symbol><symbol class="bi bi-database-exclamation" viewBox="0 0 16 16" id="database-exclamation"><path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/></symbol><symbol class="bi bi-database-fill" viewBox="0 0 16 16" id="database-fill"><path d="M3.904 1.777C4.978 1.289 6.427 1 8 1s3.022.289 4.096.777C13.125 2.245 14 2.993 14 4s-.875 1.755-1.904 2.223C11.022 6.711 9.573 7 8 7s-3.022-.289-4.096-.777C2.875 5.755 2 5.007 2 4s.875-1.755 1.904-2.223"/><path d="M2 6.161V7c0 1.007.875 1.755 1.904 2.223C4.978 9.71 6.427 10 8 10s3.022-.289 4.096-.777C13.125 8.755 14 8.007 14 7v-.839c-.457.432-1.004.751-1.49.972C11.278 7.693 9.682 8 8 8s-3.278-.307-4.51-.867c-.486-.22-1.033-.54-1.49-.972"/><path d="M2 9.161V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13s3.022-.289 4.096-.777C13.125 11.755 14 11.007 14 10v-.839c-.457.432-1.004.751-1.49.972-1.232.56-2.828.867-4.51.867s-3.278-.307-4.51-.867c-.486-.22-1.033-.54-1.49-.972"/><path d="M2 12.161V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16s3.022-.289 4.096-.777C13.125 14.755 14 14.007 14 13v-.839c-.457.432-1.004.751-1.49.972-1.232.56-2.828.867-4.51.867s-3.278-.307-4.51-.867c-.486-.22-1.033-.54-1.49-.972"/></symbol><symbol class="bi bi-database-fill-add" viewBox="0 0 16 16" id="database-fill-add"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/><path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/></symbol><symbol class="bi bi-database-fill-check" viewBox="0 0 16 16" id="database-fill-check"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/><path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/></symbol><symbol class="bi bi-database-fill-dash" viewBox="0 0 16 16" id="database-fill-dash"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/><path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/></symbol><symbol class="bi bi-database-fill-down" viewBox="0 0 16 16" id="database-fill-down"><path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/><path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/></symbol><symbol class="bi bi-database-fill-exclamation" viewBox="0 0 16 16" id="database-fill-exclamation"><path d="M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/><path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/></symbol><symbol class="bi bi-database-fill-gear" viewBox="0 0 16 16" id="database-fill-gear"><path d="M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/><path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905m3.631-4.538c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/></symbol><symbol class="bi bi-database-fill-lock" viewBox="0 0 16 16" id="database-fill-lock"><path d="M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/><path d="M3.904 9.223C2.875 8.755 2 8.007 2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.5 4.5 0 0 0-1.364-.125 3 3 0 0 0-2.197.731 4.5 4.5 0 0 0-1.254 1.237A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777M8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16q.134 0 .266-.003A2 2 0 0 1 8 15zm0-1.5q0 .15.01.3A2 2 0 0 0 8 13c-1.573 0-3.022-.289-4.096-.777C2.875 11.755 2 11.007 2 10v-.839c.457.432 1.004.751 1.49.972C4.722 10.693 6.318 11 8 11q.13 0 .257-.002A4.5 4.5 0 0 0 8 12.5"/><path d="M9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-database-fill-slash" viewBox="0 0 16 16" id="database-fill-slash"><path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95ZM8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/><path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/></symbol><symbol class="bi bi-database-fill-up" viewBox="0 0 16 16" id="database-fill-up"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/><path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/></symbol><symbol class="bi bi-database-fill-x" viewBox="0 0 16 16" id="database-fill-x"><path d="M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/><path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/></symbol><symbol class="bi bi-database-gear" viewBox="0 0 16 16" id="database-gear"><path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/><path d="M11.886 9.46c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/></symbol><symbol class="bi bi-database-lock" viewBox="0 0 16 16" id="database-lock"><path d="M13 5.698a5 5 0 0 1-.904.525C11.022 6.711 9.573 7 8 7s-3.022-.289-4.096-.777A5 5 0 0 1 3 5.698V7c0 .374.356.875 1.318 1.313C5.234 8.729 6.536 9 8 9c.666 0 1.298-.056 1.876-.156-.43.31-.804.693-1.102 1.132A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777A5 5 0 0 1 3 8.698V10c0 .374.356.875 1.318 1.313C5.234 11.729 6.536 12 8 12h.027a4.6 4.6 0 0 0-.017.8A2 2 0 0 0 8 13c-1.573 0-3.022-.289-4.096-.777A5 5 0 0 1 3 11.698V13c0 .374.356.875 1.318 1.313C5.234 14.729 6.536 15 8 15c0 .363.097.704.266.997Q8.134 16.001 8 16c-1.573 0-3.022-.289-4.096-.777C2.875 14.755 2 14.007 2 13V4c0-1.007.875-1.755 1.904-2.223C4.978 1.289 6.427 1 8 1s3.022.289 4.096.777C13.125 2.245 14 2.993 14 4v4.256a4.5 4.5 0 0 0-1.753-.249C12.787 7.654 13 7.289 13 7zm-8.682-3.01C3.356 3.124 3 3.625 3 4c0 .374.356.875 1.318 1.313C5.234 5.729 6.536 6 8 6s2.766-.27 3.682-.687C12.644 4.875 13 4.373 13 4c0-.374-.356-.875-1.318-1.313C10.766 2.271 9.464 2 8 2s-2.766.27-3.682.687Z"/><path d="M9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-database-slash" viewBox="0 0 16 16" id="database-slash"><path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95Z"/><path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/></symbol><symbol class="bi bi-database-up" viewBox="0 0 16 16" id="database-up"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0"/><path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/></symbol><symbol class="bi bi-database-x" viewBox="0 0 16 16" id="database-x"><path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/></symbol><symbol class="bi bi-device-hdd" viewBox="0 0 16 16" id="device-hdd"><path d="M12 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 11a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-7.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M5 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M8 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/><path d="M12 7a4 4 0 0 1-3.937 4c-.537.813-1.02 1.515-1.181 1.677a1.102 1.102 0 0 1-1.56-1.559c.1-.098.396-.314.795-.588A4 4 0 0 1 8 3a4 4 0 0 1 4 4m-1 0a3 3 0 1 0-3.891 2.865c.667-.44 1.396-.91 1.955-1.268.224-.144.483.115.34.34l-.62.96A3 3 0 0 0 11 7"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-device-hdd-fill" viewBox="0 0 16 16" id="device-hdd-fill"><path d="M8.785 9.896A3.001 3.001 0 0 0 8 4a3 3 0 0 0-.891 5.865c.667-.44 1.396-.91 1.955-1.268.224-.144.483.115.34.34zM9 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm9 1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 13a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-9.5.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1M4 1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m2.882 11.177a1.102 1.102 0 0 1-1.56-1.559c.1-.098.396-.314.795-.588a4 4 0 1 1 1.946.47c-.537.813-1.02 1.515-1.181 1.677"/></symbol><symbol class="bi bi-device-ssd" viewBox="0 0 16 16" id="device-ssd"><path d="M4.75 4a.75.75 0 0 0-.75.75v3.5c0 .414.336.75.75.75h6.5a.75.75 0 0 0 .75-.75v-3.5a.75.75 0 0 0-.75-.75zM5 8V5h6v3zm0-5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m7 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M4.5 11a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m7 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm11 12V2a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1v-2a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2a1 1 0 0 0 1-1m-7.25 1v-2H5v2zm1.75 0v-2h-.75v2zm1.75 0v-2H8.5v2zM11 13h-.75v2H11z"/></symbol><symbol class="bi bi-device-ssd-fill" viewBox="0 0 16 16" id="device-ssd-fill"><path d="M5 8V4h6v4z"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m9 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M3.5 11a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m9.5-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M4.75 3h6.5a.75.75 0 0 1 .75.75v4.5a.75.75 0 0 1-.75.75h-6.5A.75.75 0 0 1 4 8.25v-4.5A.75.75 0 0 1 4.75 3M5 12h6a1 1 0 0 1 1 1v2h-1v-2h-.75v2h-1v-2H8.5v2h-1v-2h-.75v2h-1v-2H5v2H4v-2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-diagram-2" viewBox="0 0 16 16" id="diagram-2"><path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H11a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 5 7h2.5V6A1.5 1.5 0 0 1 6 4.5zM8.5 5a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5zM3 11.5A1.5 1.5 0 0 1 4.5 10h1A1.5 1.5 0 0 1 7 11.5v1A1.5 1.5 0 0 1 5.5 14h-1A1.5 1.5 0 0 1 3 12.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm4.5.5a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1A1.5 1.5 0 0 1 9 12.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-diagram-2-fill" viewBox="0 0 16 16" id="diagram-2-fill"><path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H11a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 5 7h2.5V6A1.5 1.5 0 0 1 6 4.5zm-3 8A1.5 1.5 0 0 1 4.5 10h1A1.5 1.5 0 0 1 7 11.5v1A1.5 1.5 0 0 1 5.5 14h-1A1.5 1.5 0 0 1 3 12.5zm6 0a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1A1.5 1.5 0 0 1 9 12.5z"/></symbol><symbol class="bi bi-diagram-3" viewBox="0 0 16 16" id="diagram-3"><path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H14a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 2 7h5.5V6A1.5 1.5 0 0 1 6 4.5zM8.5 5a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5zM0 11.5A1.5 1.5 0 0 1 1.5 10h1A1.5 1.5 0 0 1 4 11.5v1A1.5 1.5 0 0 1 2.5 14h-1A1.5 1.5 0 0 1 0 12.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm4.5.5A1.5 1.5 0 0 1 7.5 10h1a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm4.5.5a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-diagram-3-fill" viewBox="0 0 16 16" id="diagram-3-fill"><path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H14a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 2 7h5.5V6A1.5 1.5 0 0 1 6 4.5zm-6 8A1.5 1.5 0 0 1 1.5 10h1A1.5 1.5 0 0 1 4 11.5v1A1.5 1.5 0 0 1 2.5 14h-1A1.5 1.5 0 0 1 0 12.5zm6 0A1.5 1.5 0 0 1 7.5 10h1a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5zm6 0a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5z"/></symbol><symbol class="bi bi-diamond" viewBox="0 0 16 16" id="diamond"><path d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134z"/></symbol><symbol class="bi bi-diamond-fill" viewBox="0 0 16 16" id="diamond-fill"><path fill-rule="evenodd" d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098z"/></symbol><symbol class="bi bi-diamond-half" viewBox="0 0 16 16" id="diamond-half"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM8 .989c.127 0 .253.049.35.145l6.516 6.516a.495.495 0 0 1 0 .7L8.35 14.866a.5.5 0 0 1-.35.145z"/></symbol><symbol class="bi bi-dice-1" viewBox="0 0 16 16" id="dice-1"><circle cx="8" cy="8" r="1.5"/><path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/></symbol><symbol class="bi bi-dice-1-fill" viewBox="0 0 16 16" id="dice-1-fill"><path d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3zm5 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></symbol><symbol class="bi bi-dice-2" viewBox="0 0 16 16" id="dice-2"><path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/><path d="M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/></symbol><symbol class="bi bi-dice-2-fill" viewBox="0 0 16 16" id="dice-2-fill"><path d="M0 3a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3zm5.5 1a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0m6.5 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/></symbol><symbol class="bi bi-dice-3" viewBox="0 0 16 16" id="dice-3"><path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/><path d="M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-4-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/></symbol><symbol class="bi bi-dice-3-fill" viewBox="0 0 16 16" id="dice-3-fill"><path d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3zm2.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M8 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></symbol><symbol class="bi bi-dice-4" viewBox="0 0 16 16" id="dice-4"><path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/><path d="M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/></symbol><symbol class="bi bi-dice-4-fill" viewBox="0 0 16 16" id="dice-4-fill"><path d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3zm1 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m8 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m1.5 6.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M4 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></symbol><symbol class="bi bi-dice-5" viewBox="0 0 16 16" id="dice-5"><path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/><path d="M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m4-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/></symbol><symbol class="bi bi-dice-5-fill" viewBox="0 0 16 16" id="dice-5-fill"><path d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3zm2.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M8 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></symbol><symbol class="bi bi-dice-6" viewBox="0 0 16 16" id="dice-6"><path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/><path d="M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-8 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/></symbol><symbol class="bi bi-dice-6-fill" viewBox="0 0 16 16" id="dice-6-fill"><path d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3zm1 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m8 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m1.5 6.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M12 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M4 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></symbol><symbol class="bi bi-disc" viewBox="0 0 16 16" id="disc"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0M8 4a4 4 0 0 0-4 4 .5.5 0 0 1-1 0 5 5 0 0 1 5-5 .5.5 0 0 1 0 1m4.5 3.5a.5.5 0 0 1 .5.5 5 5 0 0 1-5 5 .5.5 0 0 1 0-1 4 4 0 0 0 4-4 .5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-disc-fill" viewBox="0 0 16 16" id="disc-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-6 0a2 2 0 1 0-4 0 2 2 0 0 0 4 0M4 8a4 4 0 0 1 4-4 .5.5 0 0 0 0-1 5 5 0 0 0-5 5 .5.5 0 0 0 1 0m9 0a.5.5 0 1 0-1 0 4 4 0 0 1-4 4 .5.5 0 0 0 0 1 5 5 0 0 0 5-5"/></symbol><symbol class="bi bi-discord" viewBox="0 0 16 16" id="discord"><path d="M13.545 2.907a13.2 13.2 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.2 12.2 0 0 0-3.658 0 8 8 0 0 0-.412-.833.05.05 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.04.04 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032q.003.022.021.037a13.3 13.3 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019q.463-.63.818-1.329a.05.05 0 0 0-.01-.059l-.018-.011a9 9 0 0 1-1.248-.595.05.05 0 0 1-.02-.066l.015-.019q.127-.095.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.05.05 0 0 1 .053.007q.121.1.248.195a.05.05 0 0 1-.004.085 8 8 0 0 1-1.249.594.05.05 0 0 0-.03.03.05.05 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.2 13.2 0 0 0 4.001-2.02.05.05 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.03.03 0 0 0-.02-.019m-8.198 7.307c-.789 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612m5.316 0c-.788 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612"/></symbol><symbol class="bi bi-display" viewBox="0 0 16 16" id="display"><path d="M0 4s0-2 2-2h12s2 0 2 2v6s0 2-2 2h-4q0 1 .25 1.5H11a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1h.75Q6 13 6 12H2s-2 0-2-2zm1.398-.855a.76.76 0 0 0-.254.302A1.5 1.5 0 0 0 1 4.01V10c0 .325.078.502.145.602q.105.156.302.254a1.5 1.5 0 0 0 .538.143L2.01 11H14c.325 0 .502-.078.602-.145a.76.76 0 0 0 .254-.302 1.5 1.5 0 0 0 .143-.538L15 9.99V4c0-.325-.078-.502-.145-.602a.76.76 0 0 0-.302-.254A1.5 1.5 0 0 0 13.99 3H2c-.325 0-.502.078-.602.145"/></symbol><symbol class="bi bi-display-fill" viewBox="0 0 16 16" id="display-fill"><path d="M6 12q0 1-.25 1.5H5a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1h-.75Q10 13 10 12h4c2 0 2-2 2-2V4c0-2-2-2-2-2H2C0 2 0 4 0 4v6c0 2 2 2 2 2z"/></symbol><symbol class="bi bi-displayport" viewBox="0 0 16 16" id="displayport"><path d="M2.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 1 0V8h10v.5a.5.5 0 0 0 1 0v-1a.5.5 0 0 0-.5-.5z"/><path d="M1 5a1 1 0 0 0-1 1v3.191a1 1 0 0 0 .553.894l1.618.81a1 1 0 0 0 .447.105H15a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm0 1h14v4H2.618L1 9.191z"/></symbol><symbol class="bi bi-displayport-fill" viewBox="0 0 16 16" id="displayport-fill"><path d="M1 5a1 1 0 0 0-1 1v3.191a1 1 0 0 0 .553.894l1.618.81a1 1 0 0 0 .447.105H15a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm1.5 2h11a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8H3v.5a.5.5 0 0 1-1 0v-1a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-distribute-horizontal" viewBox="0 0 16 16" id="distribute-horizontal"><path fill-rule="evenodd" d="M14.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5m-13 0a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5"/><path d="M6 13a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z"/></symbol><symbol class="bi bi-distribute-vertical" viewBox="0 0 16 16" id="distribute-vertical"><path fill-rule="evenodd" d="M1 1.5a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 0-1h-13a.5.5 0 0 0-.5.5m0 13a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 0-1h-13a.5.5 0 0 0-.5.5"/><path d="M2 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-door-closed" viewBox="0 0 16 16" id="door-closed"><path d="M3 2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v13h1.5a.5.5 0 0 1 0 1h-13a.5.5 0 0 1 0-1H3zm1 13h8V2H4z"/><path d="M9 9a1 1 0 1 0 2 0 1 1 0 0 0-2 0"/></symbol><symbol class="bi bi-door-closed-fill" viewBox="0 0 16 16" id="door-closed-fill"><path d="M12 1a1 1 0 0 1 1 1v13h1.5a.5.5 0 0 1 0 1h-13a.5.5 0 0 1 0-1H3V2a1 1 0 0 1 1-1zm-2 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-door-open" viewBox="0 0 16 16" id="door-open"><path d="M8.5 10c-.276 0-.5-.448-.5-1s.224-1 .5-1 .5.448.5 1-.224 1-.5 1"/><path d="M10.828.122A.5.5 0 0 1 11 .5V1h.5A1.5 1.5 0 0 1 13 2.5V15h1.5a.5.5 0 0 1 0 1h-13a.5.5 0 0 1 0-1H3V1.5a.5.5 0 0 1 .43-.495l7-1a.5.5 0 0 1 .398.117M11.5 2H11v13h1V2.5a.5.5 0 0 0-.5-.5M4 1.934V15h6V1.077z"/></symbol><symbol class="bi bi-door-open-fill" viewBox="0 0 16 16" id="door-open-fill"><path d="M1.5 15a.5.5 0 0 0 0 1h13a.5.5 0 0 0 0-1H13V2.5A1.5 1.5 0 0 0 11.5 1H11V.5a.5.5 0 0 0-.57-.495l-7 1A.5.5 0 0 0 3 1.5V15zM11 2h.5a.5.5 0 0 1 .5.5V15h-1zm-2.5 8c-.276 0-.5-.448-.5-1s.224-1 .5-1 .5.448.5 1-.224 1-.5 1"/></symbol><symbol class="bi bi-dot" viewBox="0 0 16 16" id="dot"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/></symbol><symbol class="bi bi-download" viewBox="0 0 16 16" id="download"><path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/><path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708z"/></symbol><symbol class="bi bi-dpad" viewBox="0 0 16 16" id="dpad"><path d="m7.788 2.34-.799 1.278A.25.25 0 0 0 7.201 4h1.598a.25.25 0 0 0 .212-.382l-.799-1.279a.25.25 0 0 0-.424 0Zm0 11.32-.799-1.277A.25.25 0 0 1 7.201 12h1.598a.25.25 0 0 1 .212.383l-.799 1.278a.25.25 0 0 1-.424 0ZM3.617 9.01 2.34 8.213a.25.25 0 0 1 0-.424l1.278-.799A.25.25 0 0 1 4 7.201V8.8a.25.25 0 0 1-.383.212Zm10.043-.798-1.277.799A.25.25 0 0 1 12 8.799V7.2a.25.25 0 0 1 .383-.212l1.278.799a.25.25 0 0 1 0 .424Z"/><path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v3a.5.5 0 0 1-.5.5h-3A1.5 1.5 0 0 0 0 6.5v3A1.5 1.5 0 0 0 1.5 11h3a.5.5 0 0 1 .5.5v3A1.5 1.5 0 0 0 6.5 16h3a1.5 1.5 0 0 0 1.5-1.5v-3a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 0 16 9.5v-3A1.5 1.5 0 0 0 14.5 5h-3a.5.5 0 0 1-.5-.5v-3A1.5 1.5 0 0 0 9.5 0zM6 1.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v3A1.5 1.5 0 0 0 11.5 6h3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-3a1.5 1.5 0 0 0-1.5 1.5v3a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-3A1.5 1.5 0 0 0 4.5 10h-3a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 0 6 4.5z"/></symbol><symbol class="bi bi-dpad-fill" viewBox="0 0 16 16" id="dpad-fill"><path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v3a.5.5 0 0 1-.5.5h-3A1.5 1.5 0 0 0 0 6.5v3A1.5 1.5 0 0 0 1.5 11h3a.5.5 0 0 1 .5.5v3A1.5 1.5 0 0 0 6.5 16h3a1.5 1.5 0 0 0 1.5-1.5v-3a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 0 16 9.5v-3A1.5 1.5 0 0 0 14.5 5h-3a.5.5 0 0 1-.5-.5v-3A1.5 1.5 0 0 0 9.5 0zm1.288 2.34a.25.25 0 0 1 .424 0l.799 1.278A.25.25 0 0 1 8.799 4H7.201a.25.25 0 0 1-.212-.382zm0 11.32-.799-1.277A.25.25 0 0 1 7.201 12H8.8a.25.25 0 0 1 .212.383l-.799 1.278a.25.25 0 0 1-.424 0Zm-4.17-4.65-1.279-.798a.25.25 0 0 1 0-.424l1.279-.799A.25.25 0 0 1 4 7.201V8.8a.25.25 0 0 1-.382.212Zm10.043-.798-1.278.799A.25.25 0 0 1 12 8.799V7.2a.25.25 0 0 1 .383-.212l1.278.799a.25.25 0 0 1 0 .424Z"/></symbol><symbol class="bi bi-dribbble" viewBox="0 0 16 16" id="dribbble"><path fill-rule="evenodd" d="M8 0C3.584 0 0 3.584 0 8s3.584 8 8 8c4.408 0 8-3.584 8-8s-3.592-8-8-8m5.284 3.688a6.8 6.8 0 0 1 1.545 4.251c-.226-.043-2.482-.503-4.755-.217-.052-.112-.096-.234-.148-.355-.139-.33-.295-.668-.451-.99 2.516-1.023 3.662-2.498 3.81-2.69zM8 1.18c1.735 0 3.323.65 4.53 1.718-.122.174-1.155 1.553-3.584 2.464-1.12-2.056-2.36-3.74-2.551-4A7 7 0 0 1 8 1.18m-2.907.642A43 43 0 0 1 7.627 5.77c-3.193.85-6.013.833-6.317.833a6.87 6.87 0 0 1 3.783-4.78zM1.163 8.01V7.8c.295.01 3.61.053 7.02-.971.199.381.381.772.555 1.162l-.27.078c-3.522 1.137-5.396 4.243-5.553 4.504a6.82 6.82 0 0 1-1.752-4.564zM8 14.837a6.8 6.8 0 0 1-4.19-1.44c.12-.252 1.509-2.924 5.361-4.269.018-.009.026-.009.044-.017a28.3 28.3 0 0 1 1.457 5.18A6.7 6.7 0 0 1 8 14.837m3.81-1.171c-.07-.417-.435-2.412-1.328-4.868 2.143-.338 4.017.217 4.251.295a6.77 6.77 0 0 1-2.924 4.573z"/></symbol><symbol class="bi bi-dropbox" viewBox="0 0 16 16" id="dropbox"><path d="M8.01 4.555 4.005 7.11 8.01 9.665 4.005 12.22 0 9.651l4.005-2.555L0 4.555 4.005 2zm-4.026 8.487 4.006-2.555 4.005 2.555-4.005 2.555zm4.026-3.39 4.005-2.556L8.01 4.555 11.995 2 16 4.555 11.995 7.11 16 9.665l-4.005 2.555z"/></symbol><symbol class="bi bi-droplet" viewBox="0 0 16 16" id="droplet"><path fill-rule="evenodd" d="M7.21.8C7.69.295 8 0 8 0q.164.544.371 1.038c.812 1.946 2.073 3.35 3.197 4.6C12.878 7.096 14 8.345 14 10a6 6 0 0 1-12 0C2 6.668 5.58 2.517 7.21.8m.413 1.021A31 31 0 0 0 5.794 3.99c-.726.95-1.436 2.008-1.96 3.07C3.304 8.133 3 9.138 3 10a5 5 0 0 0 10 0c0-1.201-.796-2.157-2.181-3.7l-.03-.032C9.75 5.11 8.5 3.72 7.623 1.82z"/><path fill-rule="evenodd" d="M4.553 7.776c.82-1.641 1.717-2.753 2.093-3.13l.708.708c-.29.29-1.128 1.311-1.907 2.87z"/></symbol><symbol class="bi bi-droplet-fill" viewBox="0 0 16 16" id="droplet-fill"><path d="M8 16a6 6 0 0 0 6-6c0-1.655-1.122-2.904-2.432-4.362C10.254 4.176 8.75 2.503 8 0c0 0-6 5.686-6 10a6 6 0 0 0 6 6M6.646 4.646l.708.708c-.29.29-1.128 1.311-1.907 2.87l-.894-.448c.82-1.641 1.717-2.753 2.093-3.13"/></symbol><symbol class="bi bi-droplet-half" viewBox="0 0 16 16" id="droplet-half"><path fill-rule="evenodd" d="M7.21.8C7.69.295 8 0 8 0q.164.544.371 1.038c.812 1.946 2.073 3.35 3.197 4.6C12.878 7.096 14 8.345 14 10a6 6 0 0 1-12 0C2 6.668 5.58 2.517 7.21.8m.413 1.021A31 31 0 0 0 5.794 3.99c-.726.95-1.436 2.008-1.96 3.07C3.304 8.133 3 9.138 3 10c0 0 2.5 1.5 5 .5s5-.5 5-.5c0-1.201-.796-2.157-2.181-3.7l-.03-.032C9.75 5.11 8.5 3.72 7.623 1.82z"/><path fill-rule="evenodd" d="M4.553 7.776c.82-1.641 1.717-2.753 2.093-3.13l.708.708c-.29.29-1.128 1.311-1.907 2.87z"/></symbol><symbol class="bi bi-duffle" viewBox="0 0 16 16" id="duffle"><path d="M8 5.75c1.388 0 2.673.193 3.609.385a18 18 0 0 1 1.43.354l.112.034.002.001h.001a.5.5 0 0 1-.308.952l-.004-.002-.018-.005a17 17 0 0 0-1.417-.354A17.3 17.3 0 0 0 8 6.75a17.3 17.3 0 0 0-3.408.365 17 17 0 0 0-1.416.354l-.018.005-.003.001a.5.5 0 1 1-.308-.95A17.3 17.3 0 0 1 8 5.75"/><path d="M5.229 2.722c-.126.461-.19.945-.222 1.375-1.401.194-2.65.531-3.525 1.012C-.644 6.278.036 11.204.393 13.127a.954.954 0 0 0 .95.772h13.314a.954.954 0 0 0 .95-.772c.357-1.923 1.037-6.85-1.09-8.018-.873-.48-2.123-.818-3.524-1.012a7.4 7.4 0 0 0-.222-1.375c-.162-.593-.445-1.228-.971-1.622-1.115-.836-2.485-.836-3.6 0-.526.394-.81 1.03-.971 1.622M9.2 1.9c.26.195.466.57.606 1.085.088.322.142.667.173.998a23.3 23.3 0 0 0-3.958 0 6 6 0 0 1 .173-.998c.14-.515.346-.89.606-1.085.76-.57 1.64-.57 2.4 0M8 4.9c2.475 0 4.793.402 6.036 1.085.238.13.472.406.655.93.183.522.28 1.195.303 1.952.047 1.486-.189 3.088-.362 4.032H1.368c-.173-.944-.409-2.545-.362-4.032.024-.757.12-1.43.303-1.952.183-.524.417-.8.655-.93C3.207 5.302 5.525 4.9 8 4.9"/></symbol><symbol class="bi bi-duffle-fill" viewBox="0 0 16 16" id="duffle-fill"><path d="M5.007 4.097q.011-.146.027-.298c.05-.464.141-.979.313-1.45.169-.465.432-.933.853-1.249 1.115-.836 2.485-.836 3.6 0 .42.316.684.784.853 1.25.171.47.263.985.313 1.449q.016.15.027.298c1.401.194 2.65.531 3.525 1.012 2.126 1.169 1.446 6.095 1.089 8.018a.954.954 0 0 1-.95.772H1.343a.954.954 0 0 1-.95-.772c-.357-1.923-1.037-6.85 1.09-8.018.873-.48 2.123-.818 3.524-1.012M4.05 5.633a22 22 0 0 0-1.565.352l-.091.026-.034.01a.5.5 0 0 0 .282.959l.005-.002.02-.005.08-.023a21 21 0 0 1 1.486-.334A21 21 0 0 1 8 6.25c1.439 0 2.781.183 3.767.367a21 21 0 0 1 1.567.356l.02.005.004.001a.5.5 0 0 0 .283-.959h-.003l-.006-.002-.025-.007a15 15 0 0 0-.43-.113 22 22 0 0 0-1.226-.265A22 22 0 0 0 8 5.25c-1.518 0-2.926.192-3.95.383M6.8 1.9c-.203.153-.377.42-.513.791a5.3 5.3 0 0 0-.265 1.292 35 35 0 0 1 1.374-.076c.866-.022 1.742.003 2.584.076a5.3 5.3 0 0 0-.266-1.292c-.135-.372-.309-.638-.513-.791-.76-.57-1.64-.57-2.4 0Z"/></symbol><symbol class="bi bi-ear" viewBox="0 0 16 16" id="ear"><path d="M8.5 1A4.5 4.5 0 0 0 4 5.5v7.047a2.453 2.453 0 0 0 4.75.861l.512-1.363a5.6 5.6 0 0 1 .816-1.46l2.008-2.581A4.34 4.34 0 0 0 8.66 1zM3 5.5A5.5 5.5 0 0 1 8.5 0h.16a5.34 5.34 0 0 1 4.215 8.618l-2.008 2.581a4.6 4.6 0 0 0-.67 1.197l-.51 1.363A3.453 3.453 0 0 1 3 12.547zM8.5 4A1.5 1.5 0 0 0 7 5.5v2.695q.168-.09.332-.192c.327-.208.577-.44.72-.727a.5.5 0 1 1 .895.448c-.256.513-.673.865-1.079 1.123A9 9 0 0 1 7 9.313V11.5a.5.5 0 0 1-1 0v-6a2.5 2.5 0 0 1 5 0V6a.5.5 0 0 1-1 0v-.5A1.5 1.5 0 0 0 8.5 4"/></symbol><symbol class="bi bi-ear-fill" viewBox="0 0 16 16" id="ear-fill"><path d="M8.5 0A5.5 5.5 0 0 0 3 5.5v7.047a3.453 3.453 0 0 0 6.687 1.212l.51-1.363a4.6 4.6 0 0 1 .67-1.197l2.008-2.581A5.34 5.34 0 0 0 8.66 0zM7 5.5v2.695q.168-.09.332-.192c.327-.208.577-.44.72-.727a.5.5 0 1 1 .895.448c-.256.513-.673.865-1.079 1.123A9 9 0 0 1 7 9.313V11.5a.5.5 0 0 1-1 0v-6a2.5 2.5 0 0 1 5 0V6a.5.5 0 0 1-1 0v-.5a1.5 1.5 0 1 0-3 0"/></symbol><symbol class="bi bi-earbuds" viewBox="0 0 16 16" id="earbuds"><path fill-rule="evenodd" d="M6.825 4.138c.596 2.141-.36 3.593-2.389 4.117a4.4 4.4 0 0 1-2.018.054c-.048-.01.9 2.778 1.522 4.61l.41 1.205a.52.52 0 0 1-.346.659l-.593.19a.55.55 0 0 1-.69-.34L.184 6.99c-.696-2.137.662-4.309 2.564-4.8 2.029-.523 3.402 0 4.076 1.948zm-.868 2.221c.43-.112.561-.993.292-1.969-.269-.975-.836-1.675-1.266-1.563s-.561.994-.292 1.969.836 1.675 1.266 1.563m3.218-2.221c-.596 2.141.36 3.593 2.389 4.117a4.4 4.4 0 0 0 2.018.054c.048-.01-.9 2.778-1.522 4.61l-.41 1.205a.52.52 0 0 0 .346.659l.593.19c.289.092.6-.06.69-.34l2.536-7.643c.696-2.137-.662-4.309-2.564-4.8-2.029-.523-3.402 0-4.076 1.948m.868 2.221c-.43-.112-.561-.993-.292-1.969.269-.975.836-1.675 1.266-1.563s.561.994.292 1.969-.836 1.675-1.266 1.563"/></symbol><symbol class="bi bi-easel" viewBox="0 0 16 16" id="easel"><path d="M8 0a.5.5 0 0 1 .473.337L9.046 2H14a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-1.85l1.323 3.837a.5.5 0 1 1-.946.326L11.092 11H8.5v3a.5.5 0 0 1-1 0v-3H4.908l-1.435 4.163a.5.5 0 1 1-.946-.326L3.85 11H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h4.954L7.527.337A.5.5 0 0 1 8 0M2 3v7h12V3z"/></symbol><symbol class="bi bi-easel-fill" viewBox="0 0 16 16" id="easel-fill"><path d="M8.473.337a.5.5 0 0 0-.946 0L6.954 2H2a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h1.85l-1.323 3.837a.5.5 0 1 0 .946.326L4.908 11H7.5v2.5a.5.5 0 0 0 1 0V11h2.592l1.435 4.163a.5.5 0 0 0 .946-.326L12.15 11H14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H9.046z"/></symbol><symbol class="bi bi-easel2" viewBox="0 0 16 16" id="easel2"><path fill-rule="evenodd" d="M8 0a.5.5 0 0 1 .447.276L8.81 1h4.69A1.5 1.5 0 0 1 15 2.5V11h.5a.5.5 0 0 1 0 1h-2.86l.845 3.379a.5.5 0 0 1-.97.242L12.11 14H3.89l-.405 1.621a.5.5 0 0 1-.97-.242L3.36 12H.5a.5.5 0 0 1 0-1H1V2.5A1.5 1.5 0 0 1 2.5 1h4.691l.362-.724A.5.5 0 0 1 8 0M2 11h12V2.5a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0-.5.5zm9.61 1H4.39l-.25 1h7.72z"/></symbol><symbol class="bi bi-easel2-fill" viewBox="0 0 16 16" id="easel2-fill"><path d="M8.447.276a.5.5 0 0 0-.894 0L7.19 1H2.5A1.5 1.5 0 0 0 1 2.5V10h14V2.5A1.5 1.5 0 0 0 13.5 1H8.809z"/><path fill-rule="evenodd" d="M.5 11a.5.5 0 0 0 0 1h2.86l-.845 3.379a.5.5 0 0 0 .97.242L3.89 14h8.22l.405 1.621a.5.5 0 0 0 .97-.242L12.64 12h2.86a.5.5 0 0 0 0-1zm3.64 2 .25-1h7.22l.25 1z"/></symbol><symbol class="bi bi-easel3" viewBox="0 0 16 16" id="easel3"><path fill-rule="evenodd" d="M8.5 13.134V12h5a1.5 1.5 0 0 0 1.5-1.5V2h.5a.5.5 0 0 0 0-1H.5a.5.5 0 0 0 0 1H1v8.5A1.5 1.5 0 0 0 2.5 12h5v1.134a1 1 0 1 0 1 0M2 2v8.5a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5V2z"/></symbol><symbol class="bi bi-easel3-fill" viewBox="0 0 16 16" id="easel3-fill"><path d="M8.5 12v1.134a1 1 0 1 1-1 0V12h-5A1.5 1.5 0 0 1 1 10.5V3h14v7.5a1.5 1.5 0 0 1-1.5 1.5zm7-10a.5.5 0 0 0 0-1H.5a.5.5 0 0 0 0 1z"/></symbol><symbol class="bi bi-egg" viewBox="0 0 16 16" id="egg"><path d="M8 15a5 5 0 0 1-5-5c0-1.956.69-4.286 1.742-6.12.524-.913 1.112-1.658 1.704-2.164C7.044 1.206 7.572 1 8 1s.956.206 1.554.716c.592.506 1.18 1.251 1.704 2.164C12.31 5.714 13 8.044 13 10a5 5 0 0 1-5 5m0 1a6 6 0 0 0 6-6c0-4.314-3-10-6-10S2 5.686 2 10a6 6 0 0 0 6 6"/></symbol><symbol class="bi bi-egg-fill" viewBox="0 0 16 16" id="egg-fill"><path d="M14 10a6 6 0 0 1-12 0C2 5.686 5 0 8 0s6 5.686 6 10"/></symbol><symbol class="bi bi-egg-fried" viewBox="0 0 16 16" id="egg-fried"><path d="M8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/><path d="M13.997 5.17a5 5 0 0 0-8.101-4.09A5 5 0 0 0 1.28 9.342a5 5 0 0 0 8.336 5.109 3.5 3.5 0 0 0 5.201-4.065 3.001 3.001 0 0 0-.822-5.216zm-1-.034a1 1 0 0 0 .668.977 2.001 2.001 0 0 1 .547 3.478 1 1 0 0 0-.341 1.113 2.5 2.5 0 0 1-3.715 2.905 1 1 0 0 0-1.262.152 4 4 0 0 1-6.67-4.087 1 1 0 0 0-.2-1 4 4 0 0 1 3.693-6.61 1 1 0 0 0 .8-.2 4 4 0 0 1 6.48 3.273z"/></symbol><symbol class="bi bi-eject" viewBox="0 0 16 16" id="eject"><path d="M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H1.656C.78 9.5.326 8.455.926 7.816zM14.346 8.5 8 1.731 1.654 8.5zM.5 11.5a1 1 0 0 1 1-1h13a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-13a1 1 0 0 1-1-1zm14 0h-13v1h13z"/></symbol><symbol class="bi bi-eject-fill" viewBox="0 0 16 16" id="eject-fill"><path d="M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H1.656C.78 9.5.326 8.455.926 7.816zM.5 11.5a1 1 0 0 1 1-1h13a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-13a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-emoji-angry" viewBox="0 0 16 16" id="emoji-angry"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M4.285 12.433a.5.5 0 0 0 .683-.183A3.5 3.5 0 0 1 8 10.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.5 4.5 0 0 0 8 9.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683m6.991-8.38a.5.5 0 1 1 .448.894l-1.009.504c.176.27.285.64.285 1.049 0 .828-.448 1.5-1 1.5s-1-.672-1-1.5c0-.247.04-.48.11-.686a.502.502 0 0 1 .166-.761zm-6.552 0a.5.5 0 0 0-.448.894l1.009.504A1.94 1.94 0 0 0 5 6.5C5 7.328 5.448 8 6 8s1-.672 1-1.5c0-.247-.04-.48-.11-.686a.502.502 0 0 0-.166-.761z"/></symbol><symbol class="bi bi-emoji-angry-fill" viewBox="0 0 16 16" id="emoji-angry-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M4.053 4.276a.5.5 0 0 1 .67-.223l2 1a.5.5 0 0 1 .166.76c.071.206.111.44.111.687C7 7.328 6.552 8 6 8s-1-.672-1-1.5c0-.408.109-.778.285-1.049l-1.009-.504a.5.5 0 0 1-.223-.67zm.232 8.157a.5.5 0 0 1-.183-.683A4.5 4.5 0 0 1 8 9.5a4.5 4.5 0 0 1 3.898 2.25.5.5 0 1 1-.866.5A3.5 3.5 0 0 0 8 10.5a3.5 3.5 0 0 0-3.032 1.75.5.5 0 0 1-.683.183M10 8c-.552 0-1-.672-1-1.5 0-.247.04-.48.11-.686a.502.502 0 0 1 .166-.761l2-1a.5.5 0 1 1 .448.894l-1.009.504c.176.27.285.64.285 1.049 0 .828-.448 1.5-1 1.5"/></symbol><symbol class="bi bi-emoji-astonished" viewBox="0 0 16 16" id="emoji-astonished"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5M4.884 4.022a2 2 0 0 1 1.458-.048.5.5 0 0 0 .316-.948 3 3 0 0 0-2.167.077 3.1 3.1 0 0 0-.773.478q-.036.03-.07.064l-.002.001a.5.5 0 0 0 .707.708l-.001.002.001-.002a2 2 0 0 1 .122-.1 2 2 0 0 1 .41-.232Zm6.232 0a2 2 0 0 0-1.458-.048.5.5 0 1 1-.316-.948 3 3 0 0 1 2.168.077 3 3 0 0 1 .773.478l.07.064v.001a.5.5 0 0 1-.706.708l.002.002-.002-.002a2 2 0 0 0-.122-.1 2 2 0 0 0-.41-.232ZM8 10c-.998 0-1.747.623-2.247 1.246-.383.478.08 1.06.687.98q1.56-.202 3.12 0c.606.08 1.07-.502.687-.98C9.747 10.623 8.998 10 8 10"/></symbol><symbol class="bi bi-emoji-astonished-fill" viewBox="0 0 16 16" id="emoji-astonished-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-4.884-3.978a2.1 2.1 0 0 1 .53.332.5.5 0 0 0 .708-.708h-.001v-.001a2 2 0 0 0-.237-.197 3 3 0 0 0-.606-.345 3 3 0 0 0-2.168-.077.5.5 0 1 0 .316.948 2 2 0 0 1 1.458.048m-4.774-.048a.5.5 0 0 0 .316-.948 3 3 0 0 0-2.167.077 3.1 3.1 0 0 0-.773.478q-.036.03-.07.064l-.002.001a.5.5 0 1 0 .728.689 2 2 0 0 1 .51-.313 2 2 0 0 1 1.458-.048M7 6.5C7 5.672 6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8s1-.672 1-1.5m4 0c0-.828-.448-1.5-1-1.5s-1 .672-1 1.5S9.448 8 10 8s1-.672 1-1.5m-5.247 4.746c-.383.478.08 1.06.687.98q1.56-.202 3.12 0c.606.08 1.07-.502.687-.98C9.747 10.623 8.998 10 8 10s-1.747.623-2.247 1.246"/></symbol><symbol class="bi bi-emoji-dizzy" viewBox="0 0 16 16" id="emoji-dizzy"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M9.146 5.146a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708m-5 0a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 1 1 .708.708l-.647.646.647.646a.5.5 0 1 1-.708.708L5.5 7.207l-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708M10 11a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/></symbol><symbol class="bi bi-emoji-dizzy-fill" viewBox="0 0 16 16" id="emoji-dizzy-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M4.146 5.146a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 1 1 .708.708l-.647.646.647.646a.5.5 0 1 1-.708.708L5.5 7.207l-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708m5 0a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708M8 13a2 2 0 1 1 0-4 2 2 0 0 1 0 4"/></symbol><symbol class="bi bi-emoji-expressionless" viewBox="0 0 16 16" id="emoji-expressionless"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M4 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m5 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-emoji-expressionless-fill" viewBox="0 0 16 16" id="emoji-expressionless-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M4.5 6h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1m5 0h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1m-5 4h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-emoji-frown" viewBox="0 0 16 16" id="emoji-frown"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M4.285 12.433a.5.5 0 0 0 .683-.183A3.5 3.5 0 0 1 8 10.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.5 4.5 0 0 0 8 9.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5"/></symbol><symbol class="bi bi-emoji-frown-fill" viewBox="0 0 16 16" id="emoji-frown-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m-2.715 5.933a.5.5 0 0 1-.183-.683A4.5 4.5 0 0 1 8 9.5a4.5 4.5 0 0 1 3.898 2.25.5.5 0 0 1-.866.5A3.5 3.5 0 0 0 8 10.5a3.5 3.5 0 0 0-3.032 1.75.5.5 0 0 1-.683.183M10 8c-.552 0-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5S10.552 8 10 8"/></symbol><symbol class="bi bi-emoji-grimace" viewBox="0 0 16 16" id="emoji-grimace"><path d="M7 6.25c0 .69-.448 1.25-1 1.25s-1-.56-1-1.25S5.448 5 6 5s1 .56 1 1.25m3 1.25c.552 0 1-.56 1-1.25S10.552 5 10 5s-1 .56-1 1.25.448 1.25 1 1.25m2.98 3.25A1.5 1.5 0 0 1 11.5 12h-7a1.5 1.5 0 0 1-1.48-1.747v-.003A1.5 1.5 0 0 1 4.5 9h7a1.5 1.5 0 0 1 1.48 1.747zm-8.48.75h.25v-.75H3.531a1 1 0 0 0 .969.75m7 0a1 1 0 0 0 .969-.75H11.25v.75zm.969-1.25a1 1 0 0 0-.969-.75h-.25v.75zM4.5 9.5a1 1 0 0 0-.969.75H4.75V9.5zm1.75 2v-.75h-1v.75zm.5 0h1v-.75h-1zm1.5 0h1v-.75h-1zm1.5 0h1v-.75h-1zm1-2h-1v.75h1zm-1.5 0h-1v.75h1zm-1.5 0h-1v.75h1zm-1.5 0h-1v.75h1z"/><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m0-1A7 7 0 1 1 8 1a7 7 0 0 1 0 14"/></symbol><symbol class="bi bi-emoji-grimace-fill" viewBox="0 0 16 16" id="emoji-grimace-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M7 6.25C7 5.56 6.552 5 6 5s-1 .56-1 1.25.448 1.25 1 1.25 1-.56 1-1.25m3 1.25c.552 0 1-.56 1-1.25S10.552 5 10 5s-1 .56-1 1.25.448 1.25 1 1.25m1.5 4.5a1.5 1.5 0 0 0 1.48-1.25v-.003a1.5 1.5 0 0 0 0-.497A1.5 1.5 0 0 0 11.5 9h-7a1.5 1.5 0 0 0-1.48 1.25v.003a1.5 1.5 0 0 0 0 .497A1.5 1.5 0 0 0 4.5 12zm-7.969-1.25a1 1 0 0 0 .969.75h.25v-.75zm8.938 0a1 1 0 0 1-.969.75h-.25v-.75zM11.5 9.5a1 1 0 0 1 .969.75H11.25V9.5zm-7.969.75A1 1 0 0 1 4.5 9.5h.25v.75zM5.25 11.5h1v-.75h-1zm2.5 0h-1v-.75h1zm1.5 0h-1v-.75h1zm1.5 0h-1v-.75h1zm-1-2h1v.75h-1zm-1.5 0h1v.75h-1zm-1.5 0h1v.75h-1zm-1.5 0h1v.75h-1z"/></symbol><symbol class="bi bi-emoji-grin" viewBox="0 0 16 16" id="emoji-grin"><path d="M12.946 11.398A6.002 6.002 0 0 1 2.108 9.14c-.114-.595.426-1.068 1.028-.997C4.405 8.289 6.48 8.5 8 8.5s3.595-.21 4.864-.358c.602-.07 1.142.402 1.028.998a5.95 5.95 0 0 1-.946 2.258m-.078-2.25C11.588 9.295 9.539 9.5 8 9.5s-3.589-.205-4.868-.352c.11.468.286.91.517 1.317A37 37 0 0 0 8 10.75a37 37 0 0 0 4.351-.285c.231-.407.407-.85.517-1.317m-1.36 2.416c-1.02.1-2.255.186-3.508.186s-2.488-.086-3.507-.186A5 5 0 0 0 8 13a5 5 0 0 0 3.507-1.436ZM6.488 7c.114-.294.179-.636.179-1 0-1.105-.597-2-1.334-2C4.597 4 4 4.895 4 6c0 .364.065.706.178 1 .23-.598.662-1 1.155-1 .494 0 .925.402 1.155 1M12 6c0 .364-.065.706-.178 1-.23-.598-.662-1-1.155-1-.494 0-.925.402-1.155 1a2.8 2.8 0 0 1-.179-1c0-1.105.597-2 1.334-2C11.403 4 12 4.895 12 6"/><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m0-1A7 7 0 1 1 8 1a7 7 0 0 1 0 14"/></symbol><symbol class="bi bi-emoji-grin-fill" viewBox="0 0 16 16" id="emoji-grin-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M6.488 7c-.23-.598-.661-1-1.155-1-.493 0-.924.402-1.155 1A2.8 2.8 0 0 1 4 6c0-1.105.597-2 1.333-2 .737 0 1.334.895 1.334 2 0 .364-.065.706-.179 1m5.334 0c-.23-.598-.662-1-1.155-1-.494 0-.925.402-1.155 1a2.8 2.8 0 0 1-.179-1c0-1.105.597-2 1.334-2C11.403 4 12 4.895 12 6c0 .364-.065.706-.178 1M2.696 8.756a.48.48 0 0 1 .382-.118C4.348 8.786 6.448 9 8 9c1.553 0 3.653-.214 4.922-.362a.48.48 0 0 1 .383.118.3.3 0 0 1 .096.29c-.09.47-.242.921-.445 1.342-.263.035-.576.075-.929.115A37 37 0 0 1 8 10.75c-1.475 0-2.934-.123-4.027-.247-.353-.04-.666-.08-.93-.115A5.5 5.5 0 0 1 2.6 9.045a.3.3 0 0 1 .097-.29ZM8 13.5a5.49 5.49 0 0 1-4.256-2.017l.116.014c1.115.126 2.615.253 4.14.253s3.025-.127 4.14-.253l.117-.014A5.49 5.49 0 0 1 8 13.5"/></symbol><symbol class="bi bi-emoji-heart-eyes" viewBox="0 0 16 16" id="emoji-heart-eyes"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M11.315 10.014a.5.5 0 0 1 .548.736A4.5 4.5 0 0 1 7.965 13a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .548-.736h.005l.017.005.067.015.252.055c.215.046.515.108.857.169.693.124 1.522.242 2.152.242s1.46-.118 2.152-.242a27 27 0 0 0 1.109-.224l.067-.015.017-.004.005-.002zM4.756 4.566c.763-1.424 4.02-.12.952 3.434-4.496-1.596-2.35-4.298-.952-3.434m6.488 0c1.398-.864 3.544 1.838-.952 3.434-3.067-3.554.19-4.858.952-3.434"/></symbol><symbol class="bi bi-emoji-heart-eyes-fill" viewBox="0 0 16 16" id="emoji-heart-eyes-fill"><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M4.756 4.566c.763-1.424 4.02-.12.952 3.434-4.496-1.596-2.35-4.298-.952-3.434m6.559 5.448a.5.5 0 0 1 .548.736A4.5 4.5 0 0 1 7.965 13a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .548-.736h.005l.017.005.067.015.252.055c.215.046.515.108.857.169.693.124 1.522.242 2.152.242s1.46-.118 2.152-.242a27 27 0 0 0 1.109-.224l.067-.015.017-.004.005-.002zm-.07-5.448c1.397-.864 3.543 1.838-.953 3.434-3.067-3.554.19-4.858.952-3.434z"/></symbol><symbol class="bi bi-emoji-kiss" viewBox="0 0 16 16" id="emoji-kiss"><path fill-rule="evenodd" d="M12.493 13.368a7 7 0 1 1 2.489-4.858c.344.033.68.147.975.328a8 8 0 1 0-2.654 5.152 9 9 0 0 1-.81-.622m-3.731-3.22a13 13 0 0 0-1.107.318.5.5 0 1 1-.31-.95c.38-.125.802-.254 1.192-.343.37-.086.78-.153 1.103-.108.16.022.394.085.561.286.188.226.187.497.131.705a1.9 1.9 0 0 1-.31.593q-.115.16-.275.343.16.186.276.347c.142.197.256.397.31.595.055.208.056.479-.132.706-.168.2-.404.262-.563.284-.323.043-.733-.027-1.102-.113a15 15 0 0 1-1.191-.345.5.5 0 1 1 .31-.95c.371.12.761.24 1.109.321q.264.062.446.084a6 6 0 0 0-.502-.584.5.5 0 0 1 .002-.695 5.5 5.5 0 0 0 .5-.577 5 5 0 0 0-.448.082Zm.766-.087-.003-.001-.003-.001zm.002 1.867-.006.001zM6 8c.552 0 1-.672 1-1.5S6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8m2.757-.563a.5.5 0 0 0 .68-.194.93.93 0 0 1 .813-.493c.339 0 .645.19.813.493a.5.5 0 0 0 .874-.486A1.93 1.93 0 0 0 10.25 5.75c-.73 0-1.356.412-1.687 1.007a.5.5 0 0 0 .194.68M14 9.828c1.11-1.14 3.884.856 0 3.422-3.884-2.566-1.11-4.562 0-3.421Z"/></symbol><symbol class="bi bi-emoji-kiss-fill" viewBox="0 0 16 16" id="emoji-kiss-fill"><path fill-rule="evenodd" d="M16 8a8 8 0 1 0-2.697 5.99c-.972-.665-1.632-1.356-1.99-2.062-.388-.766-.419-1.561-.075-2.23.496-.97 1.73-1.466 2.762-1.05.65-.262 1.38-.162 1.957.19Q16 8.425 16 8M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m1.512 3.647c-.347.08-.737.198-1.107.319a.5.5 0 1 1-.31-.95c.38-.125.802-.254 1.192-.343.37-.086.78-.153 1.103-.108.16.022.394.085.561.286.188.226.187.497.131.705a1.9 1.9 0 0 1-.31.593q-.115.16-.275.343.16.186.276.347c.142.197.256.397.31.595.055.208.056.479-.132.706-.168.2-.404.262-.563.284-.323.043-.733-.027-1.102-.113a15 15 0 0 1-1.191-.345.5.5 0 1 1 .31-.95c.371.12.761.24 1.109.321q.264.062.446.084a6 6 0 0 0-.502-.584.5.5 0 0 1 .002-.695 5.5 5.5 0 0 0 .5-.577 5 5 0 0 0-.448.082m.766-.086-.006-.002zm.002 1.867-.005.001.006-.002Zm.157-4.685a.5.5 0 0 1-.874-.486A1.93 1.93 0 0 1 10.25 5.75c.73 0 1.356.412 1.687 1.007a.5.5 0 1 1-.874.486.93.93 0 0 0-.813-.493.93.93 0 0 0-.813.493M14 9.828c1.11-1.14 3.884.856 0 3.422-3.884-2.566-1.11-4.562 0-3.421Z"/></symbol><symbol class="bi bi-emoji-laughing" viewBox="0 0 16 16" id="emoji-laughing"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M12.331 9.5a1 1 0 0 1 0 1A5 5 0 0 1 8 13a5 5 0 0 1-4.33-2.5A1 1 0 0 1 4.535 9h6.93a1 1 0 0 1 .866.5M7 6.5c0 .828-.448 0-1 0s-1 .828-1 0S5.448 5 6 5s1 .672 1 1.5m4 0c0 .828-.448 0-1 0s-1 .828-1 0S9.448 5 10 5s1 .672 1 1.5"/></symbol><symbol class="bi bi-emoji-laughing-fill" viewBox="0 0 16 16" id="emoji-laughing-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M7 6.5c0 .501-.164.396-.415.235C6.42 6.629 6.218 6.5 6 6.5s-.42.13-.585.235C5.164 6.896 5 7 5 6.5 5 5.672 5.448 5 6 5s1 .672 1 1.5m5.331 3a1 1 0 0 1 0 1A5 5 0 0 1 8 13a5 5 0 0 1-4.33-2.5A1 1 0 0 1 4.535 9h6.93a1 1 0 0 1 .866.5m-1.746-2.765C10.42 6.629 10.218 6.5 10 6.5s-.42.13-.585.235C9.164 6.896 9 7 9 6.5c0-.828.448-1.5 1-1.5s1 .672 1 1.5c0 .501-.164.396-.415.235"/></symbol><symbol class="bi bi-emoji-neutral" viewBox="0 0 16 16" id="emoji-neutral"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M4 10.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5m3-4C7 5.672 6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8s1-.672 1-1.5m4 0c0-.828-.448-1.5-1-1.5s-1 .672-1 1.5S9.448 8 10 8s1-.672 1-1.5"/></symbol><symbol class="bi bi-emoji-neutral-fill" viewBox="0 0 16 16" id="emoji-neutral-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m-3 4a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5M10 8c-.552 0-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5S10.552 8 10 8"/></symbol><symbol class="bi bi-emoji-smile" viewBox="0 0 16 16" id="emoji-smile"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M4.285 9.567a.5.5 0 0 1 .683.183A3.5 3.5 0 0 0 8 11.5a3.5 3.5 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .183-.683M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5"/></symbol><symbol class="bi bi-emoji-smile-fill" viewBox="0 0 16 16" id="emoji-smile-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5M4.285 9.567a.5.5 0 0 1 .683.183A3.5 3.5 0 0 0 8 11.5a3.5 3.5 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .183-.683M10 8c-.552 0-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5S10.552 8 10 8"/></symbol><symbol class="bi bi-emoji-smile-upside-down" viewBox="0 0 16 16" id="emoji-smile-upside-down"><path d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1m0-1a8 8 0 1 1 0 16A8 8 0 0 1 8 0"/><path d="M4.285 6.433a.5.5 0 0 0 .683-.183A3.5 3.5 0 0 1 8 4.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.5 4.5 0 0 0 8 3.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683M7 9.5C7 8.672 6.552 8 6 8s-1 .672-1 1.5.448 1.5 1 1.5 1-.672 1-1.5m4 0c0-.828-.448-1.5-1-1.5s-1 .672-1 1.5.448 1.5 1 1.5 1-.672 1-1.5"/></symbol><symbol class="bi bi-emoji-smile-upside-down-fill" viewBox="0 0 16 16" id="emoji-smile-upside-down-fill"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M7 9.5C7 8.672 6.552 8 6 8s-1 .672-1 1.5.448 1.5 1 1.5 1-.672 1-1.5M4.285 6.433a.5.5 0 0 0 .683-.183A3.5 3.5 0 0 1 8 4.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.5 4.5 0 0 0 8 3.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683M10 8c-.552 0-1 .672-1 1.5s.448 1.5 1 1.5 1-.672 1-1.5S10.552 8 10 8"/></symbol><symbol class="bi bi-emoji-sunglasses" viewBox="0 0 16 16" id="emoji-sunglasses"><path d="M4.968 9.75a.5.5 0 1 0-.866.5A4.5 4.5 0 0 0 8 12.5a4.5 4.5 0 0 0 3.898-2.25.5.5 0 1 0-.866-.5A3.5 3.5 0 0 1 8 11.5a3.5 3.5 0 0 1-3.032-1.75M7 5.116V5a1 1 0 0 0-1-1H3.28a1 1 0 0 0-.97 1.243l.311 1.242A2 2 0 0 0 4.561 8H5a2 2 0 0 0 1.994-1.839A3 3 0 0 1 8 6c.393 0 .74.064 1.006.161A2 2 0 0 0 11 8h.438a2 2 0 0 0 1.94-1.515l.311-1.242A1 1 0 0 0 12.72 4H10a1 1 0 0 0-1 1v.116A4.2 4.2 0 0 0 8 5c-.35 0-.69.04-1 .116"/><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-1 0A7 7 0 1 0 1 8a7 7 0 0 0 14 0"/></symbol><symbol class="bi bi-emoji-sunglasses-fill" viewBox="0 0 16 16" id="emoji-sunglasses-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M2.31 5.243A1 1 0 0 1 3.28 4H6a1 1 0 0 1 1 1v.116A4.2 4.2 0 0 1 8 5c.35 0 .69.04 1 .116V5a1 1 0 0 1 1-1h2.72a1 1 0 0 1 .97 1.243l-.311 1.242A2 2 0 0 1 11.439 8H11a2 2 0 0 1-1.994-1.839A3 3 0 0 0 8 6c-.393 0-.74.064-1.006.161A2 2 0 0 1 5 8h-.438a2 2 0 0 1-1.94-1.515zM4.969 9.75A3.5 3.5 0 0 0 8 11.5a3.5 3.5 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .866-.5z"/></symbol><symbol class="bi bi-emoji-surprise" viewBox="0 0 16 16" id="emoji-surprise"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M7 5.5C7 6.328 6.552 7 6 7s-1-.672-1-1.5S5.448 4 6 4s1 .672 1 1.5m4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 4 10 4s1 .672 1 1.5M10 11a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/></symbol><symbol class="bi bi-emoji-surprise-fill" viewBox="0 0 16 16" id="emoji-surprise-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M7 5.5C7 4.672 6.552 4 6 4s-1 .672-1 1.5S5.448 7 6 7s1-.672 1-1.5m4 0c0-.828-.448-1.5-1-1.5s-1 .672-1 1.5S9.448 7 10 7s1-.672 1-1.5M8 13a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/></symbol><symbol class="bi bi-emoji-tear" viewBox="0 0 16 16" id="emoji-tear"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M6.831 11.43A3.1 3.1 0 0 1 8 11.196c.916 0 1.607.408 2.25.826.212.138.424-.069.282-.277-.564-.83-1.558-2.049-2.532-2.049-.53 0-1.066.361-1.536.824q.126.27.232.535.069.174.135.373ZM6 11.333C6 12.253 5.328 13 4.5 13S3 12.254 3 11.333c0-.706.882-2.29 1.294-2.99a.238.238 0 0 1 .412 0c.412.7 1.294 2.284 1.294 2.99M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5m-1.5-3A.5.5 0 0 1 10 3c1.162 0 2.35.584 2.947 1.776a.5.5 0 1 1-.894.448C11.649 4.416 10.838 4 10 4a.5.5 0 0 1-.5-.5M7 3.5a.5.5 0 0 0-.5-.5c-1.162 0-2.35.584-2.947 1.776a.5.5 0 1 0 .894.448C4.851 4.416 5.662 4 6.5 4a.5.5 0 0 0 .5-.5"/></symbol><symbol class="bi bi-emoji-tear-fill" viewBox="0 0 16 16" id="emoji-tear-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.5 3.5a.5.5 0 0 0 .5.5c.838 0 1.65.416 2.053 1.224a.5.5 0 1 0 .894-.448C12.351 3.584 11.162 3 10 3a.5.5 0 0 0-.5.5M7 6.5C7 5.672 6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8s1-.672 1-1.5M4.5 13c.828 0 1.5-.746 1.5-1.667 0-.706-.882-2.29-1.294-2.99a.238.238 0 0 0-.412 0C3.882 9.044 3 10.628 3 11.334 3 12.253 3.672 13 4.5 13M8 11.197c.916 0 1.607.408 2.25.826.212.138.424-.069.282-.277-.564-.83-1.558-2.049-2.532-2.049-.53 0-1.066.361-1.536.824q.126.27.232.535.069.174.135.373A3.1 3.1 0 0 1 8 11.197M10 8c.552 0 1-.672 1-1.5S10.552 5 10 5s-1 .672-1 1.5S9.448 8 10 8M6.5 3c-1.162 0-2.35.584-2.947 1.776a.5.5 0 1 0 .894.448C4.851 4.416 5.662 4 6.5 4a.5.5 0 0 0 0-1"/></symbol><symbol class="bi bi-emoji-wink" viewBox="0 0 16 16" id="emoji-wink"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M4.285 9.567a.5.5 0 0 1 .683.183A3.5 3.5 0 0 0 8 11.5a3.5 3.5 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .183-.683M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m1.757-.437a.5.5 0 0 1 .68.194.93.93 0 0 0 .813.493c.339 0 .645-.19.813-.493a.5.5 0 1 1 .874.486A1.93 1.93 0 0 1 10.25 7.75c-.73 0-1.356-.412-1.687-1.007a.5.5 0 0 1 .194-.68"/></symbol><symbol class="bi bi-emoji-wink-fill" viewBox="0 0 16 16" id="emoji-wink-fill"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M7 6.5C7 5.672 6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8s1-.672 1-1.5M4.285 9.567a.5.5 0 0 0-.183.683A4.5 4.5 0 0 0 8 12.5a4.5 4.5 0 0 0 3.898-2.25.5.5 0 1 0-.866-.5A3.5 3.5 0 0 1 8 11.5a3.5 3.5 0 0 1-3.032-1.75.5.5 0 0 0-.683-.183m5.152-3.31a.5.5 0 0 0-.874.486c.33.595.958 1.007 1.687 1.007s1.356-.412 1.687-1.007a.5.5 0 0 0-.874-.486.93.93 0 0 1-.813.493.93.93 0 0 1-.813-.493"/></symbol><symbol class="bi bi-envelope" viewBox="0 0 16 16" id="envelope"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1zm13 2.383-4.708 2.825L15 11.105zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741M1 11.105l4.708-2.897L1 5.383z"/></symbol><symbol class="bi bi-envelope-arrow-down" viewBox="0 0 16 16" id="envelope-arrow-down"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4.5a.5.5 0 0 1-1 0V5.383l-7 4.2-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-1.99zm1 7.105 4.708-2.897L1 5.383zM1 4v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-1.646a.5.5 0 0 1-.722-.016l-1.149-1.25a.5.5 0 1 1 .737-.676l.28.305V11a.5.5 0 0 1 1 0v1.793l.396-.397a.5.5 0 0 1 .708.708z"/></symbol><symbol class="bi bi-envelope-arrow-down-fill" viewBox="0 0 16 16" id="envelope-arrow-down-fill"><path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zm.192 8.159 6.57-4.027L8 9.586l1.239-.757.367.225A4.49 4.49 0 0 0 8 12.5c0 .526.09 1.03.256 1.5H2a2 2 0 0 1-1.808-1.144M16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-1.646a.5.5 0 0 1-.722-.016l-1.149-1.25a.5.5 0 1 1 .737-.676l.28.305V11a.5.5 0 0 1 1 0v1.793l.396-.397a.5.5 0 0 1 .708.708z"/></symbol><symbol class="bi bi-envelope-arrow-up" viewBox="0 0 16 16" id="envelope-arrow-up"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4.5a.5.5 0 0 1-1 0V5.383l-7 4.2-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-1.99zm1 7.105 4.708-2.897L1 5.383zM1 4v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.354 1.25 1.25a.5.5 0 0 1-.708.708L13 12.207V14a.5.5 0 0 1-1 0v-1.717l-.28.305a.5.5 0 0 1-.737-.676l1.149-1.25a.5.5 0 0 1 .722-.016"/></symbol><symbol class="bi bi-envelope-arrow-up-fill" viewBox="0 0 16 16" id="envelope-arrow-up-fill"><path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zm.192 8.159 6.57-4.027L8 9.586l1.239-.757.367.225A4.49 4.49 0 0 0 8 12.5c0 .526.09 1.03.256 1.5H2a2 2 0 0 1-1.808-1.144M16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.354 1.25 1.25a.5.5 0 0 1-.708.708L13 12.207V14a.5.5 0 0 1-1 0v-1.717l-.28.305a.5.5 0 0 1-.737-.676l1.149-1.25a.5.5 0 0 1 .722-.016"/></symbol><symbol class="bi bi-envelope-at" viewBox="0 0 16 16" id="envelope-at"><path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/><path d="M14.247 14.269c1.01 0 1.587-.857 1.587-2.025v-.21C15.834 10.43 14.64 9 12.52 9h-.035C10.42 9 9 10.36 9 12.432v.214C9 14.82 10.438 16 12.358 16h.044c.594 0 1.018-.074 1.237-.175v-.73c-.245.11-.673.18-1.18.18h-.044c-1.334 0-2.571-.788-2.571-2.655v-.157c0-1.657 1.058-2.724 2.64-2.724h.04c1.535 0 2.484 1.05 2.484 2.326v.118c0 .975-.324 1.39-.639 1.39-.232 0-.41-.148-.41-.42v-2.19h-.906v.569h-.03c-.084-.298-.368-.63-.954-.63-.778 0-1.259.555-1.259 1.4v.528c0 .892.49 1.434 1.26 1.434.471 0 .896-.227 1.014-.643h.043c.118.42.617.648 1.12.648m-2.453-1.588v-.227c0-.546.227-.791.573-.791.297 0 .572.192.572.708v.367c0 .573-.253.744-.564.744-.354 0-.581-.215-.581-.8Z"/></symbol><symbol class="bi bi-envelope-at-fill" viewBox="0 0 16 16" id="envelope-at-fill"><path d="M2 2A2 2 0 0 0 .05 3.555L8 8.414l7.95-4.859A2 2 0 0 0 14 2zm-2 9.8V4.698l5.803 3.546zm6.761-2.97-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 9.671V4.697l-5.803 3.546.338.208A4.5 4.5 0 0 1 12.5 8c1.414 0 2.675.652 3.5 1.671"/><path d="M15.834 12.244c0 1.168-.577 2.025-1.587 2.025-.503 0-1.002-.228-1.12-.648h-.043c-.118.416-.543.643-1.015.643-.77 0-1.259-.542-1.259-1.434v-.529c0-.844.481-1.4 1.26-1.4.585 0 .87.333.953.63h.03v-.568h.905v2.19c0 .272.18.42.411.42.315 0 .639-.415.639-1.39v-.118c0-1.277-.95-2.326-2.484-2.326h-.04c-1.582 0-2.64 1.067-2.64 2.724v.157c0 1.867 1.237 2.654 2.57 2.654h.045c.507 0 .935-.07 1.18-.18v.731c-.219.1-.643.175-1.237.175h-.044C10.438 16 9 14.82 9 12.646v-.214C9 10.36 10.421 9 12.485 9h.035c2.12 0 3.314 1.43 3.314 3.034zm-4.04.21v.227c0 .586.227.8.581.8.31 0 .564-.17.564-.743v-.367c0-.516-.275-.708-.572-.708-.346 0-.573.245-.573.791"/></symbol><symbol class="bi bi-envelope-check" viewBox="0 0 16 16" id="envelope-check"><path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-1.993-1.679a.5.5 0 0 0-.686.172l-1.17 1.95-.547-.547a.5.5 0 0 0-.708.708l.774.773a.75.75 0 0 0 1.174-.144l1.335-2.226a.5.5 0 0 0-.172-.686"/></symbol><symbol class="bi bi-envelope-check-fill" viewBox="0 0 16 16" id="envelope-check-fill"><path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-1.993-1.679a.5.5 0 0 0-.686.172l-1.17 1.95-.547-.547a.5.5 0 0 0-.708.708l.774.773a.75.75 0 0 0 1.174-.144l1.335-2.226a.5.5 0 0 0-.172-.686"/></symbol><symbol class="bi bi-envelope-dash" viewBox="0 0 16 16" id="envelope-dash"><path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-envelope-dash-fill" viewBox="0 0 16 16" id="envelope-dash-fill"><path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-envelope-exclamation" viewBox="0 0 16 16" id="envelope-exclamation"><path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1.5a.5.5 0 0 1-1 0V11a.5.5 0 0 1 1 0m0 3a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-envelope-exclamation-fill" viewBox="0 0 16 16" id="envelope-exclamation-fill"><path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1.5a.5.5 0 0 1-1 0V11a.5.5 0 0 1 1 0m0 3a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-envelope-fill" viewBox="0 0 16 16" id="envelope-fill"><path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.027A2 2 0 0 0 2 14h12a2 2 0 0 0 1.808-1.144l-6.57-4.027L8 9.586zm3.436-.586L16 11.801V4.697z"/></symbol><symbol class="bi bi-envelope-heart" viewBox="0 0 16 16" id="envelope-heart"><path fill-rule="evenodd" d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v.217l3.235 1.94a2.8 2.8 0 0 0-.233 1.027L1 5.384v5.721l3.453-2.124q.219.416.55.835l-3.97 2.443A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741l-3.968-2.442q.33-.421.55-.836L15 11.105V5.383l-3.002 1.801a2.8 2.8 0 0 0-.233-1.026L15 4.217V4a1 1 0 0 0-1-1zm6 2.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-envelope-heart-fill" viewBox="0 0 16 16" id="envelope-heart-fill"><path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555l-4.2 2.568-.051-.105c-.666-1.3-2.363-1.917-3.699-1.25-1.336-.667-3.033-.05-3.699 1.25l-.05.105zM11.584 8.91l-.073.139L16 11.8V4.697l-4.003 2.447c.027.562-.107 1.163-.413 1.767Zm-4.135 3.05c-1.048-.693-1.84-1.39-2.398-2.082L.19 12.856A2 2 0 0 0 2 14h12a2 2 0 0 0 1.808-1.144L10.95 9.878c-.559.692-1.35 1.389-2.398 2.081L8 12.324l-.551-.365ZM4.416 8.91c-.306-.603-.44-1.204-.413-1.766L0 4.697v7.104l4.49-2.752z"/><path d="M8 5.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-envelope-open" viewBox="0 0 16 16" id="envelope-open"><path d="M8.47 1.318a1 1 0 0 0-.94 0l-6 3.2A1 1 0 0 0 1 5.4v.817l5.75 3.45L8 8.917l1.25.75L15 6.217V5.4a1 1 0 0 0-.53-.882zM15 7.383l-4.778 2.867L15 13.117zm-.035 6.88L8 10.082l-6.965 4.18A1 1 0 0 0 2 15h12a1 1 0 0 0 .965-.738ZM1 13.116l4.778-2.867L1 7.383v5.734ZM7.059.435a2 2 0 0 1 1.882 0l6 3.2A2 2 0 0 1 16 5.4V14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5.4a2 2 0 0 1 1.059-1.765z"/></symbol><symbol class="bi bi-envelope-open-fill" viewBox="0 0 16 16" id="envelope-open-fill"><path d="M8.941.435a2 2 0 0 0-1.882 0l-6 3.2A2 2 0 0 0 0 5.4v.314l6.709 3.932L8 8.928l1.291.718L16 5.714V5.4a2 2 0 0 0-1.059-1.765zM16 6.873l-5.693 3.337L16 13.372v-6.5Zm-.059 7.611L8 10.072.059 14.484A2 2 0 0 0 2 16h12a2 2 0 0 0 1.941-1.516M0 13.373l5.693-3.163L0 6.873z"/></symbol><symbol class="bi bi-envelope-open-heart" viewBox="0 0 16 16" id="envelope-open-heart"><path fill-rule="evenodd" d="M8.47 1.318a1 1 0 0 0-.94 0l-6 3.2A1 1 0 0 0 1 5.4v.817l3.235 1.94a2.8 2.8 0 0 0-.233 1.027L1 7.384v5.733l3.479-2.087q.224.414.558.83l-4.002 2.402A1 1 0 0 0 2 15h12a1 1 0 0 0 .965-.738l-4.002-2.401q.334-.418.558-.831L15 13.117V7.383l-3.002 1.801a2.8 2.8 0 0 0-.233-1.026L15 6.217V5.4a1 1 0 0 0-.53-.882zM7.06.435a2 2 0 0 1 1.882 0l6 3.2A2 2 0 0 1 16 5.4V14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5.4a2 2 0 0 1 1.059-1.765zM8 7.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-envelope-open-heart-fill" viewBox="0 0 16 16" id="envelope-open-heart-fill"><path d="M8.941.435a2 2 0 0 0-1.882 0l-6 3.2A2 2 0 0 0 0 5.4v.313l4.222 2.475q.035-.087.08-.17c.665-1.3 2.362-1.917 3.698-1.25 1.336-.667 3.033-.05 3.699 1.25a3 3 0 0 1 .08.17L16 5.713V5.4a2 2 0 0 0-1.059-1.765zM0 6.873l4 2.344c-.012.542.124 1.117.416 1.694l.004.006L0 13.372v-6.5Zm.059 7.611 4.9-2.723c.563.73 1.383 1.467 2.49 2.198l.551.365.551-.365c1.107-.73 1.927-1.467 2.49-2.198l4.9 2.723A2 2 0 0 1 14 16H2a2 2 0 0 1-1.941-1.516M16 13.372l-4.42-2.455.004-.006c.292-.577.428-1.152.415-1.694L16 6.873v6.5Z"/><path d="M8 7.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/></symbol><symbol class="bi bi-envelope-paper" viewBox="0 0 16 16" id="envelope-paper"><path d="M4 0a2 2 0 0 0-2 2v1.133l-.941.502A2 2 0 0 0 0 5.4V14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5.4a2 2 0 0 0-1.059-1.765L14 3.133V2a2 2 0 0 0-2-2zm10 4.267.47.25A1 1 0 0 1 15 5.4v.817l-1 .6zm-1 3.15-3.75 2.25L8 8.917l-1.25.75L3 7.417V2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1zm-11-.6-1-.6V5.4a1 1 0 0 1 .53-.882L2 4.267zm13 .566v5.734l-4.778-2.867zm-.035 6.88A1 1 0 0 1 14 15H2a1 1 0 0 1-.965-.738L8 10.083zM1 13.116V7.383l4.778 2.867L1 13.117Z"/></symbol><symbol class="bi bi-envelope-paper-fill" viewBox="0 0 16 16" id="envelope-paper-fill"><path fill-rule="evenodd" d="M6.5 9.5 3 7.5v-6A1.5 1.5 0 0 1 4.5 0h7A1.5 1.5 0 0 1 13 1.5v6l-3.5 2L8 8.75zM1.059 3.635 2 3.133v3.753L0 5.713V5.4a2 2 0 0 1 1.059-1.765M16 5.713l-2 1.173V3.133l.941.502A2 2 0 0 1 16 5.4zm0 1.16-5.693 3.337L16 13.372v-6.5Zm-8 3.199 7.941 4.412A2 2 0 0 1 14 16H2a2 2 0 0 1-1.941-1.516zm-8 3.3 5.693-3.162L0 6.873v6.5Z"/></symbol><symbol class="bi bi-envelope-paper-heart" viewBox="0 0 16 16" id="envelope-paper-heart"><path fill-rule="evenodd" d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v1.133l.941.502A2 2 0 0 1 16 5.4V14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5.4a2 2 0 0 1 1.059-1.765L2 3.133zm0 2.267-.47.25A1 1 0 0 0 1 5.4v.817l1 .6zm1 3.15 3.75 2.25L8 8.917l1.25.75L13 7.417V2a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1zm11-.6 1-.6V5.4a1 1 0 0 0-.53-.882L14 4.267zM8 2.982C9.664 1.309 13.825 4.236 8 8 2.175 4.236 6.336 1.31 8 2.982m7 4.401-4.778 2.867L15 13.117zm-.035 6.88L8 10.082l-6.965 4.18A1 1 0 0 0 2 15h12a1 1 0 0 0 .965-.738ZM1 13.116l4.778-2.867L1 7.383v5.734Z"/></symbol><symbol class="bi bi-envelope-paper-heart-fill" viewBox="0 0 16 16" id="envelope-paper-heart-fill"><path fill-rule="evenodd" d="m3 7.5 3.5 2L8 8.75l1.5.75 3.5-2v-6A1.5 1.5 0 0 0 11.5 0h-7A1.5 1.5 0 0 0 3 1.5zM2 3.133l-.941.502A2 2 0 0 0 0 5.4v.313l2 1.173zm12 3.753 2-1.173V5.4a2 2 0 0 0-1.059-1.765L14 3.133zm-3.693 3.324L16 6.873v6.5zm5.634 4.274L8 10.072.059 14.484A2 2 0 0 0 2 16h12a2 2 0 0 0 1.941-1.516M5.693 10.21 0 13.372v-6.5zM8 1.982C9.664.309 13.825 3.236 8 7 2.175 3.236 6.336.31 8 1.982"/></symbol><symbol class="bi bi-envelope-plus" viewBox="0 0 16 16" id="envelope-plus"><path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-envelope-plus-fill" viewBox="0 0 16 16" id="envelope-plus-fill"><path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-envelope-slash" viewBox="0 0 16 16" id="envelope-slash"><path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/><path d="M14.975 10.025a3.5 3.5 0 1 0-4.95 4.95 3.5 3.5 0 0 0 4.95-4.95m-4.243.707a2.5 2.5 0 0 1 3.147-.318l-3.465 3.465a2.5 2.5 0 0 1 .318-3.147m.39 3.854 3.464-3.465a2.501 2.501 0 0 1-3.465 3.465Z"/></symbol><symbol class="bi bi-envelope-slash-fill" viewBox="0 0 16 16" id="envelope-slash-fill"><path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/><path d="M14.975 10.025a3.5 3.5 0 1 0-4.95 4.95 3.5 3.5 0 0 0 4.95-4.95m-4.243.707a2.5 2.5 0 0 1 3.147-.318l-3.465 3.465a2.5 2.5 0 0 1 .318-3.147m.39 3.854 3.464-3.465a2.501 2.501 0 0 1-3.465 3.465Z"/></symbol><symbol class="bi bi-envelope-x" viewBox="0 0 16 16" id="envelope-x"><path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/></symbol><symbol class="bi bi-envelope-x-fill" viewBox="0 0 16 16" id="envelope-x-fill"><path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/></symbol><symbol class="bi bi-eraser" viewBox="0 0 16 16" id="eraser"><path d="M8.086 2.207a2 2 0 0 1 2.828 0l3.879 3.879a2 2 0 0 1 0 2.828l-5.5 5.5A2 2 0 0 1 7.879 15H5.12a2 2 0 0 1-1.414-.586l-2.5-2.5a2 2 0 0 1 0-2.828zm2.121.707a1 1 0 0 0-1.414 0L4.16 7.547l5.293 5.293 4.633-4.633a1 1 0 0 0 0-1.414zM8.746 13.547 3.453 8.254 1.914 9.793a1 1 0 0 0 0 1.414l2.5 2.5a1 1 0 0 0 .707.293H7.88a1 1 0 0 0 .707-.293z"/></symbol><symbol class="bi bi-eraser-fill" viewBox="0 0 16 16" id="eraser-fill"><path d="M8.086 2.207a2 2 0 0 1 2.828 0l3.879 3.879a2 2 0 0 1 0 2.828l-5.5 5.5A2 2 0 0 1 7.879 15H5.12a2 2 0 0 1-1.414-.586l-2.5-2.5a2 2 0 0 1 0-2.828zm.66 11.34L3.453 8.254 1.914 9.793a1 1 0 0 0 0 1.414l2.5 2.5a1 1 0 0 0 .707.293H7.88a1 1 0 0 0 .707-.293z"/></symbol><symbol class="bi bi-escape" viewBox="0 0 16 16" id="escape"><path d="M8.538 1.02a.5.5 0 1 0-.076.998 6 6 0 1 1-6.445 6.444.5.5 0 0 0-.997.076A7 7 0 1 0 8.538 1.02"/><path d="M7.096 7.828a.5.5 0 0 0 .707-.707L2.707 2.025h2.768a.5.5 0 1 0 0-1H1.5a.5.5 0 0 0-.5.5V5.5a.5.5 0 0 0 1 0V2.732z"/></symbol><symbol class="bi bi-ethernet" viewBox="0 0 16 16" id="ethernet"><path d="M14 13.5v-7a.5.5 0 0 0-.5-.5H12V4.5a.5.5 0 0 0-.5-.5h-1v-.5A.5.5 0 0 0 10 3H6a.5.5 0 0 0-.5.5V4h-1a.5.5 0 0 0-.5.5V6H2.5a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5M3.75 11h.5a.25.25 0 0 1 .25.25v1.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-1.5a.25.25 0 0 1 .25-.25m2 0h.5a.25.25 0 0 1 .25.25v1.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-1.5a.25.25 0 0 1 .25-.25m1.75.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v1.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zM9.75 11h.5a.25.25 0 0 1 .25.25v1.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-1.5a.25.25 0 0 1 .25-.25m1.75.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v1.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25z"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 2a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-ev-front" viewBox="0 0 16 16" id="ev-front"><path d="M9.354 4.243a.19.19 0 0 0-.085-.218.186.186 0 0 0-.23.034L6.051 7.246a.188.188 0 0 0 .136.316h1.241l-.673 2.195a.19.19 0 0 0 .085.218c.075.043.17.03.23-.034l2.88-3.187a.188.188 0 0 0-.137-.316H8.572z"/><path d="M4.819 2A2.5 2.5 0 0 0 2.52 3.515l-.792 1.848a.8.8 0 0 1-.38.404c-.5.25-.855.715-.965 1.262L.05 8.708a2.5 2.5 0 0 0-.049.49v.413c0 .814.39 1.543 1 1.997V13.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.338c1.292.048 2.745.088 4 .088s2.708-.04 4-.088V13.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.892c.61-.454 1-1.183 1-1.997v-.413q0-.248-.049-.49l-.335-1.68a1.8 1.8 0 0 0-.964-1.261.8.8 0 0 1-.381-.404l-.792-1.848A2.5 2.5 0 0 0 11.181 2H4.82ZM3.44 3.91A1.5 1.5 0 0 1 4.82 3h6.362a1.5 1.5 0 0 1 1.379.91l.792 1.847a1.8 1.8 0 0 0 .853.904c.222.112.381.32.43.564l.336 1.679q.03.146.029.294v.413a1.48 1.48 0 0 1-1.408 1.484c-1.555.07-3.786.155-5.592.155s-4.037-.084-5.592-.155A1.48 1.48 0 0 1 1 9.611v-.413q0-.148.03-.294l.335-1.68a.8.8 0 0 1 .43-.563c.383-.19.685-.511.853-.904z"/></symbol><symbol class="bi bi-ev-front-fill" viewBox="0 0 16 16" id="ev-front-fill"><path d="M2.52 3.515A2.5 2.5 0 0 1 4.82 2h6.362c1 0 1.904.596 2.298 1.515l.792 1.848c.075.175.21.319.38.404.5.25.855.715.965 1.262l.335 1.679q.05.242.049.49v.413c0 .814-.39 1.543-1 1.997V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.338c-1.292.048-2.745.088-4 .088s-2.708-.04-4-.088V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.892c-.61-.454-1-1.183-1-1.997v-.413a2.5 2.5 0 0 1 .049-.49l.335-1.68c.11-.546.465-1.012.964-1.261a.8.8 0 0 0 .381-.404l.792-1.848Zm6.75.51a.186.186 0 0 0-.23.034L6.05 7.246a.188.188 0 0 0 .137.316h1.241l-.673 2.195a.19.19 0 0 0 .085.218c.075.043.17.03.23-.034l2.88-3.187a.188.188 0 0 0-.137-.316H8.572l.782-2.195a.19.19 0 0 0-.085-.218Z"/></symbol><symbol class="bi bi-ev-station" viewBox="0 0 16 16" id="ev-station"><path d="M3.5 2a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5zm2.131 10.46H4.14v-.893h1.403v-.505H4.14v-.855h1.49v-.54H3.485V13h2.146zm1.316.54h.794l1.106-3.333h-.733l-.74 2.615h-.031l-.747-2.615h-.764z"/><path d="M3 0a2 2 0 0 0-2 2v13H.5a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1H11v-4a1 1 0 0 1 1 1v.5a1.5 1.5 0 0 0 3 0V4a.5.5 0 0 0-.146-.354l-.5-.5a.5.5 0 0 0-.707 0l-.5.5A.5.5 0 0 0 13 4v3c0 .71.38 1.096.636 1.357l.007.008c.253.258.357.377.357.635v3.5a.5.5 0 1 1-1 0V12a2 2 0 0 0-2-2V2a2 2 0 0 0-2-2zm7 2v13H2V2a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1"/></symbol><symbol class="bi bi-ev-station-fill" viewBox="0 0 16 16" id="ev-station-fill"><path d="M1 2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v8a2 2 0 0 1 2 2v.5a.5.5 0 0 0 1 0V9c0-.258-.104-.377-.357-.635l-.007-.008C13.379 8.096 13 7.71 13 7V4a.5.5 0 0 1 .146-.354l.5-.5a.5.5 0 0 1 .708 0l.5.5A.5.5 0 0 1 15 4v8.5a1.5 1.5 0 1 1-3 0V12a1 1 0 0 0-1-1v4h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1zm2 .5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5m2.631 9.96H4.14v-.893h1.403v-.505H4.14v-.855h1.49v-.54H3.485V13h2.146zm1.316.54h.794l1.106-3.333h-.733l-.74 2.615h-.031l-.747-2.615h-.764z"/></symbol><symbol class="bi bi-exclamation" viewBox="0 0 16 16" id="exclamation"><path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.553.553 0 0 1-1.1 0z"/></symbol><symbol class="bi bi-exclamation-circle" viewBox="0 0 16 16" id="exclamation-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></symbol><symbol class="bi bi-exclamation-circle-fill" viewBox="0 0 16 16" id="exclamation-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4m.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/></symbol><symbol class="bi bi-exclamation-diamond" viewBox="0 0 16 16" id="exclamation-diamond"><path d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134z"/><path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></symbol><symbol class="bi bi-exclamation-diamond-fill" viewBox="0 0 16 16" id="exclamation-diamond-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM8 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></symbol><symbol class="bi bi-exclamation-lg" viewBox="0 0 16 16" id="exclamation-lg"><path d="M7.005 3.1a1 1 0 1 1 1.99 0l-.388 6.35a.61.61 0 0 1-1.214 0zM7 12a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/></symbol><symbol class="bi bi-exclamation-octagon" viewBox="0 0 16 16" id="exclamation-octagon"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/><path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></symbol><symbol class="bi bi-exclamation-octagon-fill" viewBox="0 0 16 16" id="exclamation-octagon-fill"><path d="M11.46.146A.5.5 0 0 0 11.107 0H4.893a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353zM8 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></symbol><symbol class="bi bi-exclamation-square" viewBox="0 0 16 16" id="exclamation-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></symbol><symbol class="bi bi-exclamation-square-fill" viewBox="0 0 16 16" id="exclamation-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></symbol><symbol class="bi bi-exclamation-triangle" viewBox="0 0 16 16" id="exclamation-triangle"><path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016.15.15 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.2.2 0 0 1-.054.06.1.1 0 0 1-.066.017H1.146a.1.1 0 0 1-.066-.017.2.2 0 0 1-.054-.06.18.18 0 0 1 .002-.183L7.884 2.073a.15.15 0 0 1 .054-.057m1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767z"/><path d="M7.002 12a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></symbol><symbol class="bi bi-exclamation-triangle-fill" viewBox="0 0 16 16" id="exclamation-triangle-fill"><path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></symbol><symbol class="bi bi-exclude" viewBox="0 0 16 16" id="exclude"><path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm12 2H5a1 1 0 0 0-1 1v7h7a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-explicit" viewBox="0 0 16 16" id="explicit"><path d="M6.826 10.88H10.5V12h-5V4.002h5v1.12H6.826V7.4h3.457v1.073H6.826z"/><path d="M2.5 0A2.5 2.5 0 0 0 0 2.5v11A2.5 2.5 0 0 0 2.5 16h11a2.5 2.5 0 0 0 2.5-2.5v-11A2.5 2.5 0 0 0 13.5 0zM1 2.5A1.5 1.5 0 0 1 2.5 1h11A1.5 1.5 0 0 1 15 2.5v11a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 13.5z"/></symbol><symbol class="bi bi-explicit-fill" viewBox="0 0 16 16" id="explicit-fill"><path d="M2.5 0A2.5 2.5 0 0 0 0 2.5v11A2.5 2.5 0 0 0 2.5 16h11a2.5 2.5 0 0 0 2.5-2.5v-11A2.5 2.5 0 0 0 13.5 0zm4.326 10.88H10.5V12h-5V4.002h5v1.12H6.826V7.4h3.457v1.073H6.826z"/></symbol><symbol class="bi bi-exposure" viewBox="0 0 16 16" id="exposure"><path d="M8.5 4a.5.5 0 0 0-1 0v2h-2a.5.5 0 0 0 0 1h2v2a.5.5 0 0 0 1 0V7h2a.5.5 0 0 0 0-1h-2zm-3 7a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M1 8a7 7 0 1 1 14 0A7 7 0 0 1 1 8"/></symbol><symbol class="bi bi-eye" viewBox="0 0 16 16" id="eye"><path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8M1.173 8a13 13 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5s3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5s-3.879-1.168-5.168-2.457A13 13 0 0 1 1.172 8z"/><path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0"/></symbol><symbol class="bi bi-eye-fill" viewBox="0 0 16 16" id="eye-fill"><path d="M10.5 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0"/><path d="M0 8s3-5.5 8-5.5S16 8 16 8s-3 5.5-8 5.5S0 8 0 8m8 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7"/></symbol><symbol class="bi bi-eye-slash" viewBox="0 0 16 16" id="eye-slash"><path d="M13.359 11.238C15.06 9.72 16 8 16 8s-3-5.5-8-5.5a7 7 0 0 0-2.79.588l.77.771A6 6 0 0 1 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755q-.247.248-.517.486z"/><path d="M11.297 9.176a3.5 3.5 0 0 0-4.474-4.474l.823.823a2.5 2.5 0 0 1 2.829 2.829zm-2.943 1.299.822.822a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829"/><path d="M3.35 5.47q-.27.24-.518.487A13 13 0 0 0 1.172 8l.195.288c.335.48.83 1.12 1.465 1.755C4.121 11.332 5.881 12.5 8 12.5c.716 0 1.39-.133 2.02-.36l.77.772A7 7 0 0 1 8 13.5C3 13.5 0 8 0 8s.939-1.721 2.641-3.238l.708.709zm10.296 8.884-12-12 .708-.708 12 12z"/></symbol><symbol class="bi bi-eye-slash-fill" viewBox="0 0 16 16" id="eye-slash-fill"><path d="m10.79 12.912-1.614-1.615a3.5 3.5 0 0 1-4.474-4.474l-2.06-2.06C.938 6.278 0 8 0 8s3 5.5 8 5.5a7 7 0 0 0 2.79-.588M5.21 3.088A7 7 0 0 1 8 2.5c5 0 8 5.5 8 5.5s-.939 1.721-2.641 3.238l-2.062-2.062a3.5 3.5 0 0 0-4.474-4.474z"/><path d="M5.525 7.646a2.5 2.5 0 0 0 2.829 2.829zm4.95.708-2.829-2.83a2.5 2.5 0 0 1 2.829 2.829zm3.171 6-12-12 .708-.708 12 12z"/></symbol><symbol class="bi bi-eyedropper" viewBox="0 0 16 16" id="eyedropper"><path d="M13.354.646a1.207 1.207 0 0 0-1.708 0L8.5 3.793l-.646-.647a.5.5 0 1 0-.708.708L8.293 5l-7.147 7.146A.5.5 0 0 0 1 12.5v1.793l-.854.853a.5.5 0 1 0 .708.707L1.707 15H3.5a.5.5 0 0 0 .354-.146L11 7.707l1.146 1.147a.5.5 0 0 0 .708-.708l-.647-.646 3.147-3.146a1.207 1.207 0 0 0 0-1.708zM2 12.707l7-7L10.293 7l-7 7H2z"/></symbol><symbol class="bi bi-eyeglasses" viewBox="0 0 16 16" id="eyeglasses"><path d="M4 6a2 2 0 1 1 0 4 2 2 0 0 1 0-4m2.625.547a3 3 0 0 0-5.584.953H.5a.5.5 0 0 0 0 1h.541A3 3 0 0 0 7 8a1 1 0 0 1 2 0 3 3 0 0 0 5.959.5h.541a.5.5 0 0 0 0-1h-.541a3 3 0 0 0-5.584-.953A2 2 0 0 0 8 6c-.532 0-1.016.208-1.375.547M14 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/></symbol><symbol class="bi bi-facebook" viewBox="0 0 16 16" id="facebook"><path d="M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951"/></symbol><symbol class="bi bi-fan" viewBox="0 0 16 16" id="fan"><path d="M10 3c0 1.313-.304 2.508-.8 3.4a2 2 0 0 0-1.484-.38c-.28-.982-.91-2.04-1.838-2.969a8 8 0 0 0-.491-.454A6 6 0 0 1 8 2c.691 0 1.355.117 1.973.332Q10 2.661 10 3m0 5q0 .11-.012.217c1.018-.019 2.2-.353 3.331-1.006a8 8 0 0 0 .57-.361 6 6 0 0 0-2.53-3.823 9 9 0 0 1-.145.64c-.34 1.269-.944 2.346-1.656 3.079.277.343.442.78.442 1.254m-.137.728a2 2 0 0 1-1.07 1.109c.525.87 1.405 1.725 2.535 2.377q.3.174.605.317a6 6 0 0 0 2.053-4.111q-.311.11-.641.199c-1.264.339-2.493.356-3.482.11ZM8 10c-.45 0-.866-.149-1.2-.4-.494.89-.796 2.082-.796 3.391q0 .346.027.678A6 6 0 0 0 8 14c.94 0 1.83-.216 2.623-.602a8 8 0 0 1-.497-.458c-.925-.926-1.555-1.981-1.836-2.96Q8.149 10 8 10M6 8q0-.12.014-.239c-1.02.017-2.205.351-3.34 1.007a8 8 0 0 0-.568.359 6 6 0 0 0 2.525 3.839 8 8 0 0 1 .148-.653c.34-1.267.94-2.342 1.65-3.075A2 2 0 0 1 6 8m-3.347-.632c1.267-.34 2.498-.355 3.488-.107.196-.494.583-.89 1.07-1.1-.524-.874-1.406-1.733-2.541-2.388a8 8 0 0 0-.594-.312 6 6 0 0 0-2.06 4.106q.309-.11.637-.199M8 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/></symbol><symbol class="bi bi-fast-forward" viewBox="0 0 16 16" id="fast-forward"><path d="M6.804 8 1 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C.713 12.69 0 12.345 0 11.692V4.308c0-.653.713-.998 1.233-.696z"/><path d="M14.804 8 9 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C8.713 12.69 8 12.345 8 11.692V4.308c0-.653.713-.998 1.233-.696z"/></symbol><symbol class="bi bi-fast-forward-btn" viewBox="0 0 16 16" id="fast-forward-btn"><path d="M8.79 5.093A.5.5 0 0 0 8 5.5v1.886L4.79 5.093A.5.5 0 0 0 4 5.5v5a.5.5 0 0 0 .79.407L8 8.614V10.5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814z"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-fast-forward-btn-fill" viewBox="0 0 16 16" id="fast-forward-btn-fill"><path d="M0 4v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2m4.271 1.055a.5.5 0 0 1 .52.038L8 7.386V5.5a.5.5 0 0 1 .79-.407l3.5 2.5a.5.5 0 0 1 0 .814l-3.5 2.5A.5.5 0 0 1 8 10.5V8.614l-3.21 2.293A.5.5 0 0 1 4 10.5v-5a.5.5 0 0 1 .271-.445"/></symbol><symbol class="bi bi-fast-forward-circle" viewBox="0 0 16 16" id="fast-forward-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M4.271 5.055a.5.5 0 0 1 .52.038L8 7.386V5.5a.5.5 0 0 1 .79-.407l3.5 2.5a.5.5 0 0 1 0 .814l-3.5 2.5A.5.5 0 0 1 8 10.5V8.614l-3.21 2.293A.5.5 0 0 1 4 10.5v-5a.5.5 0 0 1 .271-.445"/></symbol><symbol class="bi bi-fast-forward-circle-fill" viewBox="0 0 16 16" id="fast-forward-circle-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M4.79 5.093 8 7.386V5.5a.5.5 0 0 1 .79-.407l3.5 2.5a.5.5 0 0 1 0 .814l-3.5 2.5A.5.5 0 0 1 8 10.5V8.614l-3.21 2.293A.5.5 0 0 1 4 10.5v-5a.5.5 0 0 1 .79-.407"/></symbol><symbol class="bi bi-fast-forward-fill" viewBox="0 0 16 16" id="fast-forward-fill"><path d="M7.596 7.304a.802.802 0 0 1 0 1.392l-6.363 3.692C.713 12.69 0 12.345 0 11.692V4.308c0-.653.713-.998 1.233-.696z"/><path d="M15.596 7.304a.802.802 0 0 1 0 1.392l-6.363 3.692C8.713 12.69 8 12.345 8 11.692V4.308c0-.653.713-.998 1.233-.696z"/></symbol><symbol class="bi bi-feather" viewBox="0 0 16 16" id="feather"><path d="M15.807.531c-.174-.177-.41-.289-.64-.363a3.8 3.8 0 0 0-.833-.15c-.62-.049-1.394 0-2.252.175C10.365.545 8.264 1.415 6.315 3.1S3.147 6.824 2.557 8.523c-.294.847-.44 1.634-.429 2.268.005.316.05.62.154.88q.025.061.056.122A68 68 0 0 0 .08 15.198a.53.53 0 0 0 .157.72.504.504 0 0 0 .705-.16 68 68 0 0 1 2.158-3.26c.285.141.616.195.958.182.513-.02 1.098-.188 1.723-.49 1.25-.605 2.744-1.787 4.303-3.642l1.518-1.55a.53.53 0 0 0 0-.739l-.729-.744 1.311.209a.5.5 0 0 0 .443-.15l.663-.684c.663-.68 1.292-1.325 1.763-1.892.314-.378.585-.752.754-1.107.163-.345.278-.773.112-1.188a.5.5 0 0 0-.112-.172M3.733 11.62C5.385 9.374 7.24 7.215 9.309 5.394l1.21 1.234-1.171 1.196-.027.03c-1.5 1.789-2.891 2.867-3.977 3.393-.544.263-.99.378-1.324.39a1.3 1.3 0 0 1-.287-.018Zm6.769-7.22c1.31-1.028 2.7-1.914 4.172-2.6a7 7 0 0 1-.4.523c-.442.533-1.028 1.134-1.681 1.804l-.51.524zm3.346-3.357C9.594 3.147 6.045 6.8 3.149 10.678c.007-.464.121-1.086.37-1.806.533-1.535 1.65-3.415 3.455-4.976 1.807-1.561 3.746-2.36 5.31-2.68a8 8 0 0 1 1.564-.173"/></symbol><symbol class="bi bi-feather2" viewBox="0 0 16 16" id="feather2"><path d="M7.5 1.063v9.556L6 8.819V3a2 2 0 0 1 1.5-1.937M8 0a3 3 0 0 0-3 3v6a.5.5 0 0 0 .116.32L7.5 12.181V15.5a.5.5 0 0 0 1 0v-3.319l2.384-2.86A.5.5 0 0 0 11 9V3a3 3 0 0 0-3-3m.5 1.063A2 2 0 0 1 10 3v.293l-1.5 1.5zM10 4.707V8.82l-1.5 1.8V6.207z"/></symbol><symbol class="bi bi-file" viewBox="0 0 16 16" id="file"><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-arrow-down" viewBox="0 0 16 16" id="file-arrow-down"><path d="M8 5a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5A.5.5 0 0 1 8 5"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-arrow-down-fill" viewBox="0 0 16 16" id="file-arrow-down-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M8 5a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5A.5.5 0 0 1 8 5"/></symbol><symbol class="bi bi-file-arrow-up" viewBox="0 0 16 16" id="file-arrow-up"><path d="M8 11a.5.5 0 0 0 .5-.5V6.707l1.146 1.147a.5.5 0 0 0 .708-.708l-2-2a.5.5 0 0 0-.708 0l-2 2a.5.5 0 1 0 .708.708L7.5 6.707V10.5a.5.5 0 0 0 .5.5"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-arrow-up-fill" viewBox="0 0 16 16" id="file-arrow-up-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M7.5 6.707 6.354 7.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0z"/></symbol><symbol class="bi bi-file-bar-graph" viewBox="0 0 16 16" id="file-bar-graph"><path d="M4.5 12a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5zm3 0a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5zm3 0a.5.5 0 0 1-.5-.5v-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5z"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-bar-graph-fill" viewBox="0 0 16 16" id="file-bar-graph-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-2 11.5v-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5m-2.5.5a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5zm-3 0a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5z"/></symbol><symbol class="bi bi-file-binary" viewBox="0 0 16 16" id="file-binary"><path d="M5.526 13.09c.976 0 1.524-.79 1.524-2.205 0-1.412-.548-2.203-1.524-2.203-.978 0-1.526.79-1.526 2.203 0 1.415.548 2.206 1.526 2.206zm-.832-2.205c0-1.05.29-1.612.832-1.612.358 0 .607.247.733.721L4.7 11.137a7 7 0 0 1-.006-.252m.832 1.614c-.36 0-.606-.246-.732-.718l1.556-1.145q.005.12.005.249c0 1.052-.29 1.614-.829 1.614m5.329.501v-.595H9.73V8.772h-.69l-1.19.786v.688L8.986 9.5h.05v2.906h-1.18V13h3z"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-binary-fill" viewBox="0 0 16 16" id="file-binary-fill"><path d="M5.526 9.273c-.542 0-.832.563-.832 1.612q0 .133.006.252l1.56-1.143c-.126-.474-.375-.72-.733-.72zm-.732 2.508c.126.472.372.718.732.718.54 0 .83-.563.83-1.614q0-.129-.006-.25z"/><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M7.05 10.885c0 1.415-.548 2.206-1.524 2.206C4.548 13.09 4 12.3 4 10.885c0-1.412.548-2.203 1.526-2.203.976 0 1.524.79 1.524 2.203m3.805 1.52V13h-3v-.595h1.181V9.5h-.05l-1.136.747v-.688l1.19-.786h.69v3.633z"/></symbol><symbol class="bi bi-file-break" viewBox="0 0 16 16" id="file-break"><path d="M0 10.5a.5.5 0 0 1 .5-.5h15a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5M12 0H4a2 2 0 0 0-2 2v7h1V2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v7h1V2a2 2 0 0 0-2-2m2 12h-1v2a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-2H2v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2z"/></symbol><symbol class="bi bi-file-break-fill" viewBox="0 0 16 16" id="file-break-fill"><path d="M4 0h8a2 2 0 0 1 2 2v7H2V2a2 2 0 0 1 2-2M2 12h12v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zM.5 10a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-file-check" viewBox="0 0 16 16" id="file-check"><path d="M10.854 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 8.793l2.646-2.647a.5.5 0 0 1 .708 0"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-check-fill" viewBox="0 0 16 16" id="file-check-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-1.146 6.854-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 8.793l2.646-2.647a.5.5 0 0 1 .708.708"/></symbol><symbol class="bi bi-file-code" viewBox="0 0 16 16" id="file-code"><path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-file-code-fill" viewBox="0 0 16 16" id="file-code-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0 2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 1 1 .708-.708"/></symbol><symbol class="bi bi-file-diff" viewBox="0 0 16 16" id="file-diff"><path d="M8 4a.5.5 0 0 1 .5.5V6H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V7H6a.5.5 0 0 1 0-1h1.5V4.5A.5.5 0 0 1 8 4m-2.5 6.5A.5.5 0 0 1 6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-file-diff-fill" viewBox="0 0 16 16" id="file-diff-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M8.5 4.5V6H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V7H6a.5.5 0 0 1 0-1h1.5V4.5a.5.5 0 0 1 1 0M6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-file-earmark" viewBox="0 0 16 16" id="file-earmark"><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/></symbol><symbol class="bi bi-file-earmark-arrow-down" viewBox="0 0 16 16" id="file-earmark-arrow-down"><path d="M8.5 6.5a.5.5 0 0 0-1 0v3.793L6.354 9.146a.5.5 0 1 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 10.293z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-arrow-down-fill" viewBox="0 0 16 16" id="file-earmark-arrow-down-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m-1 4v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7.5 11.293V7.5a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-file-earmark-arrow-up" viewBox="0 0 16 16" id="file-earmark-arrow-up"><path d="M8.5 11.5a.5.5 0 0 1-1 0V7.707L6.354 8.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 7.707z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-arrow-up-fill" viewBox="0 0 16 16" id="file-earmark-arrow-up-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M6.354 9.854a.5.5 0 0 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 8.707V12.5a.5.5 0 0 1-1 0V8.707z"/></symbol><symbol class="bi bi-file-earmark-bar-graph" viewBox="0 0 16 16" id="file-earmark-bar-graph"><path d="M10 13.5a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-6a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-2.5.5a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5zm-3 0a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-bar-graph-fill" viewBox="0 0 16 16" id="file-earmark-bar-graph-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m.5 10v-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5m-2.5.5a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5zm-3 0a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5z"/></symbol><symbol class="bi bi-file-earmark-binary" viewBox="0 0 16 16" id="file-earmark-binary"><path d="M7.05 11.885c0 1.415-.548 2.206-1.524 2.206C4.548 14.09 4 13.3 4 11.885c0-1.412.548-2.203 1.526-2.203.976 0 1.524.79 1.524 2.203m-1.524-1.612c-.542 0-.832.563-.832 1.612q0 .133.006.252l1.559-1.143c-.126-.474-.375-.72-.733-.72zm-.732 2.508c.126.472.372.718.732.718.54 0 .83-.563.83-1.614q0-.129-.006-.25zm6.061.624V14h-3v-.595h1.181V10.5h-.05l-1.136.747v-.688l1.19-.786h.69v3.633z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-binary-fill" viewBox="0 0 16 16" id="file-earmark-binary-fill"><path d="M5.526 10.273c-.542 0-.832.563-.832 1.612q0 .133.006.252l1.559-1.143c-.126-.474-.375-.72-.733-.72zm-.732 2.508c.126.472.372.718.732.718.54 0 .83-.563.83-1.614q0-.129-.006-.25z"/><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m-2.45 8.385c0 1.415-.548 2.206-1.524 2.206C4.548 14.09 4 13.3 4 11.885c0-1.412.548-2.203 1.526-2.203.976 0 1.524.79 1.524 2.203m3.805 1.52V14h-3v-.595h1.181V10.5h-.05l-1.136.747v-.688l1.19-.786h.69v3.633z"/></symbol><symbol class="bi bi-file-earmark-break" viewBox="0 0 16 16" id="file-earmark-break"><path d="M14 4.5V9h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v7H2V2a2 2 0 0 1 2-2h5.5zM13 12h1v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-2h1v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1zM.5 10a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-file-earmark-break-fill" viewBox="0 0 16 16" id="file-earmark-break-fill"><path d="M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V9H2V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2zM2 12h12v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zM.5 10a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-file-earmark-check" viewBox="0 0 16 16" id="file-earmark-check"><path d="M10.854 7.854a.5.5 0 0 0-.708-.708L7.5 9.793 6.354 8.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-check-fill" viewBox="0 0 16 16" id="file-earmark-check-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m1.354 4.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708.708"/></symbol><symbol class="bi bi-file-earmark-code" viewBox="0 0 16 16" id="file-earmark-code"><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/><path d="M8.646 6.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 9 8.646 7.354a.5.5 0 0 1 0-.708m-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 9l1.647-1.646a.5.5 0 0 0 0-.708"/></symbol><symbol class="bi bi-file-earmark-code-fill" viewBox="0 0 16 16" id="file-earmark-code-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M6.646 7.646a.5.5 0 1 1 .708.708L5.707 10l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0 2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 10 8.646 8.354a.5.5 0 1 1 .708-.708"/></symbol><symbol class="bi bi-file-earmark-diff" viewBox="0 0 16 16" id="file-earmark-diff"><path d="M8 5a.5.5 0 0 1 .5.5V7H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V8H6a.5.5 0 0 1 0-1h1.5V5.5A.5.5 0 0 1 8 5m-2.5 6.5A.5.5 0 0 1 6 11h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-diff-fill" viewBox="0 0 16 16" id="file-earmark-diff-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M8 6a.5.5 0 0 1 .5.5V8H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V9H6a.5.5 0 0 1 0-1h1.5V6.5A.5.5 0 0 1 8 6m-2.5 6.5A.5.5 0 0 1 6 12h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-file-earmark-easel" viewBox="0 0 16 16" id="file-earmark-easel"><path d="M8.5 6a.5.5 0 1 0-1 0h-2A1.5 1.5 0 0 0 4 7.5v2A1.5 1.5 0 0 0 5.5 11h.473l-.447 1.342a.5.5 0 1 0 .948.316L7.027 11H7.5v1a.5.5 0 0 0 1 0v-1h.473l.553 1.658a.5.5 0 1 0 .948-.316L10.027 11h.473A1.5 1.5 0 0 0 12 9.5v-2A1.5 1.5 0 0 0 10.5 6zM5 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-easel-fill" viewBox="0 0 16 16" id="file-earmark-easel-fill"><path d="M5 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M8.5 6h2A1.5 1.5 0 0 1 12 7.5v2a1.5 1.5 0 0 1-1.5 1.5h-.473l.447 1.342a.5.5 0 0 1-.948.316L8.973 11H8.5v1a.5.5 0 0 1-1 0v-1h-.473l-.553 1.658a.5.5 0 1 1-.948-.316L5.973 11H5.5A1.5 1.5 0 0 1 4 9.5v-2A1.5 1.5 0 0 1 5.5 6h2a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-file-earmark-excel" viewBox="0 0 16 16" id="file-earmark-excel"><path d="M5.884 6.68a.5.5 0 1 0-.768.64L7.349 10l-2.233 2.68a.5.5 0 0 0 .768.64L8 10.781l2.116 2.54a.5.5 0 0 0 .768-.641L8.651 10l2.233-2.68a.5.5 0 0 0-.768-.64L8 9.219l-2.116-2.54z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-excel-fill" viewBox="0 0 16 16" id="file-earmark-excel-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M5.884 6.68 8 9.219l2.116-2.54a.5.5 0 1 1 .768.641L8.651 10l2.233 2.68a.5.5 0 0 1-.768.64L8 10.781l-2.116 2.54a.5.5 0 0 1-.768-.641L7.349 10 5.116 7.32a.5.5 0 1 1 .768-.64"/></symbol><symbol class="bi bi-file-earmark-fill" viewBox="0 0 16 16" id="file-earmark-fill"><path d="M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2z"/></symbol><symbol class="bi bi-file-earmark-font" viewBox="0 0 16 16" id="file-earmark-font"><path d="M10.943 6H5.057L5 8h.5c.18-1.096.356-1.192 1.694-1.235l.293-.01v5.09c0 .47-.1.582-.898.655v.5H9.41v-.5c-.803-.073-.903-.184-.903-.654V6.755l.298.01c1.338.043 1.514.14 1.694 1.235h.5l-.057-2z"/><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/></symbol><symbol class="bi bi-file-earmark-font-fill" viewBox="0 0 16 16" id="file-earmark-font-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M5.057 6h5.886L11 8h-.5c-.18-1.096-.356-1.192-1.694-1.235l-.298-.01v5.09c0 .47.1.582.903.655v.5H6.59v-.5c.799-.073.898-.184.898-.654V6.755l-.293.01C5.856 6.808 5.68 6.905 5.5 8H5z"/></symbol><symbol class="bi bi-file-earmark-image" viewBox="0 0 16 16" id="file-earmark-image"><path d="M6.502 7a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/><path d="M14 14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zM4 1a1 1 0 0 0-1 1v10l2.224-2.224a.5.5 0 0 1 .61-.075L8 11l2.157-3.02a.5.5 0 0 1 .76-.063L13 10V4.5h-2A1.5 1.5 0 0 1 9.5 3V1z"/></symbol><symbol class="bi bi-file-earmark-image-fill" viewBox="0 0 16 16" id="file-earmark-image-fill"><path d="M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707v5.586l-2.73-2.73a1 1 0 0 0-1.52.127l-1.889 2.644-1.769-1.062a1 1 0 0 0-1.222.15L2 12.292V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2zm-1.498 4a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/><path d="M10.564 8.27 14 11.708V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-.293l3.578-3.577 2.56 1.536 2.426-3.395z"/></symbol><symbol class="bi bi-file-earmark-lock" viewBox="0 0 16 16" id="file-earmark-lock"><path d="M10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0M7 7v1h2V7a1 1 0 0 0-2 0M6 9.3v2.4c0 .042.02.107.105.175A.64.64 0 0 0 6.5 12h3a.64.64 0 0 0 .395-.125c.085-.068.105-.133.105-.175V9.3c0-.042-.02-.107-.105-.175A.64.64 0 0 0 9.5 9h-3a.64.64 0 0 0-.395.125C6.02 9.193 6 9.258 6 9.3"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-lock-fill" viewBox="0 0 16 16" id="file-earmark-lock-fill"><path d="M7 7a1 1 0 0 1 2 0v1H7zM6 9.3c0-.042.02-.107.105-.175A.64.64 0 0 1 6.5 9h3a.64.64 0 0 1 .395.125c.085.068.105.133.105.175v2.4c0 .042-.02.107-.105.175A.64.64 0 0 1 9.5 12h-3a.64.64 0 0 1-.395-.125C6.02 11.807 6 11.742 6 11.7z"/><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0"/></symbol><symbol class="bi bi-file-earmark-lock2" viewBox="0 0 16 16" id="file-earmark-lock2"><path d="M10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0M7 7v1h2V7a1 1 0 0 0-2 0"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-lock2-fill" viewBox="0 0 16 16" id="file-earmark-lock2-fill"><path d="M7 7a1 1 0 0 1 2 0v1H7z"/><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0"/></symbol><symbol class="bi bi-file-earmark-medical" viewBox="0 0 16 16" id="file-earmark-medical"><path d="M7.5 5.5a.5.5 0 0 0-1 0v.634l-.549-.317a.5.5 0 1 0-.5.866L6 7l-.549.317a.5.5 0 1 0 .5.866l.549-.317V8.5a.5.5 0 1 0 1 0v-.634l.549.317a.5.5 0 1 0 .5-.866L8 7l.549-.317a.5.5 0 1 0-.5-.866l-.549.317zm-2 4.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-medical-fill" viewBox="0 0 16 16" id="file-earmark-medical-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m-3 2v.634l.549-.317a.5.5 0 1 1 .5.866L7 7l.549.317a.5.5 0 1 1-.5.866L6.5 7.866V8.5a.5.5 0 0 1-1 0v-.634l-.549.317a.5.5 0 1 1-.5-.866L5 7l-.549-.317a.5.5 0 0 1 .5-.866l.549.317V5.5a.5.5 0 1 1 1 0m-2 4.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1m0 2h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-file-earmark-minus" viewBox="0 0 16 16" id="file-earmark-minus"><path d="M5.5 9a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/></symbol><symbol class="bi bi-file-earmark-minus-fill" viewBox="0 0 16 16" id="file-earmark-minus-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M6 8.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-file-earmark-music" viewBox="0 0 16 16" id="file-earmark-music"><path d="M11 6.64a1 1 0 0 0-1.243-.97l-1 .25A1 1 0 0 0 8 6.89v4.306A2.6 2.6 0 0 0 7 11c-.5 0-.974.134-1.338.377-.36.24-.662.628-.662 1.123s.301.883.662 1.123c.364.243.839.377 1.338.377s.974-.134 1.338-.377c.36-.24.662-.628.662-1.123V8.89l2-.5z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-music-fill" viewBox="0 0 16 16" id="file-earmark-music-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M11 6.64v1.75l-2 .5v3.61c0 .495-.301.883-.662 1.123C7.974 13.866 7.499 14 7 14s-.974-.134-1.338-.377C5.302 13.383 5 12.995 5 12.5s.301-.883.662-1.123C6.026 11.134 6.501 11 7 11c.356 0 .7.068 1 .196V6.89a1 1 0 0 1 .757-.97l1-.25A1 1 0 0 1 11 6.64"/></symbol><symbol class="bi bi-file-earmark-pdf" viewBox="0 0 16 16" id="file-earmark-pdf"><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/><path d="M4.603 14.087a.8.8 0 0 1-.438-.42c-.195-.388-.13-.776.08-1.102.198-.307.526-.568.897-.787a7.7 7.7 0 0 1 1.482-.645 20 20 0 0 0 1.062-2.227 7.3 7.3 0 0 1-.43-1.295c-.086-.4-.119-.796-.046-1.136.075-.354.274-.672.65-.823.192-.077.4-.12.602-.077a.7.7 0 0 1 .477.365c.088.164.12.356.127.538.007.188-.012.396-.047.614-.084.51-.27 1.134-.52 1.794a11 11 0 0 0 .98 1.686 5.8 5.8 0 0 1 1.334.05c.364.066.734.195.96.465.12.144.193.32.2.518.007.192-.047.382-.138.563a1.04 1.04 0 0 1-.354.416.86.86 0 0 1-.51.138c-.331-.014-.654-.196-.933-.417a5.7 5.7 0 0 1-.911-.95 11.7 11.7 0 0 0-1.997.406 11.3 11.3 0 0 1-1.02 1.51c-.292.35-.609.656-.927.787a.8.8 0 0 1-.58.029m1.379-1.901q-.25.115-.459.238c-.328.194-.541.383-.647.547-.094.145-.096.25-.04.361q.016.032.026.044l.035-.012c.137-.056.355-.235.635-.572a8 8 0 0 0 .45-.606m1.64-1.33a13 13 0 0 1 1.01-.193 12 12 0 0 1-.51-.858 21 21 0 0 1-.5 1.05zm2.446.45q.226.245.435.41c.24.19.407.253.498.256a.1.1 0 0 0 .07-.015.3.3 0 0 0 .094-.125.44.44 0 0 0 .059-.2.1.1 0 0 0-.026-.063c-.052-.062-.2-.152-.518-.209a4 4 0 0 0-.612-.053zM8.078 7.8a7 7 0 0 0 .2-.828q.046-.282.038-.465a.6.6 0 0 0-.032-.198.5.5 0 0 0-.145.04c-.087.035-.158.106-.196.283-.04.192-.03.469.046.822q.036.167.09.346z"/></symbol><symbol class="bi bi-file-earmark-pdf-fill" viewBox="0 0 16 16" id="file-earmark-pdf-fill"><path d="M5.523 12.424q.21-.124.459-.238a8 8 0 0 1-.45.606c-.28.337-.498.516-.635.572l-.035.012a.3.3 0 0 1-.026-.044c-.056-.11-.054-.216.04-.36.106-.165.319-.354.647-.548m2.455-1.647q-.178.037-.356.078a21 21 0 0 0 .5-1.05 12 12 0 0 0 .51.858q-.326.048-.654.114m2.525.939a4 4 0 0 1-.435-.41q.344.007.612.054c.317.057.466.147.518.209a.1.1 0 0 1 .026.064.44.44 0 0 1-.06.2.3.3 0 0 1-.094.124.1.1 0 0 1-.069.015c-.09-.003-.258-.066-.498-.256M8.278 6.97c-.04.244-.108.524-.2.829a5 5 0 0 1-.089-.346c-.076-.353-.087-.63-.046-.822.038-.177.11-.248.196-.283a.5.5 0 0 1 .145-.04c.013.03.028.092.032.198q.008.183-.038.465z"/><path fill-rule="evenodd" d="M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2zM4.165 13.668c.09.18.23.343.438.419.207.075.412.04.58-.03.318-.13.635-.436.926-.786.333-.401.683-.927 1.021-1.51a11.7 11.7 0 0 1 1.997-.406c.3.383.61.713.91.95.28.22.603.403.934.417a.86.86 0 0 0 .51-.138c.155-.101.27-.247.354-.416.09-.181.145-.37.138-.563a.84.84 0 0 0-.2-.518c-.226-.27-.596-.4-.96-.465a5.8 5.8 0 0 0-1.335-.05 11 11 0 0 1-.98-1.686c.25-.66.437-1.284.52-1.794.036-.218.055-.426.048-.614a1.24 1.24 0 0 0-.127-.538.7.7 0 0 0-.477-.365c-.202-.043-.41 0-.601.077-.377.15-.576.47-.651.823-.073.34-.04.736.046 1.136.088.406.238.848.43 1.295a20 20 0 0 1-1.062 2.227 7.7 7.7 0 0 0-1.482.645c-.37.22-.699.48-.897.787-.21.326-.275.714-.08 1.103"/></symbol><symbol class="bi bi-file-earmark-person" viewBox="0 0 16 16" id="file-earmark-person"><path d="M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2v9.255S12 12 8 12s-5 1.755-5 1.755V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-person-fill" viewBox="0 0 16 16" id="file-earmark-person-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0m2 5.755V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-.245S4 12 8 12s5 1.755 5 1.755"/></symbol><symbol class="bi bi-file-earmark-play" viewBox="0 0 16 16" id="file-earmark-play"><path d="M6 6.883v4.234a.5.5 0 0 0 .757.429l3.528-2.117a.5.5 0 0 0 0-.858L6.757 6.454a.5.5 0 0 0-.757.43z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-play-fill" viewBox="0 0 16 16" id="file-earmark-play-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M6 6.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43V6.884z"/></symbol><symbol class="bi bi-file-earmark-plus" viewBox="0 0 16 16" id="file-earmark-plus"><path d="M8 6.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V11a.5.5 0 0 1-1 0V9.5H6a.5.5 0 0 1 0-1h1.5V7a.5.5 0 0 1 .5-.5"/><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/></symbol><symbol class="bi bi-file-earmark-plus-fill" viewBox="0 0 16 16" id="file-earmark-plus-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M8.5 7v1.5H10a.5.5 0 0 1 0 1H8.5V11a.5.5 0 0 1-1 0V9.5H6a.5.5 0 0 1 0-1h1.5V7a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-file-earmark-post" viewBox="0 0 16 16" id="file-earmark-post"><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/><path d="M4 6.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5H7a.5.5 0 0 1 0 1H4.5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-file-earmark-post-fill" viewBox="0 0 16 16" id="file-earmark-post-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m-5-.5H7a.5.5 0 0 1 0 1H4.5a.5.5 0 0 1 0-1m0 3h7a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-file-earmark-ppt" viewBox="0 0 16 16" id="file-earmark-ppt"><path d="M7 5.5a1 1 0 0 0-1 1V13a.5.5 0 0 0 1 0v-2h1.188a2.75 2.75 0 0 0 0-5.5zM8.188 10H7V6.5h1.188a1.75 1.75 0 1 1 0 3.5"/><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/></symbol><symbol class="bi bi-file-earmark-ppt-fill" viewBox="0 0 16 16" id="file-earmark-ppt-fill"><path d="M8.188 10H7V6.5h1.188a1.75 1.75 0 1 1 0 3.5"/><path d="M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2zM7 5.5a1 1 0 0 0-1 1V13a.5.5 0 0 0 1 0v-2h1.188a2.75 2.75 0 0 0 0-5.5z"/></symbol><symbol class="bi bi-file-earmark-richtext" viewBox="0 0 16 16" id="file-earmark-richtext"><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/><path d="M4.5 12.5A.5.5 0 0 1 5 12h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5m0-2A.5.5 0 0 1 5 10h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5m1.639-3.708 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V8.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V8s1.54-1.274 1.639-1.208M6.25 6a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5"/></symbol><symbol class="bi bi-file-earmark-richtext-fill" viewBox="0 0 16 16" id="file-earmark-richtext-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M7 6.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V9.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V9s1.54-1.274 1.639-1.208M5 11h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1m0 2h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-file-earmark-ruled" viewBox="0 0 16 16" id="file-earmark-ruled"><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V9H3V2a1 1 0 0 1 1-1h5.5zM3 12v-2h2v2zm0 1h2v2H4a1 1 0 0 1-1-1zm3 2v-2h7v1a1 1 0 0 1-1 1zm7-3H6v-2h7z"/></symbol><symbol class="bi bi-file-earmark-ruled-fill" viewBox="0 0 16 16" id="file-earmark-ruled-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M3 9h10v1H6v2h7v1H6v2H5v-2H3v-1h2v-2H3z"/></symbol><symbol class="bi bi-file-earmark-slides" viewBox="0 0 16 16" id="file-earmark-slides"><path d="M5 6a.5.5 0 0 0-.496.438l-.5 4A.5.5 0 0 0 4.5 11h3v2.016c-.863.055-1.5.251-1.5.484 0 .276.895.5 2 .5s2-.224 2-.5c0-.233-.637-.429-1.5-.484V11h3a.5.5 0 0 0 .496-.562l-.5-4A.5.5 0 0 0 11 6zm2 3.78V7.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 9.778z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-slides-fill" viewBox="0 0 16 16" id="file-earmark-slides-fill"><path d="M7 9.78V7.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 9.778z"/><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M5 6h6a.5.5 0 0 1 .496.438l.5 4A.5.5 0 0 1 11.5 11h-3v2.016c.863.055 1.5.251 1.5.484 0 .276-.895.5-2 .5s-2-.224-2-.5c0-.233.637-.429 1.5-.484V11h-3a.5.5 0 0 1-.496-.562l.5-4A.5.5 0 0 1 5 6"/></symbol><symbol class="bi bi-file-earmark-spreadsheet" viewBox="0 0 16 16" id="file-earmark-spreadsheet"><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V9H3V2a1 1 0 0 1 1-1h5.5zM3 12v-2h2v2zm0 1h2v2H4a1 1 0 0 1-1-1zm3 2v-2h3v2zm4 0v-2h3v1a1 1 0 0 1-1 1zm3-3h-3v-2h3zm-7 0v-2h3v2z"/></symbol><symbol class="bi bi-file-earmark-spreadsheet-fill" viewBox="0 0 16 16" id="file-earmark-spreadsheet-fill"><path d="M6 12v-2h3v2z"/><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M3 9h10v1h-3v2h3v1h-3v2H9v-2H6v2H5v-2H3v-1h2v-2H3z"/></symbol><symbol class="bi bi-file-earmark-text" viewBox="0 0 16 16" id="file-earmark-text"><path d="M5.5 7a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zM5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/><path d="M9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5zm0 1v2A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z"/></symbol><symbol class="bi bi-file-earmark-text-fill" viewBox="0 0 16 16" id="file-earmark-text-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M4.5 9a.5.5 0 0 1 0-1h7a.5.5 0 0 1 0 1zM4 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m.5 2.5a.5.5 0 0 1 0-1h4a.5.5 0 0 1 0 1z"/></symbol><symbol class="bi bi-file-earmark-word" viewBox="0 0 16 16" id="file-earmark-word"><path d="M5.485 6.879a.5.5 0 1 0-.97.242l1.5 6a.5.5 0 0 0 .967.01L8 9.402l1.018 3.73a.5.5 0 0 0 .967-.01l1.5-6a.5.5 0 0 0-.97-.242l-1.036 4.144-.997-3.655a.5.5 0 0 0-.964 0l-.997 3.655L5.485 6.88z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-word-fill" viewBox="0 0 16 16" id="file-earmark-word-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M5.485 6.879l1.036 4.144.997-3.655a.5.5 0 0 1 .964 0l.997 3.655 1.036-4.144a.5.5 0 0 1 .97.242l-1.5 6a.5.5 0 0 1-.967.01L8 9.402l-1.018 3.73a.5.5 0 0 1-.967-.01l-1.5-6a.5.5 0 1 1 .97-.242z"/></symbol><symbol class="bi bi-file-earmark-x" viewBox="0 0 16 16" id="file-earmark-x"><path d="M6.854 7.146a.5.5 0 1 0-.708.708L7.293 9l-1.147 1.146a.5.5 0 0 0 .708.708L8 9.707l1.146 1.147a.5.5 0 0 0 .708-.708L8.707 9l1.147-1.146a.5.5 0 0 0-.708-.708L8 8.293z"/><path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/></symbol><symbol class="bi bi-file-earmark-x-fill" viewBox="0 0 16 16" id="file-earmark-x-fill"><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M6.854 7.146 8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 1 1 .708-.708"/></symbol><symbol class="bi bi-file-earmark-zip" viewBox="0 0 16 16" id="file-earmark-zip"><path d="M5 7.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v.938l.4 1.599a1 1 0 0 1-.416 1.074l-.93.62a1 1 0 0 1-1.11 0l-.929-.62a1 1 0 0 1-.415-1.074L5 8.438zm2 0H6v.938a1 1 0 0 1-.03.243l-.4 1.598.93.62.929-.62-.4-1.598A1 1 0 0 1 7 8.438z"/><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1h-2v1h-1v1h1v1h-1v1h1v1H6V5H5V4h1V3H5V2h1V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/></symbol><symbol class="bi bi-file-earmark-zip-fill" viewBox="0 0 16 16" id="file-earmark-zip-fill"><path d="M5.5 9.438V8.5h1v.938a1 1 0 0 0 .03.243l.4 1.598-.93.62-.93-.62.4-1.598a1 1 0 0 0 .03-.243"/><path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m-4-.5V2h-1V1H6v1h1v1H6v1h1v1H6v1h1v1H5.5V6h-1V5h1V4h-1V3zm0 4.5h1a1 1 0 0 1 1 1v.938l.4 1.599a1 1 0 0 1-.416 1.074l-.93.62a1 1 0 0 1-1.109 0l-.93-.62a1 1 0 0 1-.415-1.074l.4-1.599V8.5a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-easel" viewBox="0 0 16 16" id="file-easel"><path d="M8.5 5a.5.5 0 1 0-1 0h-2A1.5 1.5 0 0 0 4 6.5v2A1.5 1.5 0 0 0 5.5 10h.473l-.447 1.342a.5.5 0 1 0 .948.316L7.027 10H7.5v1a.5.5 0 0 0 1 0v-1h.473l.553 1.658a.5.5 0 1 0 .948-.316L10.027 10h.473A1.5 1.5 0 0 0 12 8.5v-2A1.5 1.5 0 0 0 10.5 5zM5 6.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-file-easel-fill" viewBox="0 0 16 16" id="file-easel-fill"><path d="M5 6.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M8.5 5h2A1.5 1.5 0 0 1 12 6.5v2a1.5 1.5 0 0 1-1.5 1.5h-.473l.447 1.342a.5.5 0 0 1-.948.316L8.973 10H8.5v1a.5.5 0 0 1-1 0v-1h-.473l-.553 1.658a.5.5 0 1 1-.948-.316L5.973 10H5.5A1.5 1.5 0 0 1 4 8.5v-2A1.5 1.5 0 0 1 5.5 5h2a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-file-excel" viewBox="0 0 16 16" id="file-excel"><path d="M5.18 4.616a.5.5 0 0 1 .704.064L8 7.219l2.116-2.54a.5.5 0 1 1 .768.641L8.651 8l2.233 2.68a.5.5 0 0 1-.768.64L8 8.781l-2.116 2.54a.5.5 0 0 1-.768-.641L7.349 8 5.116 5.32a.5.5 0 0 1 .064-.704"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-excel-fill" viewBox="0 0 16 16" id="file-excel-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M5.884 4.68 8 7.219l2.116-2.54a.5.5 0 1 1 .768.641L8.651 8l2.233 2.68a.5.5 0 0 1-.768.64L8 8.781l-2.116 2.54a.5.5 0 0 1-.768-.641L7.349 8 5.116 5.32a.5.5 0 1 1 .768-.64"/></symbol><symbol class="bi bi-file-fill" viewBox="0 0 16 16" id="file-fill"><path fill-rule="evenodd" d="M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2"/></symbol><symbol class="bi bi-file-font" viewBox="0 0 16 16" id="file-font"><path d="M10.943 4H5.057L5 6h.5c.18-1.096.356-1.192 1.694-1.235l.293-.01v6.09c0 .47-.1.582-.898.655v.5H9.41v-.5c-.803-.073-.903-.184-.903-.654V4.755l.298.01c1.338.043 1.514.14 1.694 1.235h.5l-.057-2z"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-font-fill" viewBox="0 0 16 16" id="file-font-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M5.057 4h5.886L11 6h-.5c-.18-1.096-.356-1.192-1.694-1.235l-.298-.01v6.09c0 .47.1.582.903.655v.5H6.59v-.5c.799-.073.898-.184.898-.654V4.755l-.293.01C5.856 4.808 5.68 4.905 5.5 6H5z"/></symbol><symbol class="bi bi-file-image" viewBox="0 0 16 16" id="file-image"><path d="M8.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M3 2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v8l-2.083-2.083a.5.5 0 0 0-.76.063L8 11 5.835 9.7a.5.5 0 0 0-.611.076L3 12z"/></symbol><symbol class="bi bi-file-image-fill" viewBox="0 0 16 16" id="file-image-fill"><path d="M4 0h8a2 2 0 0 1 2 2v8.293l-2.73-2.73a1 1 0 0 0-1.52.127l-1.889 2.644-1.769-1.062a1 1 0 0 0-1.222.15L2 12.292V2a2 2 0 0 1 2-2m4.002 5.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/><path d="M10.564 8.27 14 11.708V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-.293l3.578-3.577 2.56 1.536 2.426-3.395z"/></symbol><symbol class="bi bi-file-lock" viewBox="0 0 16 16" id="file-lock"><path d="M8 5a1 1 0 0 1 1 1v1H7V6a1 1 0 0 1 1-1m2 2.076V6a2 2 0 1 0-4 0v1.076c-.54.166-1 .597-1 1.224v2.4c0 .816.781 1.3 1.5 1.3h3c.719 0 1.5-.484 1.5-1.3V8.3c0-.627-.46-1.058-1-1.224M6.105 8.125A.64.64 0 0 1 6.5 8h3a.64.64 0 0 1 .395.125c.085.068.105.133.105.175v2.4c0 .042-.02.107-.105.175A.64.64 0 0 1 9.5 11h-3a.64.64 0 0 1-.395-.125C6.02 10.807 6 10.742 6 10.7V8.3c0-.042.02-.107.105-.175"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-lock-fill" viewBox="0 0 16 16" id="file-lock-fill"><path d="M7 6a1 1 0 0 1 2 0v1H7zM6 8.3c0-.042.02-.107.105-.175A.64.64 0 0 1 6.5 8h3a.64.64 0 0 1 .395.125c.085.068.105.133.105.175v2.4c0 .042-.02.107-.105.175A.64.64 0 0 1 9.5 11h-3a.64.64 0 0 1-.395-.125C6.02 10.807 6 10.742 6 10.7z"/><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-2 6v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V8.3c0-.627.46-1.058 1-1.224V6a2 2 0 1 1 4 0"/></symbol><symbol class="bi bi-file-lock2" viewBox="0 0 16 16" id="file-lock2"><path d="M8 5a1 1 0 0 1 1 1v1H7V6a1 1 0 0 1 1-1m2 2.076V6a2 2 0 1 0-4 0v1.076c-.54.166-1 .597-1 1.224v2.4c0 .816.781 1.3 1.5 1.3h3c.719 0 1.5-.484 1.5-1.3V8.3c0-.627-.46-1.058-1-1.224"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-lock2-fill" viewBox="0 0 16 16" id="file-lock2-fill"><path d="M7 6a1 1 0 0 1 2 0v1H7z"/><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-2 6v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V8.3c0-.627.46-1.058 1-1.224V6a2 2 0 1 1 4 0"/></symbol><symbol class="bi bi-file-medical" viewBox="0 0 16 16" id="file-medical"><path d="M8.5 4.5a.5.5 0 0 0-1 0v.634l-.549-.317a.5.5 0 1 0-.5.866L7 6l-.549.317a.5.5 0 1 0 .5.866l.549-.317V7.5a.5.5 0 1 0 1 0v-.634l.549.317a.5.5 0 1 0 .5-.866L9 6l.549-.317a.5.5 0 1 0-.5-.866l-.549.317zM5.5 9a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-file-medical-fill" viewBox="0 0 16 16" id="file-medical-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M8.5 4.5v.634l.549-.317a.5.5 0 1 1 .5.866L9 6l.549.317a.5.5 0 1 1-.5.866L8.5 6.866V7.5a.5.5 0 0 1-1 0v-.634l-.549.317a.5.5 0 1 1-.5-.866L7 6l-.549-.317a.5.5 0 0 1 .5-.866l.549.317V4.5a.5.5 0 1 1 1 0M5.5 9h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1m0 2h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-file-minus" viewBox="0 0 16 16" id="file-minus"><path d="M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-minus-fill" viewBox="0 0 16 16" id="file-minus-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M6 7.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-file-music" viewBox="0 0 16 16" id="file-music"><path d="M10.304 3.13a1 1 0 0 1 1.196.98v1.8l-2.5.5v5.09c0 .495-.301.883-.662 1.123C7.974 12.866 7.499 13 7 13s-.974-.134-1.338-.377C5.302 12.383 5 11.995 5 11.5s.301-.883.662-1.123C6.026 10.134 6.501 10 7 10c.356 0 .7.068 1 .196V4.41a1 1 0 0 1 .804-.98z"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-music-fill" viewBox="0 0 16 16" id="file-music-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-.5 4.11v1.8l-2.5.5v5.09c0 .495-.301.883-.662 1.123C7.974 12.866 7.499 13 7 13s-.974-.134-1.338-.377C5.302 12.383 5 11.995 5 11.5s.301-.883.662-1.123C6.026 10.134 6.501 10 7 10c.356 0 .7.068 1 .196V4.41a1 1 0 0 1 .804-.98l1.5-.3a1 1 0 0 1 1.196.98"/></symbol><symbol class="bi bi-file-pdf" viewBox="0 0 16 16" id="file-pdf"><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/><path d="M4.603 12.087a.8.8 0 0 1-.438-.42c-.195-.388-.13-.776.08-1.102.198-.307.526-.568.897-.787a7.7 7.7 0 0 1 1.482-.645 20 20 0 0 0 1.062-2.227 7.3 7.3 0 0 1-.43-1.295c-.086-.4-.119-.796-.046-1.136.075-.354.274-.672.65-.823.192-.077.4-.12.602-.077a.7.7 0 0 1 .477.365c.088.164.12.356.127.538.007.187-.012.395-.047.614-.084.51-.27 1.134-.52 1.794a11 11 0 0 0 .98 1.686 5.8 5.8 0 0 1 1.334.05c.364.065.734.195.96.465.12.144.193.32.2.518.007.192-.047.382-.138.563a1.04 1.04 0 0 1-.354.416.86.86 0 0 1-.51.138c-.331-.014-.654-.196-.933-.417a5.7 5.7 0 0 1-.911-.95 11.6 11.6 0 0 0-1.997.406 11.3 11.3 0 0 1-1.021 1.51c-.29.35-.608.655-.926.787a.8.8 0 0 1-.58.029m1.379-1.901q-.25.115-.459.238c-.328.194-.541.383-.647.547-.094.145-.096.25-.04.361q.016.032.026.044l.035-.012c.137-.056.355-.235.635-.572a8 8 0 0 0 .45-.606m1.64-1.33a13 13 0 0 1 1.01-.193 12 12 0 0 1-.51-.858 21 21 0 0 1-.5 1.05zm2.446.45q.226.244.435.41c.24.19.407.253.498.256a.1.1 0 0 0 .07-.015.3.3 0 0 0 .094-.125.44.44 0 0 0 .059-.2.1.1 0 0 0-.026-.063c-.052-.062-.2-.152-.518-.209a4 4 0 0 0-.612-.053zM8.078 5.8a7 7 0 0 0 .2-.828q.046-.282.038-.465a.6.6 0 0 0-.032-.198.5.5 0 0 0-.145.04c-.087.035-.158.106-.196.283-.04.192-.03.469.046.822q.036.167.09.346z"/></symbol><symbol class="bi bi-file-pdf-fill" viewBox="0 0 16 16" id="file-pdf-fill"><path d="M5.523 10.424q.21-.124.459-.238a8 8 0 0 1-.45.606c-.28.337-.498.516-.635.572l-.035.012a.3.3 0 0 1-.026-.044c-.056-.11-.054-.216.04-.36.106-.165.319-.354.647-.548m2.455-1.647q-.178.037-.356.078a21 21 0 0 0 .5-1.05 12 12 0 0 0 .51.858q-.326.048-.654.114m2.525.939a4 4 0 0 1-.435-.41q.344.007.612.054c.317.057.466.147.518.209a.1.1 0 0 1 .026.064.44.44 0 0 1-.06.2.3.3 0 0 1-.094.124.1.1 0 0 1-.069.015c-.09-.003-.258-.066-.498-.256M8.278 4.97c-.04.244-.108.524-.2.829a5 5 0 0 1-.089-.346c-.076-.353-.087-.63-.046-.822.038-.177.11-.248.196-.283a.5.5 0 0 1 .145-.04c.013.03.028.092.032.198q.008.183-.038.465z"/><path fill-rule="evenodd" d="M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m.165 11.668c.09.18.23.343.438.419.207.075.412.04.58-.03.318-.13.635-.436.926-.786.333-.401.683-.927 1.021-1.51a11.6 11.6 0 0 1 1.997-.406c.3.383.61.713.91.95.28.22.603.403.934.417a.86.86 0 0 0 .51-.138c.155-.101.27-.247.354-.416.09-.181.145-.37.138-.563a.84.84 0 0 0-.2-.518c-.226-.27-.596-.4-.96-.465a5.8 5.8 0 0 0-1.335-.05 11 11 0 0 1-.98-1.686c.25-.66.437-1.284.52-1.794.036-.218.055-.426.048-.614a1.24 1.24 0 0 0-.127-.538.7.7 0 0 0-.477-.365c-.202-.043-.41 0-.601.077-.377.15-.576.47-.651.823-.073.34-.04.736.046 1.136.088.406.238.848.43 1.295a20 20 0 0 1-1.062 2.227 7.7 7.7 0 0 0-1.482.645c-.37.22-.699.48-.897.787-.21.326-.275.714-.08 1.103"/></symbol><symbol class="bi bi-file-person" viewBox="0 0 16 16" id="file-person"><path d="M12 1a1 1 0 0 1 1 1v10.755S12 11 8 11s-5 1.755-5 1.755V2a1 1 0 0 1 1-1zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M8 10a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/></symbol><symbol class="bi bi-file-person-fill" viewBox="0 0 16 16" id="file-person-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-1 7a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-3 4c2.623 0 4.146.826 5 1.755V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1.245C3.854 11.825 5.377 11 8 11"/></symbol><symbol class="bi bi-file-play" viewBox="0 0 16 16" id="file-play"><path d="M6 10.117V5.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43z"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-play-fill" viewBox="0 0 16 16" id="file-play-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M6 5.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43V5.884z"/></symbol><symbol class="bi bi-file-plus" viewBox="0 0 16 16" id="file-plus"><path d="M8.5 6a.5.5 0 0 0-1 0v1.5H6a.5.5 0 0 0 0 1h1.5V10a.5.5 0 0 0 1 0V8.5H10a.5.5 0 0 0 0-1H8.5z"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-file-plus-fill" viewBox="0 0 16 16" id="file-plus-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M8.5 6v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-file-post" viewBox="0 0 16 16" id="file-post"><path d="M4 3.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5z"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-file-post-fill" viewBox="0 0 16 16" id="file-post-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M4.5 3h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1m0 2h7a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-8a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-file-ppt" viewBox="0 0 16 16" id="file-ppt"><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/><path d="M6 5a1 1 0 0 1 1-1h1.188a2.75 2.75 0 0 1 0 5.5H7v2a.5.5 0 0 1-1 0zm1 3.5h1.188a1.75 1.75 0 1 0 0-3.5H7z"/></symbol><symbol class="bi bi-file-ppt-fill" viewBox="0 0 16 16" id="file-ppt-fill"><path d="M8.188 8.5H7V5h1.188a1.75 1.75 0 1 1 0 3.5"/><path d="M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m3 4a1 1 0 0 0-1 1v6.5a.5.5 0 0 0 1 0v-2h1.188a2.75 2.75 0 0 0 0-5.5z"/></symbol><symbol class="bi bi-file-richtext" viewBox="0 0 16 16" id="file-richtext"><path d="M7 4.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V7.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V7s1.54-1.274 1.639-1.208M5 9a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-file-richtext-fill" viewBox="0 0 16 16" id="file-richtext-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M7 4.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V7.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V7s1.54-1.274 1.639-1.208M5 9h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1m0 2h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-file-ruled" viewBox="0 0 16 16" id="file-ruled"><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v4h10V2a1 1 0 0 0-1-1zm9 6H6v2h7zm0 3H6v2h7zm0 3H6v2h6a1 1 0 0 0 1-1zm-8 2v-2H3v1a1 1 0 0 0 1 1zm-2-3h2v-2H3zm0-3h2V7H3z"/></symbol><symbol class="bi bi-file-ruled-fill" viewBox="0 0 16 16" id="file-ruled-fill"><path d="M12 0H4a2 2 0 0 0-2 2v4h12V2a2 2 0 0 0-2-2m2 7H6v2h8zm0 3H6v2h8zm0 3H6v3h6a2 2 0 0 0 2-2zm-9 3v-3H2v1a2 2 0 0 0 2 2zm-3-4h3v-2H2zm0-3h3V7H2z"/></symbol><symbol class="bi bi-file-slides" viewBox="0 0 16 16" id="file-slides"><path d="M5 4a.5.5 0 0 0-.496.438l-.5 4A.5.5 0 0 0 4.5 9h3v2.016c-.863.055-1.5.251-1.5.484 0 .276.895.5 2 .5s2-.224 2-.5c0-.233-.637-.429-1.5-.484V9h3a.5.5 0 0 0 .496-.562l-.5-4A.5.5 0 0 0 11 4zm2 3.78V5.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 7.778z"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-file-slides-fill" viewBox="0 0 16 16" id="file-slides-fill"><path d="M7 7.78V5.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 7.778z"/><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M5 4h6a.5.5 0 0 1 .496.438l.5 4A.5.5 0 0 1 11.5 9h-3v2.016c.863.055 1.5.251 1.5.484 0 .276-.895.5-2 .5s-2-.224-2-.5c0-.233.637-.429 1.5-.484V9h-3a.5.5 0 0 1-.496-.562l.5-4A.5.5 0 0 1 5 4"/></symbol><symbol class="bi bi-file-spreadsheet" viewBox="0 0 16 16" id="file-spreadsheet"><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v4h10V2a1 1 0 0 0-1-1zm9 6h-3v2h3zm0 3h-3v2h3zm0 3h-3v2h2a1 1 0 0 0 1-1zm-4 2v-2H6v2zm-4 0v-2H3v1a1 1 0 0 0 1 1zm-2-3h2v-2H3zm0-3h2V7H3zm3-2v2h3V7zm3 3H6v2h3z"/></symbol><symbol class="bi bi-file-spreadsheet-fill" viewBox="0 0 16 16" id="file-spreadsheet-fill"><path d="M12 0H4a2 2 0 0 0-2 2v4h12V2a2 2 0 0 0-2-2m2 7h-4v2h4zm0 3h-4v2h4zm0 3h-4v3h2a2 2 0 0 0 2-2zm-5 3v-3H6v3zm-4 0v-3H2v1a2 2 0 0 0 2 2zm-3-4h3v-2H2zm0-3h3V7H2zm4 0V7h3v2zm0 1h3v2H6z"/></symbol><symbol class="bi bi-file-text" viewBox="0 0 16 16" id="file-text"><path d="M5 4a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm-.5 2.5A.5.5 0 0 1 5 6h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5M5 8a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-file-text-fill" viewBox="0 0 16 16" id="file-text-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M5 4h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1m-.5 2.5A.5.5 0 0 1 5 6h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5M5 8h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1m0 2h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-file-word" viewBox="0 0 16 16" id="file-word"><path d="M4.879 4.515a.5.5 0 0 1 .606.364l1.036 4.144.997-3.655a.5.5 0 0 1 .964 0l.997 3.655 1.036-4.144a.5.5 0 0 1 .97.242l-1.5 6a.5.5 0 0 1-.967.01L8 7.402l-1.018 3.73a.5.5 0 0 1-.967-.01l-1.5-6a.5.5 0 0 1 .364-.606z"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-word-fill" viewBox="0 0 16 16" id="file-word-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M5.485 4.879l1.036 4.144.997-3.655a.5.5 0 0 1 .964 0l.997 3.655 1.036-4.144a.5.5 0 0 1 .97.242l-1.5 6a.5.5 0 0 1-.967.01L8 7.402l-1.018 3.73a.5.5 0 0 1-.967-.01l-1.5-6a.5.5 0 1 1 .97-.242z"/></symbol><symbol class="bi bi-file-x" viewBox="0 0 16 16" id="file-x"><path d="M6.146 6.146a.5.5 0 0 1 .708 0L8 7.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 8l1.147 1.146a.5.5 0 0 1-.708.708L8 8.707 6.854 9.854a.5.5 0 0 1-.708-.708L7.293 8 6.146 6.854a.5.5 0 0 1 0-.708"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-file-x-fill" viewBox="0 0 16 16" id="file-x-fill"><path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M6.854 6.146 8 7.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 8l1.147 1.146a.5.5 0 0 1-.708.708L8 8.707 6.854 9.854a.5.5 0 0 1-.708-.708L7.293 8 6.146 6.854a.5.5 0 1 1 .708-.708"/></symbol><symbol class="bi bi-file-zip" viewBox="0 0 16 16" id="file-zip"><path d="M6.5 7.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v.938l.4 1.599a1 1 0 0 1-.416 1.074l-.93.62a1 1 0 0 1-1.109 0l-.93-.62a1 1 0 0 1-.415-1.074l.4-1.599zm2 0h-1v.938a1 1 0 0 1-.03.243l-.4 1.598.93.62.93-.62-.4-1.598a1 1 0 0 1-.03-.243z"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm5.5-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H9v1H8v1h1v1H8v1h1v1H7.5V5h-1V4h1V3h-1V2h1z"/></symbol><symbol class="bi bi-file-zip-fill" viewBox="0 0 16 16" id="file-zip-fill"><path d="M8.5 9.438V8.5h-1v.938a1 1 0 0 1-.03.243l-.4 1.598.93.62.93-.62-.4-1.598a1 1 0 0 1-.03-.243"/><path d="M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m2.5 8.5v.938l-.4 1.599a1 1 0 0 0 .416 1.074l.93.62a1 1 0 0 0 1.109 0l.93-.62a1 1 0 0 0 .415-1.074l-.4-1.599V8.5a1 1 0 0 0-1-1h-1a1 1 0 0 0-1 1m1-5.5h-1v1h1v1h-1v1h1v1H9V6H8V5h1V4H8V3h1V2H8V1H6.5v1h1z"/></symbol><symbol class="bi bi-files" viewBox="0 0 16 16" id="files"><path d="M13 0H6a2 2 0 0 0-2 2 2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h7a2 2 0 0 0 2-2 2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m0 13V4a2 2 0 0 0-2-2H5a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1M3 4a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-files-alt" viewBox="0 0 16 16" id="files-alt"><path d="M11 0H3a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2 2 2 0 0 0 2-2V4a2 2 0 0 0-2-2 2 2 0 0 0-2-2m2 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1zM2 2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-filetype-aac" viewBox="0 0 16 16" id="filetype-aac"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-5.808 8.554a1.7 1.7 0 0 0-.103.633v.495q0 .369.103.627a.83.83 0 0 0 .299.393.85.85 0 0 0 .477.131.9.9 0 0 0 .402-.088.7.7 0 0 0 .272-.248.8.8 0 0 0 .117-.364h.765v.076a1.27 1.27 0 0 1-.226.674q-.204.29-.55.454a1.8 1.8 0 0 1-.785.164q-.54 0-.915-.216a1.4 1.4 0 0 1-.57-.627q-.195-.408-.194-.976v-.498q0-.568.196-.978.195-.411.571-.633.378-.223.912-.223.327 0 .606.097.28.093.49.272a1.33 1.33 0 0 1 .465.964v.073h-.765a.85.85 0 0 0-.12-.38.7.7 0 0 0-.272-.261.8.8 0 0 0-.399-.097.8.8 0 0 0-.474.138.87.87 0 0 0-.302.398M.8 15.925l.313-1.028H2.45l.314 1.028h.84l-1.335-3.999h-.926l-1.342 4zm1.002-3.234.489 1.617H1.277l.49-1.617zm2.63 3.234.313-1.028H6.08l.313 1.028h.841L5.9 11.926h-.926l-1.341 4zm1.001-3.234.49 1.617H4.909l.49-1.617z"/></symbol><symbol class="bi bi-filetype-ai" viewBox="0 0 16 16" id="filetype-ai"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H6v-1h6a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.113 14.82.8 15.85H0l1.342-3.999h.926l1.336 3.999h-.841l-.314-1.028H1.113Zm1.178-.588-.49-1.617h-.034l-.49 1.617zm2.425-2.382v3.999h-.791V11.85h.79Z"/></symbol><symbol class="bi bi-filetype-bmp" viewBox="0 0 16 16" id="filetype-bmp"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM0 15.849h1.664q.408 0 .72-.132.315-.135.493-.386.18-.253.179-.61a1 1 0 0 0-.123-.51.85.85 0 0 0-.323-.325 1.1 1.1 0 0 0-.445-.14v-.036a1 1 0 0 0 .352-.16.8.8 0 0 0 .243-.294.9.9 0 0 0 .09-.422q0-.463-.322-.723-.322-.261-.858-.261H0zm.785-3.404h.7q.28 0 .431.14.155.138.155.384a.5.5 0 0 1-.082.296.5.5 0 0 1-.249.185 1.2 1.2 0 0 1-.433.064H.785zm0 1.62h.75q.231 0 .393.073a.5.5 0 0 1 .24.211.6.6 0 0 1 .082.325q0 .284-.205.434-.205.146-.671.146H.785zm3.474 1.784v-2.66h.038l.952 2.16h.515l.947-2.16h.038v2.66h.715V11.85h-.8l-1.14 2.596h-.026l-1.14-2.596h-.805v3.999zm3.918-3.999h1.6q.434 0 .732.179.302.176.46.477.159.302.159.677t-.162.677q-.158.299-.462.474a1.45 1.45 0 0 1-.733.173h-.803v1.342h-.79zm2.06 1.714a.8.8 0 0 0 .085-.381q0-.34-.185-.521-.185-.182-.512-.182h-.66v1.406h.66a.8.8 0 0 0 .375-.082.57.57 0 0 0 .237-.24"/></symbol><symbol class="bi bi-filetype-cs" viewBox="0 0 16 16" id="filetype-cs"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H8v-1h4a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.629 15.29a1.2 1.2 0 0 1-.112-.449h.765a.58.58 0 0 0 .255.384q.105.073.249.114t.32.041q.245 0 .412-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.152-.326q-.153-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.54-.214 1 1 0 0 1-.35-.367 1.1 1.1 0 0 1-.124-.524q0-.366.19-.639.191-.272.528-.422t.776-.149q.458 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.246-.181.9.9 0 0 0-.37-.068q-.324 0-.512.152a.47.47 0 0 0-.185.384q0 .18.144.3a1 1 0 0 0 .404.175l.621.143q.325.075.566.211t.375.358.134.56q0 .37-.187.656a1.2 1.2 0 0 1-.54.439q-.351.158-.858.158a2.2 2.2 0 0 1-.665-.09 1.4 1.4 0 0 1-.477-.252 1.1 1.1 0 0 1-.29-.375m-2.72-2.23a1.7 1.7 0 0 0-.103.633v.495q0 .369.102.627a.83.83 0 0 0 .299.392.85.85 0 0 0 .478.132.86.86 0 0 0 .4-.088.7.7 0 0 0 .273-.249.8.8 0 0 0 .118-.363h.764v.076a1.27 1.27 0 0 1-.225.674q-.205.29-.551.454a1.8 1.8 0 0 1-.785.164q-.54 0-.914-.217a1.4 1.4 0 0 1-.572-.626Q0 14.756 0 14.188v-.498q0-.569.196-.979a1.44 1.44 0 0 1 .572-.633q.378-.222.91-.222.33 0 .607.097.281.093.49.272a1.32 1.32 0 0 1 .465.964v.073h-.764a.85.85 0 0 0-.12-.38.7.7 0 0 0-.273-.261.8.8 0 0 0-.398-.097.8.8 0 0 0-.475.138.87.87 0 0 0-.302.398Z"/></symbol><symbol class="bi bi-filetype-css" viewBox="0 0 16 16" id="filetype-css"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.397 14.841a1.13 1.13 0 0 0 .401.823q.195.162.478.252.284.091.665.091.507 0 .859-.158.354-.158.539-.44.187-.284.187-.656 0-.336-.134-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.566-.21l-.621-.144a1 1 0 0 1-.404-.176.37.37 0 0 1-.144-.299q0-.234.185-.384.188-.152.512-.152.214 0 .37.068a.6.6 0 0 1 .246.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.439 0-.776.15-.337.149-.527.421-.19.273-.19.639 0 .302.122.524.124.223.352.367.228.143.539.213l.618.144q.31.073.463.193a.39.39 0 0 1 .152.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.167.07-.413.07-.175 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zM.806 13.693q0-.373.102-.633a.87.87 0 0 1 .302-.399.8.8 0 0 1 .475-.137q.225 0 .398.097a.7.7 0 0 1 .272.26.85.85 0 0 1 .12.381h.765v-.072a1.33 1.33 0 0 0-.466-.964 1.4 1.4 0 0 0-.489-.272 1.8 1.8 0 0 0-.606-.097q-.534 0-.911.223-.375.222-.572.632-.195.41-.196.979v.498q0 .568.193.976.197.407.572.626.375.217.914.217.439 0 .785-.164t.55-.454a1.27 1.27 0 0 0 .226-.674v-.076h-.764a.8.8 0 0 1-.118.363.7.7 0 0 1-.272.25.9.9 0 0 1-.401.087.85.85 0 0 1-.478-.132.83.83 0 0 1-.299-.392 1.7 1.7 0 0 1-.102-.627zM6.78 15.29a1.2 1.2 0 0 1-.111-.449h.764a.58.58 0 0 0 .255.384q.106.073.25.114.142.041.319.041.245 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.152-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.527-.422t.777-.149q.456 0 .779.152.326.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.246-.181.9.9 0 0 0-.37-.068q-.324 0-.512.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .404.175l.621.143q.326.075.566.211t.375.358.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375"/></symbol><symbol class="bi bi-filetype-csv" viewBox="0 0 16 16" id="filetype-csv"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.517 14.841a1.13 1.13 0 0 0 .401.823q.195.162.478.252.284.091.665.091.507 0 .859-.158.354-.158.539-.44.187-.284.187-.656 0-.336-.134-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.566-.21l-.621-.144a1 1 0 0 1-.404-.176.37.37 0 0 1-.144-.299q0-.234.185-.384.188-.152.512-.152.214 0 .37.068a.6.6 0 0 1 .246.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.439 0-.776.15-.337.149-.527.421-.19.273-.19.639 0 .302.122.524.124.223.352.367.228.143.539.213l.618.144q.31.073.463.193a.39.39 0 0 1 .152.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.167.07-.413.07-.175 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zM.806 13.693q0-.373.102-.633a.87.87 0 0 1 .302-.399.8.8 0 0 1 .475-.137q.225 0 .398.097a.7.7 0 0 1 .272.26.85.85 0 0 1 .12.381h.765v-.072a1.33 1.33 0 0 0-.466-.964 1.4 1.4 0 0 0-.489-.272 1.8 1.8 0 0 0-.606-.097q-.534 0-.911.223-.375.222-.572.632-.195.41-.196.979v.498q0 .568.193.976.197.407.572.626.375.217.914.217.439 0 .785-.164t.55-.454a1.27 1.27 0 0 0 .226-.674v-.076h-.764a.8.8 0 0 1-.118.363.7.7 0 0 1-.272.25.9.9 0 0 1-.401.087.85.85 0 0 1-.478-.132.83.83 0 0 1-.299-.392 1.7 1.7 0 0 1-.102-.627zm8.239 2.238h-.953l-1.338-3.999h.917l.896 3.138h.038l.888-3.138h.879z"/></symbol><symbol class="bi bi-filetype-doc" viewBox="0 0 16 16" id="filetype-doc"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-7.839 9.166v.522q0 .384-.117.641a.86.86 0 0 1-.322.387.9.9 0 0 1-.469.126.9.9 0 0 1-.471-.126.87.87 0 0 1-.32-.386 1.55 1.55 0 0 1-.117-.642v-.522q0-.386.117-.641a.87.87 0 0 1 .32-.387.87.87 0 0 1 .471-.129q.264 0 .469.13a.86.86 0 0 1 .322.386q.117.255.117.641m.803.519v-.513q0-.565-.205-.972a1.46 1.46 0 0 0-.589-.63q-.381-.22-.917-.22-.533 0-.92.22a1.44 1.44 0 0 0-.589.627q-.204.406-.205.975v.513q0 .563.205.973.205.406.59.627.386.216.92.216.535 0 .916-.216.383-.22.59-.627.204-.41.204-.973M0 11.926v4h1.459q.603 0 .999-.238a1.45 1.45 0 0 0 .595-.689q.196-.45.196-1.084 0-.63-.196-1.075a1.43 1.43 0 0 0-.59-.68q-.395-.234-1.004-.234zm.791.645h.563q.371 0 .609.152a.9.9 0 0 1 .354.454q.118.302.118.753a2.3 2.3 0 0 1-.068.592 1.1 1.1 0 0 1-.196.422.8.8 0 0 1-.334.252 1.3 1.3 0 0 1-.483.082H.79V12.57Zm7.422.483a1.7 1.7 0 0 0-.103.633v.495q0 .369.103.627a.83.83 0 0 0 .298.393.85.85 0 0 0 .478.131.9.9 0 0 0 .401-.088.7.7 0 0 0 .273-.248.8.8 0 0 0 .117-.364h.765v.076a1.27 1.27 0 0 1-.226.674q-.205.29-.55.454a1.8 1.8 0 0 1-.786.164q-.54 0-.914-.216a1.4 1.4 0 0 1-.571-.627q-.194-.408-.194-.976v-.498q0-.568.197-.978.195-.411.571-.633.378-.223.911-.223.328 0 .607.097.28.093.489.272a1.33 1.33 0 0 1 .466.964v.073H9.78a.85.85 0 0 0-.12-.38.7.7 0 0 0-.273-.261.8.8 0 0 0-.398-.097.8.8 0 0 0-.475.138.87.87 0 0 0-.301.398"/></symbol><symbol class="bi bi-filetype-docx" viewBox="0 0 16 16" id="filetype-docx"><path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-6.839 9.688v-.522a1.5 1.5 0 0 0-.117-.641.86.86 0 0 0-.322-.387.86.86 0 0 0-.469-.129.87.87 0 0 0-.471.13.87.87 0 0 0-.32.386 1.5 1.5 0 0 0-.117.641v.522q0 .384.117.641a.87.87 0 0 0 .32.387.9.9 0 0 0 .471.126.9.9 0 0 0 .469-.126.86.86 0 0 0 .322-.386 1.55 1.55 0 0 0 .117-.642m.803-.516v.513q0 .563-.205.973a1.47 1.47 0 0 1-.589.627q-.381.216-.917.216a1.86 1.86 0 0 1-.92-.216 1.46 1.46 0 0 1-.589-.627 2.15 2.15 0 0 1-.205-.973v-.513q0-.569.205-.975.205-.411.59-.627.386-.22.92-.22.535 0 .916.22.383.219.59.63.204.406.204.972M1 15.925v-3.999h1.459q.609 0 1.005.235.396.233.589.68.196.445.196 1.074 0 .634-.196 1.084-.197.451-.595.689-.396.237-.999.237zm1.354-3.354H1.79v2.707h.563q.277 0 .483-.082a.8.8 0 0 0 .334-.252q.132-.17.196-.422a2.3 2.3 0 0 0 .068-.592q0-.45-.118-.753a.9.9 0 0 0-.354-.454q-.237-.152-.61-.152Zm6.756 1.116q0-.373.103-.633a.87.87 0 0 1 .301-.398.8.8 0 0 1 .475-.138q.225 0 .398.097a.7.7 0 0 1 .273.26.85.85 0 0 1 .12.381h.765v-.073a1.33 1.33 0 0 0-.466-.964 1.4 1.4 0 0 0-.49-.272 1.8 1.8 0 0 0-.606-.097q-.534 0-.911.223-.375.222-.571.633-.197.41-.197.978v.498q0 .568.194.976.195.406.571.627.375.216.914.216.44 0 .785-.164t.551-.454a1.27 1.27 0 0 0 .226-.674v-.076h-.765a.8.8 0 0 1-.117.364.7.7 0 0 1-.273.248.9.9 0 0 1-.401.088.85.85 0 0 1-.478-.131.83.83 0 0 1-.298-.393 1.7 1.7 0 0 1-.103-.627zm5.092-1.76h.894l-1.275 2.006 1.254 1.992h-.908l-.85-1.415h-.035l-.852 1.415h-.862l1.24-2.015-1.228-1.984h.932l.832 1.439h.035z"/></symbol><symbol class="bi bi-filetype-exe" viewBox="0 0 16 16" id="filetype-exe"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM2.575 15.202H.785v-1.073H2.47v-.606H.785v-1.025h1.79v-.648H0v3.999h2.575zM6.31 11.85h-.893l-.823 1.439h-.036l-.832-1.439h-.931l1.227 1.983-1.239 2.016h.861l.853-1.415h.035l.85 1.415h.908l-1.254-1.992zm1.025 3.352h1.79v.647H6.548V11.85h2.576v.648h-1.79v1.025h1.684v.606H7.334v1.073Z"/></symbol><symbol class="bi bi-filetype-gif" viewBox="0 0 16 16" id="filetype-gif"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H9v-1h3a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.278 13.124a1.4 1.4 0 0 0-.14-.492 1.3 1.3 0 0 0-.314-.407 1.5 1.5 0 0 0-.48-.275 1.9 1.9 0 0 0-.636-.1q-.542 0-.926.229a1.5 1.5 0 0 0-.583.632 2.1 2.1 0 0 0-.199.95v.506q0 .408.105.745.105.336.32.58.213.243.533.377.323.132.753.132.402 0 .697-.111a1.29 1.29 0 0 0 .788-.77q.097-.261.097-.551v-.797H1.717v.589h.823v.255q0 .199-.09.363a.67.67 0 0 1-.273.264 1 1 0 0 1-.457.096.87.87 0 0 1-.519-.146.9.9 0 0 1-.305-.413 1.8 1.8 0 0 1-.096-.615v-.499q0-.547.234-.85.237-.3.665-.301a1 1 0 0 1 .3.044q.136.044.236.126a.7.7 0 0 1 .17.19.8.8 0 0 1 .097.25zm1.353 2.801v-3.999H3.84v4h.79Zm1.493-1.59v1.59h-.791v-3.999H7.88v.653H6.124v1.117h1.605v.638z"/></symbol><symbol class="bi bi-filetype-heic" viewBox="0 0 16 16" id="filetype-heic"><path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-4.637 8.554a1.7 1.7 0 0 0-.103.633v.495q0 .369.103.627a.83.83 0 0 0 .299.393.85.85 0 0 0 .477.131.9.9 0 0 0 .401-.088.7.7 0 0 0 .273-.248.8.8 0 0 0 .117-.364h.765v.076a1.27 1.27 0 0 1-.226.674q-.205.29-.55.454a1.8 1.8 0 0 1-.786.164q-.54 0-.914-.216a1.4 1.4 0 0 1-.571-.627q-.194-.408-.194-.976v-.498q0-.568.197-.978.196-.411.571-.633.378-.223.911-.223.328 0 .607.097.28.093.489.272a1.32 1.32 0 0 1 .466.964v.073h-.765a.85.85 0 0 0-.12-.38.7.7 0 0 0-.273-.261.8.8 0 0 0-.398-.097.8.8 0 0 0-.475.138.87.87 0 0 0-.301.398m-6.1-1.128v4h-.79V14.21H.79v1.714H0v-3.999h.791v1.626h1.682v-1.626zm1.488 3.352h1.79v.647H3.966v-3.999H6.54v.648H4.75v1.025h1.684v.607H4.751zm3.163.647v-3.999h-.791v4h.79Z"/></symbol><symbol class="bi bi-filetype-html" viewBox="0 0 16 16" id="filetype-html"><path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-9.736 7.35v3.999h-.791v-1.714H1.79v1.714H1V11.85h.791v1.626h1.682V11.85h.79Zm2.251.662v3.337h-.794v-3.337H4.588v-.662h3.064v.662zm2.176 3.337v-2.66h.038l.952 2.159h.516l.946-2.16h.038v2.661h.715V11.85h-.8l-1.14 2.596H9.93L8.79 11.85h-.805v3.999zm4.71-.674h1.696v.674H12.61V11.85h.79v3.325Z"/></symbol><symbol class="bi bi-filetype-java" viewBox="0 0 16 16" id="filetype-java"><path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.521 15.175a1.3 1.3 0 0 1-.082-.466h.765a.6.6 0 0 0 .073.27.5.5 0 0 0 .454.246q.285 0 .422-.164.138-.165.138-.466V11.85h.79v2.725q0 .66-.357 1.005-.354.345-.984.345a1.6 1.6 0 0 1-.568-.094 1.1 1.1 0 0 1-.408-.266 1.1 1.1 0 0 1-.243-.39m3.972-.354-.314 1.028h-.8l1.342-3.999h.926l1.336 3.999h-.84l-.314-1.028zm1.178-.59-.49-1.616h-.035l-.49 1.617zm2.342 1.618h.952l1.327-3.999h-.878l-.888 3.138h-.038L8.59 11.85h-.917zm3.087-1.028-.314 1.028h-.8l1.342-3.999h.926l1.336 3.999h-.84l-.314-1.028zm1.178-.59-.49-1.616h-.035l-.49 1.617z"/></symbol><symbol class="bi bi-filetype-jpg" viewBox="0 0 16 16" id="filetype-jpg"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-4.34 8.132q.114.23.14.492h-.776a.8.8 0 0 0-.097-.249.7.7 0 0 0-.17-.19.7.7 0 0 0-.237-.126 1 1 0 0 0-.299-.044q-.428 0-.665.302-.234.301-.234.85v.498q0 .351.097.615a.9.9 0 0 0 .304.413.87.87 0 0 0 .519.146 1 1 0 0 0 .457-.096.67.67 0 0 0 .272-.264q.09-.164.091-.363v-.255H8.24v-.59h1.576v.798q0 .29-.097.55a1.3 1.3 0 0 1-.293.458 1.4 1.4 0 0 1-.495.313q-.296.111-.697.111a2 2 0 0 1-.753-.132 1.45 1.45 0 0 1-.533-.377 1.6 1.6 0 0 1-.32-.58 2.5 2.5 0 0 1-.105-.745v-.506q0-.543.2-.95.201-.406.582-.633.384-.228.926-.228.357 0 .636.1.28.1.48.275t.314.407ZM0 14.786q0 .246.082.465.083.22.243.39.165.17.407.267.246.093.569.093.63 0 .984-.345.357-.346.358-1.005v-2.725h-.791v2.745q0 .303-.138.466t-.422.164a.5.5 0 0 1-.454-.246.6.6 0 0 1-.073-.27H0Zm4.92-2.86H3.322v4h.791v-1.343h.803q.43 0 .732-.172.305-.177.463-.475.162-.302.161-.677 0-.374-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179Zm.546 1.333a.8.8 0 0 1-.085.381.57.57 0 0 1-.238.24.8.8 0 0 1-.375.082H4.11v-1.406h.66q.327 0 .512.182.185.181.185.521Z"/></symbol><symbol class="bi bi-filetype-js" viewBox="0 0 16 16" id="filetype-js"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H8v-1h4a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.186 15.29a1.2 1.2 0 0 1-.111-.449h.765a.58.58 0 0 0 .255.384q.105.073.249.114.143.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.151-.12-.462-.193l-.619-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.528-.422.336-.15.776-.149.457 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.247-.181.9.9 0 0 0-.369-.068q-.325 0-.513.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .405.175l.62.143q.327.075.566.211.24.136.375.358t.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375m-3.104-.033A1.3 1.3 0 0 1 0 14.791h.765a.6.6 0 0 0 .073.27.5.5 0 0 0 .454.246q.285 0 .422-.164.138-.165.138-.466v-2.745h.79v2.725q0 .66-.357 1.005-.354.345-.984.345a1.6 1.6 0 0 1-.569-.094 1.15 1.15 0 0 1-.407-.266 1.1 1.1 0 0 1-.243-.39"/></symbol><symbol class="bi bi-filetype-json" viewBox="0 0 16 16" id="filetype-json"><path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM4.151 15.29a1.2 1.2 0 0 1-.111-.449h.764a.58.58 0 0 0 .255.384q.105.073.25.114.142.041.319.041.245 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .084-.29.39.39 0 0 0-.152-.326q-.152-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.352-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.192-.272.528-.422.337-.15.777-.149.456 0 .779.152.326.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.246-.181.9.9 0 0 0-.37-.068q-.324 0-.512.152a.47.47 0 0 0-.185.384q0 .18.144.3a1 1 0 0 0 .404.175l.621.143q.326.075.566.211a1 1 0 0 1 .375.358q.135.222.135.56 0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375m-3.104-.033a1.3 1.3 0 0 1-.082-.466h.764a.6.6 0 0 0 .074.27.5.5 0 0 0 .454.246q.285 0 .422-.164.137-.165.137-.466v-2.745h.791v2.725q0 .66-.357 1.005-.355.345-.985.345a1.6 1.6 0 0 1-.568-.094 1.15 1.15 0 0 1-.407-.266 1.1 1.1 0 0 1-.243-.39m9.091-1.585v.522q0 .384-.117.641a.86.86 0 0 1-.322.387.9.9 0 0 1-.47.126.9.9 0 0 1-.47-.126.87.87 0 0 1-.32-.387 1.55 1.55 0 0 1-.117-.641v-.522q0-.386.117-.641a.87.87 0 0 1 .32-.387.87.87 0 0 1 .47-.129q.265 0 .47.129a.86.86 0 0 1 .322.387q.117.255.117.641m.803.519v-.513q0-.565-.205-.973a1.46 1.46 0 0 0-.59-.63q-.38-.22-.916-.22-.534 0-.92.22a1.44 1.44 0 0 0-.589.628q-.205.407-.205.975v.513q0 .562.205.973.205.407.589.626.386.217.92.217.536 0 .917-.217.384-.22.589-.626.204-.41.205-.973m1.29-.935v2.675h-.746v-3.999h.662l1.752 2.66h.032v-2.66h.75v4h-.656l-1.761-2.676z"/></symbol><symbol class="bi bi-filetype-jsx" viewBox="0 0 16 16" id="filetype-jsx"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.075 14.841a1.13 1.13 0 0 0 .401.823q.194.162.478.252.284.091.665.091.507 0 .858-.158.355-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.565-.21l-.621-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.188-.152.513-.152.214 0 .37.068a.6.6 0 0 1 .245.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.199-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.776.15-.337.149-.528.421-.19.273-.19.639 0 .302.123.524t.351.367q.229.143.54.213l.618.144q.31.073.462.193a.39.39 0 0 1 .153.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.167.07-.413.07-.176 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zM0 14.791q0 .247.082.466.083.22.243.39.165.17.407.267.246.093.569.093.63 0 .984-.346.357-.345.358-1.004v-2.725h-.791v2.745q0 .302-.138.466t-.422.164a.5.5 0 0 1-.454-.246.6.6 0 0 1-.073-.27zm8.907-2.859H9.8l-1.274 2.007L9.78 15.93h-.908l-.85-1.415h-.035l-.853 1.415h-.861l1.24-2.016-1.228-1.983h.931l.832 1.438h.036l.823-1.438Z"/></symbol><symbol class="bi bi-filetype-key" viewBox="0 0 16 16" id="filetype-key"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.21 11.85h-.87L.83 13.64H.79v-1.79H0v3.999h.791v-1.283l.41-.466 1.12 1.749h.951l-1.488-2.276 1.427-1.723Zm2.903 3.352h-1.79v-1.073h1.685v-.606H4.323v-1.025h1.79v-.648H3.538v3.999h2.575zm2.243-.888v1.535h-.794v-1.52L6.223 11.85H7.1l.853 1.696h.032l.855-1.696h.856z"/></symbol><symbol class="bi bi-filetype-m4p" viewBox="0 0 16 16" id="filetype-m4p"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.706 15.849v-2.66h.038l.952 2.16h.516l.946-2.16h.038v2.66h.715V11.85h-.8l-1.14 2.596h-.026L.805 11.85H0v3.999zm5.237-3.999q-.393.65-.79 1.3t-.748 1.31v.648h1.937v.741h.74v-.741h.49v-.639h-.49V11.85H5.944Zm-.82 2.62v-.021q.27-.51.571-1.017.304-.507.607-.984h.04v2.021H5.124Zm2.893-2.62h1.6q.434 0 .732.179.302.175.46.477t.158.677-.16.677q-.159.298-.464.474a1.45 1.45 0 0 1-.732.173h-.803v1.342h-.79zm2.06 1.714a.8.8 0 0 0 .085-.381q0-.34-.185-.521-.184-.183-.513-.182h-.659v1.406h.66a.8.8 0 0 0 .374-.082.57.57 0 0 0 .238-.24"/></symbol><symbol class="bi bi-filetype-md" viewBox="0 0 16 16" id="filetype-md"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H9v-1h3a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.706 13.189v2.66H0V11.85h.806l1.14 2.596h.026l1.14-2.596h.8v3.999h-.716v-2.66h-.038l-.946 2.159h-.516l-.952-2.16H.706Zm3.919 2.66V11.85h1.459q.609 0 1.005.234t.589.68q.195.445.196 1.075 0 .634-.196 1.084-.197.451-.595.689-.396.237-1 .237H4.626Zm1.353-3.354h-.562v2.707h.562q.279 0 .484-.082a.8.8 0 0 0 .334-.252 1.1 1.1 0 0 0 .196-.422q.067-.252.067-.592a2.1 2.1 0 0 0-.117-.753.9.9 0 0 0-.354-.454q-.238-.152-.61-.152"/></symbol><symbol class="bi bi-filetype-mdx" viewBox="0 0 16 16" id="filetype-mdx"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.706 15.849v-2.66h.038l.952 2.159h.516l.946-2.16h.038v2.661h.715V11.85h-.8l-1.14 2.596h-.026L.805 11.85H0v3.999zm3.559-3.999v3.999h1.459q.603 0 .999-.237a1.45 1.45 0 0 0 .595-.689q.195-.45.196-1.084 0-.63-.196-1.075a1.43 1.43 0 0 0-.59-.68q-.395-.234-1.004-.234zm.79.645h.563q.372 0 .61.152a.9.9 0 0 1 .354.454q.117.302.117.753 0 .34-.067.592a1.1 1.1 0 0 1-.196.422.8.8 0 0 1-.334.252 1.3 1.3 0 0 1-.484.082h-.562v-2.707Zm4.787-.645h.894L9.46 13.857l1.254 1.992h-.908l-.85-1.415h-.035l-.852 1.415h-.862l1.24-2.016L7.22 11.85h.932l.832 1.439h.035z"/></symbol><symbol class="bi bi-filetype-mov" viewBox="0 0 16 16" id="filetype-mov"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-6.914 9.166v.522q0 .384-.117.641a.86.86 0 0 1-.323.387.9.9 0 0 1-.468.126.9.9 0 0 1-.472-.126.87.87 0 0 1-.32-.386 1.55 1.55 0 0 1-.117-.642v-.522q0-.386.118-.641a.87.87 0 0 1 .319-.387.87.87 0 0 1 .472-.129q.263 0 .468.13a.86.86 0 0 1 .323.386q.117.255.117.641m.802.519v-.513q0-.565-.205-.972a1.46 1.46 0 0 0-.588-.63q-.381-.22-.917-.22-.534 0-.92.22a1.44 1.44 0 0 0-.59.627q-.204.406-.204.975v.513q0 .563.205.973.205.406.589.627.386.216.92.216.536 0 .917-.216.383-.22.588-.627.205-.41.205-.973m-7.182 1.74v-2.66h.038l.952 2.16h.516l.946-2.16h.038v2.66h.715v-3.999h-.8l-1.14 2.596h-.026l-1.14-2.596H0v4zm9.54 0h-.952l-1.34-3.999h.918l.896 3.138h.038l.888-3.138h.879z"/></symbol><symbol class="bi bi-filetype-mp3" viewBox="0 0 16 16" id="filetype-mp3"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-4.911 9.67h-.443v-.609h.422a.7.7 0 0 0 .322-.073.56.56 0 0 0 .22-.2.5.5 0 0 0 .076-.284.49.49 0 0 0-.176-.392.65.65 0 0 0-.442-.15.7.7 0 0 0-.252.041.6.6 0 0 0-.193.112.5.5 0 0 0-.179.349H7.71q.009-.235.102-.437.094-.202.27-.352.176-.152.428-.237.255-.085.583-.088.418-.003.723.132.304.135.472.372a.9.9 0 0 1 .173.539.83.83 0 0 1-.12.478.96.96 0 0 1-.619.439v.041a1 1 0 0 1 .718.434.9.9 0 0 1 .144.521q.003.285-.117.507a1.1 1.1 0 0 1-.329.378q-.21.152-.486.234-.273.08-.583.08-.451 0-.77-.153a1.2 1.2 0 0 1-.487-.41 1.1 1.1 0 0 1-.178-.563h.726a.46.46 0 0 0 .106.258.7.7 0 0 0 .249.179 1 1 0 0 0 .357.067.9.9 0 0 0 .384-.076.6.6 0 0 0 .252-.217.56.56 0 0 0 .088-.319.56.56 0 0 0-.334-.522.8.8 0 0 0-.372-.079ZM.706 15.925v-2.66h.038l.952 2.16h.516l.946-2.16h.038v2.66h.715v-3.999h-.8l-1.14 2.596h-.026l-1.14-2.596H0v4zm5.458-3.999h-1.6v4h.792v-1.342h.803q.43 0 .732-.173.304-.177.463-.475a1.4 1.4 0 0 0 .161-.677q0-.374-.158-.677a1.2 1.2 0 0 0-.46-.477 1.4 1.4 0 0 0-.733-.179m.545 1.333a.8.8 0 0 1-.085.381.57.57 0 0 1-.237.24.8.8 0 0 1-.375.082h-.66v-1.406h.66q.328 0 .513.182.184.181.184.521"/></symbol><symbol class="bi bi-filetype-mp4" viewBox="0 0 16 16" id="filetype-mp4"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.706 15.849v-2.66h.038l.952 2.16h.516l.946-2.16h.038v2.66h.715V11.85h-.8l-1.14 2.596h-.026L.805 11.85H0v3.999zm5.278-3.999h-1.6v3.999h.792v-1.342h.803q.43 0 .732-.173.304-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477 1.4 1.4 0 0 0-.733-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.237.241.8.8 0 0 1-.375.082h-.66V12.48h.66q.329 0 .513.181.184.183.184.522m1.505-.032q.4-.65.791-1.301h1.14v2.62h.49v.638h-.49v.741h-.741v-.741H7.287v-.648q.353-.66.747-1.31Zm-.029 1.298v.02h1.219v-2.021h-.041q-.302.477-.607.984-.3.507-.571 1.017"/></symbol><symbol class="bi bi-filetype-otf" viewBox="0 0 16 16" id="filetype-otf"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM2.622 13.666v.522q0 .384-.117.641a.86.86 0 0 1-.322.387.9.9 0 0 1-.47.126.9.9 0 0 1-.47-.126.87.87 0 0 1-.32-.386 1.55 1.55 0 0 1-.117-.642v-.522q0-.386.117-.641a.87.87 0 0 1 .32-.387.87.87 0 0 1 .47-.129q.265 0 .47.13a.86.86 0 0 1 .322.386q.117.255.117.641m.803.519v-.513q0-.565-.205-.972a1.46 1.46 0 0 0-.59-.63q-.38-.22-.916-.22-.534 0-.92.22a1.44 1.44 0 0 0-.589.627Q0 13.103 0 13.672v.513q0 .563.205.973.205.406.589.627.386.216.92.216.536 0 .917-.216a1.47 1.47 0 0 0 .589-.627q.204-.41.205-.973m2 1.74v-3.337H6.56v-.662H3.497v.662H4.63v3.337h.794Zm2.251-1.59v1.59h-.79v-3.999h2.548v.653H7.676v1.117h1.606v.638z"/></symbol><symbol class="bi bi-filetype-pdf" viewBox="0 0 16 16" id="filetype-pdf"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.6 11.85H0v3.999h.791v-1.342h.803q.43 0 .732-.173.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.238.241.8.8 0 0 1-.375.082H.788V12.48h.66q.327 0 .512.181.185.183.185.522m1.217-1.333v3.999h1.46q.602 0 .998-.237a1.45 1.45 0 0 0 .595-.689q.196-.45.196-1.084 0-.63-.196-1.075a1.43 1.43 0 0 0-.589-.68q-.396-.234-1.005-.234zm.791.645h.563q.371 0 .609.152a.9.9 0 0 1 .354.454q.118.302.118.753a2.3 2.3 0 0 1-.068.592 1.1 1.1 0 0 1-.196.422.8.8 0 0 1-.334.252 1.3 1.3 0 0 1-.483.082h-.563zm3.743 1.763v1.591h-.79V11.85h2.548v.653H7.896v1.117h1.606v.638z"/></symbol><symbol class="bi bi-filetype-php" viewBox="0 0 16 16" id="filetype-php"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.6 11.85H0v3.999h.791v-1.342h.803q.43 0 .732-.173.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.238.241.8.8 0 0 1-.375.082H.788V12.48h.66q.327 0 .512.181.185.182.185.522m4.48 2.666V11.85h-.79v1.626H4.153V11.85h-.79v3.999h.79v-1.714h1.682v1.714zm.703-3.999h1.6q.433 0 .732.179.3.175.46.477.158.302.158.677t-.161.677q-.159.299-.463.474a1.45 1.45 0 0 1-.733.173H8.12v1.342h-.791zm2.06 1.714a.8.8 0 0 0 .084-.381q0-.34-.184-.521-.184-.182-.513-.182h-.66v1.406h.66a.8.8 0 0 0 .375-.082.57.57 0 0 0 .237-.24Z"/></symbol><symbol class="bi bi-filetype-png" viewBox="0 0 16 16" id="filetype-png"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-3.76 8.132q.114.23.14.492h-.776a.8.8 0 0 0-.097-.249.7.7 0 0 0-.17-.19.7.7 0 0 0-.237-.126 1 1 0 0 0-.299-.044q-.427 0-.665.302-.234.301-.234.85v.498q0 .351.097.615a.9.9 0 0 0 .304.413.87.87 0 0 0 .519.146 1 1 0 0 0 .457-.096.67.67 0 0 0 .272-.264q.09-.164.091-.363v-.255H8.82v-.59h1.576v.798q0 .29-.097.55a1.3 1.3 0 0 1-.293.458 1.4 1.4 0 0 1-.495.313q-.296.111-.697.111a2 2 0 0 1-.753-.132 1.45 1.45 0 0 1-.533-.377 1.6 1.6 0 0 1-.32-.58 2.5 2.5 0 0 1-.105-.745v-.506q0-.543.2-.95.201-.406.582-.633.384-.228.926-.228.357 0 .636.1.281.1.48.275.2.176.314.407Zm-8.64-.706H0v4h.791v-1.343h.803q.43 0 .732-.172.305-.177.463-.475a1.4 1.4 0 0 0 .161-.677q0-.374-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.381.57.57 0 0 1-.238.24.8.8 0 0 1-.375.082H.788v-1.406h.66q.327 0 .512.182.185.181.185.521m1.964 2.666V13.25h.032l1.761 2.675h.656v-3.999h-.75v2.66h-.032l-1.752-2.66h-.662v4z"/></symbol><symbol class="bi bi-filetype-ppt" viewBox="0 0 16 16" id="filetype-ppt"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.6 11.85H0v3.999h.791v-1.342h.803q.43 0 .732-.173.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.238.241.8.8 0 0 1-.375.082H.788V12.48h.66q.327 0 .512.181.185.183.185.522m2.817-1.333h-1.6v3.999h.791v-1.342h.803q.43 0 .732-.173.305-.175.463-.474.162-.302.161-.677 0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.238.241.8.8 0 0 1-.375.082H4.15V12.48h.66q.327 0 .512.181.185.183.185.522m2.767-.67v3.336H7.48v-3.337H6.346v-.662h3.065v.662z"/></symbol><symbol class="bi bi-filetype-pptx" viewBox="0 0 16 16" id="filetype-pptx"><path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.5 11.85h1.6q.434 0 .732.179.302.175.46.477t.158.677-.16.677q-.159.299-.464.474a1.45 1.45 0 0 1-.732.173H2.29v1.342H1.5zm2.06 1.714a.8.8 0 0 0 .085-.381q0-.34-.185-.521-.185-.182-.513-.182h-.659v1.406h.66a.8.8 0 0 0 .374-.082.57.57 0 0 0 .238-.24m1.302-1.714h1.6q.434 0 .732.179.302.175.46.477t.158.677-.16.677q-.158.299-.464.474a1.45 1.45 0 0 1-.732.173h-.803v1.342h-.79zm2.06 1.714a.8.8 0 0 0 .085-.381q0-.34-.185-.521-.184-.182-.513-.182H5.65v1.406h.66a.8.8 0 0 0 .374-.082.57.57 0 0 0 .238-.24m2.852 2.285v-3.337h1.137v-.662H7.846v.662H8.98v3.337zm3.796-3.999h.893l-1.274 2.007 1.254 1.992h-.908l-.85-1.415h-.035l-.853 1.415h-.861l1.24-2.016-1.228-1.983h.931l.832 1.439h.035z"/></symbol><symbol class="bi bi-filetype-psd" viewBox="0 0 16 16" id="filetype-psd"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-.5v-1h.5a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.116 14.841a1.13 1.13 0 0 0 .401.823q.194.162.478.252.284.091.665.091.507 0 .858-.158.355-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.565-.21l-.621-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.188-.152.513-.152.214 0 .37.068a.6.6 0 0 1 .245.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.199-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.776.15-.337.149-.528.421-.19.273-.19.639 0 .302.123.524t.351.367q.229.143.54.213l.618.144q.31.073.462.193a.39.39 0 0 1 .153.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.167.07-.413.07-.176 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zM1.6 11.932H0v4h.791v-1.343h.803q.43 0 .732-.173.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.238.241.8.8 0 0 1-.375.082H.788v-1.406h.66q.327 0 .512.182.185.181.185.521m4.609 2.666v-3.999h1.459q.609 0 1.004.234.396.235.59.68.195.445.195 1.075 0 .634-.196 1.084t-.594.689q-.396.237-1 .237H6.755Zm1.353-3.354h-.562v2.707h.562q.279 0 .483-.082a.8.8 0 0 0 .334-.252 1.1 1.1 0 0 0 .197-.422q.067-.252.067-.592a2.1 2.1 0 0 0-.117-.753.9.9 0 0 0-.355-.454q-.236-.152-.609-.152"/></symbol><symbol class="bi bi-filetype-py" viewBox="0 0 16 16" id="filetype-py"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H7v-1h5a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM0 11.85h1.6q.434 0 .732.179.302.175.46.477t.158.677-.16.677q-.158.299-.464.474a1.45 1.45 0 0 1-.732.173H.79v1.342H0zm2.06 1.714a.8.8 0 0 0 .085-.381q0-.34-.185-.521-.185-.182-.513-.182H.788v1.406h.66a.8.8 0 0 0 .374-.082.57.57 0 0 0 .238-.24m2.963.75v1.535H4.23v-1.52L2.89 11.85h.876l.853 1.696h.032l.856-1.696h.855z"/></symbol><symbol class="bi bi-filetype-raw" viewBox="0 0 16 16" id="filetype-raw"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.597 11.85H0v3.999h.782v-1.491h.71l.7 1.491h1.651l.313-1.028h1.336l.314 1.028h.84L5.31 11.85h-.925l-1.329 3.96-.783-1.572A1.18 1.18 0 0 0 3 13.116q0-.384-.167-.668a1.1 1.1 0 0 0-.478-.44 1.7 1.7 0 0 0-.758-.158m-.815 1.913v-1.292h.7a.74.74 0 0 1 .507.17q.194.17.194.49 0 .315-.194.474-.19.158-.518.158zm4.063-1.148.489 1.617H4.32l.49-1.617zm4.006.445-.74 2.789h-.73L6.326 11.85h.855l.601 2.903h.038l.706-2.903h.683l.706 2.903h.04l.596-2.903h.858l-1.055 3.999h-.73l-.74-2.789H8.85Z"/></symbol><symbol class="bi bi-filetype-rb" viewBox="0 0 16 16" id="filetype-rb"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H8v-1h4a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM0 11.85h1.597q.446 0 .758.158.315.155.478.44.167.284.167.668a1.18 1.18 0 0 1-.727 1.122l.803 1.611h-.885l-.7-1.491H.782v1.491H0zm.782.621v1.292h.689q.327 0 .518-.158.195-.159.194-.475 0-.32-.194-.489a.74.74 0 0 0-.507-.17zm4.426 3.378H3.544V11.85h1.67q.536 0 .858.26.322.262.322.724a.94.94 0 0 1-.09.422.8.8 0 0 1-.244.293 1 1 0 0 1-.351.161v.035q.243.024.445.141a.85.85 0 0 1 .322.325 1 1 0 0 1 .123.51q0 .357-.178.61-.18.25-.492.386a1.9 1.9 0 0 1-.721.132m-.179-3.404h-.7v1.07h.521q.267 0 .434-.065a.5.5 0 0 0 .249-.185.5.5 0 0 0 .082-.296.49.49 0 0 0-.155-.384q-.153-.14-.43-.14Zm.05 1.62h-.75v1.19h.589q.466 0 .67-.147a.5.5 0 0 0 .206-.434.6.6 0 0 0-.082-.325.5.5 0 0 0-.24-.21.95.95 0 0 0-.393-.074"/></symbol><symbol class="bi bi-filetype-sass" viewBox="0 0 16 16" id="filetype-sass"><path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.41 15.29a1.2 1.2 0 0 1-.111-.449h.764a.58.58 0 0 0 .255.384.8.8 0 0 0 .25.114q.142.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .084-.29.39.39 0 0 0-.152-.326q-.152-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.352-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.192-.272.528-.422.338-.15.777-.149.456 0 .779.152.326.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.246-.181.9.9 0 0 0-.37-.068q-.324 0-.512.152a.47.47 0 0 0-.185.384q0 .18.144.3a1 1 0 0 0 .404.175l.621.143q.326.075.566.211t.375.358.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375m4.188-.387-.313 1.028h-.8l1.342-3.999h.926l1.335 4h-.84l-.314-1.03zm1.178-.59-.49-1.616h-.034l-.49 1.617zm1.352.528a1.13 1.13 0 0 0 .401.823q.195.162.478.252.284.091.665.091.507 0 .859-.158.354-.158.539-.44.187-.284.187-.656 0-.336-.134-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.566-.21l-.621-.144a1 1 0 0 1-.404-.176.37.37 0 0 1-.144-.299q0-.234.185-.384.188-.152.512-.152.214 0 .37.068a.6.6 0 0 1 .246.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.776.15-.337.149-.527.421-.19.273-.19.639 0 .302.122.524.123.223.352.367.228.143.539.213l.618.144q.31.073.463.193a.39.39 0 0 1 .152.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.167.07-.413.07-.175 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zm3.503.449a1.2 1.2 0 0 1-.111-.449h.764a.58.58 0 0 0 .255.384q.105.073.25.114.142.041.319.041.245 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.152-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.527-.422.338-.15.777-.149.456 0 .779.152.326.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.246-.181.9.9 0 0 0-.37-.068q-.324 0-.512.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .404.175l.621.143q.326.075.566.211t.375.358.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158a2.2 2.2 0 0 1-.665-.09 1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375"/></symbol><symbol class="bi bi-filetype-scss" viewBox="0 0 16 16" id="filetype-scss"><path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.356 15.29a1.2 1.2 0 0 1-.111-.449h.765a.58.58 0 0 0 .255.384q.105.073.249.114.143.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.151-.12-.462-.193l-.619-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.528-.422.336-.15.776-.149.457 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.247-.181.9.9 0 0 0-.369-.068q-.325 0-.513.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .405.175l.62.143q.326.075.566.211t.375.358.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375m4.274-2.23a1.7 1.7 0 0 0-.103.633v.495q0 .369.103.627a.83.83 0 0 0 .298.392.85.85 0 0 0 .478.132.9.9 0 0 0 .401-.088.7.7 0 0 0 .273-.249.8.8 0 0 0 .117-.363h.765v.076a1.27 1.27 0 0 1-.226.674 1.4 1.4 0 0 1-.55.454 1.8 1.8 0 0 1-.786.164q-.54 0-.914-.217a1.4 1.4 0 0 1-.571-.626q-.195-.408-.194-.976v-.498q0-.569.197-.979a1.44 1.44 0 0 1 .57-.633q.38-.222.912-.222.328 0 .607.097.28.093.489.272a1.32 1.32 0 0 1 .466.964v.073h-.765a.85.85 0 0 0-.12-.38.7.7 0 0 0-.273-.261.8.8 0 0 0-.398-.097.8.8 0 0 0-.475.138.87.87 0 0 0-.301.398m2.609 1.781a1.13 1.13 0 0 0 .401.823q.193.162.478.252.284.091.665.091.507 0 .858-.158.354-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.566-.21l-.62-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.188-.152.513-.152.213 0 .369.068a.6.6 0 0 1 .246.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.438 0-.776.15-.336.149-.527.421-.19.273-.19.639 0 .302.123.524t.351.367q.228.143.54.213l.617.144q.311.073.463.193a.39.39 0 0 1 .153.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193 1.1 1.1 0 0 1-.413.07q-.177 0-.32-.04a.8.8 0 0 1-.249-.115.58.58 0 0 1-.255-.384zm3.502.449a1.2 1.2 0 0 1-.11-.449h.764a.58.58 0 0 0 .255.384q.105.073.249.114.143.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.152-.326q-.153-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.54-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.528-.422.336-.15.776-.149.458 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.247-.181.9.9 0 0 0-.369-.068q-.325 0-.512.152a.47.47 0 0 0-.185.384q0 .18.143.3a1 1 0 0 0 .405.175l.62.143q.326.075.566.211t.375.358.135.56q0 .37-.187.656a1.2 1.2 0 0 1-.54.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375"/></symbol><symbol class="bi bi-filetype-sh" viewBox="0 0 16 16" id="filetype-sh"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H8v-1h4a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.111 15.29A1.2 1.2 0 0 1 0 14.84h.765a.58.58 0 0 0 .255.384q.105.073.249.114.143.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.151-.12-.462-.193l-.619-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.528-.422.336-.15.776-.149.457 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.247-.181.9.9 0 0 0-.369-.068q-.326 0-.513.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .405.175l.62.143q.327.075.566.211.24.136.375.358t.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375Zm6.67-3.358v4h-.79v-1.715H4.308v1.714h-.792v-3.999h.792v1.626H5.99v-1.626z"/></symbol><symbol class="bi bi-filetype-sql" viewBox="0 0 16 16" id="filetype-sql"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM0 14.841a1.13 1.13 0 0 0 .401.823q.194.162.478.252c.284.09.411.091.665.091q.507 0 .858-.158.355-.159.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.565-.21l-.621-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.187-.152.513-.152.214 0 .37.068a.6.6 0 0 1 .245.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.199-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.776.15-.337.149-.528.421-.19.273-.19.639 0 .302.123.524t.351.367q.229.143.54.213l.618.144q.31.073.462.193a.39.39 0 0 1 .153.325q0 .165-.085.29A.56.56 0 0 1 2 15.31q-.167.07-.413.07-.176 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zm6.878 1.489-.507-.739q.264-.243.401-.6.138-.358.138-.806v-.501q0-.556-.208-.967a1.5 1.5 0 0 0-.589-.636q-.383-.225-.917-.225-.527 0-.914.225-.384.223-.592.636a2.14 2.14 0 0 0-.205.967v.5q0 .554.205.965.208.41.592.636a1.8 1.8 0 0 0 .914.222 1.8 1.8 0 0 0 .6-.1l.294.422h.788ZM4.262 14.2v-.522q0-.369.114-.63a.9.9 0 0 1 .325-.398.9.9 0 0 1 .495-.138q.288 0 .495.138a.9.9 0 0 1 .325.398q.115.261.115.63v.522q0 .246-.053.445-.053.196-.155.34l-.106-.14-.105-.147h-.733l.451.65a.6.6 0 0 1-.251.047.87.87 0 0 1-.487-.147.9.9 0 0 1-.32-.404 1.7 1.7 0 0 1-.11-.644m3.986 1.057h1.696v.674H7.457v-3.999h.79z"/></symbol><symbol class="bi bi-filetype-svg" viewBox="0 0 16 16" id="filetype-svg"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM0 14.841a1.13 1.13 0 0 0 .401.823q.194.162.478.252.285.091.665.091.507 0 .858-.158.355-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.565-.21l-.621-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.187-.152.513-.152.214 0 .37.068a.6.6 0 0 1 .245.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.199-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.776.15-.337.149-.528.421-.19.273-.19.639 0 .302.123.524t.351.367q.229.143.54.213l.618.144q.31.073.462.193a.39.39 0 0 1 .153.326.5.5 0 0 1-.085.29.56.56 0 0 1-.256.193q-.167.07-.413.07-.176 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zm4.575 1.09h.952l1.327-3.999h-.879l-.887 3.138H5.05l-.897-3.138h-.917zm5.483-3.293q.114.228.14.492h-.776a.8.8 0 0 0-.096-.249.7.7 0 0 0-.17-.19.7.7 0 0 0-.237-.126 1 1 0 0 0-.3-.044q-.427 0-.664.302-.235.3-.235.85v.497q0 .352.097.616a.9.9 0 0 0 .305.413.87.87 0 0 0 .518.146 1 1 0 0 0 .457-.097.67.67 0 0 0 .273-.263q.09-.164.09-.364v-.254h-.823v-.59h1.576v.798q0 .29-.096.55a1.3 1.3 0 0 1-.293.457 1.4 1.4 0 0 1-.495.314q-.296.111-.698.111a2 2 0 0 1-.752-.132 1.45 1.45 0 0 1-.534-.377 1.6 1.6 0 0 1-.319-.58 2.5 2.5 0 0 1-.105-.745v-.507q0-.54.199-.949.202-.406.583-.633.383-.228.926-.228.357 0 .635.1.282.1.48.275.2.176.314.407"/></symbol><symbol class="bi bi-filetype-tiff" viewBox="0 0 16 16" id="filetype-tiff"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.928 12.512v3.337h-.794v-3.337H0v-.662h3.064v.662zm2.131-.662v3.999h-.79V11.85zm1.373 3.999v-1.59h1.606v-.64H5.432v-1.116H7.19v-.653H4.641v3.999zm2.868-1.59v1.59h-.791V11.85h2.548v.653H8.3v1.117h1.605v.638z"/></symbol><symbol class="bi bi-filetype-tsx" viewBox="0 0 16 16" id="filetype-tsx"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.172 14.841a1.13 1.13 0 0 0 .401.823q.193.162.478.252.283.091.665.091.507 0 .858-.158.354-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.566-.21l-.62-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.144-.299q0-.234.185-.384.188-.152.513-.152.213 0 .369.068a.6.6 0 0 1 .246.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.438 0-.776.15-.336.149-.527.421-.19.273-.19.639 0 .302.122.524.124.223.352.367.228.143.54.213l.617.144q.311.073.463.193a.39.39 0 0 1 .152.326.5.5 0 0 1-.084.29.56.56 0 0 1-.255.193 1.1 1.1 0 0 1-.413.07q-.177 0-.32-.04a.8.8 0 0 1-.249-.115.58.58 0 0 1-.255-.384zm-1.244 1.09v-3.337h1.136v-.662H0v.662h1.134v3.337zm7.076-3.999h.893l-1.274 2.007 1.254 1.992h-.909l-.85-1.415h-.034l-.853 1.415H6.37l1.239-2.016-1.228-1.983h.932l.832 1.438h.035z"/></symbol><symbol class="bi bi-filetype-ttf" viewBox="0 0 16 16" id="filetype-ttf"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-2v-1h2a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.928 15.849v-3.337h2.269v3.337h.794v-3.337h1.137v-.662H0v.662h1.134v3.337zm5.315-1.59v1.59h-.791V11.85H9v.653H7.243v1.117h1.605v.638z"/></symbol><symbol class="bi bi-filetype-txt" viewBox="0 0 16 16" id="filetype-txt"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-2v-1h2a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.928 15.849v-3.337h1.136v-.662H0v.662h1.134v3.337zm4.689-3.999h-.894L4.9 13.289h-.035l-.832-1.439h-.932l1.228 1.983-1.24 2.016h.862l.853-1.415h.035l.85 1.415h.907l-1.253-1.992zm1.93.662v3.337h-.794v-3.337H6.619v-.662h3.064v.662H8.546Z"/></symbol><symbol class="bi bi-filetype-wav" viewBox="0 0 16 16" id="filetype-wav"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.784 15.849l.741-2.789h.033l.74 2.789h.73l1.055-3.999h-.858l-.595 2.903h-.041l-.706-2.903H2.2l-.706 2.903h-.038l-.6-2.903H0l1.055 3.999zm3.715 0 .314-1.028h1.336l.313 1.028h.841L6.967 11.85h-.926L4.7 15.849h.8Zm1.002-3.234.49 1.617H5.977l.49-1.617H6.5Zm3.604 3.234h-.952L7.814 11.85h.917l.897 3.138h.038l.888-3.138h.879z"/></symbol><symbol class="bi bi-filetype-woff" viewBox="0 0 16 16" id="filetype-woff"><path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-5.464 9.688v-.522q0-.386-.117-.641a.86.86 0 0 0-.323-.387.86.86 0 0 0-.468-.129.87.87 0 0 0-.472.13.87.87 0 0 0-.32.386q-.116.255-.116.641v.522q0 .384.117.641a.87.87 0 0 0 .319.387.9.9 0 0 0 .472.126.9.9 0 0 0 .468-.126.86.86 0 0 0 .323-.386 1.55 1.55 0 0 0 .117-.642m.803-.516v.513q0 .563-.205.973-.205.406-.59.627-.38.216-.916.216-.534 0-.92-.216a1.46 1.46 0 0 1-.59-.627 2.15 2.15 0 0 1-.204-.973v-.513q0-.569.205-.975.205-.411.589-.627.386-.22.92-.22.536 0 .917.22.384.219.589.63.204.406.205.972m-6.064-.536-.74 2.79h-.73l-1.055-4h.855l.601 2.903h.038l.706-2.903h.683l.706 2.903h.04l.596-2.903h.858l-1.055 4h-.73l-.74-2.79zm7.398 2.79v-1.592h1.606v-.638h-1.606v-1.117h1.758v-.653H9.882v4zm2.988-1.592v1.591h-.791v-3.999h2.548v.653h-1.757v1.117h1.605v.638z"/></symbol><symbol class="bi bi-filetype-xls" viewBox="0 0 16 16" id="filetype-xls"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM6.472 15.29a1.2 1.2 0 0 1-.111-.449h.765a.58.58 0 0 0 .254.384q.106.073.25.114.143.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.152-.12-.462-.193l-.619-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.527-.422.338-.15.777-.149.457 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.247-.181.9.9 0 0 0-.369-.068q-.325 0-.513.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .405.175l.62.143q.326.075.566.211a1 1 0 0 1 .375.358q.135.222.135.56 0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375m-2.945-3.358h-.893L1.81 13.37h-.036l-.832-1.438h-.93l1.227 1.983L0 15.931h.861l.853-1.415h.035l.85 1.415h.908L2.253 13.94zm2.727 3.325H4.557v-3.325h-.79v4h2.487z"/></symbol><symbol class="bi bi-filetype-xlsx" viewBox="0 0 16 16" id="filetype-xlsx"><path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM7.86 14.841a1.13 1.13 0 0 0 .401.823q.195.162.479.252.284.091.665.091.507 0 .858-.158.355-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.565-.21l-.621-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.188-.152.513-.152.214 0 .37.068a.6.6 0 0 1 .245.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.199-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.777.15-.336.149-.527.421-.19.273-.19.639 0 .302.123.524t.351.367q.229.143.54.213l.618.144q.31.073.462.193a.39.39 0 0 1 .153.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.168.07-.413.07-.176 0-.32-.04a.8.8 0 0 1-.249-.115.58.58 0 0 1-.255-.384zm-3.726-2.909h.893l-1.274 2.007 1.254 1.992h-.908l-.85-1.415h-.035l-.853 1.415H1.5l1.24-2.016-1.228-1.983h.931l.832 1.438h.036zm1.923 3.325h1.697v.674H5.266v-3.999h.791zm7.636-3.325h.893l-1.274 2.007 1.254 1.992h-.908l-.85-1.415h-.035l-.853 1.415h-.861l1.24-2.016-1.228-1.983h.931l.832 1.438h.036z"/></symbol><symbol class="bi bi-filetype-xml" viewBox="0 0 16 16" id="filetype-xml"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.527 11.85h-.893l-.823 1.439h-.036L.943 11.85H.012l1.227 1.983L0 15.85h.861l.853-1.415h.035l.85 1.415h.908l-1.254-1.992zm.954 3.999v-2.66h.038l.952 2.159h.516l.946-2.16h.038v2.661h.715V11.85h-.8l-1.14 2.596h-.025L4.58 11.85h-.806v3.999zm4.71-.674h1.696v.674H8.4V11.85h.791z"/></symbol><symbol class="bi bi-filetype-yml" viewBox="0 0 16 16" id="filetype-yml"><path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM2.133 15.849v-1.535l1.339-2.464h-.856l-.855 1.696h-.032L.876 11.85H0l1.339 2.479v1.52zm2.287 0v-2.66h.038l.952 2.159h.516l.946-2.16h.038v2.661h.715V11.85h-.8l-1.14 2.596H5.66L4.52 11.85h-.805v3.999zm4.71-.674h1.696v.674H8.338V11.85h.791v3.325Z"/></symbol><symbol class="bi bi-film" viewBox="0 0 16 16" id="film"><path d="M0 1a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm4 0v6h8V1zm8 8H4v6h8zM1 1v2h2V1zm2 3H1v2h2zM1 7v2h2V7zm2 3H1v2h2zm-2 3v2h2v-2zM15 1h-2v2h2zm-2 3v2h2V4zm2 3h-2v2h2zm-2 3v2h2v-2zm2 3h-2v2h2z"/></symbol><symbol class="bi bi-filter" viewBox="0 0 16 16" id="filter"><path d="M6 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-filter-circle" viewBox="0 0 16 16" id="filter-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M7 11.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-filter-circle-fill" viewBox="0 0 16 16" id="filter-circle-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M3.5 5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1 0-1M5 8.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m2 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-filter-left" viewBox="0 0 16 16" id="filter-left"><path d="M2 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-filter-right" viewBox="0 0 16 16" id="filter-right"><path d="M14 10.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 .5-.5m0-3a.5.5 0 0 0-.5-.5h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 .5-.5m0-3a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0 0 1h11a.5.5 0 0 0 .5-.5"/></symbol><symbol class="bi bi-filter-square" viewBox="0 0 16 16" id="filter-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M6 11.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-filter-square-fill" viewBox="0 0 16 16" id="filter-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm.5 5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1 0-1M4 8.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m2 3a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-fingerprint" viewBox="0 0 16 16" id="fingerprint"><path d="M8.06 6.5a.5.5 0 0 1 .5.5v.776a11.5 11.5 0 0 1-.552 3.519l-1.331 4.14a.5.5 0 0 1-.952-.305l1.33-4.141a10.5 10.5 0 0 0 .504-3.213V7a.5.5 0 0 1 .5-.5Z"/><path d="M6.06 7a2 2 0 1 1 4 0 .5.5 0 1 1-1 0 1 1 0 1 0-2 0v.332q0 .613-.066 1.221A.5.5 0 0 1 6 8.447q.06-.555.06-1.115zm3.509 1a.5.5 0 0 1 .487.513 11.5 11.5 0 0 1-.587 3.339l-1.266 3.8a.5.5 0 0 1-.949-.317l1.267-3.8a10.5 10.5 0 0 0 .535-3.048A.5.5 0 0 1 9.569 8m-3.356 2.115a.5.5 0 0 1 .33.626L5.24 14.939a.5.5 0 1 1-.955-.296l1.303-4.199a.5.5 0 0 1 .625-.329"/><path d="M4.759 5.833A3.501 3.501 0 0 1 11.559 7a.5.5 0 0 1-1 0 2.5 2.5 0 0 0-4.857-.833.5.5 0 1 1-.943-.334m.3 1.67a.5.5 0 0 1 .449.546 10.7 10.7 0 0 1-.4 2.031l-1.222 4.072a.5.5 0 1 1-.958-.287L4.15 9.793a9.7 9.7 0 0 0 .363-1.842.5.5 0 0 1 .546-.449Zm6 .647a.5.5 0 0 1 .5.5c0 1.28-.213 2.552-.632 3.762l-1.09 3.145a.5.5 0 0 1-.944-.327l1.089-3.145c.382-1.105.578-2.266.578-3.435a.5.5 0 0 1 .5-.5Z"/><path d="M3.902 4.222a5 5 0 0 1 5.202-2.113.5.5 0 0 1-.208.979 4 4 0 0 0-4.163 1.69.5.5 0 0 1-.831-.556m6.72-.955a.5.5 0 0 1 .705-.052A4.99 4.99 0 0 1 13.059 7v1.5a.5.5 0 1 1-1 0V7a3.99 3.99 0 0 0-1.386-3.028.5.5 0 0 1-.051-.705M3.68 5.842a.5.5 0 0 1 .422.568q-.044.289-.044.59c0 .71-.1 1.417-.298 2.1l-1.14 3.923a.5.5 0 1 1-.96-.279L2.8 8.821A6.5 6.5 0 0 0 3.058 7q0-.375.054-.736a.5.5 0 0 1 .568-.422m8.882 3.66a.5.5 0 0 1 .456.54c-.084 1-.298 1.986-.64 2.934l-.744 2.068a.5.5 0 0 1-.941-.338l.745-2.07a10.5 10.5 0 0 0 .584-2.678.5.5 0 0 1 .54-.456"/><path d="M4.81 1.37A6.5 6.5 0 0 1 14.56 7a.5.5 0 1 1-1 0 5.5 5.5 0 0 0-8.25-4.765.5.5 0 0 1-.5-.865m-.89 1.257a.5.5 0 0 1 .04.706A5.48 5.48 0 0 0 2.56 7a.5.5 0 0 1-1 0c0-1.664.626-3.184 1.655-4.333a.5.5 0 0 1 .706-.04ZM1.915 8.02a.5.5 0 0 1 .346.616l-.779 2.767a.5.5 0 1 1-.962-.27l.778-2.767a.5.5 0 0 1 .617-.346m12.15.481a.5.5 0 0 1 .49.51c-.03 1.499-.161 3.025-.727 4.533l-.07.187a.5.5 0 0 1-.936-.351l.07-.187c.506-1.35.634-2.74.663-4.202a.5.5 0 0 1 .51-.49"/></symbol><symbol class="bi bi-fire" viewBox="0 0 16 16" id="fire"><path d="M8 16c3.314 0 6-2 6-5.5 0-1.5-.5-4-2.5-6 .25 1.5-1.25 2-1.25 2C11 4 9 .5 6 0c.357 2 .5 4-2 6-1.25 1-2 2.729-2 4.5C2 14 4.686 16 8 16m0-1c-1.657 0-3-1-3-2.75 0-.75.25-2 1.25-3C6.125 10 7 10.5 7 10.5c-.375-1.25.5-3.25 2-3.5-.179 1-.25 2 1 3 .625.5 1 1.364 1 2.25C11 14 9.657 15 8 15"/></symbol><symbol class="bi bi-flag" viewBox="0 0 16 16" id="flag"><path d="M14.778.085A.5.5 0 0 1 15 .5V8a.5.5 0 0 1-.314.464L14.5 8l.186.464-.003.001-.006.003-.023.009a12 12 0 0 1-.397.15c-.264.095-.631.223-1.047.35-.816.252-1.879.523-2.71.523-.847 0-1.548-.28-2.158-.525l-.028-.01C7.68 8.71 7.14 8.5 6.5 8.5c-.7 0-1.638.23-2.437.477A20 20 0 0 0 3 9.342V15.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 1 0v.282c.226-.079.496-.17.79-.26C4.606.272 5.67 0 6.5 0c.84 0 1.524.277 2.121.519l.043.018C9.286.788 9.828 1 10.5 1c.7 0 1.638-.23 2.437-.477a20 20 0 0 0 1.349-.476l.019-.007.004-.002h.001M14 1.221c-.22.078-.48.167-.766.255-.81.252-1.872.523-2.734.523-.886 0-1.592-.286-2.203-.534l-.008-.003C7.662 1.21 7.139 1 6.5 1c-.669 0-1.606.229-2.415.478A21 21 0 0 0 3 1.845v6.433c.22-.078.48-.167.766-.255C4.576 7.77 5.638 7.5 6.5 7.5c.847 0 1.548.28 2.158.525l.028.01C9.32 8.29 9.86 8.5 10.5 8.5c.668 0 1.606-.229 2.415-.478A21 21 0 0 0 14 7.655V1.222z"/></symbol><symbol class="bi bi-flag-fill" viewBox="0 0 16 16" id="flag-fill"><path d="M14.778.085A.5.5 0 0 1 15 .5V8a.5.5 0 0 1-.314.464L14.5 8l.186.464-.003.001-.006.003-.023.009a12 12 0 0 1-.397.15c-.264.095-.631.223-1.047.35-.816.252-1.879.523-2.71.523-.847 0-1.548-.28-2.158-.525l-.028-.01C7.68 8.71 7.14 8.5 6.5 8.5c-.7 0-1.638.23-2.437.477A20 20 0 0 0 3 9.342V15.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 1 0v.282c.226-.079.496-.17.79-.26C4.606.272 5.67 0 6.5 0c.84 0 1.524.277 2.121.519l.043.018C9.286.788 9.828 1 10.5 1c.7 0 1.638-.23 2.437-.477a20 20 0 0 0 1.349-.476l.019-.007.004-.002h.001"/></symbol><symbol class="bi bi-floppy" viewBox="0 0 16 16" id="floppy"><path d="M11 2H9v3h2z"/><path d="M1.5 0h11.586a1.5 1.5 0 0 1 1.06.44l1.415 1.414A1.5 1.5 0 0 1 16 2.914V14.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5v-13A1.5 1.5 0 0 1 1.5 0M1 1.5v13a.5.5 0 0 0 .5.5H2v-4.5A1.5 1.5 0 0 1 3.5 9h9a1.5 1.5 0 0 1 1.5 1.5V15h.5a.5.5 0 0 0 .5-.5V2.914a.5.5 0 0 0-.146-.353l-1.415-1.415A.5.5 0 0 0 13.086 1H13v4.5A1.5 1.5 0 0 1 11.5 7h-7A1.5 1.5 0 0 1 3 5.5V1H1.5a.5.5 0 0 0-.5.5m3 4a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5V1H4zM3 15h10v-4.5a.5.5 0 0 0-.5-.5h-9a.5.5 0 0 0-.5.5z"/></symbol><symbol class="bi bi-floppy-fill" viewBox="0 0 16 16" id="floppy-fill"><path d="M0 1.5A1.5 1.5 0 0 1 1.5 0H3v5.5A1.5 1.5 0 0 0 4.5 7h7A1.5 1.5 0 0 0 13 5.5V0h.086a1.5 1.5 0 0 1 1.06.44l1.415 1.414A1.5 1.5 0 0 1 16 2.914V14.5a1.5 1.5 0 0 1-1.5 1.5H14v-5.5A1.5 1.5 0 0 0 12.5 9h-9A1.5 1.5 0 0 0 2 10.5V16h-.5A1.5 1.5 0 0 1 0 14.5z"/><path d="M3 16h10v-5.5a.5.5 0 0 0-.5-.5h-9a.5.5 0 0 0-.5.5zm9-16H4v5.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5zM9 1h2v4H9z"/></symbol><symbol class="bi bi-floppy2" viewBox="0 0 16 16" id="floppy2"><path d="M1.5 0h11.586a1.5 1.5 0 0 1 1.06.44l1.415 1.414A1.5 1.5 0 0 1 16 2.914V14.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5v-13A1.5 1.5 0 0 1 1.5 0M1 1.5v13a.5.5 0 0 0 .5.5H2v-4.5A1.5 1.5 0 0 1 3.5 9h9a1.5 1.5 0 0 1 1.5 1.5V15h.5a.5.5 0 0 0 .5-.5V2.914a.5.5 0 0 0-.146-.353l-1.415-1.415A.5.5 0 0 0 13.086 1H13v3.5A1.5 1.5 0 0 1 11.5 6h-7A1.5 1.5 0 0 1 3 4.5V1H1.5a.5.5 0 0 0-.5.5m9.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-floppy2-fill" viewBox="0 0 16 16" id="floppy2-fill"><path d="M12 2h-2v3h2z"/><path d="M1.5 0A1.5 1.5 0 0 0 0 1.5v13A1.5 1.5 0 0 0 1.5 16h13a1.5 1.5 0 0 0 1.5-1.5V2.914a1.5 1.5 0 0 0-.44-1.06L14.147.439A1.5 1.5 0 0 0 13.086 0zM4 6a1 1 0 0 1-1-1V1h10v4a1 1 0 0 1-1 1zM3 9h10a1 1 0 0 1 1 1v5H2v-5a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-flower1" viewBox="0 0 16 16" id="flower1"><path d="M6.174 1.184a2 2 0 0 1 3.652 0A2 2 0 0 1 12.99 3.01a2 2 0 0 1 1.826 3.164 2 2 0 0 1 0 3.652 2 2 0 0 1-1.826 3.164 2 2 0 0 1-3.164 1.826 2 2 0 0 1-3.652 0A2 2 0 0 1 3.01 12.99a2 2 0 0 1-1.826-3.164 2 2 0 0 1 0-3.652A2 2 0 0 1 3.01 3.01a2 2 0 0 1 3.164-1.826M8 1a1 1 0 0 0-.998 1.03l.01.091q.017.116.054.296c.049.241.122.542.213.887.182.688.428 1.513.676 2.314L8 5.762l.045-.144c.248-.8.494-1.626.676-2.314.091-.345.164-.646.213-.887a5 5 0 0 0 .064-.386L9 2a1 1 0 0 0-1-1M2 9l.03-.002.091-.01a5 5 0 0 0 .296-.054c.241-.049.542-.122.887-.213a61 61 0 0 0 2.314-.676L5.762 8l-.144-.045a61 61 0 0 0-2.314-.676 17 17 0 0 0-.887-.213 5 5 0 0 0-.386-.064L2 7a1 1 0 1 0 0 2m7 5-.002-.03a5 5 0 0 0-.064-.386 16 16 0 0 0-.213-.888 61 61 0 0 0-.676-2.314L8 10.238l-.045.144c-.248.8-.494 1.626-.676 2.314-.091.345-.164.646-.213.887a5 5 0 0 0-.064.386L7 14a1 1 0 1 0 2 0m-5.696-2.134.025-.017a5 5 0 0 0 .303-.248c.184-.164.408-.377.661-.629A61 61 0 0 0 5.96 9.23l.103-.111-.147.033a61 61 0 0 0-2.343.572c-.344.093-.64.18-.874.258a5 5 0 0 0-.367.138l-.027.014a1 1 0 1 0 1 1.732zM4.5 14.062a1 1 0 0 0 1.366-.366l.014-.027q.014-.03.036-.084a5 5 0 0 0 .102-.283c.078-.233.165-.53.258-.874a61 61 0 0 0 .572-2.343l.033-.147-.11.102a61 61 0 0 0-1.743 1.667 17 17 0 0 0-.629.66 5 5 0 0 0-.248.304l-.017.025a1 1 0 0 0 .366 1.366m9.196-8.196a1 1 0 0 0-1-1.732l-.025.017a5 5 0 0 0-.303.248 17 17 0 0 0-.661.629A61 61 0 0 0 10.04 6.77l-.102.111.147-.033a61 61 0 0 0 2.342-.572c.345-.093.642-.18.875-.258a5 5 0 0 0 .367-.138zM11.5 1.938a1 1 0 0 0-1.366.366l-.014.027q-.014.03-.036.084a5 5 0 0 0-.102.283c-.078.233-.165.53-.258.875a61 61 0 0 0-.572 2.342l-.033.147.11-.102a61 61 0 0 0 1.743-1.667c.252-.253.465-.477.629-.66a5 5 0 0 0 .248-.304l.017-.025a1 1 0 0 0-.366-1.366M14 9a1 1 0 0 0 0-2l-.03.002a5 5 0 0 0-.386.064c-.242.049-.543.122-.888.213-.688.182-1.513.428-2.314.676L10.238 8l.144.045c.8.248 1.626.494 2.314.676.345.091.646.164.887.213a5 5 0 0 0 .386.064zM1.938 4.5a1 1 0 0 0 .393 1.38l.084.035q.108.045.283.103c.233.078.53.165.874.258a61 61 0 0 0 2.343.572l.147.033-.103-.111a61 61 0 0 0-1.666-1.742 17 17 0 0 0-.66-.629 5 5 0 0 0-.304-.248l-.025-.017a1 1 0 0 0-1.366.366m2.196-1.196.017.025a5 5 0 0 0 .248.303c.164.184.377.408.629.661A61 61 0 0 0 6.77 5.96l.111.102-.033-.147a61 61 0 0 0-.572-2.342c-.093-.345-.18-.642-.258-.875a5 5 0 0 0-.138-.367l-.014-.027a1 1 0 1 0-1.732 1m9.928 8.196a1 1 0 0 0-.366-1.366l-.027-.014a5 5 0 0 0-.367-.138c-.233-.078-.53-.165-.875-.258a61 61 0 0 0-2.342-.572l-.147-.033.102.111a61 61 0 0 0 1.667 1.742c.253.252.477.465.66.629a5 5 0 0 0 .304.248l.025.017a1 1 0 0 0 1.366-.366m-3.928 2.196a1 1 0 0 0 1.732-1l-.017-.025a5 5 0 0 0-.248-.303 17 17 0 0 0-.629-.661A61 61 0 0 0 9.23 10.04l-.111-.102.033.147a61 61 0 0 0 .572 2.342c.093.345.18.642.258.875a5 5 0 0 0 .138.367zM8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/></symbol><symbol class="bi bi-flower2" viewBox="0 0 16 16" id="flower2"><path d="M8 16a4 4 0 0 0 4-4 4 4 0 0 0 0-8 4 4 0 0 0-8 0 4 4 0 1 0 0 8 4 4 0 0 0 4 4m3-12q0 .11-.03.247c-.544.241-1.091.638-1.598 1.084A3 3 0 0 0 8 5c-.494 0-.96.12-1.372.331-.507-.446-1.054-.843-1.597-1.084A1 1 0 0 1 5 4a3 3 0 0 1 6 0m-.812 6.052A3 3 0 0 0 11 8a3 3 0 0 0-.812-2.052c.215-.18.432-.346.647-.487C11.34 5.131 11.732 5 12 5a3 3 0 1 1 0 6c-.268 0-.66-.13-1.165-.461a7 7 0 0 1-.647-.487m-3.56.617a3 3 0 0 0 2.744 0c.507.446 1.054.842 1.598 1.084q.03.137.03.247a3 3 0 1 1-6 0q0-.11.03-.247c.544-.242 1.091-.638 1.598-1.084m-.816-4.721A3 3 0 0 0 5 8c0 .794.308 1.516.812 2.052a7 7 0 0 1-.647.487C4.66 10.869 4.268 11 4 11a3 3 0 0 1 0-6c.268 0 .66.13 1.165.461.215.141.432.306.647.487M8 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/></symbol><symbol class="bi bi-flower3" viewBox="0 0 16 16" id="flower3"><path d="M11.424 8c.437-.052.811-.136 1.04-.268a2 2 0 0 0-2-3.464c-.229.132-.489.414-.752.767C9.886 4.63 10 4.264 10 4a2 2 0 1 0-4 0c0 .264.114.63.288 1.035-.263-.353-.523-.635-.752-.767a2 2 0 0 0-2 3.464c.229.132.603.216 1.04.268-.437.052-.811.136-1.04.268a2 2 0 1 0 2 3.464c.229-.132.489-.414.752-.767C6.114 11.37 6 11.736 6 12a2 2 0 1 0 4 0c0-.264-.114-.63-.288-1.035.263.353.523.635.752.767a2 2 0 1 0 2-3.464c-.229-.132-.603-.216-1.04-.268M9 4a2 2 0 0 1-.045.205q-.059.2-.183.484a13 13 0 0 1-.637 1.223L8 6.142l-.135-.23a13 13 0 0 1-.637-1.223 4 4 0 0 1-.183-.484A2 2 0 0 1 7 4a1 1 0 1 1 2 0M3.67 5.5a1 1 0 0 1 1.366-.366 2 2 0 0 1 .156.142q.142.15.326.4c.245.333.502.747.742 1.163l.13.232-.265.002a13 13 0 0 1-1.379-.06 4 4 0 0 1-.51-.083 2 2 0 0 1-.2-.064A1 1 0 0 1 3.67 5.5m1.366 5.366a1 1 0 0 1-1-1.732l.047-.02q.055-.02.153-.044.202-.048.51-.083a13 13 0 0 1 1.379-.06q.135 0 .266.002l-.131.232c-.24.416-.497.83-.742 1.163a4 4 0 0 1-.327.4 2 2 0 0 1-.155.142M9 12a1 1 0 0 1-2 0 2 2 0 0 1 .045-.206q.058-.198.183-.483c.166-.378.396-.808.637-1.223L8 9.858l.135.23c.241.415.47.845.637 1.223q.124.285.183.484A1.3 1.3 0 0 1 9 12m3.33-6.5a1 1 0 0 1-.366 1.366 2 2 0 0 1-.2.064q-.202.048-.51.083c-.412.045-.898.061-1.379.06q-.135 0-.266-.002l.131-.232c.24-.416.497-.83.742-1.163a4 4 0 0 1 .327-.4q.07-.074.114-.11l.041-.032a1 1 0 0 1 1.366.366m-1.366 5.366a2 2 0 0 1-.155-.141 4 4 0 0 1-.327-.4A13 13 0 0 1 9.74 9.16l-.13-.232.265-.002c.48-.001.967.015 1.379.06q.308.035.51.083.098.024.153.044l.048.02a1 1 0 1 1-1 1.732zM8 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/></symbol><symbol class="bi bi-folder" viewBox="0 0 16 16" id="folder"><path d="M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.826a2 2 0 0 1-1.991-1.819l-.637-7a2 2 0 0 1 .342-1.31zM2.19 4a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91h10.348a1 1 0 0 0 .995-.91l.637-7A1 1 0 0 0 13.81 4zm4.69-1.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139q.323-.119.684-.12h5.396z"/></symbol><symbol class="bi bi-folder-check" viewBox="0 0 16 16" id="folder-check"><path d="m.5 3 .04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2m5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98z"/><path d="M15.854 10.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.707 0l-1.5-1.5a.5.5 0 0 1 .707-.708l1.146 1.147 2.646-2.647a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-folder-fill" viewBox="0 0 16 16" id="folder-fill"><path d="M9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.825a2 2 0 0 1-1.991-1.819l-.637-7a2 2 0 0 1 .342-1.31L.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3m-8.322.12q.322-.119.684-.12h5.396l-.707-.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981z"/></symbol><symbol class="bi bi-folder-minus" viewBox="0 0 16 16" id="folder-minus"><path d="m.5 3 .04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2m5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98z"/><path d="M11 11.5a.5.5 0 0 1 .5-.5h4a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-folder-plus" viewBox="0 0 16 16" id="folder-plus"><path d="m.5 3 .04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2m5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98z"/><path d="M13.5 9a.5.5 0 0 1 .5.5V11h1.5a.5.5 0 1 1 0 1H14v1.5a.5.5 0 1 1-1 0V12h-1.5a.5.5 0 0 1 0-1H13V9.5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-folder-symlink" viewBox="0 0 16 16" id="folder-symlink"><path d="m11.798 8.271-3.182 1.97c-.27.166-.616-.036-.616-.372V9.1s-2.571-.3-4 2.4c.571-4.8 3.143-4.8 4-4.8v-.769c0-.336.346-.538.616-.371l3.182 1.969c.27.166.27.576 0 .742"/><path d="m.5 3 .04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14h10.348a2 2 0 0 0 1.991-1.819l.637-7A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2m.694 2.09A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09l-.636 7a1 1 0 0 1-.996.91H2.826a1 1 0 0 1-.995-.91zM6.172 2a1 1 0 0 1 .707.293L7.586 3H2.19q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98z"/></symbol><symbol class="bi bi-folder-symlink-fill" viewBox="0 0 16 16" id="folder-symlink-fill"><path d="M13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2l.04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14h10.348a2 2 0 0 0 1.991-1.819l.637-7A2 2 0 0 0 13.81 3M2.19 3q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98h3.672a1 1 0 0 1 .707.293L7.586 3zm9.608 5.271-3.182 1.97c-.27.166-.616-.036-.616-.372V9.1s-2.571-.3-4 2.4c.571-4.8 3.143-4.8 4-4.8v-.769c0-.336.346-.538.616-.371l3.182 1.969c.27.166.27.576 0 .742"/></symbol><symbol class="bi bi-folder-x" viewBox="0 0 16 16" id="folder-x"><path d="M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181L15.546 8H14.54l.265-2.91A1 1 0 0 0 13.81 4H2.19a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91H9v1H2.826a2 2 0 0 1-1.991-1.819l-.637-7a2 2 0 0 1 .342-1.31zm6.339-1.577A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139q.323-.119.684-.12h5.396z"/><path d="M11.854 10.146a.5.5 0 0 0-.707.708L12.293 12l-1.146 1.146a.5.5 0 0 0 .707.708L13 12.707l1.146 1.147a.5.5 0 0 0 .708-.708L13.707 12l1.147-1.146a.5.5 0 0 0-.707-.708L13 11.293z"/></symbol><symbol class="bi bi-folder2" viewBox="0 0 16 16" id="folder2"><path d="M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C7.985 3.648 8.48 4 9 4h4.5A1.5 1.5 0 0 1 15 5.5v7a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 12.5zM2.5 3a.5.5 0 0 0-.5.5V6h12v-.5a.5.5 0 0 0-.5-.5H9c-.964 0-1.71-.629-2.174-1.154C6.374 3.334 5.82 3 5.264 3zM14 7H2v5.5a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5z"/></symbol><symbol class="bi bi-folder2-open" viewBox="0 0 16 16" id="folder2-open"><path d="M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C7.985 3.648 8.48 4 9 4h4.5A1.5 1.5 0 0 1 15 5.5v.64c.57.265.94.876.856 1.546l-.64 5.124A2.5 2.5 0 0 1 12.733 15H3.266a2.5 2.5 0 0 1-2.481-2.19l-.64-5.124A1.5 1.5 0 0 1 1 6.14zM2 6h12v-.5a.5.5 0 0 0-.5-.5H9c-.964 0-1.71-.629-2.174-1.154C6.374 3.334 5.82 3 5.264 3H2.5a.5.5 0 0 0-.5.5zm-.367 1a.5.5 0 0 0-.496.562l.64 5.124A1.5 1.5 0 0 0 3.266 14h9.468a1.5 1.5 0 0 0 1.489-1.314l.64-5.124A.5.5 0 0 0 14.367 7z"/></symbol><symbol class="bi bi-fonts" viewBox="0 0 16 16" id="fonts"><path d="M12.258 3h-8.51l-.083 2.46h.479c.26-1.544.758-1.783 2.693-1.845l.424-.013v7.827c0 .663-.144.82-1.3.923v.52h4.082v-.52c-1.162-.103-1.306-.26-1.306-.923V3.602l.431.013c1.934.062 2.434.301 2.693 1.846h.479z"/></symbol><symbol class="bi bi-forward" viewBox="0 0 16 16" id="forward"><path d="M9.502 5.513a.144.144 0 0 0-.202.134V6.65a.5.5 0 0 1-.5.5H2.5v2.9h6.3a.5.5 0 0 1 .5.5v1.003c0 .108.11.176.202.134l3.984-2.933.042-.028a.147.147 0 0 0 0-.252l-.042-.028zM8.3 5.647a1.144 1.144 0 0 1 1.767-.96l3.994 2.94a1.147 1.147 0 0 1 0 1.946l-3.994 2.94a1.144 1.144 0 0 1-1.767-.96v-.503H2a.5.5 0 0 1-.5-.5v-3.9a.5.5 0 0 1 .5-.5h6.3z"/></symbol><symbol class="bi bi-forward-fill" viewBox="0 0 16 16" id="forward-fill"><path d="m9.77 12.11 4.012-2.953a.647.647 0 0 0 0-1.114L9.771 5.09a.644.644 0 0 0-.971.557V6.65H2v3.9h6.8v1.003c0 .505.545.808.97.557"/></symbol><symbol class="bi bi-front" viewBox="0 0 16 16" id="front"><path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm5 10v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2v5a2 2 0 0 1-2 2z"/></symbol><symbol class="bi bi-fuel-pump" viewBox="0 0 16 16" id="fuel-pump"><path d="M3 2.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/><path d="M1 2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v8a2 2 0 0 1 2 2v.5a.5.5 0 0 0 1 0V8h-.5a.5.5 0 0 1-.5-.5V4.375a.5.5 0 0 1 .5-.5h1.495c-.011-.476-.053-.894-.201-1.222a.97.97 0 0 0-.394-.458c-.184-.11-.464-.195-.9-.195a.5.5 0 0 1 0-1q.846-.002 1.412.336c.383.228.634.551.794.907.295.655.294 1.465.294 2.081v3.175a.5.5 0 0 1-.5.501H15v4.5a1.5 1.5 0 0 1-3 0V12a1 1 0 0 0-1-1v4h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1zm9 0a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v13h8z"/></symbol><symbol class="bi bi-fuel-pump-diesel" viewBox="0 0 16 16" id="fuel-pump-diesel"><path d="M3.5 2a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5zM4 14V9h1.796q.75 0 1.237.293t.725.85Q8 10.7 8 11.487q0 .792-.242 1.355a1.8 1.8 0 0 1-.732.861Q6.54 14 5.796 14zm1.666-4.194h-.692v3.385h.692q.343 0 .595-.103a1 1 0 0 0 .412-.315q.162-.213.241-.528.084-.314.083-.74 0-.565-.144-.94a1.1 1.1 0 0 0-.436-.569q-.293-.19-.75-.19Z"/><path d="M3 0a2 2 0 0 0-2 2v13H.5a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1H11v-4a1 1 0 0 1 1 1v.5a1.5 1.5 0 0 0 3 0V8h.5a.5.5 0 0 0 .5-.5V4.324c0-.616 0-1.426-.294-2.081a1.97 1.97 0 0 0-.794-.907Q14.345.999 13.5 1a.5.5 0 0 0 0 1c.436 0 .716.086.9.195a.97.97 0 0 1 .394.458c.147.328.19.746.201 1.222H13.5a.5.5 0 0 0-.5.5V7.5a.5.5 0 0 0 .5.5h.5v4.5a.5.5 0 0 1-1 0V12a2 2 0 0 0-2-2V2a2 2 0 0 0-2-2zm7 2v13H2V2a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1"/></symbol><symbol class="bi bi-fuel-pump-diesel-fill" viewBox="0 0 16 16" id="fuel-pump-diesel-fill"><path d="M4.974 9.806h.692q.459 0 .75.19.297.191.437.568.144.377.144.941 0 .425-.083.74-.08.315-.241.528a1 1 0 0 1-.412.315 1.6 1.6 0 0 1-.595.103h-.692z"/><path d="M1 2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v8a2 2 0 0 1 2 2v.5a.5.5 0 0 0 1 0V8h-.5a.5.5 0 0 1-.5-.5V4.375a.5.5 0 0 1 .5-.5h1.495c-.011-.476-.053-.894-.201-1.222a.97.97 0 0 0-.394-.458c-.184-.11-.464-.195-.9-.195a.5.5 0 0 1 0-1q.846-.002 1.412.336c.383.228.634.551.794.907.295.655.294 1.465.294 2.081V7.5a.5.5 0 0 1-.5.5H15v4.5a1.5 1.5 0 0 1-3 0V12a1 1 0 0 0-1-1v4h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1zm2 .5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5M4 9v5h1.796q.744 0 1.23-.297.49-.296.732-.86T8 11.487q0-.788-.242-1.344a1.78 1.78 0 0 0-.725-.85Q6.547 9 5.796 9z"/></symbol><symbol class="bi bi-fuel-pump-fill" viewBox="0 0 16 16" id="fuel-pump-fill"><path d="M1 2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v8a2 2 0 0 1 2 2v.5a.5.5 0 0 0 1 0V8h-.5a.5.5 0 0 1-.5-.5V4.375a.5.5 0 0 1 .5-.5h1.495c-.011-.476-.053-.894-.201-1.222a.97.97 0 0 0-.394-.458c-.184-.11-.464-.195-.9-.195a.5.5 0 0 1 0-1q.846-.002 1.412.336c.383.228.634.551.794.907.295.655.294 1.465.294 2.081V7.5a.5.5 0 0 1-.5.5H15v4.5a1.5 1.5 0 0 1-3 0V12a1 1 0 0 0-1-1v4h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1zm2.5 0a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-fullscreen" viewBox="0 0 16 16" id="fullscreen"><path d="M1.5 1a.5.5 0 0 0-.5.5v4a.5.5 0 0 1-1 0v-4A1.5 1.5 0 0 1 1.5 0h4a.5.5 0 0 1 0 1zM10 .5a.5.5 0 0 1 .5-.5h4A1.5 1.5 0 0 1 16 1.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 0-.5-.5h-4a.5.5 0 0 1-.5-.5M.5 10a.5.5 0 0 1 .5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 0 14.5v-4a.5.5 0 0 1 .5-.5m15 0a.5.5 0 0 1 .5.5v4a1.5 1.5 0 0 1-1.5 1.5h-4a.5.5 0 0 1 0-1h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-fullscreen-exit" viewBox="0 0 16 16" id="fullscreen-exit"><path d="M5.5 0a.5.5 0 0 1 .5.5v4A1.5 1.5 0 0 1 4.5 6h-4a.5.5 0 0 1 0-1h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 1 .5-.5m5 0a.5.5 0 0 1 .5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 10 4.5v-4a.5.5 0 0 1 .5-.5M0 10.5a.5.5 0 0 1 .5-.5h4A1.5 1.5 0 0 1 6 11.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 0-.5-.5h-4a.5.5 0 0 1-.5-.5m10 1a1.5 1.5 0 0 1 1.5-1.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 0-.5.5v4a.5.5 0 0 1-1 0z"/></symbol><symbol class="bi bi-funnel" viewBox="0 0 16 16" id="funnel"><path d="M1.5 1.5A.5.5 0 0 1 2 1h12a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.128.334L10 8.692V13.5a.5.5 0 0 1-.342.474l-3 1A.5.5 0 0 1 6 14.5V8.692L1.628 3.834A.5.5 0 0 1 1.5 3.5zm1 .5v1.308l4.372 4.858A.5.5 0 0 1 7 8.5v5.306l2-.666V8.5a.5.5 0 0 1 .128-.334L13.5 3.308V2z"/></symbol><symbol class="bi bi-funnel-fill" viewBox="0 0 16 16" id="funnel-fill"><path d="M1.5 1.5A.5.5 0 0 1 2 1h12a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.128.334L10 8.692V13.5a.5.5 0 0 1-.342.474l-3 1A.5.5 0 0 1 6 14.5V8.692L1.628 3.834A.5.5 0 0 1 1.5 3.5z"/></symbol><symbol class="bi bi-gear" viewBox="0 0 16 16" id="gear"><path d="M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492M5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0"/><path d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115z"/></symbol><symbol class="bi bi-gear-fill" viewBox="0 0 16 16" id="gear-fill"><path d="M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 0 1 .872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 0 1-2.105-.872zM8 10.93a2.929 2.929 0 1 1 0-5.86 2.929 2.929 0 0 1 0 5.858z"/></symbol><symbol class="bi bi-gear-wide" viewBox="0 0 16 16" id="gear-wide"><path d="M8.932.727c-.243-.97-1.62-.97-1.864 0l-.071.286a.96.96 0 0 1-1.622.434l-.205-.211c-.695-.719-1.888-.03-1.613.931l.08.284a.96.96 0 0 1-1.186 1.187l-.284-.081c-.96-.275-1.65.918-.931 1.613l.211.205a.96.96 0 0 1-.434 1.622l-.286.071c-.97.243-.97 1.62 0 1.864l.286.071a.96.96 0 0 1 .434 1.622l-.211.205c-.719.695-.03 1.888.931 1.613l.284-.08a.96.96 0 0 1 1.187 1.187l-.081.283c-.275.96.918 1.65 1.613.931l.205-.211a.96.96 0 0 1 1.622.434l.071.286c.243.97 1.62.97 1.864 0l.071-.286a.96.96 0 0 1 1.622-.434l.205.211c.695.719 1.888.03 1.613-.931l-.08-.284a.96.96 0 0 1 1.187-1.187l.283.081c.96.275 1.65-.918.931-1.613l-.211-.205a.96.96 0 0 1 .434-1.622l.286-.071c.97-.243.97-1.62 0-1.864l-.286-.071a.96.96 0 0 1-.434-1.622l.211-.205c.719-.695.03-1.888-.931-1.613l-.284.08a.96.96 0 0 1-1.187-1.186l.081-.284c.275-.96-.918-1.65-1.613-.931l-.205.211a.96.96 0 0 1-1.622-.434zM8 12.997a4.998 4.998 0 1 1 0-9.995 4.998 4.998 0 0 1 0 9.996z"/></symbol><symbol class="bi bi-gear-wide-connected" viewBox="0 0 16 16" id="gear-wide-connected"><path d="M7.068.727c.243-.97 1.62-.97 1.864 0l.071.286a.96.96 0 0 0 1.622.434l.205-.211c.695-.719 1.888-.03 1.613.931l-.08.284a.96.96 0 0 0 1.187 1.187l.283-.081c.96-.275 1.65.918.931 1.613l-.211.205a.96.96 0 0 0 .434 1.622l.286.071c.97.243.97 1.62 0 1.864l-.286.071a.96.96 0 0 0-.434 1.622l.211.205c.719.695.03 1.888-.931 1.613l-.284-.08a.96.96 0 0 0-1.187 1.187l.081.283c.275.96-.918 1.65-1.613.931l-.205-.211a.96.96 0 0 0-1.622.434l-.071.286c-.243.97-1.62.97-1.864 0l-.071-.286a.96.96 0 0 0-1.622-.434l-.205.211c-.695.719-1.888.03-1.613-.931l.08-.284a.96.96 0 0 0-1.186-1.187l-.284.081c-.96.275-1.65-.918-.931-1.613l.211-.205a.96.96 0 0 0-.434-1.622l-.286-.071c-.97-.243-.97-1.62 0-1.864l.286-.071a.96.96 0 0 0 .434-1.622l-.211-.205c-.719-.695-.03-1.888.931-1.613l.284.08a.96.96 0 0 0 1.187-1.186l-.081-.284c-.275-.96.918-1.65 1.613-.931l.205.211a.96.96 0 0 0 1.622-.434zM12.973 8.5H8.25l-2.834 3.779A4.998 4.998 0 0 0 12.973 8.5m0-1a4.998 4.998 0 0 0-7.557-3.779l2.834 3.78zM5.048 3.967l-.087.065zm-.431.355A4.98 4.98 0 0 0 3.002 8c0 1.455.622 2.765 1.615 3.678L7.375 8zm.344 7.646.087.065z"/></symbol><symbol class="bi bi-gem" viewBox="0 0 16 16" id="gem"><path d="M3.1.7a.5.5 0 0 1 .4-.2h9a.5.5 0 0 1 .4.2l2.976 3.974c.149.185.156.45.01.644L8.4 15.3a.5.5 0 0 1-.8 0L.1 5.3a.5.5 0 0 1 0-.6zm11.386 3.785-1.806-2.41-.776 2.413zm-3.633.004.961-2.989H4.186l.963 2.995zM5.47 5.495 8 13.366l2.532-7.876zm-1.371-.999-.78-2.422-1.818 2.425zM1.499 5.5l5.113 6.817-2.192-6.82zm7.889 6.817 5.123-6.83-2.928.002z"/></symbol><symbol class="bi bi-gender-ambiguous" viewBox="0 0 16 16" id="gender-ambiguous"><path fill-rule="evenodd" d="M11.5 1a.5.5 0 0 1 0-1h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-3.45 3.45A4 4 0 0 1 8.5 10.97V13H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V14H6a.5.5 0 0 1 0-1h1.5v-2.03a4 4 0 1 1 3.471-6.648L14.293 1zm-.997 4.346a3 3 0 1 0-5.006 3.309 3 3 0 0 0 5.006-3.31z"/></symbol><symbol class="bi bi-gender-female" viewBox="0 0 16 16" id="gender-female"><path fill-rule="evenodd" d="M8 1a4 4 0 1 0 0 8 4 4 0 0 0 0-8M3 5a5 5 0 1 1 5.5 4.975V12h2a.5.5 0 0 1 0 1h-2v2.5a.5.5 0 0 1-1 0V13h-2a.5.5 0 0 1 0-1h2V9.975A5 5 0 0 1 3 5"/></symbol><symbol class="bi bi-gender-male" viewBox="0 0 16 16" id="gender-male"><path fill-rule="evenodd" d="M9.5 2a.5.5 0 0 1 0-1h5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-1 0V2.707L9.871 6.836a5 5 0 1 1-.707-.707L13.293 2zM6 6a4 4 0 1 0 0 8 4 4 0 0 0 0-8"/></symbol><symbol class="bi bi-gender-neuter" viewBox="0 0 16 16" id="gender-neuter"><path fill-rule="evenodd" d="M8 1a4 4 0 1 0 0 8 4 4 0 0 0 0-8M3 5a5 5 0 1 1 5.5 4.975V15.5a.5.5 0 0 1-1 0V9.975A5 5 0 0 1 3 5"/></symbol><symbol class="bi bi-gender-trans" viewBox="0 0 16 16" id="gender-trans"><path fill-rule="evenodd" d="M0 .5A.5.5 0 0 1 .5 0h3a.5.5 0 0 1 0 1H1.707L3.5 2.793l.646-.647a.5.5 0 1 1 .708.708l-.647.646.822.822A4 4 0 0 1 8 3c1.18 0 2.239.51 2.971 1.322L14.293 1H11.5a.5.5 0 0 1 0-1h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-3.45 3.45A4 4 0 0 1 8.5 10.97V13H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V14H6a.5.5 0 0 1 0-1h1.5v-2.03a4 4 0 0 1-3.05-5.814l-.95-.949-.646.647a.5.5 0 1 1-.708-.708l.647-.646L1 1.707V3.5a.5.5 0 0 1-1 0zm5.49 4.856a3 3 0 1 0 5.02 3.288 3 3 0 0 0-5.02-3.288"/></symbol><symbol class="bi bi-geo" viewBox="0 0 16 16" id="geo"><path fill-rule="evenodd" d="M8 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999zm2.493 8.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.3 1.3 0 0 0-.37.265.3.3 0 0 0-.057.09V14l.002.008.016.033a.6.6 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.6.6 0 0 0 .146-.15l.015-.033L12 14v-.004a.3.3 0 0 0-.057-.09 1.3 1.3 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465s-2.462-.172-3.34-.465c-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411"/></symbol><symbol class="bi bi-geo-alt" viewBox="0 0 16 16" id="geo-alt"><path d="M12.166 8.94c-.524 1.062-1.234 2.12-1.96 3.07A32 32 0 0 1 8 14.58a32 32 0 0 1-2.206-2.57c-.726-.95-1.436-2.008-1.96-3.07C3.304 7.867 3 6.862 3 6a5 5 0 0 1 10 0c0 .862-.305 1.867-.834 2.94M8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10"/><path d="M8 8a2 2 0 1 1 0-4 2 2 0 0 1 0 4m0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/></symbol><symbol class="bi bi-geo-alt-fill" viewBox="0 0 16 16" id="geo-alt-fill"><path d="M8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10m0-7a3 3 0 1 1 0-6 3 3 0 0 1 0 6"/></symbol><symbol class="bi bi-geo-fill" viewBox="0 0 16 16" id="geo-fill"><path fill-rule="evenodd" d="M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999zm2.493 8.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.3 1.3 0 0 0-.37.265.3.3 0 0 0-.057.09V14l.002.008.016.033a.6.6 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.6.6 0 0 0 .146-.15l.015-.033L12 14v-.004a.3.3 0 0 0-.057-.09 1.3 1.3 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465s-2.462-.172-3.34-.465c-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411"/></symbol><symbol class="bi bi-gift" viewBox="0 0 16 16" id="gift"><path d="M3 2.5a2.5 2.5 0 0 1 5 0 2.5 2.5 0 0 1 5 0v.006c0 .07 0 .27-.038.494H15a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v7.5a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 14.5V7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h2.038A3 3 0 0 1 3 2.506zm1.068.5H7v-.5a1.5 1.5 0 1 0-3 0c0 .085.002.274.045.43zM9 3h2.932l.023-.07c.043-.156.045-.345.045-.43a1.5 1.5 0 0 0-3 0zM1 4v2h6V4zm8 0v2h6V4zm5 3H9v8h4.5a.5.5 0 0 0 .5-.5zm-7 8V7H2v7.5a.5.5 0 0 0 .5.5z"/></symbol><symbol class="bi bi-gift-fill" viewBox="0 0 16 16" id="gift-fill"><path d="M3 2.5a2.5 2.5 0 0 1 5 0 2.5 2.5 0 0 1 5 0v.006c0 .07 0 .27-.038.494H15a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h2.038A3 3 0 0 1 3 2.506zm1.068.5H7v-.5a1.5 1.5 0 1 0-3 0c0 .085.002.274.045.43zM9 3h2.932l.023-.07c.043-.156.045-.345.045-.43a1.5 1.5 0 0 0-3 0zm6 4v7.5a1.5 1.5 0 0 1-1.5 1.5H9V7zM2.5 16A1.5 1.5 0 0 1 1 14.5V7h6v9z"/></symbol><symbol class="bi bi-git" viewBox="0 0 16 16" id="git"><path d="M15.698 7.287 8.712.302a1.03 1.03 0 0 0-1.457 0l-1.45 1.45 1.84 1.84a1.223 1.223 0 0 1 1.55 1.56l1.773 1.774a1.224 1.224 0 0 1 1.267 2.025 1.226 1.226 0 0 1-2.002-1.334L8.58 5.963v4.353a1.226 1.226 0 1 1-1.008-.036V5.887a1.226 1.226 0 0 1-.666-1.608L5.093 2.465l-4.79 4.79a1.03 1.03 0 0 0 0 1.457l6.986 6.986a1.03 1.03 0 0 0 1.457 0l6.953-6.953a1.03 1.03 0 0 0 0-1.457"/></symbol><symbol class="bi bi-github" viewBox="0 0 16 16" id="github"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/></symbol><symbol class="bi bi-gitlab" viewBox="0 0 16 16" id="gitlab"><path d="m15.734 6.1-.022-.058L13.534.358a.57.57 0 0 0-.563-.356.6.6 0 0 0-.328.122.6.6 0 0 0-.193.294l-1.47 4.499H5.025l-1.47-4.5A.572.572 0 0 0 2.47.358L.289 6.04l-.022.057A4.044 4.044 0 0 0 1.61 10.77l.007.006.02.014 3.318 2.485 1.64 1.242 1 .755a.67.67 0 0 0 .814 0l1-.755 1.64-1.242 3.338-2.5.009-.007a4.05 4.05 0 0 0 1.34-4.668Z"/></symbol><symbol class="bi bi-globe" viewBox="0 0 16 16" id="globe"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m7.5-6.923c-.67.204-1.335.82-1.887 1.855A8 8 0 0 0 5.145 4H7.5zM4.09 4a9.3 9.3 0 0 1 .64-1.539 7 7 0 0 1 .597-.933A7.03 7.03 0 0 0 2.255 4zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a7 7 0 0 0-.656 2.5zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5zM8.5 5v2.5h2.99a12.5 12.5 0 0 0-.337-2.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5V8.5zm3.99 0V11h2.653c.187-.765.306-1.608.338-2.5zM5.145 12q.208.58.468 1.068c.552 1.035 1.218 1.65 1.887 1.855V12zm.182 2.472a7 7 0 0 1-.597-.933A9.3 9.3 0 0 1 4.09 12H2.255a7 7 0 0 0 3.072 2.472M3.82 11a13.7 13.7 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5zm6.853 3.472A7 7 0 0 0 13.745 12H11.91a9.3 9.3 0 0 1-.64 1.539 7 7 0 0 1-.597.933M8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855q.26-.487.468-1.068zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.7 13.7 0 0 1-.312 2.5m2.802-3.5a7 7 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5zM11.27 2.461c.247.464.462.98.64 1.539h1.835a7 7 0 0 0-3.072-2.472c.218.284.418.598.597.933M10.855 4a8 8 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4z"/></symbol><symbol class="bi bi-globe-americas" viewBox="0 0 16 16" id="globe-americas"><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M2.04 4.326c.325 1.329 2.532 2.54 3.717 3.19.48.263.793.434.743.484q-.121.12-.242.234c-.416.396-.787.749-.758 1.266.035.634.618.824 1.214 1.017.577.188 1.168.38 1.286.983.082.417-.075.988-.22 1.52-.215.782-.406 1.48.22 1.48 1.5-.5 3.798-3.186 4-5 .138-1.243-2-2-3.5-2.5-.478-.16-.755.081-.99.284-.172.15-.322.279-.51.216-.445-.148-2.5-2-1.5-2.5.78-.39.952-.171 1.227.182.078.099.163.208.273.318.609.304.662-.132.723-.633.039-.322.081-.671.277-.867.434-.434 1.265-.791 2.028-1.12.712-.306 1.365-.587 1.579-.88A7 7 0 1 1 2.04 4.327Z"/></symbol><symbol class="bi bi-globe-asia-australia" viewBox="0 0 16 16" id="globe-asia-australia"><path d="m10.495 6.92 1.278-.619a.483.483 0 0 0 .126-.782c-.252-.244-.682-.139-.932.107-.23.226-.513.373-.816.53l-.102.054c-.338.178-.264.626.1.736a.48.48 0 0 0 .346-.027ZM7.741 9.808V9.78a.413.413 0 1 1 .783.183l-.22.443a.6.6 0 0 1-.12.167l-.193.185a.36.36 0 1 1-.5-.516l.112-.108a.45.45 0 0 0 .138-.326M5.672 12.5l.482.233A.386.386 0 1 0 6.32 12h-.416a.7.7 0 0 1-.419-.139l-.277-.206a.302.302 0 1 0-.298.52z"/><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M1.612 10.867l.756-1.288a1 1 0 0 1 1.545-.225l1.074 1.005a.986.986 0 0 0 1.36-.011l.038-.037a.88.88 0 0 0 .26-.755c-.075-.548.37-1.033.92-1.099.728-.086 1.587-.324 1.728-.957.086-.386-.114-.83-.361-1.2-.207-.312 0-.8.374-.8.123 0 .24-.055.318-.15l.393-.474c.196-.237.491-.368.797-.403.554-.064 1.407-.277 1.583-.973.098-.391-.192-.634-.484-.88-.254-.212-.51-.426-.515-.741a7 7 0 0 1 3.425 7.692 1 1 0 0 0-.087-.063l-.316-.204a1 1 0 0 0-.977-.06l-.169.082a1 1 0 0 1-.741.051l-1.021-.329A1 1 0 0 0 11.205 9h-.165a1 1 0 0 0-.945.674l-.172.499a1 1 0 0 1-.404.514l-.802.518a1 1 0 0 0-.458.84v.455a1 1 0 0 0 1 1h.257a1 1 0 0 1 .542.16l.762.49a1 1 0 0 0 .283.126 7 7 0 0 1-9.49-3.409Z"/></symbol><symbol class="bi bi-globe-central-south-asia" viewBox="0 0 16 16" id="globe-central-south-asia"><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M4.882 1.731a.48.48 0 0 0 .14.291.487.487 0 0 1-.126.78l-.291.146a.7.7 0 0 0-.188.135l-.48.48a1 1 0 0 1-1.023.242l-.02-.007a1 1 0 0 0-.462-.04 7 7 0 0 1 2.45-2.027m-3 9.674.86-.216a1 1 0 0 0 .758-.97v-.184a1 1 0 0 1 .445-.832l.04-.026a1 1 0 0 0 .152-1.54L3.121 6.621a.414.414 0 0 1 .542-.624l1.09.818a.5.5 0 0 0 .523.047.5.5 0 0 1 .724.447v.455a.8.8 0 0 0 .131.433l.795 1.192a1 1 0 0 1 .116.238l.73 2.19a1 1 0 0 0 .949.683h.058a1 1 0 0 0 .949-.684l.73-2.189a1 1 0 0 1 .116-.238l.791-1.187A.45.45 0 0 1 11.743 8c.16 0 .306.084.392.218.557.875 1.63 2.282 2.365 2.282l.04-.001a7.003 7.003 0 0 1-12.658.905Z"/></symbol><symbol class="bi bi-globe-europe-africa" viewBox="0 0 16 16" id="globe-europe-africa"><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M3.668 2.501l-.288.646a.847.847 0 0 0 1.479.815l.245-.368a.81.81 0 0 1 1.034-.275.81.81 0 0 0 .724 0l.261-.13a1 1 0 0 1 .775-.05l.984.34q.118.04.243.054c.784.093.855.377.694.801-.155.41-.616.617-1.035.487l-.01-.003C8.274 4.663 7.748 4.5 6 4.5 4.8 4.5 3.5 5.62 3.5 7c0 1.96.826 2.166 1.696 2.382.46.115.935.233 1.304.618.449.467.393 1.181.339 1.877C6.755 12.96 6.674 14 8.5 14c1.75 0 3-3.5 3-4.5 0-.262.208-.468.444-.7.396-.392.87-.86.556-1.8-.097-.291-.396-.568-.641-.756-.174-.133-.207-.396-.052-.551a.33.33 0 0 1 .42-.042l1.085.724c.11.072.255.058.348-.035.15-.15.415-.083.489.117.16.43.445 1.05.849 1.357L15 8A7 7 0 1 1 3.668 2.501"/></symbol><symbol class="bi bi-globe2" viewBox="0 0 16 16" id="globe2"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m7.5-6.923c-.67.204-1.335.82-1.887 1.855q-.215.403-.395.872c.705.157 1.472.257 2.282.287zM4.249 3.539q.214-.577.481-1.078a7 7 0 0 1 .597-.933A7 7 0 0 0 3.051 3.05q.544.277 1.198.49zM3.509 7.5c.036-1.07.188-2.087.436-3.008a9 9 0 0 1-1.565-.667A6.96 6.96 0 0 0 1.018 7.5zm1.4-2.741a12.3 12.3 0 0 0-.4 2.741H7.5V5.091c-.91-.03-1.783-.145-2.591-.332M8.5 5.09V7.5h2.99a12.3 12.3 0 0 0-.399-2.741c-.808.187-1.681.301-2.591.332zM4.51 8.5c.035.987.176 1.914.399 2.741A13.6 13.6 0 0 1 7.5 10.91V8.5zm3.99 0v2.409c.91.03 1.783.145 2.591.332.223-.827.364-1.754.4-2.741zm-3.282 3.696q.18.469.395.872c.552 1.035 1.218 1.65 1.887 1.855V11.91c-.81.03-1.577.13-2.282.287zm.11 2.276a7 7 0 0 1-.598-.933 9 9 0 0 1-.481-1.079 8.4 8.4 0 0 0-1.198.49 7 7 0 0 0 2.276 1.522zm-1.383-2.964A13.4 13.4 0 0 1 3.508 8.5h-2.49a6.96 6.96 0 0 0 1.362 3.675c.47-.258.995-.482 1.565-.667m6.728 2.964a7 7 0 0 0 2.275-1.521 8.4 8.4 0 0 0-1.197-.49 9 9 0 0 1-.481 1.078 7 7 0 0 1-.597.933M8.5 11.909v3.014c.67-.204 1.335-.82 1.887-1.855q.216-.403.395-.872A12.6 12.6 0 0 0 8.5 11.91zm3.555-.401c.57.185 1.095.409 1.565.667A6.96 6.96 0 0 0 14.982 8.5h-2.49a13.4 13.4 0 0 1-.437 3.008M14.982 7.5a6.96 6.96 0 0 0-1.362-3.675c-.47.258-.995.482-1.565.667.248.92.4 1.938.437 3.008zM11.27 2.461q.266.502.482 1.078a8.4 8.4 0 0 0 1.196-.49 7 7 0 0 0-2.275-1.52c.218.283.418.597.597.932m-.488 1.343a8 8 0 0 0-.395-.872C9.835 1.897 9.17 1.282 8.5 1.077V4.09c.81-.03 1.577-.13 2.282-.287z"/></symbol><symbol class="bi bi-google" viewBox="0 0 16 16" id="google"><path d="M15.545 6.558a9.4 9.4 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.7 7.7 0 0 1 5.352 2.082l-2.284 2.284A4.35 4.35 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.8 4.8 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.7 3.7 0 0 0 1.599-2.431H8v-3.08z"/></symbol><symbol class="bi bi-google-play" viewBox="0 0 16 16" id="google-play"><path d="M14.222 9.374c1.037-.61 1.037-2.137 0-2.748L11.528 5.04 8.32 8l3.207 2.96zm-3.595 2.116L7.583 8.68 1.03 14.73c.201 1.029 1.36 1.61 2.303 1.055zM1 13.396V2.603L6.846 8zM1.03 1.27l6.553 6.05 3.044-2.81L3.333.215C2.39-.341 1.231.24 1.03 1.27"/></symbol><symbol class="bi bi-gpu-card" viewBox="0 0 16 16" id="gpu-card"><path d="M4 8a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0m7.5-1.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3"/><path d="M0 1.5A.5.5 0 0 1 .5 1h1a.5.5 0 0 1 .5.5V4h13.5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5H2v2.5a.5.5 0 0 1-1 0V2H.5a.5.5 0 0 1-.5-.5m5.5 4a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M9 8a2.5 2.5 0 1 0 5 0 2.5 2.5 0 0 0-5 0"/><path d="M3 12.5h3.5v1a.5.5 0 0 1-.5.5H3.5a.5.5 0 0 1-.5-.5zm4 1v-1h4v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-graph-down" viewBox="0 0 16 16" id="graph-down"><path fill-rule="evenodd" d="M0 0h1v15h15v1H0zm14.817 11.887a.5.5 0 0 0 .07-.704l-4.5-5.5a.5.5 0 0 0-.74-.037L7.06 8.233 3.404 3.206a.5.5 0 0 0-.808.588l4 5.5a.5.5 0 0 0 .758.06l2.609-2.61 4.15 5.073a.5.5 0 0 0 .704.07"/></symbol><symbol class="bi bi-graph-down-arrow" viewBox="0 0 16 16" id="graph-down-arrow"><path fill-rule="evenodd" d="M0 0h1v15h15v1H0zm10 11.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 0-1 0v2.6l-3.613-4.417a.5.5 0 0 0-.74-.037L7.06 8.233 3.404 3.206a.5.5 0 0 0-.808.588l4 5.5a.5.5 0 0 0 .758.06l2.609-2.61L13.445 11H10.5a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-graph-up" viewBox="0 0 16 16" id="graph-up"><path fill-rule="evenodd" d="M0 0h1v15h15v1H0zm14.817 3.113a.5.5 0 0 1 .07.704l-4.5 5.5a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61 4.15-5.073a.5.5 0 0 1 .704-.07"/></symbol><symbol class="bi bi-graph-up-arrow" viewBox="0 0 16 16" id="graph-up-arrow"><path fill-rule="evenodd" d="M0 0h1v15h15v1H0zm10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4.9l-3.613 4.417a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61L13.445 4H10.5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-grid" viewBox="0 0 16 16" id="grid"><path d="M1 2.5A1.5 1.5 0 0 1 2.5 1h3A1.5 1.5 0 0 1 7 2.5v3A1.5 1.5 0 0 1 5.5 7h-3A1.5 1.5 0 0 1 1 5.5zM2.5 2a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5zm6.5.5A1.5 1.5 0 0 1 10.5 1h3A1.5 1.5 0 0 1 15 2.5v3A1.5 1.5 0 0 1 13.5 7h-3A1.5 1.5 0 0 1 9 5.5zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5zM1 10.5A1.5 1.5 0 0 1 2.5 9h3A1.5 1.5 0 0 1 7 10.5v3A1.5 1.5 0 0 1 5.5 15h-3A1.5 1.5 0 0 1 1 13.5zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5zm6.5.5A1.5 1.5 0 0 1 10.5 9h3a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 13.5zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-grid-1x2" viewBox="0 0 16 16" id="grid-1x2"><path d="M6 1H1v14h5zm9 0h-5v5h5zm0 9v5h-5v-5zM0 1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm9 0a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1zm1 8a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-grid-1x2-fill" viewBox="0 0 16 16" id="grid-1x2-fill"><path d="M0 1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm9 0a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1zm0 9a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-grid-3x2" viewBox="0 0 16 16" id="grid-3x2"><path d="M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v8a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5zM1.5 3a.5.5 0 0 0-.5.5V7h4V3zM5 8H1v3.5a.5.5 0 0 0 .5.5H5zm1 0v4h4V8zm4-1V3H6v4zm1 1v4h3.5a.5.5 0 0 0 .5-.5V8zm0-1h4V3.5a.5.5 0 0 0-.5-.5H11z"/></symbol><symbol class="bi bi-grid-3x2-gap" viewBox="0 0 16 16" id="grid-3x2-gap"><path d="M4 4v2H2V4zm1 7V9a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m5 5V9a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V4a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1M9 4v2H7V4zm5 0h-2v2h2zM4 9v2H2V9zm5 0v2H7V9zm5 0v2h-2V9zm-3-5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zm1 4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-grid-3x2-gap-fill" viewBox="0 0 16 16" id="grid-3x2-gap-fill"><path d="M1 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zM1 9a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-grid-3x3" viewBox="0 0 16 16" id="grid-3x3"><path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5zM1.5 1a.5.5 0 0 0-.5.5V5h4V1zM5 6H1v4h4zm1 4h4V6H6zm-1 1H1v3.5a.5.5 0 0 0 .5.5H5zm1 0v4h4v-4zm5 0v4h3.5a.5.5 0 0 0 .5-.5V11zm0-1h4V6h-4zm0-5h4V1.5a.5.5 0 0 0-.5-.5H11zm-1 0V1H6v4z"/></symbol><symbol class="bi bi-grid-3x3-gap" viewBox="0 0 16 16" id="grid-3x3-gap"><path d="M4 2v2H2V2zm1 12v-2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V7a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m5 10v-2a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V7a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V2a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1M9 2v2H7V2zm5 0v2h-2V2zM4 7v2H2V7zm5 0v2H7V7zm5 0h-2v2h2zM4 12v2H2v-2zm5 0v2H7v-2zm5 0v2h-2v-2zM12 1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zm1 4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-grid-3x3-gap-fill" viewBox="0 0 16 16" id="grid-3x3-gap-fill"><path d="M1 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zM1 7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zM1 12a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-grid-fill" viewBox="0 0 16 16" id="grid-fill"><path d="M1 2.5A1.5 1.5 0 0 1 2.5 1h3A1.5 1.5 0 0 1 7 2.5v3A1.5 1.5 0 0 1 5.5 7h-3A1.5 1.5 0 0 1 1 5.5zm8 0A1.5 1.5 0 0 1 10.5 1h3A1.5 1.5 0 0 1 15 2.5v3A1.5 1.5 0 0 1 13.5 7h-3A1.5 1.5 0 0 1 9 5.5zm-8 8A1.5 1.5 0 0 1 2.5 9h3A1.5 1.5 0 0 1 7 10.5v3A1.5 1.5 0 0 1 5.5 15h-3A1.5 1.5 0 0 1 1 13.5zm8 0A1.5 1.5 0 0 1 10.5 9h3a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 13.5z"/></symbol><symbol class="bi bi-grip-horizontal" viewBox="0 0 16 16" id="grip-horizontal"><path d="M2 8a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></symbol><symbol class="bi bi-grip-vertical" viewBox="0 0 16 16" id="grip-vertical"><path d="M7 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-3 3a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-3 3a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-h-circle" viewBox="0 0 16 16" id="h-circle"><path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5-3.998V12H9.67V8.455H6.33V12H5V4.002h1.33v3.322h3.34V4.002z"/></symbol><symbol class="bi bi-h-circle-fill" viewBox="0 0 16 16" id="h-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5-3.998H9.67v3.322H6.33V4.002H5V12h1.33V8.455h3.34V12H11z"/></symbol><symbol class="bi bi-h-square" viewBox="0 0 16 16" id="h-square"><path d="M11 4.002V12H9.67V8.455H6.33V12H5V4.002h1.33v3.322h3.34V4.002z"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-h-square-fill" viewBox="0 0 16 16" id="h-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm9 4.002V12H9.67V8.455H6.33V12H5V4.002h1.33v3.322h3.34V4.002z"/></symbol><symbol class="bi bi-hammer" viewBox="0 0 16 16" id="hammer"><path d="M9.972 2.508a.5.5 0 0 0-.16-.556l-.178-.129a5 5 0 0 0-2.076-.783C6.215.862 4.504 1.229 2.84 3.133H1.786a.5.5 0 0 0-.354.147L.146 4.567a.5.5 0 0 0 0 .706l2.571 2.579a.5.5 0 0 0 .708 0l1.286-1.29a.5.5 0 0 0 .146-.353V5.57l8.387 8.873A.5.5 0 0 0 14 14.5l1.5-1.5a.5.5 0 0 0 .017-.689l-9.129-8.63c.747-.456 1.772-.839 3.112-.839a.5.5 0 0 0 .472-.334"/></symbol><symbol class="bi bi-hand-index" viewBox="0 0 16 16" id="hand-index"><path d="M6.75 1a.75.75 0 0 1 .75.75V8a.5.5 0 0 0 1 0V5.467l.086-.004c.317-.012.637-.008.816.027.134.027.294.096.448.182.077.042.15.147.15.314V8a.5.5 0 1 0 1 0V6.435l.106-.01c.316-.024.584-.01.708.04.118.046.3.207.486.43.081.096.15.19.2.259V8.5a.5.5 0 0 0 1 0v-1h.342a1 1 0 0 1 .995 1.1l-.271 2.715a2.5 2.5 0 0 1-.317.991l-1.395 2.442a.5.5 0 0 1-.434.252H6.035a.5.5 0 0 1-.416-.223l-1.433-2.15a1.5 1.5 0 0 1-.243-.666l-.345-3.105a.5.5 0 0 1 .399-.546L5 8.11V9a.5.5 0 0 0 1 0V1.75A.75.75 0 0 1 6.75 1M8.5 4.466V1.75a1.75 1.75 0 1 0-3.5 0v5.34l-1.2.24a1.5 1.5 0 0 0-1.196 1.636l.345 3.106a2.5 2.5 0 0 0 .405 1.11l1.433 2.15A1.5 1.5 0 0 0 6.035 16h6.385a1.5 1.5 0 0 0 1.302-.756l1.395-2.441a3.5 3.5 0 0 0 .444-1.389l.271-2.715a2 2 0 0 0-1.99-2.199h-.581a5 5 0 0 0-.195-.248c-.191-.229-.51-.568-.88-.716-.364-.146-.846-.132-1.158-.108l-.132.012a1.26 1.26 0 0 0-.56-.642 2.6 2.6 0 0 0-.738-.288c-.31-.062-.739-.058-1.05-.046zm2.094 2.025"/></symbol><symbol class="bi bi-hand-index-fill" viewBox="0 0 16 16" id="hand-index-fill"><path d="M8.5 4.466V1.75a1.75 1.75 0 1 0-3.5 0v5.34l-1.2.24a1.5 1.5 0 0 0-1.196 1.636l.345 3.106a2.5 2.5 0 0 0 .405 1.11l1.433 2.15A1.5 1.5 0 0 0 6.035 16h6.385a1.5 1.5 0 0 0 1.302-.756l1.395-2.441a3.5 3.5 0 0 0 .444-1.389l.271-2.715a2 2 0 0 0-1.99-2.199h-.581a5 5 0 0 0-.195-.248c-.191-.229-.51-.568-.88-.716-.364-.146-.846-.132-1.158-.108l-.132.012a1.26 1.26 0 0 0-.56-.642 2.6 2.6 0 0 0-.738-.288c-.31-.062-.739-.058-1.05-.046z"/></symbol><symbol class="bi bi-hand-index-thumb" viewBox="0 0 16 16" id="hand-index-thumb"><path d="M6.75 1a.75.75 0 0 1 .75.75V8a.5.5 0 0 0 1 0V5.467l.086-.004c.317-.012.637-.008.816.027.134.027.294.096.448.182.077.042.15.147.15.314V8a.5.5 0 0 0 1 0V6.435l.106-.01c.316-.024.584-.01.708.04.118.046.3.207.486.43.081.096.15.19.2.259V8.5a.5.5 0 1 0 1 0v-1h.342a1 1 0 0 1 .995 1.1l-.271 2.715a2.5 2.5 0 0 1-.317.991l-1.395 2.442a.5.5 0 0 1-.434.252H6.118a.5.5 0 0 1-.447-.276l-1.232-2.465-2.512-4.185a.517.517 0 0 1 .809-.631l2.41 2.41A.5.5 0 0 0 6 9.5V1.75A.75.75 0 0 1 6.75 1M8.5 4.466V1.75a1.75 1.75 0 1 0-3.5 0v6.543L3.443 6.736A1.517 1.517 0 0 0 1.07 8.588l2.491 4.153 1.215 2.43A1.5 1.5 0 0 0 6.118 16h6.302a1.5 1.5 0 0 0 1.302-.756l1.395-2.441a3.5 3.5 0 0 0 .444-1.389l.271-2.715a2 2 0 0 0-1.99-2.199h-.581a5 5 0 0 0-.195-.248c-.191-.229-.51-.568-.88-.716-.364-.146-.846-.132-1.158-.108l-.132.012a1.26 1.26 0 0 0-.56-.642 2.6 2.6 0 0 0-.738-.288c-.31-.062-.739-.058-1.05-.046zm2.094 2.025"/></symbol><symbol class="bi bi-hand-index-thumb-fill" viewBox="0 0 16 16" id="hand-index-thumb-fill"><path d="M8.5 1.75v2.716l.047-.002c.312-.012.742-.016 1.051.046.28.056.543.18.738.288.273.152.456.385.56.642l.132-.012c.312-.024.794-.038 1.158.108.37.148.689.487.88.716q.113.137.195.248h.582a2 2 0 0 1 1.99 2.199l-.272 2.715a3.5 3.5 0 0 1-.444 1.389l-1.395 2.441A1.5 1.5 0 0 1 12.42 16H6.118a1.5 1.5 0 0 1-1.342-.83l-1.215-2.43L1.07 8.589a1.517 1.517 0 0 1 2.373-1.852L5 8.293V1.75a1.75 1.75 0 0 1 3.5 0"/></symbol><symbol class="bi bi-hand-thumbs-down" viewBox="0 0 16 16" id="hand-thumbs-down"><path d="M8.864 15.674c-.956.24-1.843-.484-1.908-1.42-.072-1.05-.23-2.015-.428-2.59-.125-.36-.479-1.012-1.04-1.638-.557-.624-1.282-1.179-2.131-1.41C2.685 8.432 2 7.85 2 7V3c0-.845.682-1.464 1.448-1.546 1.07-.113 1.564-.415 2.068-.723l.048-.029c.272-.166.578-.349.97-.484C6.931.08 7.395 0 8 0h3.5c.937 0 1.599.478 1.934 1.064.164.287.254.607.254.913 0 .152-.023.312-.077.464.201.262.38.577.488.9.11.33.172.762.004 1.15.069.13.12.268.159.403.077.27.113.567.113.856s-.036.586-.113.856c-.035.12-.08.244-.138.363.394.571.418 1.2.234 1.733-.206.592-.682 1.1-1.2 1.272-.847.283-1.803.276-2.516.211a10 10 0 0 1-.443-.05 9.36 9.36 0 0 1-.062 4.51c-.138.508-.55.848-1.012.964zM11.5 1H8c-.51 0-.863.068-1.14.163-.281.097-.506.229-.776.393l-.04.025c-.555.338-1.198.73-2.49.868-.333.035-.554.29-.554.55V7c0 .255.226.543.62.65 1.095.3 1.977.997 2.614 1.709.635.71 1.064 1.475 1.238 1.977.243.7.407 1.768.482 2.85.025.362.36.595.667.518l.262-.065c.16-.04.258-.144.288-.255a8.34 8.34 0 0 0-.145-4.726.5.5 0 0 1 .595-.643h.003l.014.004.058.013a9 9 0 0 0 1.036.157c.663.06 1.457.054 2.11-.163.175-.059.45-.301.57-.651.107-.308.087-.67-.266-1.021L12.793 7l.353-.354c.043-.042.105-.14.154-.315.048-.167.075-.37.075-.581s-.027-.414-.075-.581c-.05-.174-.111-.273-.154-.315l-.353-.354.353-.354c.047-.047.109-.176.005-.488a2.2 2.2 0 0 0-.505-.804l-.353-.354.353-.354c.006-.005.041-.05.041-.17a.9.9 0 0 0-.121-.415C12.4 1.272 12.063 1 11.5 1"/></symbol><symbol class="bi bi-hand-thumbs-down-fill" viewBox="0 0 16 16" id="hand-thumbs-down-fill"><path d="M6.956 14.534c.065.936.952 1.659 1.908 1.42l.261-.065a1.38 1.38 0 0 0 1.012-.965c.22-.816.533-2.512.062-4.51q.205.03.443.051c.713.065 1.669.071 2.516-.211.518-.173.994-.68 1.2-1.272a1.9 1.9 0 0 0-.234-1.734c.058-.118.103-.242.138-.362.077-.27.113-.568.113-.856 0-.29-.036-.586-.113-.857a2 2 0 0 0-.16-.403c.169-.387.107-.82-.003-1.149a3.2 3.2 0 0 0-.488-.9c.054-.153.076-.313.076-.465a1.86 1.86 0 0 0-.253-.912C13.1.757 12.437.28 11.5.28H8c-.605 0-1.07.08-1.466.217a4.8 4.8 0 0 0-.97.485l-.048.029c-.504.308-.999.61-2.068.723C2.682 1.815 2 2.434 2 3.279v4c0 .851.685 1.433 1.357 1.616.849.232 1.574.787 2.132 1.41.56.626.914 1.28 1.039 1.638.199.575.356 1.54.428 2.591"/></symbol><symbol class="bi bi-hand-thumbs-up" viewBox="0 0 16 16" id="hand-thumbs-up"><path d="M8.864.046C7.908-.193 7.02.53 6.956 1.466c-.072 1.051-.23 2.016-.428 2.59-.125.36-.479 1.013-1.04 1.639-.557.623-1.282 1.178-2.131 1.41C2.685 7.288 2 7.87 2 8.72v4.001c0 .845.682 1.464 1.448 1.545 1.07.114 1.564.415 2.068.723l.048.03c.272.165.578.348.97.484.397.136.861.217 1.466.217h3.5c.937 0 1.599-.477 1.934-1.064a1.86 1.86 0 0 0 .254-.912c0-.152-.023-.312-.077-.464.201-.263.38-.578.488-.901.11-.33.172-.762.004-1.149.069-.13.12-.269.159-.403.077-.27.113-.568.113-.857 0-.288-.036-.585-.113-.856a2 2 0 0 0-.138-.362 1.9 1.9 0 0 0 .234-1.734c-.206-.592-.682-1.1-1.2-1.272-.847-.282-1.803-.276-2.516-.211a10 10 0 0 0-.443.05 9.4 9.4 0 0 0-.062-4.509A1.38 1.38 0 0 0 9.125.111zM11.5 14.721H8c-.51 0-.863-.069-1.14-.164-.281-.097-.506-.228-.776-.393l-.04-.024c-.555-.339-1.198-.731-2.49-.868-.333-.036-.554-.29-.554-.55V8.72c0-.254.226-.543.62-.65 1.095-.3 1.977-.996 2.614-1.708.635-.71 1.064-1.475 1.238-1.978.243-.7.407-1.768.482-2.85.025-.362.36-.594.667-.518l.262.066c.16.04.258.143.288.255a8.34 8.34 0 0 1-.145 4.725.5.5 0 0 0 .595.644l.003-.001.014-.003.058-.014a9 9 0 0 1 1.036-.157c.663-.06 1.457-.054 2.11.164.175.058.45.3.57.65.107.308.087.67-.266 1.022l-.353.353.353.354c.043.043.105.141.154.315.048.167.075.37.075.581 0 .212-.027.414-.075.582-.05.174-.111.272-.154.315l-.353.353.353.354c.047.047.109.177.005.488a2.2 2.2 0 0 1-.505.805l-.353.353.353.354c.006.005.041.05.041.17a.9.9 0 0 1-.121.416c-.165.288-.503.56-1.066.56z"/></symbol><symbol class="bi bi-hand-thumbs-up-fill" viewBox="0 0 16 16" id="hand-thumbs-up-fill"><path d="M6.956 1.745C7.021.81 7.908.087 8.864.325l.261.066c.463.116.874.456 1.012.965.22.816.533 2.511.062 4.51a10 10 0 0 1 .443-.051c.713-.065 1.669-.072 2.516.21.518.173.994.681 1.2 1.273.184.532.16 1.162-.234 1.733q.086.18.138.363c.077.27.113.567.113.856s-.036.586-.113.856c-.039.135-.09.273-.16.404.169.387.107.819-.003 1.148a3.2 3.2 0 0 1-.488.901c.054.152.076.312.076.465 0 .305-.089.625-.253.912C13.1 15.522 12.437 16 11.5 16H8c-.605 0-1.07-.081-1.466-.218a4.8 4.8 0 0 1-.97-.484l-.048-.03c-.504-.307-.999-.609-2.068-.722C2.682 14.464 2 13.846 2 13V9c0-.85.685-1.432 1.357-1.615.849-.232 1.574-.787 2.132-1.41.56-.627.914-1.28 1.039-1.639.199-.575.356-1.539.428-2.59z"/></symbol><symbol class="bi bi-handbag" viewBox="0 0 16 16" id="handbag"><path d="M8 1a2 2 0 0 1 2 2v2H6V3a2 2 0 0 1 2-2m3 4V3a3 3 0 1 0-6 0v2H3.36a1.5 1.5 0 0 0-1.483 1.277L.85 13.13A2.5 2.5 0 0 0 3.322 16h9.355a2.5 2.5 0 0 0 2.473-2.87l-1.028-6.853A1.5 1.5 0 0 0 12.64 5zm-1 1v1.5a.5.5 0 0 0 1 0V6h1.639a.5.5 0 0 1 .494.426l1.028 6.851A1.5 1.5 0 0 1 12.678 15H3.322a1.5 1.5 0 0 1-1.483-1.723l1.028-6.851A.5.5 0 0 1 3.36 6H5v1.5a.5.5 0 1 0 1 0V6z"/></symbol><symbol class="bi bi-handbag-fill" viewBox="0 0 16 16" id="handbag-fill"><path d="M8 1a2 2 0 0 0-2 2v2H5V3a3 3 0 1 1 6 0v2h-1V3a2 2 0 0 0-2-2M5 5H3.36a1.5 1.5 0 0 0-1.483 1.277L.85 13.13A2.5 2.5 0 0 0 3.322 16h9.355a2.5 2.5 0 0 0 2.473-2.87l-1.028-6.853A1.5 1.5 0 0 0 12.64 5H11v1.5a.5.5 0 0 1-1 0V5H6v1.5a.5.5 0 0 1-1 0z"/></symbol><symbol class="bi bi-hash" viewBox="0 0 16 16" id="hash"><path d="M8.39 12.648a1 1 0 0 0-.015.18c0 .305.21.508.5.508.266 0 .492-.172.555-.477l.554-2.703h1.204c.421 0 .617-.234.617-.547 0-.312-.188-.53-.617-.53h-.985l.516-2.524h1.265c.43 0 .618-.227.618-.547 0-.313-.188-.524-.618-.524h-1.046l.476-2.304a1 1 0 0 0 .016-.164.51.51 0 0 0-.516-.516.54.54 0 0 0-.539.43l-.523 2.554H7.617l.477-2.304c.008-.04.015-.118.015-.164a.51.51 0 0 0-.523-.516.54.54 0 0 0-.531.43L6.53 5.484H5.414c-.43 0-.617.22-.617.532s.187.539.617.539h.906l-.515 2.523H4.609c-.421 0-.609.219-.609.531s.188.547.61.547h.976l-.516 2.492c-.008.04-.015.125-.015.18 0 .305.21.508.5.508.265 0 .492-.172.554-.477l.555-2.703h2.242zm-1-6.109h2.266l-.515 2.563H6.859l.532-2.563z"/></symbol><symbol class="bi bi-hdd" viewBox="0 0 16 16" id="hdd"><path d="M4.5 11a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M3 10.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/><path d="M16 11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V9.51c0-.418.105-.83.305-1.197l2.472-4.531A1.5 1.5 0 0 1 4.094 3h7.812a1.5 1.5 0 0 1 1.317.782l2.472 4.53c.2.368.305.78.305 1.198zM3.655 4.26 1.592 8.043Q1.79 8 2 8h12q.21 0 .408.042L12.345 4.26a.5.5 0 0 0-.439-.26H4.094a.5.5 0 0 0-.44.26zM1 10v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1"/></symbol><symbol class="bi bi-hdd-fill" viewBox="0 0 16 16" id="hdd-fill"><path d="M0 10a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2.5 1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M.91 7.204A3 3 0 0 1 2 7h12c.384 0 .752.072 1.09.204l-1.867-3.422A1.5 1.5 0 0 0 11.906 3H4.094a1.5 1.5 0 0 0-1.317.782z"/></symbol><symbol class="bi bi-hdd-network" viewBox="0 0 16 16" id="hdd-network"><path d="M4.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M3 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1a2 2 0 0 1-2 2H8.5v3a1.5 1.5 0 0 1 1.5 1.5h5.5a.5.5 0 0 1 0 1H10A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5H.5a.5.5 0 0 1 0-1H6A1.5 1.5 0 0 1 7.5 10V7H2a2 2 0 0 1-2-2zm1 0v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1m6 7.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-hdd-network-fill" viewBox="0 0 16 16" id="hdd-network-fill"><path d="M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h5.5v3A1.5 1.5 0 0 0 6 11.5H.5a.5.5 0 0 0 0 1H6A1.5 1.5 0 0 0 7.5 14h1a1.5 1.5 0 0 0 1.5-1.5h5.5a.5.5 0 0 0 0-1H10A1.5 1.5 0 0 0 8.5 10V7H14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1"/></symbol><symbol class="bi bi-hdd-rack" viewBox="0 0 16 16" id="hdd-rack"><path d="M4.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M3 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m2 7a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-2.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/><path d="M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h1v2H2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2h-1V7h1a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm13 2v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1m0 7v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1m-3-4v2H4V7z"/></symbol><symbol class="bi bi-hdd-rack-fill" viewBox="0 0 16 16" id="hdd-rack-fill"><path d="M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h1v2H2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2h-1V7h1a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m-2 7a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1M12 7v2H4V7z"/></symbol><symbol class="bi bi-hdd-stack" viewBox="0 0 16 16" id="hdd-stack"><path d="M14 10a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zM2 9a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2z"/><path d="M5 11.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-2 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M14 3a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/><path d="M5 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-2 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-hdd-stack-fill" viewBox="0 0 16 16" id="hdd-stack-fill"><path d="M2 9a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1"/></symbol><symbol class="bi bi-hdmi" viewBox="0 0 16 16" id="hdmi"><path d="M2.5 7a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1z"/><path d="M1 5a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h.293l.707.707a1 1 0 0 0 .707.293h10.586a1 1 0 0 0 .707-.293l.707-.707H15a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm0 1h14v3h-.293a1 1 0 0 0-.707.293l-.707.707H2.707L2 9.293A1 1 0 0 0 1.293 9H1z"/></symbol><symbol class="bi bi-hdmi-fill" viewBox="0 0 16 16" id="hdmi-fill"><path d="M1 5a1 1 0 0 0-1 1v3.293c0 .39.317.707.707.707.188 0 .368.075.5.207l.5.5a1 1 0 0 0 .707.293h11.172a1 1 0 0 0 .707-.293l.5-.5a.7.7 0 0 1 .5-.207c.39 0 .707-.317.707-.707V6a1 1 0 0 0-1-1zm1.5 2h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-headphones" viewBox="0 0 16 16" id="headphones"><path d="M8 3a5 5 0 0 0-5 5v1h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V8a6 6 0 1 1 12 0v5a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h1V8a5 5 0 0 0-5-5"/></symbol><symbol class="bi bi-headset" viewBox="0 0 16 16" id="headset"><path d="M8 1a5 5 0 0 0-5 5v1h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a6 6 0 1 1 12 0v6a2.5 2.5 0 0 1-2.5 2.5H9.366a1 1 0 0 1-.866.5h-1a1 1 0 1 1 0-2h1a1 1 0 0 1 .866.5H11.5A1.5 1.5 0 0 0 13 12h-1a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h1V6a5 5 0 0 0-5-5"/></symbol><symbol class="bi bi-headset-vr" viewBox="0 0 16 16" id="headset-vr"><path d="M8 1.248c1.857 0 3.526.641 4.65 1.794a5 5 0 0 1 2.518 1.09C13.907 1.482 11.295 0 8 0 4.75 0 2.12 1.48.844 4.122a5 5 0 0 1 2.289-1.047C4.236 1.872 5.974 1.248 8 1.248"/><path d="M12 12a4 4 0 0 1-2.786-1.13l-.002-.002a1.6 1.6 0 0 0-.276-.167A2.2 2.2 0 0 0 8 10.5c-.414 0-.729.103-.935.201a1.6 1.6 0 0 0-.277.167l-.002.002A4 4 0 1 1 4 4h8a4 4 0 0 1 0 8"/></symbol><symbol class="bi bi-heart" viewBox="0 0 16 16" id="heart"><path d="m8 2.748-.717-.737C5.6.281 2.514.878 1.4 3.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143q.09.083.176.171a3 3 0 0 1 .176-.17C12.72-3.042 23.333 4.867 8 15"/></symbol><symbol class="bi bi-heart-arrow" viewBox="0 0 16 16" id="heart-arrow"><path d="M6.707 9h4.364c-.536 1.573 2.028 3.806 4.929-.5-2.9-4.306-5.465-2.073-4.929-.5H6.707L4.854 6.146a.5.5 0 1 0-.708.708L5.293 8h-.586L2.854 6.146a.5.5 0 1 0-.708.708L3.293 8h-.586L.854 6.146a.5.5 0 1 0-.708.708L1.793 8.5.146 10.146a.5.5 0 0 0 .708.708L2.707 9h.586l-1.147 1.146a.5.5 0 0 0 .708.708L4.707 9h.586l-1.147 1.146a.5.5 0 0 0 .708.708z"/></symbol><symbol class="bi bi-heart-fill" viewBox="0 0 16 16" id="heart-fill"><path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314"/></symbol><symbol class="bi bi-heart-half" viewBox="0 0 16 16" id="heart-half"><path d="M8 2.748v11.047c3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143q.09.083.176.171a3 3 0 0 1 .176-.17C12.72-3.042 23.333 4.867 8 15"/></symbol><symbol class="bi bi-heart-pulse" viewBox="0 0 16 16" id="heart-pulse"><path d="m8 2.748-.717-.737C5.6.281 2.514.878 1.4 3.053.918 3.995.78 5.323 1.508 7H.43c-2.128-5.697 4.165-8.83 7.394-5.857q.09.083.176.171a3 3 0 0 1 .176-.17c3.23-2.974 9.522.159 7.394 5.856h-1.078c.728-1.677.59-3.005.108-3.947C13.486.878 10.4.28 8.717 2.01zM2.212 10h1.315C4.593 11.183 6.05 12.458 8 13.795c1.949-1.337 3.407-2.612 4.473-3.795h1.315c-1.265 1.566-3.14 3.25-5.788 5-2.648-1.75-4.523-3.434-5.788-5"/><path d="M10.464 3.314a.5.5 0 0 0-.945.049L7.921 8.956 6.464 5.314a.5.5 0 0 0-.88-.091L3.732 8H.5a.5.5 0 0 0 0 1H4a.5.5 0 0 0 .416-.223l1.473-2.209 1.647 4.118a.5.5 0 0 0 .945-.049l1.598-5.593 1.457 3.642A.5.5 0 0 0 12 9h3.5a.5.5 0 0 0 0-1h-3.162z"/></symbol><symbol class="bi bi-heart-pulse-fill" viewBox="0 0 16 16" id="heart-pulse-fill"><path d="M1.475 9C2.702 10.84 4.779 12.871 8 15c3.221-2.129 5.298-4.16 6.525-6H12a.5.5 0 0 1-.464-.314l-1.457-3.642-1.598 5.593a.5.5 0 0 1-.945.049L5.889 6.568l-1.473 2.21A.5.5 0 0 1 4 9z"/><path d="M.88 8C-2.427 1.68 4.41-2 7.823 1.143q.09.083.176.171a3 3 0 0 1 .176-.17C11.59-2 18.426 1.68 15.12 8h-2.783l-1.874-4.686a.5.5 0 0 0-.945.049L7.921 8.956 6.464 5.314a.5.5 0 0 0-.88-.091L3.732 8z"/></symbol><symbol class="bi bi-heartbreak" viewBox="0 0 16 16" id="heartbreak"><path d="M8.867 14.41c13.308-9.322 4.79-16.563.064-13.824L7 3l1.5 4-2 3L8 15a38 38 0 0 0 .867-.59m-.303-1.01-.971-3.237 1.74-2.608a1 1 0 0 0 .103-.906l-1.3-3.468 1.45-1.813c1.861-.948 4.446.002 5.197 2.11.691 1.94-.055 5.521-6.219 9.922m-1.25 1.137a36 36 0 0 1-1.522-1.116C-5.077 4.97 1.842-1.472 6.454.293c.314.12.618.279.904.477L5.5 3 7 7l-1.5 3zm-2.3-3.06-.442-1.106a1 1 0 0 1 .034-.818l1.305-2.61L4.564 3.35a1 1 0 0 1 .168-.991l1.032-1.24c-1.688-.449-3.7.398-4.456 2.128-.711 1.627-.413 4.55 3.706 8.229Z"/></symbol><symbol class="bi bi-heartbreak-fill" viewBox="0 0 16 16" id="heartbreak-fill"><path d="M8.931.586 7 3l1.5 4-2 3L8 15C22.534 5.396 13.757-2.21 8.931.586M7.358.77 5.5 3 7 7l-1.5 3 1.815 4.537C-6.533 4.96 2.685-2.467 7.358.77"/></symbol><symbol class="bi bi-hearts" viewBox="0 0 16 16" id="hearts"><path fill-rule="evenodd" d="M4.931.481c1.627-1.671 5.692 1.254 0 5.015-5.692-3.76-1.626-6.686 0-5.015m6.84 1.794c1.084-1.114 3.795.836 0 3.343-3.795-2.507-1.084-4.457 0-3.343M7.84 7.642c2.71-2.786 9.486 2.09 0 8.358-9.487-6.268-2.71-11.144 0-8.358"/></symbol><symbol class="bi bi-heptagon" viewBox="0 0 16 16" id="heptagon"><path d="M7.779.052a.5.5 0 0 1 .442 0l6.015 2.97a.5.5 0 0 1 .267.34l1.485 6.676a.5.5 0 0 1-.093.415l-4.162 5.354a.5.5 0 0 1-.395.193H4.662a.5.5 0 0 1-.395-.193L.105 10.453a.5.5 0 0 1-.093-.415l1.485-6.676a.5.5 0 0 1 .267-.34zM2.422 3.813l-1.383 6.212L4.907 15h6.186l3.868-4.975-1.383-6.212L8 1.058z"/></symbol><symbol class="bi bi-heptagon-fill" viewBox="0 0 16 16" id="heptagon-fill"><path fill-rule="evenodd" d="M7.779.052a.5.5 0 0 1 .442 0l6.015 2.97a.5.5 0 0 1 .267.34l1.485 6.676a.5.5 0 0 1-.093.415l-4.162 5.354a.5.5 0 0 1-.395.193H4.662a.5.5 0 0 1-.395-.193L.105 10.453a.5.5 0 0 1-.093-.415l1.485-6.676a.5.5 0 0 1 .267-.34z"/></symbol><symbol class="bi bi-heptagon-half" viewBox="0 0 16 16" id="heptagon-half"><path d="M7.779.052a.5.5 0 0 1 .442 0l6.015 2.97a.5.5 0 0 1 .267.34l1.485 6.676a.5.5 0 0 1-.093.415l-4.162 5.354a.5.5 0 0 1-.395.193H4.662a.5.5 0 0 1-.395-.193L.105 10.453a.5.5 0 0 1-.093-.415l1.485-6.676a.5.5 0 0 1 .267-.34zM8 15h3.093l3.868-4.975-1.383-6.212L8 1.058z"/></symbol><symbol class="bi bi-hexagon" viewBox="0 0 16 16" id="hexagon"><path d="M14 4.577v6.846L8 15l-6-3.577V4.577L8 1zM8.5.134a1 1 0 0 0-1 0l-6 3.577a1 1 0 0 0-.5.866v6.846a1 1 0 0 0 .5.866l6 3.577a1 1 0 0 0 1 0l6-3.577a1 1 0 0 0 .5-.866V4.577a1 1 0 0 0-.5-.866z"/></symbol><symbol class="bi bi-hexagon-fill" viewBox="0 0 16 16" id="hexagon-fill"><path fill-rule="evenodd" d="M8.5.134a1 1 0 0 0-1 0l-6 3.577a1 1 0 0 0-.5.866v6.846a1 1 0 0 0 .5.866l6 3.577a1 1 0 0 0 1 0l6-3.577a1 1 0 0 0 .5-.866V4.577a1 1 0 0 0-.5-.866z"/></symbol><symbol class="bi bi-hexagon-half" viewBox="0 0 16 16" id="hexagon-half"><path d="M14 4.577v6.846L8 15V1zM8.5.134a1 1 0 0 0-1 0l-6 3.577a1 1 0 0 0-.5.866v6.846a1 1 0 0 0 .5.866l6 3.577a1 1 0 0 0 1 0l6-3.577a1 1 0 0 0 .5-.866V4.577a1 1 0 0 0-.5-.866z"/></symbol><symbol class="bi bi-highlighter" viewBox="0 0 16 16" id="highlighter"><path fill-rule="evenodd" d="M11.096.644a2 2 0 0 1 2.791.036l1.433 1.433a2 2 0 0 1 .035 2.791l-.413.435-8.07 8.995a.5.5 0 0 1-.372.166h-3a.5.5 0 0 1-.234-.058l-.412.412A.5.5 0 0 1 2.5 15h-2a.5.5 0 0 1-.354-.854l1.412-1.412A.5.5 0 0 1 1.5 12.5v-3a.5.5 0 0 1 .166-.372l8.995-8.07zm-.115 1.47L2.727 9.52l3.753 3.753 7.406-8.254zm3.585 2.17.064-.068a1 1 0 0 0-.017-1.396L13.18 1.387a1 1 0 0 0-1.396-.018l-.068.065zM5.293 13.5 2.5 10.707v1.586L3.707 13.5z"/></symbol><symbol class="bi bi-highlights" viewBox="0 0 16 16" id="highlights"><path d="M16 8A8 8 0 1 0 0 8a8 8 0 0 0 16 0m-8 5v1H4.5a.5.5 0 0 0-.093.009A7 7 0 0 1 3.1 13zm0-1H2.255a7 7 0 0 1-.581-1H8zm-6.71-2a7 7 0 0 1-.22-1H8v1zM1 8q0-.51.07-1H8v1zm.29-2q.155-.519.384-1H8v1zm.965-2q.377-.54.846-1H8v1zm2.137-2A6.97 6.97 0 0 1 8 1v1z"/></symbol><symbol class="bi bi-hospital" viewBox="0 0 16 16" id="hospital"><path d="M8.5 5.034v1.1l.953-.55.5.867L9 7l.953.55-.5.866-.953-.55v1.1h-1v-1.1l-.953.55-.5-.866L7 7l-.953-.55.5-.866.953.55v-1.1zM13.25 9a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zM13 11.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm.25 1.75a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zm-11-4a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 3 9.75v-.5A.25.25 0 0 0 2.75 9zm0 2a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zM2 13.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25z"/><path d="M5 1a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v1a1 1 0 0 1 1 1v4h3a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h3V3a1 1 0 0 1 1-1zm2 14h2v-3H7zm3 0h1V3H5v12h1v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1zm0-14H6v1h4zm2 7v7h3V8zm-8 7V8H1v7z"/></symbol><symbol class="bi bi-hospital-fill" viewBox="0 0 16 16" id="hospital-fill"><path d="M6 0a1 1 0 0 0-1 1v1a1 1 0 0 0-1 1v4H1a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h6v-2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5V16h6a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1h-3V3a1 1 0 0 0-1-1V1a1 1 0 0 0-1-1zm2.5 5.034v1.1l.953-.55.5.867L9 7l.953.55-.5.866-.953-.55v1.1h-1v-1.1l-.953.55-.5-.866L7 7l-.953-.55.5-.866.953.55v-1.1zM2.25 9h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 2 9.75v-.5A.25.25 0 0 1 2.25 9m0 2h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5a.25.25 0 0 1 .25-.25M2 13.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zM13.25 9h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5a.25.25 0 0 1 .25-.25M13 11.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm.25 1.75h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5a.25.25 0 0 1 .25-.25"/></symbol><symbol class="bi bi-hourglass" viewBox="0 0 16 16" id="hourglass"><path d="M2 1.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1-.5-.5m2.5.5v1a3.5 3.5 0 0 0 1.989 3.158c.533.256 1.011.791 1.011 1.491v.702c0 .7-.478 1.235-1.011 1.491A3.5 3.5 0 0 0 4.5 13v1h7v-1a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351v-.702c0-.7.478-1.235 1.011-1.491A3.5 3.5 0 0 0 11.5 3V2z"/></symbol><symbol class="bi bi-hourglass-bottom" viewBox="0 0 16 16" id="hourglass-bottom"><path d="M2 1.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1-.5-.5m2.5.5v1a3.5 3.5 0 0 0 1.989 3.158c.533.256 1.011.791 1.011 1.491v.702s.18.149.5.149.5-.15.5-.15v-.7c0-.701.478-1.236 1.011-1.492A3.5 3.5 0 0 0 11.5 3V2z"/></symbol><symbol class="bi bi-hourglass-split" viewBox="0 0 16 16" id="hourglass-split"><path d="M2.5 15a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1zm2-13v1c0 .537.12 1.045.337 1.5h6.326c.216-.455.337-.963.337-1.5V2zm3 6.35c0 .701-.478 1.236-1.011 1.492A3.5 3.5 0 0 0 4.5 13s.866-1.299 3-1.48zm1 0v3.17c2.134.181 3 1.48 3 1.48a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351z"/></symbol><symbol class="bi bi-hourglass-top" viewBox="0 0 16 16" id="hourglass-top"><path d="M2 14.5a.5.5 0 0 0 .5.5h11a.5.5 0 1 0 0-1h-1v-1a4.5 4.5 0 0 0-2.557-4.06c-.29-.139-.443-.377-.443-.59v-.7c0-.213.154-.451.443-.59A4.5 4.5 0 0 0 12.5 3V2h1a.5.5 0 0 0 0-1h-11a.5.5 0 0 0 0 1h1v1a4.5 4.5 0 0 0 2.557 4.06c.29.139.443.377.443.59v.7c0 .213-.154.451-.443.59A4.5 4.5 0 0 0 3.5 13v1h-1a.5.5 0 0 0-.5.5m2.5-.5v-1a3.5 3.5 0 0 1 1.989-3.158c.533-.256 1.011-.79 1.011-1.491v-.702s.18.101.5.101.5-.1.5-.1v.7c0 .701.478 1.236 1.011 1.492A3.5 3.5 0 0 1 11.5 13v1z"/></symbol><symbol class="bi bi-house" viewBox="0 0 16 16" id="house"><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V8.207l.646.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM13 7.207V13.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V7.207l5-5z"/></symbol><symbol class="bi bi-house-add" viewBox="0 0 16 16" id="house-add"><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h4a.5.5 0 1 0 0-1h-4a.5.5 0 0 1-.5-.5V7.207l5-5 6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 1 0 1 0v-1h1a.5.5 0 1 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-house-add-fill" viewBox="0 0 16 16" id="house-add-fill"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 1 1-1 0v-1h-1a.5.5 0 1 1 0-1h1v-1a.5.5 0 0 1 1 0"/><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/><path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/></symbol><symbol class="bi bi-house-check" viewBox="0 0 16 16" id="house-check"><path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.707l.547.547 1.17-1.951a.5.5 0 1 1 .858.514"/></symbol><symbol class="bi bi-house-check-fill" viewBox="0 0 16 16" id="house-check-fill"><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/><path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.707l.547.547 1.17-1.951a.5.5 0 1 1 .858.514"/></symbol><symbol class="bi bi-house-dash" viewBox="0 0 16 16" id="house-dash"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 1 1 0-1"/><path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/></symbol><symbol class="bi bi-house-dash-fill" viewBox="0 0 16 16" id="house-dash-fill"><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/><path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 1 1 0-1"/></symbol><symbol class="bi bi-house-door" viewBox="0 0 16 16" id="house-door"><path d="M8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4.5a.5.5 0 0 0 .5-.5v-4h2v4a.5.5 0 0 0 .5.5H14a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM2.5 14V7.707l5.5-5.5 5.5 5.5V14H10v-4a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v4z"/></symbol><symbol class="bi bi-house-door-fill" viewBox="0 0 16 16" id="house-door-fill"><path d="M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5"/></symbol><symbol class="bi bi-house-down" viewBox="0 0 16 16" id="house-down"><path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/><path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.707l-.646.646V10.5a.5.5 0 0 0-1 0v2.793l-.646-.646a.5.5 0 0 0-.708.707l1.5 1.5a.5.5 0 0 0 .708 0"/></symbol><symbol class="bi bi-house-down-fill" viewBox="0 0 16 16" id="house-down-fill"><path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.707l-.646.646V10.5a.5.5 0 0 0-1 0v2.793l-.646-.646a.5.5 0 0 0-.708.707l1.5 1.5a.5.5 0 0 0 .708 0"/><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/><path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/></symbol><symbol class="bi bi-house-exclamation" viewBox="0 0 16 16" id="house-exclamation"><path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 1 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/></symbol><symbol class="bi bi-house-exclamation-fill" viewBox="0 0 16 16" id="house-exclamation-fill"><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/><path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 1 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/></symbol><symbol class="bi bi-house-fill" viewBox="0 0 16 16" id="house-fill"><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/><path d="m8 3.293 6 6V13.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 13.5V9.293z"/></symbol><symbol class="bi bi-house-gear" viewBox="0 0 16 16" id="house-gear"><path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/><path d="M11.886 9.46c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.044c-.613-.181-.613-1.049 0-1.23l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/></symbol><symbol class="bi bi-house-gear-fill" viewBox="0 0 16 16" id="house-gear-fill"><path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207 1.354 8.854a.5.5 0 1 1-.708-.708z"/><path d="M11.07 9.047a1.5 1.5 0 0 0-1.742.26l-.02.021a1.5 1.5 0 0 0-.261 1.742 1.5 1.5 0 0 0 0 2.86 1.5 1.5 0 0 0-.12 1.07H3.5A1.5 1.5 0 0 1 2 13.5V9.293l6-6 4.724 4.724a1.5 1.5 0 0 0-1.654 1.03"/><path d="m13.158 9.608-.043-.148c-.181-.613-1.049-.613-1.23 0l-.043.148a.64.64 0 0 1-.921.382l-.136-.074c-.561-.306-1.175.308-.87.869l.075.136a.64.64 0 0 1-.382.92l-.148.045c-.613.18-.613 1.048 0 1.229l.148.043a.64.64 0 0 1 .382.921l-.074.136c-.306.561.308 1.175.869.87l.136-.075a.64.64 0 0 1 .92.382l.045.149c.18.612 1.048.612 1.229 0l.043-.15a.64.64 0 0 1 .921-.38l.136.074c.561.305 1.175-.309.87-.87l-.075-.136a.64.64 0 0 1 .382-.92l.149-.044c.612-.181.612-1.049 0-1.23l-.15-.043a.64.64 0 0 1-.38-.921l.074-.136c.305-.561-.309-1.175-.87-.87l-.136.075a.64.64 0 0 1-.92-.382ZM12.5 14a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></symbol><symbol class="bi bi-house-heart" viewBox="0 0 16 16" id="house-heart"><path d="M8 6.982C9.664 5.309 13.825 8.236 8 12 2.175 8.236 6.336 5.309 8 6.982"/><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.707L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V8.207l.646.646a.5.5 0 0 0 .708-.707L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM13 7.207V13.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V7.207l5-5z"/></symbol><symbol class="bi bi-house-heart-fill" viewBox="0 0 16 16" id="house-heart-fill"><path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.707L8 2.207 1.354 8.853a.5.5 0 1 1-.708-.707z"/><path d="m14 9.293-6-6-6 6V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5zm-6-.811c1.664-1.673 5.825 1.254 0 5.018-5.825-3.764-1.664-6.691 0-5.018"/></symbol><symbol class="bi bi-house-lock" viewBox="0 0 16 16" id="house-lock"><path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/><path d="M10 13a1 1 0 0 1 1-1v-1a2 2 0 0 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-house-lock-fill" viewBox="0 0 16 16" id="house-lock-fill"><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/><path d="m8 3.293 4.72 4.72a3 3 0 0 0-2.709 3.248A2 2 0 0 0 9 13v2H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/><path d="M13 9a2 2 0 0 0-2 2v1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1v-1a2 2 0 0 0-2-2m0 1a1 1 0 0 1 1 1v1h-2v-1a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-house-slash" viewBox="0 0 16 16" id="house-slash"><path d="M13.879 10.414a2.5 2.5 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95Z"/><path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/></symbol><symbol class="bi bi-house-slash-fill" viewBox="0 0 16 16" id="house-slash-fill"><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/><path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/><path d="M13.879 10.414a2.5 2.5 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95Z"/></symbol><symbol class="bi bi-house-up" viewBox="0 0 16 16" id="house-up"><path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 1 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.707l1.5-1.5a.5.5 0 0 1 .708 0Z"/></symbol><symbol class="bi bi-house-up-fill" viewBox="0 0 16 16" id="house-up-fill"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 1 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.707l1.5-1.5a.5.5 0 0 1 .708 0Z"/><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/><path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/></symbol><symbol class="bi bi-house-x" viewBox="0 0 16 16" id="house-x"><path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.646a.5.5 0 0 1 .708.707l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.707l.647-.647-.647-.646a.5.5 0 0 1 .708-.707Z"/></symbol><symbol class="bi bi-house-x-fill" viewBox="0 0 16 16" id="house-x-fill"><path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/><path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.646a.5.5 0 0 1 .708.707l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.707l.647-.647-.647-.646a.5.5 0 0 1 .708-.707Z"/></symbol><symbol class="bi bi-houses" viewBox="0 0 16 16" id="houses"><path d="M5.793 1a1 1 0 0 1 1.414 0l.647.646a.5.5 0 1 1-.708.708L6.5 1.707 2 6.207V12.5a.5.5 0 0 0 .5.5.5.5 0 0 1 0 1A1.5 1.5 0 0 1 1 12.5V7.207l-.146.147a.5.5 0 0 1-.708-.708zm3 1a1 1 0 0 1 1.414 0L12 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l1.854 1.853a.5.5 0 0 1-.708.708L15 8.207V13.5a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 4 13.5V8.207l-.146.147a.5.5 0 1 1-.708-.708zm.707.707L5 7.207V13.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5V7.207z"/></symbol><symbol class="bi bi-houses-fill" viewBox="0 0 16 16" id="houses-fill"><path d="M7.207 1a1 1 0 0 0-1.414 0L.146 6.646a.5.5 0 0 0 .708.708L1 7.207V12.5A1.5 1.5 0 0 0 2.5 14h.55a2.5 2.5 0 0 1-.05-.5V9.415a1.5 1.5 0 0 1-.56-2.475l5.353-5.354z"/><path d="M8.793 2a1 1 0 0 1 1.414 0L12 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l1.854 1.853a.5.5 0 0 1-.708.708L15 8.207V13.5a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 4 13.5V8.207l-.146.147a.5.5 0 1 1-.708-.708z"/></symbol><symbol class="bi bi-hr" viewBox="0 0 16 16" id="hr"><path d="M12 3H4a1 1 0 0 0-1 1v2.5H2V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2.5h-1V4a1 1 0 0 0-1-1M2 9.5h1V12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V9.5h1V12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm-1.5-2a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-hurricane" viewBox="0 0 16 16" id="hurricane"><path d="M6.999 2.6A5.5 5.5 0 0 1 15 7.5a.5.5 0 0 0 1 0 6.5 6.5 0 1 0-13 0 5 5 0 0 0 6.001 4.9A5.5 5.5 0 0 1 1 7.5a.5.5 0 0 0-1 0 6.5 6.5 0 1 0 13 0 5 5 0 0 0-6.001-4.9M10 7.5a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/></symbol><symbol class="bi bi-hypnotize" viewBox="0 0 16 16" id="hypnotize"><path d="m7.949 7.998.006-.003.003.009zm.025-.028v-.03l.018.01zm0 .015.04-.022.01.006v.04l-.029.016-.021-.012zm.049.057v-.014l-.008.01zm-.05-.008h.006l-.006.004z"/><path fill-rule="evenodd" d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M4.965 1.69a6.97 6.97 0 0 1 3.861-.642c.722.767 1.177 1.887 1.177 3.135 0 1.656-.802 3.088-1.965 3.766 1.263.24 2.655-.815 3.406-2.742.38-.975.537-2.023.492-2.996a7.03 7.03 0 0 1 2.488 3.003c-.303 1.01-1.046 1.966-2.128 2.59-1.44.832-3.09.85-4.26.173l.008.021.012-.006-.01.01c.42 1.218 2.032 1.9 4.08 1.586a7.4 7.4 0 0 0 2.856-1.081 6.96 6.96 0 0 1-1.358 3.662c-1.03.248-2.235.084-3.322-.544-1.433-.827-2.272-2.236-2.279-3.58l-.012-.003c-.845.972-.63 2.71.666 4.327a7.4 7.4 0 0 0 2.37 1.935 6.97 6.97 0 0 1-3.86.65c-.727-.767-1.186-1.892-1.186-3.146 0-1.658.804-3.091 1.969-3.768l-.002-.007c-1.266-.25-2.666.805-3.42 2.74a7.4 7.4 0 0 0-.49 3.012 7.03 7.03 0 0 1-2.49-3.018C1.87 9.757 2.613 8.8 3.696 8.174c1.438-.83 3.084-.85 4.253-.176l.005-.006C7.538 6.77 5.924 6.085 3.872 6.4c-1.04.16-2.03.55-2.853 1.08a6.96 6.96 0 0 1 1.372-3.667l-.002.003c1.025-.243 2.224-.078 3.306.547 1.43.826 2.269 2.23 2.28 3.573L8 7.941c.837-.974.62-2.706-.673-4.319a7.4 7.4 0 0 0-2.362-1.931Z"/></symbol><symbol class="bi bi-image" viewBox="0 0 16 16" id="image"><path d="M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/><path d="M2.002 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v6.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12V3a1 1 0 0 1 1-1z"/></symbol><symbol class="bi bi-image-alt" viewBox="0 0 16 16" id="image-alt"><path d="M7 2.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0m4.225 4.053a.5.5 0 0 0-.577.093l-3.71 4.71-2.66-2.772a.5.5 0 0 0-.63.062L.002 13v2a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-4.5z"/></symbol><symbol class="bi bi-image-fill" viewBox="0 0 16 16" id="image-fill"><path d="M.002 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-12a2 2 0 0 1-2-2zm1 9v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V9.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062zm5-6.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/></symbol><symbol class="bi bi-images" viewBox="0 0 16 16" id="images"><path d="M4.502 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/><path d="M14.002 13a2 2 0 0 1-2 2h-10a2 2 0 0 1-2-2V5A2 2 0 0 1 2 3a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v8a2 2 0 0 1-1.998 2M14 2H4a1 1 0 0 0-1 1h9.002a2 2 0 0 1 2 2v7A1 1 0 0 0 15 11V3a1 1 0 0 0-1-1M2.002 4a1 1 0 0 0-1 1v8l2.646-2.354a.5.5 0 0 1 .63-.062l2.66 1.773 3.71-3.71a.5.5 0 0 1 .577-.094l1.777 1.947V5a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-inbox" viewBox="0 0 16 16" id="inbox"><path d="M4.98 4a.5.5 0 0 0-.39.188L1.54 8H6a.5.5 0 0 1 .5.5 1.5 1.5 0 1 0 3 0A.5.5 0 0 1 10 8h4.46l-3.05-3.812A.5.5 0 0 0 11.02 4zm9.954 5H10.45a2.5 2.5 0 0 1-4.9 0H1.066l.32 2.562a.5.5 0 0 0 .497.438h12.234a.5.5 0 0 0 .496-.438zM3.809 3.563A1.5 1.5 0 0 1 4.981 3h6.038a1.5 1.5 0 0 1 1.172.563l3.7 4.625a.5.5 0 0 1 .105.374l-.39 3.124A1.5 1.5 0 0 1 14.117 13H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .106-.374z"/></symbol><symbol class="bi bi-inbox-fill" viewBox="0 0 16 16" id="inbox-fill"><path d="M4.98 4a.5.5 0 0 0-.39.188L1.54 8H6a.5.5 0 0 1 .5.5 1.5 1.5 0 1 0 3 0A.5.5 0 0 1 10 8h4.46l-3.05-3.812A.5.5 0 0 0 11.02 4zm-1.17-.437A1.5 1.5 0 0 1 4.98 3h6.04a1.5 1.5 0 0 1 1.17.563l3.7 4.625a.5.5 0 0 1 .106.374l-.39 3.124A1.5 1.5 0 0 1 14.117 13H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .106-.374z"/></symbol><symbol class="bi bi-inboxes" viewBox="0 0 16 16" id="inboxes"><path d="M4.98 1a.5.5 0 0 0-.39.188L1.54 5H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0A.5.5 0 0 1 10 5h4.46l-3.05-3.812A.5.5 0 0 0 11.02 1zm9.954 5H10.45a2.5 2.5 0 0 1-4.9 0H1.066l.32 2.562A.5.5 0 0 0 1.884 9h12.234a.5.5 0 0 0 .496-.438zM3.809.563A1.5 1.5 0 0 1 4.981 0h6.038a1.5 1.5 0 0 1 1.172.563l3.7 4.625a.5.5 0 0 1 .105.374l-.39 3.124A1.5 1.5 0 0 1 14.117 10H1.883A1.5 1.5 0 0 1 .394 8.686l-.39-3.124a.5.5 0 0 1 .106-.374zM.125 11.17A.5.5 0 0 1 .5 11H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0 .5.5 0 0 1 .5-.5h5.5a.5.5 0 0 1 .496.562l-.39 3.124A1.5 1.5 0 0 1 14.117 16H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .121-.393zm.941.83.32 2.562a.5.5 0 0 0 .497.438h12.234a.5.5 0 0 0 .496-.438l.32-2.562H10.45a2.5 2.5 0 0 1-4.9 0z"/></symbol><symbol class="bi bi-inboxes-fill" viewBox="0 0 16 16" id="inboxes-fill"><path d="M4.98 1a.5.5 0 0 0-.39.188L1.54 5H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0A.5.5 0 0 1 10 5h4.46l-3.05-3.812A.5.5 0 0 0 11.02 1zM3.81.563A1.5 1.5 0 0 1 4.98 0h6.04a1.5 1.5 0 0 1 1.17.563l3.7 4.625a.5.5 0 0 1 .106.374l-.39 3.124A1.5 1.5 0 0 1 14.117 10H1.883A1.5 1.5 0 0 1 .394 8.686l-.39-3.124a.5.5 0 0 1 .106-.374zM.125 11.17A.5.5 0 0 1 .5 11H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0 .5.5 0 0 1 .5-.5h5.5a.5.5 0 0 1 .496.562l-.39 3.124A1.5 1.5 0 0 1 14.117 16H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .121-.393z"/></symbol><symbol class="bi bi-incognito" viewBox="0 0 16 16" id="incognito"><path fill-rule="evenodd" d="m4.736 1.968-.892 3.269-.014.058C2.113 5.568 1 6.006 1 6.5 1 7.328 4.134 8 8 8s7-.672 7-1.5c0-.494-1.113-.932-2.83-1.205l-.014-.058-.892-3.27c-.146-.533-.698-.849-1.239-.734C9.411 1.363 8.62 1.5 8 1.5s-1.411-.136-2.025-.267c-.541-.115-1.093.2-1.239.735m.015 3.867a.25.25 0 0 1 .274-.224c.9.092 1.91.143 2.975.143a30 30 0 0 0 2.975-.143.25.25 0 0 1 .05.498c-.918.093-1.944.145-3.025.145s-2.107-.052-3.025-.145a.25.25 0 0 1-.224-.274M3.5 10h2a.5.5 0 0 1 .5.5v1a1.5 1.5 0 0 1-3 0v-1a.5.5 0 0 1 .5-.5m-1.5.5q.001-.264.085-.5H2a.5.5 0 0 1 0-1h3.5a1.5 1.5 0 0 1 1.488 1.312 3.5 3.5 0 0 1 2.024 0A1.5 1.5 0 0 1 10.5 9H14a.5.5 0 0 1 0 1h-.085q.084.236.085.5v1a2.5 2.5 0 0 1-5 0v-.14l-.21-.07a2.5 2.5 0 0 0-1.58 0l-.21.07v.14a2.5 2.5 0 0 1-5 0zm8.5-.5h2a.5.5 0 0 1 .5.5v1a1.5 1.5 0 0 1-3 0v-1a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-indent" viewBox="0 0 16 16" id="indent"><path fill-rule="evenodd" d="M3 8a.5.5 0 0 1 .5-.5h6.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H3.5A.5.5 0 0 1 3 8"/><path fill-rule="evenodd" d="M12.5 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-infinity" viewBox="0 0 16 16" id="infinity"><path d="M5.68 5.792 7.345 7.75 5.681 9.708a2.75 2.75 0 1 1 0-3.916ZM8 6.978 6.416 5.113l-.014-.015a3.75 3.75 0 1 0 0 5.304l.014-.015L8 8.522l1.584 1.865.014.015a3.75 3.75 0 1 0 0-5.304l-.014.015zm.656.772 1.663-1.958a2.75 2.75 0 1 1 0 3.916z"/></symbol><symbol class="bi bi-info" viewBox="0 0 16 16" id="info"><path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-info-circle" viewBox="0 0 16 16" id="info-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-info-circle-fill" viewBox="0 0 16 16" id="info-circle-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/></symbol><symbol class="bi bi-info-lg" viewBox="0 0 16 16" id="info-lg"><path d="m9.708 6.075-3.024.379-.108.502.595.108c.387.093.464.232.38.619l-.975 4.577c-.255 1.183.14 1.74 1.067 1.74.72 0 1.554-.332 1.933-.789l.116-.549c-.263.232-.65.325-.905.325-.363 0-.494-.255-.402-.704zm.091-2.755a1.32 1.32 0 1 1-2.64 0 1.32 1.32 0 0 1 2.64 0"/></symbol><symbol class="bi bi-info-square" viewBox="0 0 16 16" id="info-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-info-square-fill" viewBox="0 0 16 16" id="info-square-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8.93 4.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM8 5.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-input-cursor" viewBox="0 0 16 16" id="input-cursor"><path d="M10 5h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4v1h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4zM6 5V4H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v-1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1z"/><path fill-rule="evenodd" d="M8 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13A.5.5 0 0 1 8 1"/></symbol><symbol class="bi bi-input-cursor-text" viewBox="0 0 16 16" id="input-cursor-text"><path fill-rule="evenodd" d="M5 2a.5.5 0 0 1 .5-.5c.862 0 1.573.287 2.06.566.174.099.321.198.44.286.119-.088.266-.187.44-.286A4.17 4.17 0 0 1 10.5 1.5a.5.5 0 0 1 0 1c-.638 0-1.177.213-1.564.434a3.5 3.5 0 0 0-.436.294V7.5H9a.5.5 0 0 1 0 1h-.5v4.272c.1.08.248.187.436.294.387.221.926.434 1.564.434a.5.5 0 0 1 0 1 4.17 4.17 0 0 1-2.06-.566A5 5 0 0 1 8 13.65a5 5 0 0 1-.44.285 4.17 4.17 0 0 1-2.06.566.5.5 0 0 1 0-1c.638 0 1.177-.213 1.564-.434.188-.107.335-.214.436-.294V8.5H7a.5.5 0 0 1 0-1h.5V3.228a3.5 3.5 0 0 0-.436-.294A3.17 3.17 0 0 0 5.5 2.5.5.5 0 0 1 5 2"/><path d="M10 5h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4v1h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4zM6 5V4H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v-1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1z"/></symbol><symbol class="bi bi-instagram" viewBox="0 0 16 16" id="instagram"><path d="M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.9 3.9 0 0 0-1.417.923A3.9 3.9 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.9 3.9 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.9 3.9 0 0 0-.923-1.417A3.9 3.9 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599s.453.546.598.92c.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.5 2.5 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.5 2.5 0 0 1-.92-.598 2.5 2.5 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233s.008-2.388.046-3.231c.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92s.546-.453.92-.598c.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92m-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217m0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334"/></symbol><symbol class="bi bi-intersect" viewBox="0 0 16 16" id="intersect"><path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm5 10v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2v5a2 2 0 0 1-2 2zm6-8V2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2V6a2 2 0 0 1 2-2z"/></symbol><symbol class="bi bi-journal" viewBox="0 0 16 16" id="journal"><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-album" viewBox="0 0 16 16" id="journal-album"><path d="M5.5 4a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5zm1 7a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-arrow-down" viewBox="0 0 16 16" id="journal-arrow-down"><path fill-rule="evenodd" d="M8 5a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5A.5.5 0 0 1 8 5"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-arrow-up" viewBox="0 0 16 16" id="journal-arrow-up"><path fill-rule="evenodd" d="M8 11a.5.5 0 0 0 .5-.5V6.707l1.146 1.147a.5.5 0 0 0 .708-.708l-2-2a.5.5 0 0 0-.708 0l-2 2a.5.5 0 1 0 .708.708L7.5 6.707V10.5a.5.5 0 0 0 .5.5"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-bookmark" viewBox="0 0 16 16" id="journal-bookmark"><path fill-rule="evenodd" d="M6 8V1h1v6.117L8.743 6.07a.5.5 0 0 1 .514 0L11 7.117V1h1v7a.5.5 0 0 1-.757.429L9 7.083 6.757 8.43A.5.5 0 0 1 6 8"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-bookmark-fill" viewBox="0 0 16 16" id="journal-bookmark-fill"><path fill-rule="evenodd" d="M6 1h6v7a.5.5 0 0 1-.757.429L9 7.083 6.757 8.43A.5.5 0 0 1 6 8z"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-check" viewBox="0 0 16 16" id="journal-check"><path fill-rule="evenodd" d="M10.854 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 8.793l2.646-2.647a.5.5 0 0 1 .708 0"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-code" viewBox="0 0 16 16" id="journal-code"><path fill-rule="evenodd" d="M8.646 5.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 0 1 0-.708m-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 8l1.647-1.646a.5.5 0 0 0 0-.708"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-medical" viewBox="0 0 16 16" id="journal-medical"><path fill-rule="evenodd" d="M8 4a.5.5 0 0 1 .5.5v.634l.549-.317a.5.5 0 1 1 .5.866L9 6l.549.317a.5.5 0 1 1-.5.866L8.5 6.866V7.5a.5.5 0 0 1-1 0v-.634l-.549.317a.5.5 0 1 1-.5-.866L7 6l-.549-.317a.5.5 0 0 1 .5-.866l.549.317V4.5A.5.5 0 0 1 8 4M5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-minus" viewBox="0 0 16 16" id="journal-minus"><path fill-rule="evenodd" d="M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-plus" viewBox="0 0 16 16" id="journal-plus"><path fill-rule="evenodd" d="M8 5.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 .5-.5"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-richtext" viewBox="0 0 16 16" id="journal-richtext"><path d="M7.5 3.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047L11 4.75V7a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 7v-.5s1.54-1.274 1.639-1.208M5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-text" viewBox="0 0 16 16" id="journal-text"><path d="M5 10.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journal-x" viewBox="0 0 16 16" id="journal-x"><path fill-rule="evenodd" d="M6.146 6.146a.5.5 0 0 1 .708 0L8 7.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 8l1.147 1.146a.5.5 0 0 1-.708.708L8 8.707 6.854 9.854a.5.5 0 0 1-.708-.708L7.293 8 6.146 6.854a.5.5 0 0 1 0-.708"/><path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/><path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol class="bi bi-journals" viewBox="0 0 16 16" id="journals"><path d="M5 0h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2 2 2 0 0 1-2 2H3a2 2 0 0 1-2-2h1a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1H1a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v9a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1H3a2 2 0 0 1 2-2"/><path d="M1 6v-.5a.5.5 0 0 1 1 0V6h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V9h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 2.5v.5H.5a.5.5 0 0 0 0 1h2a.5.5 0 0 0 0-1H2v-.5a.5.5 0 0 0-1 0"/></symbol><symbol class="bi bi-joystick" viewBox="0 0 16 16" id="joystick"><path d="M10 2a2 2 0 0 1-1.5 1.937v5.087c.863.083 1.5.377 1.5.726 0 .414-.895.75-2 .75s-2-.336-2-.75c0-.35.637-.643 1.5-.726V3.937A2 2 0 1 1 10 2"/><path d="M0 9.665v1.717a1 1 0 0 0 .553.894l6.553 3.277a2 2 0 0 0 1.788 0l6.553-3.277a1 1 0 0 0 .553-.894V9.665c0-.1-.06-.19-.152-.23L9.5 6.715v.993l5.227 2.178a.125.125 0 0 1 .001.23l-5.94 2.546a2 2 0 0 1-1.576 0l-5.94-2.546a.125.125 0 0 1 .001-.23L6.5 7.708l-.013-.988L.152 9.435a.25.25 0 0 0-.152.23"/></symbol><symbol class="bi bi-justify" viewBox="0 0 16 16" id="justify"><path fill-rule="evenodd" d="M2 12.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-justify-left" viewBox="0 0 16 16" id="justify-left"><path fill-rule="evenodd" d="M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-justify-right" viewBox="0 0 16 16" id="justify-right"><path fill-rule="evenodd" d="M6 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-kanban" viewBox="0 0 16 16" id="kanban"><path d="M13.5 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm-11-1a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M6.5 3a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1zm-4 0a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1zm8 0a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-kanban-fill" viewBox="0 0 16 16" id="kanban-fill"><path d="M2.5 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5 2h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1m-5 1a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1zm9-1h1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-key" viewBox="0 0 16 16" id="key"><path d="M0 8a4 4 0 0 1 7.465-2H14a.5.5 0 0 1 .354.146l1.5 1.5a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0L13 9.207l-.646.647a.5.5 0 0 1-.708 0L11 9.207l-.646.647a.5.5 0 0 1-.708 0L9 9.207l-.646.647A.5.5 0 0 1 8 10h-.535A4 4 0 0 1 0 8m4-3a3 3 0 1 0 2.712 4.285A.5.5 0 0 1 7.163 9h.63l.853-.854a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.793-.793-1-1h-6.63a.5.5 0 0 1-.451-.285A3 3 0 0 0 4 5"/><path d="M4 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-key-fill" viewBox="0 0 16 16" id="key-fill"><path d="M3.5 11.5a3.5 3.5 0 1 1 3.163-5H14L15.5 8 14 9.5l-1-1-1 1-1-1-1 1-1-1-1 1H6.663a3.5 3.5 0 0 1-3.163 2M2.5 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-keyboard" viewBox="0 0 16 16" id="keyboard"><path d="M14 5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zM2 4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z"/><path d="M13 10.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm0-2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm-5 0A.25.25 0 0 1 8.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 8 8.75zm2 0a.25.25 0 0 1 .25-.25h1.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-1.5a.25.25 0 0 1-.25-.25zm1 2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm-5-2A.25.25 0 0 1 6.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 6 8.75zm-2 0A.25.25 0 0 1 4.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 4 8.75zm-2 0A.25.25 0 0 1 2.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 2 8.75zm11-2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm-2 0a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm-2 0A.25.25 0 0 1 9.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 9 6.75zm-2 0A.25.25 0 0 1 7.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 7 6.75zm-2 0A.25.25 0 0 1 5.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 5 6.75zm-3 0A.25.25 0 0 1 2.25 6h1.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-1.5A.25.25 0 0 1 2 6.75zm0 4a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm2 0a.25.25 0 0 1 .25-.25h5.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-5.5a.25.25 0 0 1-.25-.25z"/></symbol><symbol class="bi bi-keyboard-fill" viewBox="0 0 16 16" id="keyboard-fill"><path d="M0 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm13 .25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5a.25.25 0 0 0-.25.25M2.25 8a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 3 8.75v-.5A.25.25 0 0 0 2.75 8zM4 8.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 5 8.75v-.5A.25.25 0 0 0 4.75 8h-.5a.25.25 0 0 0-.25.25M6.25 8a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 7 8.75v-.5A.25.25 0 0 0 6.75 8zM8 8.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 9 8.75v-.5A.25.25 0 0 0 8.75 8h-.5a.25.25 0 0 0-.25.25M13.25 8a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zm0 2a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zm-3-2a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h1.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zm.75 2.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5a.25.25 0 0 0-.25.25M11.25 6a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zM9 6.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5A.25.25 0 0 0 9.75 6h-.5a.25.25 0 0 0-.25.25M7.25 6a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 8 6.75v-.5A.25.25 0 0 0 7.75 6zM5 6.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 6 6.75v-.5A.25.25 0 0 0 5.75 6h-.5a.25.25 0 0 0-.25.25M2.25 6a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h1.5A.25.25 0 0 0 4 6.75v-.5A.25.25 0 0 0 3.75 6zM2 10.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5a.25.25 0 0 0-.25.25M4.25 10a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h5.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25z"/></symbol><symbol class="bi bi-ladder" viewBox="0 0 16 16" id="ladder"><path d="M4.5 1a.5.5 0 0 1 .5.5V2h6v-.5a.5.5 0 0 1 1 0v14a.5.5 0 0 1-1 0V15H5v.5a.5.5 0 0 1-1 0v-14a.5.5 0 0 1 .5-.5M5 14h6v-2H5zm0-3h6V9H5zm0-3h6V6H5zm0-3h6V3H5z"/></symbol><symbol class="bi bi-lamp" viewBox="0 0 16 16" id="lamp"><path fill-rule="evenodd" d="M5.04.303A.5.5 0 0 1 5.5 0h5c.2 0 .38.12.46.303l3 7a.5.5 0 0 1-.363.687h-.002q-.225.044-.45.081a33 33 0 0 1-4.645.425V13.5a.5.5 0 1 1-1 0V8.495a33 33 0 0 1-4.645-.425q-.225-.036-.45-.08h-.003a.5.5 0 0 1-.362-.688l3-7ZM3.21 7.116A31 31 0 0 0 8 7.5a31 31 0 0 0 4.791-.384L10.171 1H5.83z"/><path d="M6.493 12.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.3 1.3 0 0 0-.37.265.3.3 0 0 0-.052.075l-.001.004-.004.01V14l.002.008.016.033a.6.6 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.6.6 0 0 0 .146-.15l.015-.033L12 14v-.004a.3.3 0 0 0-.057-.09 1.3 1.3 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465s-2.462-.172-3.34-.465c-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411"/></symbol><symbol class="bi bi-lamp-fill" viewBox="0 0 16 16" id="lamp-fill"><path fill-rule="evenodd" d="M5.04.303A.5.5 0 0 1 5.5 0h5c.2 0 .38.12.46.303l3 7a.5.5 0 0 1-.363.687h-.002q-.225.044-.45.081a33 33 0 0 1-4.645.425V13.5a.5.5 0 1 1-1 0V8.495a33 33 0 0 1-4.645-.425q-.225-.036-.45-.08h-.003a.5.5 0 0 1-.362-.688l3-7Z"/><path d="M6.493 12.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.3 1.3 0 0 0-.37.265.3.3 0 0 0-.052.075l-.001.004-.004.01V14l.002.008.016.033a.6.6 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.6.6 0 0 0 .146-.15l.015-.033L12 14v-.004a.3.3 0 0 0-.057-.09 1.3 1.3 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465s-2.462-.172-3.34-.465c-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411"/></symbol><symbol class="bi bi-laptop" viewBox="0 0 16 16" id="laptop"><path d="M13.5 3a.5.5 0 0 1 .5.5V11H2V3.5a.5.5 0 0 1 .5-.5zm-11-1A1.5 1.5 0 0 0 1 3.5V12h14V3.5A1.5 1.5 0 0 0 13.5 2zM0 12.5h16a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5"/></symbol><symbol class="bi bi-laptop-fill" viewBox="0 0 16 16" id="laptop-fill"><path d="M2.5 2A1.5 1.5 0 0 0 1 3.5V12h14V3.5A1.5 1.5 0 0 0 13.5 2zM0 12.5h16a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5"/></symbol><symbol class="bi bi-layer-backward" viewBox="0 0 16 16" id="layer-backward"><path d="M8.354 15.854a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 0-.708l1-1a.5.5 0 0 1 .708 0l.646.647V4H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H9v7.793l.646-.647a.5.5 0 0 1 .708 0l1 1a.5.5 0 0 1 0 .708z"/><path d="M1 9a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h4.5a.5.5 0 0 1 0 1H1v2h4.5a.5.5 0 0 1 0 1zm9.5 0a.5.5 0 0 1 0-1H15V6h-4.5a.5.5 0 0 1 0-1H15a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1z"/></symbol><symbol class="bi bi-layer-forward" viewBox="0 0 16 16" id="layer-forward"><path d="M8.354.146a.5.5 0 0 0-.708 0l-3 3a.5.5 0 0 0 0 .708l1 1a.5.5 0 0 0 .708 0L7 4.207V12H1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1H9V4.207l.646.647a.5.5 0 0 0 .708 0l1-1a.5.5 0 0 0 0-.708z"/><path d="M1 7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h4.5a.5.5 0 0 0 0-1H1V8h4.5a.5.5 0 0 0 0-1zm9.5 0a.5.5 0 0 0 0 1H15v2h-4.5a.5.5 0 0 0 0 1H15a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-layers" viewBox="0 0 16 16" id="layers"><path d="M8.235 1.559a.5.5 0 0 0-.47 0l-7.5 4a.5.5 0 0 0 0 .882L3.188 8 .264 9.559a.5.5 0 0 0 0 .882l7.5 4a.5.5 0 0 0 .47 0l7.5-4a.5.5 0 0 0 0-.882L12.813 8l2.922-1.559a.5.5 0 0 0 0-.882zm3.515 7.008L14.438 10 8 13.433 1.562 10 4.25 8.567l3.515 1.874a.5.5 0 0 0 .47 0zM8 9.433 1.562 6 8 2.567 14.438 6z"/></symbol><symbol class="bi bi-layers-fill" viewBox="0 0 16 16" id="layers-fill"><path d="M7.765 1.559a.5.5 0 0 1 .47 0l7.5 4a.5.5 0 0 1 0 .882l-7.5 4a.5.5 0 0 1-.47 0l-7.5-4a.5.5 0 0 1 0-.882z"/><path d="m2.125 8.567-1.86.992a.5.5 0 0 0 0 .882l7.5 4a.5.5 0 0 0 .47 0l7.5-4a.5.5 0 0 0 0-.882l-1.86-.992-5.17 2.756a1.5 1.5 0 0 1-1.41 0z"/></symbol><symbol class="bi bi-layers-half" viewBox="0 0 16 16" id="layers-half"><path d="M8.235 1.559a.5.5 0 0 0-.47 0l-7.5 4a.5.5 0 0 0 0 .882L3.188 8 .264 9.559a.5.5 0 0 0 0 .882l7.5 4a.5.5 0 0 0 .47 0l7.5-4a.5.5 0 0 0 0-.882L12.813 8l2.922-1.559a.5.5 0 0 0 0-.882zM8 9.433 1.562 6 8 2.567 14.438 6z"/></symbol><symbol class="bi bi-layout-sidebar" viewBox="0 0 16 16" id="layout-sidebar"><path d="M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5-1v12h9a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zM4 2H2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h2z"/></symbol><symbol class="bi bi-layout-sidebar-inset" viewBox="0 0 16 16" id="layout-sidebar-inset"><path d="M14 2a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zM2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2z"/><path d="M3 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-layout-sidebar-inset-reverse" viewBox="0 0 16 16" id="layout-sidebar-inset-reverse"><path d="M2 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2z"/><path d="M13 4a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-layout-sidebar-reverse" viewBox="0 0 16 16" id="layout-sidebar-reverse"><path d="M16 3a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zm-5-1v12H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zm1 0h2a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-2z"/></symbol><symbol class="bi bi-layout-split" viewBox="0 0 16 16" id="layout-split"><path d="M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8.5-1v12H14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm-1 0H2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h5.5z"/></symbol><symbol class="bi bi-layout-text-sidebar" viewBox="0 0 16 16" id="layout-text-sidebar"><path d="M3.5 3a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zM3 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m.5 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm12-1v14h2a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 0H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h9z"/></symbol><symbol class="bi bi-layout-text-sidebar-reverse" viewBox="0 0 16 16" id="layout-text-sidebar-reverse"><path d="M12.5 3a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1zm0 3a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1zm.5 3.5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 .5-.5m-.5 2.5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1z"/><path d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zM4 1v14H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm1 0h9a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5z"/></symbol><symbol class="bi bi-layout-text-window" viewBox="0 0 16 16" id="layout-text-window"><path d="M3 6.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 3a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m.5 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v1H1V2a1 1 0 0 1 1-1zm1 3v10a1 1 0 0 1-1 1h-2V4zm-4 0v11H2a1 1 0 0 1-1-1V4z"/></symbol><symbol class="bi bi-layout-text-window-reverse" viewBox="0 0 16 16" id="layout-text-window-reverse"><path d="M13 6.5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 .5-.5m0 3a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 .5-.5m-.5 2.5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1z"/><path d="M14 0a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zM2 1a1 1 0 0 0-1 1v1h14V2a1 1 0 0 0-1-1zM1 4v10a1 1 0 0 0 1 1h2V4zm4 0v11h9a1 1 0 0 0 1-1V4z"/></symbol><symbol class="bi bi-layout-three-columns" viewBox="0 0 16 16" id="layout-three-columns"><path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5zM1.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5H5V1zM10 15V1H6v14zm1 0h3.5a.5.5 0 0 0 .5-.5v-13a.5.5 0 0 0-.5-.5H11z"/></symbol><symbol class="bi bi-layout-wtf" viewBox="0 0 16 16" id="layout-wtf"><path d="M5 1v8H1V1zM1 0a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm13 2v5H9V2zM9 1a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM5 13v2H3v-2zm-2-1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1zm12-1v2H9v-2zm-6-1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-life-preserver" viewBox="0 0 16 16" id="life-preserver"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m6.43-5.228a7.03 7.03 0 0 1-3.658 3.658l-1.115-2.788a4 4 0 0 0 1.985-1.985zM5.228 14.43a7.03 7.03 0 0 1-3.658-3.658l2.788-1.115a4 4 0 0 0 1.985 1.985zm9.202-9.202-2.788 1.115a4 4 0 0 0-1.985-1.985l1.115-2.788a7.03 7.03 0 0 1 3.658 3.658m-8.087-.87a4 4 0 0 0-1.985 1.985L1.57 5.228A7.03 7.03 0 0 1 5.228 1.57zM8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6"/></symbol><symbol class="bi bi-lightbulb" viewBox="0 0 16 16" id="lightbulb"><path d="M2 6a6 6 0 1 1 10.174 4.31c-.203.196-.359.4-.453.619l-.762 1.769A.5.5 0 0 1 10.5 13a.5.5 0 0 1 0 1 .5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1 0-1 .5.5 0 0 1 0-1 .5.5 0 0 1-.46-.302l-.761-1.77a2 2 0 0 0-.453-.618A5.98 5.98 0 0 1 2 6m6-5a5 5 0 0 0-3.479 8.592c.263.254.514.564.676.941L5.83 12h4.342l.632-1.467c.162-.377.413-.687.676-.941A5 5 0 0 0 8 1"/></symbol><symbol class="bi bi-lightbulb-fill" viewBox="0 0 16 16" id="lightbulb-fill"><path d="M2 6a6 6 0 1 1 10.174 4.31c-.203.196-.359.4-.453.619l-.762 1.769A.5.5 0 0 1 10.5 13h-5a.5.5 0 0 1-.46-.302l-.761-1.77a2 2 0 0 0-.453-.618A5.98 5.98 0 0 1 2 6m3 8.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-lightbulb-off" viewBox="0 0 16 16" id="lightbulb-off"><path fill-rule="evenodd" d="M2.23 4.35A6 6 0 0 0 2 6c0 1.691.7 3.22 1.826 4.31.203.196.359.4.453.619l.762 1.769A.5.5 0 0 0 5.5 13a.5.5 0 0 0 0 1 .5.5 0 0 0 0 1l.224.447a1 1 0 0 0 .894.553h2.764a1 1 0 0 0 .894-.553L10.5 15a.5.5 0 0 0 0-1 .5.5 0 0 0 0-1 .5.5 0 0 0 .288-.091L9.878 12H5.83l-.632-1.467a3 3 0 0 0-.676-.941 4.98 4.98 0 0 1-1.455-4.405zm1.588-2.653.708.707a5 5 0 0 1 7.07 7.07l.707.707a6 6 0 0 0-8.484-8.484zm-2.172-.051a.5.5 0 0 1 .708 0l12 12a.5.5 0 0 1-.708.708l-12-12a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-lightbulb-off-fill" viewBox="0 0 16 16" id="lightbulb-off-fill"><path d="M2 6c0-.572.08-1.125.23-1.65l8.558 8.559A.5.5 0 0 1 10.5 13h-5a.5.5 0 0 1-.46-.302l-.761-1.77a2 2 0 0 0-.453-.618A5.98 5.98 0 0 1 2 6m10.303 4.181L3.818 1.697a6 6 0 0 1 8.484 8.484zM5 14.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1-.5-.5M2.354 1.646a.5.5 0 1 0-.708.708l12 12a.5.5 0 0 0 .708-.708z"/></symbol><symbol class="bi bi-lightning" viewBox="0 0 16 16" id="lightning"><path d="M5.52.359A.5.5 0 0 1 6 0h4a.5.5 0 0 1 .474.658L8.694 6H12.5a.5.5 0 0 1 .395.807l-7 9a.5.5 0 0 1-.873-.454L6.823 9.5H3.5a.5.5 0 0 1-.48-.641zM6.374 1 4.168 8.5H7.5a.5.5 0 0 1 .478.647L6.78 13.04 11.478 7H8a.5.5 0 0 1-.474-.658L9.306 1z"/></symbol><symbol class="bi bi-lightning-charge" viewBox="0 0 16 16" id="lightning-charge"><path d="M11.251.068a.5.5 0 0 1 .227.58L9.677 6.5H13a.5.5 0 0 1 .364.843l-8 8.5a.5.5 0 0 1-.842-.49L6.323 9.5H3a.5.5 0 0 1-.364-.843l8-8.5a.5.5 0 0 1 .615-.09zM4.157 8.5H7a.5.5 0 0 1 .478.647L6.11 13.59l5.732-6.09H9a.5.5 0 0 1-.478-.647L9.89 2.41z"/></symbol><symbol class="bi bi-lightning-charge-fill" viewBox="0 0 16 16" id="lightning-charge-fill"><path d="M11.251.068a.5.5 0 0 1 .227.58L9.677 6.5H13a.5.5 0 0 1 .364.843l-8 8.5a.5.5 0 0 1-.842-.49L6.323 9.5H3a.5.5 0 0 1-.364-.843l8-8.5a.5.5 0 0 1 .615-.09z"/></symbol><symbol class="bi bi-lightning-fill" viewBox="0 0 16 16" id="lightning-fill"><path d="M5.52.359A.5.5 0 0 1 6 0h4a.5.5 0 0 1 .474.658L8.694 6H12.5a.5.5 0 0 1 .395.807l-7 9a.5.5 0 0 1-.873-.454L6.823 9.5H3.5a.5.5 0 0 1-.48-.641z"/></symbol><symbol class="bi bi-line" viewBox="0 0 16 16" id="line"><path d="M8 0c4.411 0 8 2.912 8 6.492 0 1.433-.555 2.723-1.715 3.994-1.678 1.932-5.431 4.285-6.285 4.645-.83.35-.734-.197-.696-.413l.003-.018.114-.685c.027-.204.055-.521-.026-.723-.09-.223-.444-.339-.704-.395C2.846 12.39 0 9.701 0 6.492 0 2.912 3.59 0 8 0M5.022 7.686H3.497V4.918a.156.156 0 0 0-.155-.156H2.78a.156.156 0 0 0-.156.156v3.486c0 .041.017.08.044.107v.001l.002.002.002.002a.15.15 0 0 0 .108.043h2.242c.086 0 .155-.07.155-.156v-.56a.156.156 0 0 0-.155-.157m.791-2.924a.156.156 0 0 0-.156.156v3.486c0 .086.07.155.156.155h.562c.086 0 .155-.07.155-.155V4.918a.156.156 0 0 0-.155-.156zm3.863 0a.156.156 0 0 0-.156.156v2.07L7.923 4.832l-.013-.015v-.001l-.01-.01-.003-.003-.011-.009h-.001L7.88 4.79l-.003-.002-.005-.003-.008-.005h-.002l-.003-.002-.01-.004-.004-.002-.01-.003h-.002l-.003-.001-.009-.002h-.006l-.003-.001h-.004l-.002-.001h-.574a.156.156 0 0 0-.156.155v3.486c0 .086.07.155.156.155h.56c.087 0 .157-.07.157-.155v-2.07l1.6 2.16a.2.2 0 0 0 .039.038l.001.001.01.006.004.002.008.004.007.003.005.002.01.003h.003a.2.2 0 0 0 .04.006h.56c.087 0 .157-.07.157-.155V4.918a.156.156 0 0 0-.156-.156zm3.815.717v-.56a.156.156 0 0 0-.155-.157h-2.242a.16.16 0 0 0-.108.044h-.001l-.001.002-.002.003a.16.16 0 0 0-.044.107v3.486c0 .041.017.08.044.107l.002.003.002.002a.16.16 0 0 0 .108.043h2.242c.086 0 .155-.07.155-.156v-.56a.156.156 0 0 0-.155-.157H11.81v-.589h1.525c.086 0 .155-.07.155-.156v-.56a.156.156 0 0 0-.155-.157H11.81v-.589h1.525c.086 0 .155-.07.155-.156Z"/></symbol><symbol class="bi bi-link" viewBox="0 0 16 16" id="link"><path d="M6.354 5.5H4a3 3 0 0 0 0 6h3a3 3 0 0 0 2.83-4H9q-.13 0-.25.031A2 2 0 0 1 7 10.5H4a2 2 0 1 1 0-4h1.535c.218-.376.495-.714.82-1z"/><path d="M9 5.5a3 3 0 0 0-2.83 4h1.098A2 2 0 0 1 9 6.5h3a2 2 0 1 1 0 4h-1.535a4 4 0 0 1-.82 1H12a3 3 0 1 0 0-6z"/></symbol><symbol class="bi bi-link-45deg" viewBox="0 0 16 16" id="link-45deg"><path d="M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1 1 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4 4 0 0 1-.128-1.287z"/><path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243z"/></symbol><symbol class="bi bi-linkedin" viewBox="0 0 16 16" id="linkedin"><path d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854zm4.943 12.248V6.169H2.542v7.225zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248S2.4 3.226 2.4 3.934c0 .694.521 1.248 1.327 1.248zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016l.016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225z"/></symbol><symbol class="bi bi-list" viewBox="0 0 16 16" id="list"><path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-list-check" viewBox="0 0 16 16" id="list-check"><path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3.854 2.146a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 3.293l1.146-1.147a.5.5 0 0 1 .708 0m0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 7.293l1.146-1.147a.5.5 0 0 1 .708 0m0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 0 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-list-columns" viewBox="0 0 16 16" id="list-columns"><path fill-rule="evenodd" d="M0 .5A.5.5 0 0 1 .5 0h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 0 .5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 2h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 4h10a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 6h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 8h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-list-columns-reverse" viewBox="0 0 16 16" id="list-columns-reverse"><path fill-rule="evenodd" d="M0 .5A.5.5 0 0 1 .5 0h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 .5m4 0a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1h-10A.5.5 0 0 1 4 .5m-4 2A.5.5 0 0 1 .5 2h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-4 2A.5.5 0 0 1 .5 4h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m-4 2A.5.5 0 0 1 .5 6h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5m-4 2A.5.5 0 0 1 .5 8h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5m-4 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1h-10a.5.5 0 0 1-.5-.5m-4 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m-4 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-list-nested" viewBox="0 0 16 16" id="list-nested"><path fill-rule="evenodd" d="M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5m-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5m-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-list-ol" viewBox="0 0 16 16" id="list-ol"><path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/><path d="M1.713 11.865v-.474H2c.217 0 .363-.137.363-.317 0-.185-.158-.31-.361-.31-.223 0-.367.152-.373.31h-.59c.016-.467.373-.787.986-.787.588-.002.954.291.957.703a.595.595 0 0 1-.492.594v.033a.615.615 0 0 1 .569.631c.003.533-.502.8-1.051.8-.656 0-1-.37-1.008-.794h.582c.008.178.186.306.422.309.254 0 .424-.145.422-.35-.002-.195-.155-.348-.414-.348h-.3zm-.004-4.699h-.604v-.035c0-.408.295-.844.958-.844.583 0 .96.326.96.756 0 .389-.257.617-.476.848l-.537.572v.03h1.054V9H1.143v-.395l.957-.99c.138-.142.293-.304.293-.508 0-.18-.147-.32-.342-.32a.33.33 0 0 0-.342.338zM2.564 5h-.635V2.924h-.031l-.598.42v-.567l.629-.443h.635z"/></symbol><symbol class="bi bi-list-stars" viewBox="0 0 16 16" id="list-stars"><path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/><path d="M2.242 2.194a.27.27 0 0 1 .516 0l.162.53c.035.115.14.194.258.194h.551c.259 0 .37.333.164.493l-.468.363a.28.28 0 0 0-.094.3l.173.569c.078.256-.213.462-.423.3l-.417-.324a.27.27 0 0 0-.328 0l-.417.323c-.21.163-.5-.043-.423-.299l.173-.57a.28.28 0 0 0-.094-.299l-.468-.363c-.206-.16-.095-.493.164-.493h.55a.27.27 0 0 0 .259-.194zm0 4a.27.27 0 0 1 .516 0l.162.53c.035.115.14.194.258.194h.551c.259 0 .37.333.164.493l-.468.363a.28.28 0 0 0-.094.3l.173.569c.078.255-.213.462-.423.3l-.417-.324a.27.27 0 0 0-.328 0l-.417.323c-.21.163-.5-.043-.423-.299l.173-.57a.28.28 0 0 0-.094-.299l-.468-.363c-.206-.16-.095-.493.164-.493h.55a.27.27 0 0 0 .259-.194zm0 4a.27.27 0 0 1 .516 0l.162.53c.035.115.14.194.258.194h.551c.259 0 .37.333.164.493l-.468.363a.28.28 0 0 0-.094.3l.173.569c.078.255-.213.462-.423.3l-.417-.324a.27.27 0 0 0-.328 0l-.417.323c-.21.163-.5-.043-.423-.299l.173-.57a.28.28 0 0 0-.094-.299l-.468-.363c-.206-.16-.095-.493.164-.493h.55a.27.27 0 0 0 .259-.194z"/></symbol><symbol class="bi bi-list-task" viewBox="0 0 16 16" id="list-task"><path fill-rule="evenodd" d="M2 2.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5zM3 3H2v1h1z"/><path d="M5 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M5.5 7a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zm0 4a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1z"/><path fill-rule="evenodd" d="M1.5 7a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5zM2 7h1v1H2zm0 3.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm1 .5H2v1h1z"/></symbol><symbol class="bi bi-list-ul" viewBox="0 0 16 16" id="list-ul"><path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2m0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2m0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-lock" viewBox="0 0 16 16" id="lock"><path d="M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2m3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2M5 8h6a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-lock-fill" viewBox="0 0 16 16" id="lock-fill"><path d="M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2m3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2"/></symbol><symbol class="bi bi-luggage" viewBox="0 0 16 16" id="luggage"><path d="M2.5 1a.5.5 0 0 0-.5.5V5h-.5A1.5 1.5 0 0 0 0 6.5v7a1.5 1.5 0 0 0 1 1.415v.335a.75.75 0 0 0 1.5 0V15H4v-1H1.5a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5V7h1v-.5A1.5 1.5 0 0 0 6.5 5H6V1.5a.5.5 0 0 0-.5-.5zM5 5H3V2h2z"/><path d="M3 7.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0zM11 6a1.5 1.5 0 0 1 1.5 1.5V8h2A1.5 1.5 0 0 1 16 9.5v5a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 5 14.5v-5A1.5 1.5 0 0 1 6.5 8h2v-.5A1.5 1.5 0 0 1 10 6zM9.5 7.5V8h2v-.5A.5.5 0 0 0 11 7h-1a.5.5 0 0 0-.5.5M6 9.5v5a.5.5 0 0 0 .5.5H7V9h-.5a.5.5 0 0 0-.5.5m7 5.5V9H8v6zm1.5 0a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5H14v6z"/></symbol><symbol class="bi bi-luggage-fill" viewBox="0 0 16 16" id="luggage-fill"><path d="M2 1.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5V5h.5A1.5 1.5 0 0 1 8 6.5V7H7v-.5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5H4v1H2.5v.25a.75.75 0 0 1-1.5 0v-.335A1.5 1.5 0 0 1 0 13.5v-7A1.5 1.5 0 0 1 1.5 5H2zM3 5h2V2H3z"/><path d="M2.5 7a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-1 0v-5a.5.5 0 0 1 .5-.5m10 1v-.5A1.5 1.5 0 0 0 11 6h-1a1.5 1.5 0 0 0-1.5 1.5V8H8v8h5V8zM10 7h1a.5.5 0 0 1 .5.5V8h-2v-.5A.5.5 0 0 1 10 7M5 9.5A1.5 1.5 0 0 1 6.5 8H7v8h-.5A1.5 1.5 0 0 1 5 14.5zm9 6.5V8h.5A1.5 1.5 0 0 1 16 9.5v5a1.5 1.5 0 0 1-1.5 1.5z"/></symbol><symbol class="bi bi-lungs" viewBox="0 0 16 16" id="lungs"><path d="M8.5 1.5a.5.5 0 1 0-1 0v5.243L7 7.1V4.72C7 3.77 6.23 3 5.28 3c-.524 0-1.023.27-1.443.592-.431.332-.847.773-1.216 1.229-.736.908-1.347 1.946-1.58 2.48-.176.405-.393 1.16-.556 2.011-.165.857-.283 1.857-.241 2.759.04.867.233 1.79.838 2.33.67.6 1.622.556 2.741-.004l1.795-.897A2.5 2.5 0 0 0 7 11.264V10.5a.5.5 0 0 0-1 0v.764a1.5 1.5 0 0 1-.83 1.342l-1.794.897c-.978.489-1.415.343-1.628.152-.28-.25-.467-.801-.505-1.63-.037-.795.068-1.71.224-2.525.157-.82.357-1.491.491-1.8.19-.438.75-1.4 1.44-2.25.342-.422.703-.799 1.049-1.065.358-.276.639-.385.833-.385a.72.72 0 0 1 .72.72v3.094l-1.79 1.28a.5.5 0 0 0 .58.813L8 7.614l3.21 2.293a.5.5 0 1 0 .58-.814L10 7.814V4.72a.72.72 0 0 1 .72-.72c.194 0 .475.11.833.385.346.266.706.643 1.05 1.066.688.85 1.248 1.811 1.439 2.249.134.309.334.98.491 1.8.156.814.26 1.73.224 2.525-.038.829-.224 1.38-.505 1.63-.213.19-.65.337-1.628-.152l-1.795-.897A1.5 1.5 0 0 1 10 11.264V10.5a.5.5 0 0 0-1 0v.764a2.5 2.5 0 0 0 1.382 2.236l1.795.897c1.12.56 2.07.603 2.741.004.605-.54.798-1.463.838-2.33.042-.902-.076-1.902-.24-2.759-.164-.852-.38-1.606-.558-2.012-.232-.533-.843-1.571-1.579-2.479-.37-.456-.785-.897-1.216-1.229C11.743 3.27 11.244 3 10.72 3 9.77 3 9 3.77 9 4.72V7.1l-.5-.357z"/></symbol><symbol class="bi bi-lungs-fill" viewBox="0 0 16 16" id="lungs-fill"><path d="M8 1a.5.5 0 0 1 .5.5v5.243L9 7.1V4.72C9 3.77 9.77 3 10.72 3c.524 0 1.023.27 1.443.592.431.332.847.773 1.216 1.229.736.908 1.347 1.946 1.58 2.48.176.405.393 1.16.556 2.011.165.857.283 1.857.24 2.759-.04.867-.232 1.79-.837 2.33-.67.6-1.622.556-2.741-.004l-1.795-.897A2.5 2.5 0 0 1 9 11.264V8.329l-1-.715-1 .715V7.214c-.1 0-.202.03-.29.093l-2.5 1.786a.5.5 0 1 0 .58.814L7 8.329v2.935A2.5 2.5 0 0 1 5.618 13.5l-1.795.897c-1.12.56-2.07.603-2.741.004-.605-.54-.798-1.463-.838-2.33-.042-.902.076-1.902.24-2.759.164-.852.38-1.606.558-2.012.232-.533.843-1.571 1.579-2.479.37-.456.785-.897 1.216-1.229C4.257 3.27 4.756 3 5.28 3 6.23 3 7 3.77 7 4.72V7.1l.5-.357V1.5A.5.5 0 0 1 8 1m3.21 8.907a.5.5 0 1 0 .58-.814l-2.5-1.786A.5.5 0 0 0 9 7.214V8.33z"/></symbol><symbol class="bi bi-magic" viewBox="0 0 16 16" id="magic"><path d="M9.5 2.672a.5.5 0 1 0 1 0V.843a.5.5 0 0 0-1 0zm4.5.035A.5.5 0 0 0 13.293 2L12 3.293a.5.5 0 1 0 .707.707zM7.293 4A.5.5 0 1 0 8 3.293L6.707 2A.5.5 0 0 0 6 2.707zm-.621 2.5a.5.5 0 1 0 0-1H4.843a.5.5 0 1 0 0 1zm8.485 0a.5.5 0 1 0 0-1h-1.829a.5.5 0 0 0 0 1zM13.293 10A.5.5 0 1 0 14 9.293L12.707 8a.5.5 0 1 0-.707.707zM9.5 11.157a.5.5 0 0 0 1 0V9.328a.5.5 0 0 0-1 0zm1.854-5.097a.5.5 0 0 0 0-.706l-.708-.708a.5.5 0 0 0-.707 0L8.646 5.94a.5.5 0 0 0 0 .707l.708.708a.5.5 0 0 0 .707 0l1.293-1.293Zm-3 3a.5.5 0 0 0 0-.706l-.708-.708a.5.5 0 0 0-.707 0L.646 13.94a.5.5 0 0 0 0 .707l.708.708a.5.5 0 0 0 .707 0z"/></symbol><symbol class="bi bi-magnet" viewBox="0 0 16 16" id="magnet"><path d="M8 1a7 7 0 0 0-7 7v3h4V8a3 3 0 0 1 6 0v3h4V8a7 7 0 0 0-7-7m7 11h-4v3h4zM5 12H1v3h4zM0 8a8 8 0 1 1 16 0v8h-6V8a2 2 0 1 0-4 0v8H0z"/></symbol><symbol class="bi bi-magnet-fill" viewBox="0 0 16 16" id="magnet-fill"><path d="M15 12h-4v3h4zM5 12H1v3h4zM0 8a8 8 0 1 1 16 0v8h-6V8a2 2 0 1 0-4 0v8H0z"/></symbol><symbol class="bi bi-mailbox" viewBox="0 0 16 16" id="mailbox"><path d="M4 4a3 3 0 0 0-3 3v6h6V7a3 3 0 0 0-3-3m0-1h8a4 4 0 0 1 4 4v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a4 4 0 0 1 4-4m2.646 1A4 4 0 0 1 8 7v6h7V7a3 3 0 0 0-3-3z"/><path d="M11.793 8.5H9v-1h5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.354-.146zM5 7c0 .552-.448 0-1 0s-1 .552-1 0a1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-mailbox-flag" viewBox="0 0 16 16" id="mailbox-flag"><path d="M10.5 8.5V3.707l.854-.853A.5.5 0 0 0 11.5 2.5v-2A.5.5 0 0 0 11 0H9.5a.5.5 0 0 0-.5.5v8zM5 7c0 .334-.164.264-.415.157C4.42 7.087 4.218 7 4 7s-.42.086-.585.157C3.164 7.264 3 7.334 3 7a1 1 0 0 1 2 0"/><path d="M4 3h4v1H6.646A4 4 0 0 1 8 7v6h7V7a3 3 0 0 0-3-3V3a4 4 0 0 1 4 4v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a4 4 0 0 1 4-4m0 1a3 3 0 0 0-3 3v6h6V7a3 3 0 0 0-3-3"/></symbol><symbol class="bi bi-mailbox2" viewBox="0 0 16 16" id="mailbox2"><path d="M9 8.5h2.793l.853.854A.5.5 0 0 0 13 9.5h1a.5.5 0 0 0 .5-.5V8a.5.5 0 0 0-.5-.5H9z"/><path d="M12 3H4a4 4 0 0 0-4 4v6a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V7a4 4 0 0 0-4-4M8 7a4 4 0 0 0-1.354-3H12a3 3 0 0 1 3 3v6H8zm-3.415.157C4.42 7.087 4.218 7 4 7s-.42.086-.585.157C3.164 7.264 3 7.334 3 7a1 1 0 0 1 2 0c0 .334-.164.264-.415.157"/></symbol><symbol class="bi bi-mailbox2-flag" viewBox="0 0 16 16" id="mailbox2-flag"><path d="M10.5 8.5V3.707l.854-.853A.5.5 0 0 0 11.5 2.5v-2A.5.5 0 0 0 11 0H9.5a.5.5 0 0 0-.5.5v8z"/><path d="M4 3h4v1H6.646A4 4 0 0 1 8 7v6h7V7a3 3 0 0 0-3-3V3a4 4 0 0 1 4 4v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a4 4 0 0 1 4-4m.585 4.157C4.836 7.264 5 7.334 5 7a1 1 0 0 0-2 0c0 .334.164.264.415.157C3.58 7.087 3.782 7 4 7s.42.086.585.157"/></symbol><symbol class="bi bi-map" viewBox="0 0 16 16" id="map"><path fill-rule="evenodd" d="M15.817.113A.5.5 0 0 1 16 .5v14a.5.5 0 0 1-.402.49l-5 1a.5.5 0 0 1-.196 0L5.5 15.01l-4.902.98A.5.5 0 0 1 0 15.5v-14a.5.5 0 0 1 .402-.49l5-1a.5.5 0 0 1 .196 0L10.5.99l4.902-.98a.5.5 0 0 1 .415.103M10 1.91l-4-.8v12.98l4 .8zm1 12.98 4-.8V1.11l-4 .8zm-6-.8V1.11l-4 .8v12.98z"/></symbol><symbol class="bi bi-map-fill" viewBox="0 0 16 16" id="map-fill"><path fill-rule="evenodd" d="M16 .5a.5.5 0 0 0-.598-.49L10.5.99 5.598.01a.5.5 0 0 0-.196 0l-5 1A.5.5 0 0 0 0 1.5v14a.5.5 0 0 0 .598.49l4.902-.98 4.902.98a.5.5 0 0 0 .196 0l5-1A.5.5 0 0 0 16 14.5zM5 14.09V1.11l.5-.1.5.1v12.98l-.402-.08a.5.5 0 0 0-.196 0zm5 .8V1.91l.402.08a.5.5 0 0 0 .196 0L11 1.91v12.98l-.5.1z"/></symbol><symbol class="bi bi-markdown" viewBox="0 0 16 16" id="markdown"><path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/><path fill-rule="evenodd" d="M9.146 8.146a.5.5 0 0 1 .708 0L11.5 9.793l1.646-1.647a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 0-.708"/><path fill-rule="evenodd" d="M11.5 5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 1 .5-.5"/><path d="M3.56 11V7.01h.056l1.428 3.239h.774l1.42-3.24h.056V11h1.073V5.001h-1.2l-1.71 3.894h-.039l-1.71-3.894H2.5V11z"/></symbol><symbol class="bi bi-markdown-fill" viewBox="0 0 16 16" id="markdown-fill"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm11.5 1a.5.5 0 0 0-.5.5v3.793L9.854 8.146a.5.5 0 1 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L12 9.293V5.5a.5.5 0 0 0-.5-.5M3.56 7.01h.056l1.428 3.239h.774l1.42-3.24h.056V11h1.073V5.001h-1.2l-1.71 3.894h-.039l-1.71-3.894H2.5V11h1.06z"/></symbol><symbol class="bi bi-marker-tip" viewBox="0 0 16 16" id="marker-tip"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-4.5 6.064-1.281-4.696A.5.5 0 0 0 9.736 9H6.264a.5.5 0 0 0-.483.368l-1.28 4.696A6.97 6.97 0 0 0 8 15c1.275 0 2.47-.34 3.5-.936m.873-.598a7 7 0 1 0-8.746 0l1.19-4.36a1.5 1.5 0 0 1 1.31-1.1l1.155-3.851c.213-.713 1.223-.713 1.436 0l1.156 3.851a1.5 1.5 0 0 1 1.31 1.1z"/></symbol><symbol class="bi bi-mask" viewBox="0 0 16 16" id="mask"><path d="M6.225 1.227A7.5 7.5 0 0 1 10.5 8a7.5 7.5 0 0 1-4.275 6.773 7 7 0 1 0 0-13.546M4.187.966a8 8 0 1 1 7.627 14.069A8 8 0 0 1 4.186.964z"/></symbol><symbol class="bi bi-mastodon" viewBox="0 0 16 16" id="mastodon"><path d="M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765c0 0-2.285 1.017-2.285 4.488l-.002.662c-.004.64-.007 1.35.011 2.091.083 3.394.626 6.74 3.78 7.57 1.454.383 2.703.463 3.709.408 1.823-.1 2.847-.647 2.847-.647l-.06-1.317s-1.303.41-2.767.36c-1.45-.05-2.98-.156-3.215-1.928a4 4 0 0 1-.033-.496s1.424.346 3.228.428c1.103.05 2.137-.064 3.188-.189zm1.613-2.47H11.13v-4.08c0-.859-.364-1.295-1.091-1.295-.804 0-1.207.517-1.207 1.541v2.233H7.168V5.89c0-1.024-.403-1.541-1.207-1.541-.727 0-1.091.436-1.091 1.296v4.079H3.197V5.522q0-1.288.66-2.046c.456-.505 1.052-.764 1.793-.764.856 0 1.504.328 1.933.983L8 4.39l.417-.695c.429-.655 1.077-.983 1.934-.983.74 0 1.336.259 1.791.764q.662.757.661 2.046z"/></symbol><symbol class="bi bi-medium" viewBox="0 0 16 16" id="medium"><path d="M9.025 8c0 2.485-2.02 4.5-4.513 4.5A4.506 4.506 0 0 1 0 8c0-2.486 2.02-4.5 4.512-4.5A4.506 4.506 0 0 1 9.025 8m4.95 0c0 2.34-1.01 4.236-2.256 4.236S9.463 10.339 9.463 8c0-2.34 1.01-4.236 2.256-4.236S13.975 5.661 13.975 8M16 8c0 2.096-.355 3.795-.794 3.795-.438 0-.793-1.7-.793-3.795 0-2.096.355-3.795.794-3.795.438 0 .793 1.699.793 3.795"/></symbol><symbol class="bi bi-megaphone" viewBox="0 0 16 16" id="megaphone"><path d="M13 2.5a1.5 1.5 0 0 1 3 0v11a1.5 1.5 0 0 1-3 0v-.214c-2.162-1.241-4.49-1.843-6.912-2.083l.405 2.712A1 1 0 0 1 5.51 15.1h-.548a1 1 0 0 1-.916-.599l-1.85-3.49-.202-.003A2.014 2.014 0 0 1 0 9V7a2.02 2.02 0 0 1 1.992-2.013 75 75 0 0 0 2.483-.075c3.043-.154 6.148-.849 8.525-2.199zm1 0v11a.5.5 0 0 0 1 0v-11a.5.5 0 0 0-1 0m-1 1.35c-2.344 1.205-5.209 1.842-8 2.033v4.233q.27.015.537.036c2.568.189 5.093.744 7.463 1.993zm-9 6.215v-4.13a95 95 0 0 1-1.992.052A1.02 1.02 0 0 0 1 7v2c0 .55.448 1.002 1.006 1.009A61 61 0 0 1 4 10.065m-.657.975 1.609 3.037.01.024h.548l-.002-.014-.443-2.966a68 68 0 0 0-1.722-.082z"/></symbol><symbol class="bi bi-megaphone-fill" viewBox="0 0 16 16" id="megaphone-fill"><path d="M13 2.5a1.5 1.5 0 0 1 3 0v11a1.5 1.5 0 0 1-3 0zm-1 .724c-2.067.95-4.539 1.481-7 1.656v6.237a25 25 0 0 1 1.088.085c2.053.204 4.038.668 5.912 1.56zm-8 7.841V4.934c-.68.027-1.399.043-2.008.053A2.02 2.02 0 0 0 0 7v2c0 1.106.896 1.996 1.994 2.009l.496.008a64 64 0 0 1 1.51.048m1.39 1.081q.428.032.85.078l.253 1.69a1 1 0 0 1-.983 1.187h-.548a1 1 0 0 1-.916-.599l-1.314-2.48a66 66 0 0 1 1.692.064q.491.026.966.06"/></symbol><symbol class="bi bi-memory" viewBox="0 0 16 16" id="memory"><path d="M1 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4.586a1 1 0 0 0 .707-.293l.353-.353a.5.5 0 0 1 .708 0l.353.353a1 1 0 0 0 .707.293H15a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm.5 1h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5m5 0h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5m4.5.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zM2 10v2H1v-2zm2 0v2H3v-2zm2 0v2H5v-2zm3 0v2H8v-2zm2 0v2h-1v-2zm2 0v2h-1v-2zm2 0v2h-1v-2z"/></symbol><symbol class="bi bi-menu-app" viewBox="0 0 16 16" id="menu-app"><path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h2A1.5 1.5 0 0 1 5 1.5v2A1.5 1.5 0 0 1 3.5 5h-2A1.5 1.5 0 0 1 0 3.5zM1.5 1a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-menu-app-fill" viewBox="0 0 16 16" id="menu-app-fill"><path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h2A1.5 1.5 0 0 1 5 1.5v2A1.5 1.5 0 0 1 3.5 5h-2A1.5 1.5 0 0 1 0 3.5zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-menu-button" viewBox="0 0 16 16" id="menu-button"><path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h8A1.5 1.5 0 0 1 11 1.5v2A1.5 1.5 0 0 1 9.5 5h-8A1.5 1.5 0 0 1 0 3.5zM1.5 1a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5z"/><path d="m7.823 2.823-.396-.396A.25.25 0 0 1 7.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0M0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-menu-button-fill" viewBox="0 0 16 16" id="menu-button-fill"><path d="M1.5 0A1.5 1.5 0 0 0 0 1.5v2A1.5 1.5 0 0 0 1.5 5h8A1.5 1.5 0 0 0 11 3.5v-2A1.5 1.5 0 0 0 9.5 0zm5.927 2.427A.25.25 0 0 1 7.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-menu-button-wide" viewBox="0 0 16 16" id="menu-button-wide"><path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v2A1.5 1.5 0 0 1 14.5 5h-13A1.5 1.5 0 0 1 0 3.5zM1.5 1a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5z"/><path d="M2 2.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m10.823.323-.396-.396A.25.25 0 0 1 12.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0M0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-menu-button-wide-fill" viewBox="0 0 16 16" id="menu-button-wide-fill"><path d="M1.5 0A1.5 1.5 0 0 0 0 1.5v2A1.5 1.5 0 0 0 1.5 5h13A1.5 1.5 0 0 0 16 3.5v-2A1.5 1.5 0 0 0 14.5 0zm1 2h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1m9.927.427A.25.25 0 0 1 12.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-menu-down" viewBox="0 0 16 16" id="menu-down"><path d="M7.646.146a.5.5 0 0 1 .708 0L10.207 2H14a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h3.793zM1 7v3h14V7zm14-1V4a1 1 0 0 0-1-1h-3.793a1 1 0 0 1-.707-.293L8 1.207l-1.5 1.5A1 1 0 0 1 5.793 3H2a1 1 0 0 0-1 1v2zm0 5H1v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM2 4.5a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-menu-up" viewBox="0 0 16 16" id="menu-up"><path d="M7.646 15.854a.5.5 0 0 0 .708 0L10.207 14H14a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3.793zM1 9V6h14v3zm14 1v2a1 1 0 0 1-1 1h-3.793a1 1 0 0 0-.707.293l-1.5 1.5-1.5-1.5A1 1 0 0 0 5.793 13H2a1 1 0 0 1-1-1v-2zm0-5H1V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1zM2 11.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 0-1h-8a.5.5 0 0 0-.5.5m0-4a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 0-1h-11a.5.5 0 0 0-.5.5m0-4a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 0-1h-6a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-messenger" viewBox="0 0 16 16" id="messenger"><path d="M0 7.76C0 3.301 3.493 0 8 0s8 3.301 8 7.76-3.493 7.76-8 7.76c-.81 0-1.586-.107-2.316-.307a.64.64 0 0 0-.427.03l-1.588.702a.64.64 0 0 1-.898-.566l-.044-1.423a.64.64 0 0 0-.215-.456C.956 12.108 0 10.092 0 7.76m5.546-1.459-2.35 3.728c-.225.358.214.761.551.506l2.525-1.916a.48.48 0 0 1 .578-.002l1.869 1.402a1.2 1.2 0 0 0 1.735-.32l2.35-3.728c.226-.358-.214-.761-.551-.506L9.728 7.381a.48.48 0 0 1-.578.002L7.281 5.98a1.2 1.2 0 0 0-1.735.32z"/></symbol><symbol class="bi bi-meta" viewBox="0 0 16 16" id="meta"><path fill-rule="evenodd" d="M8.217 5.243C9.145 3.988 10.171 3 11.483 3 13.96 3 16 6.153 16.001 9.907c0 2.29-.986 3.725-2.757 3.725-1.543 0-2.395-.866-3.924-3.424l-.667-1.123-.118-.197a55 55 0 0 0-.53-.877l-1.178 2.08c-1.673 2.925-2.615 3.541-3.923 3.541C1.086 13.632 0 12.217 0 9.973 0 6.388 1.995 3 4.598 3q.477-.001.924.122c.31.086.611.22.913.407.577.359 1.154.915 1.782 1.714m1.516 2.224q-.378-.614-.727-1.133L9 6.326c.845-1.305 1.543-1.954 2.372-1.954 1.723 0 3.102 2.537 3.102 5.653 0 1.188-.39 1.877-1.195 1.877-.773 0-1.142-.51-2.61-2.87zM4.846 4.756c.725.1 1.385.634 2.34 2.001A212 212 0 0 0 5.551 9.3c-1.357 2.126-1.826 2.603-2.581 2.603-.777 0-1.24-.682-1.24-1.9 0-2.602 1.298-5.264 2.846-5.264q.136 0 .27.018Z"/></symbol><symbol class="bi bi-mic" viewBox="0 0 16 16" id="mic"><path d="M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5"/><path d="M10 8a2 2 0 1 1-4 0V3a2 2 0 1 1 4 0zM8 0a3 3 0 0 0-3 3v5a3 3 0 0 0 6 0V3a3 3 0 0 0-3-3"/></symbol><symbol class="bi bi-mic-fill" viewBox="0 0 16 16" id="mic-fill"><path d="M5 3a3 3 0 0 1 6 0v5a3 3 0 0 1-6 0z"/><path d="M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-mic-mute" viewBox="0 0 16 16" id="mic-mute"><path d="M13 8c0 .564-.094 1.107-.266 1.613l-.814-.814A4 4 0 0 0 12 8V7a.5.5 0 0 1 1 0zm-5 4c.818 0 1.578-.245 2.212-.667l.718.719a5 5 0 0 1-2.43.923V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 1 0v1a4 4 0 0 0 4 4m3-9v4.879l-1-1V3a2 2 0 0 0-3.997-.118l-.845-.845A3.001 3.001 0 0 1 11 3"/><path d="m9.486 10.607-.748-.748A2 2 0 0 1 6 8v-.878l-1-1V8a3 3 0 0 0 4.486 2.607m-7.84-9.253 12 12 .708-.708-12-12z"/></symbol><symbol class="bi bi-mic-mute-fill" viewBox="0 0 16 16" id="mic-mute-fill"><path d="M13 8c0 .564-.094 1.107-.266 1.613l-.814-.814A4 4 0 0 0 12 8V7a.5.5 0 0 1 1 0zm-5 4c.818 0 1.578-.245 2.212-.667l.718.719a5 5 0 0 1-2.43.923V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 1 0v1a4 4 0 0 0 4 4m3-9v4.879L5.158 2.037A3.001 3.001 0 0 1 11 3"/><path d="M9.486 10.607 5 6.12V8a3 3 0 0 0 4.486 2.607m-7.84-9.253 12 12 .708-.708-12-12z"/></symbol><symbol class="bi bi-microsoft" viewBox="0 0 16 16" id="microsoft"><path d="M7.462 0H0v7.19h7.462zM16 0H8.538v7.19H16zM7.462 8.211H0V16h7.462zm8.538 0H8.538V16H16z"/></symbol><symbol class="bi bi-microsoft-teams" viewBox="0 0 16 16" id="microsoft-teams"><path d="M9.186 4.797a2.42 2.42 0 1 0-2.86-2.448h1.178c.929 0 1.682.753 1.682 1.682zm-4.295 7.738h2.613c.929 0 1.682-.753 1.682-1.682V5.58h2.783a.7.7 0 0 1 .682.716v4.294a4.197 4.197 0 0 1-4.093 4.293c-1.618-.04-3-.99-3.667-2.35Zm10.737-9.372a1.674 1.674 0 1 1-3.349 0 1.674 1.674 0 0 1 3.349 0m-2.238 9.488-.12-.002a5.2 5.2 0 0 0 .381-2.07V6.306a1.7 1.7 0 0 0-.15-.725h1.792c.39 0 .707.317.707.707v3.765a2.6 2.6 0 0 1-2.598 2.598z"/><path d="M.682 3.349h6.822c.377 0 .682.305.682.682v6.822a.68.68 0 0 1-.682.682H.682A.68.68 0 0 1 0 10.853V4.03c0-.377.305-.682.682-.682Zm5.206 2.596v-.72h-3.59v.72h1.357V9.66h.87V5.945z"/></symbol><symbol class="bi bi-minecart" viewBox="0 0 16 16" id="minecart"><path d="M4 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2m0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4m8-1a1 1 0 1 1 0-2 1 1 0 0 1 0 2m0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4M.115 3.18A.5.5 0 0 1 .5 3h15a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 14 12H2a.5.5 0 0 1-.491-.408l-1.5-8a.5.5 0 0 1 .106-.411zm.987.82 1.313 7h11.17l1.313-7z"/></symbol><symbol class="bi bi-minecart-loaded" viewBox="0 0 16 16" id="minecart-loaded"><path d="M4 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2m0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4m8-1a1 1 0 1 1 0-2 1 1 0 0 1 0 2m0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4M.115 3.18A.5.5 0 0 1 .5 3h15a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 14 12H2a.5.5 0 0 1-.491-.408l-1.5-8a.5.5 0 0 1 .106-.411zm.987.82 1.313 7h11.17l1.313-7z"/><path fill-rule="evenodd" d="M6 1a2.498 2.498 0 0 1 4 0c.818 0 1.545.394 2 1 .67 0 1.552.57 2 1h-2c-.314 0-.611-.15-.8-.4-.274-.365-.71-.6-1.2-.6-.314 0-.611-.15-.8-.4a1.497 1.497 0 0 0-2.4 0c-.189.25-.486.4-.8.4-.507 0-.955.251-1.228.638q-.136.194-.308.362H3c.13-.147.401-.432.562-.545a1.6 1.6 0 0 0 .393-.393A2.5 2.5 0 0 1 6 1"/></symbol><symbol class="bi bi-modem" viewBox="0 0 16 16" id="modem"><path d="M5.5 1.5A1.5 1.5 0 0 1 7 0h2a1.5 1.5 0 0 1 1.5 1.5v11a1.5 1.5 0 0 1-1.404 1.497c.35.305.872.678 1.628 1.056A.5.5 0 0 1 10.5 16h-5a.5.5 0 0 1-.224-.947c.756-.378 1.277-.75 1.628-1.056A1.5 1.5 0 0 1 5.5 12.5zM7 1a.5.5 0 0 0-.5.5v11a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-11A.5.5 0 0 0 9 1z"/><path d="M8.5 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 2a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 2a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 2a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-modem-fill" viewBox="0 0 16 16" id="modem-fill"><path d="M7 0a1.5 1.5 0 0 0-1.5 1.5v11a1.5 1.5 0 0 0 1.404 1.497c-.35.305-.872.678-1.628 1.056A.5.5 0 0 0 5.5 16h5a.5.5 0 0 0 .224-.947c-.756-.378-1.278-.75-1.628-1.056A1.5 1.5 0 0 0 10.5 12.5v-11A1.5 1.5 0 0 0 9 0zm1 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m0 2a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m.5 1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M8 9a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1"/></symbol><symbol class="bi bi-moisture" viewBox="0 0 16 16" id="moisture"><path d="M13.5 0a.5.5 0 0 0 0 1H15v2.75h-.5a.5.5 0 0 0 0 1h.5V7.5h-1.5a.5.5 0 0 0 0 1H15v2.75h-.5a.5.5 0 0 0 0 1h.5V15h-1.5a.5.5 0 0 0 0 1h2a.5.5 0 0 0 .5-.5V.5a.5.5 0 0 0-.5-.5zM7 1.5l.364-.343a.5.5 0 0 0-.728 0l-.002.002-.006.007-.022.023-.08.088a29 29 0 0 0-1.274 1.517c-.769.983-1.714 2.325-2.385 3.727C2.368 7.564 2 8.682 2 9.733 2 12.614 4.212 15 7 15s5-2.386 5-5.267c0-1.05-.368-2.169-.867-3.212-.671-1.402-1.616-2.744-2.385-3.727a29 29 0 0 0-1.354-1.605l-.022-.023-.006-.007-.002-.001zm0 0-.364-.343zm-.016.766L7 2.247l.016.019c.24.274.572.667.944 1.144.611.781 1.32 1.776 1.901 2.827H4.14c.58-1.051 1.29-2.046 1.9-2.827.373-.477.706-.87.945-1.144zM3 9.733c0-.755.244-1.612.638-2.496h6.724c.395.884.638 1.741.638 2.496C11 12.117 9.182 14 7 14s-4-1.883-4-4.267"/></symbol><symbol class="bi bi-moon" viewBox="0 0 16 16" id="moon"><path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278M4.858 1.311A7.27 7.27 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.32 7.32 0 0 0 5.205-2.162q-.506.063-1.029.063c-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286"/></symbol><symbol class="bi bi-moon-fill" viewBox="0 0 16 16" id="moon-fill"><path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278"/></symbol><symbol class="bi bi-moon-stars" viewBox="0 0 16 16" id="moon-stars"><path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278M4.858 1.311A7.27 7.27 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.32 7.32 0 0 0 5.205-2.162q-.506.063-1.029.063c-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286"/><path d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.73 1.73 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.73 1.73 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.73 1.73 0 0 0 1.097-1.097zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.16 1.16 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.16 1.16 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732z"/></symbol><symbol class="bi bi-moon-stars-fill" viewBox="0 0 16 16" id="moon-stars-fill"><path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278"/><path d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.73 1.73 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.73 1.73 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.73 1.73 0 0 0 1.097-1.097zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.16 1.16 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.16 1.16 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732z"/></symbol><symbol class="bi bi-mortarboard" viewBox="0 0 16 16" id="mortarboard"><path d="M8.211 2.047a.5.5 0 0 0-.422 0l-7.5 3.5a.5.5 0 0 0 .025.917l7.5 3a.5.5 0 0 0 .372 0L14 7.14V13a1 1 0 0 0-1 1v2h3v-2a1 1 0 0 0-1-1V6.739l.686-.275a.5.5 0 0 0 .025-.917zM8 8.46 1.758 5.965 8 3.052l6.242 2.913z"/><path d="M4.176 9.032a.5.5 0 0 0-.656.327l-.5 1.7a.5.5 0 0 0 .294.605l4.5 1.8a.5.5 0 0 0 .372 0l4.5-1.8a.5.5 0 0 0 .294-.605l-.5-1.7a.5.5 0 0 0-.656-.327L8 10.466zm-.068 1.873.22-.748 3.496 1.311a.5.5 0 0 0 .352 0l3.496-1.311.22.748L8 12.46z"/></symbol><symbol class="bi bi-mortarboard-fill" viewBox="0 0 16 16" id="mortarboard-fill"><path d="M8.211 2.047a.5.5 0 0 0-.422 0l-7.5 3.5a.5.5 0 0 0 .025.917l7.5 3a.5.5 0 0 0 .372 0L14 7.14V13a1 1 0 0 0-1 1v2h3v-2a1 1 0 0 0-1-1V6.739l.686-.275a.5.5 0 0 0 .025-.917z"/><path d="M4.176 9.032a.5.5 0 0 0-.656.327l-.5 1.7a.5.5 0 0 0 .294.605l4.5 1.8a.5.5 0 0 0 .372 0l4.5-1.8a.5.5 0 0 0 .294-.605l-.5-1.7a.5.5 0 0 0-.656-.327L8 10.466z"/></symbol><symbol class="bi bi-motherboard" viewBox="0 0 16 16" id="motherboard"><path d="M11.5 2a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5m2 0a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5m-10 8a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zM5 3a1 1 0 0 0-1 1h-.5a.5.5 0 0 0 0 1H4v1h-.5a.5.5 0 0 0 0 1H4a1 1 0 0 0 1 1v.5a.5.5 0 0 0 1 0V8h1v.5a.5.5 0 0 0 1 0V8a1 1 0 0 0 1-1h.5a.5.5 0 0 0 0-1H9V5h.5a.5.5 0 0 0 0-1H9a1 1 0 0 0-1-1v-.5a.5.5 0 0 0-1 0V3H6v-.5a.5.5 0 0 0-1 0zm0 1h3v3H5zm6.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M1 2a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-2H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 9H1V8H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6H1V5H.5a.5.5 0 0 1-.5-.5v-2A.5.5 0 0 1 .5 2zm1 11a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1z"/></symbol><symbol class="bi bi-motherboard-fill" viewBox="0 0 16 16" id="motherboard-fill"><path d="M5 7h3V4H5z"/><path d="M1 2a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-2H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 9H1V8H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6H1V5H.5a.5.5 0 0 1-.5-.5v-2A.5.5 0 0 1 .5 2zm11 .5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zm2 0a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zM3.5 10a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zM4 4h-.5a.5.5 0 0 0 0 1H4v1h-.5a.5.5 0 0 0 0 1H4a1 1 0 0 0 1 1v.5a.5.5 0 0 0 1 0V8h1v.5a.5.5 0 0 0 1 0V8a1 1 0 0 0 1-1h.5a.5.5 0 0 0 0-1H9V5h.5a.5.5 0 0 0 0-1H9a1 1 0 0 0-1-1v-.5a.5.5 0 0 0-1 0V3H6v-.5a.5.5 0 0 0-1 0V3a1 1 0 0 0-1 1m7 7.5v1a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-mouse" viewBox="0 0 16 16" id="mouse"><path d="M8 3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 3m4 8a4 4 0 0 1-8 0V5a4 4 0 1 1 8 0zM8 0a5 5 0 0 0-5 5v6a5 5 0 0 0 10 0V5a5 5 0 0 0-5-5"/></symbol><symbol class="bi bi-mouse-fill" viewBox="0 0 16 16" id="mouse-fill"><path d="M3 5a5 5 0 0 1 10 0v6a5 5 0 0 1-10 0zm5.5-1.5a.5.5 0 0 0-1 0v2a.5.5 0 0 0 1 0z"/></symbol><symbol class="bi bi-mouse2" viewBox="0 0 16 16" id="mouse2"><path d="M3 5.188C3 2.341 5.22 0 8 0s5 2.342 5 5.188v5.625C13 13.658 10.78 16 8 16s-5-2.342-5-5.188V5.189zm4.5-4.155C5.541 1.289 4 3.035 4 5.188V5.5h3.5zm1 0V5.5H12v-.313c0-2.152-1.541-3.898-3.5-4.154M12 6.5H4v4.313C4 13.145 5.81 15 8 15s4-1.855 4-4.188z"/></symbol><symbol class="bi bi-mouse2-fill" viewBox="0 0 16 16" id="mouse2-fill"><path d="M7.5.026C4.958.286 3 2.515 3 5.188V5.5h4.5zm1 0V5.5H13v-.312C13 2.515 11.042.286 8.5.026M13 6.5H3v4.313C3 13.658 5.22 16 8 16s5-2.342 5-5.188z"/></symbol><symbol class="bi bi-mouse3" viewBox="0 0 16 16" id="mouse3"><path d="M7 0q-.891.002-1.527.463c-.418.302-.717.726-.93 1.208C4.123 2.619 4 3.879 4 5.187v.504L3.382 6A2.5 2.5 0 0 0 2 8.236v2.576C2 13.659 4.22 16 7 16h2c2.78 0 5-2.342 5-5.188V5.186c0-1.13-.272-2.044-.748-2.772-.474-.726-1.13-1.235-1.849-1.59C9.981.123 8.26 0 7 0m2.5 6.099V1.232c.51.11 1.008.267 1.46.49.596.293 1.099.694 1.455 1.24.355.543.585 1.262.585 2.225v1.69zm-1-5.025v4.803L5 5.099c.006-1.242.134-2.293.457-3.024.162-.366.363-.63.602-.801C6.292 1.105 6.593 1 7 1c.468 0 .98.018 1.5.074M5 6.124 13 7.9v2.912C13 13.145 11.19 15 9 15H7c-2.19 0-4-1.855-4-4.188V8.236a1.5 1.5 0 0 1 .83-1.342l.187-.093c.01.265.024.58.047.92.062.938.19 2.12.462 2.937a.5.5 0 1 0 .948-.316c-.227-.683-.35-1.75-.413-2.688a29 29 0 0 1-.06-1.528v-.002z"/></symbol><symbol class="bi bi-mouse3-fill" viewBox="0 0 16 16" id="mouse3-fill"><path d="M8.5.069A15 15 0 0 0 7 0q-.891.002-1.527.463c-.418.302-.717.726-.93 1.208-.386.873-.522 2.01-.54 3.206l4.497 1zM3.71 5.836 3.381 6A2.5 2.5 0 0 0 2 8.236v2.576C2 13.659 4.22 16 7 16h2c2.78 0 5-2.342 5-5.188V8.123l-9-2v.003l.008.353c.007.3.023.715.053 1.175.063.937.186 2.005.413 2.688a.5.5 0 1 1-.948.316c-.273-.817-.4-2-.462-2.937A30 30 0 0 1 4 6.003q0-.05.01-.1zM14 7.1V5.187c0-1.13-.272-2.044-.748-2.772-.474-.726-1.13-1.235-1.849-1.59A7.5 7.5 0 0 0 9.5.212v5.887l4.5 1z"/></symbol><symbol class="bi bi-music-note" viewBox="0 0 16 16" id="music-note"><path d="M9 13c0 1.105-1.12 2-2.5 2S4 14.105 4 13s1.12-2 2.5-2 2.5.895 2.5 2"/><path fill-rule="evenodd" d="M9 3v10H8V3z"/><path d="M8 2.82a1 1 0 0 1 .804-.98l3-.6A1 1 0 0 1 13 2.22V4L8 5z"/></symbol><symbol class="bi bi-music-note-beamed" viewBox="0 0 16 16" id="music-note-beamed"><path d="M6 13c0 1.105-1.12 2-2.5 2S1 14.105 1 13s1.12-2 2.5-2 2.5.896 2.5 2m9-2c0 1.105-1.12 2-2.5 2s-2.5-.895-2.5-2 1.12-2 2.5-2 2.5.895 2.5 2"/><path fill-rule="evenodd" d="M14 11V2h1v9zM6 3v10H5V3z"/><path d="M5 2.905a1 1 0 0 1 .9-.995l8-.8a1 1 0 0 1 1.1.995V3L5 4z"/></symbol><symbol class="bi bi-music-note-list" viewBox="0 0 16 16" id="music-note-list"><path d="M12 13c0 1.105-1.12 2-2.5 2S7 14.105 7 13s1.12-2 2.5-2 2.5.895 2.5 2"/><path fill-rule="evenodd" d="M12 3v10h-1V3z"/><path d="M11 2.82a1 1 0 0 1 .804-.98l3-.6A1 1 0 0 1 16 2.22V4l-5 1z"/><path fill-rule="evenodd" d="M0 11.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m0-4A.5.5 0 0 1 .5 7H8a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m0-4A.5.5 0 0 1 .5 3H8a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-music-player" viewBox="0 0 16 16" id="music-player"><path d="M4 3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1zm1 0v3h6V3zm3 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/><path d="M11 11a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-3 2a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-music-player-fill" viewBox="0 0 16 16" id="music-player-fill"><path d="M8 12a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm1 2h6a1 1 0 0 1 1 1v2.5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1m3 12a3 3 0 1 1 0-6 3 3 0 0 1 0 6"/></symbol><symbol class="bi bi-newspaper" viewBox="0 0 16 16" id="newspaper"><path d="M0 2.5A1.5 1.5 0 0 1 1.5 1h11A1.5 1.5 0 0 1 14 2.5v10.528c0 .3-.05.654-.238.972h.738a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 1 1 0v9a1.5 1.5 0 0 1-1.5 1.5H1.497A1.497 1.497 0 0 1 0 13.5zM12 14c.37 0 .654-.211.853-.441.092-.106.147-.279.147-.531V2.5a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0-.5.5v11c0 .278.223.5.497.5z"/><path d="M2 3h10v2H2zm0 3h4v3H2zm0 4h4v1H2zm0 2h4v1H2zm5-6h2v1H7zm3 0h2v1h-2zM7 8h2v1H7zm3 0h2v1h-2zm-3 2h2v1H7zm3 0h2v1h-2zm-3 2h2v1H7zm3 0h2v1h-2z"/></symbol><symbol class="bi bi-nintendo-switch" viewBox="0 0 16 16" id="nintendo-switch"><path d="M9.34 8.005c0-4.38.01-7.972.023-7.982C9.373.01 10.036 0 10.831 0c1.153 0 1.51.01 1.743.05 1.73.298 3.045 1.6 3.373 3.326.046.242.053.809.053 4.61 0 4.06.005 4.537-.123 4.976-.022.076-.048.15-.08.242a4.14 4.14 0 0 1-3.426 2.767c-.317.033-2.889.046-2.978.013-.05-.02-.053-.752-.053-7.979m4.675.269a1.62 1.62 0 0 0-1.113-1.034 1.61 1.61 0 0 0-1.938 1.073 1.9 1.9 0 0 0-.014.935 1.63 1.63 0 0 0 1.952 1.107c.51-.136.908-.504 1.11-1.028.11-.285.113-.742.003-1.053M3.71 3.317c-.208.04-.526.199-.695.348-.348.301-.52.729-.494 1.232.013.262.03.332.136.544.155.321.39.556.712.715.222.11.278.123.567.133.261.01.354 0 .53-.06.719-.242 1.153-.94 1.03-1.656-.142-.852-.95-1.422-1.786-1.256"/><path d="M3.425.053a4.14 4.14 0 0 0-3.28 3.015C0 3.628-.01 3.956.005 8.3c.01 3.99.014 4.082.08 4.39.368 1.66 1.548 2.844 3.224 3.235.22.05.497.06 2.29.07 1.856.012 2.048.009 2.097-.04.05-.05.053-.69.053-7.94 0-5.374-.01-7.906-.033-7.952-.033-.06-.09-.063-2.03-.06-1.578.004-2.052.014-2.26.05Zm3 14.665-1.35-.016c-1.242-.013-1.375-.02-1.623-.083a2.81 2.81 0 0 1-2.08-2.167c-.074-.335-.074-8.579-.004-8.907a2.85 2.85 0 0 1 1.716-2.05c.438-.176.64-.196 2.058-.2l1.282-.003v13.426Z"/></symbol><symbol class="bi bi-node-minus" viewBox="0 0 16 16" id="node-minus"><path fill-rule="evenodd" d="M11 4a4 4 0 1 0 0 8 4 4 0 0 0 0-8M6.025 7.5a5 5 0 1 1 0 1H4A1.5 1.5 0 0 1 2.5 10h-1A1.5 1.5 0 0 1 0 8.5v-1A1.5 1.5 0 0 1 1.5 6h1A1.5 1.5 0 0 1 4 7.5zM1.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM8 8a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5A.5.5 0 0 1 8 8"/></symbol><symbol class="bi bi-node-minus-fill" viewBox="0 0 16 16" id="node-minus-fill"><path fill-rule="evenodd" d="M16 8a5 5 0 0 1-9.975.5H4A1.5 1.5 0 0 1 2.5 10h-1A1.5 1.5 0 0 1 0 8.5v-1A1.5 1.5 0 0 1 1.5 6h1A1.5 1.5 0 0 1 4 7.5h2.025A5 5 0 0 1 16 8m-2 0a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5A.5.5 0 0 0 14 8"/></symbol><symbol class="bi bi-node-plus" viewBox="0 0 16 16" id="node-plus"><path fill-rule="evenodd" d="M11 4a4 4 0 1 0 0 8 4 4 0 0 0 0-8M6.025 7.5a5 5 0 1 1 0 1H4A1.5 1.5 0 0 1 2.5 10h-1A1.5 1.5 0 0 1 0 8.5v-1A1.5 1.5 0 0 1 1.5 6h1A1.5 1.5 0 0 1 4 7.5zM11 5a.5.5 0 0 1 .5.5v2h2a.5.5 0 0 1 0 1h-2v2a.5.5 0 0 1-1 0v-2h-2a.5.5 0 0 1 0-1h2v-2A.5.5 0 0 1 11 5M1.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-node-plus-fill" viewBox="0 0 16 16" id="node-plus-fill"><path d="M11 13a5 5 0 1 0-4.975-5.5H4A1.5 1.5 0 0 0 2.5 6h-1A1.5 1.5 0 0 0 0 7.5v1A1.5 1.5 0 0 0 1.5 10h1A1.5 1.5 0 0 0 4 8.5h2.025A5 5 0 0 0 11 13m.5-7.5v2h2a.5.5 0 0 1 0 1h-2v2a.5.5 0 0 1-1 0v-2h-2a.5.5 0 0 1 0-1h2v-2a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-noise-reduction" viewBox="0 0 16 16" id="noise-reduction"><path d="M13 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m.5-.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m-5 7a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1.5-1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1-1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1-1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1-1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1-1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-3 5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m.5-.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M1 8a7 7 0 0 1 12.83-3.875.5.5 0 1 0 .15.235q.197.322.359.667a.5.5 0 1 0 .359.932q.201.658.27 1.364a.5.5 0 1 0 .021.282 7 7 0 0 1-.091 1.592.5.5 0 1 0-.172.75 7 7 0 0 1-.418 1.091.5.5 0 0 0-.3.555 7 7 0 0 1-.296.454.5.5 0 0 0-.712.453c0 .111.036.214.098.297a7 7 0 0 1-.3.3.5.5 0 0 0-.75.614 7 7 0 0 1-.455.298.5.5 0 0 0-.555.3 7 7 0 0 1-1.092.417.5.5 0 1 0-.749.172 7 7 0 0 1-1.592.091.5.5 0 1 0-.282-.021 7 7 0 0 1-1.364-.27A.498.498 0 0 0 5.5 14a.5.5 0 0 0-.473.339 7 7 0 0 1-.668-.36A.5.5 0 0 0 5 13.5a.5.5 0 1 0-.875.33A7 7 0 0 1 1 8"/></symbol><symbol class="bi bi-nut" viewBox="0 0 16 16" id="nut"><path d="m11.42 2 3.428 6-3.428 6H4.58L1.152 8 4.58 2zM4.58 1a1 1 0 0 0-.868.504l-3.428 6a1 1 0 0 0 0 .992l3.428 6A1 1 0 0 0 4.58 15h6.84a1 1 0 0 0 .868-.504l3.429-6a1 1 0 0 0 0-.992l-3.429-6A1 1 0 0 0 11.42 1z"/><path d="M6.848 5.933a2.5 2.5 0 1 0 2.5 4.33 2.5 2.5 0 0 0-2.5-4.33m-1.78 3.915a3.5 3.5 0 1 1 6.061-3.5 3.5 3.5 0 0 1-6.062 3.5z"/></symbol><symbol class="bi bi-nut-fill" viewBox="0 0 16 16" id="nut-fill"><path d="M4.58 1a1 1 0 0 0-.868.504l-3.428 6a1 1 0 0 0 0 .992l3.428 6A1 1 0 0 0 4.58 15h6.84a1 1 0 0 0 .868-.504l3.429-6a1 1 0 0 0 0-.992l-3.429-6A1 1 0 0 0 11.42 1zm5.018 9.696a3 3 0 1 1-3-5.196 3 3 0 0 1 3 5.196"/></symbol><symbol class="bi bi-nvidia" viewBox="0 0 16 16" id="nvidia"><path d="M1.635 7.146S3.08 5.012 5.97 4.791v-.774C2.77 4.273 0 6.983 0 6.983s1.57 4.536 5.97 4.952v-.824c-3.23-.406-4.335-3.965-4.335-3.965M5.97 9.475v.753c-2.44-.435-3.118-2.972-3.118-2.972S4.023 5.958 5.97 5.747v.828h-.004c-1.021-.123-1.82.83-1.82.83s.448 1.607 1.824 2.07M6 2l-.03 2.017A7 7 0 0 1 6.252 4c3.637-.123 6.007 2.983 6.007 2.983s-2.722 3.31-5.557 3.31q-.39-.002-.732-.065v.883q.292.039.61.04c2.638 0 4.546-1.348 6.394-2.943.307.246 1.561.842 1.819 1.104-1.757 1.47-5.852 2.657-8.173 2.657a7 7 0 0 1-.65-.034V14H16l.03-12zm-.03 3.747v-.956a6 6 0 0 1 .282-.015c2.616-.082 4.332 2.248 4.332 2.248S8.73 9.598 6.743 9.598c-.286 0-.542-.046-.773-.123v-2.9c1.018.123 1.223.572 1.835 1.593L9.167 7.02s-.994-1.304-2.67-1.304a5 5 0 0 0-.527.031"/></symbol><symbol class="bi bi-nvme" viewBox="0 0 16 16" id="nvme"><path d="M1.5 4.5A.5.5 0 0 1 2 4h13.5a.5.5 0 0 1 .5.5V7a.5.5 0 0 1-.5.5.5.5 0 0 0 0 1 .5.5 0 0 1 .5.5v2.5a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5h-1A.5.5 0 0 1 0 11V7.5A.5.5 0 0 1 .5 7h1a.25.25 0 0 0 0-.5h-1A.5.5 0 0 1 0 6V5a.5.5 0 0 1 .5-.5zm1 .5a.5.5 0 0 1-.5.5h-.5a1.25 1.25 0 1 1 0 2.5H1v2.5h1a.5.5 0 0 1 .5.5H15V9.415a1.5 1.5 0 0 1 0-2.83V5z"/><path d="M4 6.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zM5 7v2h1V7zm3-.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5zM9 7v2h3V7z"/></symbol><symbol class="bi bi-nvme-fill" viewBox="0 0 16 16" id="nvme-fill"><path d="M6 7H5v2h1zm6 0H9v2h3z"/><path d="M2 4a.5.5 0 0 0-.5.5h-1A.5.5 0 0 0 0 5v1a.5.5 0 0 0 .5.5h1a.25.25 0 0 1 0 .5h-1a.5.5 0 0 0-.5.5V11a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5.5h13.5a.5.5 0 0 0 .5-.5V9a.5.5 0 0 0-.5-.5.5.5 0 0 1 0-1A.5.5 0 0 0 16 7V4.5a.5.5 0 0 0-.5-.5zm2 2.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4 0a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-octagon" viewBox="0 0 16 16" id="octagon"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/></symbol><symbol class="bi bi-octagon-fill" viewBox="0 0 16 16" id="octagon-fill"><path d="M11.107 0a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353L4.54.146A.5.5 0 0 1 4.893 0z"/></symbol><symbol class="bi bi-octagon-half" viewBox="0 0 16 16" id="octagon-half"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM8 15h2.9l4.1-4.1V5.1L10.9 1H8z"/></symbol><symbol class="bi bi-opencollective" viewBox="0 0 16 16" id="opencollective"><path fill-opacity=".4" d="M12.995 8.195c0 .937-.312 1.912-.78 2.693l1.99 1.99c.976-1.327 1.6-2.966 1.6-4.683 0-1.795-.624-3.434-1.561-4.76l-2.068 2.028c.468.781.78 1.679.78 2.732z"/><path d="M8 13.151a4.995 4.995 0 1 1 0-9.99c1.015 0 1.951.273 2.732.82l1.95-2.03a7.805 7.805 0 1 0 .04 12.449l-1.951-2.03a5.07 5.07 0 0 1-2.732.781z"/></symbol><symbol class="bi bi-optical-audio" viewBox="0 0 16 16" id="optical-audio"><path d="M8 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/><path d="M4.5 9a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0M8 6.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5"/><path d="M2 14.5a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-3.05a2.5 2.5 0 0 0 0-4.9V4.5a.5.5 0 0 0-.146-.354l-2-2A.5.5 0 0 0 11.5 2h-7a.5.5 0 0 0-.354.146l-2 2A.5.5 0 0 0 2 4.5v2.05a2.5 2.5 0 0 0 0 4.9zm1-.5v-3a.5.5 0 0 0-.5-.5 1.5 1.5 0 1 1 0-3A.5.5 0 0 0 3 7V4.707L4.707 3h6.586L13 4.707V7a.5.5 0 0 0 .5.5 1.5 1.5 0 0 1 0 3 .5.5 0 0 0-.5.5v3z"/></symbol><symbol class="bi bi-optical-audio-fill" viewBox="0 0 16 16" id="optical-audio-fill"><path d="M8 6a3 3 0 1 1 0 6 3 3 0 0 1 0-6m1 3a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/><path d="M2.5 15a.5.5 0 0 1-.5-.5v-3.05a2.5 2.5 0 0 1 0-4.9V4.5a.5.5 0 0 1 .146-.354l2-2A.5.5 0 0 1 4.5 2h7a.5.5 0 0 1 .354.146l2 2A.5.5 0 0 1 14 4.5v2.05a2.5 2.5 0 0 1 0 4.9v3.05a.5.5 0 0 1-.5.5zM8 5a4 4 0 1 0 0 8 4 4 0 0 0 0-8"/></symbol><symbol class="bi bi-option" viewBox="0 0 16 16" id="option"><path d="M1 2.5a.5.5 0 0 1 .5-.5h3.797a.5.5 0 0 1 .439.26L11 13h3.5a.5.5 0 0 1 0 1h-3.797a.5.5 0 0 1-.439-.26L5 3H1.5a.5.5 0 0 1-.5-.5m10 0a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-outlet" viewBox="0 0 16 16" id="outlet"><path d="M3.34 2.994c.275-.338.68-.494 1.074-.494h7.172c.393 0 .798.156 1.074.494.578.708 1.84 2.534 1.84 5.006s-1.262 4.297-1.84 5.006c-.276.338-.68.494-1.074.494H4.414c-.394 0-.799-.156-1.074-.494C2.762 12.297 1.5 10.472 1.5 8s1.262-4.297 1.84-5.006m1.074.506a.38.38 0 0 0-.299.126C3.599 4.259 2.5 5.863 2.5 8s1.099 3.74 1.615 4.374c.06.073.163.126.3.126h7.17c.137 0 .24-.053.3-.126.516-.633 1.615-2.237 1.615-4.374s-1.099-3.74-1.615-4.374a.38.38 0 0 0-.3-.126h-7.17z"/><path d="M6 5.5a.5.5 0 0 1 .5.5v1.5a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m4 0a.5.5 0 0 1 .5.5v1.5a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5M7 10v1h2v-1a1 1 0 0 0-2 0"/></symbol><symbol class="bi bi-p-circle" viewBox="0 0 16 16" id="p-circle"><path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.5 4.002h2.962C10.045 4.002 11 5.104 11 6.586c0 1.494-.967 2.578-2.55 2.578H6.784V12H5.5zm2.77 4.072c.893 0 1.419-.545 1.419-1.488s-.526-1.482-1.42-1.482H6.778v2.97z"/></symbol><symbol class="bi bi-p-circle-fill" viewBox="0 0 16 16" id="p-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.5 4.002V12h1.283V9.164h1.668C10.033 9.164 11 8.08 11 6.586c0-1.482-.955-2.584-2.538-2.584zm2.77 4.072c.893 0 1.419-.545 1.419-1.488s-.526-1.482-1.42-1.482H6.778v2.97z"/></symbol><symbol class="bi bi-p-square" viewBox="0 0 16 16" id="p-square"><path d="M5.5 4.002h2.962C10.045 4.002 11 5.104 11 6.586c0 1.494-.967 2.578-2.55 2.578H6.784V12H5.5zm2.77 4.072c.893 0 1.419-.545 1.419-1.488s-.526-1.482-1.42-1.482H6.778v2.97z"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-p-square-fill" viewBox="0 0 16 16" id="p-square-fill"><path d="M8.27 8.074c.893 0 1.419-.545 1.419-1.488s-.526-1.482-1.42-1.482H6.778v2.97z"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.5 4.002h2.962C10.045 4.002 11 5.104 11 6.586c0 1.494-.967 2.578-2.55 2.578H6.784V12H5.5z"/></symbol><symbol class="bi bi-paint-bucket" viewBox="0 0 16 16" id="paint-bucket"><path d="M6.192 2.78c-.458-.677-.927-1.248-1.35-1.643a3 3 0 0 0-.71-.515c-.217-.104-.56-.205-.882-.02-.367.213-.427.63-.43.896-.003.304.064.664.173 1.044.196.687.556 1.528 1.035 2.402L.752 8.22c-.277.277-.269.656-.218.918.055.283.187.593.36.903.348.627.92 1.361 1.626 2.068.707.707 1.441 1.278 2.068 1.626.31.173.62.305.903.36.262.05.64.059.918-.218l5.615-5.615c.118.257.092.512.05.939-.03.292-.068.665-.073 1.176v.123h.003a1 1 0 0 0 1.993 0H14v-.057a1 1 0 0 0-.004-.117c-.055-1.25-.7-2.738-1.86-3.494a4 4 0 0 0-.211-.434c-.349-.626-.92-1.36-1.627-2.067S8.857 3.052 8.23 2.704c-.31-.172-.62-.304-.903-.36-.262-.05-.64-.058-.918.219zM4.16 1.867c.381.356.844.922 1.311 1.632l-.704.705c-.382-.727-.66-1.402-.813-1.938a3.3 3.3 0 0 1-.131-.673q.137.09.337.274m.394 3.965c.54.852 1.107 1.567 1.607 2.033a.5.5 0 1 0 .682-.732c-.453-.422-1.017-1.136-1.564-2.027l1.088-1.088q.081.181.183.365c.349.627.92 1.361 1.627 2.068.706.707 1.44 1.278 2.068 1.626q.183.103.365.183l-4.861 4.862-.068-.01c-.137-.027-.342-.104-.608-.252-.524-.292-1.186-.8-1.846-1.46s-1.168-1.32-1.46-1.846c-.147-.265-.225-.47-.251-.607l-.01-.068zm2.87-1.935a2.4 2.4 0 0 1-.241-.561c.135.033.324.11.562.241.524.292 1.186.8 1.846 1.46.45.45.83.901 1.118 1.31a3.5 3.5 0 0 0-1.066.091 11 11 0 0 1-.76-.694c-.66-.66-1.167-1.322-1.458-1.847z"/></symbol><symbol class="bi bi-palette" viewBox="0 0 16 16" id="palette"><path d="M8 5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m4 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3M5.5 7a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m.5 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/><path d="M16 8c0 3.15-1.866 2.585-3.567 2.07C11.42 9.763 10.465 9.473 10 10c-.603.683-.475 1.819-.351 2.92C9.826 14.495 9.996 16 8 16a8 8 0 1 1 8-8m-8 7c.611 0 .654-.171.655-.176.078-.146.124-.464.07-1.119-.014-.168-.037-.37-.061-.591-.052-.464-.112-1.005-.118-1.462-.01-.707.083-1.61.704-2.314.369-.417.845-.578 1.272-.618.404-.038.812.026 1.16.104.343.077.702.186 1.025.284l.028.008c.346.105.658.199.953.266.653.148.904.083.991.024C14.717 9.38 15 9.161 15 8a7 7 0 1 0-7 7"/></symbol><symbol class="bi bi-palette-fill" viewBox="0 0 16 16" id="palette-fill"><path d="M12.433 10.07C14.133 10.585 16 11.15 16 8a8 8 0 1 0-8 8c1.996 0 1.826-1.504 1.649-3.08-.124-1.101-.252-2.237.351-2.92.465-.527 1.42-.237 2.433.07M8 5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m4.5 3a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3M5 6.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m.5 6.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></symbol><symbol class="bi bi-palette2" viewBox="0 0 16 16" id="palette2"><path d="M0 .5A.5.5 0 0 1 .5 0h5a.5.5 0 0 1 .5.5v5.277l4.147-4.131a.5.5 0 0 1 .707 0l3.535 3.536a.5.5 0 0 1 0 .708L10.261 10H15.5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H3a3 3 0 0 1-2.121-.879A3 3 0 0 1 0 13.044m6-.21 7.328-7.3-2.829-2.828L6 7.188zM4.5 13a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0M15 15v-4H9.258l-4.015 4zM0 .5v12.495zm0 12.495V13z"/></symbol><symbol class="bi bi-paperclip" viewBox="0 0 16 16" id="paperclip"><path d="M4.5 3a2.5 2.5 0 0 1 5 0v9a1.5 1.5 0 0 1-3 0V5a.5.5 0 0 1 1 0v7a.5.5 0 0 0 1 0V3a1.5 1.5 0 1 0-3 0v9a2.5 2.5 0 0 0 5 0V5a.5.5 0 0 1 1 0v7a3.5 3.5 0 1 1-7 0z"/></symbol><symbol class="bi bi-paragraph" viewBox="0 0 16 16" id="paragraph"><path d="M10.5 15a.5.5 0 0 1-.5-.5V2H9v12.5a.5.5 0 0 1-1 0V9H7a4 4 0 1 1 0-8h5.5a.5.5 0 0 1 0 1H11v12.5a.5.5 0 0 1-.5.5"/></symbol><symbol class="bi bi-pass" viewBox="0 0 16 16" id="pass"><path d="M5.5 5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/><path d="M8 2a2 2 0 0 0 2-2h2.5A1.5 1.5 0 0 1 14 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-13A1.5 1.5 0 0 1 3.5 0H6a2 2 0 0 0 2 2m0 1a3 3 0 0 1-2.83-2H3.5a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-13a.5.5 0 0 0-.5-.5h-1.67A3 3 0 0 1 8 3"/></symbol><symbol class="bi bi-pass-fill" viewBox="0 0 16 16" id="pass-fill"><path d="M10 0a2 2 0 1 1-4 0H3.5A1.5 1.5 0 0 0 2 1.5v13A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 12.5 0zM4.5 5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1m0 2h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-passport" viewBox="0 0 16 16" id="passport"><path d="M8 5a3 3 0 1 0 0 6 3 3 0 0 0 0-6M6 8a2 2 0 1 1 4 0 2 2 0 0 1-4 0m-.5 4a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/><path d="M3.232 1.776A1.5 1.5 0 0 0 2 3.252v10.95c0 .445.191.838.49 1.11.367.422.908.688 1.51.688h8a2 2 0 0 0 2-2V4a2 2 0 0 0-1-1.732v-.47A1.5 1.5 0 0 0 11.232.321l-8 1.454ZM4 3h8a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-passport-fill" viewBox="0 0 16 16" id="passport-fill"><path d="M8 6a2 2 0 1 0 0 4 2 2 0 0 0 0-4"/><path d="M2 3.252a1.5 1.5 0 0 1 1.232-1.476l8-1.454A1.5 1.5 0 0 1 13 1.797v.47A2 2 0 0 1 14 4v10a2 2 0 0 1-2 2H4a2 2 0 0 1-1.51-.688 1.5 1.5 0 0 1-.49-1.11V3.253ZM5 8a3 3 0 1 0 6 0 3 3 0 0 0-6 0m0 4.5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-patch-check" viewBox="0 0 16 16" id="patch-check"><path fill-rule="evenodd" d="M10.354 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708 0"/><path d="m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911z"/></symbol><symbol class="bi bi-patch-check-fill" viewBox="0 0 16 16" id="patch-check-fill"><path d="M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01zm.287 5.984-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708.708"/></symbol><symbol class="bi bi-patch-exclamation" viewBox="0 0 16 16" id="patch-exclamation"><path d="M7.001 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.553.553 0 0 1-1.1 0z"/><path d="m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911z"/></symbol><symbol class="bi bi-patch-exclamation-fill" viewBox="0 0 16 16" id="patch-exclamation-fill"><path d="M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01zM8 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></symbol><symbol class="bi bi-patch-minus" viewBox="0 0 16 16" id="patch-minus"><path fill-rule="evenodd" d="M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/><path d="m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911z"/></symbol><symbol class="bi bi-patch-minus-fill" viewBox="0 0 16 16" id="patch-minus-fill"><path d="M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01zM6 7.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-patch-plus" viewBox="0 0 16 16" id="patch-plus"><path fill-rule="evenodd" d="M8 5.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 .5-.5"/><path d="m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911z"/></symbol><symbol class="bi bi-patch-plus-fill" viewBox="0 0 16 16" id="patch-plus-fill"><path d="M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01zM8.5 6v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-patch-question" viewBox="0 0 16 16" id="patch-question"><path d="M8.05 9.6c.336 0 .504-.24.554-.627.04-.534.198-.815.847-1.26.673-.475 1.049-1.09 1.049-1.986 0-1.325-.92-2.227-2.262-2.227-1.02 0-1.792.492-2.1 1.29A1.7 1.7 0 0 0 6 5.48c0 .393.203.64.545.64.272 0 .455-.147.564-.51.158-.592.525-.915 1.074-.915.61 0 1.03.446 1.03 1.084 0 .563-.208.885-.822 1.325-.619.433-.926.914-.926 1.64v.111c0 .428.208.745.585.745"/><path d="m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911z"/><path d="M7.001 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/></symbol><symbol class="bi bi-patch-question-fill" viewBox="0 0 16 16" id="patch-question-fill"><path d="M5.933.87a2.89 2.89 0 0 1 4.134 0l.622.638.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01zM7.002 11a1 1 0 1 0 2 0 1 1 0 0 0-2 0m1.602-2.027c.04-.534.198-.815.846-1.26.674-.475 1.05-1.09 1.05-1.986 0-1.325-.92-2.227-2.262-2.227-1.02 0-1.792.492-2.1 1.29A1.7 1.7 0 0 0 6 5.48c0 .393.203.64.545.64.272 0 .455-.147.564-.51.158-.592.525-.915 1.074-.915.61 0 1.03.446 1.03 1.084 0 .563-.208.885-.822 1.325-.619.433-.926.914-.926 1.64v.111c0 .428.208.745.585.745.336 0 .504-.24.554-.627"/></symbol><symbol class="bi bi-pause" viewBox="0 0 16 16" id="pause"><path d="M6 3.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V4a.5.5 0 0 1 .5-.5m4 0a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V4a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-pause-btn" viewBox="0 0 16 16" id="pause-btn"><path d="M6.25 5C5.56 5 5 5.56 5 6.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C7.5 5.56 6.94 5 6.25 5m3.5 0c-.69 0-1.25.56-1.25 1.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C11 5.56 10.44 5 9.75 5"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-pause-btn-fill" viewBox="0 0 16 16" id="pause-btn-fill"><path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m6.25-7C5.56 5 5 5.56 5 6.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C7.5 5.56 6.94 5 6.25 5m3.5 0c-.69 0-1.25.56-1.25 1.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C11 5.56 10.44 5 9.75 5"/></symbol><symbol class="bi bi-pause-circle" viewBox="0 0 16 16" id="pause-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M5 6.25a1.25 1.25 0 1 1 2.5 0v3.5a1.25 1.25 0 1 1-2.5 0zm3.5 0a1.25 1.25 0 1 1 2.5 0v3.5a1.25 1.25 0 1 1-2.5 0z"/></symbol><symbol class="bi bi-pause-circle-fill" viewBox="0 0 16 16" id="pause-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.25 5C5.56 5 5 5.56 5 6.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C7.5 5.56 6.94 5 6.25 5m3.5 0c-.69 0-1.25.56-1.25 1.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C11 5.56 10.44 5 9.75 5"/></symbol><symbol class="bi bi-pause-fill" viewBox="0 0 16 16" id="pause-fill"><path d="M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5"/></symbol><symbol class="bi bi-paypal" viewBox="0 0 16 16" id="paypal"><path d="M14.06 3.713c.12-1.071-.093-1.832-.702-2.526C12.628.356 11.312 0 9.626 0H4.734a.7.7 0 0 0-.691.59L2.005 13.509a.42.42 0 0 0 .415.486h2.756l-.202 1.28a.628.628 0 0 0 .62.726H8.14c.429 0 .793-.31.862-.731l.025-.13.48-3.043.03-.164.001-.007a.35.35 0 0 1 .348-.297h.38c1.266 0 2.425-.256 3.345-.91q.57-.403.993-1.005a4.94 4.94 0 0 0 .88-2.195c.242-1.246.13-2.356-.57-3.154a2.7 2.7 0 0 0-.76-.59l-.094-.061ZM6.543 8.82a.7.7 0 0 1 .321-.079H8.3c2.82 0 5.027-1.144 5.672-4.456l.003-.016q.326.186.548.438c.546.623.679 1.535.45 2.71-.272 1.397-.866 2.307-1.663 2.874-.802.57-1.842.815-3.043.815h-.38a.87.87 0 0 0-.863.734l-.03.164-.48 3.043-.024.13-.001.004a.35.35 0 0 1-.348.296H5.595a.106.106 0 0 1-.105-.123l.208-1.32z"/></symbol><symbol class="bi bi-pc" viewBox="0 0 16 16" id="pc"><path d="M5 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm.5 14a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1m2 0a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1M5 1.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5M5.5 3h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-pc-display" viewBox="0 0 16 16" id="pc-display"><path d="M8 1a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1zm1 13.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m2 0a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0M9.5 1a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zM9 3.5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5M1.5 2A1.5 1.5 0 0 0 0 3.5v7A1.5 1.5 0 0 0 1.5 12H6v2h-.5a.5.5 0 0 0 0 1H7v-4H1.5a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5H7V2z"/></symbol><symbol class="bi bi-pc-display-horizontal" viewBox="0 0 16 16" id="pc-display-horizontal"><path d="M1.5 0A1.5 1.5 0 0 0 0 1.5v7A1.5 1.5 0 0 0 1.5 10H6v1H1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-5v-1h4.5A1.5 1.5 0 0 0 16 8.5v-7A1.5 1.5 0 0 0 14.5 0zm0 1h13a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5M12 12.5a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0m2 0a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0M1.5 12h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1M1 14.25a.25.25 0 0 1 .25-.25h5.5a.25.25 0 1 1 0 .5h-5.5a.25.25 0 0 1-.25-.25"/></symbol><symbol class="bi bi-pc-horizontal" viewBox="0 0 16 16" id="pc-horizontal"><path d="M1 6a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1zm11.5 1a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1m2 0a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1M1 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5M1.25 9h5.5a.25.25 0 0 1 0 .5h-5.5a.25.25 0 0 1 0-.5"/></symbol><symbol class="bi bi-pci-card" viewBox="0 0 16 16" id="pci-card"><path d="M0 1.5A.5.5 0 0 1 .5 1h1a.5.5 0 0 1 .5.5V4h13.5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5H2v2.5a.5.5 0 0 1-1 0V2H.5a.5.5 0 0 1-.5-.5"/><path d="M3 12.5h3.5v1a.5.5 0 0 1-.5.5H3.5a.5.5 0 0 1-.5-.5zm4 0h4v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-pci-card-network" viewBox="0 0 16 16" id="pci-card-network"><path d="M6.5 9.5v-2h.214a.5.5 0 0 0 .5-.5v-.5h2.572V7a.5.5 0 0 0 .5.5h.214v2z"/><path d="M0 1.5A.5.5 0 0 1 .5 1h1a.5.5 0 0 1 .5.5V4h13.5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5H2v2.5a.5.5 0 0 1-1 0V2H.5a.5.5 0 0 1-.5-.5m6.714 4a.5.5 0 0 0-.5.5v.5H6a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5V7a.5.5 0 0 0-.5-.5h-.214V6a.5.5 0 0 0-.5-.5z"/><path d="M3 12.5h3.5v1a.5.5 0 0 1-.5.5H3.5a.5.5 0 0 1-.5-.5zm8 0H7v1a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5z"/></symbol><symbol class="bi bi-pci-card-sound" viewBox="0 0 16 16" id="pci-card-sound"><path d="M7.562 7.39 8 7.04v1.92l-.438-.35a.5.5 0 0 0-.312-.11H6.5v-1h.75a.5.5 0 0 0 .312-.11"/><path d="M.5 1a.5.5 0 0 0 0 1H1v12.5a.5.5 0 0 0 1 0V12h13.5a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.5-.5H2V1.5a.5.5 0 0 0-.5-.5zm11.619 3.881q.15.173.28.367c.484.726.768 1.7.768 2.752s-.284 2.026-.768 2.752q-.13.195-.28.367l-.71-.71q.082-.096.158-.212c.36-.54.6-1.315.6-2.197s-.24-1.657-.6-2.198a3 3 0 0 0-.157-.212zm-1.375 4.863L10 9c.057 0 .17-.035.291-.217.12-.178.209-.454.209-.783 0-.33-.09-.605-.209-.783C10.17 7.035 10.057 7 10 7l.744-.744c.15.113.278.254.38.406.242.364.376.839.376 1.338s-.134.974-.377 1.338a1.7 1.7 0 0 1-.379.406M9 6v4a.5.5 0 0 1-.812.39L7.075 9.5H6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h1.075l1.113-.89A.5.5 0 0 1 9 6"/><path d="M6.5 12.5H3v1a.5.5 0 0 0 .5.5H6a.5.5 0 0 0 .5-.5zm.5 1v-1h4v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-peace" viewBox="0 0 16 16" id="peace"><path d="M7.5 1.018a7 7 0 0 0-4.79 11.566L7.5 7.793zm1 0v6.775l4.79 4.79A7 7 0 0 0 8.5 1.018m4.084 12.273L8.5 9.207v5.775a6.97 6.97 0 0 0 4.084-1.691M7.5 14.982V9.207l-4.084 4.084A6.97 6.97 0 0 0 7.5 14.982M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8"/></symbol><symbol class="bi bi-peace-fill" viewBox="0 0 16 16" id="peace-fill"><path d="M14 13.292A8 8 0 0 0 8.5.015v7.778zm-.708.708L8.5 9.206v6.778a7.97 7.97 0 0 0 4.792-1.986zM7.5 15.985V9.207L2.708 14A7.97 7.97 0 0 0 7.5 15.985M2 13.292A8 8 0 0 1 7.5.015v7.778z"/></symbol><symbol class="bi bi-pen" viewBox="0 0 16 16" id="pen"><path d="m13.498.795.149-.149a1.207 1.207 0 1 1 1.707 1.708l-.149.148a1.5 1.5 0 0 1-.059 2.059L4.854 14.854a.5.5 0 0 1-.233.131l-4 1a.5.5 0 0 1-.606-.606l1-4a.5.5 0 0 1 .131-.232l9.642-9.642a.5.5 0 0 0-.642.056L6.854 4.854a.5.5 0 1 1-.708-.708L9.44.854A1.5 1.5 0 0 1 11.5.796a1.5 1.5 0 0 1 1.998-.001m-.644.766a.5.5 0 0 0-.707 0L1.95 11.756l-.764 3.057 3.057-.764L14.44 3.854a.5.5 0 0 0 0-.708z"/></symbol><symbol class="bi bi-pen-fill" viewBox="0 0 16 16" id="pen-fill"><path d="m13.498.795.149-.149a1.207 1.207 0 1 1 1.707 1.708l-.149.148a1.5 1.5 0 0 1-.059 2.059L4.854 14.854a.5.5 0 0 1-.233.131l-4 1a.5.5 0 0 1-.606-.606l1-4a.5.5 0 0 1 .131-.232l9.642-9.642a.5.5 0 0 0-.642.056L6.854 4.854a.5.5 0 1 1-.708-.708L9.44.854A1.5 1.5 0 0 1 11.5.796a1.5 1.5 0 0 1 1.998-.001"/></symbol><symbol class="bi bi-pencil" viewBox="0 0 16 16" id="pencil"><path d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168zM11.207 2.5 13.5 4.793 14.793 3.5 12.5 1.207zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293zm-9.761 5.175-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325"/></symbol><symbol class="bi bi-pencil-fill" viewBox="0 0 16 16" id="pencil-fill"><path d="M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708zm.646 6.061L9.793 2.5 3.293 9H3.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.207zm-7.468 7.468A.5.5 0 0 1 6 13.5V13h-.5a.5.5 0 0 1-.5-.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.5-.5V10h-.5a.5.5 0 0 1-.175-.032l-.179.178a.5.5 0 0 0-.11.168l-2 5a.5.5 0 0 0 .65.65l5-2a.5.5 0 0 0 .168-.11z"/></symbol><symbol class="bi bi-pencil-square" viewBox="0 0 16 16" id="pencil-square"><path d="M15.502 1.94a.5.5 0 0 1 0 .706L14.459 3.69l-2-2L13.502.646a.5.5 0 0 1 .707 0l1.293 1.293zm-1.75 2.456-2-2L4.939 9.21a.5.5 0 0 0-.121.196l-.805 2.414a.25.25 0 0 0 .316.316l2.414-.805a.5.5 0 0 0 .196-.12l6.813-6.814z"/><path fill-rule="evenodd" d="M1 13.5A1.5 1.5 0 0 0 2.5 15h11a1.5 1.5 0 0 0 1.5-1.5v-6a.5.5 0 0 0-1 0v6a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .5-.5H9a.5.5 0 0 0 0-1H2.5A1.5 1.5 0 0 0 1 2.5z"/></symbol><symbol class="bi bi-pentagon" viewBox="0 0 16 16" id="pentagon"><path d="M7.685 1.545a.5.5 0 0 1 .63 0l6.263 5.088a.5.5 0 0 1 .161.539l-2.362 7.479a.5.5 0 0 1-.476.349H4.099a.5.5 0 0 1-.476-.35L1.26 7.173a.5.5 0 0 1 .161-.54l6.263-5.087Zm8.213 5.28a.5.5 0 0 0-.162-.54L8.316.257a.5.5 0 0 0-.631 0L.264 6.286a.5.5 0 0 0-.162.538l2.788 8.827a.5.5 0 0 0 .476.349h9.268a.5.5 0 0 0 .476-.35l2.788-8.826Z"/></symbol><symbol class="bi bi-pentagon-fill" viewBox="0 0 16 16" id="pentagon-fill"><path d="M7.685.256a.5.5 0 0 1 .63 0l7.421 6.03a.5.5 0 0 1 .162.538l-2.788 8.827a.5.5 0 0 1-.476.349H3.366a.5.5 0 0 1-.476-.35L.102 6.825a.5.5 0 0 1 .162-.538l7.42-6.03Z"/></symbol><symbol class="bi bi-pentagon-half" viewBox="0 0 16 16" id="pentagon-half"><path d="m8 1.288 6.578 5.345a.5.5 0 0 1 .161.539l-2.362 7.479a.5.5 0 0 1-.476.349H8zm7.898 5.536a.5.5 0 0 0-.162-.538L8.316.256a.5.5 0 0 0-.631 0L.264 6.286a.5.5 0 0 0-.162.538l2.788 8.827a.5.5 0 0 0 .476.349h9.268a.5.5 0 0 0 .476-.35z"/></symbol><symbol class="bi bi-people" viewBox="0 0 16 16" id="people"><path d="M15 14s1 0 1-1-1-4-5-4-5 3-5 4 1 1 1 1zm-7.978-1L7 12.996c.001-.264.167-1.03.76-1.72C8.312 10.629 9.282 10 11 10c1.717 0 2.687.63 3.24 1.276.593.69.758 1.457.76 1.72l-.008.002-.014.002zM11 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m3-2a3 3 0 1 1-6 0 3 3 0 0 1 6 0M6.936 9.28a6 6 0 0 0-1.23-.247A7 7 0 0 0 5 9c-4 0-5 3-5 4q0 1 1 1h4.216A2.24 2.24 0 0 1 5 13c0-1.01.377-2.042 1.09-2.904.243-.294.526-.569.846-.816M4.92 10A5.5 5.5 0 0 0 4 13H1c0-.26.164-1.03.76-1.724.545-.636 1.492-1.256 3.16-1.275ZM1.5 5.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0m3-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4"/></symbol><symbol class="bi bi-people-fill" viewBox="0 0 16 16" id="people-fill"><path d="M7 14s-1 0-1-1 1-4 5-4 5 3 5 4-1 1-1 1zm4-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6m-5.784 6A2.24 2.24 0 0 1 5 13c0-1.355.68-2.75 1.936-3.72A6.3 6.3 0 0 0 5 9c-4 0-5 3-5 4s1 1 1 1zM4.5 8a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/></symbol><symbol class="bi bi-percent" viewBox="0 0 16 16" id="percent"><path d="M13.442 2.558a.625.625 0 0 1 0 .884l-10 10a.625.625 0 1 1-.884-.884l10-10a.625.625 0 0 1 .884 0M4.5 6a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5m7 6a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/></symbol><symbol class="bi bi-person" viewBox="0 0 16 16" id="person"><path d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"/></symbol><symbol class="bi bi-person-add" viewBox="0 0 16 16" id="person-add"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0m-2-6a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/><path d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/></symbol><symbol class="bi bi-person-arms-up" viewBox="0 0 16 16" id="person-arms-up"><path d="M8 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/><path d="m5.93 6.704-.846 8.451a.768.768 0 0 0 1.523.203l.81-4.865a.59.59 0 0 1 1.165 0l.81 4.865a.768.768 0 0 0 1.523-.203l-.845-8.451A1.5 1.5 0 0 1 10.5 5.5L13 2.284a.796.796 0 0 0-1.239-.998L9.634 3.84a.7.7 0 0 1-.33.235c-.23.074-.665.176-1.304.176-.64 0-1.074-.102-1.305-.176a.7.7 0 0 1-.329-.235L4.239 1.286a.796.796 0 0 0-1.24.998l2.5 3.216c.317.316.475.758.43 1.204Z"/></symbol><symbol class="bi bi-person-badge" viewBox="0 0 16 16" id="person-badge"><path d="M6.5 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/><path d="M4.5 0A2.5 2.5 0 0 0 2 2.5V14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2.5A2.5 2.5 0 0 0 11.5 0zM3 2.5A1.5 1.5 0 0 1 4.5 1h7A1.5 1.5 0 0 1 13 2.5v10.795a4.2 4.2 0 0 0-.776-.492C11.392 12.387 10.063 12 8 12s-3.392.387-4.224.803a4.2 4.2 0 0 0-.776.492z"/></symbol><symbol class="bi bi-person-badge-fill" viewBox="0 0 16 16" id="person-badge-fill"><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm4.5 0a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zM8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6m5 2.755C12.146 12.825 10.623 12 8 12s-4.146.826-5 1.755V14a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-person-bounding-box" viewBox="0 0 16 16" id="person-bounding-box"><path d="M1.5 1a.5.5 0 0 0-.5.5v3a.5.5 0 0 1-1 0v-3A1.5 1.5 0 0 1 1.5 0h3a.5.5 0 0 1 0 1zM11 .5a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 1 16 1.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 1-.5-.5M.5 11a.5.5 0 0 1 .5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 1 0 1h-3A1.5 1.5 0 0 1 0 14.5v-3a.5.5 0 0 1 .5-.5m15 0a.5.5 0 0 1 .5.5v3a1.5 1.5 0 0 1-1.5 1.5h-3a.5.5 0 0 1 0-1h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 1 .5-.5"/><path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm8-9a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/></symbol><symbol class="bi bi-person-check" viewBox="0 0 16 16" id="person-check"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/><path d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/></symbol><symbol class="bi bi-person-check-fill" viewBox="0 0 16 16" id="person-check-fill"><path fill-rule="evenodd" d="M15.854 5.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L12.5 7.793l2.646-2.647a.5.5 0 0 1 .708 0"/><path d="M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/></symbol><symbol class="bi bi-person-circle" viewBox="0 0 16 16" id="person-circle"><path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/><path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1"/></symbol><symbol class="bi bi-person-dash" viewBox="0 0 16 16" id="person-dash"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1m0-7a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/><path d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/></symbol><symbol class="bi bi-person-dash-fill" viewBox="0 0 16 16" id="person-dash-fill"><path fill-rule="evenodd" d="M11 7.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5"/><path d="M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/></symbol><symbol class="bi bi-person-down" viewBox="0 0 16 16" id="person-down"><path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/><path d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/></symbol><symbol class="bi bi-person-exclamation" viewBox="0 0 16 16" id="person-exclamation"><path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m.256 7a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/></symbol><symbol class="bi bi-person-fill" viewBox="0 0 16 16" id="person-fill"><path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/></symbol><symbol class="bi bi-person-fill-add" viewBox="0 0 16 16" id="person-fill-add"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0m-2-6a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/><path d="M2 13c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/></symbol><symbol class="bi bi-person-fill-check" viewBox="0 0 16 16" id="person-fill-check"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/><path d="M2 13c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/></symbol><symbol class="bi bi-person-fill-dash" viewBox="0 0 16 16" id="person-fill-dash"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1m0-7a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/><path d="M2 13c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/></symbol><symbol class="bi bi-person-fill-down" viewBox="0 0 16 16" id="person-fill-down"><path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/><path d="M2 13c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/></symbol><symbol class="bi bi-person-fill-exclamation" viewBox="0 0 16 16" id="person-fill-exclamation"><path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/></symbol><symbol class="bi bi-person-fill-gear" viewBox="0 0 16 16" id="person-fill-gear"><path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4m9.886-3.54c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/></symbol><symbol class="bi bi-person-fill-lock" viewBox="0 0 16 16" id="person-fill-lock"><path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h5v-1a2 2 0 0 1 .01-.2 4.49 4.49 0 0 1 1.534-3.693Q8.844 9.002 8 9c-5 0-6 3-6 4m7 0a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-person-fill-slash" viewBox="0 0 16 16" id="person-fill-slash"><path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95ZM11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/></symbol><symbol class="bi bi-person-fill-up" viewBox="0 0 16 16" id="person-fill-up"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/><path d="M2 13c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/></symbol><symbol class="bi bi-person-fill-x" viewBox="0 0 16 16" id="person-fill-x"><path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/></symbol><symbol class="bi bi-person-gear" viewBox="0 0 16 16" id="person-gear"><path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m.256 7a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1zm3.63-4.54c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/></symbol><symbol class="bi bi-person-heart" viewBox="0 0 16 16" id="person-heart"><path d="M9 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h10s1 0 1-1-1-4-6-4-6 3-6 4m13.5-8.09c1.387-1.425 4.855 1.07 0 4.277-4.854-3.207-1.387-5.702 0-4.276Z"/></symbol><symbol class="bi bi-person-hearts" viewBox="0 0 16 16" id="person-hearts"><path fill-rule="evenodd" d="M11.5 1.246c.832-.855 2.913.642 0 2.566-2.913-1.924-.832-3.421 0-2.566M9 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h10s1 0 1-1-1-4-6-4-6 3-6 4m13.5-8.09c1.387-1.425 4.855 1.07 0 4.277-4.854-3.207-1.387-5.702 0-4.276ZM15 2.165c.555-.57 1.942.428 0 1.711-1.942-1.283-.555-2.281 0-1.71Z"/></symbol><symbol class="bi bi-person-lines-fill" viewBox="0 0 16 16" id="person-lines-fill"><path d="M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6m-5 6s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zM11 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5m.5 2.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1zm2 3a.5.5 0 0 0 0 1h2a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h2a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-person-lock" viewBox="0 0 16 16" id="person-lock"><path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m0 5.996V14H3s-1 0-1-1 1-4 6-4q.845.002 1.544.107a4.5 4.5 0 0 0-.803.918A11 11 0 0 0 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664zM9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-person-plus" viewBox="0 0 16 16" id="person-plus"><path d="M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H1s-1 0-1-1 1-4 6-4 6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C9.516 10.68 8.289 10 6 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"/><path fill-rule="evenodd" d="M13.5 5a.5.5 0 0 1 .5.5V7h1.5a.5.5 0 0 1 0 1H14v1.5a.5.5 0 0 1-1 0V8h-1.5a.5.5 0 0 1 0-1H13V5.5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-person-plus-fill" viewBox="0 0 16 16" id="person-plus-fill"><path d="M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/><path fill-rule="evenodd" d="M13.5 5a.5.5 0 0 1 .5.5V7h1.5a.5.5 0 0 1 0 1H14v1.5a.5.5 0 0 1-1 0V8h-1.5a.5.5 0 0 1 0-1H13V5.5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-person-raised-hand" viewBox="0 0 16 16" id="person-raised-hand"><path d="M6 6.207v9.043a.75.75 0 0 0 1.5 0V10.5a.5.5 0 0 1 1 0v4.75a.75.75 0 0 0 1.5 0v-8.5a.25.25 0 1 1 .5 0v2.5a.75.75 0 0 0 1.5 0V6.5a3 3 0 0 0-3-3H6.236a1 1 0 0 1-.447-.106l-.33-.165A.83.83 0 0 1 5 2.488V.75a.75.75 0 0 0-1.5 0v2.083c0 .715.404 1.37 1.044 1.689L5.5 5c.32.32.5.754.5 1.207"/><path d="M8 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/></symbol><symbol class="bi bi-person-rolodex" viewBox="0 0 16 16" id="person-rolodex"><path d="M8 9.05a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/><path d="M1 1a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h.5a.5.5 0 0 0 .5-.5.5.5 0 0 1 1 0 .5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5.5.5 0 0 1 1 0 .5.5 0 0 0 .5.5h.5a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H6.707L6 1.293A1 1 0 0 0 5.293 1zm0 1h4.293L6 2.707A1 1 0 0 0 6.707 3H15v10h-.085a1.5 1.5 0 0 0-2.4-.63C11.885 11.223 10.554 10 8 10c-2.555 0-3.886 1.224-4.514 2.37a1.5 1.5 0 0 0-2.4.63H1z"/></symbol><symbol class="bi bi-person-slash" viewBox="0 0 16 16" id="person-slash"><path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95ZM11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m.256 7a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/></symbol><symbol class="bi bi-person-square" viewBox="0 0 16 16" id="person-square"><path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1v-1c0-1-1-4-6-4s-6 3-6 4v1a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z"/></symbol><symbol class="bi bi-person-standing" viewBox="0 0 16 16" id="person-standing"><path d="M8 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3M6 6.75v8.5a.75.75 0 0 0 1.5 0V10.5a.5.5 0 0 1 1 0v4.75a.75.75 0 0 0 1.5 0v-8.5a.25.25 0 1 1 .5 0v2.5a.75.75 0 0 0 1.5 0V6.5a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v2.75a.75.75 0 0 0 1.5 0v-2.5a.25.25 0 0 1 .5 0"/></symbol><symbol class="bi bi-person-standing-dress" viewBox="0 0 16 16" id="person-standing-dress"><path d="M8 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m-.5 12.25V12h1v3.25a.75.75 0 0 0 1.5 0V12h1l-1-5v-.215a.285.285 0 0 1 .56-.078l.793 2.777a.711.711 0 1 0 1.364-.405l-1.065-3.461A3 3 0 0 0 8.784 3.5H7.216a3 3 0 0 0-2.868 2.118L3.283 9.079a.711.711 0 1 0 1.365.405l.793-2.777a.285.285 0 0 1 .56.078V7l-1 5h1v3.25a.75.75 0 0 0 1.5 0Z"/></symbol><symbol class="bi bi-person-up" viewBox="0 0 16 16" id="person-up"><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/><path d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/></symbol><symbol class="bi bi-person-vcard" viewBox="0 0 16 16" id="person-vcard"><path d="M5 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4m4-2.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5M9 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4A.5.5 0 0 1 9 8m1 2.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5"/><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zM1 4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H8.96q.04-.245.04-.5C9 10.567 7.21 9 5 9c-2.086 0-3.8 1.398-3.984 3.181A1 1 0 0 1 1 12z"/></symbol><symbol class="bi bi-person-vcard-fill" viewBox="0 0 16 16" id="person-vcard-fill"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm9 1.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 0-1h-4a.5.5 0 0 0-.5.5M9 8a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 0-1h-4A.5.5 0 0 0 9 8m1 2.5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5m-1 2C9 10.567 7.21 9 5 9c-2.086 0-3.8 1.398-3.984 3.181A1 1 0 0 0 2 13h6.96q.04-.245.04-.5M7 6a2 2 0 1 0-4 0 2 2 0 0 0 4 0"/></symbol><symbol class="bi bi-person-video" viewBox="0 0 16 16" id="person-video"><path d="M8 9.05a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm10.798 11c-.453-1.27-1.76-3-4.798-3-3.037 0-4.345 1.73-4.798 3H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1z"/></symbol><symbol class="bi bi-person-video2" viewBox="0 0 16 16" id="person-video2"><path d="M10 9.05a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/><path d="M2 1a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zM1 3a1 1 0 0 1 1-1h2v2H1zm4 10V2h9a1 1 0 0 1 1 1v9c0 .285-.12.543-.31.725C14.15 11.494 12.822 10 10 10c-3.037 0-4.345 1.73-4.798 3zm-4-2h3v2H2a1 1 0 0 1-1-1zm3-1H1V8h3zm0-3H1V5h3z"/></symbol><symbol class="bi bi-person-video3" viewBox="0 0 16 16" id="person-video3"><path d="M14 9.5a2 2 0 1 1-4 0 2 2 0 0 1 4 0m-6 5.7c0 .8.8.8.8.8h6.4s.8 0 .8-.8-.8-3.2-4-3.2-4 2.4-4 3.2"/><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h5.243c.122-.326.295-.668.526-1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v7.81c.353.23.656.496.91.783Q16 12.312 16 12V4a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-person-walking" viewBox="0 0 16 16" id="person-walking"><path d="M9.5 1.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M6.44 3.752A.75.75 0 0 1 7 3.5h1.445c.742 0 1.32.643 1.243 1.38l-.43 4.083a1.8 1.8 0 0 1-.088.395l-.318.906.213.242a.8.8 0 0 1 .114.175l2 4.25a.75.75 0 1 1-1.357.638l-1.956-4.154-1.68-1.921A.75.75 0 0 1 6 8.96l.138-2.613-.435.489-.464 2.786a.75.75 0 1 1-1.48-.246l.5-3a.75.75 0 0 1 .18-.375l2-2.25Z"/><path d="M6.25 11.745v-1.418l1.204 1.375.261.524a.8.8 0 0 1-.12.231l-2.5 3.25a.75.75 0 1 1-1.19-.914zm4.22-4.215-.494-.494.205-1.843.006-.067 1.124 1.124h1.44a.75.75 0 0 1 0 1.5H11a.75.75 0 0 1-.531-.22Z"/></symbol><symbol class="bi bi-person-wheelchair" viewBox="0 0 16 16" id="person-wheelchair"><path d="M12 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m-.663 2.146a1.5 1.5 0 0 0-.47-2.115l-2.5-1.508a1.5 1.5 0 0 0-1.676.086l-2.329 1.75a.866.866 0 0 0 1.051 1.375L7.361 3.37l.922.71-2.038 2.445A4.73 4.73 0 0 0 2.628 7.67l1.064 1.065a3.25 3.25 0 0 1 4.574 4.574l1.064 1.063a4.73 4.73 0 0 0 1.09-3.998l1.043-.292-.187 2.991a.872.872 0 1 0 1.741.098l.206-4.121A1 1 0 0 0 12.224 8h-2.79zM3.023 9.48a3.25 3.25 0 0 0 4.496 4.496l1.077 1.077a4.75 4.75 0 0 1-6.65-6.65z"/></symbol><symbol class="bi bi-person-workspace" viewBox="0 0 16 16" id="person-workspace"><path d="M4 16s-1 0-1-1 1-4 5-4 5 3 5 4-1 1-1 1zm4-5.95a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/><path d="M2 1a2 2 0 0 0-2 2v9.5A1.5 1.5 0 0 0 1.5 14h.653a5.4 5.4 0 0 1 1.066-2H1V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v9h-2.219c.554.654.89 1.373 1.066 2h.653a1.5 1.5 0 0 0 1.5-1.5V3a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-person-x" viewBox="0 0 16 16" id="person-x"><path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m.256 7a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/></symbol><symbol class="bi bi-person-x-fill" viewBox="0 0 16 16" id="person-x-fill"><path fill-rule="evenodd" d="M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6m6.146-2.854a.5.5 0 0 1 .708 0L14 6.293l1.146-1.147a.5.5 0 0 1 .708.708L14.707 7l1.147 1.146a.5.5 0 0 1-.708.708L14 7.707l-1.146 1.147a.5.5 0 0 1-.708-.708L13.293 7l-1.147-1.146a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-phone" viewBox="0 0 16 16" id="phone"><path d="M11 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM5 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M8 14a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-phone-fill" viewBox="0 0 16 16" id="phone-fill"><path d="M3 2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zm6 11a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/></symbol><symbol class="bi bi-phone-flip" viewBox="0 0 16 16" id="phone-flip"><path fill-rule="evenodd" d="M11 1H5a1 1 0 0 0-1 1v6a.5.5 0 0 1-1 0V2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a.5.5 0 0 1-1 0V2a1 1 0 0 0-1-1m1 13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-2a.5.5 0 0 0-1 0v2a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-2a.5.5 0 0 0-1 0zM1.713 7.954a.5.5 0 1 0-.419-.908c-.347.16-.654.348-.882.57C.184 7.842 0 8.139 0 8.5c0 .546.408.94.823 1.201.44.278 1.043.51 1.745.696C3.978 10.773 5.898 11 8 11q.148 0 .294-.002l-1.148 1.148a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2a.5.5 0 1 0-.708.708l1.145 1.144L8 10c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575C1.012 8.639 1 8.506 1 8.5c0-.003 0-.059.112-.17.115-.112.31-.242.6-.376Zm12.993-.908a.5.5 0 0 0-.419.908c.292.134.486.264.6.377.113.11.113.166.113.169s0 .065-.13.187c-.132.122-.352.26-.677.4-.645.28-1.596.523-2.763.687a.5.5 0 0 0 .14.99c1.212-.17 2.26-.43 3.02-.758.38-.164.713-.357.96-.587.246-.229.45-.537.45-.919 0-.362-.184-.66-.412-.883s-.535-.411-.882-.571M7.5 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-phone-landscape" viewBox="0 0 16 16" id="phone-landscape"><path d="M1 4.5a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm-1 6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2z"/><path d="M14 7.5a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/></symbol><symbol class="bi bi-phone-landscape-fill" viewBox="0 0 16 16" id="phone-landscape-fill"><path d="M2 12.5a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2zm11-6a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/></symbol><symbol class="bi bi-phone-vibrate" viewBox="0 0 16 16" id="phone-vibrate"><path d="M10 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM6 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/><path d="M8 12a1 1 0 1 0 0-2 1 1 0 0 0 0 2M1.599 4.058a.5.5 0 0 1 .208.676A7 7 0 0 0 1 8c0 1.18.292 2.292.807 3.266a.5.5 0 0 1-.884.468A8 8 0 0 1 0 8c0-1.347.334-2.619.923-3.734a.5.5 0 0 1 .676-.208m12.802 0a.5.5 0 0 1 .676.208A8 8 0 0 1 16 8a8 8 0 0 1-.923 3.734.5.5 0 0 1-.884-.468A7 7 0 0 0 15 8c0-1.18-.292-2.292-.807-3.266a.5.5 0 0 1 .208-.676M3.057 5.534a.5.5 0 0 1 .284.648A5 5 0 0 0 3 8c0 .642.12 1.255.34 1.818a.5.5 0 1 1-.93.364A6 6 0 0 1 2 8c0-.769.145-1.505.41-2.182a.5.5 0 0 1 .647-.284m9.886 0a.5.5 0 0 1 .648.284C13.855 6.495 14 7.231 14 8s-.145 1.505-.41 2.182a.5.5 0 0 1-.93-.364C12.88 9.255 13 8.642 13 8s-.12-1.255-.34-1.818a.5.5 0 0 1 .283-.648"/></symbol><symbol class="bi bi-phone-vibrate-fill" viewBox="0 0 16 16" id="phone-vibrate-fill"><path d="M4 4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm5 7a1 1 0 1 0-2 0 1 1 0 0 0 2 0M1.807 4.734a.5.5 0 1 0-.884-.468A8 8 0 0 0 0 8c0 1.347.334 2.618.923 3.734a.5.5 0 1 0 .884-.468A7 7 0 0 1 1 8c0-1.18.292-2.292.807-3.266m13.27-.468a.5.5 0 0 0-.884.468C14.708 5.708 15 6.819 15 8c0 1.18-.292 2.292-.807 3.266a.5.5 0 0 0 .884.468A8 8 0 0 0 16 8a8 8 0 0 0-.923-3.734M3.34 6.182a.5.5 0 1 0-.93-.364A6 6 0 0 0 2 8c0 .769.145 1.505.41 2.182a.5.5 0 1 0 .93-.364A5 5 0 0 1 3 8c0-.642.12-1.255.34-1.818m10.25-.364a.5.5 0 0 0-.93.364c.22.563.34 1.176.34 1.818s-.12 1.255-.34 1.818a.5.5 0 0 0 .93.364C13.856 9.505 14 8.769 14 8s-.145-1.505-.41-2.182"/></symbol><symbol class="bi bi-pie-chart" viewBox="0 0 16 16" id="pie-chart"><path d="M7.5 1.018a7 7 0 0 0-4.79 11.566L7.5 7.793zm1 0V7.5h6.482A7 7 0 0 0 8.5 1.018M14.982 8.5H8.207l-4.79 4.79A7 7 0 0 0 14.982 8.5M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8"/></symbol><symbol class="bi bi-pie-chart-fill" viewBox="0 0 16 16" id="pie-chart-fill"><path d="M15.985 8.5H8.207l-5.5 5.5a8 8 0 0 0 13.277-5.5zM2 13.292A8 8 0 0 1 7.5.015v7.778zM8.5.015V7.5h7.485A8 8 0 0 0 8.5.015"/></symbol><symbol class="bi bi-piggy-bank" viewBox="0 0 16 16" id="piggy-bank"><path d="M5 6.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.138-1.496A6.6 6.6 0 0 1 7.964 4.5c.666 0 1.303.097 1.893.273a.5.5 0 0 0 .286-.958A7.6 7.6 0 0 0 7.964 3.5c-.734 0-1.441.103-2.102.292a.5.5 0 1 0 .276.962"/><path fill-rule="evenodd" d="M7.964 1.527c-2.977 0-5.571 1.704-6.32 4.125h-.55A1 1 0 0 0 .11 6.824l.254 1.46a1.5 1.5 0 0 0 1.478 1.243h.263c.3.513.688.978 1.145 1.382l-.729 2.477a.5.5 0 0 0 .48.641h2a.5.5 0 0 0 .471-.332l.482-1.351c.635.173 1.31.267 2.011.267.707 0 1.388-.095 2.028-.272l.543 1.372a.5.5 0 0 0 .465.316h2a.5.5 0 0 0 .478-.645l-.761-2.506C13.81 9.895 14.5 8.559 14.5 7.069q0-.218-.02-.431c.261-.11.508-.266.705-.444.315.306.815.306.815-.417 0 .223-.5.223-.461-.026a1 1 0 0 0 .09-.255.7.7 0 0 0-.202-.645.58.58 0 0 0-.707-.098.74.74 0 0 0-.375.562c-.024.243.082.48.32.654a2 2 0 0 1-.259.153c-.534-2.664-3.284-4.595-6.442-4.595M2.516 6.26c.455-2.066 2.667-3.733 5.448-3.733 3.146 0 5.536 2.114 5.536 4.542 0 1.254-.624 2.41-1.67 3.248a.5.5 0 0 0-.165.535l.66 2.175h-.985l-.59-1.487a.5.5 0 0 0-.629-.288c-.661.23-1.39.359-2.157.359a6.6 6.6 0 0 1-2.157-.359.5.5 0 0 0-.635.304l-.525 1.471h-.979l.633-2.15a.5.5 0 0 0-.17-.534 4.65 4.65 0 0 1-1.284-1.541.5.5 0 0 0-.446-.275h-.56a.5.5 0 0 1-.492-.414l-.254-1.46h.933a.5.5 0 0 0 .488-.393m12.621-.857a.6.6 0 0 1-.098.21l-.044-.025c-.146-.09-.157-.175-.152-.223a.24.24 0 0 1 .117-.173c.049-.027.08-.021.113.012a.2.2 0 0 1 .064.199"/></symbol><symbol class="bi bi-piggy-bank-fill" viewBox="0 0 16 16" id="piggy-bank-fill"><path d="M7.964 1.527c-2.977 0-5.571 1.704-6.32 4.125h-.55A1 1 0 0 0 .11 6.824l.254 1.46a1.5 1.5 0 0 0 1.478 1.243h.263c.3.513.688.978 1.145 1.382l-.729 2.477a.5.5 0 0 0 .48.641h2a.5.5 0 0 0 .471-.332l.482-1.351c.635.173 1.31.267 2.011.267.707 0 1.388-.095 2.028-.272l.543 1.372a.5.5 0 0 0 .465.316h2a.5.5 0 0 0 .478-.645l-.761-2.506C13.81 9.895 14.5 8.559 14.5 7.069q0-.218-.02-.431c.261-.11.508-.266.705-.444.315.306.815.306.815-.417 0 .223-.5.223-.461-.026a1 1 0 0 0 .09-.255.7.7 0 0 0-.202-.645.58.58 0 0 0-.707-.098.74.74 0 0 0-.375.562c-.024.243.082.48.32.654a2 2 0 0 1-.259.153c-.534-2.664-3.284-4.595-6.442-4.595m7.173 3.876a.6.6 0 0 1-.098.21l-.044-.025c-.146-.09-.157-.175-.152-.223a.24.24 0 0 1 .117-.173c.049-.027.08-.021.113.012a.2.2 0 0 1 .064.199m-8.999-.65a.5.5 0 1 1-.276-.96A7.6 7.6 0 0 1 7.964 3.5c.763 0 1.497.11 2.18.315a.5.5 0 1 1-.287.958A6.6 6.6 0 0 0 7.964 4.5c-.64 0-1.255.09-1.826.254ZM5 6.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0"/></symbol><symbol class="bi bi-pin" viewBox="0 0 16 16" id="pin"><path d="M4.146.146A.5.5 0 0 1 4.5 0h7a.5.5 0 0 1 .5.5c0 .68-.342 1.174-.646 1.479-.126.125-.25.224-.354.298v4.431l.078.048c.203.127.476.314.751.555C12.36 7.775 13 8.527 13 9.5a.5.5 0 0 1-.5.5h-4v4.5c0 .276-.224 1.5-.5 1.5s-.5-1.224-.5-1.5V10h-4a.5.5 0 0 1-.5-.5c0-.973.64-1.725 1.17-2.189A6 6 0 0 1 5 6.708V2.277a3 3 0 0 1-.354-.298C4.342 1.674 4 1.179 4 .5a.5.5 0 0 1 .146-.354m1.58 1.408-.002-.001zm-.002-.001.002.001A.5.5 0 0 1 6 2v5a.5.5 0 0 1-.276.447h-.002l-.012.007-.054.03a5 5 0 0 0-.827.58c-.318.278-.585.596-.725.936h7.792c-.14-.34-.407-.658-.725-.936a5 5 0 0 0-.881-.61l-.012-.006h-.002A.5.5 0 0 1 10 7V2a.5.5 0 0 1 .295-.458 1.8 1.8 0 0 0 .351-.271c.08-.08.155-.17.214-.271H5.14q.091.15.214.271a1.8 1.8 0 0 0 .37.282"/></symbol><symbol class="bi bi-pin-angle" viewBox="0 0 16 16" id="pin-angle"><path d="M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a6 6 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707s.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a6 6 0 0 1 1.013.16l3.134-3.133a3 3 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146m.122 2.112v-.002zm0-.002v.002a.5.5 0 0 1-.122.51L6.293 6.878a.5.5 0 0 1-.511.12H5.78l-.014-.004a5 5 0 0 0-.288-.076 5 5 0 0 0-.765-.116c-.422-.028-.836.008-1.175.15l5.51 5.509c.141-.34.177-.753.149-1.175a5 5 0 0 0-.192-1.054l-.004-.013v-.001a.5.5 0 0 1 .12-.512l3.536-3.535a.5.5 0 0 1 .532-.115l.096.022c.087.017.208.034.344.034q.172.002.343-.04L9.927 2.028q-.042.172-.04.343a1.8 1.8 0 0 0 .062.46z"/></symbol><symbol class="bi bi-pin-angle-fill" viewBox="0 0 16 16" id="pin-angle-fill"><path d="M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a6 6 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707s.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a6 6 0 0 1 1.013.16l3.134-3.133a3 3 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146"/></symbol><symbol class="bi bi-pin-fill" viewBox="0 0 16 16" id="pin-fill"><path d="M4.146.146A.5.5 0 0 1 4.5 0h7a.5.5 0 0 1 .5.5c0 .68-.342 1.174-.646 1.479-.126.125-.25.224-.354.298v4.431l.078.048c.203.127.476.314.751.555C12.36 7.775 13 8.527 13 9.5a.5.5 0 0 1-.5.5h-4v4.5c0 .276-.224 1.5-.5 1.5s-.5-1.224-.5-1.5V10h-4a.5.5 0 0 1-.5-.5c0-.973.64-1.725 1.17-2.189A6 6 0 0 1 5 6.708V2.277a3 3 0 0 1-.354-.298C4.342 1.674 4 1.179 4 .5a.5.5 0 0 1 .146-.354"/></symbol><symbol class="bi bi-pin-map" viewBox="0 0 16 16" id="pin-map"><path fill-rule="evenodd" d="M3.1 11.2a.5.5 0 0 1 .4-.2H6a.5.5 0 0 1 0 1H3.75L1.5 15h13l-2.25-3H10a.5.5 0 0 1 0-1h2.5a.5.5 0 0 1 .4.2l3 4a.5.5 0 0 1-.4.8H.5a.5.5 0 0 1-.4-.8z"/><path fill-rule="evenodd" d="M8 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999z"/></symbol><symbol class="bi bi-pin-map-fill" viewBox="0 0 16 16" id="pin-map-fill"><path fill-rule="evenodd" d="M3.1 11.2a.5.5 0 0 1 .4-.2H6a.5.5 0 0 1 0 1H3.75L1.5 15h13l-2.25-3H10a.5.5 0 0 1 0-1h2.5a.5.5 0 0 1 .4.2l3 4a.5.5 0 0 1-.4.8H.5a.5.5 0 0 1-.4-.8z"/><path fill-rule="evenodd" d="M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999z"/></symbol><symbol class="bi bi-pinterest" viewBox="0 0 16 16" id="pinterest"><path d="M8 0a8 8 0 0 0-2.915 15.452c-.07-.633-.134-1.606.027-2.297.146-.625.938-3.977.938-3.977s-.239-.479-.239-1.187c0-1.113.645-1.943 1.448-1.943.682 0 1.012.512 1.012 1.127 0 .686-.437 1.712-.663 2.663-.188.796.4 1.446 1.185 1.446 1.422 0 2.515-1.5 2.515-3.664 0-1.915-1.377-3.254-3.342-3.254-2.276 0-3.612 1.707-3.612 3.471 0 .688.265 1.425.595 1.826a.24.24 0 0 1 .056.23c-.061.252-.196.796-.222.907-.035.146-.116.177-.268.107-1-.465-1.624-1.926-1.624-3.1 0-2.523 1.834-4.84 5.286-4.84 2.775 0 4.932 1.977 4.932 4.62 0 2.757-1.739 4.976-4.151 4.976-.811 0-1.573-.421-1.834-.919l-.498 1.902c-.181.695-.669 1.566-.995 2.097A8 8 0 1 0 8 0"/></symbol><symbol class="bi bi-pip" viewBox="0 0 16 16" id="pip"><path d="M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5zM1.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5z"/><path d="M8 8.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-pip-fill" viewBox="0 0 16 16" id="pip-fill"><path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zm7 6h5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-play" viewBox="0 0 16 16" id="play"><path d="M10.804 8 5 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C4.713 12.69 4 12.345 4 11.692V4.308c0-.653.713-.998 1.233-.696z"/></symbol><symbol class="bi bi-play-btn" viewBox="0 0 16 16" id="play-btn"><path d="M6.79 5.093A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814z"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-play-btn-fill" viewBox="0 0 16 16" id="play-btn-fill"><path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m6.79-6.907A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814z"/></symbol><symbol class="bi bi-play-circle" viewBox="0 0 16 16" id="play-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M6.271 5.055a.5.5 0 0 1 .52.038l3.5 2.5a.5.5 0 0 1 0 .814l-3.5 2.5A.5.5 0 0 1 6 10.5v-5a.5.5 0 0 1 .271-.445"/></symbol><symbol class="bi bi-play-circle-fill" viewBox="0 0 16 16" id="play-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.79 5.093A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814z"/></symbol><symbol class="bi bi-play-fill" viewBox="0 0 16 16" id="play-fill"><path d="m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393"/></symbol><symbol class="bi bi-playstation" viewBox="0 0 16 16" id="playstation"><path d="M15.858 11.451c-.313.395-1.079.676-1.079.676l-5.696 2.046v-1.509l4.192-1.493c.476-.17.549-.412.162-.538-.386-.127-1.085-.09-1.56.08l-2.794.984v-1.566l.161-.054s.807-.286 1.942-.412c1.135-.125 2.525.017 3.616.43 1.23.39 1.368.962 1.056 1.356M9.625 8.883v-3.86c0-.453-.083-.87-.508-.988-.326-.105-.528.198-.528.65v9.664l-2.606-.827V2c1.108.206 2.722.692 3.59.985 2.207.757 2.955 1.7 2.955 3.825 0 2.071-1.278 2.856-2.903 2.072Zm-8.424 3.625C-.061 12.15-.271 11.41.304 10.984c.532-.394 1.436-.69 1.436-.69l3.737-1.33v1.515l-2.69.963c-.474.17-.547.411-.161.538.386.126 1.085.09 1.56-.08l1.29-.469v1.356l-.257.043a8.45 8.45 0 0 1-4.018-.323Z"/></symbol><symbol class="bi bi-plug" viewBox="0 0 16 16" id="plug"><path d="M6 0a.5.5 0 0 1 .5.5V3h3V.5a.5.5 0 0 1 1 0V3h1a.5.5 0 0 1 .5.5v3A3.5 3.5 0 0 1 8.5 10c-.002.434-.01.845-.04 1.22-.041.514-.126 1.003-.317 1.424a2.08 2.08 0 0 1-.97 1.028C6.725 13.9 6.169 14 5.5 14c-.998 0-1.61.33-1.974.718A1.92 1.92 0 0 0 3 16H2c0-.616.232-1.367.797-1.968C3.374 13.42 4.261 13 5.5 13c.581 0 .962-.088 1.218-.219.241-.123.4-.3.514-.55.121-.266.193-.621.23-1.09.027-.34.035-.718.037-1.141A3.5 3.5 0 0 1 4 6.5v-3a.5.5 0 0 1 .5-.5h1V.5A.5.5 0 0 1 6 0M5 4v2.5A2.5 2.5 0 0 0 7.5 9h1A2.5 2.5 0 0 0 11 6.5V4z"/></symbol><symbol class="bi bi-plug-fill" viewBox="0 0 16 16" id="plug-fill"><path d="M6 0a.5.5 0 0 1 .5.5V3h3V.5a.5.5 0 0 1 1 0V3h1a.5.5 0 0 1 .5.5v3A3.5 3.5 0 0 1 8.5 10c-.002.434-.01.845-.04 1.22-.041.514-.126 1.003-.317 1.424a2.08 2.08 0 0 1-.97 1.028C6.725 13.9 6.169 14 5.5 14c-.998 0-1.61.33-1.974.718A1.92 1.92 0 0 0 3 16H2c0-.616.232-1.367.797-1.968C3.374 13.42 4.261 13 5.5 13c.581 0 .962-.088 1.218-.219.241-.123.4-.3.514-.55.121-.266.193-.621.23-1.09.027-.34.035-.718.037-1.141A3.5 3.5 0 0 1 4 6.5v-3a.5.5 0 0 1 .5-.5h1V.5A.5.5 0 0 1 6 0"/></symbol><symbol class="bi bi-plugin" viewBox="0 0 16 16" id="plugin"><path fill-rule="evenodd" d="M1 8a7 7 0 1 1 2.898 5.673c-.167-.121-.216-.406-.002-.62l1.8-1.8a3.5 3.5 0 0 0 4.572-.328l1.414-1.415a.5.5 0 0 0 0-.707l-.707-.707 1.559-1.563a.5.5 0 1 0-.708-.706l-1.559 1.562-1.414-1.414 1.56-1.562a.5.5 0 1 0-.707-.706l-1.56 1.56-.707-.706a.5.5 0 0 0-.707 0L5.318 5.975a3.5 3.5 0 0 0-.328 4.571l-1.8 1.8c-.58.58-.62 1.6.121 2.137A8 8 0 1 0 0 8a.5.5 0 0 0 1 0"/></symbol><symbol class="bi bi-plus" viewBox="0 0 16 16" id="plus"><path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/></symbol><symbol class="bi bi-plus-circle" viewBox="0 0 16 16" id="plus-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/></symbol><symbol class="bi bi-plus-circle-dotted" viewBox="0 0 16 16" id="plus-circle-dotted"><path d="M8 0q-.264 0-.523.017l.064.998a7 7 0 0 1 .918 0l.064-.998A8 8 0 0 0 8 0M6.44.152q-.52.104-1.012.27l.321.948q.43-.147.884-.237L6.44.153zm4.132.271a8 8 0 0 0-1.011-.27l-.194.98q.453.09.884.237zm1.873.925a8 8 0 0 0-.906-.524l-.443.896q.413.205.793.459zM4.46.824q-.471.233-.905.524l.556.83a7 7 0 0 1 .793-.458zM2.725 1.985q-.394.346-.74.74l.752.66q.303-.345.648-.648zm11.29.74a8 8 0 0 0-.74-.74l-.66.752q.346.303.648.648zm1.161 1.735a8 8 0 0 0-.524-.905l-.83.556q.254.38.458.793l.896-.443zM1.348 3.555q-.292.433-.524.906l.896.443q.205-.413.459-.793zM.423 5.428a8 8 0 0 0-.27 1.011l.98.194q.09-.453.237-.884zM15.848 6.44a8 8 0 0 0-.27-1.012l-.948.321q.147.43.237.884zM.017 7.477a8 8 0 0 0 0 1.046l.998-.064a7 7 0 0 1 0-.918zM16 8a8 8 0 0 0-.017-.523l-.998.064a7 7 0 0 1 0 .918l.998.064A8 8 0 0 0 16 8M.152 9.56q.104.52.27 1.012l.948-.321a7 7 0 0 1-.237-.884l-.98.194zm15.425 1.012q.168-.493.27-1.011l-.98-.194q-.09.453-.237.884zM.824 11.54a8 8 0 0 0 .524.905l.83-.556a7 7 0 0 1-.458-.793zm13.828.905q.292-.434.524-.906l-.896-.443q-.205.413-.459.793zm-12.667.83q.346.394.74.74l.66-.752a7 7 0 0 1-.648-.648zm11.29.74q.394-.346.74-.74l-.752-.66q-.302.346-.648.648zm-1.735 1.161q.471-.233.905-.524l-.556-.83a7 7 0 0 1-.793.458zm-7.985-.524q.434.292.906.524l.443-.896a7 7 0 0 1-.793-.459zm1.873.925q.493.168 1.011.27l.194-.98a7 7 0 0 1-.884-.237zm4.132.271a8 8 0 0 0 1.012-.27l-.321-.948a7 7 0 0 1-.884.237l.194.98zm-2.083.135a8 8 0 0 0 1.046 0l-.064-.998a7 7 0 0 1-.918 0zM8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3z"/></symbol><symbol class="bi bi-plus-circle-fill" viewBox="0 0 16 16" id="plus-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3z"/></symbol><symbol class="bi bi-plus-lg" viewBox="0 0 16 16" id="plus-lg"><path fill-rule="evenodd" d="M8 2a.5.5 0 0 1 .5.5v5h5a.5.5 0 0 1 0 1h-5v5a.5.5 0 0 1-1 0v-5h-5a.5.5 0 0 1 0-1h5v-5A.5.5 0 0 1 8 2"/></symbol><symbol class="bi bi-plus-slash-minus" viewBox="0 0 16 16" id="plus-slash-minus"><path d="m1.854 14.854 13-13a.5.5 0 0 0-.708-.708l-13 13a.5.5 0 0 0 .708.708M4 1a.5.5 0 0 1 .5.5v2h2a.5.5 0 0 1 0 1h-2v2a.5.5 0 0 1-1 0v-2h-2a.5.5 0 0 1 0-1h2v-2A.5.5 0 0 1 4 1m5 11a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5A.5.5 0 0 1 9 12"/></symbol><symbol class="bi bi-plus-square" viewBox="0 0 16 16" id="plus-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/></symbol><symbol class="bi bi-plus-square-dotted" viewBox="0 0 16 16" id="plus-square-dotted"><path d="M2.5 0q-.25 0-.487.048l.194.98A1.5 1.5 0 0 1 2.5 1h.458V0zm2.292 0h-.917v1h.917zm1.833 0h-.917v1h.917zm1.833 0h-.916v1h.916zm1.834 0h-.917v1h.917zm1.833 0h-.917v1h.917zM13.5 0h-.458v1h.458q.151 0 .293.029l.194-.981A2.5 2.5 0 0 0 13.5 0m2.079 1.11a2.5 2.5 0 0 0-.69-.689l-.556.831q.248.167.415.415l.83-.556zM1.11.421a2.5 2.5 0 0 0-.689.69l.831.556c.11-.164.251-.305.415-.415zM16 2.5q0-.25-.048-.487l-.98.194q.027.141.028.293v.458h1zM.048 2.013A2.5 2.5 0 0 0 0 2.5v.458h1V2.5q0-.151.029-.293zM0 3.875v.917h1v-.917zm16 .917v-.917h-1v.917zM0 5.708v.917h1v-.917zm16 .917v-.917h-1v.917zM0 7.542v.916h1v-.916zm15 .916h1v-.916h-1zM0 9.375v.917h1v-.917zm16 .917v-.917h-1v.917zm-16 .916v.917h1v-.917zm16 .917v-.917h-1v.917zm-16 .917v.458q0 .25.048.487l.98-.194A1.5 1.5 0 0 1 1 13.5v-.458zm16 .458v-.458h-1v.458q0 .151-.029.293l.981.194Q16 13.75 16 13.5M.421 14.89c.183.272.417.506.69.689l.556-.831a1.5 1.5 0 0 1-.415-.415zm14.469.689c.272-.183.506-.417.689-.69l-.831-.556c-.11.164-.251.305-.415.415l.556.83zm-12.877.373Q2.25 16 2.5 16h.458v-1H2.5q-.151 0-.293-.029zM13.5 16q.25 0 .487-.048l-.194-.98A1.5 1.5 0 0 1 13.5 15h-.458v1zm-9.625 0h.917v-1h-.917zm1.833 0h.917v-1h-.917zm1.834-1v1h.916v-1zm1.833 1h.917v-1h-.917zm1.833 0h.917v-1h-.917zM8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3z"/></symbol><symbol class="bi bi-plus-square-fill" viewBox="0 0 16 16" id="plus-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-postage" viewBox="0 0 16 16" id="postage"><path d="M4.75 3a.75.75 0 0 0-.75.75v8.5c0 .414.336.75.75.75h6.5a.75.75 0 0 0 .75-.75v-8.5a.75.75 0 0 0-.75-.75zM11 12H5V4h6z"/><path d="M3.5 1a1 1 0 0 0 1-1h1a1 1 0 0 0 2 0h1a1 1 0 0 0 2 0h1a1 1 0 1 0 2 0H15v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1h-1.5a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0H1v-1a1 1 0 1 0 0-2v-1a1 1 0 1 0 0-2V9a1 1 0 1 0 0-2V6a1 1 0 0 0 0-2V3a1 1 0 0 0 0-2V0h1.5a1 1 0 0 0 1 1M3 3v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1"/></symbol><symbol class="bi bi-postage-fill" viewBox="0 0 16 16" id="postage-fill"><path d="M4.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5z"/><path d="M3.5 1a1 1 0 0 0 1-1h1a1 1 0 0 0 2 0h1a1 1 0 0 0 2 0h1a1 1 0 1 0 2 0H15v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1h-1.5a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0H1v-1a1 1 0 1 0 0-2v-1a1 1 0 1 0 0-2V9a1 1 0 1 0 0-2V6a1 1 0 0 0 0-2V3a1 1 0 0 0 0-2V0h1.5a1 1 0 0 0 1 1M3 3v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1"/></symbol><symbol class="bi bi-postage-heart" viewBox="0 0 16 16" id="postage-heart"><path d="M3.5 1a1 1 0 0 0 1-1h1a1 1 0 0 0 2 0h1a1 1 0 0 0 2 0h1a1 1 0 1 0 2 0H15v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1h-1.5a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0H1v-1a1 1 0 1 0 0-2v-1a1 1 0 1 0 0-2V9a1 1 0 1 0 0-2V6a1 1 0 0 0 0-2V3a1 1 0 0 0 0-2V0h1.5a1 1 0 0 0 1 1M3 3v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1"/><path d="M8 11C2.175 7.236 6.336 4.31 8 5.982 9.664 4.309 13.825 7.236 8 11"/></symbol><symbol class="bi bi-postage-heart-fill" viewBox="0 0 16 16" id="postage-heart-fill"><path d="M4.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5zM8 11C2.175 7.236 6.336 4.31 8 5.982 9.664 4.309 13.825 7.236 8 11"/><path d="M4.5 0a1 1 0 0 1-2 0H1v1a1 1 0 0 1 0 2v1a1 1 0 0 1 0 2v1a1 1 0 0 1 0 2v1a1 1 0 1 1 0 2v1a1 1 0 1 1 0 2v1h1.5a1 1 0 1 1 2 0h1a1 1 0 1 1 2 0h1a1 1 0 1 1 2 0h1a1 1 0 1 1 2 0H15v-1a1 1 0 1 1 0-2v-1a1 1 0 1 1 0-2V9a1 1 0 1 1 0-2V6a1 1 0 1 1 0-2V3a1 1 0 1 1 0-2V0h-1.5a1 1 0 1 1-2 0h-1a1 1 0 1 1-2 0h-1a1 1 0 0 1-2 0zM4 14a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1z"/></symbol><symbol class="bi bi-postcard" viewBox="0 0 16 16" id="postcard"><path fill-rule="evenodd" d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zM1 4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm7.5.5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zM2 5.5a.5.5 0 0 1 .5-.5H6a.5.5 0 0 1 0 1H2.5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5H6a.5.5 0 0 1 0 1H2.5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5H6a.5.5 0 0 1 0 1H2.5a.5.5 0 0 1-.5-.5M10.5 5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5zM13 8h-2V6h2z"/></symbol><symbol class="bi bi-postcard-fill" viewBox="0 0 16 16" id="postcard-fill"><path d="M11 8h2V6h-2z"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8.5.5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zM2 5.5a.5.5 0 0 0 .5.5H6a.5.5 0 0 0 0-1H2.5a.5.5 0 0 0-.5.5M2.5 7a.5.5 0 0 0 0 1H6a.5.5 0 0 0 0-1zM2 9.5a.5.5 0 0 0 .5.5H6a.5.5 0 0 0 0-1H2.5a.5.5 0 0 0-.5.5m8-4v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-postcard-heart" viewBox="0 0 16 16" id="postcard-heart"><path d="M8 4.5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zm3.5.878c1.482-1.42 4.795 1.392 0 4.622-4.795-3.23-1.482-6.043 0-4.622M2.5 5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/><path fill-rule="evenodd" d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-postcard-heart-fill" viewBox="0 0 16 16" id="postcard-heart-fill"><path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm6 2.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0m3.5.878c1.482-1.42 4.795 1.392 0 4.622-4.795-3.23-1.482-6.043 0-4.622M2 5.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-power" viewBox="0 0 16 16" id="power"><path d="M7.5 1v7h1V1z"/><path d="M3 8.812a5 5 0 0 1 2.578-4.375l-.485-.874A6 6 0 1 0 11 3.616l-.501.865A5 5 0 1 1 3 8.812"/></symbol><symbol class="bi bi-prescription" viewBox="0 0 16 16" id="prescription"><path d="M5.5 6a.5.5 0 0 0-.5.5v4a.5.5 0 0 0 1 0V9h.293l2 2-1.147 1.146a.5.5 0 0 0 .708.708L9 11.707l1.146 1.147a.5.5 0 0 0 .708-.708L9.707 11l1.147-1.146a.5.5 0 0 0-.708-.708L9 10.293 7.695 8.987A1.5 1.5 0 0 0 7.5 6zM6 7h1.5a.5.5 0 0 1 0 1H6z"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v10.5a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 3 14.5V4a1 1 0 0 1-1-1zm2 3v10.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5V4zM3 3h10V1H3z"/></symbol><symbol class="bi bi-prescription2" viewBox="0 0 16 16" id="prescription2"><path d="M7 6h2v2h2v2H9v2H7v-2H5V8h2z"/><path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v10.5a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 3 14.5V4a1 1 0 0 1-1-1zm2 3v10.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5V4zM3 3h10V1H3z"/></symbol><symbol class="bi bi-printer" viewBox="0 0 16 16" id="printer"><path d="M2.5 8a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/><path d="M5 1a2 2 0 0 0-2 2v2H2a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h1v1a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-1h1a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-1V3a2 2 0 0 0-2-2zM4 3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2H4zm1 5a2 2 0 0 0-2 2v1H2a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1v-1a2 2 0 0 0-2-2zm7 2v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1"/></symbol><symbol class="bi bi-printer-fill" viewBox="0 0 16 16" id="printer-fill"><path d="M5 1a2 2 0 0 0-2 2v1h10V3a2 2 0 0 0-2-2zm6 8H5a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1"/><path d="M0 7a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-1v-2a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2H2a2 2 0 0 1-2-2zm2.5 1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/></symbol><symbol class="bi bi-projector" viewBox="0 0 16 16" id="projector"><path d="M14 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M2.5 6a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/><path d="M0 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2 1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1H5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1 2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-projector-fill" viewBox="0 0 16 16" id="projector-fill"><path d="M2 4a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2 1 1 0 0 0 1 1h1a1 1 0 0 0 1-1h6a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1 2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm.5 2h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1 0-1M14 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-12 1a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-puzzle" viewBox="0 0 16 16" id="puzzle"><path d="M3.112 3.645A1.5 1.5 0 0 1 4.605 2H7a.5.5 0 0 1 .5.5v.382c0 .696-.497 1.182-.872 1.469a.5.5 0 0 0-.115.118l-.012.025L6.5 4.5v.003l.003.01q.005.015.036.053a.9.9 0 0 0 .27.194C7.09 4.9 7.51 5 8 5c.492 0 .912-.1 1.19-.24a.9.9 0 0 0 .271-.194.2.2 0 0 0 .039-.063v-.009l-.012-.025a.5.5 0 0 0-.115-.118c-.375-.287-.872-.773-.872-1.469V2.5A.5.5 0 0 1 9 2h2.395a1.5 1.5 0 0 1 1.493 1.645L12.645 6.5h.237c.195 0 .42-.147.675-.48.21-.274.528-.52.943-.52.568 0 .947.447 1.154.862C15.877 6.807 16 7.387 16 8s-.123 1.193-.346 1.638c-.207.415-.586.862-1.154.862-.415 0-.733-.246-.943-.52-.255-.333-.48-.48-.675-.48h-.237l.243 2.855A1.5 1.5 0 0 1 11.395 14H9a.5.5 0 0 1-.5-.5v-.382c0-.696.497-1.182.872-1.469a.5.5 0 0 0 .115-.118l.012-.025.001-.006v-.003a.2.2 0 0 0-.039-.064.9.9 0 0 0-.27-.193C8.91 11.1 8.49 11 8 11s-.912.1-1.19.24a.9.9 0 0 0-.271.194.2.2 0 0 0-.039.063v.003l.001.006.012.025c.016.027.05.068.115.118.375.287.872.773.872 1.469v.382a.5.5 0 0 1-.5.5H4.605a1.5 1.5 0 0 1-1.493-1.645L3.356 9.5h-.238c-.195 0-.42.147-.675.48-.21.274-.528.52-.943.52-.568 0-.947-.447-1.154-.862C.123 9.193 0 8.613 0 8s.123-1.193.346-1.638C.553 5.947.932 5.5 1.5 5.5c.415 0 .733.246.943.52.255.333.48.48.675.48h.238zM4.605 3a.5.5 0 0 0-.498.55l.001.007.29 3.4A.5.5 0 0 1 3.9 7.5h-.782c-.696 0-1.182-.497-1.469-.872a.5.5 0 0 0-.118-.115l-.025-.012L1.5 6.5h-.003a.2.2 0 0 0-.064.039.9.9 0 0 0-.193.27C1.1 7.09 1 7.51 1 8s.1.912.24 1.19c.07.14.14.225.194.271a.2.2 0 0 0 .063.039H1.5l.006-.001.025-.012a.5.5 0 0 0 .118-.115c.287-.375.773-.872 1.469-.872H3.9a.5.5 0 0 1 .498.542l-.29 3.408a.5.5 0 0 0 .497.55h1.878c-.048-.166-.195-.352-.463-.557-.274-.21-.52-.528-.52-.943 0-.568.447-.947.862-1.154C6.807 10.123 7.387 10 8 10s1.193.123 1.638.346c.415.207.862.586.862 1.154 0 .415-.246.733-.52.943-.268.205-.415.39-.463.557h1.878a.5.5 0 0 0 .498-.55l-.001-.007-.29-3.4A.5.5 0 0 1 12.1 8.5h.782c.696 0 1.182.497 1.469.872.05.065.091.099.118.115l.025.012.006.001h.003a.2.2 0 0 0 .064-.039.9.9 0 0 0 .193-.27c.14-.28.24-.7.24-1.191s-.1-.912-.24-1.19a.9.9 0 0 0-.194-.271.2.2 0 0 0-.063-.039H14.5l-.006.001-.025.012a.5.5 0 0 0-.118.115c-.287.375-.773.872-1.469.872H12.1a.5.5 0 0 1-.498-.543l.29-3.407a.5.5 0 0 0-.497-.55H9.517c.048.166.195.352.463.557.274.21.52.528.52.943 0 .568-.447.947-.862 1.154C9.193 5.877 8.613 6 8 6s-1.193-.123-1.638-.346C5.947 5.447 5.5 5.068 5.5 4.5c0-.415.246-.733.52-.943.268-.205.415-.39.463-.557z"/></symbol><symbol class="bi bi-puzzle-fill" viewBox="0 0 16 16" id="puzzle-fill"><path d="M3.112 3.645A1.5 1.5 0 0 1 4.605 2H7a.5.5 0 0 1 .5.5v.382c0 .696-.497 1.182-.872 1.469a.5.5 0 0 0-.115.118l-.012.025L6.5 4.5v.003l.003.01q.005.015.036.053a.9.9 0 0 0 .27.194C7.09 4.9 7.51 5 8 5c.492 0 .912-.1 1.19-.24a.9.9 0 0 0 .271-.194.2.2 0 0 0 .036-.054l.003-.01v-.008l-.012-.025a.5.5 0 0 0-.115-.118c-.375-.287-.872-.773-.872-1.469V2.5A.5.5 0 0 1 9 2h2.395a1.5 1.5 0 0 1 1.493 1.645L12.645 6.5h.237c.195 0 .42-.147.675-.48.21-.274.528-.52.943-.52.568 0 .947.447 1.154.862C15.877 6.807 16 7.387 16 8s-.123 1.193-.346 1.638c-.207.415-.586.862-1.154.862-.415 0-.733-.246-.943-.52-.255-.333-.48-.48-.675-.48h-.237l.243 2.855A1.5 1.5 0 0 1 11.395 14H9a.5.5 0 0 1-.5-.5v-.382c0-.696.497-1.182.872-1.469a.5.5 0 0 0 .115-.118l.012-.025.001-.006v-.003l-.003-.01a.2.2 0 0 0-.036-.053.9.9 0 0 0-.27-.194C8.91 11.1 8.49 11 8 11s-.912.1-1.19.24a.9.9 0 0 0-.271.194.2.2 0 0 0-.036.054l-.003.01v.002l.001.006.012.025c.016.027.05.068.115.118.375.287.872.773.872 1.469v.382a.5.5 0 0 1-.5.5H4.605a1.5 1.5 0 0 1-1.493-1.645L3.356 9.5h-.238c-.195 0-.42.147-.675.48-.21.274-.528.52-.943.52-.568 0-.947-.447-1.154-.862C.123 9.193 0 8.613 0 8s.123-1.193.346-1.638C.553 5.947.932 5.5 1.5 5.5c.415 0 .733.246.943.52.255.333.48.48.675.48h.238z"/></symbol><symbol class="bi bi-qr-code" viewBox="0 0 16 16" id="qr-code"><path d="M2 2h2v2H2z"/><path d="M6 0v6H0V0zM5 1H1v4h4zM4 12H2v2h2z"/><path d="M6 10v6H0v-6zm-5 1v4h4v-4zm11-9h2v2h-2z"/><path d="M10 0v6h6V0zm5 1v4h-4V1zM8 1V0h1v2H8v2H7V1zm0 5V4h1v2zM6 8V7h1V6h1v2h1V7h5v1h-4v1H7V8zm0 0v1H2V8H1v1H0V7h3v1zm10 1h-1V7h1zm-1 0h-1v2h2v-1h-1zm-4 0h2v1h-1v1h-1zm2 3v-1h-1v1h-1v1H9v1h3v-2zm0 0h3v1h-2v1h-1zm-4-1v1h1v-2H7v1z"/><path d="M7 12h1v3h4v1H7zm9 2v2h-3v-1h2v-1z"/></symbol><symbol class="bi bi-qr-code-scan" viewBox="0 0 16 16" id="qr-code-scan"><path d="M0 .5A.5.5 0 0 1 .5 0h3a.5.5 0 0 1 0 1H1v2.5a.5.5 0 0 1-1 0zm12 0a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0V1h-2.5a.5.5 0 0 1-.5-.5M.5 12a.5.5 0 0 1 .5.5V15h2.5a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5m15 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1 0-1H15v-2.5a.5.5 0 0 1 .5-.5M4 4h1v1H4z"/><path d="M7 2H2v5h5zM3 3h3v3H3zm2 8H4v1h1z"/><path d="M7 9H2v5h5zm-4 1h3v3H3zm8-6h1v1h-1z"/><path d="M9 2h5v5H9zm1 1v3h3V3zM8 8v2h1v1H8v1h2v-2h1v2h1v-1h2v-1h-3V8zm2 2H9V9h1zm4 2h-1v1h-2v1h3zm-4 2v-1H8v1z"/><path d="M12 9h2V8h-2z"/></symbol><symbol class="bi bi-question" viewBox="0 0 16 16" id="question"><path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286m1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94"/></symbol><symbol class="bi bi-question-circle" viewBox="0 0 16 16" id="question-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286m1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94"/></symbol><symbol class="bi bi-question-circle-fill" viewBox="0 0 16 16" id="question-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.496 6.033h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286a.237.237 0 0 0 .241.247m2.325 6.443c.61 0 1.029-.394 1.029-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94 0 .533.425.927 1.01.927z"/></symbol><symbol class="bi bi-question-diamond" viewBox="0 0 16 16" id="question-diamond"><path d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134z"/><path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286m1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94"/></symbol><symbol class="bi bi-question-diamond-fill" viewBox="0 0 16 16" id="question-diamond-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM5.495 6.033a.237.237 0 0 1-.24-.247C5.35 4.091 6.737 3.5 8.005 3.5c1.396 0 2.672.73 2.672 2.24 0 1.08-.635 1.594-1.244 2.057-.737.559-1.01.768-1.01 1.486v.105a.25.25 0 0 1-.25.25h-.81a.25.25 0 0 1-.25-.246l-.004-.217c-.038-.927.495-1.498 1.168-1.987.59-.444.965-.736.965-1.371 0-.825-.628-1.168-1.314-1.168-.803 0-1.253.478-1.342 1.134-.018.137-.128.25-.266.25zm2.325 6.443c-.584 0-1.009-.394-1.009-.927 0-.552.425-.94 1.01-.94.609 0 1.028.388 1.028.94 0 .533-.42.927-1.029.927"/></symbol><symbol class="bi bi-question-lg" viewBox="0 0 16 16" id="question-lg"><path fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215 0 1.344-.665 2.288-1.79 2.973-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712 1.03-.632 1.397-1.135 1.397-2.028 0-.979-.758-1.698-1.926-1.698-1.009 0-1.71.529-1.938 1.402-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09 0-.618-.473-1.092-1.095-1.092-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14"/></symbol><symbol class="bi bi-question-octagon" viewBox="0 0 16 16" id="question-octagon"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/><path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286m1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94"/></symbol><symbol class="bi bi-question-octagon-fill" viewBox="0 0 16 16" id="question-octagon-fill"><path d="M11.46.146A.5.5 0 0 0 11.107 0H4.893a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353zM5.496 6.033a.237.237 0 0 1-.24-.247C5.35 4.091 6.737 3.5 8.005 3.5c1.396 0 2.672.73 2.672 2.24 0 1.08-.635 1.594-1.244 2.057-.737.559-1.01.768-1.01 1.486v.105a.25.25 0 0 1-.25.25h-.81a.25.25 0 0 1-.25-.246l-.004-.217c-.038-.927.495-1.498 1.168-1.987.59-.444.965-.736.965-1.371 0-.825-.628-1.168-1.314-1.168-.803 0-1.253.478-1.342 1.134-.018.137-.128.25-.266.25h-.825zm2.325 6.443c-.584 0-1.009-.394-1.009-.927 0-.552.425-.94 1.01-.94.609 0 1.028.388 1.028.94 0 .533-.42.927-1.029.927"/></symbol><symbol class="bi bi-question-square" viewBox="0 0 16 16" id="question-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286m1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94"/></symbol><symbol class="bi bi-question-square-fill" viewBox="0 0 16 16" id="question-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.496 6.033a.237.237 0 0 1-.24-.247C5.35 4.091 6.737 3.5 8.005 3.5c1.396 0 2.672.73 2.672 2.24 0 1.08-.635 1.594-1.244 2.057-.737.559-1.01.768-1.01 1.486v.105a.25.25 0 0 1-.25.25h-.81a.25.25 0 0 1-.25-.246l-.004-.217c-.038-.927.495-1.498 1.168-1.987.59-.444.965-.736.965-1.371 0-.825-.628-1.168-1.314-1.168-.803 0-1.253.478-1.342 1.134-.018.137-.128.25-.266.25h-.825zm2.325 6.443c-.584 0-1.009-.394-1.009-.927 0-.552.425-.94 1.01-.94.609 0 1.028.388 1.028.94 0 .533-.42.927-1.029.927"/></symbol><symbol class="bi bi-quora" viewBox="0 0 16 16" id="quora"><path d="M8.73 12.476c-.554-1.091-1.204-2.193-2.473-2.193-.242 0-.484.04-.707.142l-.43-.863c.525-.45 1.373-.808 2.464-.808 1.697 0 2.568.818 3.26 1.86.41-.89.605-2.093.605-3.584 0-3.724-1.165-5.636-3.885-5.636-2.68 0-3.839 1.912-3.839 5.636 0 3.704 1.159 5.596 3.84 5.596.425 0 .811-.046 1.166-.15Zm.665 1.3a7 7 0 0 1-1.83.244C3.994 14.02.5 11.172.5 7.03.5 2.849 3.995 0 7.564 0c3.63 0 7.09 2.828 7.09 7.03 0 2.337-1.09 4.236-2.675 5.464.512.767 1.04 1.277 1.773 1.277.802 0 1.125-.62 1.179-1.105h1.043c.061.647-.262 3.334-3.178 3.334-1.767 0-2.7-1.024-3.4-2.224Z"/></symbol><symbol class="bi bi-quote" viewBox="0 0 16 16" id="quote"><path d="M12 12a1 1 0 0 0 1-1V8.558a1 1 0 0 0-1-1h-1.388q0-.527.062-1.054.093-.558.31-.992t.559-.683q.34-.279.868-.279V3q-.868 0-1.52.372a3.3 3.3 0 0 0-1.085.992 4.9 4.9 0 0 0-.62 1.458A7.7 7.7 0 0 0 9 7.558V11a1 1 0 0 0 1 1zm-6 0a1 1 0 0 0 1-1V8.558a1 1 0 0 0-1-1H4.612q0-.527.062-1.054.094-.558.31-.992.217-.434.559-.683.34-.279.868-.279V3q-.868 0-1.52.372a3.3 3.3 0 0 0-1.085.992 4.9 4.9 0 0 0-.62 1.458A7.7 7.7 0 0 0 3 7.558V11a1 1 0 0 0 1 1z"/></symbol><symbol class="bi bi-r-circle" viewBox="0 0 16 16" id="r-circle"><path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.5 4.002h3.11c1.71 0 2.741.973 2.741 2.46 0 1.138-.667 1.94-1.495 2.24L11.5 12H9.98L8.52 8.924H6.836V12H5.5zm1.335 1.09v2.777h1.549c.995 0 1.573-.463 1.573-1.36 0-.913-.596-1.417-1.537-1.417z"/></symbol><symbol class="bi bi-r-circle-fill" viewBox="0 0 16 16" id="r-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.5 4.002V12h1.335V8.924H8.52L9.98 12h1.52L9.856 8.701c.828-.299 1.495-1.101 1.495-2.238 0-1.488-1.03-2.461-2.74-2.461zm1.335 1.09v2.777h1.549c.995 0 1.573-.463 1.573-1.36 0-.913-.596-1.417-1.537-1.417z"/></symbol><symbol class="bi bi-r-square" viewBox="0 0 16 16" id="r-square"><path d="M5.5 4.002h3.11c1.71 0 2.741.973 2.741 2.46 0 1.138-.667 1.94-1.495 2.24L11.5 12H9.98L8.52 8.924H6.836V12H5.5zm1.335 1.09v2.777h1.549c.995 0 1.573-.463 1.573-1.36 0-.913-.596-1.417-1.537-1.417z"/><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-r-square-fill" viewBox="0 0 16 16" id="r-square-fill"><path d="M6.835 5.092v2.777h1.549c.995 0 1.573-.463 1.573-1.36 0-.913-.596-1.417-1.537-1.417z"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.5 4.002h3.11c1.71 0 2.741.973 2.741 2.46 0 1.138-.667 1.94-1.495 2.24L11.5 12H9.98L8.52 8.924H6.836V12H5.5z"/></symbol><symbol class="bi bi-radar" viewBox="0 0 16 16" id="radar"><path d="M6.634 1.135A7 7 0 0 1 15 8a.5.5 0 0 1-1 0 6 6 0 1 0-6.5 5.98v-1.005A5 5 0 1 1 13 8a.5.5 0 0 1-1 0 4 4 0 1 0-4.5 3.969v-1.011A2.999 2.999 0 1 1 11 8a.5.5 0 0 1-1 0 2 2 0 1 0-2.5 1.936v-1.07a1 1 0 1 1 1 0V15.5a.5.5 0 0 1-1 0v-.518a7 7 0 0 1-.866-13.847"/></symbol><symbol class="bi bi-radioactive" viewBox="0 0 16 16" id="radioactive"><path d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8"/><path d="M9.653 5.496A3 3 0 0 0 8 5c-.61 0-1.179.183-1.653.496L4.694 2.992A5.97 5.97 0 0 1 8 2c1.222 0 2.358.365 3.306.992zm1.342 2.324a3 3 0 0 1-.884 2.312 3 3 0 0 1-.769.552l1.342 2.683c.57-.286 1.09-.66 1.538-1.103a6 6 0 0 0 1.767-4.624zm-5.679 5.548 1.342-2.684A3 3 0 0 1 5.005 7.82l-2.994-.18a6 6 0 0 0 3.306 5.728ZM10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/></symbol><symbol class="bi bi-rainbow" viewBox="0 0 16 16" id="rainbow"><path d="M8 4.5a7 7 0 0 0-7 7 .5.5 0 0 1-1 0 8 8 0 1 1 16 0 .5.5 0 0 1-1 0 7 7 0 0 0-7-7m0 2a5 5 0 0 0-5 5 .5.5 0 0 1-1 0 6 6 0 1 1 12 0 .5.5 0 0 1-1 0 5 5 0 0 0-5-5m0 2a3 3 0 0 0-3 3 .5.5 0 0 1-1 0 4 4 0 1 1 8 0 .5.5 0 0 1-1 0 3 3 0 0 0-3-3m0 2a1 1 0 0 0-1 1 .5.5 0 0 1-1 0 2 2 0 1 1 4 0 .5.5 0 0 1-1 0 1 1 0 0 0-1-1"/></symbol><symbol class="bi bi-receipt" viewBox="0 0 16 16" id="receipt"><path d="M1.92.506a.5.5 0 0 1 .434.14L3 1.293l.646-.647a.5.5 0 0 1 .708 0L5 1.293l.646-.647a.5.5 0 0 1 .708 0L7 1.293l.646-.647a.5.5 0 0 1 .708 0L9 1.293l.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .801.13l.5 1A.5.5 0 0 1 15 2v12a.5.5 0 0 1-.053.224l-.5 1a.5.5 0 0 1-.8.13L13 14.707l-.646.647a.5.5 0 0 1-.708 0L11 14.707l-.646.647a.5.5 0 0 1-.708 0L9 14.707l-.646.647a.5.5 0 0 1-.708 0L7 14.707l-.646.647a.5.5 0 0 1-.708 0L5 14.707l-.646.647a.5.5 0 0 1-.708 0L3 14.707l-.646.647a.5.5 0 0 1-.801-.13l-.5-1A.5.5 0 0 1 1 14V2a.5.5 0 0 1 .053-.224l.5-1a.5.5 0 0 1 .367-.27m.217 1.338L2 2.118v11.764l.137.274.51-.51a.5.5 0 0 1 .707 0l.646.647.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.509.509.137-.274V2.118l-.137-.274-.51.51a.5.5 0 0 1-.707 0L12 1.707l-.646.647a.5.5 0 0 1-.708 0L10 1.707l-.646.647a.5.5 0 0 1-.708 0L8 1.707l-.646.647a.5.5 0 0 1-.708 0L6 1.707l-.646.647a.5.5 0 0 1-.708 0L4 1.707l-.646.647a.5.5 0 0 1-.708 0z"/><path d="M3 4.5a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m8-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-receipt-cutoff" viewBox="0 0 16 16" id="receipt-cutoff"><path d="M3 4.5a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5M11.5 4a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/><path d="M2.354.646a.5.5 0 0 0-.801.13l-.5 1A.5.5 0 0 0 1 2v13H.5a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1H15V2a.5.5 0 0 0-.053-.224l-.5-1a.5.5 0 0 0-.8-.13L13 1.293l-.646-.647a.5.5 0 0 0-.708 0L11 1.293l-.646-.647a.5.5 0 0 0-.708 0L9 1.293 8.354.646a.5.5 0 0 0-.708 0L7 1.293 6.354.646a.5.5 0 0 0-.708 0L5 1.293 4.354.646a.5.5 0 0 0-.708 0L3 1.293zm-.217 1.198.51.51a.5.5 0 0 0 .707 0L4 1.707l.646.647a.5.5 0 0 0 .708 0L6 1.707l.646.647a.5.5 0 0 0 .708 0L8 1.707l.646.647a.5.5 0 0 0 .708 0L10 1.707l.646.647a.5.5 0 0 0 .708 0L12 1.707l.646.647a.5.5 0 0 0 .708 0l.509-.51.137.274V15H2V2.118z"/></symbol><symbol class="bi bi-reception-0" viewBox="0 0 16 16" id="reception-0"><path d="M0 13.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-reception-1" viewBox="0 0 16 16" id="reception-1"><path d="M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-reception-2" viewBox="0 0 16 16" id="reception-2"><path d="M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4 5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-reception-3" viewBox="0 0 16 16" id="reception-3"><path d="M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4 8a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-reception-4" viewBox="0 0 16 16" id="reception-4"><path d="M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-record" viewBox="0 0 16 16" id="record"><path d="M8 12a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0 1A5 5 0 1 0 8 3a5 5 0 0 0 0 10"/></symbol><symbol class="bi bi-record-btn" viewBox="0 0 16 16" id="record-btn"><path d="M8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-record-btn-fill" viewBox="0 0 16 16" id="record-btn-fill"><path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m8-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/></symbol><symbol class="bi bi-record-circle" viewBox="0 0 16 16" id="record-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/></symbol><symbol class="bi bi-record-circle-fill" viewBox="0 0 16 16" id="record-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/></symbol><symbol class="bi bi-record-fill" viewBox="0 0 16 16" id="record-fill"><path fill-rule="evenodd" d="M8 13A5 5 0 1 0 8 3a5 5 0 0 0 0 10"/></symbol><symbol class="bi bi-record2" viewBox="0 0 16 16" id="record2"><path d="M8 12a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0 1A5 5 0 1 0 8 3a5 5 0 0 0 0 10"/><path d="M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/></symbol><symbol class="bi bi-record2-fill" viewBox="0 0 16 16" id="record2-fill"><path d="M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/><path d="M8 13A5 5 0 1 0 8 3a5 5 0 0 0 0 10m0-2a3 3 0 1 1 0-6 3 3 0 0 1 0 6"/></symbol><symbol class="bi bi-recycle" viewBox="0 0 16 16" id="recycle"><path d="M9.302 1.256a1.5 1.5 0 0 0-2.604 0l-1.704 2.98a.5.5 0 0 0 .869.497l1.703-2.981a.5.5 0 0 1 .868 0l2.54 4.444-1.256-.337a.5.5 0 1 0-.26.966l2.415.647a.5.5 0 0 0 .613-.353l.647-2.415a.5.5 0 1 0-.966-.259l-.333 1.242zM2.973 7.773l-1.255.337a.5.5 0 1 1-.26-.966l2.416-.647a.5.5 0 0 1 .612.353l.647 2.415a.5.5 0 0 1-.966.259l-.333-1.242-2.545 4.454a.5.5 0 0 0 .434.748H5a.5.5 0 0 1 0 1H1.723A1.5 1.5 0 0 1 .421 12.24zm10.89 1.463a.5.5 0 1 0-.868.496l1.716 3.004a.5.5 0 0 1-.434.748h-5.57l.647-.646a.5.5 0 1 0-.708-.707l-1.5 1.5a.5.5 0 0 0 0 .707l1.5 1.5a.5.5 0 1 0 .708-.707l-.647-.647h5.57a1.5 1.5 0 0 0 1.302-2.244z"/></symbol><symbol class="bi bi-reddit" viewBox="0 0 16 16" id="reddit"><path d="M6.167 8a.83.83 0 0 0-.83.83c0 .459.372.84.83.831a.831.831 0 0 0 0-1.661m1.843 3.647c.315 0 1.403-.038 1.976-.611a.23.23 0 0 0 0-.306.213.213 0 0 0-.306 0c-.353.363-1.126.487-1.67.487-.545 0-1.308-.124-1.671-.487a.213.213 0 0 0-.306 0 .213.213 0 0 0 0 .306c.564.563 1.652.61 1.977.61zm.992-2.807c0 .458.373.83.831.83s.83-.381.83-.83a.831.831 0 0 0-1.66 0z"/><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.828-1.165c-.315 0-.602.124-.812.325-.801-.573-1.9-.945-3.121-.993l.534-2.501 1.738.372a.83.83 0 1 0 .83-.869.83.83 0 0 0-.744.468l-1.938-.41a.2.2 0 0 0-.153.028.2.2 0 0 0-.086.134l-.592 2.788c-1.24.038-2.358.41-3.17.992-.21-.2-.496-.324-.81-.324a1.163 1.163 0 0 0-.478 2.224q-.03.17-.029.353c0 1.795 2.091 3.256 4.669 3.256s4.668-1.451 4.668-3.256c0-.114-.01-.238-.029-.353.401-.181.688-.592.688-1.069 0-.65-.525-1.165-1.165-1.165"/></symbol><symbol class="bi bi-regex" viewBox="0 0 16 16" id="regex"><path fill-rule="evenodd" d="M3.05 3.05a7 7 0 0 0 0 9.9.5.5 0 0 1-.707.707 8 8 0 0 1 0-11.314.5.5 0 1 1 .707.707m9.9-.707a.5.5 0 0 1 .707 0 8 8 0 0 1 0 11.314.5.5 0 0 1-.707-.707 7 7 0 0 0 0-9.9.5.5 0 0 1 0-.707M6 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0m5-6.5a.5.5 0 0 0-1 0v2.117L8.257 5.57a.5.5 0 0 0-.514.858L9.528 7.5 7.743 8.571a.5.5 0 1 0 .514.858L10 8.383V10.5a.5.5 0 1 0 1 0V8.383l1.743 1.046a.5.5 0 0 0 .514-.858L11.472 7.5l1.785-1.071a.5.5 0 1 0-.514-.858L11 6.617z"/></symbol><symbol class="bi bi-repeat" viewBox="0 0 16 16" id="repeat"><path d="M11 5.466V4H5a4 4 0 0 0-3.584 5.777.5.5 0 1 1-.896.446A5 5 0 0 1 5 3h6V1.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384l-2.36 1.966a.25.25 0 0 1-.41-.192m3.81.086a.5.5 0 0 1 .67.225A5 5 0 0 1 11 13H5v1.466a.25.25 0 0 1-.41.192l-2.36-1.966a.25.25 0 0 1 0-.384l2.36-1.966a.25.25 0 0 1 .41.192V12h6a4 4 0 0 0 3.585-5.777.5.5 0 0 1 .225-.67Z"/></symbol><symbol class="bi bi-repeat-1" viewBox="0 0 16 16" id="repeat-1"><path d="M11 4v1.466a.25.25 0 0 0 .41.192l2.36-1.966a.25.25 0 0 0 0-.384l-2.36-1.966a.25.25 0 0 0-.41.192V3H5a5 5 0 0 0-4.48 7.223.5.5 0 0 0 .896-.446A4 4 0 0 1 5 4zm4.48 1.777a.5.5 0 0 0-.896.446A4 4 0 0 1 11 12H5.001v-1.466a.25.25 0 0 0-.41-.192l-2.36 1.966a.25.25 0 0 0 0 .384l2.36 1.966a.25.25 0 0 0 .41-.192V13h6a5 5 0 0 0 4.48-7.223Z"/><path d="M9 5.5a.5.5 0 0 0-.854-.354l-1.75 1.75a.5.5 0 1 0 .708.708L8 6.707V10.5a.5.5 0 0 0 1 0z"/></symbol><symbol class="bi bi-reply" viewBox="0 0 16 16" id="reply"><path d="M6.598 5.013a.144.144 0 0 1 .202.134V6.3a.5.5 0 0 0 .5.5c.667 0 2.013.005 3.3.822.984.624 1.99 1.76 2.595 3.876-1.02-.983-2.185-1.516-3.205-1.799a8.7 8.7 0 0 0-1.921-.306 7 7 0 0 0-.798.008h-.013l-.005.001h-.001L7.3 9.9l-.05-.498a.5.5 0 0 0-.45.498v1.153c0 .108-.11.176-.202.134L2.614 8.254l-.042-.028a.147.147 0 0 1 0-.252l.042-.028zM7.8 10.386q.103 0 .223.006c.434.02 1.034.086 1.7.271 1.326.368 2.896 1.202 3.94 3.08a.5.5 0 0 0 .933-.305c-.464-3.71-1.886-5.662-3.46-6.66-1.245-.79-2.527-.942-3.336-.971v-.66a1.144 1.144 0 0 0-1.767-.96l-3.994 2.94a1.147 1.147 0 0 0 0 1.946l3.994 2.94a1.144 1.144 0 0 0 1.767-.96z"/></symbol><symbol class="bi bi-reply-all" viewBox="0 0 16 16" id="reply-all"><path d="M8.098 5.013a.144.144 0 0 1 .202.134V6.3a.5.5 0 0 0 .5.5c.667 0 2.013.005 3.3.822.984.624 1.99 1.76 2.595 3.876-1.02-.983-2.185-1.516-3.205-1.799a8.7 8.7 0 0 0-1.921-.306 7 7 0 0 0-.798.008h-.013l-.005.001h-.001L8.8 9.9l-.05-.498a.5.5 0 0 0-.45.498v1.153c0 .108-.11.176-.202.134L4.114 8.254l-.042-.028a.147.147 0 0 1 0-.252l.042-.028zM9.3 10.386q.102 0 .223.006c.434.02 1.034.086 1.7.271 1.326.368 2.896 1.202 3.94 3.08a.5.5 0 0 0 .933-.305c-.464-3.71-1.886-5.662-3.46-6.66-1.245-.79-2.527-.942-3.336-.971v-.66a1.144 1.144 0 0 0-1.767-.96l-3.994 2.94a1.147 1.147 0 0 0 0 1.946l3.994 2.94a1.144 1.144 0 0 0 1.767-.96z"/><path d="M5.232 4.293a.5.5 0 0 0-.7-.106L.54 7.127a1.147 1.147 0 0 0 0 1.946l3.994 2.94a.5.5 0 1 0 .593-.805L1.114 8.254l-.042-.028a.147.147 0 0 1 0-.252l.042-.028 4.012-2.954a.5.5 0 0 0 .106-.699"/></symbol><symbol class="bi bi-reply-all-fill" viewBox="0 0 16 16" id="reply-all-fill"><path d="M8.021 11.9 3.453 8.62a.72.72 0 0 1 0-1.238L8.021 4.1a.716.716 0 0 1 1.079.619V6c1.5 0 6 0 7 8-2.5-4.5-7-4-7-4v1.281c0 .56-.606.898-1.079.62z"/><path d="M5.232 4.293a.5.5 0 0 1-.106.7L1.114 7.945l-.042.028a.147.147 0 0 0 0 .252l.042.028 4.012 2.954a.5.5 0 1 1-.593.805L.539 9.073a1.147 1.147 0 0 1 0-1.946l3.994-2.94a.5.5 0 0 1 .699.106"/></symbol><symbol class="bi bi-reply-fill" viewBox="0 0 16 16" id="reply-fill"><path d="M5.921 11.9 1.353 8.62a.72.72 0 0 1 0-1.238L5.921 4.1A.716.716 0 0 1 7 4.719V6c1.5 0 6 0 7 8-2.5-4.5-7-4-7-4v1.281c0 .56-.606.898-1.079.62z"/></symbol><symbol class="bi bi-rewind" viewBox="0 0 16 16" id="rewind"><path d="M9.196 8 15 4.633v6.734zm-.792-.696a.802.802 0 0 0 0 1.392l6.363 3.692c.52.302 1.233-.043 1.233-.696V4.308c0-.653-.713-.998-1.233-.696z"/><path d="M1.196 8 7 4.633v6.734zm-.792-.696a.802.802 0 0 0 0 1.392l6.363 3.692c.52.302 1.233-.043 1.233-.696V4.308c0-.653-.713-.998-1.233-.696z"/></symbol><symbol class="bi bi-rewind-btn" viewBox="0 0 16 16" id="rewind-btn"><path d="M7.21 5.093A.5.5 0 0 1 8 5.5v1.886l3.21-2.293A.5.5 0 0 1 12 5.5v5a.5.5 0 0 1-.79.407L8 8.614V10.5a.5.5 0 0 1-.79.407l-3.5-2.5a.5.5 0 0 1 0-.814z"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-rewind-btn-fill" viewBox="0 0 16 16" id="rewind-btn-fill"><path d="M0 4v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2m7.729 1.055A.5.5 0 0 1 8 5.5v1.886l3.21-2.293A.5.5 0 0 1 12 5.5v5a.5.5 0 0 1-.79.407L8 8.614V10.5a.5.5 0 0 1-.79.407l-3.5-2.5a.5.5 0 0 1 0-.814l3.5-2.5a.5.5 0 0 1 .519-.038"/></symbol><symbol class="bi bi-rewind-circle" viewBox="0 0 16 16" id="rewind-circle"><path d="M7.729 5.055a.5.5 0 0 0-.52.038l-3.5 2.5a.5.5 0 0 0 0 .814l3.5 2.5A.5.5 0 0 0 8 10.5V8.614l3.21 2.293A.5.5 0 0 0 12 10.5v-5a.5.5 0 0 0-.79-.407L8 7.386V5.5a.5.5 0 0 0-.271-.445"/><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/></symbol><symbol class="bi bi-rewind-circle-fill" viewBox="0 0 16 16" id="rewind-circle-fill"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M7.729 5.055A.5.5 0 0 1 8 5.5v1.886l3.21-2.293A.5.5 0 0 1 12 5.5v5a.5.5 0 0 1-.79.407L8 8.614V10.5a.5.5 0 0 1-.79.407l-3.5-2.5a.5.5 0 0 1 0-.814l3.5-2.5a.5.5 0 0 1 .519-.038"/></symbol><symbol class="bi bi-rewind-fill" viewBox="0 0 16 16" id="rewind-fill"><path d="M8.404 7.304a.802.802 0 0 0 0 1.392l6.363 3.692c.52.302 1.233-.043 1.233-.696V4.308c0-.653-.713-.998-1.233-.696z"/><path d="M.404 7.304a.802.802 0 0 0 0 1.392l6.363 3.692c.52.302 1.233-.043 1.233-.696V4.308c0-.653-.713-.998-1.233-.696z"/></symbol><symbol class="bi bi-robot" viewBox="0 0 16 16" id="robot"><path d="M6 12.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5M3 8.062C3 6.76 4.235 5.765 5.53 5.886a26.6 26.6 0 0 0 4.94 0C11.765 5.765 13 6.76 13 8.062v1.157a.93.93 0 0 1-.765.935c-.845.147-2.34.346-4.235.346s-3.39-.2-4.235-.346A.93.93 0 0 1 3 9.219zm4.542-.827a.25.25 0 0 0-.217.068l-.92.9a25 25 0 0 1-1.871-.183.25.25 0 0 0-.068.495c.55.076 1.232.149 2.02.193a.25.25 0 0 0 .189-.071l.754-.736.847 1.71a.25.25 0 0 0 .404.062l.932-.97a25 25 0 0 0 1.922-.188.25.25 0 0 0-.068-.495c-.538.074-1.207.145-1.98.189a.25.25 0 0 0-.166.076l-.754.785-.842-1.7a.25.25 0 0 0-.182-.135"/><path d="M8.5 1.866a1 1 0 1 0-1 0V3h-2A4.5 4.5 0 0 0 1 7.5V8a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1v1a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-1a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1v-.5A4.5 4.5 0 0 0 10.5 3h-2zM14 7.5V13a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7.5A3.5 3.5 0 0 1 5.5 4h5A3.5 3.5 0 0 1 14 7.5"/></symbol><symbol class="bi bi-rocket" viewBox="0 0 16 16" id="rocket"><path d="M8 8c.828 0 1.5-.895 1.5-2S8.828 4 8 4s-1.5.895-1.5 2S7.172 8 8 8"/><path d="M11.953 8.81c-.195-3.388-.968-5.507-1.777-6.819C9.707 1.233 9.23.751 8.857.454a3.5 3.5 0 0 0-.463-.315A2 2 0 0 0 8.25.064.55.55 0 0 0 8 0a.55.55 0 0 0-.266.073 2 2 0 0 0-.142.08 4 4 0 0 0-.459.33c-.37.308-.844.803-1.31 1.57-.805 1.322-1.577 3.433-1.774 6.756l-1.497 1.826-.004.005A2.5 2.5 0 0 0 2 12.202V15.5a.5.5 0 0 0 .9.3l1.125-1.5c.166-.222.42-.4.752-.57.214-.108.414-.192.625-.281l.198-.084c.7.428 1.55.635 2.4.635s1.7-.207 2.4-.635q.1.044.196.083c.213.09.413.174.627.282.332.17.586.348.752.57l1.125 1.5a.5.5 0 0 0 .9-.3v-3.298a2.5 2.5 0 0 0-.548-1.562zM12 10.445v.055c0 .866-.284 1.585-.75 2.14.146.064.292.13.425.199.39.197.8.46 1.1.86L13 14v-1.798a1.5 1.5 0 0 0-.327-.935zM4.75 12.64C4.284 12.085 4 11.366 4 10.5v-.054l-.673.82a1.5 1.5 0 0 0-.327.936V14l.225-.3c.3-.4.71-.664 1.1-.861.133-.068.279-.135.425-.199M8.009 1.073q.096.06.226.163c.284.226.683.621 1.09 1.28C10.137 3.836 11 6.237 11 10.5c0 .858-.374 1.48-.943 1.893C9.517 12.786 8.781 13 8 13s-1.517-.214-2.057-.607C5.373 11.979 5 11.358 5 10.5c0-4.182.86-6.586 1.677-7.928.409-.67.81-1.082 1.096-1.32q.136-.113.236-.18Z"/><path d="M9.479 14.361c-.48.093-.98.139-1.479.139s-.999-.046-1.479-.139L7.6 15.8a.5.5 0 0 0 .8 0z"/></symbol><symbol class="bi bi-rocket-fill" viewBox="0 0 16 16" id="rocket-fill"><path d="M10.175 1.991c.81 1.312 1.583 3.43 1.778 6.819l1.5 1.83A2.5 2.5 0 0 1 14 12.202V15.5a.5.5 0 0 1-.9.3l-1.125-1.5c-.166-.222-.42-.4-.752-.57-.214-.108-.414-.192-.627-.282l-.196-.083C9.7 13.793 8.85 14 8 14s-1.7-.207-2.4-.635q-.101.044-.198.084c-.211.089-.411.173-.625.281-.332.17-.586.348-.752.57L2.9 15.8a.5.5 0 0 1-.9-.3v-3.298a2.5 2.5 0 0 1 .548-1.562l.004-.005L4.049 8.81c.197-3.323.969-5.434 1.774-6.756.466-.767.94-1.262 1.31-1.57a3.7 3.7 0 0 1 .601-.41A.55.55 0 0 1 8 0c.101 0 .17.027.25.064q.056.025.145.075c.118.066.277.167.463.315.373.297.85.779 1.317 1.537M9.5 6c0-1.105-.672-2-1.5-2s-1.5.895-1.5 2S7.172 8 8 8s1.5-.895 1.5-2"/><path d="M8 14.5c.5 0 .999-.046 1.479-.139L8.4 15.8a.5.5 0 0 1-.8 0l-1.079-1.439c.48.093.98.139 1.479.139"/></symbol><symbol class="bi bi-rocket-takeoff" viewBox="0 0 16 16" id="rocket-takeoff"><path d="M9.752 6.193c.599.6 1.73.437 2.528-.362s.96-1.932.362-2.531c-.599-.6-1.73-.438-2.528.361-.798.8-.96 1.933-.362 2.532"/><path d="M15.811 3.312c-.363 1.534-1.334 3.626-3.64 6.218l-.24 2.408a2.56 2.56 0 0 1-.732 1.526L8.817 15.85a.51.51 0 0 1-.867-.434l.27-1.899c.04-.28-.013-.593-.131-.956a9 9 0 0 0-.249-.657l-.082-.202c-.815-.197-1.578-.662-2.191-1.277-.614-.615-1.079-1.379-1.275-2.195l-.203-.083a10 10 0 0 0-.655-.248c-.363-.119-.675-.172-.955-.132l-1.896.27A.51.51 0 0 1 .15 7.17l2.382-2.386c.41-.41.947-.67 1.524-.734h.006l2.4-.238C9.005 1.55 11.087.582 12.623.208c.89-.217 1.59-.232 2.08-.188.244.023.435.06.57.093q.1.026.16.045c.184.06.279.13.351.295l.029.073a3.5 3.5 0 0 1 .157.721c.055.485.051 1.178-.159 2.065m-4.828 7.475.04-.04-.107 1.081a1.54 1.54 0 0 1-.44.913l-1.298 1.3.054-.38c.072-.506-.034-.993-.172-1.418a9 9 0 0 0-.164-.45c.738-.065 1.462-.38 2.087-1.006M5.205 5c-.625.626-.94 1.351-1.004 2.09a9 9 0 0 0-.45-.164c-.424-.138-.91-.244-1.416-.172l-.38.054 1.3-1.3c.245-.246.566-.401.91-.44l1.08-.107zm9.406-3.961c-.38-.034-.967-.027-1.746.163-1.558.38-3.917 1.496-6.937 4.521-.62.62-.799 1.34-.687 2.051.107.676.483 1.362 1.048 1.928.564.565 1.25.941 1.924 1.049.71.112 1.429-.067 2.048-.688 3.079-3.083 4.192-5.444 4.556-6.987.183-.771.18-1.345.138-1.713a3 3 0 0 0-.045-.283 3 3 0 0 0-.3-.041Z"/><path d="M7.009 12.139a7.6 7.6 0 0 1-1.804-1.352A7.6 7.6 0 0 1 3.794 8.86c-1.102.992-1.965 5.054-1.839 5.18.125.126 3.936-.896 5.054-1.902Z"/></symbol><symbol class="bi bi-rocket-takeoff-fill" viewBox="0 0 16 16" id="rocket-takeoff-fill"><path d="M12.17 9.53c2.307-2.592 3.278-4.684 3.641-6.218.21-.887.214-1.58.16-2.065a3.6 3.6 0 0 0-.108-.563 2 2 0 0 0-.078-.23V.453c-.073-.164-.168-.234-.352-.295a2 2 0 0 0-.16-.045 4 4 0 0 0-.57-.093c-.49-.044-1.19-.03-2.08.188-1.536.374-3.618 1.343-6.161 3.604l-2.4.238h-.006a2.55 2.55 0 0 0-1.524.734L.15 7.17a.512.512 0 0 0 .433.868l1.896-.271c.28-.04.592.013.955.132.232.076.437.16.655.248l.203.083c.196.816.66 1.58 1.275 2.195.613.614 1.376 1.08 2.191 1.277l.082.202c.089.218.173.424.249.657.118.363.172.676.132.956l-.271 1.9a.512.512 0 0 0 .867.433l2.382-2.386c.41-.41.668-.949.732-1.526zm.11-3.699c-.797.8-1.93.961-2.528.362-.598-.6-.436-1.733.361-2.532.798-.799 1.93-.96 2.528-.361s.437 1.732-.36 2.531Z"/><path d="M5.205 10.787a7.6 7.6 0 0 0 1.804 1.352c-1.118 1.007-4.929 2.028-5.054 1.903-.126-.127.737-4.189 1.839-5.18.346.69.837 1.35 1.411 1.925"/></symbol><symbol class="bi bi-router" viewBox="0 0 16 16" id="router"><path d="M5.525 3.025a3.5 3.5 0 0 1 4.95 0 .5.5 0 1 0 .707-.707 4.5 4.5 0 0 0-6.364 0 .5.5 0 0 0 .707.707"/><path d="M6.94 4.44a1.5 1.5 0 0 1 2.12 0 .5.5 0 0 0 .708-.708 2.5 2.5 0 0 0-3.536 0 .5.5 0 0 0 .707.707ZM2.5 11a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m4.5-.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m2.5.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m1.5-.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m2 0a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0"/><path d="M2.974 2.342a.5.5 0 1 0-.948.316L3.806 8H1.5A1.5 1.5 0 0 0 0 9.5v2A1.5 1.5 0 0 0 1.5 13H2a.5.5 0 0 0 .5.5h2A.5.5 0 0 0 5 13h6a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5h.5a1.5 1.5 0 0 0 1.5-1.5v-2A1.5 1.5 0 0 0 14.5 8h-2.306l1.78-5.342a.5.5 0 1 0-.948-.316L11.14 8H4.86zM14.5 9a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5z"/><path d="M8.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-router-fill" viewBox="0 0 16 16" id="router-fill"><path d="M5.525 3.025a3.5 3.5 0 0 1 4.95 0 .5.5 0 1 0 .707-.707 4.5 4.5 0 0 0-6.364 0 .5.5 0 0 0 .707.707"/><path d="M6.94 4.44a1.5 1.5 0 0 1 2.12 0 .5.5 0 0 0 .708-.708 2.5 2.5 0 0 0-3.536 0 .5.5 0 0 0 .707.707Z"/><path d="M2.974 2.342a.5.5 0 1 0-.948.316L3.806 8H1.5A1.5 1.5 0 0 0 0 9.5v2A1.5 1.5 0 0 0 1.5 13H2a.5.5 0 0 0 .5.5h2A.5.5 0 0 0 5 13h6a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5h.5a1.5 1.5 0 0 0 1.5-1.5v-2A1.5 1.5 0 0 0 14.5 8h-2.306l1.78-5.342a.5.5 0 1 0-.948-.316L11.14 8H4.86zM2.5 11a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m4.5-.5a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0m2.5.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m1.5-.5a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0m2 0a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0"/><path d="M8.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-rss" viewBox="0 0 16 16" id="rss"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1m0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1"/></symbol><symbol class="bi bi-rss-fill" viewBox="0 0 16 16" id="rss-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm1.5 2.5c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1 0-2m0 4a6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1 0-2m.5 7a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></symbol><symbol class="bi bi-rulers" viewBox="0 0 16 16" id="rulers"><path d="M1 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-1H2v-1h4v-1H4v-1h2v-1H2v-1h4V9H4V8h2V7H2V6h4V2h1v4h1V4h1v2h1V2h1v4h1V4h1v2h1V2h1v4h1V1a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-safe" viewBox="0 0 16 16" id="safe"><path d="M1 1.5A1.5 1.5 0 0 1 2.5 0h12A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-12A1.5 1.5 0 0 1 1 14.5V13H.5a.5.5 0 0 1 0-1H1V8.5H.5a.5.5 0 0 1 0-1H1V4H.5a.5.5 0 0 1 0-1H1zM2.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h12a.5.5 0 0 0 .5-.5v-13a.5.5 0 0 0-.5-.5z"/><path d="M13.5 6a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 .5-.5M4.828 4.464a.5.5 0 0 1 .708 0l1.09 1.09a3 3 0 0 1 3.476 0l1.09-1.09a.5.5 0 1 1 .707.708l-1.09 1.09c.74 1.037.74 2.44 0 3.476l1.09 1.09a.5.5 0 1 1-.707.708l-1.09-1.09a3 3 0 0 1-3.476 0l-1.09 1.09a.5.5 0 1 1-.708-.708l1.09-1.09a3 3 0 0 1 0-3.476l-1.09-1.09a.5.5 0 0 1 0-.708M6.95 6.586a2 2 0 1 0 2.828 2.828A2 2 0 0 0 6.95 6.586"/></symbol><symbol class="bi bi-safe-fill" viewBox="0 0 16 16" id="safe-fill"><path d="M9.778 9.414A2 2 0 1 1 6.95 6.586a2 2 0 0 1 2.828 2.828"/><path d="M2.5 0A1.5 1.5 0 0 0 1 1.5V3H.5a.5.5 0 0 0 0 1H1v3.5H.5a.5.5 0 0 0 0 1H1V12H.5a.5.5 0 0 0 0 1H1v1.5A1.5 1.5 0 0 0 2.5 16h12a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 14.5 0zm3.036 4.464 1.09 1.09a3 3 0 0 1 3.476 0l1.09-1.09a.5.5 0 1 1 .707.708l-1.09 1.09c.74 1.037.74 2.44 0 3.476l1.09 1.09a.5.5 0 1 1-.707.708l-1.09-1.09a3 3 0 0 1-3.476 0l-1.09 1.09a.5.5 0 1 1-.708-.708l1.09-1.09a3 3 0 0 1 0-3.476l-1.09-1.09a.5.5 0 1 1 .708-.708M14 6.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-safe2" viewBox="0 0 16 16" id="safe2"><path d="M1 2.5A1.5 1.5 0 0 1 2.5 1h12A1.5 1.5 0 0 1 16 2.5v12a1.5 1.5 0 0 1-1.5 1.5h-12A1.5 1.5 0 0 1 1 14.5V14H.5a.5.5 0 0 1 0-1H1V9H.5a.5.5 0 0 1 0-1H1V4H.5a.5.5 0 0 1 0-1H1zM2.5 2a.5.5 0 0 0-.5.5v12a.5.5 0 0 0 .5.5h12a.5.5 0 0 0 .5-.5v-12a.5.5 0 0 0-.5-.5z"/><path d="M5.035 8h1.528q.072-.277.214-.516l-1.08-1.08A3.5 3.5 0 0 0 5.035 8m1.369-2.303 1.08 1.08q.24-.142.516-.214V5.035a3.5 3.5 0 0 0-1.596.662M9 5.035v1.528q.277.072.516.214l1.08-1.08A3.5 3.5 0 0 0 9 5.035m2.303 1.369-1.08 1.08q.142.24.214.516h1.528a3.5 3.5 0 0 0-.662-1.596M11.965 9h-1.528q-.072.277-.214.516l1.08 1.08A3.5 3.5 0 0 0 11.965 9m-1.369 2.303-1.08-1.08q-.24.142-.516.214v1.528a3.5 3.5 0 0 0 1.596-.662M8 11.965v-1.528a2 2 0 0 1-.516-.214l-1.08 1.08A3.5 3.5 0 0 0 8 11.965m-2.303-1.369 1.08-1.08A2 2 0 0 1 6.563 9H5.035c.085.593.319 1.138.662 1.596M4 8.5a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0m4.5-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/></symbol><symbol class="bi bi-safe2-fill" viewBox="0 0 16 16" id="safe2-fill"><path d="M6.563 8H5.035a3.5 3.5 0 0 1 .662-1.596l1.08 1.08q-.142.24-.214.516m.921-1.223-1.08-1.08A3.5 3.5 0 0 1 8 5.035v1.528q-.277.072-.516.214M9 6.563V5.035a3.5 3.5 0 0 1 1.596.662l-1.08 1.08A2 2 0 0 0 9 6.563m1.223.921 1.08-1.08c.343.458.577 1.003.662 1.596h-1.528a2 2 0 0 0-.214-.516M10.437 9h1.528a3.5 3.5 0 0 1-.662 1.596l-1.08-1.08q.142-.24.214-.516m-.921 1.223 1.08 1.08A3.5 3.5 0 0 1 9 11.965v-1.528q.277-.072.516-.214M8 10.437v1.528a3.5 3.5 0 0 1-1.596-.662l1.08-1.08q.24.142.516.214m-1.223-.921-1.08 1.08A3.5 3.5 0 0 1 5.035 9h1.528q.072.277.214.516M7.5 8.5a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/><path d="M2.5 1A1.5 1.5 0 0 0 1 2.5V3H.5a.5.5 0 0 0 0 1H1v4H.5a.5.5 0 0 0 0 1H1v4H.5a.5.5 0 0 0 0 1H1v.5A1.5 1.5 0 0 0 2.5 16h12a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 14.5 1zm6 3a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9"/></symbol><symbol class="bi bi-save" viewBox="0 0 16 16" id="save"><path d="M2 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H9.5a1 1 0 0 0-1 1v7.293l2.646-2.647a.5.5 0 0 1 .708.708l-3.5 3.5a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L7.5 9.293V2a2 2 0 0 1 2-2H14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h2.5a.5.5 0 0 1 0 1z"/></symbol><symbol class="bi bi-save-fill" viewBox="0 0 16 16" id="save-fill"><path d="M8.5 1.5A1.5 1.5 0 0 1 10 0h4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h6c-.314.418-.5.937-.5 1.5v7.793L4.854 6.646a.5.5 0 1 0-.708.708l3.5 3.5a.5.5 0 0 0 .708 0l3.5-3.5a.5.5 0 0 0-.708-.708L8.5 9.293z"/></symbol><symbol class="bi bi-save2" viewBox="0 0 16 16" id="save2"><path d="M2 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H9.5a1 1 0 0 0-1 1v4.5h2a.5.5 0 0 1 .354.854l-2.5 2.5a.5.5 0 0 1-.708 0l-2.5-2.5A.5.5 0 0 1 5.5 6.5h2V2a2 2 0 0 1 2-2H14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h2.5a.5.5 0 0 1 0 1z"/></symbol><symbol class="bi bi-save2-fill" viewBox="0 0 16 16" id="save2-fill"><path d="M8.5 1.5A1.5 1.5 0 0 1 10 0h4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h6c-.314.418-.5.937-.5 1.5v6h-2a.5.5 0 0 0-.354.854l2.5 2.5a.5.5 0 0 0 .708 0l2.5-2.5A.5.5 0 0 0 10.5 7.5h-2z"/></symbol><symbol class="bi bi-scissors" viewBox="0 0 16 16" id="scissors"><path d="M3.5 3.5c-.614-.884-.074-1.962.858-2.5L8 7.226 11.642 1c.932.538 1.472 1.616.858 2.5L8.81 8.61l1.556 2.661a2.5 2.5 0 1 1-.794.637L8 9.73l-1.572 2.177a2.5 2.5 0 1 1-.794-.637L7.19 8.61zm2.5 10a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0m7 0a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/></symbol><symbol class="bi bi-scooter" viewBox="0 0 16 16" id="scooter"><path fill-rule="evenodd" d="M9 2.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-.39l1.4 7a2.5 2.5 0 1 1-.98.195l-.189-.938-2.43 3.527A.5.5 0 0 1 9.5 13H4.95a2.5 2.5 0 1 1 0-1h4.287l2.831-4.11L11.09 3H9.5a.5.5 0 0 1-.5-.5M3.915 12a1.5 1.5 0 1 0 0 1H2.5a.5.5 0 0 1 0-1zm8.817-.789A1.499 1.499 0 0 0 13.5 14a1.5 1.5 0 0 0 .213-2.985l.277 1.387a.5.5 0 0 1-.98.196z"/></symbol><symbol class="bi bi-screwdriver" viewBox="0 0 16 16" id="screwdriver"><path d="M0 .995.995 0l3.064 2.19a1 1 0 0 1 .417.809v.07c0 .264.105.517.291.704l5.677 5.676.909-.303a1 1 0 0 1 1.018.24l3.338 3.339a.995.995 0 0 1 0 1.406L14.13 15.71a.995.995 0 0 1-1.406 0l-3.337-3.34a1 1 0 0 1-.24-1.018l.302-.909-5.676-5.677a1 1 0 0 0-.704-.291H3a1 1 0 0 1-.81-.417zm11.293 9.595a.497.497 0 1 0-.703.703l2.984 2.984a.497.497 0 0 0 .703-.703z"/></symbol><symbol class="bi bi-sd-card" viewBox="0 0 16 16" id="sd-card"><path d="M6.25 3.5a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0z"/><path fill-rule="evenodd" d="M5.914 0H12.5A1.5 1.5 0 0 1 14 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5V3.914c0-.398.158-.78.44-1.06L4.853.439A1.5 1.5 0 0 1 5.914 0M13 1.5a.5.5 0 0 0-.5-.5H5.914a.5.5 0 0 0-.353.146L3.146 3.561A.5.5 0 0 0 3 3.914V14.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5z"/></symbol><symbol class="bi bi-sd-card-fill" viewBox="0 0 16 16" id="sd-card-fill"><path d="M12.5 0H5.914a1.5 1.5 0 0 0-1.06.44L2.439 2.853A1.5 1.5 0 0 0 2 3.914V14.5A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 12.5 0m-7 2.75a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m2 0a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m2.75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 1.5 0m1.25-.75a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75"/></symbol><symbol class="bi bi-search" viewBox="0 0 16 16" id="search"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0"/></symbol><symbol class="bi bi-search-heart" viewBox="0 0 16 16" id="search-heart"><path d="M6.5 4.482c1.664-1.673 5.825 1.254 0 5.018-5.825-3.764-1.664-6.69 0-5.018"/><path d="M13 6.5a6.47 6.47 0 0 1-1.258 3.844q.06.044.115.098l3.85 3.85a1 1 0 0 1-1.414 1.415l-3.85-3.85a1 1 0 0 1-.1-.115h.002A6.5 6.5 0 1 1 13 6.5M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11"/></symbol><symbol class="bi bi-search-heart-fill" viewBox="0 0 16 16" id="search-heart-fill"><path d="M6.5 13a6.47 6.47 0 0 0 3.845-1.258h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1A6.47 6.47 0 0 0 13 6.5 6.5 6.5 0 0 0 6.5 0a6.5 6.5 0 1 0 0 13m0-8.518c1.664-1.673 5.825 1.254 0 5.018-5.825-3.764-1.664-6.69 0-5.018"/></symbol><symbol class="bi bi-segmented-nav" viewBox="0 0 16 16" id="segmented-nav"><path d="M0 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm6 3h4V5H6zm9-1V6a1 1 0 0 0-1-1h-3v4h3a1 1 0 0 0 1-1"/></symbol><symbol class="bi bi-send" viewBox="0 0 16 16" id="send"><path d="M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576zm6.787-8.201L1.591 6.602l4.339 2.76z"/></symbol><symbol class="bi bi-send-arrow-down" viewBox="0 0 16 16" id="send-arrow-down"><path fill-rule="evenodd" d="M15.854.146a.5.5 0 0 1 .11.54l-2.8 7a.5.5 0 1 1-.928-.372l1.895-4.738-7.494 7.494 1.376 2.162a.5.5 0 1 1-.844.537l-1.531-2.407L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM5.93 9.363l7.494-7.494L1.591 6.602z"/><path fill-rule="evenodd" d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-1.646a.5.5 0 0 1-.722-.016l-1.149-1.25a.5.5 0 1 1 .737-.676l.28.305V11a.5.5 0 0 1 1 0v1.793l.396-.397a.5.5 0 0 1 .708.708z"/></symbol><symbol class="bi bi-send-arrow-down-fill" viewBox="0 0 16 16" id="send-arrow-down-fill"><path fill-rule="evenodd" d="M15.854.146a.5.5 0 0 1 .11.54L13.026 8.03A4.5 4.5 0 0 0 8 12.5c0 .5 0 1.5-.773.36l-1.59-2.498L.644 7.184l-.002-.001-.41-.261a.5.5 0 0 1 .083-.886l.452-.18.001-.001L15.314.035a.5.5 0 0 1 .54.111M6.637 10.07l7.494-7.494.471-1.178-1.178.471L5.93 9.363l.338.215a.5.5 0 0 1 .154.154z"/><path fill-rule="evenodd" d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-1.646a.5.5 0 0 1-.722-.016l-1.149-1.25a.5.5 0 1 1 .737-.676l.28.305V11a.5.5 0 0 1 1 0v1.793l.396-.397a.5.5 0 0 1 .708.708z"/></symbol><symbol class="bi bi-send-arrow-up" viewBox="0 0 16 16" id="send-arrow-up"><path fill-rule="evenodd" d="M15.854.146a.5.5 0 0 1 .11.54l-2.8 7a.5.5 0 1 1-.928-.372l1.895-4.738-7.494 7.494 1.376 2.162a.5.5 0 1 1-.844.537l-1.531-2.407L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM5.93 9.363l7.494-7.494L1.591 6.602z"/><path fill-rule="evenodd" d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.354a.5.5 0 0 0-.722.016l-1.149 1.25a.5.5 0 1 0 .737.676l.28-.305V14a.5.5 0 0 0 1 0v-1.793l.396.397a.5.5 0 0 0 .708-.708z"/></symbol><symbol class="bi bi-send-arrow-up-fill" viewBox="0 0 16 16" id="send-arrow-up-fill"><path fill-rule="evenodd" d="M15.854.146a.5.5 0 0 1 .11.54L13.026 8.03A4.5 4.5 0 0 0 8 12.5c0 .5 0 1.5-.773.36l-1.59-2.498L.644 7.184l-.002-.001-.41-.261a.5.5 0 0 1 .083-.886l.452-.18.001-.001L15.314.035a.5.5 0 0 1 .54.111M6.637 10.07l7.494-7.494.471-1.178-1.178.471L5.93 9.363l.338.215a.5.5 0 0 1 .154.154z"/><path fill-rule="evenodd" d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.354a.5.5 0 0 0-.722.016l-1.149 1.25a.5.5 0 1 0 .737.676l.28-.305V14a.5.5 0 0 0 1 0v-1.793l.396.397a.5.5 0 0 0 .708-.708z"/></symbol><symbol class="bi bi-send-check" viewBox="0 0 16 16" id="send-check"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-1.993-1.679a.5.5 0 0 0-.686.172l-1.17 1.95-.547-.547a.5.5 0 0 0-.708.708l.774.773a.75.75 0 0 0 1.174-.144l1.335-2.226a.5.5 0 0 0-.172-.686"/></symbol><symbol class="bi bi-send-check-fill" viewBox="0 0 16 16" id="send-check-fill"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-1.993-1.679a.5.5 0 0 0-.686.172l-1.17 1.95-.547-.547a.5.5 0 0 0-.708.708l.774.773a.75.75 0 0 0 1.174-.144l1.335-2.226a.5.5 0 0 0-.172-.686"/></symbol><symbol class="bi bi-send-dash" viewBox="0 0 16 16" id="send-dash"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-send-dash-fill" viewBox="0 0 16 16" id="send-dash-fill"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-send-exclamation" viewBox="0 0 16 16" id="send-exclamation"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1.5a.5.5 0 0 1-1 0V11a.5.5 0 0 1 1 0m0 3a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-send-exclamation-fill" viewBox="0 0 16 16" id="send-exclamation-fill"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/><path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1.5a.5.5 0 0 1-1 0V11a.5.5 0 0 1 1 0m0 3a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-send-fill" viewBox="0 0 16 16" id="send-fill"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 3.178 4.995.002.002.26.41a.5.5 0 0 0 .886-.083zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/></symbol><symbol class="bi bi-send-plus" viewBox="0 0 16 16" id="send-plus"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-send-plus-fill" viewBox="0 0 16 16" id="send-plus-fill"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-send-slash" viewBox="0 0 16 16" id="send-slash"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/><path d="M14.975 10.025a3.5 3.5 0 1 0-4.95 4.95 3.5 3.5 0 0 0 4.95-4.95m-4.243.707a2.5 2.5 0 0 1 3.147-.318l-3.465 3.465a2.5 2.5 0 0 1 .318-3.147m.39 3.854 3.464-3.465a2.501 2.501 0 0 1-3.465 3.465Z"/></symbol><symbol class="bi bi-send-slash-fill" viewBox="0 0 16 16" id="send-slash-fill"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/><path d="M14.975 10.025a3.5 3.5 0 1 0-4.95 4.95 3.5 3.5 0 0 0 4.95-4.95m-4.243.707a2.5 2.5 0 0 1 3.147-.318l-3.465 3.465a2.5 2.5 0 0 1 .318-3.147m.39 3.854 3.464-3.465a2.501 2.501 0 0 1-3.465 3.465Z"/></symbol><symbol class="bi bi-send-x" viewBox="0 0 16 16" id="send-x"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/></symbol><symbol class="bi bi-send-x-fill" viewBox="0 0 16 16" id="send-x-fill"><path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/></symbol><symbol class="bi bi-server" viewBox="0 0 16 16" id="server"><path d="M1.333 2.667C1.333 1.194 4.318 0 8 0s6.667 1.194 6.667 2.667V4c0 1.473-2.985 2.667-6.667 2.667S1.333 5.473 1.333 4z"/><path d="M1.333 6.334v3C1.333 10.805 4.318 12 8 12s6.667-1.194 6.667-2.667V6.334a6.5 6.5 0 0 1-1.458.79C11.81 7.684 9.967 8 8 8s-3.809-.317-5.208-.876a6.5 6.5 0 0 1-1.458-.79z"/><path d="M14.667 11.668a6.5 6.5 0 0 1-1.458.789c-1.4.56-3.242.876-5.21.876-1.966 0-3.809-.316-5.208-.876a6.5 6.5 0 0 1-1.458-.79v1.666C1.333 14.806 4.318 16 8 16s6.667-1.194 6.667-2.667z"/></symbol><symbol class="bi bi-shadows" viewBox="0 0 16 16" id="shadows"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8 7a.5.5 0 0 1 0-1h3.5q.048 0 .093.009A7 7 0 0 0 12.9 13H8a.5.5 0 0 1 0-1h5.745q.331-.474.581-1H8a.5.5 0 0 1 0-1h6.71a7 7 0 0 0 .22-1H8a.5.5 0 0 1 0-1h7q0-.51-.07-1H8a.5.5 0 0 1 0-1h6.71a7 7 0 0 0-.384-1H8a.5.5 0 0 1 0-1h5.745a7 7 0 0 0-.846-1H8a.5.5 0 0 1 0-1h3.608A7 7 0 1 0 8 15"/></symbol><symbol class="bi bi-share" viewBox="0 0 16 16" id="share"><path d="M13.5 1a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3M11 2.5a2.5 2.5 0 1 1 .603 1.628l-6.718 3.12a2.5 2.5 0 0 1 0 1.504l6.718 3.12a2.5 2.5 0 1 1-.488.876l-6.718-3.12a2.5 2.5 0 1 1 0-3.256l6.718-3.12A2.5 2.5 0 0 1 11 2.5m-8.5 4a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3m11 5.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3"/></symbol><symbol class="bi bi-share-fill" viewBox="0 0 16 16" id="share-fill"><path d="M11 2.5a2.5 2.5 0 1 1 .603 1.628l-6.718 3.12a2.5 2.5 0 0 1 0 1.504l6.718 3.12a2.5 2.5 0 1 1-.488.876l-6.718-3.12a2.5 2.5 0 1 1 0-3.256l6.718-3.12A2.5 2.5 0 0 1 11 2.5"/></symbol><symbol class="bi bi-shield" viewBox="0 0 16 16" id="shield"><path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/></symbol><symbol class="bi bi-shield-check" viewBox="0 0 16 16" id="shield-check"><path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/><path d="M10.854 5.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 7.793l2.646-2.647a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-shield-exclamation" viewBox="0 0 16 16" id="shield-exclamation"><path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/><path d="M7.001 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.553.553 0 0 1-1.1 0z"/></symbol><symbol class="bi bi-shield-fill" viewBox="0 0 16 16" id="shield-fill"><path d="M5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/></symbol><symbol class="bi bi-shield-fill-check" viewBox="0 0 16 16" id="shield-fill-check"><path fill-rule="evenodd" d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0m2.146 5.146a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 7.793z"/></symbol><symbol class="bi bi-shield-fill-exclamation" viewBox="0 0 16 16" id="shield-fill-exclamation"><path fill-rule="evenodd" d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0m-.55 8.502L7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0M8.002 12a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/></symbol><symbol class="bi bi-shield-fill-minus" viewBox="0 0 16 16" id="shield-fill-minus"><path fill-rule="evenodd" d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0M6 7.5a.5.5 0 0 1 0-1h4a.5.5 0 0 1 0 1z"/></symbol><symbol class="bi bi-shield-fill-plus" viewBox="0 0 16 16" id="shield-fill-plus"><path fill-rule="evenodd" d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0m-.5 5a.5.5 0 0 1 1 0v1.5H10a.5.5 0 0 1 0 1H8.5V9a.5.5 0 0 1-1 0V7.5H6a.5.5 0 0 1 0-1h1.5z"/></symbol><symbol class="bi bi-shield-fill-x" viewBox="0 0 16 16" id="shield-fill-x"><path d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0M6.854 5.146 8 6.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 7l1.147 1.146a.5.5 0 0 1-.708.708L8 7.707 6.854 8.854a.5.5 0 1 1-.708-.708L7.293 7 6.146 5.854a.5.5 0 1 1 .708-.708"/></symbol><symbol class="bi bi-shield-lock" viewBox="0 0 16 16" id="shield-lock"><path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/><path d="M9.5 6.5a1.5 1.5 0 0 1-1 1.415l.385 1.99a.5.5 0 0 1-.491.595h-.788a.5.5 0 0 1-.49-.595l.384-1.99a1.5 1.5 0 1 1 2-1.415"/></symbol><symbol class="bi bi-shield-lock-fill" viewBox="0 0 16 16" id="shield-lock-fill"><path fill-rule="evenodd" d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0m0 5a1.5 1.5 0 0 1 .5 2.915l.385 1.99a.5.5 0 0 1-.491.595h-.788a.5.5 0 0 1-.49-.595l.384-1.99A1.5 1.5 0 0 1 8 5"/></symbol><symbol class="bi bi-shield-minus" viewBox="0 0 16 16" id="shield-minus"><path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/><path d="M5.5 7a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-shield-plus" viewBox="0 0 16 16" id="shield-plus"><path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/><path d="M8 4.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V9a.5.5 0 0 1-1 0V7.5H6a.5.5 0 0 1 0-1h1.5V5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-shield-shaded" viewBox="0 0 16 16" id="shield-shaded"><path fill-rule="evenodd" d="M8 14.933a1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/></symbol><symbol class="bi bi-shield-slash" viewBox="0 0 16 16" id="shield-slash"><path fill-rule="evenodd" d="M1.093 3.093c-.465 4.275.885 7.46 2.513 9.589a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.3 11.3 0 0 0 1.733-1.525l-.745-.745a10.3 10.3 0 0 1-1.578 1.392c-.346.244-.652.42-.893.533q-.18.085-.293.118a1 1 0 0 1-.101.025 1 1 0 0 1-.1-.025 2 2 0 0 1-.294-.118 6 6 0 0 1-.893-.533 10.7 10.7 0 0 1-2.287-2.233C3.053 10.228 1.879 7.594 2.06 4.06zM3.98 1.98l-.852-.852A59 59 0 0 1 5.072.559C6.157.266 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.483 3.626-.332 6.491-1.551 8.616l-.77-.77c1.042-1.915 1.72-4.469 1.29-7.702a.48.48 0 0 0-.33-.39c-.65-.213-1.75-.56-2.836-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524a50 50 0 0 0-1.357.39zm9.666 12.374-13-13 .708-.708 13 13z"/></symbol><symbol class="bi bi-shield-slash-fill" viewBox="0 0 16 16" id="shield-slash-fill"><path fill-rule="evenodd" d="M1.093 3.093c-.465 4.275.885 7.46 2.513 9.589a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.3 11.3 0 0 0 1.733-1.525zm12.215 8.215L3.128 1.128A61 61 0 0 1 5.073.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.483 3.626-.332 6.491-1.551 8.616m.338 3.046-13-13 .708-.708 13 13z"/></symbol><symbol class="bi bi-shield-x" viewBox="0 0 16 16" id="shield-x"><path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/><path d="M6.146 5.146a.5.5 0 0 1 .708 0L8 6.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 7l1.147 1.146a.5.5 0 0 1-.708.708L8 7.707 6.854 8.854a.5.5 0 1 1-.708-.708L7.293 7 6.146 5.854a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-shift" viewBox="0 0 16 16" id="shift"><path d="M7.27 2.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v3a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-3H1.654C.78 10.5.326 9.455.924 8.816zM14.346 9.5 8 2.731 1.654 9.5H4.5a1 1 0 0 1 1 1v3h5v-3a1 1 0 0 1 1-1z"/></symbol><symbol class="bi bi-shift-fill" viewBox="0 0 16 16" id="shift-fill"><path d="M7.27 2.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v3a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-3H1.654C.78 10.5.326 9.455.924 8.816z"/></symbol><symbol class="bi bi-shop" viewBox="0 0 16 16" id="shop"><path d="M2.97 1.35A1 1 0 0 1 3.73 1h8.54a1 1 0 0 1 .76.35l2.609 3.044A1.5 1.5 0 0 1 16 5.37v.255a2.375 2.375 0 0 1-4.25 1.458A2.37 2.37 0 0 1 9.875 8 2.37 2.37 0 0 1 8 7.083 2.37 2.37 0 0 1 6.125 8a2.37 2.37 0 0 1-1.875-.917A2.375 2.375 0 0 1 0 5.625V5.37a1.5 1.5 0 0 1 .361-.976zm1.78 4.275a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 1 0 2.75 0V5.37a.5.5 0 0 0-.12-.325L12.27 2H3.73L1.12 5.045A.5.5 0 0 0 1 5.37v.255a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0M1.5 8.5A.5.5 0 0 1 2 9v6h1v-5a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v5h6V9a.5.5 0 0 1 1 0v6h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1V9a.5.5 0 0 1 .5-.5M4 15h3v-5H4zm5-5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zm3 0h-2v3h2z"/></symbol><symbol class="bi bi-shop-window" viewBox="0 0 16 16" id="shop-window"><path d="M2.97 1.35A1 1 0 0 1 3.73 1h8.54a1 1 0 0 1 .76.35l2.609 3.044A1.5 1.5 0 0 1 16 5.37v.255a2.375 2.375 0 0 1-4.25 1.458A2.37 2.37 0 0 1 9.875 8 2.37 2.37 0 0 1 8 7.083 2.37 2.37 0 0 1 6.125 8a2.37 2.37 0 0 1-1.875-.917A2.375 2.375 0 0 1 0 5.625V5.37a1.5 1.5 0 0 1 .361-.976zm1.78 4.275a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 1 0 2.75 0V5.37a.5.5 0 0 0-.12-.325L12.27 2H3.73L1.12 5.045A.5.5 0 0 0 1 5.37v.255a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0M1.5 8.5A.5.5 0 0 1 2 9v6h12V9a.5.5 0 0 1 1 0v6h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1V9a.5.5 0 0 1 .5-.5m2 .5a.5.5 0 0 1 .5.5V13h8V9.5a.5.5 0 0 1 1 0V13a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-shuffle" viewBox="0 0 16 16" id="shuffle"><path fill-rule="evenodd" d="M0 3.5A.5.5 0 0 1 .5 3H1c2.202 0 3.827 1.24 4.874 2.418.49.552.865 1.102 1.126 1.532.26-.43.636-.98 1.126-1.532C9.173 4.24 10.798 3 13 3v1c-1.798 0-3.173 1.01-4.126 2.082A9.6 9.6 0 0 0 7.556 8a9.6 9.6 0 0 0 1.317 1.918C9.828 10.99 11.204 12 13 12v1c-2.202 0-3.827-1.24-4.874-2.418A10.6 10.6 0 0 1 7 9.05c-.26.43-.636.98-1.126 1.532C4.827 11.76 3.202 13 1 13H.5a.5.5 0 0 1 0-1H1c1.798 0 3.173-1.01 4.126-2.082A9.6 9.6 0 0 0 6.444 8a9.6 9.6 0 0 0-1.317-1.918C4.172 5.01 2.796 4 1 4H.5a.5.5 0 0 1-.5-.5"/><path d="M13 5.466V1.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384l-2.36 1.966a.25.25 0 0 1-.41-.192m0 9v-3.932a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384l-2.36 1.966a.25.25 0 0 1-.41-.192"/></symbol><symbol class="bi bi-sign-dead-end" viewBox="0 0 16 16" id="sign-dead-end"><path d="M4.783 6v2h.69c.593 0 .886-.359.886-1.002S6.07 6 5.473 6zm.333.28h.32c.395 0 .582.24.582.722 0 .48-.186.718-.581.718h-.321zM7.82 7.72h-.918v-.602h.863V6.85h-.863v-.57h.917V6H6.571v2H7.82zm.573-.274L8.216 8h-.34l.688-2h.371l.689 2h-.352l-.177-.554zm.627-.255-.268-.845h-.015l-.27.845zM9.746 6v2h.69c.593 0 .886-.359.886-1.002S11.032 6 10.436 6zm.333.28h.32c.394 0 .582.24.582.722 0 .48-.186.718-.582.718h-.32zm-4.173 4.44h.917V11H5.575V9h1.248v.28h-.917v.57h.863v.268h-.863zm1.489.28V9.56h.013L8.344 11h.292V9h-.32v1.436h-.014L7.369 9h-.293v2zm1.56 0V9h.69c.596 0 .886.355.886.998S10.238 11 9.645 11zm.653-1.72h-.32v1.44h.32c.395 0 .581-.239.581-.718 0-.481-.187-.722-.581-.722"/><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/></symbol><symbol class="bi bi-sign-dead-end-fill" viewBox="0 0 16 16" id="sign-dead-end-fill"><path d="M5.116 6.28h.32c.395 0 .582.24.582.722 0 .48-.186.718-.581.718h-.321zm3.636.066.268.845h-.552l.27-.845zm1.327-.066h.32c.394 0 .582.24.582.722 0 .48-.186.718-.582.718h-.32zm-.792 3h.32c.395 0 .582.24.582.722 0 .48-.186.718-.581.718h-.32z"/><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM4.782 6h.69c.596 0 .886.355.886.998S6.066 8 5.473 8h-.69zM7.82 7.72V8H6.571V6H7.82v.28h-.917v.57h.863v.268h-.863v.602zm.397.28h-.34l.688-2h.371l.689 2h-.352l-.177-.554h-.702L8.216 8Zm1.53-2h.69c.596 0 .886.355.886.998S11.03 8 10.436 8h-.69zm-2.923 4.72V11H5.575V9h1.248v.28h-.917v.57h.863v.268h-.863v.602zm.572.28h-.32V9h.294l.933 1.436h.014V9h.32v2h-.292l-.936-1.44h-.013zm1.56-2h.69c.596 0 .886.355.886.998S10.238 11 9.645 11h-.69z"/></symbol><symbol class="bi bi-sign-do-not-enter" viewBox="0 0 16 16" id="sign-do-not-enter"><path d="M3.584 6V4h.69c.596 0 .886.355.886.998S4.867 6 4.274 6zm.653-1.72h-.32v1.44h.32c.396 0 .582-.239.582-.718 0-.481-.188-.722-.582-.722m2.729.585v.272c0 .566-.318.903-.83.903-.513 0-.833-.337-.833-.903v-.272c0-.569.32-.904.832-.904.513 0 .83.337.83.904Zm-.337.274v-.277c0-.413-.211-.617-.494-.617-.285 0-.495.204-.495.617v.277c0 .414.21.618.495.618.283 0 .494-.204.494-.618m1.358-.579V6h-.319V4h.293l.933 1.436h.015V4h.319v2h-.291L8 4.56zm3.142.305v.272c0 .566-.318.903-.83.903-.513 0-.833-.337-.833-.903v-.272c0-.569.32-.904.832-.904.513 0 .83.337.83.904Zm-.337.274v-.277c0-.413-.211-.617-.494-.617-.285 0-.495.204-.495.617v.277c0 .414.21.618.495.618.283 0 .494-.204.494-.618m1.236-.854V6h-.333V4.285h-.584V4h1.503v.285zM4.496 11.72h.917V12H4.165v-2h1.248v.28h-.917v.57h.862v.268h-.862zm1.489-1.16V12h-.32v-2h.294l.933 1.436h.014v-1.435h.32V12h-.292l-.936-1.44zm2.279-.275V12H7.93v-1.715h-.584V10H8.85v.284zM9.3 11.72h.917V12H8.97v-2h1.248v.28H9.3v.57h.863v.268H9.3zM10.47 10h.765c.42 0 .674.244.674.616a.575.575 0 0 1-.368.56l.404.824h-.373l-.36-.769h-.414V12h-.328zm.328.273v.694h.381c.245 0 .387-.115.387-.34 0-.228-.147-.354-.378-.354zM3.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m0-1A7 7 0 1 1 8 1a7 7 0 0 1 0 14"/></symbol><symbol class="bi bi-sign-do-not-enter-fill" viewBox="0 0 16 16" id="sign-do-not-enter-fill"><path d="M4.237 4.28h-.32v1.44h.32c.396 0 .582-.239.582-.718 0-.481-.188-.722-.582-.722m2.392.859v-.277c0-.413-.211-.617-.494-.617-.285 0-.495.204-.495.617v.277c0 .414.21.618.495.618.283 0 .494-.204.494-.618m4.163 0v-.277c0-.413-.211-.617-.494-.617-.285 0-.495.204-.495.617v.277c0 .414.21.618.495.618.283 0 .494-.204.494-.618m.006 5.828v-.694h.39c.231 0 .378.126.378.354 0 .225-.142.34-.387.34z"/><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M3.584 6V4h.69c.596 0 .886.355.886.998S4.867 6 4.274 6zm3.382-1.135v.272c0 .566-.318.903-.83.903-.513 0-.833-.337-.833-.903v-.272c0-.569.32-.904.832-.904.513 0 .83.337.83.904Zm1.021-.305V6h-.319V4h.293l.933 1.436h.015V4h.319v2h-.291L8 4.56zm3.142.305v.272c0 .566-.318.903-.83.903-.513 0-.833-.337-.833-.903v-.272c0-.569.32-.904.832-.904.513 0 .83.337.83.904Zm.899-.58V6h-.333V4.285h-.584V4h1.503v.285zM5.413 11.72V12H4.165v-2h1.248v.28h-.917v.57h.862v.268h-.862v.602zm.572.28h-.32v-2h.294l.933 1.436h.014v-1.435h.32V12h-.292l-.936-1.44h-.013zm2.279 0H7.93v-1.715h-.584V10H8.85v.284h-.586zm1.953-.28V12H8.97v-2h1.248v.28H9.3v.57h.863v.268H9.3v.602zM11.235 10c.42 0 .674.244.674.616a.575.575 0 0 1-.368.56l.404.824h-.373l-.36-.769h-.414V12h-.328v-2zM3.5 7h9a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-sign-intersection" viewBox="0 0 16 16" id="sign-intersection"><path d="M7.25 4v3.25H4v1.5h3.25V12h1.5V8.75H12v-1.5H8.75V4z"/><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/></symbol><symbol class="bi bi-sign-intersection-fill" viewBox="0 0 16 16" id="sign-intersection-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM7.25 4h1.5v3.25H12v1.5H8.75V12h-1.5V8.75H4v-1.5h3.25z"/></symbol><symbol class="bi bi-sign-intersection-side" viewBox="0 0 16 16" id="sign-intersection-side"><path d="M6.25 4v8h1.5V8.75H11v-1.5H7.75V4z"/><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/></symbol><symbol class="bi bi-sign-intersection-side-fill" viewBox="0 0 16 16" id="sign-intersection-side-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM6.25 4h1.5v3.25H11v1.5H7.75V12h-1.5z"/></symbol><symbol class="bi bi-sign-intersection-t" viewBox="0 0 16 16" id="sign-intersection-t"><path d="M5 5v1.5h2.25V12h1.5V6.5H11V5z"/><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/></symbol><symbol class="bi bi-sign-intersection-t-fill" viewBox="0 0 16 16" id="sign-intersection-t-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM5 5h6v1.5H8.75V12h-1.5V6.5H5z"/></symbol><symbol class="bi bi-sign-intersection-y" viewBox="0 0 16 16" id="sign-intersection-y"><path d="M10.493 5.197 8 7.483 5.507 5.197 4.493 6.303 7.25 8.83V12h1.5V8.83l2.757-2.527z"/><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/></symbol><symbol class="bi bi-sign-intersection-y-fill" viewBox="0 0 16 16" id="sign-intersection-y-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm1.443 4.762 1.014 1.106L8.75 8.83V12h-1.5V8.83L4.493 6.303l1.014-1.106L8 7.483z"/></symbol><symbol class="bi bi-sign-merge-left" viewBox="0 0 16 16" id="sign-merge-left"><path d="M7.25 6v1q-.211.451-.588.95c-.537.716-1.259 1.44-2.016 2.196l.708.708.015-.016c.652-.652 1.33-1.33 1.881-2.015V12h1.5V6h1.216a.25.25 0 0 0 .192-.41L8.192 3.23a.25.25 0 0 0-.384 0L5.842 5.59a.25.25 0 0 0 .192.41z"/><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/></symbol><symbol class="bi bi-sign-merge-left-fill" viewBox="0 0 16 16" id="sign-merge-left-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM7.25 6H6.034a.25.25 0 0 1-.192-.41l1.966-2.36a.25.25 0 0 1 .384 0l1.966 2.36a.25.25 0 0 1-.192.41H8.75v6h-1.5V8.823c-.551.686-1.229 1.363-1.88 2.015l-.016.016-.708-.708c.757-.756 1.48-1.48 2.016-2.196q.377-.499.588-.95z"/></symbol><symbol class="bi bi-sign-merge-right" viewBox="0 0 16 16" id="sign-merge-right"><path d="M8.75 6v1q.211.451.588.95c.537.716 1.259 1.44 2.016 2.196l-.708.708-.015-.016c-.652-.652-1.33-1.33-1.881-2.015V12h-1.5V6H6.034a.25.25 0 0 1-.192-.41l1.966-2.36a.25.25 0 0 1 .384 0l1.966 2.36a.25.25 0 0 1-.192.41z"/><path fill-rule="evenodd" d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/></symbol><symbol class="bi bi-sign-merge-right-fill" viewBox="0 0 16 16" id="sign-merge-right-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM8.75 6v1q.211.451.588.95c.537.716 1.259 1.44 2.016 2.196l-.708.708-.015-.016c-.652-.652-1.33-1.33-1.881-2.015V12h-1.5V6H6.034a.25.25 0 0 1-.192-.41l1.966-2.36a.25.25 0 0 1 .384 0l1.966 2.36a.25.25 0 0 1-.192.41z"/></symbol><symbol class="bi bi-sign-no-left-turn" viewBox="0 0 16 16" id="sign-no-left-turn"><path d="M0 8a8 8 0 1 0 16 0A8 8 0 0 0 0 8m3.416 5.29 5.988-5.987c.362.274.596.708.596 1.197V11h1V8.5c0-.765-.344-1.45-.885-1.908l3.176-3.176a7 7 0 0 1-9.874 9.874Zm-.707-.706a7 7 0 0 1 9.874-9.874L9.196 6.097A2.5 2.5 0 0 0 8.5 6H7V4.534a.25.25 0 0 0-.41-.192L4.23 6.308a.25.25 0 0 0 0 .384l2.36 1.966.026.02zM8.293 7 7 8.293V7z"/></symbol><symbol class="bi bi-sign-no-left-turn-fill" viewBox="0 0 16 16" id="sign-no-left-turn-fill"><path d="M2 13.292A8 8 0 0 1 13.293 2L9.195 6.099A2.5 2.5 0 0 0 8.5 6H7V4.534a.25.25 0 0 0-.41-.192L4.23 6.308a.25.25 0 0 0 0 .384l2.36 1.966.026.02zm.708.708A8 8 0 0 0 14 2.707l-3.885 3.884C10.656 7.05 11 7.735 11 8.5V11h-1V8.5c0-.489-.234-.923-.596-1.197l-6.696 6.696Z"/><path d="M8.293 7 7 8.293V7z"/></symbol><symbol class="bi bi-sign-no-parking" viewBox="0 0 16 16" id="sign-no-parking"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m5.29-3.416L9.63 8.923C10.5 8.523 11 7.66 11 6.586c0-1.482-.955-2.584-2.538-2.584H5.5v.79L3.416 2.71a7 7 0 0 1 9.874 9.874m-.706.707A7 7 0 0 1 2.71 3.417l2.79 2.79V12h1.283V9.164h1.674zM8.726 8.019 6.777 6.07v-.966H8.27c.893 0 1.419.539 1.419 1.482 0 .769-.35 1.273-.963 1.433m-1.949-.534.59.59h-.59z"/></symbol><symbol class="bi bi-sign-no-parking-fill" viewBox="0 0 16 16" id="sign-no-parking-fill"><path d="M13.292 14A8 8 0 0 1 2 2.707l3.5 3.5V12h1.283V9.164h1.674zm.708-.708-4.37-4.37C10.5 8.524 11 7.662 11 6.587c0-1.482-.955-2.584-2.538-2.584H5.5v.79L2.708 2.002A8 8 0 0 1 14 13.293Z"/><path d="M6.777 7.485v.59h.59zm1.949.535L6.777 6.07v-.966H8.27c.893 0 1.419.539 1.419 1.482 0 .769-.35 1.273-.963 1.433Z"/></symbol><symbol class="bi bi-sign-no-right-turn" viewBox="0 0 16 16" id="sign-no-right-turn"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.416 5.29L6.596 7.304A1.5 1.5 0 0 0 6 8.5V11H5V8.5c0-.765.344-1.45.885-1.908L2.709 3.416a7 7 0 0 0 9.874 9.874Zm.707-.706A7 7 0 0 0 3.417 2.71l3.388 3.388Q7.137 6.001 7.5 6H9V4.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L9.41 8.658l-.026.02zM7.707 7 9 8.293V7z"/></symbol><symbol class="bi bi-sign-no-right-turn-fill" viewBox="0 0 16 16" id="sign-no-right-turn-fill"><path d="M14 13.292A8 8 0 0 0 2.707 2l4.097 4.098Q7.137 6.001 7.5 6H9V4.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L9.41 8.658l-.026.02zm-.708.708A8 8 0 0 1 2 2.707l3.885 3.884A2.5 2.5 0 0 0 5 8.5V11h1V8.5c0-.489.234-.923.596-1.197l6.696 6.696Z"/><path d="M7.707 7 9 8.293V7z"/></symbol><symbol class="bi bi-sign-railroad" viewBox="0 0 16 16" id="sign-railroad"><path d="M11.303 6.584h1.064c.592 0 .936.334.936.844a.79.79 0 0 1-.485.748l.536 1.074h-.59l-.467-.994h-.473v.994h-.521zm.521.414v.861h.46c.292 0 .474-.14.474-.421 0-.286-.188-.44-.467-.44zm-8.771-.414h1.064c.592 0 .936.334.936.844 0 .39-.242.654-.485.748l.536 1.074h-.59l-.467-.994h-.473v.994h-.521zm.521.414v.861h.46c.292 0 .474-.14.474-.421 0-.286-.188-.44-.467-.44z"/><path d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L4.923 3.861 8 6.939l3.078-3.077L8.35 1.134Zm3.788 3.788L9.061 8l3.077 3.078 2.728-2.728a.495.495 0 0 0 0-.7zm-1.06 7.215L8 9.061l-3.077 3.077 2.727 2.728a.495.495 0 0 0 .7 0zm-7.216-1.06L6.939 8 3.862 4.923 1.134 7.65a.495.495 0 0 0 0 .7z"/></symbol><symbol class="bi bi-sign-railroad-fill" viewBox="0 0 16 16" id="sign-railroad-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L4.224 3.162 8 6.94l3.777-3.777L9.049.435Zm3.274 7.425v-.862h.467c.28 0 .467.154.467.44 0 .28-.182.421-.475.421h-.459Z"/><path d="M12.838 4.223 9.06 8l3.777 3.777 2.727-2.728c.58-.58.58-1.519 0-2.098zm.03 2.361c.591 0 .935.334.935.844a.79.79 0 0 1-.485.748l.536 1.074h-.59l-.467-.994h-.473v.994h-.521V6.584h1.064Zm-1.091 6.254L8 9.06l-3.777 3.777 2.728 2.727c.58.58 1.519.58 2.098 0zm-8.953-5.84v.861h.46c.292 0 .474-.14.474-.421 0-.286-.188-.44-.467-.44z"/><path d="M3.162 11.777 6.94 8 3.162 4.223.435 6.951c-.58.58-.58 1.519 0 2.098zm-.86-5.193h1.065c.592 0 .936.334.936.844 0 .39-.242.654-.485.748l.536 1.074h-.59l-.467-.994h-.473v.994h-.521V6.584Z"/></symbol><symbol class="bi bi-sign-stop" viewBox="0 0 16 16" id="sign-stop"><path d="M3.16 10.08c-.931 0-1.447-.493-1.494-1.132h.653c.065.346.396.583.891.583.524 0 .83-.246.83-.62 0-.303-.203-.467-.637-.572l-.656-.164c-.61-.147-.978-.51-.978-1.078 0-.706.597-1.184 1.444-1.184.853 0 1.386.475 1.436 1.087h-.645c-.064-.32-.352-.542-.797-.542-.472 0-.77.246-.77.6 0 .261.196.437.553.522l.654.161c.673.164 1.06.487 1.06 1.11 0 .736-.574 1.228-1.544 1.228Zm3.427-3.51V10h-.665V6.57H4.753V6h3.006v.568H6.587Z"/><path fill-rule="evenodd" d="M11.045 7.73v.544c0 1.131-.636 1.805-1.661 1.805-1.026 0-1.664-.674-1.664-1.805V7.73c0-1.136.638-1.807 1.664-1.807s1.66.674 1.66 1.807Zm-.674.547v-.553c0-.827-.422-1.234-.987-1.234-.572 0-.99.407-.99 1.234v.553c0 .83.418 1.237.99 1.237.565 0 .987-.408.987-1.237m1.15-2.276h1.535c.82 0 1.316.55 1.316 1.292 0 .747-.501 1.289-1.321 1.289h-.865V10h-.665zm1.436 2.036c.463 0 .735-.272.735-.744s-.272-.741-.735-.741h-.774v1.485z"/><path fill-rule="evenodd" d="M4.893 0a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353L11.46.146A.5.5 0 0 0 11.107 0zM1 5.1 5.1 1h5.8L15 5.1v5.8L10.9 15H5.1L1 10.9z"/></symbol><symbol class="bi bi-sign-stop-fill" viewBox="0 0 16 16" id="sign-stop-fill"><path d="M10.371 8.277v-.553c0-.827-.422-1.234-.987-1.234-.572 0-.99.407-.99 1.234v.553c0 .83.418 1.237.99 1.237.565 0 .987-.408.987-1.237m2.586-.24c.463 0 .735-.272.735-.744s-.272-.741-.735-.741h-.774v1.485z"/><path d="M4.893 0a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353L11.46.146A.5.5 0 0 0 11.107 0zM3.16 10.08c-.931 0-1.447-.493-1.494-1.132h.653c.065.346.396.583.891.583.524 0 .83-.246.83-.62 0-.303-.203-.467-.637-.572l-.656-.164c-.61-.147-.978-.51-.978-1.078 0-.706.597-1.184 1.444-1.184.853 0 1.386.475 1.436 1.087h-.645c-.064-.32-.352-.542-.797-.542-.472 0-.77.246-.77.6 0 .261.196.437.553.522l.654.161c.673.164 1.06.487 1.06 1.11 0 .736-.574 1.228-1.544 1.228Zm3.427-3.51V10h-.665V6.57H4.753V6h3.006v.568H6.587Zm4.458 1.16v.544c0 1.131-.636 1.805-1.661 1.805-1.026 0-1.664-.674-1.664-1.805V7.73c0-1.136.638-1.807 1.664-1.807s1.66.674 1.66 1.807ZM11.52 6h1.535c.82 0 1.316.55 1.316 1.292 0 .747-.501 1.289-1.321 1.289h-.865V10h-.665V6.001Z"/></symbol><symbol class="bi bi-sign-stop-lights" viewBox="0 0 16 16" id="sign-stop-lights"><path d="M6 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm2 2a1 1 0 1 0 0-2 1 1 0 0 0 0 2m0 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m1 2a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/></symbol><symbol class="bi bi-sign-stop-lights-fill" viewBox="0 0 16 16" id="sign-stop-lights-fill"><path d="M8 6a1 1 0 1 0 0-2 1 1 0 0 0 0 2m0 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m1 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM6 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1z"/></symbol><symbol class="bi bi-sign-turn-left" viewBox="0 0 16 16" id="sign-turn-left"><path d="M11 8.5A2.5 2.5 0 0 0 8.5 6H7V4.534a.25.25 0 0 0-.41-.192L4.23 6.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 7 8.466V7h1.5A1.5 1.5 0 0 1 10 8.5V11h1z"/><path fill-rule="evenodd" d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134Z"/></symbol><symbol class="bi bi-sign-turn-left-fill" viewBox="0 0 16 16" id="sign-turn-left-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM7 8.466a.25.25 0 0 1-.41.192L4.23 6.692a.25.25 0 0 1 0-.384l2.36-1.966a.25.25 0 0 1 .41.192V6h1.5A2.5 2.5 0 0 1 11 8.5V11h-1V8.5A1.5 1.5 0 0 0 8.5 7H7z"/></symbol><symbol class="bi bi-sign-turn-right" viewBox="0 0 16 16" id="sign-turn-right"><path d="M5 8.5A2.5 2.5 0 0 1 7.5 6H9V4.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L9.41 8.658A.25.25 0 0 1 9 8.466V7H7.5A1.5 1.5 0 0 0 6 8.5V11H5z"/><path fill-rule="evenodd" d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134Z"/></symbol><symbol class="bi bi-sign-turn-right-fill" viewBox="0 0 16 16" id="sign-turn-right-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM9 8.466V7H7.5A1.5 1.5 0 0 0 6 8.5V11H5V8.5A2.5 2.5 0 0 1 7.5 6H9V4.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L9.41 8.658A.25.25 0 0 1 9 8.466"/></symbol><symbol class="bi bi-sign-turn-slight-left" viewBox="0 0 16 16" id="sign-turn-slight-left"><path d="m7.665 6.982-.8 1.386a.25.25 0 0 1-.451-.039l-1.06-2.882a.25.25 0 0 1 .192-.333l3.026-.523a.25.25 0 0 1 .26.371l-.667 1.154.621.373A2.5 2.5 0 0 1 10 8.632V11H9V8.632a1.5 1.5 0 0 0-.728-1.286z"/><path fill-rule="evenodd" d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134Z"/></symbol><symbol class="bi bi-sign-turn-slight-left-fill" viewBox="0 0 16 16" id="sign-turn-slight-left-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM6.864 8.368a.25.25 0 0 1-.451-.039l-1.06-2.882a.25.25 0 0 1 .192-.333l3.026-.523a.25.25 0 0 1 .26.371l-.667 1.154.621.373A2.5 2.5 0 0 1 10 8.632V11H9V8.632a1.5 1.5 0 0 0-.728-1.286l-.607-.364-.8 1.386Z"/></symbol><symbol class="bi bi-sign-turn-slight-right" viewBox="0 0 16 16" id="sign-turn-slight-right"><path d="m8.335 6.982.8 1.386a.25.25 0 0 0 .451-.039l1.06-2.882a.25.25 0 0 0-.192-.333l-3.026-.523a.25.25 0 0 0-.26.371l.667 1.154-.621.373A2.5 2.5 0 0 0 6 8.632V11h1V8.632a1.5 1.5 0 0 1 .728-1.286z"/><path fill-rule="evenodd" d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134Z"/></symbol><symbol class="bi bi-sign-turn-slight-right-fill" viewBox="0 0 16 16" id="sign-turn-slight-right-fill"><path d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.385 6.547.8 1.386a.25.25 0 0 0 .451-.039l1.06-2.882a.25.25 0 0 0-.192-.333l-3.026-.523a.25.25 0 0 0-.26.371l.667 1.154-.621.373A2.5 2.5 0 0 0 6 8.632V11h1V8.632a1.5 1.5 0 0 1 .728-1.286z"/></symbol><symbol class="bi bi-sign-yield" viewBox="0 0 16 16" id="sign-yield"><path d="M5.506 6.232V7H5.11v-.76L4.44 5h.44l.424.849h.016L5.748 5h.428zM6.628 5v2h-.396V5zm.684 1.676h.895V7H6.919V5h1.288v.324h-.895v.513h.842v.303h-.842zm1.521-.013h.848V7H8.437V5h.396z"/><path fill-rule="evenodd" d="M9.804 7V5h.73c.607 0 .894.364.894.995 0 .636-.291 1.005-.895 1.005zm.676-1.677h-.28v1.353h.28c.372 0 .54-.222.54-.674 0-.45-.169-.68-.54-.68Z"/><path fill-rule="evenodd" d="M7.022 14.434a1.131 1.131 0 0 0 1.96 0l6.857-11.667c.457-.778-.092-1.767-.98-1.767H1.144c-.889 0-1.437.99-.98 1.767zm.98-.434a.13.13 0 0 1-.064-.016.15.15 0 0 1-.054-.057L1.027 2.26a.18.18 0 0 1-.002-.183.2.2 0 0 1 .054-.06A.1.1 0 0 1 1.145 2h13.713a.12.12 0 0 1 .066.017q.028.015.055.06a.18.18 0 0 1-.003.183L8.12 13.927a.15.15 0 0 1-.054.057.13.13 0 0 1-.063.016Z"/></symbol><symbol class="bi bi-sign-yield-fill" viewBox="0 0 16 16" id="sign-yield-fill"><path d="M10.48 5.323h-.28v1.353h.28c.372 0 .54-.222.54-.674 0-.45-.169-.68-.54-.68Z"/><path d="M7.022 14.434a1.131 1.131 0 0 0 1.96 0l6.857-11.667c.457-.778-.092-1.767-.98-1.767H1.144c-.889 0-1.437.99-.98 1.767zM5.506 6.232V7H5.11v-.76L4.44 5h.44l.424.849h.016L5.748 5h.428zM6.628 5v2h-.396V5zm.684 1.676h.895V7H6.919V5h1.288v.324h-.895v.513h.842v.303h-.842zm1.521-.013h.848V7H8.437V5h.396zm.97.337V5h.73c.608 0 .895.364.895.995 0 .636-.291 1.005-.895 1.005z"/></symbol><symbol class="bi bi-signal" viewBox="0 0 16 16" id="signal"><path d="m6.08.234.179.727a7.3 7.3 0 0 0-2.01.832l-.383-.643A7.9 7.9 0 0 1 6.079.234zm3.84 0L9.742.96a7.3 7.3 0 0 1 2.01.832l.388-.643A8 8 0 0 0 9.92.234m-8.77 3.63a8 8 0 0 0-.916 2.215l.727.18a7.3 7.3 0 0 1 .832-2.01l-.643-.386zM.75 8a7 7 0 0 1 .081-1.086L.091 6.8a8 8 0 0 0 0 2.398l.74-.112A7 7 0 0 1 .75 8m11.384 6.848-.384-.64a7.2 7.2 0 0 1-2.007.831l.18.728a8 8 0 0 0 2.211-.919M15.251 8q0 .547-.082 1.086l.74.112a8 8 0 0 0 0-2.398l-.74.114q.082.54.082 1.086m.516 1.918-.728-.18a7.3 7.3 0 0 1-.832 2.012l.643.387a8 8 0 0 0 .917-2.219m-6.68 5.25c-.72.11-1.453.11-2.173 0l-.112.742a8 8 0 0 0 2.396 0l-.112-.741zm4.75-2.868a7.2 7.2 0 0 1-1.537 1.534l.446.605a8 8 0 0 0 1.695-1.689zM12.3 2.163c.587.432 1.105.95 1.537 1.537l.604-.45a8 8 0 0 0-1.69-1.691zM2.163 3.7A7.2 7.2 0 0 1 3.7 2.163l-.45-.604a8 8 0 0 0-1.691 1.69l.604.45zm12.688.163-.644.387c.377.623.658 1.3.832 2.007l.728-.18a8 8 0 0 0-.916-2.214M6.913.831a7.3 7.3 0 0 1 2.172 0l.112-.74a8 8 0 0 0-2.396 0zM2.547 14.64 1 15l.36-1.549-.729-.17-.361 1.548a.75.75 0 0 0 .9.902l1.548-.357zM.786 12.612l.732.168.25-1.073A7.2 7.2 0 0 1 .96 9.74l-.727.18a8 8 0 0 0 .736 1.902l-.184.79zm3.5 1.623-1.073.25.17.731.79-.184c.6.327 1.239.574 1.902.737l.18-.728a7.2 7.2 0 0 1-1.962-.811zM8 1.5a6.5 6.5 0 0 0-6.498 6.502 6.5 6.5 0 0 0 .998 3.455l-.625 2.668L4.54 13.5a6.502 6.502 0 0 0 6.93-11A6.5 6.5 0 0 0 8 1.5"/></symbol><symbol class="bi bi-signpost" viewBox="0 0 16 16" id="signpost"><path d="M7 1.414V4H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h5v6h2v-6h3.532a1 1 0 0 0 .768-.36l1.933-2.32a.5.5 0 0 0 0-.64L13.3 4.36a1 1 0 0 0-.768-.36H9V1.414a1 1 0 0 0-2 0M12.532 5l1.666 2-1.666 2H2V5z"/></symbol><symbol class="bi bi-signpost-2" viewBox="0 0 16 16" id="signpost-2"><path d="M7 1.414V2H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h5v1H2.5a1 1 0 0 0-.8.4L.725 8.7a.5.5 0 0 0 0 .6l.975 1.3a1 1 0 0 0 .8.4H7v5h2v-5h5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H9V6h4.5a1 1 0 0 0 .8-.4l.975-1.3a.5.5 0 0 0 0-.6L14.3 2.4a1 1 0 0 0-.8-.4H9v-.586a1 1 0 0 0-2 0M13.5 3l.75 1-.75 1H2V3zm.5 5v2H2.5l-.75-1 .75-1z"/></symbol><symbol class="bi bi-signpost-2-fill" viewBox="0 0 16 16" id="signpost-2-fill"><path d="M7.293.707A1 1 0 0 0 7 1.414V2H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h5v1H2.5a1 1 0 0 0-.8.4L.725 8.7a.5.5 0 0 0 0 .6l.975 1.3a1 1 0 0 0 .8.4H7v5h2v-5h5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H9V6h4.5a1 1 0 0 0 .8-.4l.975-1.3a.5.5 0 0 0 0-.6L14.3 2.4a1 1 0 0 0-.8-.4H9v-.586A1 1 0 0 0 7.293.707"/></symbol><symbol class="bi bi-signpost-fill" viewBox="0 0 16 16" id="signpost-fill"><path d="M7.293.707A1 1 0 0 0 7 1.414V4H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h5v6h2v-6h3.532a1 1 0 0 0 .768-.36l1.933-2.32a.5.5 0 0 0 0-.64L13.3 4.36a1 1 0 0 0-.768-.36H9V1.414A1 1 0 0 0 7.293.707"/></symbol><symbol class="bi bi-signpost-split" viewBox="0 0 16 16" id="signpost-split"><path d="M7 7V1.414a1 1 0 0 1 2 0V2h5a1 1 0 0 1 .8.4l.975 1.3a.5.5 0 0 1 0 .6L14.8 5.6a1 1 0 0 1-.8.4H9v10H7v-5H2a1 1 0 0 1-.8-.4L.225 9.3a.5.5 0 0 1 0-.6L1.2 7.4A1 1 0 0 1 2 7zm1 3V8H2l-.75 1L2 10zm0-5h6l.75-1L14 3H8z"/></symbol><symbol class="bi bi-signpost-split-fill" viewBox="0 0 16 16" id="signpost-split-fill"><path d="M7 16h2V6h5a1 1 0 0 0 .8-.4l.975-1.3a.5.5 0 0 0 0-.6L14.8 2.4A1 1 0 0 0 14 2H9v-.586a1 1 0 0 0-2 0V7H2a1 1 0 0 0-.8.4L.225 8.7a.5.5 0 0 0 0 .6l.975 1.3a1 1 0 0 0 .8.4h5z"/></symbol><symbol class="bi bi-sim" viewBox="0 0 16 16" id="sim"><path d="M2 1.5A1.5 1.5 0 0 1 3.5 0h7.086a1.5 1.5 0 0 1 1.06.44l1.915 1.914A1.5 1.5 0 0 1 14 3.414V14.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5zM3.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5V3.414a.5.5 0 0 0-.146-.353l-1.915-1.915A.5.5 0 0 0 10.586 1z"/><path d="M5.5 4a.5.5 0 0 0-.5.5V6h2.5V4zm3 0v2H11V4.5a.5.5 0 0 0-.5-.5zM11 7H5v2h6zm0 3H8.5v2h2a.5.5 0 0 0 .5-.5zm-3.5 2v-2H5v1.5a.5.5 0 0 0 .5.5zM4 4.5A1.5 1.5 0 0 1 5.5 3h5A1.5 1.5 0 0 1 12 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 11.5z"/></symbol><symbol class="bi bi-sim-fill" viewBox="0 0 16 16" id="sim-fill"><path d="M5 4.5a.5.5 0 0 1 .5-.5h2v2H5zM8.5 6V4h2a.5.5 0 0 1 .5.5V6zM5 7h6v2H5zm3.5 3H11v1.5a.5.5 0 0 1-.5.5h-2zm-1 0v2h-2a.5.5 0 0 1-.5-.5V10z"/><path d="M3.5 0A1.5 1.5 0 0 0 2 1.5v13A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5V3.414a1.5 1.5 0 0 0-.44-1.06L11.647.439A1.5 1.5 0 0 0 10.586 0zm2 3h5A1.5 1.5 0 0 1 12 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 11.5v-7A1.5 1.5 0 0 1 5.5 3"/></symbol><symbol class="bi bi-sim-slash" viewBox="0 0 16 16" id="sim-slash"><path d="m11.646.44.897.896-.707.707-.897-.897A.5.5 0 0 0 10.586 1H3.5a.5.5 0 0 0-.5.5v9.379l-1 1V1.5A1.5 1.5 0 0 1 3.5 0h7.086a1.5 1.5 0 0 1 1.06.44M10.5 3q.175 0 .34.039L9.879 4H8.5v1.379L6.879 7H5v1.879l-1 1V4.5A1.5 1.5 0 0 1 5.5 3zM12 6.121l-1 1V9H9.121L7.5 10.621V12H6.121l-.961.961q.165.039.34.039h5a1.5 1.5 0 0 0 1.5-1.5zM3.5 15a.5.5 0 0 1-.288-.091l-.71.71c.265.237.615.381.998.381h9a1.5 1.5 0 0 0 1.5-1.5V4.121l-1 1V14.5a.5.5 0 0 1-.5.5zm2-11a.5.5 0 0 0-.5.5V6h2.5V4zm5.5 6v1.5a.5.5 0 0 1-.5.5h-2v-2zm3.854-8.146a.5.5 0 0 0-.708-.708l-13 13a.5.5 0 0 0 .708.708z"/></symbol><symbol class="bi bi-sim-slash-fill" viewBox="0 0 16 16" id="sim-slash-fill"><path d="m11.646.44.897.896-1.703 1.703A1.5 1.5 0 0 0 10.5 3h-5A1.5 1.5 0 0 0 4 4.5v5.379l-2 2V1.5A1.5 1.5 0 0 1 3.5 0h7.086a1.5 1.5 0 0 1 1.06.44M8.5 5.378 9.879 4H8.5zM5 8.879 6.879 7H5zm6-1.758L9.121 9H11zm-3.5 3.5L6.121 12H7.5zM5.5 13q-.175 0-.34-.039L2.502 15.62c.265.236.615.38.998.38h9a1.5 1.5 0 0 0 1.5-1.5V4.121l-2 2V11.5a1.5 1.5 0 0 1-1.5 1.5zM5 4.5a.5.5 0 0 1 .5-.5h2v2H5zM8.5 10H11v1.5a.5.5 0 0 1-.5.5h-2zm6.354-8.146a.5.5 0 0 0-.708-.708l-13 13a.5.5 0 0 0 .708.708z"/></symbol><symbol class="bi bi-sina-weibo" viewBox="0 0 16 16" id="sina-weibo"><path d="M10.878 1.093a4.23 4.23 0 0 1 4.031 1.305 4.22 4.22 0 0 1 .886 4.14v.001a.612.612 0 0 1-1.166-.377 3.01 3.01 0 0 0-3.495-3.873.611.611 0 1 1-.256-1.196M3.753 9.465c.548-1.11 1.972-1.74 3.233-1.411 1.304.338 1.971 1.568 1.437 2.764-.541 1.221-2.095 1.875-3.416 1.449-1.271-.411-1.812-1.67-1.254-2.802m2.658.567c.16.066.365-.009.458-.168.088-.16.03-.34-.129-.397-.156-.062-.353.013-.446.168-.09.154-.041.333.117.397m-1.607 1.314c.413.188.963.009 1.219-.4.252-.413.12-.883-.296-1.062-.41-.172-.94.005-1.194.402-.256.4-.135.874.271 1.06"/><path d="m12.014 7.238.005.001c.919.285 1.941.974 1.939 2.188 0 2.007-2.895 4.535-7.246 4.535C3.393 13.962 0 12.352 0 9.708c0-1.385.876-2.985 2.384-4.493C4.4 3.199 6.751 2.28 7.634 3.165c.39.392.427 1.065.177 1.87-.132.405.38.182.38.182 1.63-.682 3.051-.722 3.57.02.278.397.252.951-.004 1.594-.116.293.035.34.257.407m-10.4 3.101c.172 1.738 2.46 2.936 5.109 2.674 2.647-.26 4.656-1.883 4.482-3.623-.17-1.738-2.458-2.937-5.107-2.674-2.647.263-4.656 1.883-4.484 3.623m11.681-6.484a2.06 2.06 0 0 0-1.962-.634.526.526 0 1 0 .219 1.031 1.008 1.008 0 0 1 1.17 1.296.528.528 0 0 0 1.005.325 2.06 2.06 0 0 0-.432-2.018"/></symbol><symbol class="bi bi-skip-backward" viewBox="0 0 16 16" id="skip-backward"><path d="M.5 3.5A.5.5 0 0 1 1 4v3.248l6.267-3.636c.52-.302 1.233.043 1.233.696v2.94l6.267-3.636c.52-.302 1.233.043 1.233.696v7.384c0 .653-.713.998-1.233.696L8.5 8.752v2.94c0 .653-.713.998-1.233.696L1 8.752V12a.5.5 0 0 1-1 0V4a.5.5 0 0 1 .5-.5m7 1.133L1.696 8 7.5 11.367zm7.5 0L9.196 8 15 11.367z"/></symbol><symbol class="bi bi-skip-backward-btn" viewBox="0 0 16 16" id="skip-backward-btn"><path d="M11.21 5.093A.5.5 0 0 1 12 5.5v5a.5.5 0 0 1-.79.407L8.5 8.972V10.5a.5.5 0 0 1-.79.407L5 8.972V10.5a.5.5 0 0 1-1 0v-5a.5.5 0 0 1 1 0v1.528l2.71-1.935a.5.5 0 0 1 .79.407v1.528z"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-skip-backward-btn-fill" viewBox="0 0 16 16" id="skip-backward-btn-fill"><path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m11.21-6.907L8.5 7.028V5.5a.5.5 0 0 0-.79-.407L5 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407V8.972l2.71 1.935A.5.5 0 0 0 12 10.5v-5a.5.5 0 0 0-.79-.407"/></symbol><symbol class="bi bi-skip-backward-circle" viewBox="0 0 16 16" id="skip-backward-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M11.729 5.055a.5.5 0 0 0-.52.038L8.5 7.028V5.5a.5.5 0 0 0-.79-.407L5 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407V8.972l2.71 1.935A.5.5 0 0 0 12 10.5v-5a.5.5 0 0 0-.271-.445"/></symbol><symbol class="bi bi-skip-backward-circle-fill" viewBox="0 0 16 16" id="skip-backward-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-4.79-2.907L8.5 7.028V5.5a.5.5 0 0 0-.79-.407L5 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407V8.972l2.71 1.935A.5.5 0 0 0 12 10.5v-5a.5.5 0 0 0-.79-.407"/></symbol><symbol class="bi bi-skip-backward-fill" viewBox="0 0 16 16" id="skip-backward-fill"><path d="M.5 3.5A.5.5 0 0 0 0 4v8a.5.5 0 0 0 1 0V8.753l6.267 3.636c.54.313 1.233-.066 1.233-.697v-2.94l6.267 3.636c.54.314 1.233-.065 1.233-.696V4.308c0-.63-.693-1.01-1.233-.696L8.5 7.248v-2.94c0-.63-.692-1.01-1.233-.696L1 7.248V4a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-skip-end" viewBox="0 0 16 16" id="skip-end"><path d="M12.5 4a.5.5 0 0 0-1 0v3.248L5.233 3.612C4.713 3.31 4 3.655 4 4.308v7.384c0 .653.713.998 1.233.696L11.5 8.752V12a.5.5 0 0 0 1 0zM5 4.633 10.804 8 5 11.367z"/></symbol><symbol class="bi bi-skip-end-btn" viewBox="0 0 16 16" id="skip-end-btn"><path d="M6.79 5.093 9.5 7.028V5.5a.5.5 0 0 1 1 0v5a.5.5 0 0 1-1 0V8.972l-2.71 1.935A.5.5 0 0 1 6 10.5v-5a.5.5 0 0 1 .79-.407"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-skip-end-btn-fill" viewBox="0 0 16 16" id="skip-end-btn-fill"><path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m6.79-6.907A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407L9.5 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528z"/></symbol><symbol class="bi bi-skip-end-circle" viewBox="0 0 16 16" id="skip-end-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M6.271 5.055a.5.5 0 0 1 .52.038L9.5 7.028V5.5a.5.5 0 0 1 1 0v5a.5.5 0 0 1-1 0V8.972l-2.71 1.935A.5.5 0 0 1 6 10.5v-5a.5.5 0 0 1 .271-.445"/></symbol><symbol class="bi bi-skip-end-circle-fill" viewBox="0 0 16 16" id="skip-end-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.79 5.093A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407L9.5 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528z"/></symbol><symbol class="bi bi-skip-end-fill" viewBox="0 0 16 16" id="skip-end-fill"><path d="M12.5 4a.5.5 0 0 0-1 0v3.248L5.233 3.612C4.693 3.3 4 3.678 4 4.308v7.384c0 .63.692 1.01 1.233.697L11.5 8.753V12a.5.5 0 0 0 1 0z"/></symbol><symbol class="bi bi-skip-forward" viewBox="0 0 16 16" id="skip-forward"><path d="M15.5 3.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V8.752l-6.267 3.636c-.52.302-1.233-.043-1.233-.696v-2.94l-6.267 3.636C.713 12.69 0 12.345 0 11.692V4.308c0-.653.713-.998 1.233-.696L7.5 7.248v-2.94c0-.653.713-.998 1.233-.696L15 7.248V4a.5.5 0 0 1 .5-.5M1 4.633v6.734L6.804 8zm7.5 0v6.734L14.304 8z"/></symbol><symbol class="bi bi-skip-forward-btn" viewBox="0 0 16 16" id="skip-forward-btn"><path d="M4.79 5.093A.5.5 0 0 0 4 5.5v5a.5.5 0 0 0 .79.407L7.5 8.972V10.5a.5.5 0 0 0 .79.407L11 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528L8.29 5.093a.5.5 0 0 0-.79.407v1.528z"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-skip-forward-btn-fill" viewBox="0 0 16 16" id="skip-forward-btn-fill"><path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m4.79-6.907A.5.5 0 0 0 4 5.5v5a.5.5 0 0 0 .79.407L7.5 8.972V10.5a.5.5 0 0 0 .79.407L11 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528L8.29 5.093a.5.5 0 0 0-.79.407v1.528z"/></symbol><symbol class="bi bi-skip-forward-circle" viewBox="0 0 16 16" id="skip-forward-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M4.271 5.055a.5.5 0 0 1 .52.038L7.5 7.028V5.5a.5.5 0 0 1 .79-.407L11 7.028V5.5a.5.5 0 0 1 1 0v5a.5.5 0 0 1-1 0V8.972l-2.71 1.935a.5.5 0 0 1-.79-.407V8.972l-2.71 1.935A.5.5 0 0 1 4 10.5v-5a.5.5 0 0 1 .271-.445"/></symbol><symbol class="bi bi-skip-forward-circle-fill" viewBox="0 0 16 16" id="skip-forward-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M4.79 5.093A.5.5 0 0 0 4 5.5v5a.5.5 0 0 0 .79.407L7.5 8.972V10.5a.5.5 0 0 0 .79.407L11 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528L8.29 5.093a.5.5 0 0 0-.79.407v1.528z"/></symbol><symbol class="bi bi-skip-forward-fill" viewBox="0 0 16 16" id="skip-forward-fill"><path d="M15.5 3.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V8.753l-6.267 3.636c-.54.313-1.233-.066-1.233-.697v-2.94l-6.267 3.636C.693 12.703 0 12.324 0 11.693V4.308c0-.63.693-1.01 1.233-.696L7.5 7.248v-2.94c0-.63.693-1.01 1.233-.696L15 7.248V4a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-skip-start" viewBox="0 0 16 16" id="skip-start"><path d="M4 4a.5.5 0 0 1 1 0v3.248l6.267-3.636c.52-.302 1.233.043 1.233.696v7.384c0 .653-.713.998-1.233.696L5 8.752V12a.5.5 0 0 1-1 0zm7.5.633L5.696 8l5.804 3.367z"/></symbol><symbol class="bi bi-skip-start-btn" viewBox="0 0 16 16" id="skip-start-btn"><path d="M9.71 5.093a.5.5 0 0 1 .79.407v5a.5.5 0 0 1-.79.407L7 8.972V10.5a.5.5 0 0 1-1 0v-5a.5.5 0 0 1 1 0v1.528z"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-skip-start-btn-fill" viewBox="0 0 16 16" id="skip-start-btn-fill"><path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m9.71-6.907L7 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407v-5a.5.5 0 0 0-.79-.407"/></symbol><symbol class="bi bi-skip-start-circle" viewBox="0 0 16 16" id="skip-start-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M10.229 5.055a.5.5 0 0 0-.52.038L7 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407v-5a.5.5 0 0 0-.271-.445"/></symbol><symbol class="bi bi-skip-start-circle-fill" viewBox="0 0 16 16" id="skip-start-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.71 5.093 7 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407v-5a.5.5 0 0 0-.79-.407"/></symbol><symbol class="bi bi-skip-start-fill" viewBox="0 0 16 16" id="skip-start-fill"><path d="M4 4a.5.5 0 0 1 1 0v3.248l6.267-3.636c.54-.313 1.232.066 1.232.696v7.384c0 .63-.692 1.01-1.232.697L5 8.753V12a.5.5 0 0 1-1 0z"/></symbol><symbol class="bi bi-skype" viewBox="0 0 16 16" id="skype"><path d="M4.671 0c.88 0 1.733.247 2.468.702a7.42 7.42 0 0 1 6.02 2.118 7.37 7.37 0 0 1 2.167 5.215q0 .517-.072 1.026a4.66 4.66 0 0 1 .6 2.281 4.64 4.64 0 0 1-1.37 3.294A4.67 4.67 0 0 1 11.18 16c-.84 0-1.658-.226-2.37-.644a7.42 7.42 0 0 1-6.114-2.107A7.37 7.37 0 0 1 .529 8.035q0-.545.08-1.081a4.644 4.644 0 0 1 .76-5.59A4.68 4.68 0 0 1 4.67 0zm.447 7.01c.18.309.43.572.729.769a7 7 0 0 0 1.257.653q.737.308 1.145.523c.229.112.437.264.615.448.135.142.21.331.21.528a.87.87 0 0 1-.335.723c-.291.196-.64.289-.99.264a2.6 2.6 0 0 1-1.048-.206 11 11 0 0 1-.532-.253 1.3 1.3 0 0 0-.587-.15.72.72 0 0 0-.501.176.63.63 0 0 0-.195.491.8.8 0 0 0 .148.482 1.2 1.2 0 0 0 .456.354 5.1 5.1 0 0 0 2.212.419 4.6 4.6 0 0 0 1.624-.265 2.3 2.3 0 0 0 1.08-.801c.267-.39.402-.855.386-1.327a2.1 2.1 0 0 0-.279-1.101 2.5 2.5 0 0 0-.772-.792A7 7 0 0 0 8.486 7.3a1 1 0 0 0-.145-.058 18 18 0 0 1-1.013-.447 1.8 1.8 0 0 1-.54-.387.73.73 0 0 1-.2-.508.8.8 0 0 1 .385-.723 1.76 1.76 0 0 1 .968-.247c.26-.003.52.03.772.096q.412.119.802.293c.105.049.22.075.336.076a.6.6 0 0 0 .453-.19.7.7 0 0 0 .18-.496.72.72 0 0 0-.17-.476 1.4 1.4 0 0 0-.556-.354 3.7 3.7 0 0 0-.708-.183 6 6 0 0 0-1.022-.078 4.5 4.5 0 0 0-1.536.258 2.7 2.7 0 0 0-1.174.784 1.9 1.9 0 0 0-.45 1.287c-.01.37.076.736.25 1.063"/></symbol><symbol class="bi bi-slack" viewBox="0 0 16 16" id="slack"><path d="M3.362 10.11c0 .926-.756 1.681-1.681 1.681S0 11.036 0 10.111.756 8.43 1.68 8.43h1.682zm.846 0c0-.924.756-1.68 1.681-1.68s1.681.756 1.681 1.68v4.21c0 .924-.756 1.68-1.68 1.68a1.685 1.685 0 0 1-1.682-1.68zM5.89 3.362c-.926 0-1.682-.756-1.682-1.681S4.964 0 5.89 0s1.68.756 1.68 1.68v1.682zm0 .846c.924 0 1.68.756 1.68 1.681S6.814 7.57 5.89 7.57H1.68C.757 7.57 0 6.814 0 5.89c0-.926.756-1.682 1.68-1.682zm6.749 1.682c0-.926.755-1.682 1.68-1.682S16 4.964 16 5.889s-.756 1.681-1.68 1.681h-1.681zm-.848 0c0 .924-.755 1.68-1.68 1.68A1.685 1.685 0 0 1 8.43 5.89V1.68C8.43.757 9.186 0 10.11 0c.926 0 1.681.756 1.681 1.68zm-1.681 6.748c.926 0 1.682.756 1.682 1.681S11.036 16 10.11 16s-1.681-.756-1.681-1.68v-1.682h1.68zm0-.847c-.924 0-1.68-.755-1.68-1.68s.756-1.681 1.68-1.681h4.21c.924 0 1.68.756 1.68 1.68 0 .926-.756 1.681-1.68 1.681z"/></symbol><symbol class="bi bi-slash" viewBox="0 0 16 16" id="slash"><path d="M11.354 4.646a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708l6-6a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-slash-circle" viewBox="0 0 16 16" id="slash-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M11.354 4.646a.5.5 0 0 0-.708 0l-6 6a.5.5 0 0 0 .708.708l6-6a.5.5 0 0 0 0-.708"/></symbol><symbol class="bi bi-slash-circle-fill" viewBox="0 0 16 16" id="slash-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-4.646-2.646a.5.5 0 0 0-.708-.708l-6 6a.5.5 0 0 0 .708.708z"/></symbol><symbol class="bi bi-slash-lg" viewBox="0 0 16 16" id="slash-lg"><path fill-rule="evenodd" d="M13.854 2.146a.5.5 0 0 1 0 .708l-11 11a.5.5 0 0 1-.708-.708l11-11a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-slash-square" viewBox="0 0 16 16" id="slash-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M11.354 4.646a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708l6-6a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-slash-square-fill" viewBox="0 0 16 16" id="slash-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm9.354 5.354-6 6a.5.5 0 0 1-.708-.708l6-6a.5.5 0 0 1 .708.708"/></symbol><symbol class="bi bi-sliders" viewBox="0 0 16 16" id="sliders"><path fill-rule="evenodd" d="M11.5 2a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3M9.05 3a2.5 2.5 0 0 1 4.9 0H16v1h-2.05a2.5 2.5 0 0 1-4.9 0H0V3zM4.5 7a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3M2.05 8a2.5 2.5 0 0 1 4.9 0H16v1H6.95a2.5 2.5 0 0 1-4.9 0H0V8zm9.45 4a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3m-2.45 1a2.5 2.5 0 0 1 4.9 0H16v1h-2.05a2.5 2.5 0 0 1-4.9 0H0v-1z"/></symbol><symbol class="bi bi-sliders2" viewBox="0 0 16 16" id="sliders2"><path fill-rule="evenodd" d="M10.5 1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4H1.5a.5.5 0 0 1 0-1H10V1.5a.5.5 0 0 1 .5-.5M12 3.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-6.5 2A.5.5 0 0 1 6 6v1.5h8.5a.5.5 0 0 1 0 1H6V10a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5M1 8a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 1 8m9.5 2a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V13H1.5a.5.5 0 0 1 0-1H10v-1.5a.5.5 0 0 1 .5-.5m1.5 2.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-sliders2-vertical" viewBox="0 0 16 16" id="sliders2-vertical"><path fill-rule="evenodd" d="M0 10.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 0-1H3V1.5a.5.5 0 0 0-1 0V10H.5a.5.5 0 0 0-.5.5M2.5 12a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 1 0v-2a.5.5 0 0 0-.5-.5m3-6.5A.5.5 0 0 0 6 6h1.5v8.5a.5.5 0 0 0 1 0V6H10a.5.5 0 0 0 0-1H6a.5.5 0 0 0-.5.5M8 1a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 1 0v-2A.5.5 0 0 0 8 1m3 9.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 0-1H14V1.5a.5.5 0 0 0-1 0V10h-1.5a.5.5 0 0 0-.5.5m2.5 1.5a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 1 0v-2a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-smartwatch" viewBox="0 0 16 16" id="smartwatch"><path d="M9 5a.5.5 0 0 0-1 0v3H6a.5.5 0 0 0 0 1h2.5a.5.5 0 0 0 .5-.5z"/><path d="M4 1.667v.383A2.5 2.5 0 0 0 2 4.5v7a2.5 2.5 0 0 0 2 2.45v.383C4 15.253 4.746 16 5.667 16h4.666c.92 0 1.667-.746 1.667-1.667v-.383a2.5 2.5 0 0 0 2-2.45V8h.5a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5H14v-.5a2.5 2.5 0 0 0-2-2.45v-.383C12 .747 11.254 0 10.333 0H5.667C4.747 0 4 .746 4 1.667M4.5 3h7A1.5 1.5 0 0 1 13 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 3 11.5v-7A1.5 1.5 0 0 1 4.5 3"/></symbol><symbol class="bi bi-snapchat" viewBox="0 0 16 16" id="snapchat"><path d="M15.943 11.526c-.111-.303-.323-.465-.564-.599a1 1 0 0 0-.123-.064l-.219-.111c-.752-.399-1.339-.902-1.746-1.498a3.4 3.4 0 0 1-.3-.531c-.034-.1-.032-.156-.008-.207a.3.3 0 0 1 .097-.1c.129-.086.262-.173.352-.231.162-.104.289-.187.371-.245.309-.216.525-.446.66-.702a1.4 1.4 0 0 0 .069-1.16c-.205-.538-.713-.872-1.329-.872a1.8 1.8 0 0 0-.487.065c.006-.368-.002-.757-.035-1.139-.116-1.344-.587-2.048-1.077-2.61a4.3 4.3 0 0 0-1.095-.881C9.764.216 8.92 0 7.999 0s-1.76.216-2.505.641c-.412.232-.782.53-1.097.883-.49.562-.96 1.267-1.077 2.61-.033.382-.04.772-.036 1.138a1.8 1.8 0 0 0-.487-.065c-.615 0-1.124.335-1.328.873a1.4 1.4 0 0 0 .067 1.161c.136.256.352.486.66.701.082.058.21.14.371.246l.339.221a.4.4 0 0 1 .109.11c.026.053.027.11-.012.217a3.4 3.4 0 0 1-.295.52c-.398.583-.968 1.077-1.696 1.472-.385.204-.786.34-.955.8-.128.348-.044.743.28 1.075q.18.189.409.31a4.4 4.4 0 0 0 1 .4.7.7 0 0 1 .202.09c.118.104.102.26.259.488q.12.178.296.3c.33.229.701.243 1.095.258.355.014.758.03 1.217.18.19.064.389.186.618.328.55.338 1.305.802 2.566.802 1.262 0 2.02-.466 2.576-.806.227-.14.424-.26.609-.321.46-.152.863-.168 1.218-.181.393-.015.764-.03 1.095-.258a1.14 1.14 0 0 0 .336-.368c.114-.192.11-.327.217-.42a.6.6 0 0 1 .19-.087 4.5 4.5 0 0 0 1.014-.404c.16-.087.306-.2.429-.336l.004-.005c.304-.325.38-.709.256-1.047m-1.121.602c-.684.378-1.139.337-1.493.565-.3.193-.122.61-.34.76-.269.186-1.061-.012-2.085.326-.845.279-1.384 1.082-2.903 1.082s-2.045-.801-2.904-1.084c-1.022-.338-1.816-.14-2.084-.325-.218-.15-.041-.568-.341-.761-.354-.228-.809-.187-1.492-.563-.436-.24-.189-.39-.044-.46 2.478-1.199 2.873-3.05 2.89-3.188.022-.166.045-.297-.138-.466-.177-.164-.962-.65-1.18-.802-.36-.252-.52-.503-.402-.812.082-.214.281-.295.49-.295a1 1 0 0 1 .197.022c.396.086.78.285 1.002.338q.04.01.082.011c.118 0 .16-.06.152-.195-.026-.433-.087-1.277-.019-2.066.094-1.084.444-1.622.859-2.097.2-.229 1.137-1.22 2.93-1.22 1.792 0 2.732.987 2.931 1.215.416.475.766 1.013.859 2.098.068.788.009 1.632-.019 2.065-.01.142.034.195.152.195a.4.4 0 0 0 .082-.01c.222-.054.607-.253 1.002-.338a1 1 0 0 1 .197-.023c.21 0 .409.082.49.295.117.309-.04.56-.401.812-.218.152-1.003.638-1.18.802-.184.169-.16.3-.139.466.018.14.413 1.991 2.89 3.189.147.073.394.222-.041.464"/></symbol><symbol class="bi bi-snow" viewBox="0 0 16 16" id="snow"><path d="M8 16a.5.5 0 0 1-.5-.5v-1.293l-.646.647a.5.5 0 0 1-.707-.708L7.5 12.793V8.866l-3.4 1.963-.496 1.85a.5.5 0 1 1-.966-.26l.237-.882-1.12.646a.5.5 0 0 1-.5-.866l1.12-.646-.884-.237a.5.5 0 1 1 .26-.966l1.848.495L7 8 3.6 6.037l-1.85.495a.5.5 0 0 1-.258-.966l.883-.237-1.12-.646a.5.5 0 1 1 .5-.866l1.12.646-.237-.883a.5.5 0 1 1 .966-.258l.495 1.849L7.5 7.134V3.207L6.147 1.854a.5.5 0 1 1 .707-.708l.646.647V.5a.5.5 0 1 1 1 0v1.293l.647-.647a.5.5 0 1 1 .707.708L8.5 3.207v3.927l3.4-1.963.496-1.85a.5.5 0 1 1 .966.26l-.236.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.883.237a.5.5 0 1 1-.26.966l-1.848-.495L9 8l3.4 1.963 1.849-.495a.5.5 0 0 1 .259.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.236.883a.5.5 0 1 1-.966.258l-.495-1.849-3.4-1.963v3.927l1.353 1.353a.5.5 0 0 1-.707.708l-.647-.647V15.5a.5.5 0 0 1-.5.5z"/></symbol><symbol class="bi bi-snow2" viewBox="0 0 16 16" id="snow2"><path d="M8 16a.5.5 0 0 1-.5-.5v-1.293l-.646.647a.5.5 0 0 1-.707-.708L7.5 12.793v-1.086l-.646.647a.5.5 0 0 1-.707-.708L7.5 10.293V8.866l-1.236.713-.495 1.85a.5.5 0 1 1-.966-.26l.237-.882-.94.542-.496 1.85a.5.5 0 1 1-.966-.26l.237-.882-1.12.646a.5.5 0 0 1-.5-.866l1.12-.646-.884-.237a.5.5 0 1 1 .26-.966l1.848.495.94-.542-.882-.237a.5.5 0 1 1 .258-.966l1.85.495L7 8l-1.236-.713-1.849.495a.5.5 0 1 1-.258-.966l.883-.237-.94-.542-1.85.495a.5.5 0 0 1-.258-.966l.883-.237-1.12-.646a.5.5 0 1 1 .5-.866l1.12.646-.237-.883a.5.5 0 0 1 .966-.258l.495 1.849.94.542-.236-.883a.5.5 0 0 1 .966-.258l.495 1.849 1.236.713V5.707L6.147 4.354a.5.5 0 1 1 .707-.708l.646.647V3.207L6.147 1.854a.5.5 0 1 1 .707-.708l.646.647V.5a.5.5 0 0 1 1 0v1.293l.647-.647a.5.5 0 1 1 .707.708L8.5 3.207v1.086l.647-.647a.5.5 0 1 1 .707.708L8.5 5.707v1.427l1.236-.713.495-1.85a.5.5 0 1 1 .966.26l-.236.882.94-.542.495-1.85a.5.5 0 1 1 .966.26l-.236.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.883.237a.5.5 0 1 1-.26.966l-1.848-.495-.94.542.883.237a.5.5 0 1 1-.26.966l-1.848-.495L9 8l1.236.713 1.849-.495a.5.5 0 0 1 .259.966l-.883.237.94.542 1.849-.495a.5.5 0 0 1 .259.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.236.883a.5.5 0 1 1-.966.258l-.495-1.849-.94-.542.236.883a.5.5 0 0 1-.966.258L9.736 9.58 8.5 8.866v1.427l1.354 1.353a.5.5 0 0 1-.707.708l-.647-.647v1.086l1.354 1.353a.5.5 0 0 1-.707.708l-.647-.647V15.5a.5.5 0 0 1-.5.5"/></symbol><symbol class="bi bi-snow3" viewBox="0 0 16 16" id="snow3"><path d="M8 7.5a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1"/><path d="M8 16a.5.5 0 0 1-.5-.5v-1.293l-.646.647a.5.5 0 0 1-.707-.708L7.5 12.793v-1.51l-2.053-1.232-1.348.778-.495 1.85a.5.5 0 1 1-.966-.26l.237-.882-1.12.646a.5.5 0 0 1-.5-.866l1.12-.646-.883-.237a.5.5 0 1 1 .258-.966l1.85.495L5 9.155v-2.31l-1.4-.808-1.85.495a.5.5 0 1 1-.259-.966l.884-.237-1.12-.646a.5.5 0 0 1 .5-.866l1.12.646-.237-.883a.5.5 0 1 1 .966-.258l.495 1.849 1.348.778L7.5 4.717v-1.51L6.147 1.854a.5.5 0 1 1 .707-.708l.646.647V.5a.5.5 0 0 1 1 0v1.293l.647-.647a.5.5 0 1 1 .707.708L8.5 3.207v1.51l2.053 1.232 1.348-.778.495-1.85a.5.5 0 1 1 .966.26l-.236.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.883.237a.5.5 0 1 1-.26.966l-1.848-.495-1.4.808v2.31l1.4.808 1.849-.495a.5.5 0 1 1 .259.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.236.883a.5.5 0 1 1-.966.258l-.495-1.849-1.348-.778L8.5 11.283v1.51l1.354 1.353a.5.5 0 0 1-.707.708l-.647-.647V15.5a.5.5 0 0 1-.5.5m2-6.783V6.783l-2-1.2-2 1.2v2.434l2 1.2z"/></symbol><symbol class="bi bi-sort-alpha-down" viewBox="0 0 16 16" id="sort-alpha-down"><path fill-rule="evenodd" d="M10.082 5.629 9.664 7H8.598l1.789-5.332h1.234L13.402 7h-1.12l-.419-1.371zm1.57-.785L11 2.687h-.047l-.652 2.157z"/><path d="M12.96 14H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645zM4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293z"/></symbol><symbol class="bi bi-sort-alpha-down-alt" viewBox="0 0 16 16" id="sort-alpha-down-alt"><path d="M12.96 7H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645z"/><path fill-rule="evenodd" d="M10.082 12.629 9.664 14H8.598l1.789-5.332h1.234L13.402 14h-1.12l-.419-1.371zm1.57-.785L11 9.688h-.047l-.652 2.156z"/><path d="M4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293z"/></symbol><symbol class="bi bi-sort-alpha-up" viewBox="0 0 16 16" id="sort-alpha-up"><path fill-rule="evenodd" d="M10.082 5.629 9.664 7H8.598l1.789-5.332h1.234L13.402 7h-1.12l-.419-1.371zm1.57-.785L11 2.687h-.047l-.652 2.157z"/><path d="M12.96 14H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645zm-8.46-.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707z"/></symbol><symbol class="bi bi-sort-alpha-up-alt" viewBox="0 0 16 16" id="sort-alpha-up-alt"><path d="M12.96 7H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645z"/><path fill-rule="evenodd" d="M10.082 12.629 9.664 14H8.598l1.789-5.332h1.234L13.402 14h-1.12l-.419-1.371zm1.57-.785L11 9.688h-.047l-.652 2.156z"/><path d="M4.5 13.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707z"/></symbol><symbol class="bi bi-sort-down" viewBox="0 0 16 16" id="sort-down"><path d="M3.5 2.5a.5.5 0 0 0-1 0v8.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L3.5 11.293zm3.5 1a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5M7.5 6a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-sort-down-alt" viewBox="0 0 16 16" id="sort-down-alt"><path d="M3.5 3.5a.5.5 0 0 0-1 0v8.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L3.5 12.293zm4 .5a.5.5 0 0 1 0-1h1a.5.5 0 0 1 0 1zm0 3a.5.5 0 0 1 0-1h3a.5.5 0 0 1 0 1zm0 3a.5.5 0 0 1 0-1h5a.5.5 0 0 1 0 1zM7 12.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-sort-numeric-down" viewBox="0 0 16 16" id="sort-numeric-down"><path d="M12.438 1.668V7H11.39V2.684h-.051l-1.211.859v-.969l1.262-.906h1.046z"/><path fill-rule="evenodd" d="M11.36 14.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.835 1.973-1.835 1.09 0 2.063.636 2.063 2.687 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98"/><path d="M4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293z"/></symbol><symbol class="bi bi-sort-numeric-down-alt" viewBox="0 0 16 16" id="sort-numeric-down-alt"><path fill-rule="evenodd" d="M11.36 7.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.836 1.973-1.836 1.09 0 2.063.637 2.063 2.688 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98"/><path d="M12.438 8.668V14H11.39V9.684h-.051l-1.211.859v-.969l1.262-.906h1.046zM4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293z"/></symbol><symbol class="bi bi-sort-numeric-up" viewBox="0 0 16 16" id="sort-numeric-up"><path d="M12.438 1.668V7H11.39V2.684h-.051l-1.211.859v-.969l1.262-.906h1.046z"/><path fill-rule="evenodd" d="M11.36 14.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.835 1.973-1.835 1.09 0 2.063.636 2.063 2.687 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98"/><path d="M4.5 13.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707z"/></symbol><symbol class="bi bi-sort-numeric-up-alt" viewBox="0 0 16 16" id="sort-numeric-up-alt"><path fill-rule="evenodd" d="M11.36 7.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.836 1.973-1.836 1.09 0 2.063.637 2.063 2.688 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98"/><path d="M12.438 8.668V14H11.39V9.684h-.051l-1.211.859v-.969l1.262-.906h1.046zM4.5 13.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707z"/></symbol><symbol class="bi bi-sort-up" viewBox="0 0 16 16" id="sort-up"><path d="M3.5 12.5a.5.5 0 0 1-1 0V3.707L1.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L3.5 3.707zm3.5-9a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5M7.5 6a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-sort-up-alt" viewBox="0 0 16 16" id="sort-up-alt"><path d="M3.5 13.5a.5.5 0 0 1-1 0V4.707L1.354 5.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L3.5 4.707zm4-9.5a.5.5 0 0 1 0-1h1a.5.5 0 0 1 0 1zm0 3a.5.5 0 0 1 0-1h3a.5.5 0 0 1 0 1zm0 3a.5.5 0 0 1 0-1h5a.5.5 0 0 1 0 1zM7 12.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-soundwave" viewBox="0 0 16 16" id="soundwave"><path fill-rule="evenodd" d="M8.5 2a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-1 0v-11a.5.5 0 0 1 .5-.5m-2 2a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5m4 0a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5m-6 1.5A.5.5 0 0 1 5 6v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m8 0a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m-10 1A.5.5 0 0 1 3 7v2a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5m12 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-sourceforge" viewBox="0 0 16 16" id="sourceforge"><path d="M9.13 8.43c0-2.604-.929-3.79-1.42-4.24a.14.14 0 0 0-.232.123c.095 1.472-1.762 1.84-1.762 4.144v.013c0 1.404 1.065 2.55 2.376 2.55s2.377-1.146 2.377-2.55v-.013c0-.655-.246-1.282-.492-1.745-.055-.096-.191-.055-.178.027.451 1.99-.669 3.217-.669 1.69Z"/><path d="M6.303 13.923a.25.25 0 0 1-.164-.068L.061 7.789c-.081-.082-.081-.232 0-.327l6.42-6.407A.3.3 0 0 1 6.63 1h1.844c.109 0 .177.068.204.136a.22.22 0 0 1-.054.246L2.602 7.407a.304.304 0 0 0 0 .436l4.766 4.771c.082.082.082.232 0 .328l-.915.927a.3.3 0 0 1-.15.054m1.216 1.063a.22.22 0 0 1-.15-.382l6.036-6.025a.32.32 0 0 0 .096-.218.27.27 0 0 0-.096-.218l-4.78-4.771c-.082-.082-.082-.232 0-.327l.929-.927a.23.23 0 0 1 .163-.068c.069 0 .11.04.15.081l6.065 6.067c.04.04.068.095.068.163a.23.23 0 0 1-.068.164l-6.42 6.407A.23.23 0 0 1 9.35 15H7.52z"/></symbol><symbol class="bi bi-speaker" viewBox="0 0 16 16" id="speaker"><path d="M12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M8 4.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5M8 6a2 2 0 1 0 0-4 2 2 0 0 0 0 4m0 3a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3m-3.5 1.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0"/></symbol><symbol class="bi bi-speaker-fill" viewBox="0 0 16 16" id="speaker-fill"><path d="M9 4a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-2.5 6.5a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0"/><path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6 4a2 2 0 1 1-4 0 2 2 0 0 1 4 0M8 7a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7"/></symbol><symbol class="bi bi-speedometer" viewBox="0 0 16 16" id="speedometer"><path d="M8 2a.5.5 0 0 1 .5.5V4a.5.5 0 0 1-1 0V2.5A.5.5 0 0 1 8 2M3.732 3.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707M2 8a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 8m9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5m.754-4.246a.39.39 0 0 0-.527-.02L7.547 7.31A.91.91 0 1 0 8.85 8.569l3.434-4.297a.39.39 0 0 0-.029-.518z"/><path fill-rule="evenodd" d="M6.664 15.889A8 8 0 1 1 9.336.11a8 8 0 0 1-2.672 15.78zm-4.665-4.283A11.95 11.95 0 0 1 8 10c2.186 0 4.236.585 6.001 1.606a7 7 0 1 0-12.002 0"/></symbol><symbol class="bi bi-speedometer2" viewBox="0 0 16 16" id="speedometer2"><path d="M8 4a.5.5 0 0 1 .5.5V6a.5.5 0 0 1-1 0V4.5A.5.5 0 0 1 8 4M3.732 5.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707M2 10a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 10m9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5m.754-4.246a.39.39 0 0 0-.527-.02L7.547 9.31a.91.91 0 1 0 1.302 1.258l3.434-4.297a.39.39 0 0 0-.029-.518z"/><path fill-rule="evenodd" d="M0 10a8 8 0 1 1 15.547 2.661c-.442 1.253-1.845 1.602-2.932 1.25C11.309 13.488 9.475 13 8 13c-1.474 0-3.31.488-4.615.911-1.087.352-2.49.003-2.932-1.25A8 8 0 0 1 0 10m8-7a7 7 0 0 0-6.603 9.329c.203.575.923.876 1.68.63C4.397 12.533 6.358 12 8 12s3.604.532 4.923.96c.757.245 1.477-.056 1.68-.631A7 7 0 0 0 8 3"/></symbol><symbol class="bi bi-spellcheck" viewBox="0 0 16 16" id="spellcheck"><path d="M8.217 11.068c1.216 0 1.948-.869 1.948-2.31v-.702c0-1.44-.727-2.305-1.929-2.305-.742 0-1.328.347-1.499.889h-.063V3.983h-1.29V11h1.27v-.791h.064c.21.532.776.86 1.499.86zm-.43-1.025c-.66 0-1.113-.518-1.113-1.28V8.12c0-.825.42-1.343 1.098-1.343.684 0 1.075.518 1.075 1.416v.45c0 .888-.386 1.401-1.06 1.401zm-5.583 1.035c.767 0 1.201-.356 1.406-.737h.059V11h1.216V7.519c0-1.314-.947-1.783-2.11-1.783C1.355 5.736.75 6.42.69 7.27h1.216c.064-.323.313-.552.84-.552s.864.249.864.771v.464H2.346C1.145 7.953.5 8.568.5 9.496c0 .977.693 1.582 1.704 1.582m.42-.947c-.44 0-.845-.235-.845-.718 0-.395.269-.684.84-.684h.991v.538c0 .503-.444.864-.986.864m8.897.567c-.577-.4-.9-1.088-.9-1.983v-.65c0-1.42.894-2.338 2.305-2.338 1.352 0 2.119.82 2.139 1.806h-1.187c-.04-.351-.283-.776-.918-.776-.674 0-1.045.517-1.045 1.328v.625c0 .468.121.834.343 1.067z"/><path d="M14.469 9.414a.75.75 0 0 1 .117 1.055l-4 5a.75.75 0 0 1-1.116.061l-2.5-2.5a.75.75 0 1 1 1.06-1.06l1.908 1.907 3.476-4.346a.75.75 0 0 1 1.055-.117"/></symbol><symbol class="bi bi-spotify" viewBox="0 0 16 16" id="spotify"><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0m3.669 11.538a.5.5 0 0 1-.686.165c-1.879-1.147-4.243-1.407-7.028-.77a.499.499 0 0 1-.222-.973c3.048-.696 5.662-.397 7.77.892a.5.5 0 0 1 .166.686m.979-2.178a.624.624 0 0 1-.858.205c-2.15-1.321-5.428-1.704-7.972-.932a.625.625 0 0 1-.362-1.194c2.905-.881 6.517-.454 8.986 1.063a.624.624 0 0 1 .206.858m.084-2.268C10.154 5.56 5.9 5.419 3.438 6.166a.748.748 0 1 1-.434-1.432c2.825-.857 7.523-.692 10.492 1.07a.747.747 0 1 1-.764 1.288"/></symbol><symbol class="bi bi-square" viewBox="0 0 16 16" id="square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/></symbol><symbol class="bi bi-square-fill" viewBox="0 0 16 16" id="square-fill"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2z"/></symbol><symbol class="bi bi-square-half" viewBox="0 0 16 16" id="square-half"><path d="M8 15V1h6a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1zm6 1a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2z"/></symbol><symbol class="bi bi-stack" viewBox="0 0 16 16" id="stack"><path d="m14.12 10.163 1.715.858c.22.11.22.424 0 .534L8.267 15.34a.6.6 0 0 1-.534 0L.165 11.555a.299.299 0 0 1 0-.534l1.716-.858 5.317 2.659c.505.252 1.1.252 1.604 0l5.317-2.66zM7.733.063a.6.6 0 0 1 .534 0l7.568 3.784a.3.3 0 0 1 0 .535L8.267 8.165a.6.6 0 0 1-.534 0L.165 4.382a.299.299 0 0 1 0-.535z"/><path d="m14.12 6.576 1.715.858c.22.11.22.424 0 .534l-7.568 3.784a.6.6 0 0 1-.534 0L.165 7.968a.299.299 0 0 1 0-.534l1.716-.858 5.317 2.659c.505.252 1.1.252 1.604 0z"/></symbol><symbol class="bi bi-stack-overflow" viewBox="0 0 16 16" id="stack-overflow"><path d="M12.412 14.572V10.29h1.428V16H1v-5.71h1.428v4.282z"/><path d="M3.857 13.145h7.137v-1.428H3.857zM10.254 0 9.108.852l4.26 5.727 1.146-.852zm-3.54 3.377 5.484 4.567.913-1.097L7.627 2.28l-.914 1.097zM4.922 6.55l6.47 3.013.603-1.294-6.47-3.013zm-.925 3.344 6.985 1.469.294-1.398-6.985-1.468z"/></symbol><symbol class="bi bi-star" viewBox="0 0 16 16" id="star"><path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z"/></symbol><symbol class="bi bi-star-fill" viewBox="0 0 16 16" id="star-fill"><path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/></symbol><symbol class="bi bi-star-half" viewBox="0 0 16 16" id="star-half"><path d="M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z"/></symbol><symbol class="bi bi-stars" viewBox="0 0 16 16" id="stars"><path d="M7.657 6.247c.11-.33.576-.33.686 0l.645 1.937a2.89 2.89 0 0 0 1.829 1.828l1.936.645c.33.11.33.576 0 .686l-1.937.645a2.89 2.89 0 0 0-1.828 1.829l-.645 1.936a.361.361 0 0 1-.686 0l-.645-1.937a2.89 2.89 0 0 0-1.828-1.828l-1.937-.645a.361.361 0 0 1 0-.686l1.937-.645a2.89 2.89 0 0 0 1.828-1.828zM3.794 1.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387A1.73 1.73 0 0 0 4.593 5.69l-.387 1.162a.217.217 0 0 1-.412 0L3.407 5.69A1.73 1.73 0 0 0 2.31 4.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387A1.73 1.73 0 0 0 3.407 2.31zM10.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.16 1.16 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.16 1.16 0 0 0-.732-.732L9.1 2.137a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732z"/></symbol><symbol class="bi bi-steam" viewBox="0 0 16 16" id="steam"><path d="M.329 10.333A8.01 8.01 0 0 0 7.99 16C12.414 16 16 12.418 16 8s-3.586-8-8.009-8A8.006 8.006 0 0 0 0 7.468l.003.006 4.304 1.769A2.2 2.2 0 0 1 5.62 8.88l1.96-2.844-.001-.04a3.046 3.046 0 0 1 3.042-3.043 3.046 3.046 0 0 1 3.042 3.043 3.047 3.047 0 0 1-3.111 3.044l-2.804 2a2.223 2.223 0 0 1-3.075 2.11 2.22 2.22 0 0 1-1.312-1.568L.33 10.333Z"/><path d="M4.868 12.683a1.715 1.715 0 0 0 1.318-3.165 1.7 1.7 0 0 0-1.263-.02l1.023.424a1.261 1.261 0 1 1-.97 2.33l-.99-.41a1.7 1.7 0 0 0 .882.84Zm3.726-6.687a2.03 2.03 0 0 0 2.027 2.029 2.03 2.03 0 0 0 2.027-2.029 2.03 2.03 0 0 0-2.027-2.027 2.03 2.03 0 0 0-2.027 2.027m2.03-1.527a1.524 1.524 0 1 1-.002 3.048 1.524 1.524 0 0 1 .002-3.048"/></symbol><symbol class="bi bi-stickies" viewBox="0 0 16 16" id="stickies"><path d="M1.5 0A1.5 1.5 0 0 0 0 1.5V13a1 1 0 0 0 1 1V1.5a.5.5 0 0 1 .5-.5H14a1 1 0 0 0-1-1z"/><path d="M3.5 2A1.5 1.5 0 0 0 2 3.5v11A1.5 1.5 0 0 0 3.5 16h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 16 9.586V3.5A1.5 1.5 0 0 0 14.5 2zM3 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .5.5V9h-4.5A1.5 1.5 0 0 0 9 10.5V15H3.5a.5.5 0 0 1-.5-.5zm7 11.293V10.5a.5.5 0 0 1 .5-.5h4.293z"/></symbol><symbol class="bi bi-stickies-fill" viewBox="0 0 16 16" id="stickies-fill"><path d="M0 1.5V13a1 1 0 0 0 1 1V1.5a.5.5 0 0 1 .5-.5H14a1 1 0 0 0-1-1H1.5A1.5 1.5 0 0 0 0 1.5"/><path d="M3.5 2A1.5 1.5 0 0 0 2 3.5v11A1.5 1.5 0 0 0 3.5 16h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 16 9.586V3.5A1.5 1.5 0 0 0 14.5 2zm6 8.5a1 1 0 0 1 1-1h4.396a.25.25 0 0 1 .177.427l-5.146 5.146a.25.25 0 0 1-.427-.177z"/></symbol><symbol class="bi bi-sticky" viewBox="0 0 16 16" id="sticky"><path d="M2.5 1A1.5 1.5 0 0 0 1 2.5v11A1.5 1.5 0 0 0 2.5 15h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 15 8.586V2.5A1.5 1.5 0 0 0 13.5 1zM2 2.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .5.5V8H9.5A1.5 1.5 0 0 0 8 9.5V14H2.5a.5.5 0 0 1-.5-.5zm7 11.293V9.5a.5.5 0 0 1 .5-.5h4.293z"/></symbol><symbol class="bi bi-sticky-fill" viewBox="0 0 16 16" id="sticky-fill"><path d="M2.5 1A1.5 1.5 0 0 0 1 2.5v11A1.5 1.5 0 0 0 2.5 15h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 15 8.586V2.5A1.5 1.5 0 0 0 13.5 1zm6 8.5a1 1 0 0 1 1-1h4.396a.25.25 0 0 1 .177.427l-5.146 5.146a.25.25 0 0 1-.427-.177z"/></symbol><symbol class="bi bi-stop" viewBox="0 0 16 16" id="stop"><path d="M3.5 5A1.5 1.5 0 0 1 5 3.5h6A1.5 1.5 0 0 1 12.5 5v6a1.5 1.5 0 0 1-1.5 1.5H5A1.5 1.5 0 0 1 3.5 11zM5 4.5a.5.5 0 0 0-.5.5v6a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 .5-.5V5a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-stop-btn" viewBox="0 0 16 16" id="stop-btn"><path d="M6.5 5A1.5 1.5 0 0 0 5 6.5v3A1.5 1.5 0 0 0 6.5 11h3A1.5 1.5 0 0 0 11 9.5v-3A1.5 1.5 0 0 0 9.5 5z"/><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/></symbol><symbol class="bi bi-stop-btn-fill" viewBox="0 0 16 16" id="stop-btn-fill"><path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m6.5-7A1.5 1.5 0 0 0 5 6.5v3A1.5 1.5 0 0 0 6.5 11h3A1.5 1.5 0 0 0 11 9.5v-3A1.5 1.5 0 0 0 9.5 5z"/></symbol><symbol class="bi bi-stop-circle" viewBox="0 0 16 16" id="stop-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M5 6.5A1.5 1.5 0 0 1 6.5 5h3A1.5 1.5 0 0 1 11 6.5v3A1.5 1.5 0 0 1 9.5 11h-3A1.5 1.5 0 0 1 5 9.5z"/></symbol><symbol class="bi bi-stop-circle-fill" viewBox="0 0 16 16" id="stop-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.5 5A1.5 1.5 0 0 0 5 6.5v3A1.5 1.5 0 0 0 6.5 11h3A1.5 1.5 0 0 0 11 9.5v-3A1.5 1.5 0 0 0 9.5 5z"/></symbol><symbol class="bi bi-stop-fill" viewBox="0 0 16 16" id="stop-fill"><path d="M5 3.5h6A1.5 1.5 0 0 1 12.5 5v6a1.5 1.5 0 0 1-1.5 1.5H5A1.5 1.5 0 0 1 3.5 11V5A1.5 1.5 0 0 1 5 3.5"/></symbol><symbol class="bi bi-stoplights" viewBox="0 0 16 16" id="stoplights"><path d="M8 5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m0 4a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m1.5 2.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/><path d="M4 2a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2h2c-.167.5-.8 1.6-2 2v2h2c-.167.5-.8 1.6-2 2v2h2c-.167.5-.8 1.6-2 2v1a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-1c-1.2-.4-1.833-1.5-2-2h2V8c-1.2-.4-1.833-1.5-2-2h2V4c-1.2-.4-1.833-1.5-2-2zm2-1a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-stoplights-fill" viewBox="0 0 16 16" id="stoplights-fill"><path fill-rule="evenodd" d="M6 0a2 2 0 0 0-2 2H2c.167.5.8 1.6 2 2v2H2c.167.5.8 1.6 2 2v2H2c.167.5.8 1.6 2 2v1a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-1c1.2-.4 1.833-1.5 2-2h-2V8c1.2-.4 1.833-1.5 2-2h-2V4c1.2-.4 1.833-1.5 2-2h-2a2 2 0 0 0-2-2zm3.5 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M8 13a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></symbol><symbol class="bi bi-stopwatch" viewBox="0 0 16 16" id="stopwatch"><path d="M8.5 5.6a.5.5 0 1 0-1 0v2.9h-3a.5.5 0 0 0 0 1H8a.5.5 0 0 0 .5-.5z"/><path d="M6.5 1A.5.5 0 0 1 7 .5h2a.5.5 0 0 1 0 1v.57c1.36.196 2.594.78 3.584 1.64l.012-.013.354-.354-.354-.353a.5.5 0 0 1 .707-.708l1.414 1.415a.5.5 0 1 1-.707.707l-.353-.354-.354.354-.013.012A7 7 0 1 1 7 2.071V1.5a.5.5 0 0 1-.5-.5M8 3a6 6 0 1 0 .001 12A6 6 0 0 0 8 3"/></symbol><symbol class="bi bi-stopwatch-fill" viewBox="0 0 16 16" id="stopwatch-fill"><path d="M6.5 0a.5.5 0 0 0 0 1H7v1.07A7.001 7.001 0 0 0 8 16a7 7 0 0 0 5.29-11.584l.013-.012.354-.354.353.354a.5.5 0 1 0 .707-.707l-1.414-1.415a.5.5 0 1 0-.707.707l.354.354-.354.354-.012.012A6.97 6.97 0 0 0 9 2.071V1h.5a.5.5 0 0 0 0-1zm2 5.6V9a.5.5 0 0 1-.5.5H4.5a.5.5 0 0 1 0-1h3V5.6a.5.5 0 1 1 1 0"/></symbol><symbol class="bi bi-strava" viewBox="0 0 16 16" id="strava"><path d="M6.731 0 2 9.125h2.788L6.73 5.497l1.93 3.628h2.766zm4.694 9.125-1.372 2.756L8.66 9.125H6.547L10.053 16l3.484-6.875z"/></symbol><symbol class="bi bi-stripe" viewBox="0 0 16 16" id="stripe"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.226 5.385c-.584 0-.937.164-.937.593 0 .468.607.674 1.36.93 1.228.415 2.844.963 2.851 2.993C11.5 11.868 9.924 13 7.63 13a7.7 7.7 0 0 1-3.009-.626V9.758c.926.506 2.095.88 3.01.88.617 0 1.058-.165 1.058-.671 0-.518-.658-.755-1.453-1.041C6.026 8.49 4.5 7.94 4.5 6.11 4.5 4.165 5.988 3 8.226 3a7.3 7.3 0 0 1 2.734.505v2.583c-.838-.45-1.896-.703-2.734-.703"/></symbol><symbol class="bi bi-subscript" viewBox="0 0 16 16" id="subscript"><path d="m3.266 12.496.96-2.853H7.76l.96 2.853H10L6.62 3H5.38L2 12.496zm2.748-8.063 1.419 4.23h-2.88l1.426-4.23zm6.132 7.203v-.075c0-.332.234-.618.619-.618.354 0 .618.256.618.58 0 .362-.271.649-.52.898l-1.788 1.832V15h3.59v-.958h-1.923v-.045l.973-1.04c.415-.438.867-.845.867-1.547 0-.8-.701-1.41-1.787-1.41-1.23 0-1.795.8-1.795 1.576v.06z"/></symbol><symbol class="bi bi-substack" viewBox="0 0 16 16" id="substack"><path d="M15 3.604H1v1.891h14v-1.89ZM1 7.208V16l7-3.926L15 16V7.208zM15 0H1v1.89h14z"/></symbol><symbol class="bi bi-subtract" viewBox="0 0 16 16" id="subtract"><path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-suit-club" viewBox="0 0 16 16" id="suit-club"><path d="M8 1a3.25 3.25 0 0 0-3.25 3.25c0 .186 0 .29.016.41.014.12.045.27.12.527l.19.665-.692-.028a3.25 3.25 0 1 0 2.357 5.334.5.5 0 0 1 .844.518l-.003.005-.006.015-.024.055a22 22 0 0 1-.438.92 22 22 0 0 1-1.266 2.197c-.013.018-.02.05.001.09q.016.029.03.036A.04.04 0 0 0 5.9 15h4.2q.014 0 .022-.006a.1.1 0 0 0 .029-.035c.02-.04.014-.073.001-.091a23 23 0 0 1-1.704-3.117l-.024-.054-.006-.015-.002-.004a.5.5 0 0 1 .838-.524c.601.7 1.516 1.168 2.496 1.168a3.25 3.25 0 1 0-.139-6.498l-.699.03.199-.671c.14-.47.14-.745.139-.927V4.25A3.25 3.25 0 0 0 8 1m2.207 12.024c.225.405.487.848.78 1.294C11.437 15 10.975 16 10.1 16H5.9c-.876 0-1.338-1-.887-1.683.291-.442.552-.88.776-1.283a4.25 4.25 0 1 1-2.007-8.187l-.009-.064c-.023-.187-.023-.348-.023-.52V4.25a4.25 4.25 0 0 1 8.5 0c0 .14 0 .333-.04.596a4.25 4.25 0 0 1-.46 8.476 4.2 4.2 0 0 1-1.543-.298"/></symbol><symbol class="bi bi-suit-club-fill" viewBox="0 0 16 16" id="suit-club-fill"><path d="M11.5 12.5a3.5 3.5 0 0 1-2.684-1.254 20 20 0 0 0 1.582 2.907c.231.35-.02.847-.438.847H6.04c-.419 0-.67-.497-.438-.847a20 20 0 0 0 1.582-2.907 3.5 3.5 0 1 1-2.538-5.743 3.5 3.5 0 1 1 6.708 0A3.5 3.5 0 1 1 11.5 12.5"/></symbol><symbol class="bi bi-suit-diamond" viewBox="0 0 16 16" id="suit-diamond"><path d="M8.384 1.226a.463.463 0 0 0-.768 0l-4.56 6.468a.54.54 0 0 0 0 .612l4.56 6.469a.463.463 0 0 0 .768 0l4.56-6.469a.54.54 0 0 0 0-.612zM6.848.613a1.39 1.39 0 0 1 2.304 0l4.56 6.468a1.61 1.61 0 0 1 0 1.838l-4.56 6.468a1.39 1.39 0 0 1-2.304 0L2.288 8.92a1.61 1.61 0 0 1 0-1.838z"/></symbol><symbol class="bi bi-suit-diamond-fill" viewBox="0 0 16 16" id="suit-diamond-fill"><path d="M2.45 7.4 7.2 1.067a1 1 0 0 1 1.6 0L13.55 7.4a1 1 0 0 1 0 1.2L8.8 14.933a1 1 0 0 1-1.6 0L2.45 8.6a1 1 0 0 1 0-1.2"/></symbol><symbol class="bi bi-suit-heart" viewBox="0 0 16 16" id="suit-heart"><path d="m8 6.236-.894-1.789c-.222-.443-.607-1.08-1.152-1.595C5.418 2.345 4.776 2 4 2 2.324 2 1 3.326 1 4.92c0 1.211.554 2.066 1.868 3.37.337.334.721.695 1.146 1.093C5.122 10.423 6.5 11.717 8 13.447c1.5-1.73 2.878-3.024 3.986-4.064.425-.398.81-.76 1.146-1.093C14.446 6.986 15 6.131 15 4.92 15 3.326 13.676 2 12 2c-.777 0-1.418.345-1.954.852-.545.515-.93 1.152-1.152 1.595zm.392 8.292a.513.513 0 0 1-.784 0c-1.601-1.902-3.05-3.262-4.243-4.381C1.3 8.208 0 6.989 0 4.92 0 2.755 1.79 1 4 1c1.6 0 2.719 1.05 3.404 2.008.26.365.458.716.596.992a7.6 7.6 0 0 1 .596-.992C9.281 2.049 10.4 1 12 1c2.21 0 4 1.755 4 3.92 0 2.069-1.3 3.288-3.365 5.227-1.193 1.12-2.642 2.48-4.243 4.38z"/></symbol><symbol class="bi bi-suit-heart-fill" viewBox="0 0 16 16" id="suit-heart-fill"><path d="M4 1c2.21 0 4 1.755 4 3.92C8 2.755 9.79 1 12 1s4 1.755 4 3.92c0 3.263-3.234 4.414-7.608 9.608a.513.513 0 0 1-.784 0C3.234 9.334 0 8.183 0 4.92 0 2.755 1.79 1 4 1"/></symbol><symbol class="bi bi-suit-spade" viewBox="0 0 16 16" id="suit-spade"><path d="M8 0a.5.5 0 0 1 .429.243c1.359 2.265 2.925 3.682 4.25 4.882q.144.128.282.255C14.308 6.604 15.5 7.747 15.5 9.5a4 4 0 0 1-5.406 3.746c.235.39.491.782.722 1.131.434.659-.01 1.623-.856 1.623H6.04c-.845 0-1.29-.964-.856-1.623.263-.397.51-.777.728-1.134A4 4 0 0 1 .5 9.5c0-1.753 1.192-2.896 2.539-4.12l.281-.255c1.326-1.2 2.892-2.617 4.251-4.882A.5.5 0 0 1 8 0M3.711 6.12C2.308 7.396 1.5 8.253 1.5 9.5a3 3 0 0 0 5.275 1.956.5.5 0 0 1 .868.43c-.094.438-.33.932-.611 1.428a29 29 0 0 1-1.013 1.614.03.03 0 0 0-.005.018.07.07 0 0 0 .024.054h3.924a.07.07 0 0 0 .024-.054.03.03 0 0 0-.005-.018c-.3-.455-.658-1.005-.96-1.535-.294-.514-.57-1.064-.664-1.507a.5.5 0 0 1 .868-.43A3 3 0 0 0 14.5 9.5c0-1.247-.808-2.104-2.211-3.38L12 5.86c-1.196-1.084-2.668-2.416-4-4.424-1.332 2.008-2.804 3.34-4 4.422l-.289.261z"/></symbol><symbol class="bi bi-suit-spade-fill" viewBox="0 0 16 16" id="suit-spade-fill"><path d="M7.184 11.246A3.5 3.5 0 0 1 1 9c0-1.602 1.14-2.633 2.66-4.008C4.986 3.792 6.602 2.33 8 0c1.398 2.33 3.014 3.792 4.34 4.992C13.86 6.367 15 7.398 15 9a3.5 3.5 0 0 1-6.184 2.246 20 20 0 0 0 1.582 2.907c.231.35-.02.847-.438.847H6.04c-.419 0-.67-.497-.438-.847a20 20 0 0 0 1.582-2.907"/></symbol><symbol class="bi bi-suitcase" viewBox="0 0 16 16" id="suitcase"><path d="M6 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 6 5m2 0a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5m2 0a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 10 5"/><path d="M6.5 0a.5.5 0 0 0-.5.5V3H5a2 2 0 0 0-2 2v8a2 2 0 0 0 1.031 1.75A1.003 1.003 0 0 0 5 16a1 1 0 0 0 1-1h4a1 1 0 1 0 1.969-.25A2 2 0 0 0 13 13V5a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-.5-.5zM9 3H7V1h2zm3 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1z"/></symbol><symbol class="bi bi-suitcase-fill" viewBox="0 0 16 16" id="suitcase-fill"><path d="M6 .5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5V3h1.5A1.5 1.5 0 0 1 13 4.5v9a1.5 1.5 0 0 1-1.004 1.416A1 1 0 1 1 10 15H6a1 1 0 1 1-1.997-.084A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3H6zM9 1H7v2h2zM6 5.5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0z"/></symbol><symbol class="bi bi-suitcase-lg" viewBox="0 0 16 16" id="suitcase-lg"><path d="M5 2a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2h3.5A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5H14a.5.5 0 0 1-1 0H3a.5.5 0 0 1-1 0h-.5A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2zm1 0h4a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1M1.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5H3V3zM15 12.5v-9a.5.5 0 0 0-.5-.5H13v10h1.5a.5.5 0 0 0 .5-.5m-3 .5V3H4v10z"/></symbol><symbol class="bi bi-suitcase-lg-fill" viewBox="0 0 16 16" id="suitcase-lg-fill"><path d="M7 0a2 2 0 0 0-2 2H1.5A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14H2a.5.5 0 0 0 1 0h10a.5.5 0 0 0 1 0h.5a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2H11a2 2 0 0 0-2-2zM6 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1zM3 13V3h1v10zm9 0V3h1v10z"/></symbol><symbol class="bi bi-suitcase2" viewBox="0 0 16 16" id="suitcase2"><path d="M6.5 0a.5.5 0 0 0-.5.5V3H5a2 2 0 0 0-2 2v8a2 2 0 0 0 1.031 1.75A1.003 1.003 0 0 0 5 16a1 1 0 0 0 1-1h4a1 1 0 1 0 1.969-.25A2 2 0 0 0 13 13V5a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-.5-.5zM9 3H7V1h2zm3 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7h8zM5 4h6a1 1 0 0 1 1 1v1H4V5a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-suitcase2-fill" viewBox="0 0 16 16" id="suitcase2-fill"><path d="M6.5 0a.5.5 0 0 0-.5.5V3H4.5A1.5 1.5 0 0 0 3 4.5v9a1.5 1.5 0 0 0 1.003 1.416A1 1 0 1 0 6 15h4a1 1 0 1 0 1.996-.084A1.5 1.5 0 0 0 13 13.5v-9A1.5 1.5 0 0 0 11.5 3H10V.5a.5.5 0 0 0-.5-.5zM9 3H7V1h2zM4 7V6h8v1z"/></symbol><symbol class="bi bi-sun" viewBox="0 0 16 16" id="sun"><path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/></symbol><symbol class="bi bi-sun-fill" viewBox="0 0 16 16" id="sun-fill"><path d="M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/></symbol><symbol class="bi bi-sunglasses" viewBox="0 0 16 16" id="sunglasses"><path d="M3 5a2 2 0 0 0-2 2v.5H.5a.5.5 0 0 0 0 1H1V9a2 2 0 0 0 2 2h1a3 3 0 0 0 3-3 1 1 0 1 1 2 0 3 3 0 0 0 3 3h1a2 2 0 0 0 2-2v-.5h.5a.5.5 0 0 0 0-1H15V7a2 2 0 0 0-2-2h-2a2 2 0 0 0-1.888 1.338A2 2 0 0 0 8 6a2 2 0 0 0-1.112.338A2 2 0 0 0 5 5zm0 1h.941c.264 0 .348.356.112.474l-.457.228a2 2 0 0 0-.894.894l-.228.457C2.356 8.289 2 8.205 2 7.94V7a1 1 0 0 1 1-1"/></symbol><symbol class="bi bi-sunrise" viewBox="0 0 16 16" id="sunrise"><path d="M7.646 1.146a.5.5 0 0 1 .708 0l1.5 1.5a.5.5 0 0 1-.708.708L8.5 2.707V4.5a.5.5 0 0 1-1 0V2.707l-.646.647a.5.5 0 1 1-.708-.708zM2.343 4.343a.5.5 0 0 1 .707 0l1.414 1.414a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707m11.314 0a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0M8 7a3 3 0 0 1 2.599 4.5H5.4A3 3 0 0 1 8 7m3.71 4.5a4 4 0 1 0-7.418 0H.499a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-sunrise-fill" viewBox="0 0 16 16" id="sunrise-fill"><path d="M7.646 1.146a.5.5 0 0 1 .708 0l1.5 1.5a.5.5 0 0 1-.708.708L8.5 2.707V4.5a.5.5 0 0 1-1 0V2.707l-.646.647a.5.5 0 1 1-.708-.708zM2.343 4.343a.5.5 0 0 1 .707 0l1.414 1.414a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707m11.314 0a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0M11.709 11.5a4 4 0 1 0-7.418 0H.5a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-sunset" viewBox="0 0 16 16" id="sunset"><path d="M7.646 4.854a.5.5 0 0 0 .708 0l1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V1.5a.5.5 0 0 0-1 0v1.793l-.646-.647a.5.5 0 1 0-.708.708zm-5.303-.51a.5.5 0 0 1 .707 0l1.414 1.413a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707zm11.314 0a.5.5 0 0 1 0 .706l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zM8 7a3 3 0 0 1 2.599 4.5H5.4A3 3 0 0 1 8 7m3.71 4.5a4 4 0 1 0-7.418 0H.499a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-sunset-fill" viewBox="0 0 16 16" id="sunset-fill"><path d="M7.646 4.854a.5.5 0 0 0 .708 0l1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V1.5a.5.5 0 0 0-1 0v1.793l-.646-.647a.5.5 0 1 0-.708.708zm-5.303-.51a.5.5 0 0 1 .707 0l1.414 1.413a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707zm11.314 0a.5.5 0 0 1 0 .706l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zM11.709 11.5a4 4 0 1 0-7.418 0H.5a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-superscript" viewBox="0 0 16 16" id="superscript"><path d="m4.266 12.496.96-2.853H8.76l.96 2.853H11L7.62 3H6.38L3 12.496zm2.748-8.063 1.419 4.23h-2.88l1.426-4.23zm5.132-1.797v-.075c0-.332.234-.618.619-.618.354 0 .618.256.618.58 0 .362-.271.649-.52.898l-1.788 1.832V6h3.59v-.958h-1.923v-.045l.973-1.04c.415-.438.867-.845.867-1.547 0-.8-.701-1.41-1.787-1.41C11.565 1 11 1.8 11 2.576v.06z"/></symbol><symbol class="bi bi-symmetry-horizontal" viewBox="0 0 16 16" id="symmetry-horizontal"><path d="M13.5 7a.5.5 0 0 0 .24-.939l-11-6A.5.5 0 0 0 2 .5v6a.5.5 0 0 0 .5.5zm.485 2.376a.5.5 0 0 1-.246.563l-11 6A.5.5 0 0 1 2 15.5v-6a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .485.376M11.539 10H3v4.658z"/></symbol><symbol class="bi bi-symmetry-vertical" viewBox="0 0 16 16" id="symmetry-vertical"><path d="M7 2.5a.5.5 0 0 0-.939-.24l-6 11A.5.5 0 0 0 .5 14h6a.5.5 0 0 0 .5-.5zm2.376-.484a.5.5 0 0 1 .563.245l6 11A.5.5 0 0 1 15.5 14h-6a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .376-.484M10 4.46V13h4.658z"/></symbol><symbol class="bi bi-table" viewBox="0 0 16 16" id="table"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 2h-4v3h4zm0 4h-4v3h4zm0 4h-4v3h3a1 1 0 0 0 1-1zm-5 3v-3H6v3zm-5 0v-3H1v2a1 1 0 0 0 1 1zm-4-4h4V8H1zm0-4h4V4H1zm5-3v3h4V4zm4 4H6v3h4z"/></symbol><symbol class="bi bi-tablet" viewBox="0 0 16 16" id="tablet"><path d="M12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M8 14a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-tablet-fill" viewBox="0 0 16 16" id="tablet-fill"><path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm7 11a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/></symbol><symbol class="bi bi-tablet-landscape" viewBox="0 0 16 16" id="tablet-landscape"><path d="M1 4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm-1 8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2z"/><path d="M14 8a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/></symbol><symbol class="bi bi-tablet-landscape-fill" viewBox="0 0 16 16" id="tablet-landscape-fill"><path d="M2 14a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2zm11-7a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/></symbol><symbol class="bi bi-tag" viewBox="0 0 16 16" id="tag"><path d="M6 4.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-1 0a.5.5 0 1 0-1 0 .5.5 0 0 0 1 0"/><path d="M2 1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 1 6.586V2a1 1 0 0 1 1-1m0 5.586 7 7L13.586 9l-7-7H2z"/></symbol><symbol class="bi bi-tag-fill" viewBox="0 0 16 16" id="tag-fill"><path d="M2 1a1 1 0 0 0-1 1v4.586a1 1 0 0 0 .293.707l7 7a1 1 0 0 0 1.414 0l4.586-4.586a1 1 0 0 0 0-1.414l-7-7A1 1 0 0 0 6.586 1zm4 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/></symbol><symbol class="bi bi-tags" viewBox="0 0 16 16" id="tags"><path d="M3 2v4.586l7 7L14.586 9l-7-7zM2 2a1 1 0 0 1 1-1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 2 6.586z"/><path d="M5.5 5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m0 1a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3M1 7.086a1 1 0 0 0 .293.707L8.75 15.25l-.043.043a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 0 7.586V3a1 1 0 0 1 1-1z"/></symbol><symbol class="bi bi-tags-fill" viewBox="0 0 16 16" id="tags-fill"><path d="M2 2a1 1 0 0 1 1-1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 2 6.586zm3.5 4a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/><path d="M1.293 7.793A1 1 0 0 1 1 7.086V2a1 1 0 0 0-1 1v4.586a1 1 0 0 0 .293.707l7 7a1 1 0 0 0 1.414 0l.043-.043z"/></symbol><symbol class="bi bi-taxi-front" viewBox="0 0 16 16" id="taxi-front"><path d="M4.862 5.276 3.906 7.19a.51.51 0 0 0 .497.731c.91-.073 2.35-.17 3.597-.17s2.688.097 3.597.17a.51.51 0 0 0 .497-.731l-.956-1.913A.5.5 0 0 0 10.691 5H5.309a.5.5 0 0 0-.447.276M4 10a1 1 0 1 1-2 0 1 1 0 0 1 2 0m10 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-9 0a1 1 0 0 1 1-1h4a1 1 0 1 1 0 2H6a1 1 0 0 1-1-1"/><path d="M6 1a1 1 0 0 0-1 1v1h-.181A2.5 2.5 0 0 0 2.52 4.515l-.792 1.848a.8.8 0 0 1-.38.404c-.5.25-.855.715-.965 1.262L.05 9.708a2.5 2.5 0 0 0-.049.49v.413c0 .814.39 1.543 1 1.997V14.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.338c1.292.048 2.745.088 4 .088s2.708-.04 4-.088V14.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.892c.61-.454 1-1.183 1-1.997v-.413q0-.248-.049-.49l-.335-1.68a1.8 1.8 0 0 0-.964-1.261.8.8 0 0 1-.381-.404l-.792-1.848A2.5 2.5 0 0 0 11.181 3H11V2a1 1 0 0 0-1-1zM4.819 4h6.362a1.5 1.5 0 0 1 1.379.91l.792 1.847a1.8 1.8 0 0 0 .853.904c.222.112.381.32.43.564l.336 1.679q.03.146.029.294v.413a1.48 1.48 0 0 1-1.408 1.484c-1.555.07-3.786.155-5.592.155s-4.037-.084-5.592-.155A1.48 1.48 0 0 1 1 10.611v-.413q0-.148.03-.294l.335-1.68a.8.8 0 0 1 .43-.563c.383-.19.685-.511.853-.904l.792-1.848A1.5 1.5 0 0 1 4.82 4Z"/></symbol><symbol class="bi bi-taxi-front-fill" viewBox="0 0 16 16" id="taxi-front-fill"><path d="M6 1a1 1 0 0 0-1 1v1h-.181A2.5 2.5 0 0 0 2.52 4.515l-.792 1.848a.8.8 0 0 1-.38.404c-.5.25-.855.715-.965 1.262L.05 9.708a2.5 2.5 0 0 0-.049.49v.413c0 .814.39 1.543 1 1.997V14.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.338c1.292.048 2.745.088 4 .088s2.708-.04 4-.088V14.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.892c.61-.454 1-1.183 1-1.997v-.413q0-.248-.049-.49l-.335-1.68a1.8 1.8 0 0 0-.964-1.261.8.8 0 0 1-.381-.404l-.792-1.848A2.5 2.5 0 0 0 11.181 3H11V2a1 1 0 0 0-1-1zM4.309 4h7.382a.5.5 0 0 1 .447.276l.956 1.913a.51.51 0 0 1-.497.731c-.91-.073-3.35-.17-4.597-.17s-3.688.097-4.597.17a.51.51 0 0 1-.497-.731l.956-1.913A.5.5 0 0 1 4.309 4M4 10a1 1 0 1 1-2 0 1 1 0 0 1 2 0m10 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-9 0a1 1 0 0 1 1-1h4a1 1 0 1 1 0 2H6a1 1 0 0 1-1-1"/></symbol><symbol class="bi bi-telegram" viewBox="0 0 16 16" id="telegram"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.287 5.906q-1.168.486-4.666 2.01-.567.225-.595.442c-.03.243.275.339.69.47l.175.055c.408.133.958.288 1.243.294q.39.01.868-.32 3.269-2.206 3.374-2.23c.05-.012.12-.026.166.016s.042.12.037.141c-.03.129-1.227 1.241-1.846 1.817-.193.18-.33.307-.358.336a8 8 0 0 1-.188.186c-.38.366-.664.64.015 1.088.327.216.589.393.85.571.284.194.568.387.936.629q.14.092.27.187c.331.236.63.448.997.414.214-.02.435-.22.547-.82.265-1.417.786-4.486.906-5.751a1.4 1.4 0 0 0-.013-.315.34.34 0 0 0-.114-.217.53.53 0 0 0-.31-.093c-.3.005-.763.166-2.984 1.09"/></symbol><symbol class="bi bi-telephone" viewBox="0 0 16 16" id="telephone"><path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/></symbol><symbol class="bi bi-telephone-fill" viewBox="0 0 16 16" id="telephone-fill"><path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/></symbol><symbol class="bi bi-telephone-forward" viewBox="0 0 16 16" id="telephone-forward"><path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zm10.762.135a.5.5 0 0 1 .708 0l2.5 2.5a.5.5 0 0 1 0 .708l-2.5 2.5a.5.5 0 0 1-.708-.708L14.293 4H9.5a.5.5 0 0 1 0-1h4.793l-1.647-1.646a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-telephone-forward-fill" viewBox="0 0 16 16" id="telephone-forward-fill"><path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zm10.761.135a.5.5 0 0 1 .708 0l2.5 2.5a.5.5 0 0 1 0 .708l-2.5 2.5a.5.5 0 0 1-.708-.708L14.293 4H9.5a.5.5 0 0 1 0-1h4.793l-1.647-1.646a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-telephone-inbound" viewBox="0 0 16 16" id="telephone-inbound"><path d="M15.854.146a.5.5 0 0 1 0 .708L11.707 5H14.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 1 0v2.793L15.146.146a.5.5 0 0 1 .708 0m-12.2 1.182a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/></symbol><symbol class="bi bi-telephone-inbound-fill" viewBox="0 0 16 16" id="telephone-inbound-fill"><path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zM15.854.146a.5.5 0 0 1 0 .708L11.707 5H14.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 1 0v2.793L15.146.146a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-telephone-minus" viewBox="0 0 16 16" id="telephone-minus"><path fill-rule="evenodd" d="M10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5"/><path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/></symbol><symbol class="bi bi-telephone-minus-fill" viewBox="0 0 16 16" id="telephone-minus-fill"><path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zM10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-telephone-outbound" viewBox="0 0 16 16" id="telephone-outbound"><path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zM11 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-4.146 4.147a.5.5 0 0 1-.708-.708L14.293 1H11.5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-telephone-outbound-fill" viewBox="0 0 16 16" id="telephone-outbound-fill"><path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zM11 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-4.146 4.147a.5.5 0 0 1-.708-.708L14.293 1H11.5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-telephone-plus" viewBox="0 0 16 16" id="telephone-plus"><path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/><path fill-rule="evenodd" d="M12.5 1a.5.5 0 0 1 .5.5V3h1.5a.5.5 0 0 1 0 1H13v1.5a.5.5 0 0 1-1 0V4h-1.5a.5.5 0 0 1 0-1H12V1.5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-telephone-plus-fill" viewBox="0 0 16 16" id="telephone-plus-fill"><path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zM12.5 1a.5.5 0 0 1 .5.5V3h1.5a.5.5 0 0 1 0 1H13v1.5a.5.5 0 0 1-1 0V4h-1.5a.5.5 0 0 1 0-1H12V1.5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-telephone-x" viewBox="0 0 16 16" id="telephone-x"><path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/><path fill-rule="evenodd" d="M11.146 1.646a.5.5 0 0 1 .708 0L13 2.793l1.146-1.147a.5.5 0 0 1 .708.708L13.707 3.5l1.147 1.146a.5.5 0 0 1-.708.708L13 4.207l-1.146 1.147a.5.5 0 0 1-.708-.708L12.293 3.5l-1.147-1.146a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-telephone-x-fill" viewBox="0 0 16 16" id="telephone-x-fill"><path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zm9.261 1.135a.5.5 0 0 1 .708 0L13 2.793l1.146-1.147a.5.5 0 0 1 .708.708L13.707 3.5l1.147 1.146a.5.5 0 0 1-.708.708L13 4.207l-1.146 1.147a.5.5 0 0 1-.708-.708L12.293 3.5l-1.147-1.146a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-tencent-qq" viewBox="0 0 16 16" id="tencent-qq"><path d="M6.048 3.323c.022.277-.13.523-.338.55-.21.026-.397-.176-.419-.453s.13-.523.338-.55c.21-.026.397.176.42.453Zm2.265-.24c-.603-.146-.894.256-.936.333-.027.048-.008.117.037.15.045.035.092.025.119-.003.361-.39.751-.172.829-.129l.011.007c.053.024.147.028.193-.098.023-.063.017-.11-.006-.142-.016-.023-.089-.08-.247-.118"/><path d="M11.727 6.719c0-.022.01-.375.01-.557 0-3.07-1.45-6.156-5.015-6.156S1.708 3.092 1.708 6.162c0 .182.01.535.01.557l-.72 1.795a26 26 0 0 0-.534 1.508c-.68 2.187-.46 3.093-.292 3.113.36.044 1.401-1.647 1.401-1.647 0 .979.504 2.256 1.594 3.179-.408.126-.907.319-1.228.556-.29.213-.253.43-.201.518.228.386 3.92.246 4.985.126 1.065.12 4.756.26 4.984-.126.052-.088.088-.305-.2-.518-.322-.237-.822-.43-1.23-.557 1.09-.922 1.594-2.2 1.594-3.178 0 0 1.041 1.69 1.401 1.647.168-.02.388-.926-.292-3.113a26 26 0 0 0-.534-1.508l-.72-1.795ZM9.773 5.53a.1.1 0 0 1-.009.096c-.109.159-1.554.943-3.033.943h-.017c-1.48 0-2.925-.784-3.034-.943a.1.1 0 0 1-.018-.055q0-.022.01-.04c.13-.287 1.43-.606 3.042-.606h.017c1.611 0 2.912.319 3.042.605m-4.32-.989c-.483.022-.896-.529-.922-1.229s.344-1.286.828-1.308c.483-.022.896.529.922 1.23.027.7-.344 1.286-.827 1.307Zm2.538 0c-.484-.022-.854-.607-.828-1.308.027-.7.44-1.25.923-1.23.483.023.853.608.827 1.309-.026.7-.439 1.251-.922 1.23ZM2.928 8.99q.32.063.639.117v2.336s1.104.222 2.21.068V9.363q.49.027.937.023h.017c1.117.013 2.474-.136 3.786-.396.097.622.151 1.386.097 2.284-.146 2.45-1.6 3.99-3.846 4.012h-.091c-2.245-.023-3.7-1.562-3.846-4.011-.054-.9 0-1.663.097-2.285"/></symbol><symbol class="bi bi-terminal" viewBox="0 0 16 16" id="terminal"><path d="M6 9a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3A.5.5 0 0 1 6 9M3.854 4.146a.5.5 0 1 0-.708.708L4.793 6.5 3.146 8.146a.5.5 0 1 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/><path d="M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z"/></symbol><symbol class="bi bi-terminal-dash" viewBox="0 0 16 16" id="terminal-dash"><path d="M2 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V4a1 1 0 0 0-1-1z"/><path d="M3.146 5.146a.5.5 0 0 1 .708 0L5.177 6.47a.75.75 0 0 1 0 1.06L3.854 8.854a.5.5 0 1 1-.708-.708L4.293 7 3.146 5.854a.5.5 0 0 1 0-.708M5.5 9a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-terminal-fill" viewBox="0 0 16 16" id="terminal-fill"><path d="M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm9.5 5.5h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1m-6.354-.354a.5.5 0 1 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2a.5.5 0 1 0-.708.708L4.793 6.5z"/></symbol><symbol class="bi bi-terminal-plus" viewBox="0 0 16 16" id="terminal-plus"><path d="M2 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V4a1 1 0 0 0-1-1z"/><path d="M3.146 5.146a.5.5 0 0 1 .708 0L5.177 6.47a.75.75 0 0 1 0 1.06L3.854 8.854a.5.5 0 1 1-.708-.708L4.293 7 3.146 5.854a.5.5 0 0 1 0-.708M5.5 9a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-terminal-split" viewBox="0 0 16 16" id="terminal-split"><path d="M2.146 3.146a.5.5 0 0 1 .708 0l.823.824a.75.75 0 0 1 0 1.06l-.823.824a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708M4 6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1A.5.5 0 0 1 4 6m6.354-2.854a.5.5 0 0 0-.708.708l.647.646-.647.646a.5.5 0 1 0 .708.708l.823-.824a.75.75 0 0 0 0-1.06zM12 5.5a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/><path d="M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h5.5V2zm6.5 0v12H14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-terminal-x" viewBox="0 0 16 16" id="terminal-x"><path d="M2 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V4a1 1 0 0 0-1-1z"/><path d="M3.146 5.146a.5.5 0 0 1 .708 0L5.177 6.47a.75.75 0 0 1 0 1.06L3.854 8.854a.5.5 0 1 1-.708-.708L4.293 7 3.146 5.854a.5.5 0 0 1 0-.708M5.5 9a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/></symbol><symbol class="bi bi-text-center" viewBox="0 0 16 16" id="text-center"><path fill-rule="evenodd" d="M4 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-text-indent-left" viewBox="0 0 16 16" id="text-indent-left"><path d="M2 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m.646 2.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L4.293 8 2.646 6.354a.5.5 0 0 1 0-.708M7 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0 3a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m-5 3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-text-indent-right" viewBox="0 0 16 16" id="text-indent-right"><path d="M2 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m10.646 2.146a.5.5 0 0 1 .708.708L11.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zM2 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0 3a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0 3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-text-left" viewBox="0 0 16 16" id="text-left"><path fill-rule="evenodd" d="M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-text-paragraph" viewBox="0 0 16 16" id="text-paragraph"><path fill-rule="evenodd" d="M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m4-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-text-right" viewBox="0 0 16 16" id="text-right"><path fill-rule="evenodd" d="M6 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m4-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-text-wrap" viewBox="0 0 16 16" id="text-wrap"><path fill-rule="evenodd" d="M2 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h9a2.5 2.5 0 0 1 0 5h-1.293l.647.646a.5.5 0 0 1-.708.708l-1.5-1.5a.5.5 0 0 1 0-.708l1.5-1.5a.5.5 0 0 1 .708.708l-.647.646H11.5a1.5 1.5 0 0 0 0-3h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5H7a.5.5 0 0 1 0 1H2.5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-textarea" viewBox="0 0 16 16" id="textarea"><path d="M1.5 2.5A1.5 1.5 0 0 1 3 1h10a1.5 1.5 0 0 1 1.5 1.5v3.563a2 2 0 0 1 0 3.874V13.5A1.5 1.5 0 0 1 13 15H3a1.5 1.5 0 0 1-1.5-1.5V9.937a2 2 0 0 1 0-3.874zm1 3.563a2 2 0 0 1 0 3.874V13.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V9.937a2 2 0 0 1 0-3.874V2.5A.5.5 0 0 0 13 2H3a.5.5 0 0 0-.5.5zM2 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2m12 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/></symbol><symbol class="bi bi-textarea-resize" viewBox="0 0 16 16" id="textarea-resize"><path d="M0 4.5A2.5 2.5 0 0 1 2.5 2h11A2.5 2.5 0 0 1 16 4.5v7a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 11.5zM2.5 3A1.5 1.5 0 0 0 1 4.5v7A1.5 1.5 0 0 0 2.5 13h11a1.5 1.5 0 0 0 1.5-1.5v-7A1.5 1.5 0 0 0 13.5 3zm10.854 4.646a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708l3-3a.5.5 0 0 1 .708 0m0 2.5a.5.5 0 0 1 0 .708l-.5.5a.5.5 0 0 1-.708-.708l.5-.5a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-textarea-t" viewBox="0 0 16 16" id="textarea-t"><path d="M1.5 2.5A1.5 1.5 0 0 1 3 1h10a1.5 1.5 0 0 1 1.5 1.5v3.563a2 2 0 0 1 0 3.874V13.5A1.5 1.5 0 0 1 13 15H3a1.5 1.5 0 0 1-1.5-1.5V9.937a2 2 0 0 1 0-3.874zm1 3.563a2 2 0 0 1 0 3.874V13.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V9.937a2 2 0 0 1 0-3.874V2.5A.5.5 0 0 0 13 2H3a.5.5 0 0 0-.5.5zM2 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2m12 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/><path d="M11.434 4H4.566L4.5 5.994h.386c.21-1.252.612-1.446 2.173-1.495l.343-.011v6.343c0 .537-.116.665-1.049.748V12h3.294v-.421c-.938-.083-1.054-.21-1.054-.748V4.488l.348.01c1.56.05 1.963.244 2.173 1.496h.386z"/></symbol><symbol class="bi bi-thermometer" viewBox="0 0 16 16" id="thermometer"><path d="M8 14a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/><path d="M8 0a2.5 2.5 0 0 0-2.5 2.5v7.55a3.5 3.5 0 1 0 5 0V2.5A2.5 2.5 0 0 0 8 0M6.5 2.5a1.5 1.5 0 1 1 3 0v7.987l.167.15a2.5 2.5 0 1 1-3.333 0l.166-.15z"/></symbol><symbol class="bi bi-thermometer-half" viewBox="0 0 16 16" id="thermometer-half"><path d="M9.5 12.5a1.5 1.5 0 1 1-2-1.415V6.5a.5.5 0 0 1 1 0v4.585a1.5 1.5 0 0 1 1 1.415"/><path d="M5.5 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0zM8 1a1.5 1.5 0 0 0-1.5 1.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0l-.166-.15V2.5A1.5 1.5 0 0 0 8 1"/></symbol><symbol class="bi bi-thermometer-high" viewBox="0 0 16 16" id="thermometer-high"><path d="M9.5 12.5a1.5 1.5 0 1 1-2-1.415V2.5a.5.5 0 0 1 1 0v8.585a1.5 1.5 0 0 1 1 1.415"/><path d="M5.5 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0zM8 1a1.5 1.5 0 0 0-1.5 1.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0l-.166-.15V2.5A1.5 1.5 0 0 0 8 1"/></symbol><symbol class="bi bi-thermometer-low" viewBox="0 0 16 16" id="thermometer-low"><path d="M9.5 12.5a1.5 1.5 0 1 1-2-1.415V9.5a.5.5 0 0 1 1 0v1.585a1.5 1.5 0 0 1 1 1.415"/><path d="M5.5 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0zM8 1a1.5 1.5 0 0 0-1.5 1.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0l-.166-.15V2.5A1.5 1.5 0 0 0 8 1"/></symbol><symbol class="bi bi-thermometer-snow" viewBox="0 0 16 16" id="thermometer-snow"><path d="M5 12.5a1.5 1.5 0 1 1-2-1.415V9.5a.5.5 0 0 1 1 0v1.585A1.5 1.5 0 0 1 5 12.5"/><path d="M1 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0zM3.5 1A1.5 1.5 0 0 0 2 2.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0L5 10.486V2.5A1.5 1.5 0 0 0 3.5 1m5 1a.5.5 0 0 1 .5.5v1.293l.646-.647a.5.5 0 0 1 .708.708L9 5.207v1.927l1.669-.963.495-1.85a.5.5 0 1 1 .966.26l-.237.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.884.237a.5.5 0 1 1-.26.966l-1.848-.495L9.5 8l1.669.963 1.849-.495a.5.5 0 1 1 .258.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.237.883a.5.5 0 1 1-.966.258L10.67 9.83 9 8.866v1.927l1.354 1.353a.5.5 0 0 1-.708.708L9 12.207V13.5a.5.5 0 0 1-1 0v-11a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-thermometer-sun" viewBox="0 0 16 16" id="thermometer-sun"><path d="M5 12.5a1.5 1.5 0 1 1-2-1.415V2.5a.5.5 0 0 1 1 0v8.585A1.5 1.5 0 0 1 5 12.5"/><path d="M1 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0zM3.5 1A1.5 1.5 0 0 0 2 2.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0L5 10.486V2.5A1.5 1.5 0 0 0 3.5 1m5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0v-1a.5.5 0 0 1 .5-.5m4.243 1.757a.5.5 0 0 1 0 .707l-.707.708a.5.5 0 1 1-.708-.708l.708-.707a.5.5 0 0 1 .707 0M8 5.5a.5.5 0 0 1 .5-.5 3 3 0 1 1 0 6 .5.5 0 0 1 0-1 2 2 0 0 0 0-4 .5.5 0 0 1-.5-.5M12.5 8a.5.5 0 0 1 .5-.5h1a.5.5 0 1 1 0 1h-1a.5.5 0 0 1-.5-.5m-1.172 2.828a.5.5 0 0 1 .708 0l.707.708a.5.5 0 0 1-.707.707l-.708-.707a.5.5 0 0 1 0-.708M8.5 12a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0v-1a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-threads" viewBox="0 0 16 16" id="threads"><path d="M6.321 6.016c-.27-.18-1.166-.802-1.166-.802.756-1.081 1.753-1.502 3.132-1.502.975 0 1.803.327 2.394.948s.928 1.509 1.005 2.644q.492.207.905.484c1.109.745 1.719 1.86 1.719 3.137 0 2.716-2.226 5.075-6.256 5.075C4.594 16 1 13.987 1 7.994 1 2.034 4.482 0 8.044 0 9.69 0 13.55.243 15 5.036l-1.36.353C12.516 1.974 10.163 1.43 8.006 1.43c-3.565 0-5.582 2.171-5.582 6.79 0 4.143 2.254 6.343 5.63 6.343 2.777 0 4.847-1.443 4.847-3.556 0-1.438-1.208-2.127-1.27-2.127-.236 1.234-.868 3.31-3.644 3.31-1.618 0-3.013-1.118-3.013-2.582 0-2.09 1.984-2.847 3.55-2.847.586 0 1.294.04 1.663.114 0-.637-.54-1.728-1.9-1.728-1.25 0-1.566.405-1.967.868ZM8.716 8.19c-2.04 0-2.304.87-2.304 1.416 0 .878 1.043 1.168 1.6 1.168 1.02 0 2.067-.282 2.232-2.423a6.2 6.2 0 0 0-1.528-.161"/></symbol><symbol class="bi bi-threads-fill" viewBox="0 0 16 16" id="threads-fill"><path d="M6.81 9.204c0-.41.197-1.062 1.727-1.062.469 0 .758.034 1.146.121-.124 1.606-.91 1.818-1.674 1.818-.418 0-1.2-.218-1.2-.877Z"/><path d="M2.59 16h10.82A2.59 2.59 0 0 0 16 13.41V2.59A2.59 2.59 0 0 0 13.41 0H2.59A2.59 2.59 0 0 0 0 2.59v10.82A2.59 2.59 0 0 0 2.59 16M5.866 5.91c.567-.81 1.315-1.126 2.35-1.126.73 0 1.351.246 1.795.711.443.466.696 1.132.754 1.983q.368.154.678.363c.832.559 1.29 1.395 1.29 2.353 0 2.037-1.67 3.806-4.692 3.806-2.595 0-5.291-1.51-5.291-6.004C2.75 3.526 5.361 2 8.033 2c1.234 0 4.129.182 5.217 3.777l-1.02.264c-.842-2.56-2.607-2.968-4.224-2.968-2.675 0-4.187 1.628-4.187 5.093 0 3.107 1.69 4.757 4.222 4.757 2.083 0 3.636-1.082 3.636-2.667 0-1.079-.906-1.595-.953-1.595-.177.925-.651 2.482-2.733 2.482-1.213 0-2.26-.838-2.26-1.936 0-1.568 1.488-2.136 2.663-2.136.44 0 .97.03 1.247.086 0-.478-.404-1.296-1.426-1.296-.911 0-1.16.288-1.45.624l-.024.027c-.202-.135-.875-.601-.875-.601Z"/></symbol><symbol class="bi bi-three-dots" viewBox="0 0 16 16" id="three-dots"><path d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></symbol><symbol class="bi bi-three-dots-vertical" viewBox="0 0 16 16" id="three-dots-vertical"><path d="M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/></symbol><symbol class="bi bi-thunderbolt" viewBox="0 0 16 16" id="thunderbolt"><path d="M3.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M1 3a1 1 0 0 0-1 1v7.293A1 1 0 0 0 .293 12L2 13.707a1 1 0 0 0 .707.293h10.586a1 1 0 0 0 .707-.293L15.707 12a1 1 0 0 0 .293-.707V4a1 1 0 0 0-1-1zm0 1h14v7.293L13.293 13H2.707L1 11.293z"/></symbol><symbol class="bi bi-thunderbolt-fill" viewBox="0 0 16 16" id="thunderbolt-fill"><path d="M1 3a1 1 0 0 0-1 1v7.293A1 1 0 0 0 .293 12L2 13.707a1 1 0 0 0 .707.293h10.586a1 1 0 0 0 .707-.293L15.707 12a1 1 0 0 0 .293-.707V4a1 1 0 0 0-1-1zm2.5 3h9a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-ticket" viewBox="0 0 16 16" id="ticket"><path d="M0 4.5A1.5 1.5 0 0 1 1.5 3h13A1.5 1.5 0 0 1 16 4.5V6a.5.5 0 0 1-.5.5 1.5 1.5 0 0 0 0 3 .5.5 0 0 1 .5.5v1.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5V10a.5.5 0 0 1 .5-.5 1.5 1.5 0 1 0 0-3A.5.5 0 0 1 0 6zM1.5 4a.5.5 0 0 0-.5.5v1.05a2.5 2.5 0 0 1 0 4.9v1.05a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-1.05a2.5 2.5 0 0 1 0-4.9V4.5a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-ticket-detailed" viewBox="0 0 16 16" id="ticket-detailed"><path d="M4 5.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0 5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5M5 7a1 1 0 0 0 0 2h6a1 1 0 1 0 0-2z"/><path d="M0 4.5A1.5 1.5 0 0 1 1.5 3h13A1.5 1.5 0 0 1 16 4.5V6a.5.5 0 0 1-.5.5 1.5 1.5 0 0 0 0 3 .5.5 0 0 1 .5.5v1.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5V10a.5.5 0 0 1 .5-.5 1.5 1.5 0 1 0 0-3A.5.5 0 0 1 0 6zM1.5 4a.5.5 0 0 0-.5.5v1.05a2.5 2.5 0 0 1 0 4.9v1.05a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-1.05a2.5 2.5 0 0 1 0-4.9V4.5a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-ticket-detailed-fill" viewBox="0 0 16 16" id="ticket-detailed-fill"><path d="M0 4.5A1.5 1.5 0 0 1 1.5 3h13A1.5 1.5 0 0 1 16 4.5V6a.5.5 0 0 1-.5.5 1.5 1.5 0 0 0 0 3 .5.5 0 0 1 .5.5v1.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5V10a.5.5 0 0 1 .5-.5 1.5 1.5 0 1 0 0-3A.5.5 0 0 1 0 6zm4 1a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5m0 5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5M4 8a1 1 0 0 0 1 1h6a1 1 0 1 0 0-2H5a1 1 0 0 0-1 1"/></symbol><symbol class="bi bi-ticket-fill" viewBox="0 0 16 16" id="ticket-fill"><path d="M1.5 3A1.5 1.5 0 0 0 0 4.5V6a.5.5 0 0 0 .5.5 1.5 1.5 0 1 1 0 3 .5.5 0 0 0-.5.5v1.5A1.5 1.5 0 0 0 1.5 13h13a1.5 1.5 0 0 0 1.5-1.5V10a.5.5 0 0 0-.5-.5 1.5 1.5 0 0 1 0-3A.5.5 0 0 0 16 6V4.5A1.5 1.5 0 0 0 14.5 3z"/></symbol><symbol class="bi bi-ticket-perforated" viewBox="0 0 16 16" id="ticket-perforated"><path d="M4 4.85v.9h1v-.9zm7 0v.9h1v-.9zm-7 1.8v.9h1v-.9zm7 0v.9h1v-.9zm-7 1.8v.9h1v-.9zm7 0v.9h1v-.9zm-7 1.8v.9h1v-.9zm7 0v.9h1v-.9z"/><path d="M1.5 3A1.5 1.5 0 0 0 0 4.5V6a.5.5 0 0 0 .5.5 1.5 1.5 0 1 1 0 3 .5.5 0 0 0-.5.5v1.5A1.5 1.5 0 0 0 1.5 13h13a1.5 1.5 0 0 0 1.5-1.5V10a.5.5 0 0 0-.5-.5 1.5 1.5 0 0 1 0-3A.5.5 0 0 0 16 6V4.5A1.5 1.5 0 0 0 14.5 3zM1 4.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v1.05a2.5 2.5 0 0 0 0 4.9v1.05a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-1.05a2.5 2.5 0 0 0 0-4.9z"/></symbol><symbol class="bi bi-ticket-perforated-fill" viewBox="0 0 16 16" id="ticket-perforated-fill"><path d="M0 4.5A1.5 1.5 0 0 1 1.5 3h13A1.5 1.5 0 0 1 16 4.5V6a.5.5 0 0 1-.5.5 1.5 1.5 0 0 0 0 3 .5.5 0 0 1 .5.5v1.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5V10a.5.5 0 0 1 .5-.5 1.5 1.5 0 1 0 0-3A.5.5 0 0 1 0 6zm4-1v1h1v-1zm1 3v-1H4v1zm7 0v-1h-1v1zm-1-2h1v-1h-1zm-6 3H4v1h1zm7 1v-1h-1v1zm-7 1H4v1h1zm7 1v-1h-1v1zm-8 1v1h1v-1zm7 1h1v-1h-1z"/></symbol><symbol class="bi bi-tiktok" viewBox="0 0 16 16" id="tiktok"><path d="M9 0h1.98c.144.715.54 1.617 1.235 2.512C12.895 3.389 13.797 4 15 4v2c-1.753 0-3.07-.814-4-1.829V11a5 5 0 1 1-5-5v2a3 3 0 1 0 3 3z"/></symbol><symbol class="bi bi-toggle-off" viewBox="0 0 16 16" id="toggle-off"><path d="M11 4a4 4 0 0 1 0 8H8a5 5 0 0 0 2-4 5 5 0 0 0-2-4zm-6 8a4 4 0 1 1 0-8 4 4 0 0 1 0 8M0 8a5 5 0 0 0 5 5h6a5 5 0 0 0 0-10H5a5 5 0 0 0-5 5"/></symbol><symbol class="bi bi-toggle-on" viewBox="0 0 16 16" id="toggle-on"><path d="M5 3a5 5 0 0 0 0 10h6a5 5 0 0 0 0-10zm6 9a4 4 0 1 1 0-8 4 4 0 0 1 0 8"/></symbol><symbol class="bi bi-toggle2-off" viewBox="0 0 16 16" id="toggle2-off"><path d="M9 11c.628-.836 1-1.874 1-3a4.98 4.98 0 0 0-1-3h4a3 3 0 1 1 0 6z"/><path d="M5 12a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0 1A5 5 0 1 0 5 3a5 5 0 0 0 0 10"/></symbol><symbol class="bi bi-toggle2-on" viewBox="0 0 16 16" id="toggle2-on"><path d="M7 5H3a3 3 0 0 0 0 6h4a5 5 0 0 1-.584-1H3a2 2 0 1 1 0-4h3.416q.235-.537.584-1"/><path d="M16 8A5 5 0 1 1 6 8a5 5 0 0 1 10 0"/></symbol><symbol class="bi bi-toggles" viewBox="0 0 16 16" id="toggles"><path d="M4.5 9a3.5 3.5 0 1 0 0 7h7a3.5 3.5 0 1 0 0-7zm7 6a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5m-7-14a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5m2.45 0A3.5 3.5 0 0 1 8 3.5 3.5 3.5 0 0 1 6.95 6h4.55a2.5 2.5 0 0 0 0-5zM4.5 0h7a3.5 3.5 0 1 1 0 7h-7a3.5 3.5 0 1 1 0-7"/></symbol><symbol class="bi bi-toggles2" viewBox="0 0 16 16" id="toggles2"><path d="M9.465 10H12a2 2 0 1 1 0 4H9.465c.34-.588.535-1.271.535-2s-.195-1.412-.535-2"/><path d="M6 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6m0 1a4 4 0 1 1 0-8 4 4 0 0 1 0 8m.535-10a4 4 0 0 1-.409-1H4a1 1 0 0 1 0-2h2.126q.138-.534.41-1H4a2 2 0 1 0 0 4z"/><path d="M14 4a4 4 0 1 1-8 0 4 4 0 0 1 8 0"/></symbol><symbol class="bi bi-tools" viewBox="0 0 16 16" id="tools"><path d="M1 0 0 1l2.2 3.081a1 1 0 0 0 .815.419h.07a1 1 0 0 1 .708.293l2.675 2.675-2.617 2.654A3.003 3.003 0 0 0 0 13a3 3 0 1 0 5.878-.851l2.654-2.617.968.968-.305.914a1 1 0 0 0 .242 1.023l3.27 3.27a.997.997 0 0 0 1.414 0l1.586-1.586a.997.997 0 0 0 0-1.414l-3.27-3.27a1 1 0 0 0-1.023-.242L10.5 9.5l-.96-.96 2.68-2.643A3.005 3.005 0 0 0 16 3q0-.405-.102-.777l-2.14 2.141L12 4l-.364-1.757L13.777.102a3 3 0 0 0-3.675 3.68L7.462 6.46 4.793 3.793a1 1 0 0 1-.293-.707v-.071a1 1 0 0 0-.419-.814zm9.646 10.646a.5.5 0 0 1 .708 0l2.914 2.915a.5.5 0 0 1-.707.707l-2.915-2.914a.5.5 0 0 1 0-.708M3 11l.471.242.529.026.287.445.445.287.026.529L5 13l-.242.471-.026.529-.445.287-.287.445-.529.026L3 15l-.471-.242L2 14.732l-.287-.445L1.268 14l-.026-.529L1 13l.242-.471.026-.529.445-.287.287-.445.529-.026z"/></symbol><symbol class="bi bi-tornado" viewBox="0 0 16 16" id="tornado"><path d="M1.125 2.45A.9.9 0 0 1 1 2c0-.26.116-.474.258-.634a1.9 1.9 0 0 1 .513-.389c.387-.21.913-.385 1.52-.525C4.514.17 6.18 0 8 0c1.821 0 3.486.17 4.709.452.607.14 1.133.314 1.52.525.193.106.374.233.513.389.141.16.258.374.258.634 0 1.011-.35 1.612-.634 2.102l-.116.203a2.6 2.6 0 0 0-.313.809 3 3 0 0 0-.011.891.5.5 0 0 1 .428.849q-.091.09-.215.195c.204 1.116.088 1.99-.3 2.711-.453.84-1.231 1.383-2.02 1.856q-.307.183-.62.364c-1.444.832-2.928 1.689-3.735 3.706a.5.5 0 0 1-.748.226l-.001-.001-.002-.001-.004-.003-.01-.008a2 2 0 0 1-.147-.115 4.1 4.1 0 0 1-1.179-1.656 3.8 3.8 0 0 1-.247-1.296A.5.5 0 0 1 5 12.5v-.018l.008-.079a.73.73 0 0 1 .188-.386c.09-.489.272-1.014.573-1.574a.5.5 0 0 1 .073-.918 3.3 3.3 0 0 1 .617-.144l.15-.193c.285-.356.404-.639.437-.861a.95.95 0 0 0-.122-.619c-.249-.455-.815-.903-1.613-1.43q-.291-.19-.609-.394l-.119-.076a12 12 0 0 1-1.241-.334.5.5 0 0 1-.285-.707l-.23-.18C2.117 4.01 1.463 3.32 1.125 2.45m1.973 1.051q.17.156.358.308c.472.381.99.722 1.515 1.06 1.54.317 3.632.5 5.43.14a.5.5 0 0 1 .197.981c-1.216.244-2.537.26-3.759.157.399.326.744.682.963 1.081.203.373.302.79.233 1.247q-.077.494-.39.985l.22.053.006.002c.481.12.863.213 1.47.01a.5.5 0 1 1 .317.95c-.888.295-1.505.141-2.023.012l-.006-.002a4 4 0 0 0-.644-.123c-.37.55-.598 1.05-.726 1.497q.212.068.465.194a.5.5 0 1 1-.448.894 3 3 0 0 0-.148-.07c.012.345.084.643.18.895.14.369.342.666.528.886.992-1.903 2.583-2.814 3.885-3.56q.305-.173.584-.34c.775-.464 1.34-.89 1.653-1.472.212-.393.33-.9.26-1.617A6.74 6.74 0 0 1 10 8.5a.5.5 0 0 1 0-1 5.76 5.76 0 0 0 3.017-.872l-.007-.03c-.135-.673-.14-1.207-.056-1.665.084-.46.253-.81.421-1.113l.131-.23q.098-.167.182-.327c-.29.107-.62.202-.98.285C11.487 3.83 9.822 4 8 4c-1.821 0-3.486-.17-4.709-.452q-.098-.022-.193-.047M13.964 2a1 1 0 0 0-.214-.145c-.272-.148-.697-.297-1.266-.428C11.354 1.166 9.769 1 8 1s-3.354.166-4.484.427c-.569.13-.994.28-1.266.428A1 1 0 0 0 2.036 2q.058.058.214.145c.272.148.697.297 1.266.428C4.646 2.834 6.231 3 8 3s3.354-.166 4.484-.427c.569-.13.994-.28 1.266-.428A1 1 0 0 0 13.964 2"/></symbol><symbol class="bi bi-train-freight-front" viewBox="0 0 16 16" id="train-freight-front"><path d="M5.065.158A1.5 1.5 0 0 1 5.736 0h4.528a1.5 1.5 0 0 1 .67.158l3.237 1.618a1.5 1.5 0 0 1 .83 1.342V13.5a2.5 2.5 0 0 1-2.5 2.5h-9A2.5 2.5 0 0 1 1 13.5V3.118a1.5 1.5 0 0 1 .828-1.342zM2 9.372V13.5A1.5 1.5 0 0 0 3.5 15h4V8h-.853a.5.5 0 0 0-.144.021zM8.5 15h4a1.5 1.5 0 0 0 1.5-1.5V9.372l-4.503-1.35A.5.5 0 0 0 9.353 8H8.5zM14 8.328v-5.21a.5.5 0 0 0-.276-.447l-3.236-1.618A.5.5 0 0 0 10.264 1H5.736a.5.5 0 0 0-.223.053L2.277 2.67A.5.5 0 0 0 2 3.118v5.21l1-.3V5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v3.028zm-2-.6V5H8.5v2h.853a1.5 1.5 0 0 1 .431.063zM7.5 7V5H4v2.728l2.216-.665A1.5 1.5 0 0 1 6.646 7zm-1-5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm-3 8a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1m9 0a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1M5 13a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/></symbol><symbol class="bi bi-train-freight-front-fill" viewBox="0 0 16 16" id="train-freight-front-fill"><path d="M5.736 0a1.5 1.5 0 0 0-.67.158L1.828 1.776A1.5 1.5 0 0 0 1 3.118v5.51l2-.6V5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v3.028l2 .6v-5.51a1.5 1.5 0 0 0-.83-1.342L10.936.158A1.5 1.5 0 0 0 10.264 0zM15 9.672l-5.503-1.65A.5.5 0 0 0 9.353 8H8.5v8h4a2.5 2.5 0 0 0 2.5-2.5zM7.5 16V8h-.853a.5.5 0 0 0-.144.021L1 9.672V13.5A2.5 2.5 0 0 0 3.5 16zm-1-14h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1M12 5v2.728l-2.216-.665A1.5 1.5 0 0 0 9.354 7H8.5V5zM7.5 5v2h-.853a1.5 1.5 0 0 0-.431.063L4 7.728V5zm-4 5a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1m9 0a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1M5 13a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 1a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/></symbol><symbol class="bi bi-train-front" viewBox="0 0 16 16" id="train-front"><path d="M5.621 1.485c1.815-.454 2.943-.454 4.758 0 .784.196 1.743.673 2.527 1.119.688.39 1.094 1.148 1.094 1.979V13.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 13.5V4.583c0-.831.406-1.588 1.094-1.98.784-.445 1.744-.922 2.527-1.118m5-.97C8.647.02 7.353.02 5.38.515c-.924.23-1.982.766-2.78 1.22C1.566 2.322 1 3.432 1 4.582V13.5A2.5 2.5 0 0 0 3.5 16h9a2.5 2.5 0 0 0 2.5-2.5V4.583c0-1.15-.565-2.26-1.6-2.849-.797-.453-1.855-.988-2.779-1.22ZM5 13a1 1 0 1 1-2 0 1 1 0 0 1 2 0m0 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0m7 1a1 1 0 1 0-1-1 1 1 0 1 0-2 0 1 1 0 0 0 2 0 1 1 0 0 0 1 1M4.5 5a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5h3V5zm4 0v3h3a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5zM3 5.5A1.5 1.5 0 0 1 4.5 4h7A1.5 1.5 0 0 1 13 5.5v2A1.5 1.5 0 0 1 11.5 9h-7A1.5 1.5 0 0 1 3 7.5zM6.5 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/></symbol><symbol class="bi bi-train-front-fill" viewBox="0 0 16 16" id="train-front-fill"><path d="M10.621.515C8.647.02 7.353.02 5.38.515c-.924.23-1.982.766-2.78 1.22C1.566 2.322 1 3.432 1 4.582V13.5A2.5 2.5 0 0 0 3.5 16h9a2.5 2.5 0 0 0 2.5-2.5V4.583c0-1.15-.565-2.26-1.6-2.849-.797-.453-1.855-.988-2.779-1.22ZM6.5 2h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1m-2 2h7A1.5 1.5 0 0 1 13 5.5v2A1.5 1.5 0 0 1 11.5 9h-7A1.5 1.5 0 0 1 3 7.5v-2A1.5 1.5 0 0 1 4.5 4m.5 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0m0 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0m8 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-3-1a1 1 0 1 1 0 2 1 1 0 0 1 0-2M4 5.5a.5.5 0 0 1 .5-.5h3v3h-3a.5.5 0 0 1-.5-.5zM8.5 8V5h3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5z"/></symbol><symbol class="bi bi-train-lightrail-front" viewBox="0 0 16 16" id="train-lightrail-front"><path d="M6.5 0a.5.5 0 0 0 0 1h1v1.011c-1.525.064-3.346.394-4.588.655C1.775 2.904 1 3.915 1 5.055V13.5A2.5 2.5 0 0 0 3.5 16h9a2.5 2.5 0 0 0 2.5-2.5V5.055c0-1.14-.775-2.15-1.912-2.39-1.242-.26-3.063-.59-4.588-.654V1h1a.5.5 0 0 0 0-1zM8 3c1.497 0 3.505.356 4.883.644.653.137 1.117.722 1.117 1.411V13.5a1.5 1.5 0 0 1-1.072 1.438 76 76 0 0 1-.1-.792c-.092-.761-.2-1.752-.266-2.682A21 21 0 0 1 12.5 10c0-1.051.143-2.404.278-3.435l.07-.522c.112-.798-.42-1.571-1.244-1.697C10.644 4.199 9.136 4 8 4s-2.645.2-3.604.346c-.825.126-1.356.9-1.244 1.697q.034.24.07.522C3.357 7.596 3.5 8.949 3.5 10c0 .428-.024.933-.062 1.464a57 57 0 0 1-.266 2.682c-.038.31-.072.58-.1.792A1.5 1.5 0 0 1 2 13.5V5.055c0-.69.464-1.274 1.117-1.41C4.495 3.354 6.503 3 8 3m3.835 11.266c.034.28.066.53.093.734H4.072a63 63 0 0 0 .328-3h2.246c.36 0 .704-.143.958-.396a.35.35 0 0 1 .25-.104h.292a.35.35 0 0 1 .25.104c.254.253.599.396.958.396H11.6c.068.808.158 1.621.236 2.266ZM6 13.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 0a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0m3.5.5a.5.5 0 0 0 .5-.5.5.5 0 1 0 1 0 .5.5 0 0 0-1 0 .5.5 0 1 0-.5.5m-5.03-3c.019-.353.03-.692.03-1 0-.927-.104-2.051-.216-3h7.432c-.112.949-.216 2.073-.216 3 0 .308.011.647.03 1H9.354a.35.35 0 0 1-.25-.104 1.35 1.35 0 0 0-.958-.396h-.292c-.36 0-.704.143-.958.396a.35.35 0 0 1-.25.104zm-.315-5-.013-.096a.497.497 0 0 1 .405-.57C5.505 5.188 6.947 5 8 5s2.495.188 3.453.334a.497.497 0 0 1 .405.57L11.845 6z"/></symbol><symbol class="bi bi-train-lightrail-front-fill" viewBox="0 0 16 16" id="train-lightrail-front-fill"><path d="M6.5 0a.5.5 0 0 0 0 1h1v1.011c-1.525.064-3.346.394-4.588.655C1.775 2.904 1 3.915 1 5.055V13.5A2.5 2.5 0 0 0 3.5 16h9a2.5 2.5 0 0 0 2.5-2.5V5.055c0-1.14-.775-2.15-1.912-2.39-1.242-.26-3.063-.59-4.588-.654V1h1a.5.5 0 0 0 0-1zM8 4c1.136 0 2.645.2 3.604.346.825.126 1.356.9 1.244 1.697q-.034.24-.07.522C12.643 7.596 12.5 8.949 12.5 10c0 .428.024.933.062 1.464.066.93.174 1.92.266 2.682.042.34.08.634.109.854h-1.01a63 63 0 0 1-.327-3H9.354c-.36 0-.704-.143-.958-.396a.35.35 0 0 0-.25-.104h-.292a.35.35 0 0 0-.25.104 1.35 1.35 0 0 1-.958.396H4.4a63 63 0 0 1-.328 3H3.064c.029-.22.067-.514.108-.854.092-.761.2-1.752.266-2.682.038-.531.062-1.036.062-1.464 0-1.051-.143-2.404-.278-3.435l-.07-.522c-.112-.798.42-1.571 1.244-1.697C5.356 4.199 6.864 4 8 4m-1.354 7H4.47c.019-.353.03-.692.03-1 0-.927-.104-2.051-.216-3h7.432c-.112.949-.216 2.073-.216 3 0 .308.011.647.03 1H9.354a.35.35 0 0 1-.25-.104 1.35 1.35 0 0 0-.958-.396h-.292c-.36 0-.704.143-.958.396a.35.35 0 0 1-.25.104m5.199-5h-7.69l-.013-.096a.497.497 0 0 1 .405-.57C5.505 5.188 6.947 5 8 5s2.495.188 3.453.334a.497.497 0 0 1 .405.57zM6 13.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 0a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0m4 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 0a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0"/></symbol><symbol class="bi bi-translate" viewBox="0 0 16 16" id="translate"><path d="M4.545 6.714 4.11 8H3l1.862-5h1.284L8 8H6.833l-.435-1.286zm1.634-.736L5.5 3.956h-.049l-.679 2.022z"/><path d="M0 2a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v3h3a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-3H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm7.138 9.995q.289.451.63.846c-.748.575-1.673 1.001-2.768 1.292.178.217.451.635.555.867 1.125-.359 2.08-.844 2.886-1.494.777.665 1.739 1.165 2.93 1.472.133-.254.414-.673.629-.89-1.125-.253-2.057-.694-2.82-1.284.681-.747 1.222-1.651 1.621-2.757H14V8h-3v1.047h.765c-.318.844-.74 1.546-1.272 2.13a6 6 0 0 1-.415-.492 2 2 0 0 1-.94.31"/></symbol><symbol class="bi bi-transparency" viewBox="0 0 16 16" id="transparency"><path d="M0 6.5a6.5 6.5 0 0 1 12.346-2.846 6.5 6.5 0 1 1-8.691 8.691A6.5 6.5 0 0 1 0 6.5m5.144 6.358a5.5 5.5 0 1 0 7.714-7.714 6.5 6.5 0 0 1-7.714 7.714m-.733-1.269q.546.226 1.144.33l-1.474-1.474q.104.597.33 1.144m2.614.386a5.5 5.5 0 0 0 1.173-.242L4.374 7.91a6 6 0 0 0-.296 1.118zm2.157-.672q.446-.25.838-.576L5.418 6.126a6 6 0 0 0-.587.826zm1.545-1.284q.325-.39.576-.837L6.953 4.83a6 6 0 0 0-.827.587l4.6 4.602Zm1.006-1.822q.183-.562.242-1.172L9.028 4.078q-.58.096-1.118.296l3.823 3.824Zm.186-2.642a5.5 5.5 0 0 0-.33-1.144 5.5 5.5 0 0 0-1.144-.33z"/></symbol><symbol class="bi bi-trash" viewBox="0 0 16 16" id="trash"><path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/><path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"/></symbol><symbol class="bi bi-trash-fill" viewBox="0 0 16 16" id="trash-fill"><path d="M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5M8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5m3 .5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-trash2" viewBox="0 0 16 16" id="trash2"><path d="M14 3a.7.7 0 0 1-.037.225l-1.684 10.104A2 2 0 0 1 10.305 15H5.694a2 2 0 0 1-1.973-1.671L2.037 3.225A.7.7 0 0 1 2 3c0-1.105 2.686-2 6-2s6 .895 6 2M3.215 4.207l1.493 8.957a1 1 0 0 0 .986.836h4.612a1 1 0 0 0 .986-.836l1.493-8.957C11.69 4.689 9.954 5 8 5s-3.69-.311-4.785-.793"/></symbol><symbol class="bi bi-trash2-fill" viewBox="0 0 16 16" id="trash2-fill"><path d="M2.037 3.225A.7.7 0 0 1 2 3c0-1.105 2.686-2 6-2s6 .895 6 2a.7.7 0 0 1-.037.225l-1.684 10.104A2 2 0 0 1 10.305 15H5.694a2 2 0 0 1-1.973-1.671zm9.89-.69C10.966 2.214 9.578 2 8 2c-1.58 0-2.968.215-3.926.534-.477.16-.795.327-.975.466.18.14.498.307.975.466C5.032 3.786 6.42 4 8 4s2.967-.215 3.926-.534c.477-.16.795-.327.975-.466-.18-.14-.498-.307-.975-.466z"/></symbol><symbol class="bi bi-trash3" viewBox="0 0 16 16" id="trash3"><path d="M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5M11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47M8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-trash3-fill" viewBox="0 0 16 16" id="trash3-fill"><path d="M11 1.5v1h3.5a.5.5 0 0 1 0 1h-.538l-.853 10.66A2 2 0 0 1 11.115 16h-6.23a2 2 0 0 1-1.994-1.84L2.038 3.5H1.5a.5.5 0 0 1 0-1H5v-1A1.5 1.5 0 0 1 6.5 0h3A1.5 1.5 0 0 1 11 1.5m-5 0v1h4v-1a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5M4.5 5.029l.5 8.5a.5.5 0 1 0 .998-.06l-.5-8.5a.5.5 0 1 0-.998.06m6.53-.528a.5.5 0 0 0-.528.47l-.5 8.5a.5.5 0 0 0 .998.058l.5-8.5a.5.5 0 0 0-.47-.528M8 4.5a.5.5 0 0 0-.5.5v8.5a.5.5 0 0 0 1 0V5a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-tree" viewBox="0 0 16 16" id="tree"><path d="M8.416.223a.5.5 0 0 0-.832 0l-3 4.5A.5.5 0 0 0 5 5.5h.098L3.076 8.735A.5.5 0 0 0 3.5 9.5h.191l-1.638 3.276a.5.5 0 0 0 .447.724H7V16h2v-2.5h4.5a.5.5 0 0 0 .447-.724L12.31 9.5h.191a.5.5 0 0 0 .424-.765L10.902 5.5H11a.5.5 0 0 0 .416-.777zM6.437 4.758A.5.5 0 0 0 6 4.5h-.066L8 1.401 10.066 4.5H10a.5.5 0 0 0-.424.765L11.598 8.5H11.5a.5.5 0 0 0-.447.724L12.69 12.5H3.309l1.638-3.276A.5.5 0 0 0 4.5 8.5h-.098l2.022-3.235a.5.5 0 0 0 .013-.507"/></symbol><symbol class="bi bi-tree-fill" viewBox="0 0 16 16" id="tree-fill"><path d="M8.416.223a.5.5 0 0 0-.832 0l-3 4.5A.5.5 0 0 0 5 5.5h.098L3.076 8.735A.5.5 0 0 0 3.5 9.5h.191l-1.638 3.276a.5.5 0 0 0 .447.724H7V16h2v-2.5h4.5a.5.5 0 0 0 .447-.724L12.31 9.5h.191a.5.5 0 0 0 .424-.765L10.902 5.5H11a.5.5 0 0 0 .416-.777z"/></symbol><symbol class="bi bi-trello" viewBox="0 0 16 16" id="trello"><path d="M14.1 0H1.903C.852 0 .002.85 0 1.9v12.19A1.9 1.9 0 0 0 1.902 16h12.199A1.9 1.9 0 0 0 16 14.09V1.9A1.9 1.9 0 0 0 14.1 0M7 11.367a.636.636 0 0 1-.64.633H3.593a.633.633 0 0 1-.63-.633V3.583c0-.348.281-.631.63-.633h2.765c.35.002.632.284.633.633zm6.052-3.5a.633.633 0 0 1-.64.633h-2.78A.636.636 0 0 1 9 7.867V3.583a.636.636 0 0 1 .633-.633h2.778c.35.002.631.285.631.633z"/></symbol><symbol class="bi bi-triangle" viewBox="0 0 16 16" id="triangle"><path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016.15.15 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.2.2 0 0 1-.054.06.1.1 0 0 1-.066.017H1.146a.1.1 0 0 1-.066-.017.2.2 0 0 1-.054-.06.18.18 0 0 1 .002-.183L7.884 2.073a.15.15 0 0 1 .054-.057m1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767z"/></symbol><symbol class="bi bi-triangle-fill" viewBox="0 0 16 16" id="triangle-fill"><path fill-rule="evenodd" d="M7.022 1.566a1.13 1.13 0 0 1 1.96 0l6.857 11.667c.457.778-.092 1.767-.98 1.767H1.144c-.889 0-1.437-.99-.98-1.767z"/></symbol><symbol class="bi bi-triangle-half" viewBox="0 0 16 16" id="triangle-half"><path d="M8.065 2.016A.13.13 0 0 0 8.002 2v11.983l6.856.017a.12.12 0 0 0 .066-.017.2.2 0 0 0 .054-.06.18.18 0 0 0-.002-.183L8.12 2.073a.15.15 0 0 0-.054-.057zm-1.043-.45a1.13 1.13 0 0 1 1.96 0l6.856 11.667c.458.778-.091 1.767-.98 1.767H1.146c-.889 0-1.437-.99-.98-1.767z"/></symbol><symbol class="bi bi-trophy" viewBox="0 0 16 16" id="trophy"><path d="M2.5.5A.5.5 0 0 1 3 0h10a.5.5 0 0 1 .5.5q0 .807-.034 1.536a3 3 0 1 1-1.133 5.89c-.79 1.865-1.878 2.777-2.833 3.011v2.173l1.425.356c.194.048.377.135.537.255L13.3 15.1a.5.5 0 0 1-.3.9H3a.5.5 0 0 1-.3-.9l1.838-1.379c.16-.12.343-.207.537-.255L6.5 13.11v-2.173c-.955-.234-2.043-1.146-2.833-3.012a3 3 0 1 1-1.132-5.89A33 33 0 0 1 2.5.5m.099 2.54a2 2 0 0 0 .72 3.935c-.333-1.05-.588-2.346-.72-3.935m10.083 3.935a2 2 0 0 0 .72-3.935c-.133 1.59-.388 2.885-.72 3.935M3.504 1q.01.775.056 1.469c.13 2.028.457 3.546.87 4.667C5.294 9.48 6.484 10 7 10a.5.5 0 0 1 .5.5v2.61a1 1 0 0 1-.757.97l-1.426.356a.5.5 0 0 0-.179.085L4.5 15h7l-.638-.479a.5.5 0 0 0-.18-.085l-1.425-.356a1 1 0 0 1-.757-.97V10.5A.5.5 0 0 1 9 10c.516 0 1.706-.52 2.57-2.864.413-1.12.74-2.64.87-4.667q.045-.694.056-1.469z"/></symbol><symbol class="bi bi-trophy-fill" viewBox="0 0 16 16" id="trophy-fill"><path d="M2.5.5A.5.5 0 0 1 3 0h10a.5.5 0 0 1 .5.5q0 .807-.034 1.536a3 3 0 1 1-1.133 5.89c-.79 1.865-1.878 2.777-2.833 3.011v2.173l1.425.356c.194.048.377.135.537.255L13.3 15.1a.5.5 0 0 1-.3.9H3a.5.5 0 0 1-.3-.9l1.838-1.379c.16-.12.343-.207.537-.255L6.5 13.11v-2.173c-.955-.234-2.043-1.146-2.833-3.012a3 3 0 1 1-1.132-5.89A33 33 0 0 1 2.5.5m.099 2.54a2 2 0 0 0 .72 3.935c-.333-1.05-.588-2.346-.72-3.935m10.083 3.935a2 2 0 0 0 .72-3.935c-.133 1.59-.388 2.885-.72 3.935"/></symbol><symbol class="bi bi-tropical-storm" viewBox="0 0 16 16" id="tropical-storm"><path d="M8 9.5a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/><path d="M9.5 2c-.9 0-1.75.216-2.501.6A5 5 0 0 1 13 7.5a6.5 6.5 0 1 1-13 0 .5.5 0 0 1 1 0 5.5 5.5 0 0 0 8.001 4.9A5 5 0 0 1 3 7.5a6.5 6.5 0 0 1 13 0 .5.5 0 0 1-1 0A5.5 5.5 0 0 0 9.5 2M8 3.5a4 4 0 1 0 0 8 4 4 0 0 0 0-8"/></symbol><symbol class="bi bi-truck" viewBox="0 0 16 16" id="truck"><path d="M0 3.5A1.5 1.5 0 0 1 1.5 2h9A1.5 1.5 0 0 1 12 3.5V5h1.02a1.5 1.5 0 0 1 1.17.563l1.481 1.85a1.5 1.5 0 0 1 .329.938V10.5a1.5 1.5 0 0 1-1.5 1.5H14a2 2 0 1 1-4 0H5a2 2 0 1 1-3.998-.085A1.5 1.5 0 0 1 0 10.5zm1.294 7.456A2 2 0 0 1 4.732 11h5.536a2 2 0 0 1 .732-.732V3.5a.5.5 0 0 0-.5-.5h-9a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .294.456M12 10a2 2 0 0 1 1.732 1h.768a.5.5 0 0 0 .5-.5V8.35a.5.5 0 0 0-.11-.312l-1.48-1.85A.5.5 0 0 0 13.02 6H12zm-9 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2m9 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/></symbol><symbol class="bi bi-truck-flatbed" viewBox="0 0 16 16" id="truck-flatbed"><path d="M11.5 4a.5.5 0 0 1 .5.5V5h1.02a1.5 1.5 0 0 1 1.17.563l1.481 1.85a1.5 1.5 0 0 1 .329.938V10.5a1.5 1.5 0 0 1-1.5 1.5H14a2 2 0 1 1-4 0H5a2 2 0 1 1-4 0 1 1 0 0 1-1-1v-1h11V4.5a.5.5 0 0 1 .5-.5M3 11a1 1 0 1 0 0 2 1 1 0 0 0 0-2m9 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2m1.732 0h.768a.5.5 0 0 0 .5-.5V8.35a.5.5 0 0 0-.11-.312l-1.48-1.85A.5.5 0 0 0 13.02 6H12v4a2 2 0 0 1 1.732 1"/></symbol><symbol class="bi bi-truck-front" viewBox="0 0 16 16" id="truck-front"><path d="M5 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0m8 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-6-1a1 1 0 1 0 0 2h2a1 1 0 1 0 0-2zM4 2a1 1 0 0 0-1 1v3.9c0 .625.562 1.092 1.17.994C5.075 7.747 6.792 7.5 8 7.5s2.925.247 3.83.394A1.008 1.008 0 0 0 13 6.9V3a1 1 0 0 0-1-1zm0 1h8v3.9q0 .002 0 0l-.002.004-.005.002h-.004C11.088 6.761 9.299 6.5 8 6.5s-3.088.26-3.99.406h-.003l-.005-.002L4 6.9q0 .002 0 0z"/><path d="M1 2.5A2.5 2.5 0 0 1 3.5 0h9A2.5 2.5 0 0 1 15 2.5v9c0 .818-.393 1.544-1 2v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5V14H5v1.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-2a2.5 2.5 0 0 1-1-2zM3.5 1A1.5 1.5 0 0 0 2 2.5v9A1.5 1.5 0 0 0 3.5 13h9a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 12.5 1z"/></symbol><symbol class="bi bi-truck-front-fill" viewBox="0 0 16 16" id="truck-front-fill"><path d="M3.5 0A2.5 2.5 0 0 0 1 2.5v9c0 .818.393 1.544 1 2v2a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5V14h6v1.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-2c.607-.456 1-1.182 1-2v-9A2.5 2.5 0 0 0 12.5 0zM3 3a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v3.9c0 .625-.562 1.092-1.17.994C10.925 7.747 9.208 7.5 8 7.5s-2.925.247-3.83.394A1.008 1.008 0 0 1 3 6.9zm1 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2m8 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2m-5-2h2a1 1 0 1 1 0 2H7a1 1 0 1 1 0-2"/></symbol><symbol class="bi bi-tsunami" viewBox="0 0 16 16" id="tsunami"><path d="M.036 12.314a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.757-.703a.5.5 0 0 1-.278-.65m0 2a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.757-.703a.5.5 0 0 1-.278-.65M2.662 8.08c-.456 1.063-.994 2.098-1.842 2.804a.5.5 0 0 1-.64-.768c.652-.544 1.114-1.384 1.564-2.43.14-.328.281-.68.427-1.044.302-.754.624-1.559 1.01-2.308C3.763 3.2 4.528 2.105 5.7 1.299 6.877.49 8.418 0 10.5 0c1.463 0 2.511.4 3.179 1.058.67.66.893 1.518.819 2.302-.074.771-.441 1.516-1.02 1.965a1.88 1.88 0 0 1-1.904.27c-.65.642-.907 1.679-.71 2.614C11.076 9.215 11.784 10 13 10h2.5a.5.5 0 0 1 0 1H13c-1.784 0-2.826-1.215-3.114-2.585-.232-1.1.005-2.373.758-3.284L10.5 5.06l-.777.388a.5.5 0 0 1-.447 0l-1-.5a.5.5 0 0 1 .447-.894l.777.388.776-.388a.5.5 0 0 1 .447 0l1 .5.034.018c.44.264.81.195 1.108-.036.328-.255.586-.729.637-1.27.05-.529-.1-1.076-.525-1.495s-1.19-.77-2.477-.77c-1.918 0-3.252.448-4.232 1.123C5.283 2.8 4.61 3.738 4.07 4.79c-.365.71-.655 1.433-.945 2.16-.15.376-.301.753-.463 1.13"/></symbol><symbol class="bi bi-tv" viewBox="0 0 16 16" id="tv"><path d="M2.5 13.5A.5.5 0 0 1 3 13h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5M13.991 3l.024.001a1.5 1.5 0 0 1 .538.143.76.76 0 0 1 .302.254c.067.1.145.277.145.602v5.991l-.001.024a1.5 1.5 0 0 1-.143.538.76.76 0 0 1-.254.302c-.1.067-.277.145-.602.145H2.009l-.024-.001a1.5 1.5 0 0 1-.538-.143.76.76 0 0 1-.302-.254C1.078 10.502 1 10.325 1 10V4.009l.001-.024a1.5 1.5 0 0 1 .143-.538.76.76 0 0 1 .254-.302C1.498 3.078 1.675 3 2 3zM14 2H2C0 2 0 4 0 4v6c0 2 2 2 2 2h12c2 0 2-2 2-2V4c0-2-2-2-2-2"/></symbol><symbol class="bi bi-tv-fill" viewBox="0 0 16 16" id="tv-fill"><path d="M2.5 13.5A.5.5 0 0 1 3 13h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5M2 2h12s2 0 2 2v6s0 2-2 2H2s-2 0-2-2V4s0-2 2-2"/></symbol><symbol class="bi bi-twitch" viewBox="0 0 16 16" id="twitch"><path d="M3.857 0 1 2.857v10.286h3.429V16l2.857-2.857H9.57L14.714 8V0zm9.714 7.429-2.285 2.285H9l-2 2v-2H4.429V1.143h9.142z"/><path d="M11.857 3.143h-1.143V6.57h1.143zm-3.143 0H7.571V6.57h1.143z"/></symbol><symbol class="bi bi-twitter" viewBox="0 0 16 16" id="twitter"><path d="M5.026 15c6.038 0 9.341-5.003 9.341-9.334q.002-.211-.006-.422A6.7 6.7 0 0 0 16 3.542a6.7 6.7 0 0 1-1.889.518 3.3 3.3 0 0 0 1.447-1.817 6.5 6.5 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.32 9.32 0 0 1-6.767-3.429 3.29 3.29 0 0 0 1.018 4.382A3.3 3.3 0 0 1 .64 6.575v.045a3.29 3.29 0 0 0 2.632 3.218 3.2 3.2 0 0 1-.865.115 3 3 0 0 1-.614-.057 3.28 3.28 0 0 0 3.067 2.277A6.6 6.6 0 0 1 .78 13.58a6 6 0 0 1-.78-.045A9.34 9.34 0 0 0 5.026 15"/></symbol><symbol class="bi bi-twitter-x" viewBox="0 0 16 16" id="twitter-x"><path d="M12.6.75h2.454l-5.36 6.142L16 15.25h-4.937l-3.867-5.07-4.425 5.07H.316l5.733-6.57L0 .75h5.063l3.495 4.633L12.601.75Zm-.86 13.028h1.36L4.323 2.145H2.865z"/></symbol><symbol class="bi bi-type" viewBox="0 0 16 16" id="type"><path d="m2.244 13.081.943-2.803H6.66l.944 2.803H8.86L5.54 3.75H4.322L1 13.081zm2.7-7.923L6.34 9.314H3.51l1.4-4.156zm9.146 7.027h.035v.896h1.128V8.125c0-1.51-1.114-2.345-2.646-2.345-1.736 0-2.59.916-2.666 2.174h1.108c.068-.718.595-1.19 1.517-1.19.971 0 1.518.52 1.518 1.464v.731H12.19c-1.647.007-2.522.8-2.522 2.058 0 1.319.957 2.18 2.345 2.18 1.06 0 1.716-.43 2.078-1.011zm-1.763.035c-.752 0-1.456-.397-1.456-1.244 0-.65.424-1.115 1.408-1.115h1.805v.834c0 .896-.752 1.525-1.757 1.525"/></symbol><symbol class="bi bi-type-bold" viewBox="0 0 16 16" id="type-bold"><path d="M8.21 13c2.106 0 3.412-1.087 3.412-2.823 0-1.306-.984-2.283-2.324-2.386v-.055a2.176 2.176 0 0 0 1.852-2.14c0-1.51-1.162-2.46-3.014-2.46H3.843V13zM5.908 4.674h1.696c.963 0 1.517.451 1.517 1.244 0 .834-.629 1.32-1.73 1.32H5.908V4.673zm0 6.788V8.598h1.73c1.217 0 1.88.492 1.88 1.415 0 .943-.643 1.449-1.832 1.449H5.907z"/></symbol><symbol class="bi bi-type-h1" viewBox="0 0 16 16" id="type-h1"><path d="M7.648 13V3H6.3v4.234H1.348V3H0v10h1.348V8.421H6.3V13zM14 13V3h-1.333l-2.381 1.766V6.12L12.6 4.443h.066V13z"/></symbol><symbol class="bi bi-type-h2" viewBox="0 0 16 16" id="type-h2"><path d="M7.495 13V3.201H6.174v4.15H1.32V3.2H0V13h1.32V8.513h4.854V13zm3.174-7.071v-.05c0-.934.66-1.752 1.801-1.752 1.005 0 1.76.639 1.76 1.651 0 .898-.582 1.58-1.12 2.19l-3.69 4.2V13h6.331v-1.149h-4.458v-.079L13.9 8.786c.919-1.048 1.666-1.874 1.666-3.101C15.565 4.149 14.35 3 12.499 3 10.46 3 9.384 4.393 9.384 5.879v.05z"/></symbol><symbol class="bi bi-type-h3" viewBox="0 0 16 16" id="type-h3"><path d="M11.07 8.4h1.049c1.174 0 1.99.69 2.004 1.724s-.802 1.786-2.068 1.779c-1.11-.007-1.905-.605-1.99-1.357h-1.21C8.926 11.91 10.116 13 12.028 13c1.99 0 3.439-1.188 3.404-2.87-.028-1.553-1.287-2.221-2.096-2.313v-.07c.724-.127 1.814-.935 1.772-2.293-.035-1.392-1.21-2.468-3.038-2.454-1.927.007-2.94 1.196-2.981 2.426h1.23c.064-.71.732-1.336 1.744-1.336 1.027 0 1.744.64 1.744 1.568.007.95-.738 1.639-1.744 1.639h-.991V8.4ZM7.495 13V3.201H6.174v4.15H1.32V3.2H0V13h1.32V8.513h4.854V13z"/></symbol><symbol class="bi bi-type-h4" viewBox="0 0 16 16" id="type-h4"><path d="M13.007 3H15v10h-1.29v-2.051H8.854v-1.18C10.1 7.513 11.586 5.256 13.007 3m-2.82 6.777h3.524v-5.62h-.074a95 95 0 0 0-3.45 5.554zM7.495 13V3.201H6.174v4.15H1.32V3.2H0V13h1.32V8.513h4.854V13z"/></symbol><symbol class="bi bi-type-h5" viewBox="0 0 16 16" id="type-h5"><path d="M9 10.516h1.264c.193.976 1.112 1.364 2.01 1.364 1.005 0 2.067-.782 2.067-2.247 0-1.292-.983-2.082-2.089-2.082-1.012 0-1.658.596-1.924 1.077h-1.12L9.646 3h5.535v1.141h-4.415L10.5 7.28h.072c.201-.316.883-.84 1.967-.84 1.709 0 3.13 1.177 3.13 3.158 0 2.025-1.407 3.403-3.475 3.403-1.809 0-3.1-1.048-3.194-2.484ZM7.495 13V3.201H6.174v4.15H1.32V3.2H0V13h1.32V8.512h4.854V13z"/></symbol><symbol class="bi bi-type-h6" viewBox="0 0 16 16" id="type-h6"><path d="M15.596 5.178H14.3c-.106-.444-.62-1.072-1.706-1.072-1.332 0-2.325 1.269-2.325 3.947h.07c.268-.67 1.043-1.445 2.445-1.445 1.494 0 3.017 1.064 3.017 3.073C15.8 11.795 14.37 13 12.48 13c-1.036 0-2.093-.36-2.77-1.452C9.276 10.836 9 9.808 9 8.37 9 4.656 10.494 3 12.636 3c1.812 0 2.883 1.113 2.96 2.178m-5.151 4.566c0 1.367.944 2.15 2.043 2.15 1.128 0 2.037-.684 2.037-2.136 0-1.41-1-2.065-2.03-2.065-1.19 0-2.05.853-2.05 2.051M7.495 13V3.201H6.174v4.15H1.32V3.2H0V13h1.32V8.513h4.854V13z"/></symbol><symbol class="bi bi-type-italic" viewBox="0 0 16 16" id="type-italic"><path d="M7.991 11.674 9.53 4.455c.123-.595.246-.71 1.347-.807l.11-.52H7.211l-.11.52c1.06.096 1.128.212 1.005.807L6.57 11.674c-.123.595-.246.71-1.346.806l-.11.52h3.774l.11-.52c-1.06-.095-1.129-.211-1.006-.806z"/></symbol><symbol class="bi bi-type-strikethrough" viewBox="0 0 16 16" id="type-strikethrough"><path d="M6.333 5.686c0 .31.083.581.27.814H5.166a2.8 2.8 0 0 1-.099-.76c0-1.627 1.436-2.768 3.48-2.768 1.969 0 3.39 1.175 3.445 2.85h-1.23c-.11-1.08-.964-1.743-2.25-1.743-1.23 0-2.18.602-2.18 1.607zm2.194 7.478c-2.153 0-3.589-1.107-3.705-2.81h1.23c.144 1.06 1.129 1.703 2.544 1.703 1.34 0 2.31-.705 2.31-1.675 0-.827-.547-1.374-1.914-1.675L8.046 8.5H1v-1h14v1h-3.504c.468.437.675.994.675 1.697 0 1.826-1.436 2.967-3.644 2.967"/></symbol><symbol class="bi bi-type-underline" viewBox="0 0 16 16" id="type-underline"><path d="M5.313 3.136h-1.23V9.54c0 2.105 1.47 3.623 3.917 3.623s3.917-1.518 3.917-3.623V3.136h-1.23v6.323c0 1.49-.978 2.57-2.687 2.57s-2.687-1.08-2.687-2.57zM12.5 15h-9v-1h9z"/></symbol><symbol class="bi bi-ubuntu" viewBox="0 0 16 16" id="ubuntu"><path d="M2.273 9.53a2.273 2.273 0 1 0 0-4.546 2.273 2.273 0 0 0 0 4.547Zm9.467-4.984a2.273 2.273 0 1 0 0-4.546 2.273 2.273 0 0 0 0 4.546M7.4 13.108a5.54 5.54 0 0 1-3.775-2.88 3.27 3.27 0 0 1-1.944.24 7.4 7.4 0 0 0 5.328 4.465c.53.113 1.072.169 1.614.166a3.25 3.25 0 0 1-.666-1.9 6 6 0 0 1-.557-.091m3.828 2.285a2.273 2.273 0 1 0 0-4.546 2.273 2.273 0 0 0 0 4.546m3.163-3.108a7.44 7.44 0 0 0 .373-8.726 3.3 3.3 0 0 1-1.278 1.498 5.57 5.57 0 0 1-.183 5.535 3.26 3.26 0 0 1 1.088 1.693M2.098 3.998a3.3 3.3 0 0 1 1.897.486 5.54 5.54 0 0 1 4.464-2.388c.037-.67.277-1.313.69-1.843a7.47 7.47 0 0 0-7.051 3.745"/></symbol><symbol class="bi bi-ui-checks" viewBox="0 0 16 16" id="ui-checks"><path d="M7 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zM2 1a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 8a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2a2 2 0 0 0-2-2zm.854-3.646a.5.5 0 0 1-.708 0l-1-1a.5.5 0 1 1 .708-.708l.646.647 1.646-1.647a.5.5 0 1 1 .708.708zm0 8a.5.5 0 0 1-.708 0l-1-1a.5.5 0 0 1 .708-.708l.646.647 1.646-1.647a.5.5 0 0 1 .708.708zM7 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 8a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-ui-checks-grid" viewBox="0 0 16 16" id="ui-checks-grid"><path d="M2 10h3a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1m9-9h3a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1m0 9a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1zm0-10a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM2 9a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2zm7 2a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-3a2 2 0 0 1-2-2zM0 2a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.354.854a.5.5 0 1 0-.708-.708L3 3.793l-.646-.647a.5.5 0 1 0-.708.708l1 1a.5.5 0 0 0 .708 0z"/></symbol><symbol class="bi bi-ui-radios" viewBox="0 0 16 16" id="ui-radios"><path d="M7 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zM0 12a3 3 0 1 1 6 0 3 3 0 0 1-6 0m7-1.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 8a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5M3 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6m0 4.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></symbol><symbol class="bi bi-ui-radios-grid" viewBox="0 0 16 16" id="ui-radios-grid"><path d="M3.5 15a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5m9-9a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5m0 9a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5M16 3.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-9 9a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m5.5 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-9-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 2a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7"/></symbol><symbol class="bi bi-umbrella" viewBox="0 0 16 16" id="umbrella"><path d="M8 0a.5.5 0 0 1 .5.5v.514C12.625 1.238 16 4.22 16 8c0 0 0 .5-.5.5-.149 0-.352-.145-.352-.145l-.004-.004-.025-.023a3.5 3.5 0 0 0-.555-.394A3.17 3.17 0 0 0 13 7.5c-.638 0-1.178.213-1.564.434a3.5 3.5 0 0 0-.555.394l-.025.023-.003.003s-.204.146-.353.146-.352-.145-.352-.145l-.004-.004-.025-.023a3.5 3.5 0 0 0-.555-.394 3.3 3.3 0 0 0-1.064-.39V13.5H8h.5v.039l-.005.083a3 3 0 0 1-.298 1.102 2.26 2.26 0 0 1-.763.88C7.06 15.851 6.587 16 6 16s-1.061-.148-1.434-.396a2.26 2.26 0 0 1-.763-.88 3 3 0 0 1-.302-1.185v-.025l-.001-.009v-.003s0-.002.5-.002h-.5V13a.5.5 0 0 1 1 0v.506l.003.044a2 2 0 0 0 .195.726c.095.191.23.367.423.495.19.127.466.229.879.229s.689-.102.879-.229c.193-.128.328-.304.424-.495a2 2 0 0 0 .197-.77V7.544a3.3 3.3 0 0 0-1.064.39 3.5 3.5 0 0 0-.58.417l-.004.004S5.65 8.5 5.5 8.5s-.352-.145-.352-.145l-.004-.004a3.5 3.5 0 0 0-.58-.417A3.17 3.17 0 0 0 3 7.5c-.638 0-1.177.213-1.564.434a3.5 3.5 0 0 0-.58.417l-.004.004S.65 8.5.5 8.5C0 8.5 0 8 0 8c0-3.78 3.375-6.762 7.5-6.986V.5A.5.5 0 0 1 8 0M6.577 2.123c-2.833.5-4.99 2.458-5.474 4.854A4.1 4.1 0 0 1 3 6.5c.806 0 1.48.25 1.962.511a9.7 9.7 0 0 1 .344-2.358c.242-.868.64-1.765 1.271-2.53m-.615 4.93A4.16 4.16 0 0 1 8 6.5a4.16 4.16 0 0 1 2.038.553 8.7 8.7 0 0 0-.307-2.13C9.434 3.858 8.898 2.83 8 2.117c-.898.712-1.434 1.74-1.731 2.804a8.7 8.7 0 0 0-.307 2.131zm3.46-4.93c.631.765 1.03 1.662 1.272 2.53.233.833.328 1.66.344 2.358A4.14 4.14 0 0 1 13 6.5c.77 0 1.42.23 1.897.477-.484-2.396-2.641-4.355-5.474-4.854z"/></symbol><symbol class="bi bi-umbrella-fill" viewBox="0 0 16 16" id="umbrella-fill"><path fill-rule="evenodd" d="M8 0a.5.5 0 0 1 .5.5v.514C12.625 1.238 16 4.22 16 8c0 0 0 .5-.5.5-.149 0-.352-.145-.352-.145l-.004-.004-.025-.023a3.5 3.5 0 0 0-.555-.394A3.17 3.17 0 0 0 13 7.5c-.638 0-1.178.213-1.564.434a3.5 3.5 0 0 0-.555.394l-.025.023-.003.003s-.204.146-.353.146-.352-.145-.352-.145l-.004-.004-.025-.023a3.5 3.5 0 0 0-.555-.394 3.3 3.3 0 0 0-1.064-.39V13.5H8h.5v.039l-.005.083a3 3 0 0 1-.298 1.102 2.26 2.26 0 0 1-.763.88C7.06 15.851 6.587 16 6 16s-1.061-.148-1.434-.396a2.26 2.26 0 0 1-.763-.88 3 3 0 0 1-.302-1.185v-.025l-.001-.009v-.003s0-.002.5-.002h-.5V13a.5.5 0 0 1 1 0v.506l.003.044a2 2 0 0 0 .195.726c.095.191.23.367.423.495.19.127.466.229.879.229s.689-.102.879-.229c.193-.128.328-.304.424-.495a2 2 0 0 0 .197-.77V7.544a3.3 3.3 0 0 0-1.064.39 3.5 3.5 0 0 0-.58.417l-.004.004S5.65 8.5 5.5 8.5s-.352-.145-.352-.145l-.004-.004a3.5 3.5 0 0 0-.58-.417A3.17 3.17 0 0 0 3 7.5c-.638 0-1.177.213-1.564.434a3.5 3.5 0 0 0-.58.417l-.004.004S.65 8.5.5 8.5C0 8.5 0 8 0 8c0-3.78 3.375-6.762 7.5-6.986V.5A.5.5 0 0 1 8 0"/></symbol><symbol class="bi bi-unindent" viewBox="0 0 16 16" id="unindent"><path fill-rule="evenodd" d="M13 8a.5.5 0 0 0-.5-.5H5.707l2.147-2.146a.5.5 0 1 0-.708-.708l-3 3a.5.5 0 0 0 0 .708l3 3a.5.5 0 0 0 .708-.708L5.707 8.5H12.5A.5.5 0 0 0 13 8"/><path fill-rule="evenodd" d="M3.5 4a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 1 0v-7a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-union" viewBox="0 0 16 16" id="union"><path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2z"/></symbol><symbol class="bi bi-unity" viewBox="0 0 16 16" id="unity"><path d="M15 11.2V3.733L8.61 0v2.867l2.503 1.466c.099.067.099.2 0 .234L8.148 6.3c-.099.067-.197.033-.263 0L4.92 4.567c-.099-.034-.099-.2 0-.234l2.504-1.466V0L1 3.733V11.2v-.033.033l2.438-1.433V6.833c0-.1.131-.166.197-.133L6.6 8.433c.099.067.132.134.132.234v3.466c0 .1-.132.167-.198.134L4.031 10.8l-2.438 1.433L7.983 16l6.391-3.733-2.438-1.434L9.434 12.3c-.099.067-.198 0-.198-.133V8.7c0-.1.066-.2.132-.233l2.965-1.734c.099-.066.197 0 .197.134V9.8z"/></symbol><symbol class="bi bi-universal-access" viewBox="0 0 16 16" id="universal-access"><path d="M9.5 1.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M6 5.5l-4.535-.442A.531.531 0 0 1 1.531 4H14.47a.531.531 0 0 1 .066 1.058L10 5.5V9l.452 6.42a.535.535 0 0 1-1.053.174L8.243 9.97c-.064-.252-.422-.252-.486 0l-1.156 5.624a.535.535 0 0 1-1.053-.174L6 9z"/></symbol><symbol class="bi bi-universal-access-circle" viewBox="0 0 16 16" id="universal-access-circle"><path d="M8 4.143A1.071 1.071 0 1 0 8 2a1.071 1.071 0 0 0 0 2.143m-4.668 1.47 3.24.316v2.5l-.323 4.585A.383.383 0 0 0 7 13.14l.826-4.017c.045-.18.301-.18.346 0L9 13.139a.383.383 0 0 0 .752-.125L9.43 8.43v-2.5l3.239-.316a.38.38 0 0 0-.047-.756H3.379a.38.38 0 0 0-.047.756Z"/><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M1 8a7 7 0 1 1 14 0A7 7 0 0 1 1 8"/></symbol><symbol class="bi bi-unlock" viewBox="0 0 16 16" id="unlock"><path d="M11 1a2 2 0 0 0-2 2v4a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h5V3a3 3 0 0 1 6 0v4a.5.5 0 0 1-1 0V3a2 2 0 0 0-2-2M3 8a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-unlock-fill" viewBox="0 0 16 16" id="unlock-fill"><path d="M11 1a2 2 0 0 0-2 2v4a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h5V3a3 3 0 0 1 6 0v4a.5.5 0 0 1-1 0V3a2 2 0 0 0-2-2"/></symbol><symbol class="bi bi-upc" viewBox="0 0 16 16" id="upc"><path d="M3 4.5a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0z"/></symbol><symbol class="bi bi-upc-scan" viewBox="0 0 16 16" id="upc-scan"><path d="M1.5 1a.5.5 0 0 0-.5.5v3a.5.5 0 0 1-1 0v-3A1.5 1.5 0 0 1 1.5 0h3a.5.5 0 0 1 0 1zM11 .5a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 1 16 1.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 1-.5-.5M.5 11a.5.5 0 0 1 .5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 1 0 1h-3A1.5 1.5 0 0 1 0 14.5v-3a.5.5 0 0 1 .5-.5m15 0a.5.5 0 0 1 .5.5v3a1.5 1.5 0 0 1-1.5 1.5h-3a.5.5 0 0 1 0-1h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 1 .5-.5M3 4.5a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0z"/></symbol><symbol class="bi bi-upload" viewBox="0 0 16 16" id="upload"><path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/><path d="M7.646 1.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 2.707V11.5a.5.5 0 0 1-1 0V2.707L5.354 4.854a.5.5 0 1 1-.708-.708z"/></symbol><symbol class="bi bi-usb" viewBox="0 0 16 16" id="usb"><path d="M2.25 7a.25.25 0 0 0-.25.25v1c0 .138.112.25.25.25h11.5a.25.25 0 0 0 .25-.25v-1a.25.25 0 0 0-.25-.25z"/><path d="M0 5.5A.5.5 0 0 1 .5 5h15a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5zM1 10h14V6H1z"/></symbol><symbol class="bi bi-usb-c" viewBox="0 0 16 16" id="usb-c"><path d="M3.5 7.5a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1z"/><path d="M0 8a3 3 0 0 1 3-3h10a3 3 0 1 1 0 6H3a3 3 0 0 1-3-3m3-2a2 2 0 1 0 0 4h10a2 2 0 1 0 0-4z"/></symbol><symbol class="bi bi-usb-c-fill" viewBox="0 0 16 16" id="usb-c-fill"><path d="M3 5a3 3 0 0 0 0 6h10a3 3 0 1 0 0-6zm.5 2.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1 0-1"/></symbol><symbol class="bi bi-usb-drive" viewBox="0 0 16 16" id="usb-drive"><path d="M6 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4H6zM7 1v1h1V1zm2 0v1h1V1zM6 5a1 1 0 0 0-1 1v8.5A1.5 1.5 0 0 0 6.5 16h4a1.5 1.5 0 0 0 1.5-1.5V6a1 1 0 0 0-1-1zm0 1h5v8.5a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5z"/></symbol><symbol class="bi bi-usb-drive-fill" viewBox="0 0 16 16" id="usb-drive-fill"><path d="M6 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4H6zM7 1v1h1V1zm2 0v1h1V1zM5.5 5a.5.5 0 0 0-.5.5V15a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V5.5a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-usb-fill" viewBox="0 0 16 16" id="usb-fill"><path d="M.5 5a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h15a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5zm1.75 1.5h11.5a.25.25 0 0 1 .25.25v1a.25.25 0 0 1-.25.25H2.25A.25.25 0 0 1 2 7.75v-1a.25.25 0 0 1 .25-.25"/></symbol><symbol class="bi bi-usb-micro" viewBox="0 0 16 16" id="usb-micro"><path d="M4.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M2.707 4A1 1 0 0 0 2 4.293L.293 6A1 1 0 0 0 0 6.707V11a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V6.707A1 1 0 0 0 15.707 6L14 4.293A1 1 0 0 0 13.293 4zm0 1h10.586L15 6.707V11H1V6.707z"/></symbol><symbol class="bi bi-usb-micro-fill" viewBox="0 0 16 16" id="usb-micro-fill"><path d="M2.707 4A1 1 0 0 0 2 4.293L.293 6A1 1 0 0 0 0 6.707V11a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V6.707A1 1 0 0 0 15.707 6L14 4.293A1 1 0 0 0 13.293 4zM4.5 7h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-usb-mini" viewBox="0 0 16 16" id="usb-mini"><path d="M3.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M3 3a1 1 0 0 0-1 1v1.293L.293 7A1 1 0 0 0 0 7.707V12a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V7.707A1 1 0 0 0 15.707 7L14 5.293V4a1 1 0 0 0-1-1zm0 1h10v1.293a1 1 0 0 0 .293.707L15 7.707V12H1V7.707L2.707 6A1 1 0 0 0 3 5.293z"/></symbol><symbol class="bi bi-usb-mini-fill" viewBox="0 0 16 16" id="usb-mini-fill"><path d="M3 3a1 1 0 0 0-1 1v1.293L.293 7A1 1 0 0 0 0 7.707V12a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V7.707A1 1 0 0 0 15.707 7L14 5.293V4a1 1 0 0 0-1-1zm.5 5h9a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-usb-plug" viewBox="0 0 16 16" id="usb-plug"><path d="M6 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4H6zM7 1v1h1V1zm2 0v1h1V1zM6 5a1 1 0 0 0-1 1v4.394c0 .494.146.976.42 1.387l1.038 1.558c.354.53.542 1.152.542 1.789 0 .481.39.872.872.872h1.256c.481 0 .872-.39.872-.872 0-.637.188-1.26.541-1.789l1.04-1.558A2.5 2.5 0 0 0 12 10.394V6a1 1 0 0 0-1-1zm0 1h5v4.394a1.5 1.5 0 0 1-.252.832L9.71 12.784A4.2 4.2 0 0 0 9.002 15H7.998a4.2 4.2 0 0 0-.707-2.216l-1.04-1.558A1.5 1.5 0 0 1 6 10.394z"/></symbol><symbol class="bi bi-usb-plug-fill" viewBox="0 0 16 16" id="usb-plug-fill"><path d="M6 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4H6zM7 1v1h1V1zm2 0v1h1V1zM5.5 5a.5.5 0 0 0-.5.5v4.894a2 2 0 0 0 .336 1.11l.83 1.245c.544.816.834 1.774.834 2.754 0 .275.222.497.497.497h2.006a.497.497 0 0 0 .497-.497c0-.98.29-1.938.834-2.754l.83-1.245a2 2 0 0 0 .336-1.11V5.5a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-usb-symbol" viewBox="0 0 16 16" id="usb-symbol"><path d="m7.792.312-1.533 2.3A.25.25 0 0 0 6.467 3H7.5v7.319a2.5 2.5 0 0 0-.515-.298L5.909 9.56A1.5 1.5 0 0 1 5 8.18v-.266a1.5 1.5 0 1 0-1 0v.266a2.5 2.5 0 0 0 1.515 2.298l1.076.461a1.5 1.5 0 0 1 .888 1.129 2.001 2.001 0 1 0 1.021-.006v-.902a1.5 1.5 0 0 1 .756-1.303l1.484-.848A2.5 2.5 0 0 0 11.995 7h.755a.25.25 0 0 0 .25-.25v-2.5a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25v2.5c0 .138.112.25.25.25h.741a1.5 1.5 0 0 1-.747 1.142L8.76 8.99a3 3 0 0 0-.26.17V3h1.033a.25.25 0 0 0 .208-.389L8.208.312a.25.25 0 0 0-.416 0"/></symbol><symbol class="bi bi-valentine" viewBox="0 0 16 16" id="valentine"><path d="M8 5.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132M2.25 4a.25.25 0 0 0-.25.25v1.5a.25.25 0 0 0 .5 0V4.5h1.25a.25.25 0 0 0 0-.5zm10 0a.25.25 0 1 0 0 .5h1.25v1.25a.25.25 0 1 0 .5 0v-1.5a.25.25 0 0 0-.25-.25zM2.5 10.25a.25.25 0 1 0-.5 0v1.5c0 .138.112.25.25.25h1.5a.25.25 0 1 0 0-.5H2.5zm11.5 0a.25.25 0 1 0-.5 0v1.25h-1.25a.25.25 0 1 0 0 .5h1.5a.25.25 0 0 0 .25-.25z"/><path fill-rule="evenodd" d="M0 2.994v-.06a1 1 0 0 1 .859-.99l13-1.857a1 1 0 0 1 1.141.99V2a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zM1 3v10h14V3z"/></symbol><symbol class="bi bi-valentine2" viewBox="0 0 16 16" id="valentine2"><path d="M8 6.493c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132M4.25 3a.25.25 0 0 0-.25.25v1.5a.25.25 0 0 0 .5 0V3.5h1.25a.25.25 0 0 0 0-.5zm6 0a.25.25 0 1 0 0 .5h1.25v1.25a.25.25 0 1 0 .5 0v-1.5a.25.25 0 0 0-.25-.25zM4.5 12.25a.25.25 0 1 0-.5 0v1.5c0 .138.112.25.25.25h1.5a.25.25 0 0 0 0-.5H4.5zm7.5 0a.25.25 0 1 0-.5 0v1.25h-1.25a.25.25 0 1 0 0 .5h1.5a.25.25 0 0 0 .25-.25z"/><path fill-rule="evenodd" d="M2 1.994v-.042a1 1 0 0 1 .9-.995l9-.9A1 1 0 0 1 13 1a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zM3 2v13h10V2z"/></symbol><symbol class="bi bi-vector-pen" viewBox="0 0 16 16" id="vector-pen"><path fill-rule="evenodd" d="M10.646.646a.5.5 0 0 1 .708 0l4 4a.5.5 0 0 1 0 .708l-1.902 1.902-.829 3.313a1.5 1.5 0 0 1-1.024 1.073L1.254 14.746 4.358 4.4A1.5 1.5 0 0 1 5.43 3.377l3.313-.828zm-1.8 2.908-3.173.793a.5.5 0 0 0-.358.342l-2.57 8.565 8.567-2.57a.5.5 0 0 0 .34-.357l.794-3.174-3.6-3.6z"/><path fill-rule="evenodd" d="M2.832 13.228 8 9a1 1 0 1 0-1-1l-4.228 5.168-.026.086z"/></symbol><symbol class="bi bi-view-list" viewBox="0 0 16 16" id="view-list"><path d="M3 4.5h10a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2m0 1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1zM1 2a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 2m0 12a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 14"/></symbol><symbol class="bi bi-view-stacked" viewBox="0 0 16 16" id="view-stacked"><path d="M3 0h10a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m0 1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm0 8h10a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2m0 1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-vignette" viewBox="0 0 16 16" id="vignette"><path d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8"/><path d="M8.5 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 7a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1.683-6.281a.5.5 0 1 1-.866-.5.5.5 0 0 1 .866.5m-3.5 6.062a.5.5 0 1 1-.866-.5.5.5 0 0 1 .866.5m4.598-4.598a.5.5 0 1 1-.5-.866.5.5 0 0 1 .5.866m-6.062 3.5a.5.5 0 1 1-.5-.866.5.5 0 0 1 .5.866M11.5 8.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m-7 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m6.281 1.683a.5.5 0 1 1 .5-.866.5.5 0 0 1-.5.866m-6.062-3.5a.5.5 0 1 1 .5-.866.5.5 0 0 1-.5.866m4.598 4.598a.5.5 0 1 1 .866-.5.5.5 0 0 1-.866.5m-3.5-6.062a.5.5 0 1 1 .866-.5.5.5 0 0 1-.866.5"/></symbol><symbol class="bi bi-vimeo" viewBox="0 0 16 16" id="vimeo"><path d="M15.992 4.204q-.106 2.334-3.262 6.393-3.263 4.243-5.522 4.243-1.4 0-2.367-2.583L3.55 7.523Q2.83 4.939 2.007 4.94q-.178.001-1.254.754L0 4.724a210 210 0 0 0 2.334-2.081q1.581-1.364 2.373-1.437 1.865-.185 2.298 2.553.466 2.952.646 3.666.54 2.447 1.186 2.445.5 0 1.508-1.587 1.006-1.587 1.077-2.415.144-1.37-1.077-1.37a3 3 0 0 0-1.185.261q1.183-3.86 4.508-3.756 2.466.075 2.324 3.2z"/></symbol><symbol class="bi bi-vinyl" viewBox="0 0 16 16" id="vinyl"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M8 6a2 2 0 1 0 0 4 2 2 0 0 0 0-4M4 8a4 4 0 1 1 8 0 4 4 0 0 1-8 0"/><path d="M9 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-vinyl-fill" viewBox="0 0 16 16" id="vinyl-fill"><path d="M8 6a2 2 0 1 0 0 4 2 2 0 0 0 0-4m0 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M4 8a4 4 0 1 0 8 0 4 4 0 0 0-8 0"/></symbol><symbol class="bi bi-virus" viewBox="0 0 16 16" id="virus"><path d="M8 0a1 1 0 0 1 1 1v1.402c0 .511.677.693.933.25l.7-1.214a1 1 0 0 1 1.733 1l-.701 1.214c-.256.443.24.939.683.683l1.214-.701a1 1 0 0 1 1 1.732l-1.214.701c-.443.256-.262.933.25.933H15a1 1 0 1 1 0 2h-1.402c-.512 0-.693.677-.25.933l1.214.701a1 1 0 1 1-1 1.732l-1.214-.7c-.443-.257-.939.24-.683.682l.701 1.214a1 1 0 1 1-1.732 1l-.701-1.214c-.256-.443-.933-.262-.933.25V15a1 1 0 1 1-2 0v-1.402c0-.512-.677-.693-.933-.25l-.701 1.214a1 1 0 0 1-1.732-1l.7-1.214c.257-.443-.24-.939-.682-.683l-1.214.701a1 1 0 1 1-1-1.732l1.214-.701c.443-.256.261-.933-.25-.933H1a1 1 0 1 1 0-2h1.402c.511 0 .693-.677.25-.933l-1.214-.701a1 1 0 1 1 1-1.732l1.214.701c.443.256.939-.24.683-.683l-.701-1.214a1 1 0 0 1 1.732-1l.701 1.214c.256.443.933.261.933-.25V1a1 1 0 0 1 1-1m2 5a1 1 0 1 0-2 0 1 1 0 0 0 2 0M6 7a1 1 0 1 0-2 0 1 1 0 0 0 2 0m1 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2m5-3a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/></symbol><symbol class="bi bi-virus2" viewBox="0 0 16 16" id="virus2"><path d="M8 0a1 1 0 0 0-1 1v1.143c0 .557-.407 1.025-.921 1.24-.514.214-1.12.162-1.513-.231l-.809-.809a1 1 0 1 0-1.414 1.414l.809.809c.394.394.445.999.23 1.513C3.169 6.593 2.7 7 2.144 7H1a1 1 0 0 0 0 2h1.143c.557 0 1.025.407 1.24.921.214.514.163 1.12-.231 1.513l-.809.809a1 1 0 0 0 1.414 1.414l.809-.809c.394-.394.999-.445 1.513-.23.514.214.921.682.921 1.24V15a1 1 0 1 0 2 0v-1.143c0-.557.407-1.025.921-1.24.514-.214 1.12-.162 1.513.231l.809.809a1 1 0 0 0 1.414-1.414l-.809-.809c-.393-.394-.445-.999-.23-1.513.214-.514.682-.921 1.24-.921H15a1 1 0 1 0 0-2h-1.143c-.557 0-1.025-.407-1.24-.921-.214-.514-.162-1.12.231-1.513l.809-.809a1 1 0 0 0-1.414-1.414l-.809.809c-.394.393-.999.445-1.513.23-.514-.214-.92-.682-.92-1.24V1a1 1 0 0 0-1-1Zm2 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0m1 5a1 1 0 1 1 0-2 1 1 0 0 1 0 2m4-4a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></symbol><symbol class="bi bi-voicemail" viewBox="0 0 16 16" id="voicemail"><path d="M7 8.5A3.5 3.5 0 0 1 5.95 11h4.1a3.5 3.5 0 1 1 2.45 1h-9A3.5 3.5 0 1 1 7 8.5m-6 0a2.5 2.5 0 1 0 5 0 2.5 2.5 0 0 0-5 0m14 0a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0"/></symbol><symbol class="bi bi-volume-down" viewBox="0 0 16 16" id="volume-down"><path d="M9 4a.5.5 0 0 0-.812-.39L5.825 5.5H3.5A.5.5 0 0 0 3 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 9 12zM6.312 6.39 8 5.04v5.92L6.312 9.61A.5.5 0 0 0 6 9.5H4v-3h2a.5.5 0 0 0 .312-.11M12.025 8a4.5 4.5 0 0 1-1.318 3.182L10 10.475A3.5 3.5 0 0 0 11.025 8 3.5 3.5 0 0 0 10 5.525l.707-.707A4.5 4.5 0 0 1 12.025 8"/></symbol><symbol class="bi bi-volume-down-fill" viewBox="0 0 16 16" id="volume-down-fill"><path d="M9 4a.5.5 0 0 0-.812-.39L5.825 5.5H3.5A.5.5 0 0 0 3 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 9 12zm3.025 4a4.5 4.5 0 0 1-1.318 3.182L10 10.475A3.5 3.5 0 0 0 11.025 8 3.5 3.5 0 0 0 10 5.525l.707-.707A4.5 4.5 0 0 1 12.025 8"/></symbol><symbol class="bi bi-volume-mute" viewBox="0 0 16 16" id="volume-mute"><path d="M6.717 3.55A.5.5 0 0 1 7 4v8a.5.5 0 0 1-.812.39L3.825 10.5H1.5A.5.5 0 0 1 1 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06M6 5.04 4.312 6.39A.5.5 0 0 1 4 6.5H2v3h2a.5.5 0 0 1 .312.11L6 10.96zm7.854.606a.5.5 0 0 1 0 .708L12.207 8l1.647 1.646a.5.5 0 0 1-.708.708L11.5 8.707l-1.646 1.647a.5.5 0 0 1-.708-.708L10.793 8 9.146 6.354a.5.5 0 1 1 .708-.708L11.5 7.293l1.646-1.647a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-volume-mute-fill" viewBox="0 0 16 16" id="volume-mute-fill"><path d="M6.717 3.55A.5.5 0 0 1 7 4v8a.5.5 0 0 1-.812.39L3.825 10.5H1.5A.5.5 0 0 1 1 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06m7.137 2.096a.5.5 0 0 1 0 .708L12.207 8l1.647 1.646a.5.5 0 0 1-.708.708L11.5 8.707l-1.646 1.647a.5.5 0 0 1-.708-.708L10.793 8 9.146 6.354a.5.5 0 1 1 .708-.708L11.5 7.293l1.646-1.647a.5.5 0 0 1 .708 0"/></symbol><symbol class="bi bi-volume-off" viewBox="0 0 16 16" id="volume-off"><path d="M10.717 3.55A.5.5 0 0 1 11 4v8a.5.5 0 0 1-.812.39L7.825 10.5H5.5A.5.5 0 0 1 5 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06M10 5.04 8.312 6.39A.5.5 0 0 1 8 6.5H6v3h2a.5.5 0 0 1 .312.11L10 10.96z"/></symbol><symbol class="bi bi-volume-off-fill" viewBox="0 0 16 16" id="volume-off-fill"><path d="M10.717 3.55A.5.5 0 0 1 11 4v8a.5.5 0 0 1-.812.39L7.825 10.5H5.5A.5.5 0 0 1 5 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06"/></symbol><symbol class="bi bi-volume-up" viewBox="0 0 16 16" id="volume-up"><path d="M11.536 14.01A8.47 8.47 0 0 0 14.026 8a8.47 8.47 0 0 0-2.49-6.01l-.708.707A7.48 7.48 0 0 1 13.025 8c0 2.071-.84 3.946-2.197 5.303z"/><path d="M10.121 12.596A6.48 6.48 0 0 0 12.025 8a6.48 6.48 0 0 0-1.904-4.596l-.707.707A5.48 5.48 0 0 1 11.025 8a5.48 5.48 0 0 1-1.61 3.89z"/><path d="M10.025 8a4.5 4.5 0 0 1-1.318 3.182L8 10.475A3.5 3.5 0 0 0 9.025 8c0-.966-.392-1.841-1.025-2.475l.707-.707A4.5 4.5 0 0 1 10.025 8M7 4a.5.5 0 0 0-.812-.39L3.825 5.5H1.5A.5.5 0 0 0 1 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 7 12zM4.312 6.39 6 5.04v5.92L4.312 9.61A.5.5 0 0 0 4 9.5H2v-3h2a.5.5 0 0 0 .312-.11"/></symbol><symbol class="bi bi-volume-up-fill" viewBox="0 0 16 16" id="volume-up-fill"><path d="M11.536 14.01A8.47 8.47 0 0 0 14.026 8a8.47 8.47 0 0 0-2.49-6.01l-.708.707A7.48 7.48 0 0 1 13.025 8c0 2.071-.84 3.946-2.197 5.303z"/><path d="M10.121 12.596A6.48 6.48 0 0 0 12.025 8a6.48 6.48 0 0 0-1.904-4.596l-.707.707A5.48 5.48 0 0 1 11.025 8a5.48 5.48 0 0 1-1.61 3.89z"/><path d="M8.707 11.182A4.5 4.5 0 0 0 10.025 8a4.5 4.5 0 0 0-1.318-3.182L8 5.525A3.5 3.5 0 0 1 9.025 8 3.5 3.5 0 0 1 8 10.475zM6.717 3.55A.5.5 0 0 1 7 4v8a.5.5 0 0 1-.812.39L3.825 10.5H1.5A.5.5 0 0 1 1 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06"/></symbol><symbol class="bi bi-vr" viewBox="0 0 16 16" id="vr"><path d="M3 12V4a1 1 0 0 1 1-1h2.5V2H4a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5v-1H4a1 1 0 0 1-1-1m6.5 1v1H12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H9.5v1H12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1zM8 16a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 1 0v15a.5.5 0 0 1-.5.5"/></symbol><symbol class="bi bi-wallet" viewBox="0 0 16 16" id="wallet"><path d="M0 3a2 2 0 0 1 2-2h13.5a.5.5 0 0 1 0 1H15v2a1 1 0 0 1 1 1v8.5a1.5 1.5 0 0 1-1.5 1.5h-12A2.5 2.5 0 0 1 0 12.5zm1 1.732V12.5A1.5 1.5 0 0 0 2.5 14h12a.5.5 0 0 0 .5-.5V5H2a2 2 0 0 1-1-.268M1 3a1 1 0 0 0 1 1h12V2H2a1 1 0 0 0-1 1"/></symbol><symbol class="bi bi-wallet-fill" viewBox="0 0 16 16" id="wallet-fill"><path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v2h6a.5.5 0 0 1 .5.5c0 .253.08.644.306.958.207.288.557.542 1.194.542s.987-.254 1.194-.542C9.42 6.644 9.5 6.253 9.5 6a.5.5 0 0 1 .5-.5h6v-2A1.5 1.5 0 0 0 14.5 2z"/><path d="M16 6.5h-5.551a2.7 2.7 0 0 1-.443 1.042C9.613 8.088 8.963 8.5 8 8.5s-1.613-.412-2.006-.958A2.7 2.7 0 0 1 5.551 6.5H0v6A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5z"/></symbol><symbol class="bi bi-wallet2" viewBox="0 0 16 16" id="wallet2"><path d="M12.136.326A1.5 1.5 0 0 1 14 1.78V3h.5A1.5 1.5 0 0 1 16 4.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 13.5v-9a1.5 1.5 0 0 1 1.432-1.499zM5.562 3H13V1.78a.5.5 0 0 0-.621-.484zM1.5 4a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5z"/></symbol><symbol class="bi bi-watch" viewBox="0 0 16 16" id="watch"><path d="M8.5 5a.5.5 0 0 0-1 0v2.5H6a.5.5 0 0 0 0 1h2a.5.5 0 0 0 .5-.5z"/><path d="M5.667 16C4.747 16 4 15.254 4 14.333v-1.86A6 6 0 0 1 2 8c0-1.777.772-3.374 2-4.472V1.667C4 .747 4.746 0 5.667 0h4.666C11.253 0 12 .746 12 1.667v1.86a6 6 0 0 1 1.918 3.48.502.502 0 0 1 .582.493v1a.5.5 0 0 1-.582.493A6 6 0 0 1 12 12.473v1.86c0 .92-.746 1.667-1.667 1.667zM13 8A5 5 0 1 0 3 8a5 5 0 0 0 10 0"/></symbol><symbol class="bi bi-water" viewBox="0 0 16 16" id="water"><path d="M.036 3.314a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0L.314 3.964a.5.5 0 0 1-.278-.65m0 3a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0L.314 6.964a.5.5 0 0 1-.278-.65m0 3a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0L.314 9.964a.5.5 0 0 1-.278-.65m0 3a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.757-.703a.5.5 0 0 1-.278-.65"/></symbol><symbol class="bi bi-webcam" viewBox="0 0 16 16" id="webcam"><path d="M0 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H9.269c.144.162.33.324.531.475a7 7 0 0 0 .907.57l.014.006.003.002A.5.5 0 0 1 10.5 13h-5a.5.5 0 0 1-.224-.947l.003-.002.014-.007a5 5 0 0 0 .268-.148 7 7 0 0 0 .639-.421c.2-.15.387-.313.531-.475H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1z"/><path d="M8 6.5a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0m7 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/></symbol><symbol class="bi bi-webcam-fill" viewBox="0 0 16 16" id="webcam-fill"><path d="M6.644 11.094a.5.5 0 0 1 .356-.15h2a.5.5 0 0 1 .356.15c.175.177.39.347.603.496a7 7 0 0 0 .752.456l.01.006h.003A.5.5 0 0 1 10.5 13h-5a.5.5 0 0 1-.224-.947l.002-.001.01-.006a4 4 0 0 0 .214-.116 8 8 0 0 0 .539-.34c.214-.15.428-.319.603-.496M7 6.5a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/><path d="M2 3a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm6 1.5a2 2 0 1 1 0 4 2 2 0 0 1 0-4M12.5 7a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1"/></symbol><symbol class="bi bi-wechat" viewBox="0 0 16 16" id="wechat"><path d="M11.176 14.429c-2.665 0-4.826-1.8-4.826-4.018 0-2.22 2.159-4.02 4.824-4.02S16 8.191 16 10.411c0 1.21-.65 2.301-1.666 3.036a.32.32 0 0 0-.12.366l.218.81a.6.6 0 0 1 .029.117.166.166 0 0 1-.162.162.2.2 0 0 1-.092-.03l-1.057-.61a.5.5 0 0 0-.256-.074.5.5 0 0 0-.142.021 5.7 5.7 0 0 1-1.576.22M9.064 9.542a.647.647 0 1 0 .557-1 .645.645 0 0 0-.646.647.6.6 0 0 0 .09.353Zm3.232.001a.646.646 0 1 0 .546-1 .645.645 0 0 0-.644.644.63.63 0 0 0 .098.356"/><path d="M0 6.826c0 1.455.781 2.765 2.001 3.656a.385.385 0 0 1 .143.439l-.161.6-.1.373a.5.5 0 0 0-.032.14.19.19 0 0 0 .193.193q.06 0 .111-.029l1.268-.733a.6.6 0 0 1 .308-.088q.088 0 .171.025a6.8 6.8 0 0 0 1.625.26 4.5 4.5 0 0 1-.177-1.251c0-2.936 2.785-5.02 5.824-5.02l.15.002C10.587 3.429 8.392 2 5.796 2 2.596 2 0 4.16 0 6.826m4.632-1.555a.77.77 0 1 1-1.54 0 .77.77 0 0 1 1.54 0m3.875 0a.77.77 0 1 1-1.54 0 .77.77 0 0 1 1.54 0"/></symbol><symbol class="bi bi-whatsapp" viewBox="0 0 16 16" id="whatsapp"><path d="M13.601 2.326A7.85 7.85 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.9 7.9 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.9 7.9 0 0 0 13.6 2.326zM7.994 14.521a6.6 6.6 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.56 6.56 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592m3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.114.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.114-.198-.011-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.323-.335-.445-.34-.114-.007-.247-.007-.38-.007a.73.73 0 0 0-.529.247c-.182.198-.691.677-.691 1.654s.71 1.916.81 2.049c.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058 1.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232"/></symbol><symbol class="bi bi-wifi" viewBox="0 0 16 16" id="wifi"><path d="M15.384 6.115a.485.485 0 0 0-.047-.736A12.44 12.44 0 0 0 8 3C5.259 3 2.723 3.882.663 5.379a.485.485 0 0 0-.048.736.52.52 0 0 0 .668.05A11.45 11.45 0 0 1 8 4c2.507 0 4.827.802 6.716 2.164.205.148.49.13.668-.049"/><path d="M13.229 8.271a.482.482 0 0 0-.063-.745A9.46 9.46 0 0 0 8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065A8.46 8.46 0 0 1 8 7a8.46 8.46 0 0 1 4.576 1.336c.206.132.48.108.653-.065m-2.183 2.183c.226-.226.185-.605-.1-.75A6.5 6.5 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.407.19.611.09A5.5 5.5 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.61-.091zM9.06 12.44c.196-.196.198-.52-.04-.66A2 2 0 0 0 8 11.5a2 2 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .707 0l.707-.707z"/></symbol><symbol class="bi bi-wifi-1" viewBox="0 0 16 16" id="wifi-1"><path d="M11.046 10.454c.226-.226.185-.605-.1-.75A6.5 6.5 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.407.19.611.09A5.5 5.5 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.611-.091zM9.06 12.44c.196-.196.198-.52-.04-.66A2 2 0 0 0 8 11.5a2 2 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .707 0l.708-.707z"/></symbol><symbol class="bi bi-wifi-2" viewBox="0 0 16 16" id="wifi-2"><path d="M13.229 8.271c.216-.216.194-.578-.063-.745A9.46 9.46 0 0 0 8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065A8.46 8.46 0 0 1 8 7a8.46 8.46 0 0 1 4.577 1.336c.205.132.48.108.652-.065m-2.183 2.183c.226-.226.185-.605-.1-.75A6.5 6.5 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.408.19.611.09A5.5 5.5 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.611-.091zM9.06 12.44c.196-.196.198-.52-.04-.66A2 2 0 0 0 8 11.5a2 2 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .708 0l.707-.707z"/></symbol><symbol class="bi bi-wifi-off" viewBox="0 0 16 16" id="wifi-off"><path d="M10.706 3.294A12.6 12.6 0 0 0 8 3C5.259 3 2.723 3.882.663 5.379a.485.485 0 0 0-.048.736.52.52 0 0 0 .668.05A11.45 11.45 0 0 1 8 4q.946 0 1.852.148zM8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065 8.45 8.45 0 0 1 3.51-1.27zm2.596 1.404.785-.785q.947.362 1.785.907a.482.482 0 0 1 .063.745.525.525 0 0 1-.652.065 8.5 8.5 0 0 0-1.98-.932zM8 10l.933-.933a6.5 6.5 0 0 1 2.013.637c.285.145.326.524.1.75l-.015.015a.53.53 0 0 1-.611.09A5.5 5.5 0 0 0 8 10m4.905-4.905.747-.747q.886.451 1.685 1.03a.485.485 0 0 1 .047.737.52.52 0 0 1-.668.05 11.5 11.5 0 0 0-1.811-1.07M9.02 11.78c.238.14.236.464.04.66l-.707.706a.5.5 0 0 1-.707 0l-.707-.707c-.195-.195-.197-.518.04-.66A2 2 0 0 1 8 11.5c.374 0 .723.102 1.021.28zm4.355-9.905a.53.53 0 0 1 .75.75l-10.75 10.75a.53.53 0 0 1-.75-.75z"/></symbol><symbol class="bi bi-wikipedia" viewBox="0 0 16 16" id="wikipedia"><path d="M8.835 3.003c.828-.006 2.688 0 2.688 0l.033.03v.288q0 .12-.133.12c-.433.02-.522.063-.68.29-.087.126-.258.393-.435.694l-1.52 2.843-.043.089 1.858 3.801.113.031 2.926-6.946q.152-.42-.044-.595c-.132-.114-.224-.18-.563-.195l-.275-.014a.16.16 0 0 1-.096-.035.1.1 0 0 1-.046-.084v-.289l.042-.03h3.306l.034.03v.29q0 .117-.133.117-.65.03-.962.281a1.64 1.64 0 0 0-.488.704s-2.691 6.16-3.612 8.208c-.353.672-.7.61-1.004-.019A224 224 0 0 1 8.044 8.81c-.623 1.285-1.475 3.026-1.898 3.81-.411.715-.75.622-1.02.019-.45-1.065-1.131-2.519-1.817-3.982-.735-1.569-1.475-3.149-1.943-4.272-.167-.4-.293-.657-.412-.759q-.18-.15-.746-.18Q0 3.421 0 3.341v-.303l.034-.03c.615-.003 3.594 0 3.594 0l.034.03v.288q0 .119-.15.118l-.375.016q-.483.02-.483.288-.002.125.109.4c.72 1.753 3.207 6.998 3.207 6.998l.091.023 1.603-3.197-.32-.71L6.24 5.095s-.213-.433-.286-.577l-.098-.196c-.387-.77-.411-.82-.865-.88-.137-.017-.208-.035-.208-.102v-.304l.041-.03h2.853l.075.024v.303q0 .104-.15.104l-.206.03c-.523.04-.438.254-.09.946l1.057 2.163 1.17-2.332c.195-.427.155-.534.074-.633-.046-.055-.202-.144-.54-.158l-.133-.015a.16.16 0 0 1-.096-.034.1.1 0 0 1-.045-.085v-.288l.041-.03Z"/></symbol><symbol class="bi bi-wind" viewBox="0 0 16 16" id="wind"><path d="M12.5 2A2.5 2.5 0 0 0 10 4.5a.5.5 0 0 1-1 0A3.5 3.5 0 1 1 12.5 8H.5a.5.5 0 0 1 0-1h12a2.5 2.5 0 0 0 0-5m-7 1a1 1 0 0 0-1 1 .5.5 0 0 1-1 0 2 2 0 1 1 2 2h-5a.5.5 0 0 1 0-1h5a1 1 0 0 0 0-2M0 9.5A.5.5 0 0 1 .5 9h10.042a3 3 0 1 1-3 3 .5.5 0 0 1 1 0 2 2 0 1 0 2-2H.5a.5.5 0 0 1-.5-.5"/></symbol><symbol class="bi bi-window" viewBox="0 0 16 16" id="window"><path d="M2.5 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1 .5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/><path d="M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm13 2v2H1V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1M2 14a1 1 0 0 1-1-1V6h14v7a1 1 0 0 1-1 1z"/></symbol><symbol class="bi bi-window-dash" viewBox="0 0 16 16" id="window-dash"><path d="M2.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M4 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/><path d="M0 4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V7H1v5a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2zm1 2h13V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/></symbol><symbol class="bi bi-window-desktop" viewBox="0 0 16 16" id="window-desktop"><path d="M3.5 11a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M2.375 1A2.366 2.366 0 0 0 0 3.357v9.286A2.366 2.366 0 0 0 2.375 15h11.25A2.366 2.366 0 0 0 16 12.643V3.357A2.366 2.366 0 0 0 13.625 1zM1 3.357C1 2.612 1.611 2 2.375 2h11.25C14.389 2 15 2.612 15 3.357V4H1zM1 5h14v7.643c0 .745-.611 1.357-1.375 1.357H2.375A1.366 1.366 0 0 1 1 12.643z"/></symbol><symbol class="bi bi-window-dock" viewBox="0 0 16 16" id="window-dock"><path d="M3.5 11a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm4.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/><path d="M14 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM2 14h12a1 1 0 0 0 1-1V5H1v8a1 1 0 0 0 1 1M2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1z"/></symbol><symbol class="bi bi-window-fullscreen" viewBox="0 0 16 16" id="window-fullscreen"><path d="M3 3.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1.5 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1 .5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/><path d="M.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h15a.5.5 0 0 0 .5-.5v-13a.5.5 0 0 0-.5-.5zM1 5V2h14v3zm0 1h14v8H1z"/></symbol><symbol class="bi bi-window-plus" viewBox="0 0 16 16" id="window-plus"><path d="M2.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M4 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/><path d="M0 4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V7H1v5a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2zm1 2h13V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/></symbol><symbol class="bi bi-window-sidebar" viewBox="0 0 16 16" id="window-sidebar"><path d="M2.5 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1 .5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/><path d="M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v2H1V3a1 1 0 0 1 1-1zM1 13V6h4v8H2a1 1 0 0 1-1-1m5 1V6h9v7a1 1 0 0 1-1 1z"/></symbol><symbol class="bi bi-window-split" viewBox="0 0 16 16" id="window-split"><path d="M2.5 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1 .5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/><path d="M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v2H1V3a1 1 0 0 1 1-1zM1 13V6h6.5v8H2a1 1 0 0 1-1-1m7.5 1V6H15v7a1 1 0 0 1-1 1z"/></symbol><symbol class="bi bi-window-stack" viewBox="0 0 16 16" id="window-stack"><path d="M4.5 6a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M6 6a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/><path d="M12 1a2 2 0 0 1 2 2 2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2 2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM2 12V5a2 2 0 0 1 2-2h9a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1m1-4v5a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V8zm12-1V5a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v2z"/></symbol><symbol class="bi bi-window-x" viewBox="0 0 16 16" id="window-x"><path d="M2.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M4 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/><path d="M0 4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V7H1v5a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2zm1 2h13V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z"/><path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/></symbol><symbol class="bi bi-windows" viewBox="0 0 16 16" id="windows"><path d="M6.555 1.375 0 2.237v5.45h6.555zM0 13.795l6.555.933V8.313H0zm7.278-5.4.026 6.378L16 16V8.395zM16 0 7.33 1.244v6.414H16z"/></symbol><symbol class="bi bi-wordpress" viewBox="0 0 16 16" id="wordpress"><path d="M12.633 7.653c0-.848-.305-1.435-.566-1.892l-.08-.13c-.317-.51-.594-.958-.594-1.48 0-.63.478-1.218 1.152-1.218q.03 0 .058.003l.031.003A6.84 6.84 0 0 0 8 1.137 6.86 6.86 0 0 0 2.266 4.23c.16.005.313.009.442.009.717 0 1.828-.087 1.828-.087.37-.022.414.521.044.565 0 0-.371.044-.785.065l2.5 7.434 1.5-4.506-1.07-2.929c-.369-.022-.719-.065-.719-.065-.37-.022-.326-.588.043-.566 0 0 1.134.087 1.808.087.718 0 1.83-.087 1.83-.087.37-.022.413.522.043.566 0 0-.372.043-.785.065l2.48 7.377.684-2.287.054-.173c.27-.86.469-1.495.469-2.046zM1.137 8a6.86 6.86 0 0 0 3.868 6.176L1.73 5.206A6.8 6.8 0 0 0 1.137 8"/><path d="M6.061 14.583 8.121 8.6l2.109 5.78q.02.05.049.094a6.85 6.85 0 0 1-4.218.109m7.96-9.876q.046.328.047.706c0 .696-.13 1.479-.522 2.458l-2.096 6.06a6.86 6.86 0 0 0 2.572-9.224z"/><path fill-rule="evenodd" d="M0 8c0-4.411 3.589-8 8-8s8 3.589 8 8-3.59 8-8 8-8-3.589-8-8m.367 0c0 4.209 3.424 7.633 7.633 7.633S15.632 12.209 15.632 8C15.632 3.79 12.208.367 8 .367 3.79.367.367 3.79.367 8"/></symbol><symbol class="bi bi-wrench" viewBox="0 0 16 16" id="wrench"><path d="M.102 2.223A3.004 3.004 0 0 0 3.78 5.897l6.341 6.252A3.003 3.003 0 0 0 13 16a3 3 0 1 0-.851-5.878L5.897 3.781A3.004 3.004 0 0 0 2.223.1l2.141 2.142L4 4l-1.757.364zm13.37 9.019.528.026.287.445.445.287.026.529L15 13l-.242.471-.026.529-.445.287-.287.445-.529.026L13 15l-.471-.242-.529-.026-.287-.445-.445-.287-.026-.529L11 13l.242-.471.026-.529.445-.287.287-.445.529-.026L13 11z"/></symbol><symbol class="bi bi-wrench-adjustable" viewBox="0 0 16 16" id="wrench-adjustable"><path d="M16 4.5a4.5 4.5 0 0 1-1.703 3.526L13 5l2.959-1.11q.04.3.041.61"/><path d="M11.5 9c.653 0 1.273-.139 1.833-.39L12 5.5 11 3l3.826-1.53A4.5 4.5 0 0 0 7.29 6.092l-6.116 5.096a2.583 2.583 0 1 0 3.638 3.638L9.908 8.71A4.5 4.5 0 0 0 11.5 9m-1.292-4.361-.596.893.809-.27a.25.25 0 0 1 .287.377l-.596.893.809-.27.158.475-1.5.5a.25.25 0 0 1-.287-.376l.596-.893-.809.27a.25.25 0 0 1-.287-.377l.596-.893-.809.27-.158-.475 1.5-.5a.25.25 0 0 1 .287.376M3 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/></symbol><symbol class="bi bi-wrench-adjustable-circle" viewBox="0 0 16 16" id="wrench-adjustable-circle"><path d="M12.496 8a4.5 4.5 0 0 1-1.703 3.526L9.497 8.5l2.959-1.11q.04.3.04.61"/><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-1 0a7 7 0 1 0-13.202 3.249l1.988-1.657a4.5 4.5 0 0 1 7.537-4.623L7.497 6.5l1 2.5 1.333 3.11c-.56.251-1.18.39-1.833.39a4.5 4.5 0 0 1-1.592-.29L4.747 14.2A7 7 0 0 0 15 8m-8.295.139a.25.25 0 0 0-.288-.376l-1.5.5.159.474.808-.27-.595.894a.25.25 0 0 0 .287.376l.808-.27-.595.894a.25.25 0 0 0 .287.376l1.5-.5-.159-.474-.808.27.596-.894a.25.25 0 0 0-.288-.376l-.808.27z"/></symbol><symbol class="bi bi-wrench-adjustable-circle-fill" viewBox="0 0 16 16" id="wrench-adjustable-circle-fill"><path d="M6.705 8.139a.25.25 0 0 0-.288-.376l-1.5.5.159.474.808-.27-.595.894a.25.25 0 0 0 .287.376l.808-.27-.595.894a.25.25 0 0 0 .287.376l1.5-.5-.159-.474-.808.27.596-.894a.25.25 0 0 0-.288-.376l-.808.27z"/><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m-6.202-4.751 1.988-1.657a4.5 4.5 0 0 1 7.537-4.623L7.497 6.5l1 2.5 1.333 3.11c-.56.251-1.18.39-1.833.39a4.5 4.5 0 0 1-1.592-.29L4.747 14.2a7.03 7.03 0 0 1-2.949-2.951M12.496 8a4.5 4.5 0 0 1-1.703 3.526L9.497 8.5l2.959-1.11q.04.3.04.61"/></symbol><symbol class="bi bi-x" viewBox="0 0 16 16" id="x"><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-x-circle" viewBox="0 0 16 16" id="x-circle"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-x-circle-fill" viewBox="0 0 16 16" id="x-circle-fill"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293z"/></symbol><symbol class="bi bi-x-diamond" viewBox="0 0 16 16" id="x-diamond"><path d="M7.987 16a1.53 1.53 0 0 1-1.07-.448L.45 9.082a1.53 1.53 0 0 1 0-2.165L6.917.45a1.53 1.53 0 0 1 2.166 0l6.469 6.468A1.53 1.53 0 0 1 16 8.013a1.53 1.53 0 0 1-.448 1.07l-6.47 6.469A1.53 1.53 0 0 1 7.988 16zM7.639 1.17 4.766 4.044 8 7.278l3.234-3.234L8.361 1.17a.51.51 0 0 0-.722 0M8.722 8l3.234 3.234 2.873-2.873c.2-.2.2-.523 0-.722l-2.873-2.873zM8 8.722l-3.234 3.234 2.873 2.873c.2.2.523.2.722 0l2.873-2.873zM7.278 8 4.044 4.766 1.17 7.639a.51.51 0 0 0 0 .722l2.874 2.873z"/></symbol><symbol class="bi bi-x-diamond-fill" viewBox="0 0 16 16" id="x-diamond-fill"><path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L4.047 3.339 8 7.293l3.954-3.954L9.049.435zm3.61 3.611L8.708 8l3.954 3.954 2.904-2.905c.58-.58.58-1.519 0-2.098l-2.904-2.905zm-.706 8.614L8 8.708l-3.954 3.954 2.905 2.904c.58.58 1.519.58 2.098 0l2.905-2.904zm-8.614-.706L7.292 8 3.339 4.046.435 6.951c-.58.58-.58 1.519 0 2.098z"/></symbol><symbol class="bi bi-x-lg" viewBox="0 0 16 16" id="x-lg"><path d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"/></symbol><symbol class="bi bi-x-octagon" viewBox="0 0 16 16" id="x-octagon"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-x-octagon-fill" viewBox="0 0 16 16" id="x-octagon-fill"><path d="M11.46.146A.5.5 0 0 0 11.107 0H4.893a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353zm-6.106 4.5L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 1 1 .708-.708"/></symbol><symbol class="bi bi-x-square" viewBox="0 0 16 16" id="x-square"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708"/></symbol><symbol class="bi bi-x-square-fill" viewBox="0 0 16 16" id="x-square-fill"><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.354 4.646L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 1 1 .708-.708"/></symbol><symbol class="bi bi-xbox" viewBox="0 0 16 16" id="xbox"><path d="M7.202 15.967a8 8 0 0 1-3.552-1.26c-.898-.585-1.101-.826-1.101-1.306 0-.965 1.062-2.656 2.879-4.583C6.459 7.723 7.897 6.44 8.052 6.475c.302.068 2.718 2.423 3.622 3.531 1.43 1.753 2.088 3.189 1.754 3.829-.254.486-1.83 1.437-2.987 1.802-.954.301-2.207.429-3.239.33m-5.866-3.57C.589 11.253.212 10.127.03 8.497c-.06-.539-.038-.846.137-1.95.218-1.377 1.002-2.97 1.945-3.95.401-.417.437-.427.926-.263.595.2 1.23.638 2.213 1.528l.574.519-.313.385C4.056 6.553 2.52 9.086 1.94 10.653c-.315.852-.442 1.707-.306 2.063.091.24.007.15-.3-.319Zm13.101.195c.074-.36-.019-1.02-.238-1.687-.473-1.443-2.055-4.128-3.508-5.953l-.457-.575.494-.454c.646-.593 1.095-.948 1.58-1.25.381-.237.927-.448 1.161-.448.145 0 .654.528 1.065 1.104a8.4 8.4 0 0 1 1.343 3.102c.153.728.166 2.286.024 3.012a9.5 9.5 0 0 1-.6 1.893c-.179.393-.624 1.156-.82 1.404-.1.128-.1.127-.043-.148ZM7.335 1.952c-.67-.34-1.704-.705-2.276-.803a4 4 0 0 0-.759-.043c-.471.024-.45 0 .306-.358A7.8 7.8 0 0 1 6.47.128c.8-.169 2.306-.17 3.094-.005.85.18 1.853.552 2.418.9l.168.103-.385-.02c-.766-.038-1.88.27-3.078.853-.361.176-.676.316-.699.312a12 12 0 0 1-.654-.319Z"/></symbol><symbol class="bi bi-yelp" viewBox="0 0 16 16" id="yelp"><path d="m4.188 10.095.736-.17.073-.02A.813.813 0 0 0 5.45 8.65a1 1 0 0 0-.3-.258 3 3 0 0 0-.428-.198l-.808-.295a76 76 0 0 0-1.364-.493C2.253 7.3 2 7.208 1.783 7.14c-.041-.013-.087-.025-.124-.038a2.1 2.1 0 0 0-.606-.116.72.72 0 0 0-.572.245 2 2 0 0 0-.105.132 1.6 1.6 0 0 0-.155.309c-.15.443-.225.908-.22 1.376.002.423.013.966.246 1.334a.8.8 0 0 0 .22.24c.166.114.333.129.507.141.26.019.513-.045.764-.103l2.447-.566zm8.219-3.911a4.2 4.2 0 0 0-.8-1.14 1.6 1.6 0 0 0-.275-.21 2 2 0 0 0-.15-.073.72.72 0 0 0-.621.031c-.142.07-.294.182-.496.37-.028.028-.063.06-.094.089-.167.156-.353.35-.574.575q-.51.516-1.01 1.042l-.598.62a3 3 0 0 0-.298.365 1 1 0 0 0-.157.364.8.8 0 0 0 .007.301q0 .007.003.013a.81.81 0 0 0 .945.616l.074-.014 3.185-.736c.251-.058.506-.112.732-.242.151-.088.295-.175.394-.35a.8.8 0 0 0 .093-.313c.05-.434-.178-.927-.36-1.308M6.706 7.523c.23-.29.23-.722.25-1.075.07-1.181.143-2.362.201-3.543.022-.448.07-.89.044-1.34-.022-.372-.025-.799-.26-1.104C6.528-.077 5.644-.033 5.04.05q-.278.038-.553.104a8 8 0 0 0-.543.149c-.58.19-1.393.537-1.53 1.204-.078.377.106.763.249 1.107.173.417.41.792.625 1.185.57 1.036 1.15 2.066 1.728 3.097.172.308.36.697.695.857q.033.015.068.025c.15.057.313.068.469.032l.028-.007a.8.8 0 0 0 .377-.226zm-.276 3.161a.74.74 0 0 0-.923-.234 1 1 0 0 0-.145.09 2 2 0 0 0-.346.354c-.026.033-.05.077-.08.104l-.512.705q-.435.591-.861 1.193c-.185.26-.346.479-.472.673l-.072.11c-.152.235-.238.406-.282.559a.7.7 0 0 0-.03.314c.013.11.05.217.108.312q.046.07.1.138a1.6 1.6 0 0 0 .257.237 4.5 4.5 0 0 0 2.196.76 1.6 1.6 0 0 0 .349-.027 2 2 0 0 0 .163-.048.8.8 0 0 0 .278-.178.7.7 0 0 0 .17-.266c.059-.147.098-.335.123-.613l.012-.13c.02-.231.03-.502.045-.821q.037-.735.06-1.469l.033-.87a2.1 2.1 0 0 0-.055-.623 1 1 0 0 0-.117-.27Zm5.783 1.362a2.2 2.2 0 0 0-.498-.378l-.112-.067c-.199-.12-.438-.246-.719-.398q-.644-.353-1.295-.695l-.767-.407c-.04-.012-.08-.04-.118-.059a2 2 0 0 0-.466-.166 1 1 0 0 0-.17-.018.74.74 0 0 0-.725.616 1 1 0 0 0 .01.293c.038.204.13.406.224.583l.41.768q.341.65.696 1.294c.152.28.28.52.398.719q.036.057.068.112c.145.239.261.39.379.497a.73.73 0 0 0 .596.201 2 2 0 0 0 .168-.029 1.6 1.6 0 0 0 .325-.129 4 4 0 0 0 .855-.64c.306-.3.577-.63.788-1.006q.045-.08.076-.165a2 2 0 0 0 .051-.161q.019-.083.029-.168a.8.8 0 0 0-.038-.327.7.7 0 0 0-.165-.27"/></symbol><symbol class="bi bi-yin-yang" viewBox="0 0 16 16" id="yin-yang"><path d="M9.167 4.5a1.167 1.167 0 1 1-2.334 0 1.167 1.167 0 0 1 2.334 0"/><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M1 8a7 7 0 0 1 7-7 3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 0 0 7 7 7 0 0 1-7-7m7 4.667a1.167 1.167 0 1 1 0-2.334 1.167 1.167 0 0 1 0 2.334"/></symbol><symbol class="bi bi-youtube" viewBox="0 0 16 16" id="youtube"><path d="M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.01 2.01 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.01 2.01 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31 31 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.01 2.01 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A100 100 0 0 1 7.858 2zM6.4 5.209v4.818l4.157-2.408z"/></symbol><symbol class="bi bi-zoom-in" viewBox="0 0 16 16" id="zoom-in"><path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0"/><path d="M10.344 11.742q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1 6.5 6.5 0 0 1-1.398 1.4z"/><path fill-rule="evenodd" d="M6.5 3a.5.5 0 0 1 .5.5V6h2.5a.5.5 0 0 1 0 1H7v2.5a.5.5 0 0 1-1 0V7H3.5a.5.5 0 0 1 0-1H6V3.5a.5.5 0 0 1 .5-.5"/></symbol><symbol class="bi bi-zoom-out" viewBox="0 0 16 16" id="zoom-out"><path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0"/><path d="M10.344 11.742q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1 6.5 6.5 0 0 1-1.398 1.4z"/><path fill-rule="evenodd" d="M3 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/></symbol></svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/build/build-pages.mjs b/vendor/twbs/bootstrap-icons/build/build-pages.mjs
new file mode 100644
index 000000000..d41055510
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/build/build-pages.mjs
@@ -0,0 +1,64 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs/promises'
+import path from 'node:path'
+import { fileURLToPath } from 'node:url'
+import picocolors from 'picocolors'
+
+const __filename = fileURLToPath(import.meta.url)
+const __dirname = path.dirname(fileURLToPath(import.meta.url))
+
+const iconsDir = path.join(__dirname, '../icons/')
+const pagesDir = path.join(__dirname, '../docs/content/icons/')
+
+const VERBOSE = process.argv.includes('--verbose')
+
+function capitalizeFirstLetter(string) {
+ return (string.charAt(0).toUpperCase() + string.slice(1)).split('-').join(' ')
+}
+
+async function main(file) {
+ const iconBasename = path.basename(file, path.extname(file))
+ const iconTitle = capitalizeFirstLetter(iconBasename)
+ const pageName = path.join(pagesDir, `${iconBasename}.md`)
+
+ const pageTemplate = `---
+title: ${iconTitle}
+categories:
+tags:
+---
+`
+
+ try {
+ await fs.access(pageName, fs.F_OK)
+
+ if (VERBOSE) {
+ console.log(`${picocolors.cyan(iconBasename)}: Page already exists; skipping`)
+ }
+ } catch {
+ await fs.writeFile(pageName, pageTemplate)
+ console.log(picocolors.green(`${iconBasename}: Page created`))
+ }
+}
+
+(async () => {
+ try {
+ const basename = path.basename(__filename)
+ const timeLabel = picocolors.cyan(`[${basename}] finished`)
+
+ console.log(picocolors.cyan(`[${basename}] started`))
+ console.time(timeLabel)
+
+ const files = await fs.readdir(iconsDir)
+
+ await Promise.all(files.map(file => main(file)))
+
+ const filesLength = files.length
+
+ console.log(picocolors.green('\nSuccess, %s page%s prepared!'), filesLength, filesLength === 1 ? '' : 's')
+ console.timeEnd(timeLabel)
+ } catch (error) {
+ console.error(error)
+ process.exit(1)
+ }
+})()
diff --git a/vendor/twbs/bootstrap-icons/build/build-svgs.mjs b/vendor/twbs/bootstrap-icons/build/build-svgs.mjs
new file mode 100644
index 000000000..292715663
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/build/build-svgs.mjs
@@ -0,0 +1,57 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs/promises'
+import path from 'node:path'
+import process from 'node:process'
+import { fileURLToPath } from 'node:url'
+import picocolors from 'picocolors'
+import { loadConfig, optimize } from 'svgo'
+
+const __filename = fileURLToPath(import.meta.url)
+const __dirname = path.dirname(fileURLToPath(import.meta.url))
+
+const iconsDir = path.join(__dirname, '../icons/')
+
+const VERBOSE = process.argv.includes('--verbose')
+
+async function processFile(file, config) {
+ const filepath = path.join(iconsDir, file)
+ const basename = path.basename(file, '.svg')
+
+ const originalSvg = await fs.readFile(filepath, 'utf8')
+ const { data: optimizedSvg } = await optimize(originalSvg, { path: filepath, ...config })
+
+ // svgo will always add a final newline when in pretty mode
+ const resultSvg = optimizedSvg.trim()
+
+ if (resultSvg !== originalSvg) {
+ await fs.writeFile(filepath, resultSvg, 'utf8')
+ }
+
+ if (VERBOSE) {
+ console.log(`- ${basename}`)
+ }
+}
+
+(async () => {
+ try {
+ const basename = path.basename(__filename)
+ const timeLabel = picocolors.cyan(`[${basename}] finished`)
+
+ console.log(picocolors.cyan(`[${basename}] started`))
+ console.time(timeLabel)
+
+ const files = await fs.readdir(iconsDir)
+ const config = await loadConfig(path.join(__dirname, '../svgo.config.mjs'))
+
+ await Promise.all(files.map(file => processFile(file, config)))
+
+ const filesLength = files.length
+
+ console.log(picocolors.green('\nSuccess, prepared %s icon%s!'), filesLength, filesLength === 1 ? '' : 's')
+ console.timeEnd(timeLabel)
+ } catch (error) {
+ console.error(error)
+ process.exit(1)
+ }
+})()
diff --git a/vendor/twbs/bootstrap-icons/build/bump-version.mjs b/vendor/twbs/bootstrap-icons/build/bump-version.mjs
new file mode 100644
index 000000000..6fb48f27f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/build/bump-version.mjs
@@ -0,0 +1,100 @@
+#!/usr/bin/env node
+
+/*!
+ * Script to update version number references in the project.
+ * Copyright 2024 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE)
+ */
+
+import { execFile } from 'node:child_process'
+import fs from 'node:fs/promises'
+
+const VERBOSE = process.argv.includes('--verbose')
+const DRY_RUN = process.argv.includes('--dry') || process.argv.includes('--dry-run')
+
+// These are the files we only care about replacing the version
+const FILES = [
+ 'build/font/css.hbs',
+ 'build/font/scss.hbs',
+ 'hugo.yml'
+]
+
+// Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37
+function regExpQuote(string) {
+ return string.replace(/[$()*+-.?[\\\]^{|}]/g, '\\$&')
+}
+
+function regExpQuoteReplacement(string) {
+ return string.replace(/\$/g, '$$')
+}
+
+async function replaceRecursively(file, oldVersion, newVersion) {
+ const originalString = await fs.readFile(file, 'utf8')
+ const newString = originalString.replace(
+ new RegExp(regExpQuote(oldVersion), 'g'),
+ regExpQuoteReplacement(newVersion)
+ )
+
+ // No need to move any further if the strings are identical
+ if (originalString === newString) {
+ return
+ }
+
+ if (VERBOSE) {
+ console.log(`Found ${oldVersion} in ${file}`)
+ }
+
+ if (DRY_RUN) {
+ return
+ }
+
+ await fs.writeFile(file, newString, 'utf8')
+}
+
+function bumpNpmVersion(newVersion) {
+ if (DRY_RUN) {
+ return
+ }
+
+ execFile('npm', ['version', newVersion, '--no-git-tag'], { shell: true }, (error) => {
+ if (error) {
+ console.error(error)
+ process.exit(1)
+ }
+ })
+}
+
+function showUsage(args) {
+ console.error('USAGE: change-version old_version new_version [--verbose] [--dry[-run]]')
+ console.error('Got arguments:', args)
+ process.exit(1)
+}
+
+async function main(args) {
+ let [oldVersion, newVersion] = args
+
+ if (!oldVersion || !newVersion) {
+ showUsage(args)
+ }
+
+ // Strip any leading `v` from arguments because
+ // otherwise we will end up with duplicate `v`s
+ [oldVersion, newVersion] = [oldVersion, newVersion].map(arg => {
+ return arg.startsWith('v') ? arg.slice(1) : arg
+ })
+
+ if (oldVersion === newVersion) {
+ showUsage(args)
+ }
+
+ bumpNpmVersion(newVersion)
+
+ try {
+ await Promise.all(FILES.map(file => replaceRecursively(file, oldVersion, newVersion)))
+ } catch (error) {
+ console.error(error)
+ process.exit(1)
+ }
+}
+
+main(process.argv.slice(2))
diff --git a/vendor/twbs/bootstrap-icons/build/check-icons.mjs b/vendor/twbs/bootstrap-icons/build/check-icons.mjs
new file mode 100644
index 000000000..70f3dfe27
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/build/check-icons.mjs
@@ -0,0 +1,61 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs/promises'
+import path from 'node:path'
+import process from 'node:process'
+import { fileURLToPath } from 'node:url'
+import picocolors from 'picocolors'
+
+const __filename = fileURLToPath(import.meta.url)
+const __dirname = path.dirname(fileURLToPath(import.meta.url))
+
+const fontJsonPath = path.join(__dirname, '../font/bootstrap-icons.json')
+const iconsDir = path.join(__dirname, '../icons/')
+
+;(async () => {
+ try {
+ const basename = path.basename(__filename)
+ const timeLabel = picocolors.cyan(`[${basename}] finished`)
+
+ console.log(picocolors.cyan(`[${basename}] started`))
+ console.time(timeLabel)
+
+ const fontJsonString = await fs.readFile(fontJsonPath, 'utf8')
+ const fontJson = JSON.parse(fontJsonString)
+ const svgFiles = await fs.readdir(iconsDir)
+
+ const jsonIconList = Object.keys(fontJson)
+ const svgIconList = svgFiles.map(svg => path.basename(svg, '.svg'))
+
+ const onlyInJson = jsonIconList.filter(icon => !svgIconList.includes(icon))
+ const onlyInSvg = svgIconList.filter(icon => !jsonIconList.includes(icon))
+
+ if (onlyInJson.length === 0 || onlyInSvg === 0) {
+ console.log(picocolors.green('Success, found no differences!'))
+ console.timeEnd(timeLabel)
+
+ return
+ }
+
+ if (onlyInJson.length > 0) {
+ console.error(picocolors.red(`Found additional icons in ${fontJsonPath}:`))
+
+ for (const icon of onlyInJson) {
+ console.log(` - ${picocolors.red(icon)}`)
+ }
+ }
+
+ if (onlyInSvg.length > 0) {
+ console.error(picocolors.red('Found additional icons in SVG files:'))
+
+ for (const icon of onlyInSvg) {
+ console.log(` - ${picocolors.red(icon)}`)
+ }
+ }
+
+ process.exit(1)
+ } catch (error) {
+ console.error(error)
+ process.exit(1)
+ }
+})()
diff --git a/vendor/twbs/bootstrap-icons/build/font/css.hbs b/vendor/twbs/bootstrap-icons/build/font/css.hbs
new file mode 100644
index 000000000..e3271ed45
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/build/font/css.hbs
@@ -0,0 +1,30 @@
+/*!
+ * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/)
+ * Copyright 2019-2024 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE)
+ */
+
+@font-face {
+ font-display: block;
+ font-family: "{{ name }}";
+ src: {{{ fontSrc }}};
+}
+
+.{{ prefix }}::before,
+[class^="{{ prefix }}-"]::before,
+[class*=" {{ prefix }}-"]::before {
+ display: inline-block;
+ font-family: {{ name }} !important;
+ font-style: normal;
+ font-weight: normal !important;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ vertical-align: -.125em;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+{{# each codepoints }}
+.{{ ../prefix }}-{{ @key }}::before { content: "\\{{ codepoint this }}"; }
+{{/ each }}
diff --git a/vendor/twbs/bootstrap-icons/build/font/scss.hbs b/vendor/twbs/bootstrap-icons/build/font/scss.hbs
new file mode 100644
index 000000000..e7743cf1d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/build/font/scss.hbs
@@ -0,0 +1,43 @@
+/*!
+ * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/)
+ * Copyright 2019-2024 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE)
+ */
+
+${{ name }}-font: "{{ name }}" !default;
+${{ name }}-font-dir: "{{ fontsUrl }}" !default;
+${{ name }}-font-file: "#{${{ name }}-font-dir}/#{${{ name }}-font}" !default;
+${{ name }}-font-hash: "24e3eb84d0bcaf83d77f904c78ac1f47" !default;
+${{ name }}-font-src: url("#{${{ name }}-font-file}.woff2?#{${{ name }}-font-hash}") format("woff2"),
+ url("#{${{ name }}-font-file}.woff?#{${{ name }}-font-hash}") format("woff") !default;
+
+@font-face {
+ font-display: block;
+ font-family: ${{ name }}-font;
+ src: ${{ name }}-font-src;
+}
+
+.{{ prefix }}::before,
+[class^="{{ prefix }}-"]::before,
+[class*=" {{ prefix }}-"]::before {
+ display: inline-block;
+ font-family: ${{ name }}-font !important;
+ font-style: normal;
+ font-weight: normal !important;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ vertical-align: -.125em;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+${{ name }}-map: (
+{{# each codepoints }}
+ "{{ @key }}": "\\{{ codepoint this }}",
+{{/ each }}
+);
+
+@each $icon, $codepoint in ${{ name }}-map {
+ .{{ prefix }}-#{$icon}::before { content: $codepoint; }
+}
diff --git a/vendor/twbs/bootstrap-icons/build/vnu-jar.mjs b/vendor/twbs/bootstrap-icons/build/vnu-jar.mjs
new file mode 100644
index 000000000..295308067
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/build/vnu-jar.mjs
@@ -0,0 +1,50 @@
+#!/usr/bin/env node
+
+/*!
+ * Script to run vnu-jar if Java is available.
+ * Copyright 2017-2024 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+
+import { execFile, spawn } from 'node:child_process'
+import vnu from 'vnu-jar'
+
+execFile('java', ['-version'], (error, stdout, stderr) => {
+ if (error) {
+ console.error('Skipping vnu-jar test; Java is probably missing.')
+ console.error(error)
+ return
+ }
+
+ console.log('Running vnu-jar validation...')
+
+ const is32bitJava = !/64-Bit/.test(stderr)
+
+ // vnu-jar accepts multiple ignores joined with a `|`.
+ // Also note that the ignores are string regular expressions.
+ const ignores = [
+ ].join('|')
+
+ const args = [
+ '-jar',
+ `"${vnu}"`,
+ '--asciiquotes',
+ '--skip-non-html',
+ '--Werror',
+ `--filterpattern "${ignores}"`,
+ '_site/'
+ ]
+
+ // For the 32-bit Java we need to pass `-Xss512k`
+ if (is32bitJava) {
+ args.splice(0, 0, '-Xss512k')
+ }
+
+ console.log(`command used: java ${args.join(' ')}`)
+
+ return spawn('java', args, {
+ shell: true,
+ stdio: 'inherit'
+ })
+ .on('exit', process.exit)
+})
diff --git a/vendor/twbs/bootstrap-icons/composer.json b/vendor/twbs/bootstrap-icons/composer.json
new file mode 100644
index 000000000..587fa8e10
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/composer.json
@@ -0,0 +1,21 @@
+{
+ "name": "twbs/bootstrap-icons",
+ "description": "Official open source SVG icon library for Bootstrap",
+ "keywords": [
+ "bootstrap",
+ "icons",
+ "svg",
+ "icon font"
+ ],
+ "homepage": "https://icons.getbootstrap.com/",
+ "authors": [
+ {
+ "name": "Mark Otto",
+ "email": "markdotto@gmail.com"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/twbs/icons/issues"
+ },
+ "license": "MIT"
+}
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/js/application.js b/vendor/twbs/bootstrap-icons/docs/assets/js/application.js
new file mode 100644
index 000000000..571f477cc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/js/application.js
@@ -0,0 +1,65 @@
+import ClipboardJS from 'clipboard'
+
+(function () {
+ const btnHtml = [
+ '<div class="bd-clipboard">',
+ '<button type="button" class="btn-clipboard" title="Copy to clipboard">',
+ '<i class="bi bi-clipboard" aria-hidden="true"></i>',
+ '</button>',
+ '</div>'].join('')
+
+ document.querySelectorAll('div.highlight')
+ .forEach(element => {
+ element.insertAdjacentHTML('beforebegin', btnHtml)
+ })
+
+ const clipboard = new ClipboardJS('.btn-clipboard', {
+ target(trigger) {
+ return trigger.parentNode.nextElementSibling
+ }
+ })
+
+ clipboard.on('success', event => {
+ const icon = event.trigger.querySelector('.bi')
+ const originalTitle = event.trigger.title
+
+ event.clearSelection()
+ icon.classList.replace('bi-clipboard', 'bi-check2')
+ event.trigger.title = 'Copied!'
+
+ setTimeout(() => {
+ icon.classList.replace('bi-check2', 'bi-clipboard')
+ event.trigger.title = originalTitle
+ }, 2000)
+ })
+
+ clipboard.on('error', () => {
+ const modifierKey = /mac/i.test(navigator.userAgent) ? '\u2318' : 'Ctrl-'
+ const fallbackMsg = `Press ${modifierKey}C to copy`
+ const errorElement = document.getElementById('copy-error-callout')
+
+ if (!errorElement) {
+ return
+ }
+
+ errorElement.classList.remove('d-none')
+ errorElement.insertAdjacentHTML('afterbegin', fallbackMsg)
+ })
+
+ const searchInput = document.getElementById('search')
+ if (searchInput) {
+ searchInput.addEventListener('keydown', event => {
+ if (event.key === 'Enter') {
+ event.preventDefault()
+ }
+ })
+ }
+
+ // Disable empty links in docs
+ document.querySelectorAll('[href="#"]')
+ .forEach(link => {
+ link.addEventListener('click', event => {
+ event.preventDefault()
+ })
+ })
+})()
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/js/color-modes.js b/vendor/twbs/bootstrap-icons/docs/assets/js/color-modes.js
new file mode 100644
index 000000000..f5af3e2bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/js/color-modes.js
@@ -0,0 +1,79 @@
+/*!
+ * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
+ * Copyright 2011-2023 The Bootstrap Authors
+ * Licensed under the Creative Commons Attribution 3.0 Unported License.
+ */
+
+(() => {
+ const getStoredTheme = () => localStorage.getItem('theme')
+ const setStoredTheme = theme => localStorage.setItem('theme', theme)
+
+ const getPreferredTheme = () => {
+ const storedTheme = getStoredTheme()
+ if (storedTheme) {
+ return storedTheme
+ }
+
+ return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
+ }
+
+ const setTheme = theme => {
+ if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
+ document.documentElement.setAttribute('data-bs-theme', 'dark')
+ } else {
+ document.documentElement.setAttribute('data-bs-theme', theme)
+ }
+ }
+
+ setTheme(getPreferredTheme())
+
+ const showActiveTheme = (theme, focus = false) => {
+ const themeSwitcher = document.querySelector('#bd-theme')
+
+ if (!themeSwitcher) {
+ return
+ }
+
+ const themeSwitcherText = document.querySelector('#bd-theme-text')
+ const activeThemeIcon = document.querySelector('.theme-icon-active use')
+ const btnToActive = document.querySelector(`[data-bs-theme-value="${theme}"]`)
+ const svgOfActiveBtn = btnToActive.querySelector('svg use').getAttribute('href')
+
+ document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
+ element.classList.remove('active')
+ element.setAttribute('aria-pressed', 'false')
+ })
+
+ btnToActive.classList.add('active')
+ btnToActive.setAttribute('aria-pressed', 'true')
+ activeThemeIcon.setAttribute('href', svgOfActiveBtn)
+ const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})`
+ themeSwitcher.setAttribute('aria-label', themeSwitcherLabel)
+
+ if (focus) {
+ themeSwitcher.focus()
+ }
+ }
+
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
+ const storedTheme = getStoredTheme()
+ if (storedTheme !== 'light' && storedTheme !== 'dark') {
+ setTheme(getPreferredTheme())
+ }
+ })
+
+ window.addEventListener('DOMContentLoaded', () => {
+ showActiveTheme(getPreferredTheme())
+
+ document.querySelectorAll('[data-bs-theme-value]')
+ .forEach(toggle => {
+ toggle.addEventListener('click', () => {
+ const theme = toggle.getAttribute('data-bs-theme-value')
+ localStorage.setItem('theme', theme)
+ setStoredTheme(theme)
+ setTheme(theme)
+ showActiveTheme(theme, true)
+ })
+ })
+ })
+})()
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/js/search.js b/vendor/twbs/bootstrap-icons/docs/assets/js/search.js
new file mode 100644
index 000000000..ab4ee541e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/js/search.js
@@ -0,0 +1,63 @@
+import Fuse from 'fuse.js'
+
+(function () {
+ const iconsBody = document.querySelector('#icons-body')
+
+ if (!iconsBody) return
+
+ const searchInput = iconsBody.querySelector('#search')
+ const iconListContainer = iconsBody.querySelector('#icons-list')
+ const iconElementList = Array.from(iconListContainer.children)
+
+ const iconDataList = iconElementList.map(element => ({
+ name: element.dataset.name,
+ categories: element.dataset.categories.split(' '),
+ tags: element.dataset.tags.split(' ')
+ }))
+
+ const fuse = new Fuse(iconDataList, {
+ ignoreLocation: true,
+ useExtendedSearch: true,
+ shouldSort: false,
+ keys: ['name', 'categories', 'tags'],
+ threshold: 0
+ })
+
+ function search(searchTerm) {
+ const trimmedSearchTerm = searchTerm ? searchTerm.trim() : ''
+
+ iconListContainer.innerHTML = ''
+ if (trimmedSearchTerm.length > 0) {
+ const searchResult = fuse.search(trimmedSearchTerm)
+ const resultElements = searchResult.map(result => iconElementList[result.refIndex])
+ iconListContainer.append(...resultElements)
+ } else {
+ iconListContainer.append(...iconElementList)
+ }
+
+ const newUrl = new URL(window.location)
+ if (trimmedSearchTerm.length > 0) {
+ newUrl.searchParams.set('q', trimmedSearchTerm)
+ } else {
+ newUrl.searchParams.delete('q')
+ }
+
+ window.history.replaceState(null, null, newUrl)
+ }
+
+ let timeout
+ searchInput.addEventListener('input', () => {
+ clearTimeout(timeout)
+ timeout = setTimeout(() => {
+ search(searchInput.value)
+ }, 250)
+ })
+
+ const query = new URLSearchParams(window.location.search).get('q')
+ if (!query || query.length === 0) return
+
+ const trimmedQuery = query.trim()
+ search(trimmedQuery)
+ searchInput.value = trimmedQuery
+ document.querySelector('#content').scrollIntoView()
+})()
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/scss/_ads.scss b/vendor/twbs/bootstrap-icons/docs/assets/scss/_ads.scss
new file mode 100644
index 000000000..27612c0a9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/scss/_ads.scss
@@ -0,0 +1,54 @@
+// stylelint-disable-next-line selector-max-id
+#carbonads {
+ max-width: 28rem;
+ padding: .75rem;
+ margin-right: auto;
+ margin-left: auto;
+ overflow: auto;
+ background-color: var(--bs-tertiary-bg);
+ border-radius: .25rem;
+
+ @media (min-width: 992px) {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+
+.carbon-img {
+ float: left;
+ margin-right: .75rem;
+
+ @media (min-width: 768px) {
+ margin-bottom: .5rem;
+ }
+
+ @media (min-width: 992px) {
+ margin-bottom: 0;
+ }
+}
+
+.carbon-text,
+.carbon-poweredby {
+ display: block;
+ color: var(--bs-body-color);
+
+ &:hover,
+ &:focus {
+ color: var(--bs-body-color);
+ text-decoration: none;
+ }
+}
+
+.carbon-text {
+ margin-bottom: .5rem;
+ text-decoration: none;
+
+ @media (min-width: 768px) {
+ font-size: .875rem;
+ }
+}
+
+.carbon-poweredby {
+ margin-top: .75rem;
+ font-size: .875rem;
+}
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/scss/_buttons.scss b/vendor/twbs/bootstrap-icons/docs/assets/scss/_buttons.scss
new file mode 100644
index 000000000..13bd6e48a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/scss/_buttons.scss
@@ -0,0 +1,45 @@
+// Buttons
+//
+// Custom buttons for the docs.
+
+// scss-docs-start btn-css-vars-example
+.btn-bd-primary {
+ --bs-btn-font-weight: 600;
+ --bs-btn-color: var(--bs-white);
+ --bs-btn-bg: var(--bd-violet);
+ --bs-btn-border-color: var(--bd-violet);
+ --bs-btn-border-radius: .5rem;
+ --bs-btn-hover-color: var(--bs-white);
+ --bs-btn-hover-bg: #{shade-color($bd-violet, 10%)};
+ --bs-btn-hover-border-color: #{shade-color($bd-violet, 10%)};
+ --bs-btn-focus-shadow-rgb: var(--bd-violet-rgb);
+ --bs-btn-active-color: var(--bs-btn-hover-color);
+ --bs-btn-active-bg: #{shade-color($bd-violet, 20%)};
+ --bs-btn-active-border-color: #{shade-color($bd-violet, 20%)};
+}
+// scss-docs-end btn-css-vars-example
+
+.btn-bd-accent {
+ --bs-btn-font-weight: 600;
+ --bs-btn-color: var(--bd-accent);
+ --bs-btn-border-color: var(--bd-accent);
+ --bs-btn-hover-color: var(--bd-dark);
+ --bs-btn-hover-bg: var(--bd-accent);
+ --bs-btn-hover-border-color: var(--bd-accent);
+ --bs-btn-focus-shadow-rgb: var(--bd-accent-rgb);
+ --bs-btn-active-color: var(--bs-btn-hover-color);
+ --bs-btn-active-bg: var(--bs-btn-hover-bg);
+ --bs-btn-active-border-color: var(--bs-btn-hover-border-color);
+}
+
+.btn-bd-light {
+ --bs-btn-color: var(--bs-gray-600);
+ --bs-btn-border-color: var(--bs-gray-400);
+ --bs-btn-hover-color: var(--bd-violet);
+ --bs-btn-hover-border-color: var(--bd-violet);
+ --bs-btn-active-color: var(--bd-violet);
+ --bs-btn-active-bg: var(--bs-white);
+ --bs-btn-active-border-color: var(--bd-violet);
+ --bs-btn-focus-border-color: var(--bd-violet);
+ --bs-btn-focus-shadow-rgb: var(--bd-violet-rgb);
+}
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/scss/_clipboard-js.scss b/vendor/twbs/bootstrap-icons/docs/assets/scss/_clipboard-js.scss
new file mode 100644
index 000000000..232b7f4dc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/scss/_clipboard-js.scss
@@ -0,0 +1,35 @@
+// clipboard.js
+//
+// JS-based `Copy` buttons for code snippets.
+
+.bd-clipboard {
+ position: relative;
+ display: none;
+ float: right;
+
+ + .highlight {
+ margin-top: 0;
+ }
+
+ @media (min-width: 768px) {
+ display: block;
+ }
+}
+
+.btn-clipboard {
+ position: absolute;
+ top: .75em;
+ right: .5em;
+ z-index: 10;
+ display: block;
+ padding: .5em .75em .625em;
+ line-height: 1;
+ color: var(--bs-body-color);
+ background-color: var(--bs-tertiary-bg);
+ border: 0;
+ border-radius: .25rem;
+
+ &:hover {
+ color: var(--bs-link-hover-color);
+ }
+}
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/scss/_footer.scss b/vendor/twbs/bootstrap-icons/docs/assets/scss/_footer.scss
new file mode 100644
index 000000000..42e1ca051
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/scss/_footer.scss
@@ -0,0 +1,16 @@
+//
+// Footer
+//
+
+.bd-footer {
+ a {
+ color: var(--bs-body-color);
+ text-decoration: none;
+
+ &:hover,
+ &:focus {
+ color: var(--bs-link-hover-color);
+ text-decoration: underline;
+ }
+ }
+}
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/scss/_navbar.scss b/vendor/twbs/bootstrap-icons/docs/assets/scss/_navbar.scss
new file mode 100644
index 000000000..c16ada791
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/scss/_navbar.scss
@@ -0,0 +1,113 @@
+.bd-navbar {
+ padding: .75rem 0;
+ background-color: transparent;
+ background-image: linear-gradient(to bottom, rgba(var(--bd-violet-rgb), 1), rgba(var(--bd-violet-rgb), .95));
+ box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15), inset 0 -1px 0 rgba(0, 0, 0, .15);
+
+ .bi {
+ width: 1em;
+ height: 1em;
+ }
+
+ .navbar-toggler {
+ padding: 0;
+ margin-right: -.5rem;
+ border: 0;
+
+ &:first-child {
+ margin-left: -.5rem;
+ }
+
+ .bi {
+ width: 1.5rem;
+ height: 1.5rem;
+ }
+
+ &:focus {
+ box-shadow: none;
+ }
+ }
+
+ .navbar-brand {
+ transition: .2s ease-in-out transform;
+
+ &:hover {
+ transform: rotate(-5deg) scale(1.1);
+ }
+ }
+
+ .navbar-toggler,
+ .nav-link {
+ padding-right: $spacer * .25;
+ padding-left: $spacer * .25;
+ color: rgba($white, .85);
+
+ &:hover,
+ &:focus {
+ color: $white;
+ }
+
+ &.active {
+ font-weight: 600;
+ color: $white;
+ }
+ }
+
+ .navbar-nav-svg {
+ display: inline-block;
+ vertical-align: -.125rem;
+ }
+
+ .offcanvas-lg {
+ background-color: var(--bd-violet);
+ border-left: 0;
+
+ @media (max-width: 992px) {
+ box-shadow: $box-shadow-lg;
+ }
+ }
+
+ .dropdown-menu {
+ --bs-dropdown-min-width: 12rem;
+ --bs-dropdown-padding-x: .25rem;
+ --bs-dropdown-padding-y: .25rem;
+ --bs-dropdown-link-hover-bg: rgba(var(--bd-violet-rgb), .1);
+ --bs-dropdown-link-active-bg: rgba(var(--bd-violet-rgb), 1);
+ @include rfs(.875rem, --bs-dropdown-font-size);
+ @include font-size(.875rem);
+ @include border-radius(.5rem);
+ box-shadow: $dropdown-box-shadow;
+
+ li + li {
+ margin-top: .125rem;
+ }
+
+ .dropdown-item {
+ @include border-radius(.25rem);
+
+ &:active {
+ .bi {
+ color: inherit !important; // stylelint-disable-line declaration-no-important
+ }
+ }
+ }
+
+ .active {
+ font-weight: 600;
+
+ .bi {
+ display: block !important; // stylelint-disable-line declaration-no-important
+ }
+ }
+ }
+
+ .dropdown-menu-end {
+ --bs-dropdown-min-width: 8rem;
+ }
+}
+
+@include color-mode(dark) {
+ .bd-navbar {
+ box-shadow: 0 .5rem 1rem rgba($black, .15), inset 0 -1px 0 rgba($white, .15);
+ }
+}
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/scss/_skippy.scss b/vendor/twbs/bootstrap-icons/docs/assets/scss/_skippy.scss
new file mode 100644
index 000000000..459c203a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/scss/_skippy.scss
@@ -0,0 +1,17 @@
+.skippy {
+ display: block;
+ padding: 1em;
+ color: #fff;
+ text-align: center;
+ background-color: $bd-purple;
+ outline: 0;
+
+ &:hover {
+ color: #fff;
+ }
+}
+
+.skippy-text {
+ padding: .5em;
+ outline: 1px dotted;
+}
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/scss/_syntax.scss b/vendor/twbs/bootstrap-icons/docs/assets/scss/_syntax.scss
new file mode 100644
index 000000000..092307e05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/scss/_syntax.scss
@@ -0,0 +1,135 @@
+:root,
+[data-bs-theme="light"] {
+ --base00: #fff;
+ --base01: #f5f5f5;
+ --base02: #c8c8fa;
+ --base03: #565c64;
+ --base04: #030303;
+ --base05: #333;
+ --base06: #fff;
+ --base07: #9a6700;
+ --base08: #bc4c00;
+ --base09: #087990;
+ --base0A: #795da3;
+ --base0B: #183691;
+ --base0C: #183691;
+ --base0D: #795da3;
+ --base0E: #a71d5d;
+ --base0F: #333;
+}
+
+@include color-mode(dark, true) {
+ --base00: #282c34;
+ --base01: #353b45;
+ --base02: #3e4451;
+ --base03: #868e96;
+ --base04: #565c64;
+ --base05: #abb2bf;
+ --base06: #b6bdca;
+ --base07: #d19a66;
+ --base08: #e06c75;
+ --base09: #d19a66;
+ --base0A: #e5c07b;
+ --base0B: #98c379;
+ --base0C: #56b6c2;
+ --base0D: #61afef;
+ --base0E: #c678dd;
+ --base0F: #be5046;
+}
+
+.hl { background-color: var(--base02); }
+.c { color: var(--base03); }
+.err { color: var(--base08); }
+.k { color: var(--base0E); }
+.l { color: var(----base09); }
+.n { color: var(--base08); }
+.o { color: var(--base05); }
+.p { color: var(--base05); }
+.cm { color: var(--base04); }
+.cp { color: var(--base08); }
+.c1 { color: var(--base03); }
+.cs { color: var(--base04); }
+.gd { color: var(--base08); }
+.ge { font-style: italic; }
+.gh {
+ font-weight: 600;
+ color: #fff;
+}
+.gi { color: var(--bs-success); }
+.gp {
+ font-weight: 600;
+ color: var(--base04);
+}
+.gs { font-weight: 600; }
+.gu {
+ font-weight: 600;
+ color: var(--base0C);
+}
+.kc { color: var(--base0E); }
+.kd { color: var(--base0E); }
+.kn { color: var(--base0C); }
+.kp { color: var(--base0E); }
+.kr { color: var(--base0E); }
+.kt { color: var(--base0A); }
+.ld { color: var(--base0C); }
+.m { color: var(--base09); }
+.s { color: var(--base0C); }
+.na { color: var(--base0A); }
+.nb { color: var(--base05); }
+.nc { color: var(--base07); }
+.no { color: var(--base08); }
+.nd { color: var(--base07); }
+.ni { color: var(--base08); }
+.ne { color: var(--base08); }
+.nf { color: var(--base0B); }
+.nl { color: var(--base05); }
+.nn { color: var(--base0A); }
+.nx { color: var(--base0A); }
+.py { color: var(--base08); }
+.nt { color: var(--base08); }
+.nv { color: var(--base08); }
+.ow { color: var(--base0C); }
+.w { color: #fff; }
+.mf { color: var(--base09); }
+.mh { color: var(--base09); }
+.mi { color: var(--base09); }
+.mo { color: var(--base09); }
+.sb { color: var(--base0C); }
+.sc { color: #fff; }
+.sd { color: var(--base04); }
+.s2 { color: var(--base0C); }
+.se { color: var(--base09); }
+.sh { color: var(--base0C); }
+.si { color: var(--base09); }
+.sx { color: var(--base0C); }
+.sr { color: var(--base0C); }
+.s1 { color: var(--base0C); }
+.ss { color: var(--base0C); }
+.bp { color: var(--base05); }
+.vc { color: var(--base08); }
+.vg { color: var(--base08); }
+.vi { color: var(--base08); }
+.il { color: var(--base09); }
+
+// Color commas in rgba() values
+.m + .o { color: var(--base03); }
+
+// Fix bash
+.language-sh .c { color: var(--base03); }
+
+.chroma {
+ .language-bash,
+ .language-sh {
+ .line::before {
+ color: var(--base03);
+ content: "$ ";
+ user-select: none;
+ }
+ }
+
+ .language-powershell::before {
+ color: var(--base0C);
+ content: "PM> ";
+ user-select: none;
+ }
+}
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/scss/_variables.scss b/vendor/twbs/bootstrap-icons/docs/assets/scss/_variables.scss
new file mode 100644
index 000000000..167b89df1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/scss/_variables.scss
@@ -0,0 +1,15 @@
+// Local docs variables
+$bd-purple: #4c0bce;
+$bd-violet: lighten(saturate($bd-purple, 5%), 15%);
+$bd-accent: #ffe484;
+$bd-gutter-x: 3rem;
+
+:root {
+ --bd-purple: #{$bd-purple};
+ --bd-violet: #{$bd-violet};
+ --bd-accent: #{$bd-accent};
+ --bd-violet-rgb: #{to-rgb($bd-violet)};
+ --bd-accent-rgb: #{to-rgb($bd-accent)};
+ --bd-pink-rgb: #{to-rgb($pink-500)};
+ --bd-teal-rgb: #{to-rgb($teal-500)};
+}
diff --git a/vendor/twbs/bootstrap-icons/docs/assets/scss/docs.scss b/vendor/twbs/bootstrap-icons/docs/assets/scss/docs.scss
new file mode 100644
index 000000000..a3ae687e9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/assets/scss/docs.scss
@@ -0,0 +1,237 @@
+@import "bootstrap/functions";
+@import "bootstrap/variables";
+@import "bootstrap/variables-dark";
+@import "bootstrap/maps";
+@import "bootstrap/mixins";
+@import "bootstrap/utilities";
+@import "bootstrap/root";
+@import "bootstrap/reboot";
+@import "bootstrap/type";
+@import "bootstrap/images";
+@import "bootstrap/containers";
+@import "bootstrap/grid";
+@import "bootstrap/tables";
+@import "bootstrap/forms";
+@import "bootstrap/buttons";
+@import "bootstrap/transitions";
+@import "bootstrap/dropdown";
+@import "bootstrap/button-group";
+@import "bootstrap/nav";
+@import "bootstrap/navbar";
+// @import "bootstrap/card";
+// @import "bootstrap/accordion";
+@import "bootstrap/breadcrumb";
+// @import "bootstrap/pagination";
+// @import "bootstrap/badge";
+// @import "bootstrap/alert";
+// @import "bootstrap/progress";
+// @import "bootstrap/list-group";
+@import "bootstrap/close";
+// @import "bootstrap/toasts";
+// @import "bootstrap/modal";
+// @import "bootstrap/tooltip";
+// @import "bootstrap/popover";
+// @import "bootstrap/carousel";
+// @import "bootstrap/spinners";
+@import "bootstrap/offcanvas";
+// @import "bootstrap/placeholders";
+@import "bootstrap/helpers";
+@import "bootstrap/utilities/api";
+
+@import "variables";
+@import "buttons";
+@import "clipboard-js";
+@import "navbar";
+@import "skippy";
+@import "footer";
+@import "syntax";
+@import "ads";
+
+:root {
+ color-scheme: light dark;
+}
+
+.bd-gutter {
+ --bs-gutter-x: #{$bd-gutter-x};
+}
+
+.bi {
+ display: inline-block;
+ vertical-align: -.125em;
+ fill: currentcolor;
+}
+
+.hero-notice {
+ color: var(--bs-info-text);
+ background-color: var(--bs-info-bg-subtle);
+ border: 1px solid var(--bs-info-border-subtle);
+
+ @media (min-width: 540px) {
+ border-radius: 5em !important; // stylelint-disable-line declaration-no-important
+ }
+}
+
+.btn-figma {
+ --bs-btn-color: var(--bs-emphasis-color);
+ --bs-btn-border-color: var(--bs-emphasis-color);
+ --bs-btn-hover-color: var(--bs-body-bg);
+ --bs-btn-hover-bg: var(--bs-emphasis-color);
+ --bs-btn-hover-border-color: var(--bs-btn-hover-bg);
+}
+
+.highlight {
+ position: relative;
+ padding: 1.25rem;
+ margin-bottom: 1rem;
+ background-color: var(--bs-tertiary-bg);
+ border-radius: var(--bs-border-radius);
+
+ pre {
+ padding: 0;
+ margin-bottom: 0;
+ white-space: pre;
+ background-color: transparent;
+ border: 0;
+ }
+
+ pre code {
+ @include font-size(inherit);
+ word-wrap: normal;
+ }
+}
+
+
+.bd-example {
+ padding: 1.25rem;
+ border: 1px solid var(--bs-border-color);
+ border-top-left-radius: .25rem;
+ border-top-right-radius: .25rem;
+
+ + .bd-clipboard + .highlight {
+ border: 1px solid var(--bs-border-color);
+ border-width: 0 1px 1px;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ }
+}
+
+.f0 {
+ font-size: 2rem;
+
+ @media (min-width: 520px) {
+ font-size: 3rem;
+ }
+}
+.f3 {
+ font-size: 1.25rem;
+
+ @media (min-width: 520px) {
+ font-size: 1.5rem;
+ }
+}
+.f5 {
+ font-size: 1rem;
+}
+
+.hero {
+ border-bottom: 1px solid var(--bs-border-color-translucent);
+
+ .highlight {
+ margin-bottom: 0;
+ background-color: var(--bs-tertiary-bg);
+ border-radius: .5rem;
+
+ pre {
+ margin-bottom: 0;
+
+ @media (min-width: 768px) {
+ padding-right: 4em;
+ }
+ }
+ }
+
+ .btn-clipboard {
+ top: .5em;
+ background-color: var(--bs-tertiary-bg);
+ }
+
+ .btn {
+ padding: 1rem 1.25rem;
+ border-radius: .5rem;
+ }
+
+ hr {
+ max-width: 100px;
+ }
+}
+
+.icon-search {
+ @media (min-width: 768px) {
+ width: 35%;
+ }
+}
+
+.list {
+ font-size: 2rem;
+
+ // stylelint-disable declaration-no-important
+ a:hover,
+ a:focus {
+ &,
+ .name {
+ color: var(--bs-link-hover-color) !important;
+ }
+ }
+ // stylelint-enable declaration-no-important
+
+ &:empty::before {
+ display: block;
+ width: 100%;
+ padding: 100px 2rem;
+ margin-right: 15px;
+ margin-left: 15px;
+ color: var(--bs-secondary-color);
+ text-align: center;
+ content: "Nothing found, try searching again.";
+ background-color: var(--bs-secondary-bg);
+ border-radius: .5rem;
+ }
+}
+
+.btn-group > .btn {
+ flex-shrink: 0;
+}
+
+.name {
+ font-size: .8125rem;
+}
+
+@media (min-width: 1200px) {
+ .row-cols-xl-8 {
+ > * {
+ flex: 0 0 12.5%;
+ max-width: 12.5%;
+ }
+ }
+}
+
+.icon-demo {
+ background-color: var(--bs-tertiary-bg);
+ background-image: radial-gradient(circle, var(--bs-border-color) 1px, rgba(0, 0, 0, 0) 1px);
+ background-size: 1rem 1rem;
+}
+
+.icon-demo,
+.icon-demo-examples {
+ .bi {
+ width: 1em;
+ height: 1em;
+ }
+}
+
+// stylelint-disable declaration-no-important
+.py-6 {
+ padding-top: 4.5rem !important;
+ padding-bottom: 4.5rem !important;
+}
+// stylelint-enable declaration-no-important
diff --git a/vendor/twbs/bootstrap-icons/docs/content/404.md b/vendor/twbs/bootstrap-icons/docs/content/404.md
new file mode 100644
index 000000000..5beda81f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/404.md
@@ -0,0 +1,13 @@
+---
+title: "404 - File not found"
+description: ""
+layout: 404
+url: /404.html
+robots: noindex,follow
+sitemap_exclude: true
+---
+
+<div class="text-center py-5">
+ <h1 class="display-1">404</h1>
+ <h2>File not found</h2>
+</div>
diff --git a/vendor/twbs/bootstrap-icons/docs/content/_index.md b/vendor/twbs/bootstrap-icons/docs/content/_index.md
new file mode 100644
index 000000000..8731dd211
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/_index.md
@@ -0,0 +1,227 @@
+---
+aliases:
+ - /font/
+---
+
+## Install
+
+Bootstrap Icons are published to npm, but they can also be manually downloaded if needed.
+
+<div class="row my-4">
+ <div class="col-md-4">
+{{< md >}}
+### Package manager
+Install [Bootstrap Icons](https://www.npmjs.com/package/bootstrap-icons)—including SVGs, icon sprite, and icon fonts—with npm or Composer. Then, choose how you'd like to include the icons with the [usage instructions](#usage).
+
+{{< highlight sh >}}
+npm i bootstrap-icons
+{{< /highlight >}}
+{{< highlight sh >}}
+composer require twbs/bootstrap-icons
+{{< /highlight >}}
+{{< /md >}}
+ </div>
+ <div class="col-md-4">
+{{< md >}}
+### Download
+[Releases are published on GitHub](https://github.com/twbs/icons/releases/) and include icon SVGs, fonts, license, and readme. Our `package.json` is also included, though our npm scripts are primarily available for our development workflows.
+
+<a class="btn btn-outline-primary" href="https://github.com/twbs/icons/releases/latest/">Download latest ZIP</a>
+{{< /md >}}
+ </div>
+ <div class="col-md-4">
+{{< md >}}
+### CDN
+Include the icon fonts stylesheet—in your website `<head>` or via `@import` in CSS—from jsDelivr and get started in seconds. [See icon font docs](#icon-font) for examples.
+
+{{< highlight html >}}
+<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@{{< param version >}}/font/bootstrap-icons.min.css">
+{{< /highlight >}}
+
+{{< highlight css >}}
+@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@{{< param version >}}/font/bootstrap-icons.min.css");
+{{< /highlight >}}
+{{< /md >}}
+ </div>
+</div>
+
+## Usage
+
+Bootstrap Icons are SVGs, so you can include them into your HTML in a few ways depending on how your project is setup. We recommend using a `width: 1em` (and optionally `height: 1em`) for easy resizing via `font-size`.
+
+<div class="row my-4">
+ <div class="col-md-4">
+{{< md >}}
+### Embedded
+Embed your icons within the HTML of your page (as opposed to an external image file). Here we've used a custom `width` and `height`.
+{{< /md >}}
+ </div>
+ <div class="col-md-8">
+ {{< example >}}<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-heart-eyes" viewBox="0 0 16 16"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/><path d="M11.315 10.014a.5.5 0 0 1 .548.736A4.498 4.498 0 0 1 7.965 13a4.498 4.498 0 0 1-3.898-2.25.5.5 0 0 1 .548-.736h.005l.017.005.067.015.252.055c.215.046.515.108.857.169.693.124 1.522.242 2.152.242.63 0 1.46-.118 2.152-.242a26.58 26.58 0 0 0 1.109-.224l.067-.015.017-.004.005-.002zM4.756 4.566c.763-1.424 4.02-.12.952 3.434-4.496-1.596-2.35-4.298-.952-3.434zm6.488 0c1.398-.864 3.544 1.838-.952 3.434-3.067-3.554.19-4.858.952-3.434z"/></svg>{{< /example >}}
+ </div>
+</div>
+
+<div class="row my-4">
+ <div class="col-md-4">
+{{< md >}}
+### Sprite
+Use the SVG sprite to insert any icon through the `<use>` element. Use the icon's filename as the fragment identifier (e.g., `toggles` is `#toggles`). SVG sprites allow you to reference an external file similar to an `<img>` element, but with the power of `currentColor` for easy theming.
+
+**Heads up!** There's an issue with Chrome where [`<use>` doesn't work across domains](https://bugs.chromium.org/p/chromium/issues/detail?id=470601).
+{{< /md >}}
+ </div>
+ <div class="col-md-8">
+
+<div class="bd-example" style="font-size: 32px;">
+ <i class="bi bi-heart-fill"></i>
+ <i class="bi bi-toggles"></i>
+ <i class="bi bi-shop"></i>
+</div>
+{{< highlight html >}}
+<svg class="bi" width="32" height="32" fill="currentColor">
+ <use xlink:href="bootstrap-icons.svg#heart-fill"/>
+</svg>
+<svg class="bi" width="32" height="32" fill="currentColor">
+ <use xlink:href="bootstrap-icons.svg#toggles"/>
+</svg>
+<svg class="bi" width="32" height="32" fill="currentColor">
+ <use xlink:href="bootstrap-icons.svg#shop"/>
+</svg>
+{{< /highlight >}}
+ </div>
+</div>
+
+<div class="row my-4">
+ <div class="col-md-4">
+{{< md >}}
+### External image
+Copy the Bootstrap Icons SVGs to your directory of choice and reference them like normal images with the `<img>` element.
+{{< /md >}}
+ </div>
+ <div class="col-md-8">
+ {{< example >}}<img src="/assets/icons/bootstrap.svg" alt="Bootstrap" width="32" height="32">{{< /example >}}
+ </div>
+</div>
+
+<div class="row my-4">
+ <div class="col-md-4">
+{{< md >}}
+### Icon font
+Icon fonts with classes for every icon are also included for Bootstrap Icons. Include the icon web fonts in your page via CSS, then reference the class names as needed in your HTML (e.g., `<i class="bi-alarm-clock"></i>`).
+
+Use `font-size` and `color` to change the icon appearance.
+{{< /md >}}
+ </div>
+ <div class="col-md-8">
+ {{< example >}}<i class="bi-alarm"></i>{{< /example >}}
+ {{< example >}}<i class="bi-alarm" style="font-size: 2rem; color: cornflowerblue;"></i>{{< /example >}}
+ </div>
+</div>
+
+<div class="row">
+ <div class="col-md-4">
+{{< md >}}
+### CSS
+You can also use the SVG within your CSS (**be sure to escape any characters**, such as `#` to `%23` when specifying hex color values). When no dimensions are specified via `width` and `height` on the `<svg>`, the icon will fill the available space.
+
+The `viewBox` attribute is required if you wish to resize icons with `background-size`. Note that the `xmlns` attribute is required.
+{{< /md >}}
+ </div>
+ <div class="col-md-8">
+{{< highlight css >}}
+.bi::before {
+ display: inline-block;
+ content: "";
+ vertical-align: -.125em;
+ background-image: url("data:image/svg+xml,<svg viewBox='0 0 16 16' fill='%23333' xmlns='http://www.w3.org/2000/svg'><path fill-rule='evenodd' d='M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z' clip-rule='evenodd'/></svg>");
+ background-repeat: no-repeat;
+ background-size: 1rem 1rem;
+}
+
+{{< /highlight >}}
+ </div>
+</div>
+
+<div class="row my-4">
+ <div class="col-md-4">
+{{< md >}}
+## Styling
+Color can be changed by setting a `.text-*` class or custom CSS:
+{{< /md >}}
+ </div>
+ <div class="col-md-8">
+ <div class="bd-example">
+ <svg class="bi bi-exclamation-triangle text-success" width="32" height="32" fill="currentColor" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+ <path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016.146.146 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.163.163 0 0 1-.054.06.116.116 0 0 1-.066.017H1.146a.115.115 0 0 1-.066-.017.163.163 0 0 1-.054-.06.176.176 0 0 1 .002-.183L7.884 2.073a.147.147 0 0 1 .054-.057zm1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566z"/>
+ <path d="M7.002 12a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995z"/>
+ </svg>
+ </div>
+{{< highlight html >}}
+<svg class="bi bi-exclamation-triangle text-success" width="32" height="32" fill="currentColor" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+ ...
+</svg>
+{{< /highlight >}}
+ </div>
+</div>
+
+<div class="row my-4">
+ <div class="col-md-4">
+{{< md >}}
+## Accessibility
+For purely decorative icons, add `aria-hidden="true"`. Otherwise, provide an appropriate text alternative. Depending on which method you're using to add the icons, and where you're using them (e.g. as standalone images, or as the only content of a button or similar control), there are various possible approaches. Here are a few examples:
+{{< /md >}}
+ </div>
+ <div class="col-md-8">
+ <div class="bd-example">
+ <img src="/assets/icons/bootstrap.svg" alt="Bootstrap" width="32" height="32">
+ </div>
+{{< highlight html >}}
+<!-- alt="..." on <img> element -->
+<img src="/assets/icons/bootstrap.svg" alt="Bootstrap" ...>
+{{< /highlight >}}
+ <div class="bd-example">
+ <i class="bi-github" role="img" style="font-size: 2em" aria-label="GitHub"></i>
+ <i class="bi-tools" role="img" style="font-size: 2em" aria-label="Tools"></i>
+ </div>
+{{< highlight html >}}
+<svg class="bi" ... role="img" aria-label="Tools">
+ <use xlink:href="bootstrap-icons.svg#tools"/>
+</svg>
+{{< /highlight >}}
+ <div class="bd-example">
+ <button type="button" class="btn btn-primary" aria-label="Mute">
+ <svg class="bi bi-volume-mute-fill" width="32" height="32" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M6.717 3.55A.5.5 0 017 4v8a.5.5 0 01-.812.39L3.825 10.5H1.5A.5.5 0 011 10V6a.5.5 0 01.5-.5h2.325l2.363-1.89a.5.5 0 01.529-.06zm7.137 2.096a.5.5 0 010 .708L12.207 8l1.647 1.646a.5.5 0 01-.708.708L11.5 8.707l-1.646 1.647a.5.5 0 01-.708-.708L10.793 8 9.146 6.354a.5.5 0 11.708-.708L11.5 7.293l1.646-1.647a.5.5 0 01.708 0z"></path></svg>
+ </button>
+ </div>
+{{< highlight html >}}
+<!-- aria-label="..." on the control -->
+<button ... aria-label="Mute">
+ <svg class="bi bi-volume-mute-fill" aria-hidden="true" ...>
+ ...
+ </svg>
+</button>
+{{< /highlight >}}
+ </div>
+</div>
+
+<div class="row my-4">
+ <div class="col-md-4">
+{{< md >}}
+## Working with SVGs
+SVGs are awesome to work with, but they do have some known quirks to work around. Given the numerous ways in which SVGs can be used, we haven't included these attributes and workarounds in our code.
+{{< /md >}}
+ </div>
+ <div class="col-md-8">
+{{< md >}}
+Known issues include:
+
+- **SVGs receive focus by default in Internet Explorer and Edge Legacy.** When embedding your SVGs, add `focusable="false"` to the `<svg>` element. [Learn more on Stack Overflow.](https://stackoverflow.com/questions/18646111/disable-onfocus-event-for-svg-element)
+
+- **When using SVGs with `<img>` elements, screen readers may not announce them as images, or skip the image completely.** Include an additional `role="img"` on the `<img>` element to avoid any issues. [See this article for details.](https://web.archive.org/web/20201112013541/https://simplyaccessible.com/article/7-solutions-svgs/#acc-heading-2)
+
+- **External SVG sprites may not function correctly in Internet Explorer.** Use the [svg4everybody](https://github.com/jonathantneal/svg4everybody) polyfill as needed.
+
+Found another issue with SVGs we should note? Please open [an issue]({{< param repo >}}/issues) to share details.
+{{< /md >}}
+ </div>
+</div>
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/0-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/0-circle-fill.md
new file mode 100644
index 000000000..d47bd9fb8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/0-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: 0 circle fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/0-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/0-circle.md
new file mode 100644
index 000000000..78790010d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/0-circle.md
@@ -0,0 +1,9 @@
+---
+title: 0 circle
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/0-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/0-square-fill.md
new file mode 100644
index 000000000..d8242c12c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/0-square-fill.md
@@ -0,0 +1,9 @@
+---
+title: 0 square fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/0-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/0-square.md
new file mode 100644
index 000000000..f1a409fc5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/0-square.md
@@ -0,0 +1,9 @@
+---
+title: 0 square
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/1-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/1-circle-fill.md
new file mode 100644
index 000000000..e319375fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/1-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: 1 circle fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/1-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/1-circle.md
new file mode 100644
index 000000000..0ce581cbf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/1-circle.md
@@ -0,0 +1,8 @@
+---
+title: 1 circle
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/1-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/1-square-fill.md
new file mode 100644
index 000000000..4ecfba0eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/1-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: 1 square fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/1-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/1-square.md
new file mode 100644
index 000000000..2a8138e2b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/1-square.md
@@ -0,0 +1,8 @@
+---
+title: 1 square
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/123.md b/vendor/twbs/bootstrap-icons/docs/content/icons/123.md
new file mode 100644
index 000000000..16663daad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/123.md
@@ -0,0 +1,7 @@
+---
+title: 123
+categories:
+ - Typography
+tags:
+ - numbers
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/2-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/2-circle-fill.md
new file mode 100644
index 000000000..a613e4de8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/2-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: 2 circle fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/2-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/2-circle.md
new file mode 100644
index 000000000..369b5bc33
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/2-circle.md
@@ -0,0 +1,8 @@
+---
+title: 2 circle
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/2-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/2-square-fill.md
new file mode 100644
index 000000000..dae182999
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/2-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: 2 square fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/2-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/2-square.md
new file mode 100644
index 000000000..f9e085dd3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/2-square.md
@@ -0,0 +1,8 @@
+---
+title: 2 square
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/3-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/3-circle-fill.md
new file mode 100644
index 000000000..e43f8ac4b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/3-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: 3 circle fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/3-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/3-circle.md
new file mode 100644
index 000000000..6b1eb779f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/3-circle.md
@@ -0,0 +1,8 @@
+---
+title: 3 circle
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/3-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/3-square-fill.md
new file mode 100644
index 000000000..6118c978c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/3-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: 3 square fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/3-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/3-square.md
new file mode 100644
index 000000000..8c19abdf2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/3-square.md
@@ -0,0 +1,8 @@
+---
+title: 3 square
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/4-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/4-circle-fill.md
new file mode 100644
index 000000000..399767f23
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/4-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: 4 circle fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/4-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/4-circle.md
new file mode 100644
index 000000000..afa7d6dd7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/4-circle.md
@@ -0,0 +1,8 @@
+---
+title: 4 circle
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/4-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/4-square-fill.md
new file mode 100644
index 000000000..eedea3e57
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/4-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: 4 square fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/4-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/4-square.md
new file mode 100644
index 000000000..184a2ec8d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/4-square.md
@@ -0,0 +1,8 @@
+---
+title: 4 square
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/5-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/5-circle-fill.md
new file mode 100644
index 000000000..5df6ba0c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/5-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: 5 circle fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/5-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/5-circle.md
new file mode 100644
index 000000000..d935f00bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/5-circle.md
@@ -0,0 +1,8 @@
+---
+title: 5 circle
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/5-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/5-square-fill.md
new file mode 100644
index 000000000..9cb6da046
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/5-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: 5 square fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/5-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/5-square.md
new file mode 100644
index 000000000..48eacff80
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/5-square.md
@@ -0,0 +1,8 @@
+---
+title: 5 square
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/6-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/6-circle-fill.md
new file mode 100644
index 000000000..c4cef1a18
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/6-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: 6 circle fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/6-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/6-circle.md
new file mode 100644
index 000000000..94fe39402
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/6-circle.md
@@ -0,0 +1,8 @@
+---
+title: 6 circle
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/6-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/6-square-fill.md
new file mode 100644
index 000000000..631d20e70
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/6-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: 6 square fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/6-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/6-square.md
new file mode 100644
index 000000000..2d1f1ef9b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/6-square.md
@@ -0,0 +1,8 @@
+---
+title: 6 square
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/7-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/7-circle-fill.md
new file mode 100644
index 000000000..463cfbdb9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/7-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: 7 circle fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/7-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/7-circle.md
new file mode 100644
index 000000000..111fe9d2d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/7-circle.md
@@ -0,0 +1,8 @@
+---
+title: 7 circle
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/7-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/7-square-fill.md
new file mode 100644
index 000000000..8c611dedb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/7-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: 7 square fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/7-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/7-square.md
new file mode 100644
index 000000000..1c0e8fc9c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/7-square.md
@@ -0,0 +1,8 @@
+---
+title: 7 square
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/8-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/8-circle-fill.md
new file mode 100644
index 000000000..cb8f6df2b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/8-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: 8 circle fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/8-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/8-circle.md
new file mode 100644
index 000000000..55e3d7b3d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/8-circle.md
@@ -0,0 +1,8 @@
+---
+title: 8 circle
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/8-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/8-square-fill.md
new file mode 100644
index 000000000..9f4085410
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/8-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: 8 square fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/8-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/8-square.md
new file mode 100644
index 000000000..4c9e286bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/8-square.md
@@ -0,0 +1,8 @@
+---
+title: 8 square
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/9-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/9-circle-fill.md
new file mode 100644
index 000000000..c6d1e9a1e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/9-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: 9 circle fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/9-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/9-circle.md
new file mode 100644
index 000000000..9c888edbf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/9-circle.md
@@ -0,0 +1,8 @@
+---
+title: 9 circle
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/9-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/9-square-fill.md
new file mode 100644
index 000000000..b01127eab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/9-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: 9 square fill
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/9-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/9-square.md
new file mode 100644
index 000000000..6e79c5a2c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/9-square.md
@@ -0,0 +1,8 @@
+---
+title: 9 square
+categories:
+ - Shapes
+tags:
+ - number
+ - numeral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/activity.md b/vendor/twbs/bootstrap-icons/docs/content/icons/activity.md
new file mode 100644
index 000000000..8f3624e23
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/activity.md
@@ -0,0 +1,9 @@
+---
+title: Activity
+categories:
+ - Data
+tags:
+ - pulse
+ - heartbeat
+ - rhythm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/airplane-engines-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/airplane-engines-fill.md
new file mode 100644
index 000000000..f2c48f219
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/airplane-engines-fill.md
@@ -0,0 +1,12 @@
+---
+title: Airplane engines fill
+categories:
+ - Transportation
+tags:
+ - flight
+ - flying
+ - plane
+ - air
+ - airport
+ - aircraft
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/airplane-engines.md b/vendor/twbs/bootstrap-icons/docs/content/icons/airplane-engines.md
new file mode 100644
index 000000000..a2cdce5dc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/airplane-engines.md
@@ -0,0 +1,12 @@
+---
+title: Airplane engines
+categories:
+ - Transportation
+tags:
+ - flight
+ - flying
+ - plane
+ - air
+ - airport
+ - aircraft
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/airplane-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/airplane-fill.md
new file mode 100644
index 000000000..58187edb6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/airplane-fill.md
@@ -0,0 +1,12 @@
+---
+title: Airplane fill
+categories:
+ - Transportation
+tags:
+ - flight
+ - flying
+ - plane
+ - air
+ - airport
+ - aircraft
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/airplane.md b/vendor/twbs/bootstrap-icons/docs/content/icons/airplane.md
new file mode 100644
index 000000000..936e2473e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/airplane.md
@@ -0,0 +1,12 @@
+---
+title: Airplane
+categories:
+ - Transportation
+tags:
+ - flight
+ - flying
+ - plane
+ - air
+ - airport
+ - aircraft
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/alarm-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/alarm-fill.md
new file mode 100644
index 000000000..f3bc9f360
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/alarm-fill.md
@@ -0,0 +1,9 @@
+---
+title: Alarm Fill
+categories:
+ - Devices
+tags:
+ - alarm
+ - clock
+ - time
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/alarm.md b/vendor/twbs/bootstrap-icons/docs/content/icons/alarm.md
new file mode 100644
index 000000000..a35e4fd24
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/alarm.md
@@ -0,0 +1,9 @@
+---
+title: Alarm
+categories:
+ - Devices
+tags:
+ - alarm
+ - clock
+ - time
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/alexa.md b/vendor/twbs/bootstrap-icons/docs/content/icons/alexa.md
new file mode 100644
index 000000000..52536d848
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/alexa.md
@@ -0,0 +1,8 @@
+---
+title: Alexa
+categories:
+ - Brand
+tags:
+ - social
+ - assistant
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/align-bottom.md b/vendor/twbs/bootstrap-icons/docs/content/icons/align-bottom.md
new file mode 100644
index 000000000..651916807
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/align-bottom.md
@@ -0,0 +1,9 @@
+---
+title: Align bottom
+categories:
+ - Graphics
+tags:
+ - space
+ - align
+ - distribute
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/align-center.md b/vendor/twbs/bootstrap-icons/docs/content/icons/align-center.md
new file mode 100644
index 000000000..3c3ff52b5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/align-center.md
@@ -0,0 +1,9 @@
+---
+title: Align center
+categories:
+ - Graphics
+tags:
+ - space
+ - align
+ - distribute
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/align-end.md b/vendor/twbs/bootstrap-icons/docs/content/icons/align-end.md
new file mode 100644
index 000000000..a3b11689c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/align-end.md
@@ -0,0 +1,9 @@
+---
+title: Align end
+categories:
+ - Graphics
+tags:
+ - space
+ - align
+ - distribute
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/align-middle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/align-middle.md
new file mode 100644
index 000000000..4bf9d7c51
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/align-middle.md
@@ -0,0 +1,9 @@
+---
+title: Align middle
+categories:
+ - Graphics
+tags:
+ - space
+ - align
+ - distribute
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/align-start.md b/vendor/twbs/bootstrap-icons/docs/content/icons/align-start.md
new file mode 100644
index 000000000..7a62215ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/align-start.md
@@ -0,0 +1,9 @@
+---
+title: Align start
+categories:
+ - Graphics
+tags:
+ - space
+ - align
+ - distribute
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/align-top.md b/vendor/twbs/bootstrap-icons/docs/content/icons/align-top.md
new file mode 100644
index 000000000..33d130feb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/align-top.md
@@ -0,0 +1,9 @@
+---
+title: Align top
+categories:
+ - Graphics
+tags:
+ - space
+ - align
+ - distribute
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/alipay.md b/vendor/twbs/bootstrap-icons/docs/content/icons/alipay.md
new file mode 100644
index 000000000..0c8f2d8a9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/alipay.md
@@ -0,0 +1,7 @@
+---
+title: Alipay
+categories:
+ - Brand
+tags:
+ - payments
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/alphabet-uppercase.md b/vendor/twbs/bootstrap-icons/docs/content/icons/alphabet-uppercase.md
new file mode 100644
index 000000000..4fa30c0b8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/alphabet-uppercase.md
@@ -0,0 +1,9 @@
+---
+title: Alphabet uppercase
+categories:
+ - Typography
+tags:
+ - letters
+ - abc
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/alphabet.md b/vendor/twbs/bootstrap-icons/docs/content/icons/alphabet.md
new file mode 100644
index 000000000..496505c8a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/alphabet.md
@@ -0,0 +1,9 @@
+---
+title: Alphabet
+categories:
+ - Typography
+tags:
+ - letters
+ - abc
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/alt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/alt.md
new file mode 100644
index 000000000..dd46d4ce2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/alt.md
@@ -0,0 +1,9 @@
+---
+title: Alt
+categories:
+ - UI and keyboard
+tags:
+ - key
+ - alt
+ - option
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/amazon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/amazon.md
new file mode 100644
index 000000000..f416b2b23
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/amazon.md
@@ -0,0 +1,8 @@
+---
+title: Amazon
+categories:
+ - Brand
+tags:
+ - aws
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/amd.md b/vendor/twbs/bootstrap-icons/docs/content/icons/amd.md
new file mode 100644
index 000000000..c36830d7b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/amd.md
@@ -0,0 +1,8 @@
+---
+title: Amd
+categories:
+ - Brand
+tags:
+ - radeon
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/android.md b/vendor/twbs/bootstrap-icons/docs/content/icons/android.md
new file mode 100644
index 000000000..cd9950d5c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/android.md
@@ -0,0 +1,8 @@
+---
+title: Android
+categories:
+ - Brand
+tags:
+ - google
+ - droid
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/android2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/android2.md
new file mode 100644
index 000000000..d18406ed7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/android2.md
@@ -0,0 +1,8 @@
+---
+title: Android2
+categories:
+ - Brand
+tags:
+ - google
+ - droid
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/app-indicator.md b/vendor/twbs/bootstrap-icons/docs/content/icons/app-indicator.md
new file mode 100644
index 000000000..844733c05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/app-indicator.md
@@ -0,0 +1,12 @@
+---
+title: App indicator
+categories:
+ - Apps
+tags:
+ - app
+ - application
+ - ios
+ - android
+ - notification
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/app.md b/vendor/twbs/bootstrap-icons/docs/content/icons/app.md
new file mode 100644
index 000000000..0cb251729
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/app.md
@@ -0,0 +1,11 @@
+---
+title: App
+categories:
+ - Apps
+tags:
+ - app
+ - application
+ - ios
+ - android
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/apple.md b/vendor/twbs/bootstrap-icons/docs/content/icons/apple.md
new file mode 100644
index 000000000..3770cb0da
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/apple.md
@@ -0,0 +1,9 @@
+---
+title: Apple
+categories:
+ - Brand
+tags:
+ - aapl
+ - mac
+ - macintosh
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/archive-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/archive-fill.md
new file mode 100644
index 000000000..33e6d77c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/archive-fill.md
@@ -0,0 +1,8 @@
+---
+title: Archive fill
+categories:
+ - Files and folders
+tags:
+ - box
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/archive.md b/vendor/twbs/bootstrap-icons/docs/content/icons/archive.md
new file mode 100644
index 000000000..9ac343b3d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/archive.md
@@ -0,0 +1,8 @@
+---
+title: Archive
+categories:
+ - Files and folders
+tags:
+ - box
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-down.md
new file mode 100644
index 000000000..e63985d57
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-down.md
@@ -0,0 +1,8 @@
+---
+title: Arrow 90deg down
+categories:
+ - Arrows
+tags:
+ - arrow
+ - right-angle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-left.md
new file mode 100644
index 000000000..3cbb5cbea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-left.md
@@ -0,0 +1,8 @@
+---
+title: Arrow 90deg left
+categories:
+ - Arrows
+tags:
+ - arrow
+ - right-angle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-right.md
new file mode 100644
index 000000000..041401359
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-right.md
@@ -0,0 +1,8 @@
+---
+title: Arrow 90deg right
+categories:
+ - Arrows
+tags:
+ - arrow
+ - right-angle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-up.md
new file mode 100644
index 000000000..990dbf32b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-90deg-up.md
@@ -0,0 +1,8 @@
+---
+title: Arrow 90deg up
+categories:
+ - Arrows
+tags:
+ - arrow
+ - right-angle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-down.md
new file mode 100644
index 000000000..ab64c8227
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-down.md
@@ -0,0 +1,7 @@
+---
+title: Arrow bar down
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-left.md
new file mode 100644
index 000000000..082e61fc6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-left.md
@@ -0,0 +1,7 @@
+---
+title: Arrow bar left
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-right.md
new file mode 100644
index 000000000..06c25c668
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-right.md
@@ -0,0 +1,7 @@
+---
+title: Arrow bar right
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-up.md
new file mode 100644
index 000000000..3d1112a0a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-bar-up.md
@@ -0,0 +1,7 @@
+---
+title: Arrow bar up
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-clockwise.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-clockwise.md
new file mode 100644
index 000000000..63e597f41
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-clockwise.md
@@ -0,0 +1,16 @@
+---
+title: Arrow clockwise
+categories:
+ - Arrows
+tags:
+ - arrow
+ - right
+ - spin
+ - turn
+ - around
+ - round
+ - rotate
+ - refresh
+ - reload
+ - redo
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-counterclockwise.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-counterclockwise.md
new file mode 100644
index 000000000..538b96588
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-counterclockwise.md
@@ -0,0 +1,14 @@
+---
+title: Arrow counterclockwise
+categories:
+ - Arrows
+tags:
+ - arrow
+ - left
+ - spin
+ - turn
+ - around
+ - round
+ - rotate
+ - undo
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-circle-fill.md
new file mode 100644
index 000000000..2cc8eaa0d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down circle fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-circle.md
new file mode 100644
index 000000000..c94156b70
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-circle.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down circle
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-circle-fill.md
new file mode 100644
index 000000000..134475a85
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down left circle fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-circle.md
new file mode 100644
index 000000000..eaae2e355
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-circle.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down left circle
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-square-fill.md
new file mode 100644
index 000000000..35df17fea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down left square fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-square.md
new file mode 100644
index 000000000..6d34d21b1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left-square.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down left square
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left.md
new file mode 100644
index 000000000..0d462339b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-left.md
@@ -0,0 +1,7 @@
+---
+title: Arrow down-left
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-circle-fill.md
new file mode 100644
index 000000000..eab3356d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down right circle fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-circle.md
new file mode 100644
index 000000000..5d9c339ec
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-circle.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down right circle
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-square-fill.md
new file mode 100644
index 000000000..13a31996b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down right square fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-square.md
new file mode 100644
index 000000000..8be510383
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right-square.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down right square
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right.md
new file mode 100644
index 000000000..5d5a0f6b5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-right.md
@@ -0,0 +1,7 @@
+---
+title: Arrow down-right
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-short.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-short.md
new file mode 100644
index 000000000..8f72352f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-short.md
@@ -0,0 +1,7 @@
+---
+title: Arrow down-short
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-square-fill.md
new file mode 100644
index 000000000..6d290bcd2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down square fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-square.md
new file mode 100644
index 000000000..44fa4067e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-square.md
@@ -0,0 +1,8 @@
+---
+title: Arrow down square
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-up.md
new file mode 100644
index 000000000..ae2f0991d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down-up.md
@@ -0,0 +1,7 @@
+---
+title: Arrow down-up
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down.md
new file mode 100644
index 000000000..b93937783
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-down.md
@@ -0,0 +1,7 @@
+---
+title: Arrow down
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-circle-fill.md
new file mode 100644
index 000000000..c6c162eb1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow left circle fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-circle.md
new file mode 100644
index 000000000..c725ae3c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-circle.md
@@ -0,0 +1,8 @@
+---
+title: Arrow left circle
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-right.md
new file mode 100644
index 000000000..8e20940e6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-right.md
@@ -0,0 +1,7 @@
+---
+title: Arrow left-right
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-short.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-short.md
new file mode 100644
index 000000000..3d07fbe61
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-short.md
@@ -0,0 +1,7 @@
+---
+title: Arrow left-short
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-square-fill.md
new file mode 100644
index 000000000..be756f583
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow left square fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-square.md
new file mode 100644
index 000000000..70d87c9ca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left-square.md
@@ -0,0 +1,8 @@
+---
+title: Arrow left square
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left.md
new file mode 100644
index 000000000..9542fe13d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-left.md
@@ -0,0 +1,7 @@
+---
+title: Arrow left
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-repeat.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-repeat.md
new file mode 100644
index 000000000..614fef30d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-repeat.md
@@ -0,0 +1,13 @@
+---
+title: Arrow repeat
+categories:
+ - Arrows
+tags:
+ - arrow
+ - spin
+ - turn
+ - around
+ - round
+ - rotate
+ - sync
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-return-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-return-left.md
new file mode 100644
index 000000000..ee4f2e849
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-return-left.md
@@ -0,0 +1,8 @@
+---
+title: Arrow return left
+categories:
+ - Arrows
+tags:
+ - arrow
+ - return
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-return-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-return-right.md
new file mode 100644
index 000000000..b12b57b0e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-return-right.md
@@ -0,0 +1,8 @@
+---
+title: Arrow return right
+categories:
+ - Arrows
+tags:
+ - arrow
+ - return
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-circle-fill.md
new file mode 100644
index 000000000..94093721a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow right circle fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-circle.md
new file mode 100644
index 000000000..733ea2a25
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-circle.md
@@ -0,0 +1,8 @@
+---
+title: Arrow right circle
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-short.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-short.md
new file mode 100644
index 000000000..63985b87a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-short.md
@@ -0,0 +1,7 @@
+---
+title: Arrow right-short
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-square-fill.md
new file mode 100644
index 000000000..eb2eb9608
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow right square fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-square.md
new file mode 100644
index 000000000..6ac4eec68
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right-square.md
@@ -0,0 +1,8 @@
+---
+title: Arrow right square
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right.md
new file mode 100644
index 000000000..85853f760
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-right.md
@@ -0,0 +1,7 @@
+---
+title: Arrow right
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-through-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-through-heart-fill.md
new file mode 100644
index 000000000..7dec93534
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-through-heart-fill.md
@@ -0,0 +1,10 @@
+---
+title: Arrow through heart fill
+categories:
+ - Arrows
+ - Love
+tags:
+ - cupid
+ - love
+ - valentine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-through-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-through-heart.md
new file mode 100644
index 000000000..150df7271
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-through-heart.md
@@ -0,0 +1,10 @@
+---
+title: Arrow through heart
+categories:
+ - Arrows
+ - Love
+tags:
+ - cupid
+ - love
+ - valentine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-circle-fill.md
new file mode 100644
index 000000000..c45b52eb0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up circle fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-circle.md
new file mode 100644
index 000000000..0b0a610a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-circle.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up circle
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-circle-fill.md
new file mode 100644
index 000000000..fb6191844
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up left circle fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-circle.md
new file mode 100644
index 000000000..25f443dce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-circle.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up left circle
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-square-fill.md
new file mode 100644
index 000000000..2ae569f5b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up left square fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-square.md
new file mode 100644
index 000000000..dc33afeeb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left-square.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up left square
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left.md
new file mode 100644
index 000000000..349d4544c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-left.md
@@ -0,0 +1,7 @@
+---
+title: Arrow up-left
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-circle-fill.md
new file mode 100644
index 000000000..9b0739451
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up right circle fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-circle.md
new file mode 100644
index 000000000..50205c9b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-circle.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up right circle
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - circle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-square-fill.md
new file mode 100644
index 000000000..49cc1a068
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up right square fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-square.md
new file mode 100644
index 000000000..47532213d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right-square.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up right square
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right.md
new file mode 100644
index 000000000..21386af49
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-right.md
@@ -0,0 +1,7 @@
+---
+title: Arrow up-right
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-short.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-short.md
new file mode 100644
index 000000000..219d00941
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-short.md
@@ -0,0 +1,7 @@
+---
+title: Arrow up-short
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-square-fill.md
new file mode 100644
index 000000000..ba6a58139
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up square fill
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-square.md
new file mode 100644
index 000000000..dc81b3cde
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up-square.md
@@ -0,0 +1,8 @@
+---
+title: Arrow up square
+categories:
+ - Shape Arrows
+tags:
+ - arrow
+ - square
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up.md
new file mode 100644
index 000000000..68a45473d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrow-up.md
@@ -0,0 +1,7 @@
+---
+title: Arrow up
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-angle-contract.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-angle-contract.md
new file mode 100644
index 000000000..c1bb4542f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-angle-contract.md
@@ -0,0 +1,8 @@
+---
+title: Arrows angle contract
+categories:
+ - Arrows
+tags:
+ - arrow
+ - resize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-angle-expand.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-angle-expand.md
new file mode 100644
index 000000000..50646d769
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-angle-expand.md
@@ -0,0 +1,8 @@
+---
+title: Arrows angle expand
+categories:
+ - Arrows
+tags:
+ - arrow
+ - resize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-collapse-vertical.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-collapse-vertical.md
new file mode 100644
index 000000000..35f91015a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-collapse-vertical.md
@@ -0,0 +1,9 @@
+---
+title: Arrows collapse vertical
+categories:
+ - Arrows
+tags:
+ - arrow
+ - resize
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-collapse.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-collapse.md
new file mode 100644
index 000000000..f57c59df3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-collapse.md
@@ -0,0 +1,7 @@
+---
+title: Arrows collapse
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-expand-vertical.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-expand-vertical.md
new file mode 100644
index 000000000..264e05ac6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-expand-vertical.md
@@ -0,0 +1,9 @@
+---
+title: Arrows expand vertical
+categories:
+ - Arrows
+tags:
+ - arrow
+ - resize
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-expand.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-expand.md
new file mode 100644
index 000000000..05193cdc0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-expand.md
@@ -0,0 +1,7 @@
+---
+title: Arrows expand
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-fullscreen.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-fullscreen.md
new file mode 100644
index 000000000..034888973
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-fullscreen.md
@@ -0,0 +1,7 @@
+---
+title: Arrows fullscreen
+categories:
+ - Arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-move.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-move.md
new file mode 100644
index 000000000..30a6201fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-move.md
@@ -0,0 +1,9 @@
+---
+title: Arrows move
+categories:
+ - Arrows
+tags:
+ - arrow
+ - cursor
+ - move
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-vertical.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-vertical.md
new file mode 100644
index 000000000..80a76cb8e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows-vertical.md
@@ -0,0 +1,9 @@
+---
+title: Arrows vertical
+categories:
+ - Arrows
+tags:
+ - arrow
+ - resize
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/arrows.md b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows.md
new file mode 100644
index 000000000..31b8afe58
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/arrows.md
@@ -0,0 +1,9 @@
+---
+title: Arrows
+categories:
+ - Arrows
+tags:
+ - arrow
+ - resize
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/aspect-ratio-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/aspect-ratio-fill.md
new file mode 100644
index 000000000..aeea41817
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/aspect-ratio-fill.md
@@ -0,0 +1,10 @@
+---
+title: Aspect ratio fill
+categories:
+ - Media
+tags:
+ - size
+ - resize
+ - crop
+ - dimensions
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/aspect-ratio.md b/vendor/twbs/bootstrap-icons/docs/content/icons/aspect-ratio.md
new file mode 100644
index 000000000..a6341afce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/aspect-ratio.md
@@ -0,0 +1,10 @@
+---
+title: Aspect ratio
+categories:
+ - Media
+tags:
+ - size
+ - resize
+ - crop
+ - dimensions
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/asterisk.md b/vendor/twbs/bootstrap-icons/docs/content/icons/asterisk.md
new file mode 100644
index 000000000..8ab894d18
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/asterisk.md
@@ -0,0 +1,8 @@
+---
+title: Asterisk
+categories:
+ - Typography
+tags:
+ - asterisks
+ - star
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/at.md b/vendor/twbs/bootstrap-icons/docs/content/icons/at.md
new file mode 100644
index 000000000..dca95c1d5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/at.md
@@ -0,0 +1,8 @@
+---
+title: At
+categories:
+ - Communications
+tags:
+ - mention
+ - sign
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/award-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/award-fill.md
new file mode 100644
index 000000000..a31c9193f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/award-fill.md
@@ -0,0 +1,8 @@
+---
+title: Award fill
+categories:
+ - Real world
+tags:
+ - prize
+ - rosette
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/award.md b/vendor/twbs/bootstrap-icons/docs/content/icons/award.md
new file mode 100644
index 000000000..31b73f7cc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/award.md
@@ -0,0 +1,8 @@
+---
+title: Award
+categories:
+ - Real world
+tags:
+ - prize
+ - rosette
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/back.md b/vendor/twbs/bootstrap-icons/docs/content/icons/back.md
new file mode 100644
index 000000000..0fa6226d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/back.md
@@ -0,0 +1,8 @@
+---
+title: Back
+categories:
+ - Graphics
+tags:
+ - backward
+ - layer
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backpack-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack-fill.md
new file mode 100644
index 000000000..09fad49d5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack-fill.md
@@ -0,0 +1,12 @@
+---
+title: Backpack fill
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backpack.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack.md
new file mode 100644
index 000000000..8937f462d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack.md
@@ -0,0 +1,12 @@
+---
+title: Backpack
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backpack2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack2-fill.md
new file mode 100644
index 000000000..94b91a996
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack2-fill.md
@@ -0,0 +1,12 @@
+---
+title: Backpack2 fill
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backpack2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack2.md
new file mode 100644
index 000000000..0abb577d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack2.md
@@ -0,0 +1,12 @@
+---
+title: Backpack2
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backpack3-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack3-fill.md
new file mode 100644
index 000000000..f3138b10f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack3-fill.md
@@ -0,0 +1,12 @@
+---
+title: Backpack3 fill
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backpack3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack3.md
new file mode 100644
index 000000000..59ca04cbb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack3.md
@@ -0,0 +1,12 @@
+---
+title: Backpack3
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backpack4-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack4-fill.md
new file mode 100644
index 000000000..71ecfe442
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack4-fill.md
@@ -0,0 +1,12 @@
+---
+title: Backpack4 fill
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backpack4.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack4.md
new file mode 100644
index 000000000..fdf848a40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backpack4.md
@@ -0,0 +1,12 @@
+---
+title: Backpack4
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backspace-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backspace-fill.md
new file mode 100644
index 000000000..e213a6e0a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backspace-fill.md
@@ -0,0 +1,7 @@
+---
+title: Backspace fill
+categories:
+ - UI and keyboard
+tags:
+ - key
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backspace-reverse-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backspace-reverse-fill.md
new file mode 100644
index 000000000..2f522ef19
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backspace-reverse-fill.md
@@ -0,0 +1,7 @@
+---
+title: Backspace reverse fill
+categories:
+ - UI and keyboard
+tags:
+ - key
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backspace-reverse.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backspace-reverse.md
new file mode 100644
index 000000000..944c38579
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backspace-reverse.md
@@ -0,0 +1,7 @@
+---
+title: Backspace reverse
+categories:
+ - UI and keyboard
+tags:
+ - key
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/backspace.md b/vendor/twbs/bootstrap-icons/docs/content/icons/backspace.md
new file mode 100644
index 000000000..0701720f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/backspace.md
@@ -0,0 +1,7 @@
+---
+title: Backspace
+categories:
+ - UI and keyboard
+tags:
+ - key
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-3d-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-3d-fill.md
new file mode 100644
index 000000000..e7ec89787
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-3d-fill.md
@@ -0,0 +1,9 @@
+---
+title: Badge 3d fill
+categories:
+ - Badges
+tags:
+ - 3d
+ - display
+ - dimension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-3d.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-3d.md
new file mode 100644
index 000000000..558c6faac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-3d.md
@@ -0,0 +1,9 @@
+---
+title: Badge 3d
+categories:
+ - Badges
+tags:
+ - 3d
+ - display
+ - dimension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-4k-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-4k-fill.md
new file mode 100644
index 000000000..66055a7c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-4k-fill.md
@@ -0,0 +1,10 @@
+---
+title: Badge 4k fill
+categories:
+ - Badges
+tags:
+ - 4k
+ - display
+ - resolution
+ - retina
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-4k.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-4k.md
new file mode 100644
index 000000000..0059bb773
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-4k.md
@@ -0,0 +1,10 @@
+---
+title: Badge 4k
+categories:
+ - Badges
+tags:
+ - 4k
+ - display
+ - resolution
+ - retina
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-8k-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-8k-fill.md
new file mode 100644
index 000000000..b852316e8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-8k-fill.md
@@ -0,0 +1,10 @@
+---
+title: Badge 8k fill
+categories:
+ - Badges
+tags:
+ - 4k
+ - display
+ - resolution
+ - retina
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-8k.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-8k.md
new file mode 100644
index 000000000..e81284809
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-8k.md
@@ -0,0 +1,10 @@
+---
+title: Badge 8k
+categories:
+ - Badges
+tags:
+ - 4k
+ - display
+ - resolution
+ - retina
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ad-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ad-fill.md
new file mode 100644
index 000000000..5462d8853
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ad-fill.md
@@ -0,0 +1,7 @@
+---
+title: Badge ad fill
+categories:
+ - Badges
+tags:
+ - advertisement
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ad.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ad.md
new file mode 100644
index 000000000..b73b0ec6c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ad.md
@@ -0,0 +1,7 @@
+---
+title: Badge ad
+categories:
+ - Badges
+tags:
+ - advertisement
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ar-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ar-fill.md
new file mode 100644
index 000000000..a923ced5f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ar-fill.md
@@ -0,0 +1,9 @@
+---
+title: Badge ar fill
+categories:
+ - Badges
+tags:
+ - augmented
+ - reality
+ - ar
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ar.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ar.md
new file mode 100644
index 000000000..23a85bbf2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-ar.md
@@ -0,0 +1,9 @@
+---
+title: Badge ar
+categories:
+ - Badges
+tags:
+ - augmented
+ - reality
+ - ar
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-cc-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-cc-fill.md
new file mode 100644
index 000000000..dcba9627b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-cc-fill.md
@@ -0,0 +1,7 @@
+---
+title: Badge cc fill
+categories:
+ - Badges
+tags:
+ - "closed captioning"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-cc.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-cc.md
new file mode 100644
index 000000000..110d7ee9d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-cc.md
@@ -0,0 +1,7 @@
+---
+title: Badge cc
+categories:
+ - Badges
+tags:
+ - "closed captioning"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-hd-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-hd-fill.md
new file mode 100644
index 000000000..06e0d7afc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-hd-fill.md
@@ -0,0 +1,9 @@
+---
+title: Badge hd fill
+categories:
+ - Badges
+tags:
+ - display
+ - resolution
+ - "high definition"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-hd.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-hd.md
new file mode 100644
index 000000000..e780b6238
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-hd.md
@@ -0,0 +1,9 @@
+---
+title: Badge hd
+categories:
+ - Badges
+tags:
+ - display
+ - resolution
+ - "high definition"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-sd-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-sd-fill.md
new file mode 100644
index 000000000..1e665d090
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-sd-fill.md
@@ -0,0 +1,9 @@
+---
+title: Badge SD fill
+categories:
+ - Badges
+tags:
+ - display
+ - resolution
+ - "standard definition"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-sd.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-sd.md
new file mode 100644
index 000000000..8b6481a4c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-sd.md
@@ -0,0 +1,9 @@
+---
+title: Badge Sd
+categories:
+ - Badges
+tags:
+ - display
+ - resolution
+ - "standard definition"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-tm-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-tm-fill.md
new file mode 100644
index 000000000..23d59fb56
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-tm-fill.md
@@ -0,0 +1,7 @@
+---
+title: Badge tm fill
+categories:
+ - Badges
+tags:
+ - trademark
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-tm.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-tm.md
new file mode 100644
index 000000000..42de8a055
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-tm.md
@@ -0,0 +1,7 @@
+---
+title: Badge tm
+categories:
+ - Badges
+tags:
+ - trademark
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vo-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vo-fill.md
new file mode 100644
index 000000000..154b1d731
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vo-fill.md
@@ -0,0 +1,8 @@
+---
+title: Badge vo fill
+categories:
+ - Badges
+tags:
+ - voiceover
+ - accessibility
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vo.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vo.md
new file mode 100644
index 000000000..e04e786c2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vo.md
@@ -0,0 +1,8 @@
+---
+title: Badge vo
+categories:
+ - Badges
+tags:
+ - voiceover
+ - accessibility
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vr-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vr-fill.md
new file mode 100644
index 000000000..4d0ff7882
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vr-fill.md
@@ -0,0 +1,9 @@
+---
+title: Badge vr fill
+categories:
+ - Badges
+tags:
+ - virtual
+ - reality
+ - vr
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vr.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vr.md
new file mode 100644
index 000000000..3aa841b12
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-vr.md
@@ -0,0 +1,9 @@
+---
+title: Badge vr
+categories:
+ - Badges
+tags:
+ - virtual
+ - reality
+ - vr
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-wc-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-wc-fill.md
new file mode 100644
index 000000000..43f606f02
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-wc-fill.md
@@ -0,0 +1,8 @@
+---
+title: Badge wc fill
+categories:
+ - Badges
+tags:
+ - wash closet
+ - wc
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/badge-wc.md b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-wc.md
new file mode 100644
index 000000000..d5dbd036f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/badge-wc.md
@@ -0,0 +1,8 @@
+---
+title: Badge wc
+categories:
+ - Badges
+tags:
+ - wash closet
+ - wc
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-check-fill.md
new file mode 100644
index 000000000..57f283a2d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-check-fill.md
@@ -0,0 +1,12 @@
+---
+title: Bag check fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-check.md
new file mode 100644
index 000000000..8fec02d45
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-check.md
@@ -0,0 +1,12 @@
+---
+title: Bag check
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag-dash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-dash-fill.md
new file mode 100644
index 000000000..12058ef88
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-dash-fill.md
@@ -0,0 +1,12 @@
+---
+title: Bag dash fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-dash.md
new file mode 100644
index 000000000..3841397e7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-dash.md
@@ -0,0 +1,12 @@
+---
+title: Bag dash
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-fill.md
new file mode 100644
index 000000000..17cf0431b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-fill.md
@@ -0,0 +1,10 @@
+---
+title: Bag fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - cart
+ - purchase
+ - buy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-heart-fill.md
new file mode 100644
index 000000000..3d9e684e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-heart-fill.md
@@ -0,0 +1,12 @@
+---
+title: Bag heart fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - cart
+ - purchase
+ - buy
+ - valentine
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-heart.md
new file mode 100644
index 000000000..f041aeab6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-heart.md
@@ -0,0 +1,12 @@
+---
+title: Bag heart
+categories:
+ - Commerce
+tags:
+ - shopping
+ - cart
+ - purchase
+ - buy
+ - valentine
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-plus-fill.md
new file mode 100644
index 000000000..913c69a7f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-plus-fill.md
@@ -0,0 +1,11 @@
+---
+title: Bag plus fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - add
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-plus.md
new file mode 100644
index 000000000..ce965d02e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-plus.md
@@ -0,0 +1,12 @@
+---
+title: Bag plus
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-x-fill.md
new file mode 100644
index 000000000..cddaed90f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-x-fill.md
@@ -0,0 +1,12 @@
+---
+title: Bag x fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-x.md
new file mode 100644
index 000000000..a604b54da
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag-x.md
@@ -0,0 +1,12 @@
+---
+title: Bag x
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bag.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bag.md
new file mode 100644
index 000000000..88093b5c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bag.md
@@ -0,0 +1,10 @@
+---
+title: Bag
+categories:
+ - Commerce
+tags:
+ - shopping
+ - cart
+ - purchase
+ - buy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/balloon-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/balloon-fill.md
new file mode 100644
index 000000000..519f0f117
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/balloon-fill.md
@@ -0,0 +1,7 @@
+---
+title: Balloon fill
+categories:
+ - Real World
+tags:
+ - birthday
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/balloon-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/balloon-heart-fill.md
new file mode 100644
index 000000000..1bad27698
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/balloon-heart-fill.md
@@ -0,0 +1,10 @@
+---
+title: Balloon heart fill
+categories:
+ - Real World
+ - Love
+tags:
+ - birthday
+ - valentine
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/balloon-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/balloon-heart.md
new file mode 100644
index 000000000..294c6a518
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/balloon-heart.md
@@ -0,0 +1,10 @@
+---
+title: Balloon heart
+categories:
+ - Real World
+ - Love
+tags:
+ - birthday
+ - valentine
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/balloon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/balloon.md
new file mode 100644
index 000000000..0a63bfe55
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/balloon.md
@@ -0,0 +1,7 @@
+---
+title: Balloon
+categories:
+ - Real World
+tags:
+ - birthday
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ban-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ban-fill.md
new file mode 100644
index 000000000..42542a954
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ban-fill.md
@@ -0,0 +1,9 @@
+---
+title: Ban fill
+categories:
+ - Real World
+tags:
+ - no
+ - "not allowed"
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ban.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ban.md
new file mode 100644
index 000000000..3fe83a51b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ban.md
@@ -0,0 +1,10 @@
+---
+title: Ban
+categories:
+ - Real World
+tags:
+ - no
+ - "not allowed"
+ - block
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bandaid-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bandaid-fill.md
new file mode 100644
index 000000000..3e7bb6a24
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bandaid-fill.md
@@ -0,0 +1,8 @@
+---
+title: Bandaid fill
+categories:
+ - Real World
+tags:
+ - bandage
+ - health
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bandaid.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bandaid.md
new file mode 100644
index 000000000..aad0e55b8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bandaid.md
@@ -0,0 +1,8 @@
+---
+title: Bandaid
+categories:
+ - Real World
+tags:
+ - bandage
+ - health
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bank.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bank.md
new file mode 100644
index 000000000..3c8dbf1d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bank.md
@@ -0,0 +1,11 @@
+---
+title: Bank
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+ - banking
+ - market
+ - temple
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bank2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bank2.md
new file mode 100644
index 000000000..40b83626b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bank2.md
@@ -0,0 +1,11 @@
+---
+title: Bank2
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+ - banking
+ - market
+ - temple
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-fill.md
new file mode 100644
index 000000000..a5bd2d850
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-fill.md
@@ -0,0 +1,9 @@
+---
+title: Bar chart fill
+categories:
+ - Data
+tags:
+ - chart
+ - graph
+ - analytics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-line-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-line-fill.md
new file mode 100644
index 000000000..425a9de50
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-line-fill.md
@@ -0,0 +1,9 @@
+---
+title: Bar chart line fill
+categories:
+ - Data
+tags:
+ - chart
+ - graph
+ - analytics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-line.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-line.md
new file mode 100644
index 000000000..7304ec0ad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-line.md
@@ -0,0 +1,9 @@
+---
+title: Bar chart line
+categories:
+ - Data
+tags:
+ - chart
+ - graph
+ - analytics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-steps.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-steps.md
new file mode 100644
index 000000000..b4828d646
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart-steps.md
@@ -0,0 +1,9 @@
+---
+title: Bar chart steps
+categories:
+ - Data
+tags:
+ - chart
+ - graph
+ - analytics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart.md
new file mode 100644
index 000000000..233340861
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bar-chart.md
@@ -0,0 +1,9 @@
+---
+title: Bar chart
+categories:
+ - Data
+tags:
+ - chart
+ - graph
+ - analytics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/basket-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/basket-fill.md
new file mode 100644
index 000000000..0950c640f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/basket-fill.md
@@ -0,0 +1,12 @@
+---
+title: Basket fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/basket.md b/vendor/twbs/bootstrap-icons/docs/content/icons/basket.md
new file mode 100644
index 000000000..b3626cf2a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/basket.md
@@ -0,0 +1,12 @@
+---
+title: Basket
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/basket2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/basket2-fill.md
new file mode 100644
index 000000000..f8d0647b2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/basket2-fill.md
@@ -0,0 +1,12 @@
+---
+title: Basket2 fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/basket2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/basket2.md
new file mode 100644
index 000000000..e75b313bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/basket2.md
@@ -0,0 +1,12 @@
+---
+title: Basket2
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/basket3-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/basket3-fill.md
new file mode 100644
index 000000000..40d1697df
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/basket3-fill.md
@@ -0,0 +1,12 @@
+---
+title: Basket3 fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/basket3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/basket3.md
new file mode 100644
index 000000000..144b9ceb6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/basket3.md
@@ -0,0 +1,12 @@
+---
+title: Basket3
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/battery-charging.md b/vendor/twbs/bootstrap-icons/docs/content/icons/battery-charging.md
new file mode 100644
index 000000000..d90efa170
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/battery-charging.md
@@ -0,0 +1,8 @@
+---
+title: Battery charging
+categories:
+ - Devices
+tags:
+ - power
+ - charge
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/battery-full.md b/vendor/twbs/bootstrap-icons/docs/content/icons/battery-full.md
new file mode 100644
index 000000000..3fffb9a49
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/battery-full.md
@@ -0,0 +1,8 @@
+---
+title: Battery full
+categories:
+ - Devices
+tags:
+ - power
+ - charge
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/battery-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/battery-half.md
new file mode 100644
index 000000000..8df07511b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/battery-half.md
@@ -0,0 +1,8 @@
+---
+title: Battery half
+categories:
+ - Devices
+tags:
+ - power
+ - charge
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/battery.md b/vendor/twbs/bootstrap-icons/docs/content/icons/battery.md
new file mode 100644
index 000000000..4517d6e47
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/battery.md
@@ -0,0 +1,8 @@
+---
+title: Battery
+categories:
+ - Devices
+tags:
+ - power
+ - charge
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/behance.md b/vendor/twbs/bootstrap-icons/docs/content/icons/behance.md
new file mode 100644
index 000000000..b34b06a21
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/behance.md
@@ -0,0 +1,7 @@
+---
+title: Behance
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bell-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bell-fill.md
new file mode 100644
index 000000000..f27fe1723
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bell-fill.md
@@ -0,0 +1,8 @@
+---
+title: Bell fill
+categories:
+ - Communications
+tags:
+ - notification
+ - clock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bell-slash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bell-slash-fill.md
new file mode 100644
index 000000000..93193670a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bell-slash-fill.md
@@ -0,0 +1,9 @@
+---
+title: Bell slash fill
+categories:
+ - Communications
+tags:
+ - notification
+ - silenced
+ - clock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bell-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bell-slash.md
new file mode 100644
index 000000000..b6a9f3c8a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bell-slash.md
@@ -0,0 +1,9 @@
+---
+title: Bell slash
+categories:
+ - Communications
+tags:
+ - notification
+ - silenced
+ - clock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bell.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bell.md
new file mode 100644
index 000000000..5716de63f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bell.md
@@ -0,0 +1,8 @@
+---
+title: Bell
+categories:
+ - Communications
+tags:
+ - notification
+ - clock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bezier.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bezier.md
new file mode 100644
index 000000000..63427c569
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bezier.md
@@ -0,0 +1,9 @@
+---
+title: Bezier
+categories:
+ - Graphics
+tags:
+ - graphics
+ - vector
+ - pen
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bezier2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bezier2.md
new file mode 100644
index 000000000..1e74bf812
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bezier2.md
@@ -0,0 +1,9 @@
+---
+title: Bezier2
+categories:
+ - Graphics
+tags:
+ - graphics
+ - vector
+ - pen
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bicycle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bicycle.md
new file mode 100644
index 000000000..38eeb8021
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bicycle.md
@@ -0,0 +1,9 @@
+---
+title: Bicycle
+categories:
+ - Real world
+tags:
+ - bike
+ - riding
+ - bicycling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bing.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bing.md
new file mode 100644
index 000000000..bb07eb059
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bing.md
@@ -0,0 +1,9 @@
+---
+title: Bing
+categories:
+ - Brand
+tags:
+ - search
+ - microsoft
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/binoculars-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/binoculars-fill.md
new file mode 100644
index 000000000..04b6e036f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/binoculars-fill.md
@@ -0,0 +1,9 @@
+---
+title: Binoculars fill
+categories:
+ - Real world
+tags:
+ - distance
+ - view
+ - search
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/binoculars.md b/vendor/twbs/bootstrap-icons/docs/content/icons/binoculars.md
new file mode 100644
index 000000000..ce0e8fe49
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/binoculars.md
@@ -0,0 +1,9 @@
+---
+title: Binoculars
+categories:
+ - Real world
+tags:
+ - distance
+ - view
+ - search
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/blockquote-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/blockquote-left.md
new file mode 100644
index 000000000..ec4459751
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/blockquote-left.md
@@ -0,0 +1,8 @@
+---
+title: Blockquote left
+categories:
+ - Typography
+tags:
+ - text
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/blockquote-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/blockquote-right.md
new file mode 100644
index 000000000..18c09b210
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/blockquote-right.md
@@ -0,0 +1,8 @@
+---
+title: Blockquote right
+categories:
+ - Typography
+tags:
+ - text
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bluetooth.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bluetooth.md
new file mode 100644
index 000000000..2eaad4189
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bluetooth.md
@@ -0,0 +1,7 @@
+---
+title: Bluetooth
+categories:
+ - Brand
+tags:
+ - wireless
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/body-text.md b/vendor/twbs/bootstrap-icons/docs/content/icons/body-text.md
new file mode 100644
index 000000000..d41c98620
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/body-text.md
@@ -0,0 +1,7 @@
+---
+title: Body text
+categories:
+ - Typography
+tags:
+ - content
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/book-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/book-fill.md
new file mode 100644
index 000000000..ed4043b7a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/book-fill.md
@@ -0,0 +1,9 @@
+---
+title: Book fill
+categories:
+ - Real world
+tags:
+ - novel
+ - read
+ - magazine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/book-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/book-half.md
new file mode 100644
index 000000000..19e8f4fba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/book-half.md
@@ -0,0 +1,9 @@
+---
+title: Book half
+categories:
+ - Real world
+tags:
+ - novel
+ - read
+ - magazine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/book.md b/vendor/twbs/bootstrap-icons/docs/content/icons/book.md
new file mode 100644
index 000000000..9f62a5420
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/book.md
@@ -0,0 +1,9 @@
+---
+title: Book
+categories:
+ - Real world
+tags:
+ - novel
+ - read
+ - magazine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-check-fill.md
new file mode 100644
index 000000000..159b24843
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-check-fill.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark check fill
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-check.md
new file mode 100644
index 000000000..d7936313e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-check.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark check
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-dash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-dash-fill.md
new file mode 100644
index 000000000..de9bc5c44
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-dash-fill.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark dash fill
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-dash.md
new file mode 100644
index 000000000..4f333bd40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-dash.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark dash
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-fill.md
new file mode 100644
index 000000000..230c9c8bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-fill.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark fill
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-heart-fill.md
new file mode 100644
index 000000000..697c96304
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-heart-fill.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark heart fill
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-heart.md
new file mode 100644
index 000000000..b77df8c4a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-heart.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark heart
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-plus-fill.md
new file mode 100644
index 000000000..d9a30a7cd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-plus-fill.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark plus fill
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-plus.md
new file mode 100644
index 000000000..016a978f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-plus.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark plus
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-star-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-star-fill.md
new file mode 100644
index 000000000..d8517aa0f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-star-fill.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark star fill
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-star.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-star.md
new file mode 100644
index 000000000..249a0f83f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-star.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark star
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-x-fill.md
new file mode 100644
index 000000000..89c9a4a82
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-x-fill.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark x fill
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-x.md
new file mode 100644
index 000000000..88bceeb5e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark-x.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark x
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark.md
new file mode 100644
index 000000000..fb97c56ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmark.md
@@ -0,0 +1,11 @@
+---
+title: Bookmark
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmarks-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmarks-fill.md
new file mode 100644
index 000000000..959c81d8c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmarks-fill.md
@@ -0,0 +1,11 @@
+---
+title: Bookmarks fill
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookmarks.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmarks.md
new file mode 100644
index 000000000..2e536b88d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookmarks.md
@@ -0,0 +1,11 @@
+---
+title: Bookmarks
+categories:
+ - Miscellaneous
+tags:
+ - reading
+ - book
+ - label
+ - tag
+ - category
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bookshelf.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bookshelf.md
new file mode 100644
index 000000000..ffad38d35
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bookshelf.md
@@ -0,0 +1,7 @@
+---
+title: Bookshelf
+categories:
+ - Real world
+tags:
+ - shelf
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/boombox-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/boombox-fill.md
new file mode 100644
index 000000000..e9a2a70fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/boombox-fill.md
@@ -0,0 +1,7 @@
+---
+title: Boombox fill
+categories:
+ - Real World
+tags:
+ - music
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/boombox.md b/vendor/twbs/bootstrap-icons/docs/content/icons/boombox.md
new file mode 100644
index 000000000..b6e3f09fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/boombox.md
@@ -0,0 +1,7 @@
+---
+title: Boombox
+categories:
+ - Real World
+tags:
+ - music
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap-fill.md
new file mode 100644
index 000000000..06a10d02c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap-fill.md
@@ -0,0 +1,7 @@
+---
+title: Bootstrap fill
+categories:
+ - Bootstrap
+tags:
+ - bootstrap
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap-reboot.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap-reboot.md
new file mode 100644
index 000000000..e16e4257e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap-reboot.md
@@ -0,0 +1,7 @@
+---
+title: Bootstrap Reboot
+categories:
+ - Bootstrap
+tags:
+ - bootstrap
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap.md
new file mode 100644
index 000000000..e03207a93
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bootstrap.md
@@ -0,0 +1,7 @@
+---
+title: Bootstrap
+categories:
+ - Bootstrap
+tags:
+ - bootstrap
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border-all.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border-all.md
new file mode 100644
index 000000000..b2fa39cc7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border-all.md
@@ -0,0 +1,7 @@
+---
+title: Border all
+categories:
+ - UI and keyboard
+tags:
+ - borders
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border-bottom.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border-bottom.md
new file mode 100644
index 000000000..dea819097
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border-bottom.md
@@ -0,0 +1,7 @@
+---
+title: Border bottom
+categories:
+ - UI and keyboard
+tags:
+ - borders
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border-center.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border-center.md
new file mode 100644
index 000000000..7f9a64954
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border-center.md
@@ -0,0 +1,7 @@
+---
+title: Border center
+categories:
+ - UI and keyboard
+tags:
+ - borders
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border-inner.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border-inner.md
new file mode 100644
index 000000000..69d875522
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border-inner.md
@@ -0,0 +1,7 @@
+---
+title: Border inner
+categories:
+ - UI and keyboard
+tags:
+ - borders
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border-left.md
new file mode 100644
index 000000000..dc493839b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border-left.md
@@ -0,0 +1,7 @@
+---
+title: Border left
+categories:
+ - UI and keyboard
+tags:
+ - borders
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border-middle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border-middle.md
new file mode 100644
index 000000000..e98352b46
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border-middle.md
@@ -0,0 +1,7 @@
+---
+title: Border middle
+categories:
+ - UI and keyboard
+tags:
+ - borders
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border-outer.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border-outer.md
new file mode 100644
index 000000000..99ce9bbbf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border-outer.md
@@ -0,0 +1,7 @@
+---
+title: Border outer
+categories:
+ - UI and keyboard
+tags:
+ - borders
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border-right.md
new file mode 100644
index 000000000..b78510b09
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border-right.md
@@ -0,0 +1,7 @@
+---
+title: Border right
+categories:
+ - UI and keyboard
+tags:
+ - borders
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border-style.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border-style.md
new file mode 100644
index 000000000..30da3684d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border-style.md
@@ -0,0 +1,8 @@
+---
+title: Border style
+categories:
+ - Typography
+tags:
+ - borders
+ - wysiwyg
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border-top.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border-top.md
new file mode 100644
index 000000000..478e1293a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border-top.md
@@ -0,0 +1,7 @@
+---
+title: Border top
+categories:
+ - UI and keyboard
+tags:
+ - borders
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border-width.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border-width.md
new file mode 100644
index 000000000..c0c8d9141
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border-width.md
@@ -0,0 +1,8 @@
+---
+title: Border width
+categories:
+ - Typography
+tags:
+ - borders
+ - wysiwyg
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/border.md b/vendor/twbs/bootstrap-icons/docs/content/icons/border.md
new file mode 100644
index 000000000..edff54bfb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/border.md
@@ -0,0 +1,7 @@
+---
+title: Border
+categories:
+ - UI and keyboard
+tags:
+ - borders
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bounding-box-circles.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bounding-box-circles.md
new file mode 100644
index 000000000..65c893ae5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bounding-box-circles.md
@@ -0,0 +1,10 @@
+---
+title: Bounding box circles
+categories:
+ - Graphics
+tags:
+ - text
+ - shape
+ - resize
+ - dimensions
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bounding-box.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bounding-box.md
new file mode 100644
index 000000000..cc2c39570
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bounding-box.md
@@ -0,0 +1,10 @@
+---
+title: Bounding box
+categories:
+ - Graphics
+tags:
+ - text
+ - shape
+ - resize
+ - dimensions
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down-left.md
new file mode 100644
index 000000000..d687e293f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down-left.md
@@ -0,0 +1,7 @@
+---
+title: Box arrow bottom-left
+categories:
+ - Box arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down-right.md
new file mode 100644
index 000000000..f9f97f53a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down-right.md
@@ -0,0 +1,7 @@
+---
+title: Box arrow bottom-right
+categories:
+ - Box arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down.md
new file mode 100644
index 000000000..8aa344f5c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-down.md
@@ -0,0 +1,9 @@
+---
+title: Box arrow down
+categories:
+ - Box arrows
+tags:
+ - arrow
+ - download
+ - save
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down-left.md
new file mode 100644
index 000000000..2bdf1e516
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down-left.md
@@ -0,0 +1,7 @@
+---
+title: Box arrow in down left
+categories:
+ - Box arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down-right.md
new file mode 100644
index 000000000..5d55af313
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down-right.md
@@ -0,0 +1,7 @@
+---
+title: Box arrow in down right
+categories:
+ - Box arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down.md
new file mode 100644
index 000000000..19b2a2a2b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-down.md
@@ -0,0 +1,8 @@
+---
+title: Box arrow in down
+categories:
+ - Box arrows
+tags:
+ - arrow
+ - upload
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-left.md
new file mode 100644
index 000000000..7ff03377b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-left.md
@@ -0,0 +1,10 @@
+---
+title: Box arrow in left
+categories:
+ - Box arrows
+tags:
+ - arrow
+ - login
+ - signin
+ - enter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-right.md
new file mode 100644
index 000000000..3c1220ba8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-right.md
@@ -0,0 +1,10 @@
+---
+title: Box arrow in right
+categories:
+ - Box arrows
+tags:
+ - arrow
+ - login
+ - signin
+ - enter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up-left.md
new file mode 100644
index 000000000..806dcd200
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up-left.md
@@ -0,0 +1,7 @@
+---
+title: Box arrow in up left
+categories:
+ - Box arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up-right.md
new file mode 100644
index 000000000..17a47cbe4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up-right.md
@@ -0,0 +1,7 @@
+---
+title: Box arrow in up right
+categories:
+ - Box arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up.md
new file mode 100644
index 000000000..232e5c8a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-in-up.md
@@ -0,0 +1,7 @@
+---
+title: Box arrow in up
+categories:
+ - Box arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-left.md
new file mode 100644
index 000000000..88adbfc3d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-left.md
@@ -0,0 +1,10 @@
+---
+title: Box arrow left
+categories:
+ - Box arrows
+tags:
+ - arrow
+ - logout
+ - signout
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-right.md
new file mode 100644
index 000000000..ee391b002
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-right.md
@@ -0,0 +1,10 @@
+---
+title: Box arrow right
+categories:
+ - Box arrows
+tags:
+ - arrow
+ - logout
+ - signout
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up-left.md
new file mode 100644
index 000000000..bcf56be64
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up-left.md
@@ -0,0 +1,8 @@
+---
+title: Box arrow up-left
+categories:
+ - Box arrows
+tags:
+ - arrow
+ - external link
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up-right.md
new file mode 100644
index 000000000..cbbc407fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up-right.md
@@ -0,0 +1,8 @@
+---
+title: Box arrow up-right
+categories:
+ - Box arrows
+tags:
+ - arrow
+ - external link
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up.md
new file mode 100644
index 000000000..f8219ccda
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-arrow-up.md
@@ -0,0 +1,7 @@
+---
+title: Box arrow up
+categories:
+ - Box arrows
+tags:
+ - arrow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-fill.md
new file mode 100644
index 000000000..3d92b447a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-fill.md
@@ -0,0 +1,8 @@
+---
+title: Box fill
+categories:
+ - Real world
+tags:
+ - cardboard
+ - package
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-seam-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-seam-fill.md
new file mode 100644
index 000000000..c9215954f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-seam-fill.md
@@ -0,0 +1,8 @@
+---
+title: Box seam fill
+categories:
+ - Real world
+tags:
+ - cardboard
+ - package
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box-seam.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box-seam.md
new file mode 100644
index 000000000..a82a86687
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box-seam.md
@@ -0,0 +1,8 @@
+---
+title: Box seam
+categories:
+ - Real world
+tags:
+ - cardboard
+ - package
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box.md
new file mode 100644
index 000000000..42df2615c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box.md
@@ -0,0 +1,9 @@
+---
+title: Box
+categories:
+ - Real world
+tags:
+ - cardboard
+ - package
+ - cube
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box2-fill.md
new file mode 100644
index 000000000..3a8cdec61
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box2-fill.md
@@ -0,0 +1,10 @@
+---
+title: Box2 fill
+categories:
+ - Real World
+ - Love
+tags:
+ - cardboard
+ - package
+ - cube
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box2-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box2-heart-fill.md
new file mode 100644
index 000000000..0dc4a5347
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box2-heart-fill.md
@@ -0,0 +1,13 @@
+---
+title: Box2 heart fill
+categories:
+ - Real World
+ - Love
+tags:
+ - cardboard
+ - package
+ - cube
+ - gift
+ - valentine
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box2-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box2-heart.md
new file mode 100644
index 000000000..a9650f1bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box2-heart.md
@@ -0,0 +1,13 @@
+---
+title: Box2 heart
+categories:
+ - Real World
+ - Love
+tags:
+ - cardboard
+ - package
+ - cube
+ - gift
+ - valentine
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/box2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/box2.md
new file mode 100644
index 000000000..8cac35df7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/box2.md
@@ -0,0 +1,9 @@
+---
+title: Box2
+categories:
+ - Real World
+tags:
+ - cardboard
+ - package
+ - cube
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/boxes.md b/vendor/twbs/bootstrap-icons/docs/content/icons/boxes.md
new file mode 100644
index 000000000..0a8e554c2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/boxes.md
@@ -0,0 +1,9 @@
+---
+title: Boxes
+categories:
+ - Real World
+tags:
+ - cardboard
+ - package
+ - cube
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/braces-asterisk.md b/vendor/twbs/bootstrap-icons/docs/content/icons/braces-asterisk.md
new file mode 100644
index 000000000..27b32981d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/braces-asterisk.md
@@ -0,0 +1,13 @@
+---
+title: Braces asterisk
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - code
+ - developer
+ - development
+ - software
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/braces.md b/vendor/twbs/bootstrap-icons/docs/content/icons/braces.md
new file mode 100644
index 000000000..bfc6948aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/braces.md
@@ -0,0 +1,13 @@
+---
+title: Braces
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - code
+ - developer
+ - development
+ - software
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bricks.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bricks.md
new file mode 100644
index 000000000..94304a474
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bricks.md
@@ -0,0 +1,8 @@
+---
+title: Bricks
+categories:
+ - Real world
+tags:
+ - wall
+ - firewall
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/briefcase-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/briefcase-fill.md
new file mode 100644
index 000000000..d4623f020
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/briefcase-fill.md
@@ -0,0 +1,9 @@
+---
+title: Briefcase fill
+categories:
+ - Real world
+tags:
+ - business
+ - bag
+ - baggage
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/briefcase.md b/vendor/twbs/bootstrap-icons/docs/content/icons/briefcase.md
new file mode 100644
index 000000000..286097787
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/briefcase.md
@@ -0,0 +1,9 @@
+---
+title: Briefcase
+categories:
+ - Real world
+tags:
+ - business
+ - bag
+ - baggage
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-high-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-high-fill.md
new file mode 100644
index 000000000..9ef6e34cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-high-fill.md
@@ -0,0 +1,9 @@
+---
+title: Brightness alt high fill
+categories:
+ - UI and keyboard
+tags:
+ - brightness
+ - sun
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-high.md b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-high.md
new file mode 100644
index 000000000..b72ad5aa4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-high.md
@@ -0,0 +1,9 @@
+---
+title: Brightness alt high
+categories:
+ - UI and keyboard
+tags:
+ - brightness
+ - sun
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-low-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-low-fill.md
new file mode 100644
index 000000000..cfcf72963
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-low-fill.md
@@ -0,0 +1,9 @@
+---
+title: Brightness alt low fill
+categories:
+ - UI and keyboard
+tags:
+ - brightness
+ - sun
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-low.md b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-low.md
new file mode 100644
index 000000000..cff83b05b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-alt-low.md
@@ -0,0 +1,9 @@
+---
+title: Brightness alt low
+categories:
+ - UI and keyboard
+tags:
+ - brightness
+ - sun
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-high-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-high-fill.md
new file mode 100644
index 000000000..f94ae59be
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-high-fill.md
@@ -0,0 +1,9 @@
+---
+title: Brightness high fill
+categories:
+ - UI and keyboard
+tags:
+ - brightness
+ - sun
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-high.md b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-high.md
new file mode 100644
index 000000000..a99c90d17
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-high.md
@@ -0,0 +1,9 @@
+---
+title: Brightness high
+categories:
+ - UI and keyboard
+tags:
+ - brightness
+ - sun
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-low-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-low-fill.md
new file mode 100644
index 000000000..1daa7932e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-low-fill.md
@@ -0,0 +1,9 @@
+---
+title: Brightness low fill
+categories:
+ - UI and keyboard
+tags:
+ - brightness
+ - sun
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-low.md b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-low.md
new file mode 100644
index 000000000..de15f2993
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/brightness-low.md
@@ -0,0 +1,9 @@
+---
+title: Brightness low
+categories:
+ - UI and keyboard
+tags:
+ - brightness
+ - sun
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/brilliance.md b/vendor/twbs/bootstrap-icons/docs/content/icons/brilliance.md
new file mode 100644
index 000000000..26ec17e2a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/brilliance.md
@@ -0,0 +1,11 @@
+---
+title: Brilliance
+categories:
+ - Graphics
+tags:
+ - photo
+ - editing
+ - image
+ - picture
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/broadcast-pin.md b/vendor/twbs/bootstrap-icons/docs/content/icons/broadcast-pin.md
new file mode 100644
index 000000000..1c4087d15
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/broadcast-pin.md
@@ -0,0 +1,11 @@
+---
+title: Broadcast pin
+categories:
+ - Communications
+tags:
+ - radio
+ - "radio wave"
+ - amplify
+ - wavelength
+ - podcast
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/broadcast.md b/vendor/twbs/bootstrap-icons/docs/content/icons/broadcast.md
new file mode 100644
index 000000000..0319be6b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/broadcast.md
@@ -0,0 +1,10 @@
+---
+title: Broadcast
+categories:
+ - Communications
+tags:
+ - radio
+ - "radio wave"
+ - amplify
+ - wavelength
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/browser-chrome.md b/vendor/twbs/bootstrap-icons/docs/content/icons/browser-chrome.md
new file mode 100644
index 000000000..187c5e535
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/browser-chrome.md
@@ -0,0 +1,10 @@
+---
+title: Browser Chrome
+categories:
+ - Brand
+tags:
+ - google
+ - webkit
+ - blink
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/browser-edge.md b/vendor/twbs/bootstrap-icons/docs/content/icons/browser-edge.md
new file mode 100644
index 000000000..e1297fecf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/browser-edge.md
@@ -0,0 +1,9 @@
+---
+title: Browser Edge
+categories:
+ - Brand
+tags:
+ - microsoft
+ - webkit
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/browser-firefox.md b/vendor/twbs/bootstrap-icons/docs/content/icons/browser-firefox.md
new file mode 100644
index 000000000..0db873694
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/browser-firefox.md
@@ -0,0 +1,8 @@
+---
+title: Browser Firefox
+categories:
+ - Brand
+tags:
+ - gecko
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/browser-safari.md b/vendor/twbs/bootstrap-icons/docs/content/icons/browser-safari.md
new file mode 100644
index 000000000..6f662449e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/browser-safari.md
@@ -0,0 +1,9 @@
+---
+title: Browser Safari
+categories:
+ - Brand
+tags:
+ - webkit
+ - apple
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/brush-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/brush-fill.md
new file mode 100644
index 000000000..c77289b64
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/brush-fill.md
@@ -0,0 +1,8 @@
+---
+title: Brush fill
+categories:
+ - Tools
+tags:
+ - paint
+ - art
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/brush.md b/vendor/twbs/bootstrap-icons/docs/content/icons/brush.md
new file mode 100644
index 000000000..ccdfa92ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/brush.md
@@ -0,0 +1,8 @@
+---
+title: Brush
+categories:
+ - Tools
+tags:
+ - paint
+ - art
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bucket-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bucket-fill.md
new file mode 100644
index 000000000..683bfe495
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bucket-fill.md
@@ -0,0 +1,8 @@
+---
+title: Bucket fill
+categories:
+ - Tools
+tags:
+ - tool
+ - pail
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bucket.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bucket.md
new file mode 100644
index 000000000..0e87412cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bucket.md
@@ -0,0 +1,8 @@
+---
+title: Bucket
+categories:
+ - Tools
+tags:
+ - tool
+ - pail
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bug-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bug-fill.md
new file mode 100644
index 000000000..a53b7b930
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bug-fill.md
@@ -0,0 +1,8 @@
+---
+title: Bug fill
+categories:
+ - Real world
+tags:
+ - insect
+ - error
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bug.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bug.md
new file mode 100644
index 000000000..84e75ff1d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bug.md
@@ -0,0 +1,8 @@
+---
+title: Bug
+categories:
+ - Real world
+tags:
+ - insect
+ - error
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-add.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-add.md
new file mode 100644
index 000000000..ca387012e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-add.md
@@ -0,0 +1,12 @@
+---
+title: Building add
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-check.md
new file mode 100644
index 000000000..88bf2fadf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-check.md
@@ -0,0 +1,12 @@
+---
+title: Building check
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-dash.md
new file mode 100644
index 000000000..b5ad53b93
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-dash.md
@@ -0,0 +1,12 @@
+---
+title: Building dash
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-down.md
new file mode 100644
index 000000000..093861d47
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-down.md
@@ -0,0 +1,12 @@
+---
+title: Building down
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-exclamation.md
new file mode 100644
index 000000000..e73d58e34
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-exclamation.md
@@ -0,0 +1,12 @@
+---
+title: Building exclamation
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-add.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-add.md
new file mode 100644
index 000000000..7a7eb126b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-add.md
@@ -0,0 +1,12 @@
+---
+title: Building fill add
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-check.md
new file mode 100644
index 000000000..1505f1113
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-check.md
@@ -0,0 +1,12 @@
+---
+title: Building fill check
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-dash.md
new file mode 100644
index 000000000..75fef3097
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-dash.md
@@ -0,0 +1,12 @@
+---
+title: Building fill dash
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-down.md
new file mode 100644
index 000000000..073f5e496
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-down.md
@@ -0,0 +1,12 @@
+---
+title: Building fill down
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-exclamation.md
new file mode 100644
index 000000000..0ddb7ea5f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-exclamation.md
@@ -0,0 +1,12 @@
+---
+title: Building fill exclamation
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-gear.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-gear.md
new file mode 100644
index 000000000..8e73f6a98
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-gear.md
@@ -0,0 +1,12 @@
+---
+title: Building fill gear
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-lock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-lock.md
new file mode 100644
index 000000000..ac1fa1a10
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-lock.md
@@ -0,0 +1,12 @@
+---
+title: Building fill lock
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-slash.md
new file mode 100644
index 000000000..2e7e8a345
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-slash.md
@@ -0,0 +1,12 @@
+---
+title: Building fill slash
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-up.md
new file mode 100644
index 000000000..ee41520b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-up.md
@@ -0,0 +1,12 @@
+---
+title: Building fill up
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-x.md
new file mode 100644
index 000000000..3ad3bf2c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill-x.md
@@ -0,0 +1,12 @@
+---
+title: Building fill x
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill.md
new file mode 100644
index 000000000..6687ab10b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-fill.md
@@ -0,0 +1,12 @@
+---
+title: Building fill
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-gear.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-gear.md
new file mode 100644
index 000000000..9ca42d613
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-gear.md
@@ -0,0 +1,12 @@
+---
+title: Building gear
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-lock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-lock.md
new file mode 100644
index 000000000..fa3230676
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-lock.md
@@ -0,0 +1,12 @@
+---
+title: Building lock
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-slash.md
new file mode 100644
index 000000000..9739e10c1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-slash.md
@@ -0,0 +1,12 @@
+---
+title: Building slash
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-up.md
new file mode 100644
index 000000000..0e86cc810
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-up.md
@@ -0,0 +1,12 @@
+---
+title: Building up
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building-x.md
new file mode 100644
index 000000000..bf3d48f35
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building-x.md
@@ -0,0 +1,12 @@
+---
+title: Building x
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/building.md b/vendor/twbs/bootstrap-icons/docs/content/icons/building.md
new file mode 100644
index 000000000..5cca68d14
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/building.md
@@ -0,0 +1,12 @@
+---
+title: Building
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/buildings-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/buildings-fill.md
new file mode 100644
index 000000000..00e574523
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/buildings-fill.md
@@ -0,0 +1,12 @@
+---
+title: Buildings fill
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/buildings.md b/vendor/twbs/bootstrap-icons/docs/content/icons/buildings.md
new file mode 100644
index 000000000..03625fd27
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/buildings.md
@@ -0,0 +1,12 @@
+---
+title: Buildings
+categories:
+ - Buildings
+tags:
+ - company
+ - enterprise
+ - organization
+ - office
+ - business
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bullseye.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bullseye.md
new file mode 100644
index 000000000..419ab412c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bullseye.md
@@ -0,0 +1,7 @@
+---
+title: Bullseye
+categories:
+ - Geo
+tags:
+ - target
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bus-front-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bus-front-fill.md
new file mode 100644
index 000000000..5c24a861a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bus-front-fill.md
@@ -0,0 +1,9 @@
+---
+title: Bus front fill
+categories:
+ - Transportation
+tags:
+ - "public transit"
+ - commute
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/bus-front.md b/vendor/twbs/bootstrap-icons/docs/content/icons/bus-front.md
new file mode 100644
index 000000000..824233bd8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/bus-front.md
@@ -0,0 +1,9 @@
+---
+title: Bus front
+categories:
+ - Transportation
+tags:
+ - "public transit"
+ - commute
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/c-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/c-circle-fill.md
new file mode 100644
index 000000000..95b8b3d66
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/c-circle-fill.md
@@ -0,0 +1,7 @@
+---
+title: C circle fill
+categories:
+ - Shapes
+tags:
+ - copyright
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/c-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/c-circle.md
new file mode 100644
index 000000000..9f5ae732a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/c-circle.md
@@ -0,0 +1,7 @@
+---
+title: C circle
+categories:
+ - Shapes
+tags:
+ - copyright
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/c-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/c-square-fill.md
new file mode 100644
index 000000000..bdfb1194d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/c-square-fill.md
@@ -0,0 +1,7 @@
+---
+title: C square fill
+categories:
+ - Shapes
+tags:
+ - copyright
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/c-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/c-square.md
new file mode 100644
index 000000000..34e20c76c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/c-square.md
@@ -0,0 +1,7 @@
+---
+title: C square
+categories:
+ - Shapes
+tags:
+ - copyright
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cake-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cake-fill.md
new file mode 100644
index 000000000..d16ac0ad4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cake-fill.md
@@ -0,0 +1,10 @@
+---
+title: Cake fill
+categories:
+ - Real World
+tags:
+ - birthday
+ - celebrate
+ - dessert
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cake.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cake.md
new file mode 100644
index 000000000..b0f88ee5b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cake.md
@@ -0,0 +1,10 @@
+---
+title: Cake
+categories:
+ - Real World
+tags:
+ - birthday
+ - celebrate
+ - dessert
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cake2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cake2-fill.md
new file mode 100644
index 000000000..c7fee55ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cake2-fill.md
@@ -0,0 +1,10 @@
+---
+title: Cake2 fill
+categories:
+ - Real World
+tags:
+ - birthday
+ - celebrate
+ - dessert
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cake2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cake2.md
new file mode 100644
index 000000000..ac41fa426
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cake2.md
@@ -0,0 +1,10 @@
+---
+title: Cake2
+categories:
+ - Real World
+tags:
+ - birthday
+ - celebrate
+ - dessert
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calculator-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calculator-fill.md
new file mode 100644
index 000000000..947859c48
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calculator-fill.md
@@ -0,0 +1,8 @@
+---
+title: Calculator fill
+categories:
+ - Devices
+tags:
+ - calculator
+ - math
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calculator.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calculator.md
new file mode 100644
index 000000000..c116ae2b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calculator.md
@@ -0,0 +1,8 @@
+---
+title: Calculator
+categories:
+ - Devices
+tags:
+ - calculator
+ - math
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-check-fill.md
new file mode 100644
index 000000000..d4f419bee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-check-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar check fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-check.md
new file mode 100644
index 000000000..e83438a01
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-check.md
@@ -0,0 +1,9 @@
+---
+title: Calendar check
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-date-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-date-fill.md
new file mode 100644
index 000000000..8d98cfabc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-date-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar date fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-date.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-date.md
new file mode 100644
index 000000000..36892512d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-date.md
@@ -0,0 +1,9 @@
+---
+title: Calendar date
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-day-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-day-fill.md
new file mode 100644
index 000000000..40821b8cb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-day-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar day fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-day.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-day.md
new file mode 100644
index 000000000..76f0db2c8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-day.md
@@ -0,0 +1,9 @@
+---
+title: Calendar day
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-event-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-event-fill.md
new file mode 100644
index 000000000..0c6c648e9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-event-fill.md
@@ -0,0 +1,10 @@
+---
+title: Calendar event fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - event
+ - invite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-event.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-event.md
new file mode 100644
index 000000000..ceb0e4785
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-event.md
@@ -0,0 +1,10 @@
+---
+title: Calendar event
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - event
+ - invite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-fill.md
new file mode 100644
index 000000000..13737722d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-heart-fill.md
new file mode 100644
index 000000000..7b3f6c890
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-heart-fill.md
@@ -0,0 +1,12 @@
+---
+title: Calendar heart fill
+categories:
+ - Date and time
+ - Love
+tags:
+ - date
+ - time
+ - month
+ - valentine
+ - date
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-heart.md
new file mode 100644
index 000000000..7fedf0862
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-heart.md
@@ -0,0 +1,12 @@
+---
+title: Calendar heart
+categories:
+ - Date and time
+ - Love
+tags:
+ - date
+ - time
+ - month
+ - valentine
+ - date
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-minus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-minus-fill.md
new file mode 100644
index 000000000..12aec314b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-minus-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar minus fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-minus.md
new file mode 100644
index 000000000..842552cea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-minus.md
@@ -0,0 +1,9 @@
+---
+title: Calendar minus
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-month-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-month-fill.md
new file mode 100644
index 000000000..5a4d63294
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-month-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar month fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-month.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-month.md
new file mode 100644
index 000000000..e406f8a16
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-month.md
@@ -0,0 +1,9 @@
+---
+title: Calendar month
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-plus-fill.md
new file mode 100644
index 000000000..edad96d33
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-plus-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar plus fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-plus.md
new file mode 100644
index 000000000..8d021746c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-plus.md
@@ -0,0 +1,9 @@
+---
+title: Calendar plus
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-range-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-range-fill.md
new file mode 100644
index 000000000..90ab2c9ba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-range-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar range fill
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-range.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-range.md
new file mode 100644
index 000000000..7b8bfa4c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-range.md
@@ -0,0 +1,9 @@
+---
+title: Calendar range
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-week-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-week-fill.md
new file mode 100644
index 000000000..59c0879e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-week-fill.md
@@ -0,0 +1,10 @@
+---
+title: Calendar week fill
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+ - week
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-week.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-week.md
new file mode 100644
index 000000000..e89cb8240
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-week.md
@@ -0,0 +1,10 @@
+---
+title: Calendar week
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+ - week
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-x-fill.md
new file mode 100644
index 000000000..5c399b5a0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-x-fill.md
@@ -0,0 +1,11 @@
+---
+title: Calendar x fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-x.md
new file mode 100644
index 000000000..3c6988670
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar-x.md
@@ -0,0 +1,11 @@
+---
+title: Calendar x
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar.md
new file mode 100644
index 000000000..ffea451c0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar.md
@@ -0,0 +1,9 @@
+---
+title: Calendar
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-check-fill.md
new file mode 100644
index 000000000..c061d9035
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-check-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 check fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-check.md
new file mode 100644
index 000000000..0210fa565
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-check.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 check
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-date-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-date-fill.md
new file mode 100644
index 000000000..4797fbf4e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-date-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 date fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-date.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-date.md
new file mode 100644
index 000000000..0a7cd4425
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-date.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 date
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-day-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-day-fill.md
new file mode 100644
index 000000000..67250b032
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-day-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 day fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-day.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-day.md
new file mode 100644
index 000000000..f5963dca6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-day.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 day
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-event-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-event-fill.md
new file mode 100644
index 000000000..6d306ca05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-event-fill.md
@@ -0,0 +1,10 @@
+---
+title: Calendar2 event fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - event
+ - invite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-event.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-event.md
new file mode 100644
index 000000000..81827f4ce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-event.md
@@ -0,0 +1,10 @@
+---
+title: Calendar2 event
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - event
+ - invite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-fill.md
new file mode 100644
index 000000000..9175bcabe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-heart-fill.md
new file mode 100644
index 000000000..7ef7cc1e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-heart-fill.md
@@ -0,0 +1,12 @@
+---
+title: Calendar2 heart fill
+categories:
+ - Date and time
+ - Love
+tags:
+ - date
+ - time
+ - month
+ - valentine
+ - date
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-heart.md
new file mode 100644
index 000000000..c266db615
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-heart.md
@@ -0,0 +1,12 @@
+---
+title: Calendar2 heart
+categories:
+ - Date and time
+ - Love
+tags:
+ - date
+ - time
+ - month
+ - valentine
+ - date
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-minus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-minus-fill.md
new file mode 100644
index 000000000..885719fc0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-minus-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 minus fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-minus.md
new file mode 100644
index 000000000..83734183d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-minus.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 minus
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-month-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-month-fill.md
new file mode 100644
index 000000000..8f8f59a16
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-month-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 month fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-month.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-month.md
new file mode 100644
index 000000000..8deb21fb9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-month.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 month
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-plus-fill.md
new file mode 100644
index 000000000..b8805be12
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-plus-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 plus fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-plus.md
new file mode 100644
index 000000000..cb9f6e10f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-plus.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 plus
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-range-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-range-fill.md
new file mode 100644
index 000000000..6278fc98a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-range-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2 range fill
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-range.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-range.md
new file mode 100644
index 000000000..6ee4475f4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-range.md
@@ -0,0 +1,10 @@
+---
+title: Calendar2 range
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-week-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-week-fill.md
new file mode 100644
index 000000000..5851eb1e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-week-fill.md
@@ -0,0 +1,10 @@
+---
+title: Calendar2 week fill
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+ - week
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-week.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-week.md
new file mode 100644
index 000000000..677753061
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-week.md
@@ -0,0 +1,10 @@
+---
+title: Calendar2 week
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+ - week
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-x-fill.md
new file mode 100644
index 000000000..c15e824cb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-x-fill.md
@@ -0,0 +1,11 @@
+---
+title: Calendar2 x fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-x.md
new file mode 100644
index 000000000..b59d391cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2-x.md
@@ -0,0 +1,11 @@
+---
+title: Calendar2 x
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2.md
new file mode 100644
index 000000000..09a173a76
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar2.md
@@ -0,0 +1,9 @@
+---
+title: Calendar2
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-event-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-event-fill.md
new file mode 100644
index 000000000..94fc5693e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-event-fill.md
@@ -0,0 +1,10 @@
+---
+title: Calendar3 event fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - event
+ - invite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-event.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-event.md
new file mode 100644
index 000000000..281ea7401
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-event.md
@@ -0,0 +1,10 @@
+---
+title: Calendar3 event
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - event
+ - invite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-fill.md
new file mode 100644
index 000000000..1cc20ed57
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar3 fill
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-range-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-range-fill.md
new file mode 100644
index 000000000..3c870f8bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-range-fill.md
@@ -0,0 +1,9 @@
+---
+title: Calendar3 range fill
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-range.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-range.md
new file mode 100644
index 000000000..0b74134cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-range.md
@@ -0,0 +1,9 @@
+---
+title: Calendar3 range
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-week-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-week-fill.md
new file mode 100644
index 000000000..a209d0f4e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-week-fill.md
@@ -0,0 +1,10 @@
+---
+title: Calendar3 week fill
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+ - week
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-week.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-week.md
new file mode 100644
index 000000000..fcf7ef9cc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3-week.md
@@ -0,0 +1,10 @@
+---
+title: Calendar3 week
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+ - week
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3.md
new file mode 100644
index 000000000..c9bca2b9d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar3.md
@@ -0,0 +1,9 @@
+---
+title: Calendar3
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-event.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-event.md
new file mode 100644
index 000000000..eb4639fe7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-event.md
@@ -0,0 +1,10 @@
+---
+title: Calendar4 event
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - event
+ - invite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-range.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-range.md
new file mode 100644
index 000000000..429dcb310
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-range.md
@@ -0,0 +1,9 @@
+---
+title: Calendar4 range
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-week.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-week.md
new file mode 100644
index 000000000..1cc5b2a89
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4-week.md
@@ -0,0 +1,10 @@
+---
+title: Calendar4 week
+categories:
+ - Date and time
+tags:
+ - dates
+ - timeline
+ - duration
+ - week
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4.md b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4.md
new file mode 100644
index 000000000..3f3e94a5a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/calendar4.md
@@ -0,0 +1,9 @@
+---
+title: Calendar4
+categories:
+ - Date and time
+tags:
+ - date
+ - time
+ - month
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/camera-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-fill.md
new file mode 100644
index 000000000..ff362e076
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-fill.md
@@ -0,0 +1,8 @@
+---
+title: Camera fill
+categories:
+ - Devices
+tags:
+ - photos
+ - photography
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/camera-reels-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-reels-fill.md
new file mode 100644
index 000000000..69aa4baf2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-reels-fill.md
@@ -0,0 +1,9 @@
+---
+title: Camera reels fill
+categories:
+ - Devices
+tags:
+ - av
+ - video
+ - film
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/camera-reels.md b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-reels.md
new file mode 100644
index 000000000..3898bc6f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-reels.md
@@ -0,0 +1,9 @@
+---
+title: Camera reels
+categories:
+ - Devices
+tags:
+ - av
+ - video
+ - film
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-fill.md
new file mode 100644
index 000000000..cb98c049f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-fill.md
@@ -0,0 +1,9 @@
+---
+title: Camera video fill
+categories:
+ - Devices
+tags:
+ - av
+ - video
+ - film
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-off-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-off-fill.md
new file mode 100644
index 000000000..dc8b9cbfe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-off-fill.md
@@ -0,0 +1,9 @@
+---
+title: Camera video off fill
+categories:
+ - Devices
+tags:
+ - av
+ - video
+ - film
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-off.md b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-off.md
new file mode 100644
index 000000000..c7786f7ca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video-off.md
@@ -0,0 +1,9 @@
+---
+title: Camera video off
+categories:
+ - Devices
+tags:
+ - av
+ - video
+ - film
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video.md b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video.md
new file mode 100644
index 000000000..fac83ed1a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/camera-video.md
@@ -0,0 +1,9 @@
+---
+title: Camera video
+categories:
+ - Devices
+tags:
+ - av
+ - video
+ - film
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/camera.md b/vendor/twbs/bootstrap-icons/docs/content/icons/camera.md
new file mode 100644
index 000000000..e22b7bb31
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/camera.md
@@ -0,0 +1,8 @@
+---
+title: Camera
+categories:
+ - Devices
+tags:
+ - photos
+ - photography
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/camera2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/camera2.md
new file mode 100644
index 000000000..e22b7bb31
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/camera2.md
@@ -0,0 +1,8 @@
+---
+title: Camera
+categories:
+ - Devices
+tags:
+ - photos
+ - photography
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/capslock-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/capslock-fill.md
new file mode 100644
index 000000000..b41715cab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/capslock-fill.md
@@ -0,0 +1,7 @@
+---
+title: Capslock fill
+categories:
+ - UI and keyboard
+tags:
+ - key
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/capslock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/capslock.md
new file mode 100644
index 000000000..f23e4fdcd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/capslock.md
@@ -0,0 +1,7 @@
+---
+title: Capslock
+categories:
+ - UI and keyboard
+tags:
+ - key
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/capsule-pill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/capsule-pill.md
new file mode 100644
index 000000000..80b4f934c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/capsule-pill.md
@@ -0,0 +1,10 @@
+---
+title: Capsule pill
+categories:
+ - Medical
+tags:
+ - rx
+ - pills
+ - capsules
+ - medicine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/capsule.md b/vendor/twbs/bootstrap-icons/docs/content/icons/capsule.md
new file mode 100644
index 000000000..e66174442
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/capsule.md
@@ -0,0 +1,10 @@
+---
+title: Capsule
+categories:
+ - Medical
+tags:
+ - rx
+ - pills
+ - capsules
+ - medicine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/car-front-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/car-front-fill.md
new file mode 100644
index 000000000..1327782a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/car-front-fill.md
@@ -0,0 +1,13 @@
+---
+title: Car front fill
+categories:
+ - Transportation
+tags:
+ - automobile
+ - automotive
+ - auto
+ - sedan
+ - drive
+ - driving
+ - vehicle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/car-front.md b/vendor/twbs/bootstrap-icons/docs/content/icons/car-front.md
new file mode 100644
index 000000000..8ada32be5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/car-front.md
@@ -0,0 +1,13 @@
+---
+title: Car front
+categories:
+ - Transportation
+tags:
+ - automobile
+ - automotive
+ - auto
+ - sedan
+ - drive
+ - driving
+ - vehicle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/card-checklist.md b/vendor/twbs/bootstrap-icons/docs/content/icons/card-checklist.md
new file mode 100644
index 000000000..69101e60b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/card-checklist.md
@@ -0,0 +1,9 @@
+---
+title: Card checklist
+categories:
+ - Files and folders
+tags:
+ - note
+ - card
+ - notecard
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/card-heading.md b/vendor/twbs/bootstrap-icons/docs/content/icons/card-heading.md
new file mode 100644
index 000000000..5e6bfcb9e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/card-heading.md
@@ -0,0 +1,9 @@
+---
+title: Card heading
+categories:
+ - Files and folders
+tags:
+ - note
+ - card
+ - notecard
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/card-image.md b/vendor/twbs/bootstrap-icons/docs/content/icons/card-image.md
new file mode 100644
index 000000000..11612ef85
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/card-image.md
@@ -0,0 +1,9 @@
+---
+title: Card image
+categories:
+ - Files and folders
+tags:
+ - note
+ - card
+ - notecard
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/card-list.md b/vendor/twbs/bootstrap-icons/docs/content/icons/card-list.md
new file mode 100644
index 000000000..2ee629efa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/card-list.md
@@ -0,0 +1,9 @@
+---
+title: Card list
+categories:
+ - Files and folders
+tags:
+ - note
+ - card
+ - notecard
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/card-text.md b/vendor/twbs/bootstrap-icons/docs/content/icons/card-text.md
new file mode 100644
index 000000000..4aca5a8b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/card-text.md
@@ -0,0 +1,10 @@
+---
+title: Card text
+categories:
+ - Files and folders
+tags:
+ - note
+ - card
+ - notecard
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-fill.md
new file mode 100644
index 000000000..962db7136
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-fill.md
@@ -0,0 +1,9 @@
+---
+title: Caret down fill
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-square-fill.md
new file mode 100644
index 000000000..385e2956d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-square-fill.md
@@ -0,0 +1,9 @@
+---
+title: Caret down square fill
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-square.md
new file mode 100644
index 000000000..31b68014d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down-square.md
@@ -0,0 +1,9 @@
+---
+title: Caret down square
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down.md
new file mode 100644
index 000000000..31a3c5a66
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-down.md
@@ -0,0 +1,9 @@
+---
+title: Caret down
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-fill.md
new file mode 100644
index 000000000..4ad1a09c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-fill.md
@@ -0,0 +1,9 @@
+---
+title: Caret left fill
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-square-fill.md
new file mode 100644
index 000000000..4eec4a5b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-square-fill.md
@@ -0,0 +1,9 @@
+---
+title: Caret left square fill
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-square.md
new file mode 100644
index 000000000..40a186476
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left-square.md
@@ -0,0 +1,9 @@
+---
+title: Caret left square
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left.md
new file mode 100644
index 000000000..3755eff4a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-left.md
@@ -0,0 +1,9 @@
+---
+title: Caret left
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-fill.md
new file mode 100644
index 000000000..b9f9b05a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-fill.md
@@ -0,0 +1,9 @@
+---
+title: Caret right fill
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-square-fill.md
new file mode 100644
index 000000000..ec797faa9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-square-fill.md
@@ -0,0 +1,9 @@
+---
+title: Caret right square fill
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-square.md
new file mode 100644
index 000000000..832d19a07
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right-square.md
@@ -0,0 +1,9 @@
+---
+title: Caret right square
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right.md
new file mode 100644
index 000000000..191b5aaf5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-right.md
@@ -0,0 +1,9 @@
+---
+title: Caret right
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-fill.md
new file mode 100644
index 000000000..75225609e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-fill.md
@@ -0,0 +1,9 @@
+---
+title: Caret up fill
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-square-fill.md
new file mode 100644
index 000000000..aa20647e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-square-fill.md
@@ -0,0 +1,9 @@
+---
+title: Caret up square fill
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-square.md
new file mode 100644
index 000000000..c9f6e0c8a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up-square.md
@@ -0,0 +1,9 @@
+---
+title: Caret up square
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up.md
new file mode 100644
index 000000000..09458c46d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/caret-up.md
@@ -0,0 +1,9 @@
+---
+title: Caret up
+categories:
+ - Carets
+tags:
+ - caret
+ - arrow
+ - triangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-check-fill.md
new file mode 100644
index 000000000..b04deab72
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-check-fill.md
@@ -0,0 +1,12 @@
+---
+title: Cart check fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-check.md
new file mode 100644
index 000000000..be016e194
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-check.md
@@ -0,0 +1,12 @@
+---
+title: Cart check
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart-dash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-dash-fill.md
new file mode 100644
index 000000000..74e1d5715
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-dash-fill.md
@@ -0,0 +1,12 @@
+---
+title: Cart dash fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-dash.md
new file mode 100644
index 000000000..fee768084
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-dash.md
@@ -0,0 +1,12 @@
+---
+title: Cart dash
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-fill.md
new file mode 100644
index 000000000..d7d296222
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-fill.md
@@ -0,0 +1,12 @@
+---
+title: Cart fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-plus-fill.md
new file mode 100644
index 000000000..dd96a4094
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-plus-fill.md
@@ -0,0 +1,12 @@
+---
+title: Cart plus fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-plus.md
new file mode 100644
index 000000000..1736570ec
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-plus.md
@@ -0,0 +1,12 @@
+---
+title: Cart plus
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-x-fill.md
new file mode 100644
index 000000000..3d788ab8a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-x-fill.md
@@ -0,0 +1,12 @@
+---
+title: Cart x fill
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-x.md
new file mode 100644
index 000000000..603e089c8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart-x.md
@@ -0,0 +1,12 @@
+---
+title: Cart x
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart.md
new file mode 100644
index 000000000..8838cd323
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart.md
@@ -0,0 +1,12 @@
+---
+title: Cart
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart2.md
new file mode 100644
index 000000000..32904cafb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart2.md
@@ -0,0 +1,12 @@
+---
+title: Cart2
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart3.md
new file mode 100644
index 000000000..105c60b16
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart3.md
@@ -0,0 +1,12 @@
+---
+title: Cart3
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cart4.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cart4.md
new file mode 100644
index 000000000..30f3fed48
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cart4.md
@@ -0,0 +1,12 @@
+---
+title: Cart4
+categories:
+ - Commerce
+tags:
+ - shopping
+ - checkout
+ - check
+ - cart
+ - basket
+ - bag
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cash-coin.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cash-coin.md
new file mode 100644
index 000000000..66d5113fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cash-coin.md
@@ -0,0 +1,10 @@
+---
+title: Cash coin
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+ - banking
+ - currency
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cash-stack.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cash-stack.md
new file mode 100644
index 000000000..463073272
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cash-stack.md
@@ -0,0 +1,11 @@
+---
+title: Cash stack
+categories:
+ - Commerce
+tags:
+ - money
+ - bills
+ - funds
+ - wallet
+ - currency
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cash.md
new file mode 100644
index 000000000..43b989ed7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cash.md
@@ -0,0 +1,11 @@
+---
+title: Cash
+categories:
+ - Commerce
+tags:
+ - money
+ - bills
+ - funds
+ - wallet
+ - currency
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cassette-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cassette-fill.md
new file mode 100644
index 000000000..3260190f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cassette-fill.md
@@ -0,0 +1,9 @@
+---
+title: Cassette fill
+categories:
+ - Media
+tags:
+ - tape
+ - music
+ - audio
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cassette.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cassette.md
new file mode 100644
index 000000000..ed1da3a7d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cassette.md
@@ -0,0 +1,9 @@
+---
+title: Cassette
+categories:
+ - Media
+tags:
+ - tape
+ - music
+ - audio
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cast.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cast.md
new file mode 100644
index 000000000..4556e32a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cast.md
@@ -0,0 +1,10 @@
+---
+title: Cast
+categories:
+ - Media
+tags:
+ - airplay
+ - project
+ - stream
+ - display
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cc-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cc-circle-fill.md
new file mode 100644
index 000000000..49155c147
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cc-circle-fill.md
@@ -0,0 +1,7 @@
+---
+title: CC circle fill
+categories:
+ - Shapes
+tags:
+ - "creative commons"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cc-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cc-circle.md
new file mode 100644
index 000000000..2eba7e27b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cc-circle.md
@@ -0,0 +1,7 @@
+---
+title: CC circle
+categories:
+ - Shapes
+tags:
+ - "creative commons"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cc-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cc-square-fill.md
new file mode 100644
index 000000000..1383abc79
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cc-square-fill.md
@@ -0,0 +1,7 @@
+---
+title: CC square fill
+categories:
+ - Shapes
+tags:
+ - "creative commons"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cc-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cc-square.md
new file mode 100644
index 000000000..cd44fc9c2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cc-square.md
@@ -0,0 +1,7 @@
+---
+title: CC square
+categories:
+ - Shapes
+tags:
+ - "creative commons"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-dots-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-dots-fill.md
new file mode 100644
index 000000000..f7999b5f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-dots-fill.md
@@ -0,0 +1,11 @@
+---
+title: Chat dots fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - typing
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-dots.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-dots.md
new file mode 100644
index 000000000..7c7669544
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-dots.md
@@ -0,0 +1,11 @@
+---
+title: Chat dots
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - typing
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-fill.md
new file mode 100644
index 000000000..4c7690961
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-fill.md
@@ -0,0 +1,10 @@
+---
+title: Chat fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-heart-fill.md
new file mode 100644
index 000000000..c63611dca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-heart-fill.md
@@ -0,0 +1,13 @@
+---
+title: Chat heart fill
+categories:
+ - Communications
+ - Love
+tags:
+ - chat bubble
+ - text
+ - message
+ - valentine
+ - romance
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-heart.md
new file mode 100644
index 000000000..0910254d6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-heart.md
@@ -0,0 +1,13 @@
+---
+title: Chat heart
+categories:
+ - Communications
+ - Love
+tags:
+ - chat bubble
+ - text
+ - message
+ - valentine
+ - romance
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-dots-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-dots-fill.md
new file mode 100644
index 000000000..955e1ad0f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-dots-fill.md
@@ -0,0 +1,11 @@
+---
+title: Chat left dots fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - typing
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-dots.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-dots.md
new file mode 100644
index 000000000..22f6eb479
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-dots.md
@@ -0,0 +1,11 @@
+---
+title: Chat left dots
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - typing
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-fill.md
new file mode 100644
index 000000000..459faf9ec
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-fill.md
@@ -0,0 +1,10 @@
+---
+title: Chat left fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-heart-fill.md
new file mode 100644
index 000000000..a5d6ea1e3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-heart-fill.md
@@ -0,0 +1,13 @@
+---
+title: Chat left heart fill
+categories:
+ - Communications
+ - Love
+tags:
+ - chat bubble
+ - text
+ - message
+ - valentine
+ - romance
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-heart.md
new file mode 100644
index 000000000..2f335841f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-heart.md
@@ -0,0 +1,13 @@
+---
+title: Chat left heart
+categories:
+ - Communications
+ - Love
+tags:
+ - chat bubble
+ - text
+ - message
+ - valentine
+ - romance
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-quote-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-quote-fill.md
new file mode 100644
index 000000000..2d5a1279f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-quote-fill.md
@@ -0,0 +1,11 @@
+---
+title: Chat left quote fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - quote
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-quote.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-quote.md
new file mode 100644
index 000000000..d7efa0806
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-quote.md
@@ -0,0 +1,11 @@
+---
+title: Chat left quote
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - quote
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-text-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-text-fill.md
new file mode 100644
index 000000000..f0a28b6f2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-text-fill.md
@@ -0,0 +1,10 @@
+---
+title: Chat left text fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-text.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-text.md
new file mode 100644
index 000000000..9d2ce078f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left-text.md
@@ -0,0 +1,10 @@
+---
+title: Chat left text
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left.md
new file mode 100644
index 000000000..b24a834c8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-left.md
@@ -0,0 +1,10 @@
+---
+title: Chat left
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-quote-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-quote-fill.md
new file mode 100644
index 000000000..71742bb96
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-quote-fill.md
@@ -0,0 +1,11 @@
+---
+title: Chat quote fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - quote
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-quote.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-quote.md
new file mode 100644
index 000000000..2f2042bfc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-quote.md
@@ -0,0 +1,11 @@
+---
+title: Chat quote
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - quote
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-dots-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-dots-fill.md
new file mode 100644
index 000000000..2a6d9e714
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-dots-fill.md
@@ -0,0 +1,11 @@
+---
+title: Chat right dots fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - typing
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-dots.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-dots.md
new file mode 100644
index 000000000..bfa43362d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-dots.md
@@ -0,0 +1,11 @@
+---
+title: Chat right dots
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - typing
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-fill.md
new file mode 100644
index 000000000..3f7676249
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-fill.md
@@ -0,0 +1,10 @@
+---
+title: Chat right fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-heart-fill.md
new file mode 100644
index 000000000..99267c356
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-heart-fill.md
@@ -0,0 +1,13 @@
+---
+title: Chat right heart fill
+categories:
+ - Communications
+ - Love
+tags:
+ - chat bubble
+ - text
+ - message
+ - valentine
+ - romance
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-heart.md
new file mode 100644
index 000000000..5b00e87a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-heart.md
@@ -0,0 +1,13 @@
+---
+title: Chat right heart
+categories:
+ - Communications
+ - Love
+tags:
+ - chat bubble
+ - text
+ - message
+ - valentine
+ - romance
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-quote-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-quote-fill.md
new file mode 100644
index 000000000..21a48e1a3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-quote-fill.md
@@ -0,0 +1,11 @@
+---
+title: Chat right quote fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - quote
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-quote.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-quote.md
new file mode 100644
index 000000000..980fdf707
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-quote.md
@@ -0,0 +1,11 @@
+---
+title: Chat right quote
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - quote
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-text-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-text-fill.md
new file mode 100644
index 000000000..1abc2ab57
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-text-fill.md
@@ -0,0 +1,10 @@
+---
+title: Chat right text fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-text.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-text.md
new file mode 100644
index 000000000..f7aa3dc16
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right-text.md
@@ -0,0 +1,10 @@
+---
+title: Chat right text
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right.md
new file mode 100644
index 000000000..532ea934b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-right.md
@@ -0,0 +1,10 @@
+---
+title: Chat right
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-dots-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-dots-fill.md
new file mode 100644
index 000000000..08410680a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-dots-fill.md
@@ -0,0 +1,11 @@
+---
+title: Chat square dots fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - typing
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-dots.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-dots.md
new file mode 100644
index 000000000..1e2382f50
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-dots.md
@@ -0,0 +1,11 @@
+---
+title: Chat square dots
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - typing
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-fill.md
new file mode 100644
index 000000000..37d7851be
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-fill.md
@@ -0,0 +1,10 @@
+---
+title: Chat square fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-heart-fill.md
new file mode 100644
index 000000000..f5adf739f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-heart-fill.md
@@ -0,0 +1,13 @@
+---
+title: Chat square heart fill
+categories:
+ - Communications
+ - Love
+tags:
+ - chat bubble
+ - text
+ - message
+ - valentine
+ - romance
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-heart.md
new file mode 100644
index 000000000..f2fb96ace
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-heart.md
@@ -0,0 +1,13 @@
+---
+title: Chat square heart
+categories:
+ - Communications
+ - Love
+tags:
+ - chat bubble
+ - text
+ - message
+ - valentine
+ - romance
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-quote-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-quote-fill.md
new file mode 100644
index 000000000..e658b59f0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-quote-fill.md
@@ -0,0 +1,11 @@
+---
+title: Chat square quote fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - quote
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-quote.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-quote.md
new file mode 100644
index 000000000..7965ba94a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-quote.md
@@ -0,0 +1,11 @@
+---
+title: Chat square quote
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - quote
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-text-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-text-fill.md
new file mode 100644
index 000000000..8fb1ba68d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-text-fill.md
@@ -0,0 +1,10 @@
+---
+title: Chat square text fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-text.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-text.md
new file mode 100644
index 000000000..7ca0b938c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square-text.md
@@ -0,0 +1,10 @@
+---
+title: Chat square text
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square.md
new file mode 100644
index 000000000..4261629bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-square.md
@@ -0,0 +1,10 @@
+---
+title: Chat square
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-text-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-text-fill.md
new file mode 100644
index 000000000..c557a8d3a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-text-fill.md
@@ -0,0 +1,10 @@
+---
+title: Chat text fill
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat-text.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-text.md
new file mode 100644
index 000000000..700c3e300
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat-text.md
@@ -0,0 +1,10 @@
+---
+title: Chat text
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chat.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chat.md
new file mode 100644
index 000000000..1c24824a0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chat.md
@@ -0,0 +1,10 @@
+---
+title: Chat
+categories:
+ - Communications
+tags:
+ - chat bubble
+ - text
+ - message
+ - comment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/check-all.md b/vendor/twbs/bootstrap-icons/docs/content/icons/check-all.md
new file mode 100644
index 000000000..aec6fdd95
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/check-all.md
@@ -0,0 +1,10 @@
+---
+title: Check all
+categories:
+ - UI and keyboard
+tags:
+ - checkmark
+ - todo
+ - done
+ - select
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/check-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/check-circle-fill.md
new file mode 100644
index 000000000..5b0140491
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/check-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Check circle fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - checkmark
+ - confirm
+ - done
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/check-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/check-circle.md
new file mode 100644
index 000000000..0fbdc7a5d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/check-circle.md
@@ -0,0 +1,9 @@
+---
+title: Check circle
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - checkmark
+ - confirm
+ - done
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/check-lg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/check-lg.md
new file mode 100644
index 000000000..5cdb71577
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/check-lg.md
@@ -0,0 +1,9 @@
+---
+title: Check lg
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - checkmark
+ - confirm
+ - done
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/check-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/check-square-fill.md
new file mode 100644
index 000000000..2b083d49c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/check-square-fill.md
@@ -0,0 +1,9 @@
+---
+title: Check square fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - checkmark
+ - confirm
+ - done
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/check-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/check-square.md
new file mode 100644
index 000000000..e4b2eef3c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/check-square.md
@@ -0,0 +1,9 @@
+---
+title: Check square
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - checkmark
+ - confirm
+ - done
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/check.md
new file mode 100644
index 000000000..8b00934a6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/check.md
@@ -0,0 +1,9 @@
+---
+title: Check
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - checkmark
+ - confirm
+ - done
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/check2-all.md b/vendor/twbs/bootstrap-icons/docs/content/icons/check2-all.md
new file mode 100644
index 000000000..9a6f9120c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/check2-all.md
@@ -0,0 +1,11 @@
+---
+title: Check2 all
+categories:
+ - UI and keyboard
+tags:
+ - checkmark
+ - todo
+ - select
+ - done
+ - checkbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/check2-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/check2-circle.md
new file mode 100644
index 000000000..a5b6a687b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/check2-circle.md
@@ -0,0 +1,11 @@
+---
+title: Check2 circle
+categories:
+ - UI and keyboard
+tags:
+ - checkmark
+ - todo
+ - select
+ - done
+ - checkbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/check2-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/check2-square.md
new file mode 100644
index 000000000..970917c89
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/check2-square.md
@@ -0,0 +1,11 @@
+---
+title: Check2 square
+categories:
+ - UI and keyboard
+tags:
+ - checkmark
+ - todo
+ - select
+ - done
+ - checkbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/check2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/check2.md
new file mode 100644
index 000000000..e8aed2a02
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/check2.md
@@ -0,0 +1,11 @@
+---
+title: Check2
+categories:
+ - UI and keyboard
+tags:
+ - checkmark
+ - todo
+ - select
+ - done
+ - checkbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-contract.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-contract.md
new file mode 100644
index 000000000..48020b9cc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-contract.md
@@ -0,0 +1,7 @@
+---
+title: Chevron bar contract
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-down.md
new file mode 100644
index 000000000..8bce98eb9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-down.md
@@ -0,0 +1,7 @@
+---
+title: Chevron bar down
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-expand.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-expand.md
new file mode 100644
index 000000000..bb5a5ba0e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-expand.md
@@ -0,0 +1,7 @@
+---
+title: Chevron bar expand
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-left.md
new file mode 100644
index 000000000..2fc7574a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-left.md
@@ -0,0 +1,7 @@
+---
+title: Chevron bar left
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-right.md
new file mode 100644
index 000000000..8688ff669
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-right.md
@@ -0,0 +1,7 @@
+---
+title: Chevron bar right
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-up.md
new file mode 100644
index 000000000..043f43b3f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-bar-up.md
@@ -0,0 +1,7 @@
+---
+title: Chevron bar up
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-down.md
new file mode 100644
index 000000000..0570f28b0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-down.md
@@ -0,0 +1,7 @@
+---
+title: Chevron compact down
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-left.md
new file mode 100644
index 000000000..bccdb0ab1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-left.md
@@ -0,0 +1,7 @@
+---
+title: Chevron compact left
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-right.md
new file mode 100644
index 000000000..a170b5761
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-right.md
@@ -0,0 +1,7 @@
+---
+title: Chevron compact right
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-up.md
new file mode 100644
index 000000000..b8bf4d0a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-compact-up.md
@@ -0,0 +1,7 @@
+---
+title: Chevron compact up
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-contract.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-contract.md
new file mode 100644
index 000000000..358657aa6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-contract.md
@@ -0,0 +1,7 @@
+---
+title: Chevron contract
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-down.md
new file mode 100644
index 000000000..164101f8c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-down.md
@@ -0,0 +1,7 @@
+---
+title: Chevron double down
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-left.md
new file mode 100644
index 000000000..36b91114f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-left.md
@@ -0,0 +1,7 @@
+---
+title: Chevron double left
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-right.md
new file mode 100644
index 000000000..8df1904b8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-right.md
@@ -0,0 +1,7 @@
+---
+title: Chevron double right
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-up.md
new file mode 100644
index 000000000..6afc3ac1e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-double-up.md
@@ -0,0 +1,7 @@
+---
+title: Chevron double up
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-down.md
new file mode 100644
index 000000000..c399867a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-down.md
@@ -0,0 +1,7 @@
+---
+title: Chevron down
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-expand.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-expand.md
new file mode 100644
index 000000000..9012a0b2f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-expand.md
@@ -0,0 +1,7 @@
+---
+title: Chevron expand
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-left.md
new file mode 100644
index 000000000..0313fabc8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-left.md
@@ -0,0 +1,7 @@
+---
+title: Chevron left
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-right.md
new file mode 100644
index 000000000..19ca65782
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-right.md
@@ -0,0 +1,7 @@
+---
+title: Chevron right
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-up.md
new file mode 100644
index 000000000..5474cc93a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/chevron-up.md
@@ -0,0 +1,7 @@
+---
+title: Chevron up
+categories:
+ - Chevrons
+tags:
+ - chevron
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/circle-fill.md
new file mode 100644
index 000000000..1568b04a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/circle-fill.md
@@ -0,0 +1,7 @@
+---
+title: Circle fill
+categories:
+ - Shapes
+tags:
+ - shape
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/circle-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/circle-half.md
new file mode 100644
index 000000000..1c41937b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/circle-half.md
@@ -0,0 +1,7 @@
+---
+title: Circle half fill
+categories:
+ - Shapes
+tags:
+ - shape
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/circle-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/circle-square.md
new file mode 100644
index 000000000..d652c8b0c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/circle-square.md
@@ -0,0 +1,10 @@
+---
+title: Circle square
+categories:
+ - Graphics
+tags:
+ - graphics
+ - vector
+ - merge
+ - layers
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/circle.md
new file mode 100644
index 000000000..466e6e103
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/circle.md
@@ -0,0 +1,7 @@
+---
+title: Circle
+categories:
+ - Shapes
+tags:
+ - shape
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-check-fill.md
new file mode 100644
index 000000000..b1b24eef6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-check-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard check fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-check.md
new file mode 100644
index 000000000..bc9602eb7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-check.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard check
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-data-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-data-fill.md
new file mode 100644
index 000000000..7a6eebc7d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-data-fill.md
@@ -0,0 +1,12 @@
+---
+title: Clipboard data fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+ - data
+ - analytics
+ - graph
+ - chart
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-data.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-data.md
new file mode 100644
index 000000000..ca23c4ecf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-data.md
@@ -0,0 +1,12 @@
+---
+title: Clipboard data
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+ - data
+ - analytics
+ - graph
+ - chart
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-fill.md
new file mode 100644
index 000000000..37350c200
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-heart-fill.md
new file mode 100644
index 000000000..fad3c222c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-heart-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard heart fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-heart.md
new file mode 100644
index 000000000..2fff3ff1f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-heart.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard heart
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-minus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-minus-fill.md
new file mode 100644
index 000000000..29841852b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-minus-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard minus fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-minus.md
new file mode 100644
index 000000000..4fe0a6cfa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-minus.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard minus
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-plus-fill.md
new file mode 100644
index 000000000..20a7475c8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-plus-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard plus fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-plus.md
new file mode 100644
index 000000000..02bfa09f1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-plus.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard plus
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-pulse.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-pulse.md
new file mode 100644
index 000000000..1adebf4dd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-pulse.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard pulse
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-x-fill.md
new file mode 100644
index 000000000..c5d984d2d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-x-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard x fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-x.md
new file mode 100644
index 000000000..9507675f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard-x.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard x
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard.md
new file mode 100644
index 000000000..0ddb51d16
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-check-fill.md
new file mode 100644
index 000000000..e15cc4810
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-check-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2 check fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-check.md
new file mode 100644
index 000000000..3835d08ba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-check.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2 check
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-data-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-data-fill.md
new file mode 100644
index 000000000..4cd018aa8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-data-fill.md
@@ -0,0 +1,12 @@
+---
+title: Clipboard2 data fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+ - data
+ - analytics
+ - graph
+ - chart
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-data.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-data.md
new file mode 100644
index 000000000..62c9c1c2a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-data.md
@@ -0,0 +1,12 @@
+---
+title: Clipboard2 data
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+ - data
+ - analytics
+ - graph
+ - chart
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-fill.md
new file mode 100644
index 000000000..c9a9bbc03
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2 fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-heart-fill.md
new file mode 100644
index 000000000..d957d6632
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-heart-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2 heart fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-heart.md
new file mode 100644
index 000000000..cef7678ca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-heart.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2 heart
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-minus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-minus-fill.md
new file mode 100644
index 000000000..6c527fae6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-minus-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2 minus fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-minus.md
new file mode 100644
index 000000000..74c69fde8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-minus.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2 minus
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-plus-fill.md
new file mode 100644
index 000000000..71789dc1e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-plus-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2 plus fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-plus.md
new file mode 100644
index 000000000..3a5e6c4a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-plus.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2 plus
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-pulse-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-pulse-fill.md
new file mode 100644
index 000000000..942c6eb7a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-pulse-fill.md
@@ -0,0 +1,10 @@
+---
+title: Clipboard2 pulse fill
+categories:
+ - Real world
+ - Medical
+tags:
+ - copy
+ - paste
+ - heartrate
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-pulse.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-pulse.md
new file mode 100644
index 000000000..650b9bf0c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-pulse.md
@@ -0,0 +1,10 @@
+---
+title: Clipboard2 pulse
+categories:
+ - Real world
+ - Medical
+tags:
+ - copy
+ - paste
+ - heartrate
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-x-fill.md
new file mode 100644
index 000000000..34b5681d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-x-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2 x fill
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-x.md
new file mode 100644
index 000000000..6fab6c0f9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2-x.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2 x
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2.md
new file mode 100644
index 000000000..313821c4d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clipboard2.md
@@ -0,0 +1,8 @@
+---
+title: Clipboard2
+categories:
+ - Real world
+tags:
+ - copy
+ - paste
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clock-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clock-fill.md
new file mode 100644
index 000000000..2f76b5606
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clock-fill.md
@@ -0,0 +1,7 @@
+---
+title: Clock fill
+categories:
+ - Miscellaneous
+tags:
+ - time
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clock-history.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clock-history.md
new file mode 100644
index 000000000..2d1bb182b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clock-history.md
@@ -0,0 +1,8 @@
+---
+title: Clock history
+categories:
+ - Miscellaneous
+tags:
+ - time
+ - history
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clock.md
new file mode 100644
index 000000000..b19bf9ae1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clock.md
@@ -0,0 +1,7 @@
+---
+title: Clock
+categories:
+ - Miscellaneous
+tags:
+ - time
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-down-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-down-fill.md
new file mode 100644
index 000000000..e0e6fe4f1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-down-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud arrow down fill
+categories:
+ - Clouds
+tags:
+ - download
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-down.md
new file mode 100644
index 000000000..eb0bb8e92
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-down.md
@@ -0,0 +1,7 @@
+---
+title: Cloud arrow down
+categories:
+ - Clouds
+tags:
+ - download
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-up-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-up-fill.md
new file mode 100644
index 000000000..0023bfa67
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-up-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud arrow up fill
+categories:
+ - Clouds
+tags:
+ - upload
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-up.md
new file mode 100644
index 000000000..6a1cd4d37
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-arrow-up.md
@@ -0,0 +1,7 @@
+---
+title: Cloud arrow up
+categories:
+ - Clouds
+tags:
+ - upload
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-check-fill.md
new file mode 100644
index 000000000..e471a44a3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-check-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud check fill
+categories:
+ - Clouds
+tags:
+ - checkmark
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-check.md
new file mode 100644
index 000000000..385048d28
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-check.md
@@ -0,0 +1,7 @@
+---
+title: Cloud check
+categories:
+ - Clouds
+tags:
+ - checkmark
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-download-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-download-fill.md
new file mode 100644
index 000000000..ec7cd82bc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-download-fill.md
@@ -0,0 +1,8 @@
+---
+title: Cloud download fill
+categories:
+ - Clouds
+tags:
+ - arrow
+ - save
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-download.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-download.md
new file mode 100644
index 000000000..fbf3e5f49
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-download.md
@@ -0,0 +1,8 @@
+---
+title: Cloud download
+categories:
+ - Clouds
+tags:
+ - arrow
+ - save
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-drizzle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-drizzle-fill.md
new file mode 100644
index 000000000..7288cebd6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-drizzle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Cloud drizzle fill
+categories:
+ - Weather
+tags:
+ - storm
+ - rain
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-drizzle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-drizzle.md
new file mode 100644
index 000000000..612904b1d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-drizzle.md
@@ -0,0 +1,8 @@
+---
+title: Cloud drizzle
+categories:
+ - Weather
+tags:
+ - storm
+ - rain
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fill.md
new file mode 100644
index 000000000..54c277722
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud fill
+categories:
+ - Clouds
+tags:
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog-fill.md
new file mode 100644
index 000000000..966af6911
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud fog fill
+categories:
+ - Weather
+tags:
+ - foggy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog.md
new file mode 100644
index 000000000..aa15d8eea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog.md
@@ -0,0 +1,7 @@
+---
+title: Cloud fog
+categories:
+ - Weather
+tags:
+ - foggy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog2-fill.md
new file mode 100644
index 000000000..942441a1f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog2-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud fog2 fill
+categories:
+ - Weather
+tags:
+ - foggy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog2.md
new file mode 100644
index 000000000..21a74a341
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-fog2.md
@@ -0,0 +1,7 @@
+---
+title: Cloud fog2
+categories:
+ - Weather
+tags:
+ - foggy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-hail-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-hail-fill.md
new file mode 100644
index 000000000..e51c30ffd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-hail-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud hail fill
+categories:
+ - Weather
+tags:
+ - storm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-hail.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-hail.md
new file mode 100644
index 000000000..daa6a9dd4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-hail.md
@@ -0,0 +1,7 @@
+---
+title: Cloud hail
+categories:
+ - Weather
+tags:
+ - storm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze-fill.md
new file mode 100644
index 000000000..78a760415
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud haze fill
+categories:
+ - Weather
+tags:
+ - smog
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze.md
new file mode 100644
index 000000000..b97a32dc2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze.md
@@ -0,0 +1,7 @@
+---
+title: Cloud haze
+categories:
+ - Weather
+tags:
+ - smog
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze2-fill.md
new file mode 100644
index 000000000..d5a9f484e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze2-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud haze2 fill
+categories:
+ - Weather
+tags:
+ - smog
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze2.md
new file mode 100644
index 000000000..9c58839ef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-haze2.md
@@ -0,0 +1,7 @@
+---
+title: Cloud haze2
+categories:
+ - Weather
+tags:
+ - smog
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-fill.md
new file mode 100644
index 000000000..9fd5de48a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-fill.md
@@ -0,0 +1,8 @@
+---
+title: Cloud lightning fill
+categories:
+ - Weather
+tags:
+ - thunder
+ - storm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-rain-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-rain-fill.md
new file mode 100644
index 000000000..eb7a4b242
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-rain-fill.md
@@ -0,0 +1,8 @@
+---
+title: Cloud lightning rain fill
+categories:
+ - Weather
+tags:
+ - thunder
+ - storm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-rain.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-rain.md
new file mode 100644
index 000000000..38b3b12d2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning-rain.md
@@ -0,0 +1,8 @@
+---
+title: Cloud lightning rain
+categories:
+ - Weather
+tags:
+ - thunder
+ - storm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning.md
new file mode 100644
index 000000000..40d431347
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-lightning.md
@@ -0,0 +1,8 @@
+---
+title: Cloud lightning
+categories:
+ - Weather
+tags:
+ - thunder
+ - storm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-minus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-minus-fill.md
new file mode 100644
index 000000000..54af3f166
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-minus-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud minus fill
+categories:
+ - Clouds
+tags:
+ - subtract
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-minus.md
new file mode 100644
index 000000000..199ed58ff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-minus.md
@@ -0,0 +1,7 @@
+---
+title: Cloud minus
+categories:
+ - Clouds
+tags:
+ - subtract
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-moon-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-moon-fill.md
new file mode 100644
index 000000000..8e4f3bc74
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-moon-fill.md
@@ -0,0 +1,8 @@
+---
+title: Cloud moon fill
+categories:
+ - Weather
+tags:
+ - cloudy
+ - overcast
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-moon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-moon.md
new file mode 100644
index 000000000..ff3c93512
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-moon.md
@@ -0,0 +1,8 @@
+---
+title: Cloud moon
+categories:
+ - Weather
+tags:
+ - cloudy
+ - overcast
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-plus-fill.md
new file mode 100644
index 000000000..e17beaaff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-plus-fill.md
@@ -0,0 +1,9 @@
+---
+title: Cloud plus fill
+categories:
+ - Clouds
+tags:
+ - add
+ - new
+ - upload
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-plus.md
new file mode 100644
index 000000000..b7bfc4cae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-plus.md
@@ -0,0 +1,9 @@
+---
+title: Cloud plus
+categories:
+ - Clouds
+tags:
+ - add
+ - new
+ - upload
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-fill.md
new file mode 100644
index 000000000..d1d9168d3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-fill.md
@@ -0,0 +1,9 @@
+---
+title: Cloud rain fill
+categories:
+ - Weather
+tags:
+ - cloud
+ - rainstorm
+ - storm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-heavy-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-heavy-fill.md
new file mode 100644
index 000000000..3112a1db1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-heavy-fill.md
@@ -0,0 +1,9 @@
+---
+title: Cloud rain heavy fill
+categories:
+ - Weather
+tags:
+ - cloud
+ - rainstorm
+ - storm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-heavy.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-heavy.md
new file mode 100644
index 000000000..e1c7ccd60
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain-heavy.md
@@ -0,0 +1,9 @@
+---
+title: Cloud rain heavy
+categories:
+ - Weather
+tags:
+ - cloud
+ - rainstorm
+ - storm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain.md
new file mode 100644
index 000000000..24831b438
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-rain.md
@@ -0,0 +1,9 @@
+---
+title: Cloud rain
+categories:
+ - Weather
+tags:
+ - cloud
+ - rainstorm
+ - storm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-slash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-slash-fill.md
new file mode 100644
index 000000000..87f54845d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-slash-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud slash fill
+categories:
+ - Clouds
+tags:
+ - cloud
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-slash.md
new file mode 100644
index 000000000..fcb8e4577
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-slash.md
@@ -0,0 +1,7 @@
+---
+title: Cloud slash
+categories:
+ - Clouds
+tags:
+ - cloud
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sleet-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sleet-fill.md
new file mode 100644
index 000000000..8c5ad115f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sleet-fill.md
@@ -0,0 +1,9 @@
+---
+title: Cloud sleet fill
+categories:
+ - Weather
+tags:
+ - cloud
+ - blizzard
+ - flurries
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sleet.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sleet.md
new file mode 100644
index 000000000..80ec0cf02
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sleet.md
@@ -0,0 +1,9 @@
+---
+title: Cloud sleet
+categories:
+ - Weather
+tags:
+ - cloud
+ - blizzard
+ - flurries
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-snow-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-snow-fill.md
new file mode 100644
index 000000000..6c5728c92
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-snow-fill.md
@@ -0,0 +1,9 @@
+---
+title: Cloud snow fill
+categories:
+ - Weather
+tags:
+ - cloud
+ - blizzard
+ - flurries
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-snow.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-snow.md
new file mode 100644
index 000000000..83c0b2aee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-snow.md
@@ -0,0 +1,9 @@
+---
+title: Cloud snow
+categories:
+ - Weather
+tags:
+ - cloud
+ - blizzard
+ - flurries
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sun-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sun-fill.md
new file mode 100644
index 000000000..01decd06e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sun-fill.md
@@ -0,0 +1,8 @@
+---
+title: Cloud sun fill
+categories:
+ - Weather
+tags:
+ - cloudy
+ - overcast
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sun.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sun.md
new file mode 100644
index 000000000..44bc3d002
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-sun.md
@@ -0,0 +1,8 @@
+---
+title: Cloud sun
+categories:
+ - Weather
+tags:
+ - cloudy
+ - overcast
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-upload-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-upload-fill.md
new file mode 100644
index 000000000..95947f2e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-upload-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cloud upload fill
+categories:
+ - Clouds
+tags:
+ - cloud
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-upload.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-upload.md
new file mode 100644
index 000000000..c584a1f3c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud-upload.md
@@ -0,0 +1,7 @@
+---
+title: Cloud upload
+categories:
+ - Clouds
+tags:
+ - cloud
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloud.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud.md
new file mode 100644
index 000000000..c76b2e842
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloud.md
@@ -0,0 +1,7 @@
+---
+title: Cloud
+categories:
+ - Clouds
+tags:
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clouds-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clouds-fill.md
new file mode 100644
index 000000000..9606ab848
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clouds-fill.md
@@ -0,0 +1,8 @@
+---
+title: Clouds fill
+categories:
+ - Weather
+tags:
+ - clouds
+ - overcast
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/clouds.md b/vendor/twbs/bootstrap-icons/docs/content/icons/clouds.md
new file mode 100644
index 000000000..ed3311d31
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/clouds.md
@@ -0,0 +1,8 @@
+---
+title: Clouds
+categories:
+ - Weather
+tags:
+ - clouds
+ - overcast
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloudy-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloudy-fill.md
new file mode 100644
index 000000000..da7a1f2d8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloudy-fill.md
@@ -0,0 +1,8 @@
+---
+title: Cloudy fill
+categories:
+ - Weather
+tags:
+ - clouds
+ - overcast
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cloudy.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cloudy.md
new file mode 100644
index 000000000..649a63e90
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cloudy.md
@@ -0,0 +1,8 @@
+---
+title: Cloudy
+categories:
+ - Weather
+tags:
+ - clouds
+ - overcast
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/code-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/code-slash.md
new file mode 100644
index 000000000..66a271f50
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/code-slash.md
@@ -0,0 +1,13 @@
+---
+title: Code slash
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - code
+ - developer
+ - development
+ - software
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/code-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/code-square.md
new file mode 100644
index 000000000..bd257d50f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/code-square.md
@@ -0,0 +1,14 @@
+---
+title: Code square
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - code
+ - developer
+ - development
+ - software
+ - preformatted
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/code.md b/vendor/twbs/bootstrap-icons/docs/content/icons/code.md
new file mode 100644
index 000000000..a863c70af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/code.md
@@ -0,0 +1,12 @@
+---
+title: Code
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - code
+ - developer
+ - development
+ - software
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/coin.md b/vendor/twbs/bootstrap-icons/docs/content/icons/coin.md
new file mode 100644
index 000000000..7690561c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/coin.md
@@ -0,0 +1,10 @@
+---
+title: Coin
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+ - banking
+ - currency
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/collection-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/collection-fill.md
new file mode 100644
index 000000000..9e528d9d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/collection-fill.md
@@ -0,0 +1,8 @@
+---
+title: Collection fill
+categories:
+ - Media
+tags:
+ - library
+ - group
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/collection-play-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/collection-play-fill.md
new file mode 100644
index 000000000..9345d8b96
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/collection-play-fill.md
@@ -0,0 +1,9 @@
+---
+title: Collection play fill
+categories:
+ - Media
+tags:
+ - library
+ - group
+ - play
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/collection-play.md b/vendor/twbs/bootstrap-icons/docs/content/icons/collection-play.md
new file mode 100644
index 000000000..30c6cd51f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/collection-play.md
@@ -0,0 +1,9 @@
+---
+title: Collection play
+categories:
+ - Media
+tags:
+ - library
+ - group
+ - play
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/collection.md b/vendor/twbs/bootstrap-icons/docs/content/icons/collection.md
new file mode 100644
index 000000000..3fe4cfe65
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/collection.md
@@ -0,0 +1,8 @@
+---
+title: Collection
+categories:
+ - Media
+tags:
+ - library
+ - group
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/columns-gap.md b/vendor/twbs/bootstrap-icons/docs/content/icons/columns-gap.md
new file mode 100644
index 000000000..688d5d273
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/columns-gap.md
@@ -0,0 +1,8 @@
+---
+title: Columns gap
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/columns.md b/vendor/twbs/bootstrap-icons/docs/content/icons/columns.md
new file mode 100644
index 000000000..149b684d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/columns.md
@@ -0,0 +1,8 @@
+---
+title: Columns
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/command.md b/vendor/twbs/bootstrap-icons/docs/content/icons/command.md
new file mode 100644
index 000000000..bd7ffbf56
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/command.md
@@ -0,0 +1,8 @@
+---
+title: Command
+categories:
+ - UI and keyboard
+tags:
+ - key
+ - mac
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/compass-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/compass-fill.md
new file mode 100644
index 000000000..bca58e1c4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/compass-fill.md
@@ -0,0 +1,9 @@
+---
+title: Compass fill
+categories:
+ - Geo
+tags:
+ - direction
+ - map
+ - location
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/compass.md b/vendor/twbs/bootstrap-icons/docs/content/icons/compass.md
new file mode 100644
index 000000000..077f5fd97
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/compass.md
@@ -0,0 +1,9 @@
+---
+title: Compass
+categories:
+ - Geo
+tags:
+ - direction
+ - map
+ - location
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cone-striped.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cone-striped.md
new file mode 100644
index 000000000..4060c53dc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cone-striped.md
@@ -0,0 +1,9 @@
+---
+title: Cone striped
+categories:
+ - Real world
+tags:
+ - construction
+ - warning
+ - safety
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cone.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cone.md
new file mode 100644
index 000000000..2698dfd4f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cone.md
@@ -0,0 +1,9 @@
+---
+title: Cone
+categories:
+ - Real world
+tags:
+ - construction
+ - warning
+ - safety
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/controller.md b/vendor/twbs/bootstrap-icons/docs/content/icons/controller.md
new file mode 100644
index 000000000..78e7ce696
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/controller.md
@@ -0,0 +1,9 @@
+---
+title: Controller
+categories:
+ - Devices
+tags:
+ - game
+ - gaming
+ - video-game
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cookie.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cookie.md
new file mode 100644
index 000000000..ee2198896
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cookie.md
@@ -0,0 +1,8 @@
+---
+title: Cookie
+categories:
+ - Real World
+tags:
+ - dessert
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/copy.md b/vendor/twbs/bootstrap-icons/docs/content/icons/copy.md
new file mode 100644
index 000000000..3cf4f1018
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/copy.md
@@ -0,0 +1,11 @@
+---
+title: Copy
+categories:
+ - UI and keyboard
+tags:
+ - paste
+ - clone
+ - cut
+ - duplicate
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cpu-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cpu-fill.md
new file mode 100644
index 000000000..904fd9ef9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cpu-fill.md
@@ -0,0 +1,9 @@
+---
+title: Cpu fill
+categories:
+ - Devices
+tags:
+ - processor
+ - chip
+ - computer
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cpu.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cpu.md
new file mode 100644
index 000000000..76ce288d8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cpu.md
@@ -0,0 +1,9 @@
+---
+title: CPU
+categories:
+ - Devices
+tags:
+ - processor
+ - chip
+ - computer
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-back-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-back-fill.md
new file mode 100644
index 000000000..8fb4acce2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-back-fill.md
@@ -0,0 +1,9 @@
+---
+title: Credit card 2 back fill
+categories:
+ - Real world
+tags:
+ - debit
+ - card
+ - payment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-back.md b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-back.md
new file mode 100644
index 000000000..8b8ae8b3b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-back.md
@@ -0,0 +1,9 @@
+---
+title: Credit card 2 back
+categories:
+ - Real world
+tags:
+ - debit
+ - card
+ - payment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-front-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-front-fill.md
new file mode 100644
index 000000000..19c99c6d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-front-fill.md
@@ -0,0 +1,9 @@
+---
+title: Credit card 2 front fill
+categories:
+ - Real world
+tags:
+ - debit
+ - card
+ - payment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-front.md b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-front.md
new file mode 100644
index 000000000..88358ccb0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-2-front.md
@@ -0,0 +1,9 @@
+---
+title: Credit card 2 front
+categories:
+ - Real world
+tags:
+ - debit
+ - card
+ - payment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-fill.md
new file mode 100644
index 000000000..242c9c707
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card-fill.md
@@ -0,0 +1,9 @@
+---
+title: Credit card fill
+categories:
+ - Real world
+tags:
+ - debit
+ - card
+ - payment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card.md b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card.md
new file mode 100644
index 000000000..9f0929cd5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/credit-card.md
@@ -0,0 +1,9 @@
+---
+title: Credit card
+categories:
+ - Real world
+tags:
+ - debit
+ - card
+ - payment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/crop.md b/vendor/twbs/bootstrap-icons/docs/content/icons/crop.md
new file mode 100644
index 000000000..910b61fef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/crop.md
@@ -0,0 +1,7 @@
+---
+title: Crop
+categories:
+ - Graphics
+tags:
+ - crop
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/crosshair.md b/vendor/twbs/bootstrap-icons/docs/content/icons/crosshair.md
new file mode 100644
index 000000000..a28c58e7c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/crosshair.md
@@ -0,0 +1,11 @@
+---
+title: Crosshair
+categories:
+ - Geo
+tags:
+ - geography
+ - map
+ - pin
+ - location
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/crosshair2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/crosshair2.md
new file mode 100644
index 000000000..4016fa778
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/crosshair2.md
@@ -0,0 +1,11 @@
+---
+title: Crosshair2
+categories:
+ - Geo
+tags:
+ - geography
+ - map
+ - pin
+ - location
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cup-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cup-fill.md
new file mode 100644
index 000000000..ce0d3376d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cup-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cup fill
+categories:
+ - Real world
+tags:
+ - mug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cup-hot-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cup-hot-fill.md
new file mode 100644
index 000000000..e96d3d395
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cup-hot-fill.md
@@ -0,0 +1,10 @@
+---
+title: Cup hot fill
+categories:
+ - Real world
+tags:
+ - mug
+ - steam
+ - coffee
+ - tea
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cup-hot.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cup-hot.md
new file mode 100644
index 000000000..996c721ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cup-hot.md
@@ -0,0 +1,10 @@
+---
+title: Cup hot
+categories:
+ - Real world
+tags:
+ - mug
+ - steam
+ - coffee
+ - tea
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cup-straw.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cup-straw.md
new file mode 100644
index 000000000..893db7b40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cup-straw.md
@@ -0,0 +1,9 @@
+---
+title: Cup straw
+categories:
+ - Real world
+tags:
+ - mug
+ - glass
+ - drink
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cup.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cup.md
new file mode 100644
index 000000000..3880f6d1e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cup.md
@@ -0,0 +1,7 @@
+---
+title: Cup
+categories:
+ - Real world
+tags:
+ - mug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/currency-bitcoin.md b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-bitcoin.md
new file mode 100644
index 000000000..98945215a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-bitcoin.md
@@ -0,0 +1,9 @@
+---
+title: Currency bitcoin
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+ - crypto
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/currency-dollar.md b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-dollar.md
new file mode 100644
index 000000000..731a2d895
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-dollar.md
@@ -0,0 +1,9 @@
+---
+title: Currency dollar
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+ - usd
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/currency-euro.md b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-euro.md
new file mode 100644
index 000000000..2431a8889
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-euro.md
@@ -0,0 +1,8 @@
+---
+title: Currency euro
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/currency-exchange.md b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-exchange.md
new file mode 100644
index 000000000..cc2445638
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-exchange.md
@@ -0,0 +1,8 @@
+---
+title: Currency exchange
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/currency-pound.md b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-pound.md
new file mode 100644
index 000000000..c6ccb2c43
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-pound.md
@@ -0,0 +1,8 @@
+---
+title: Currency pound
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/currency-rupee.md b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-rupee.md
new file mode 100644
index 000000000..97a60fab2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-rupee.md
@@ -0,0 +1,8 @@
+---
+title: Currency rupee
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/currency-yen.md b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-yen.md
new file mode 100644
index 000000000..376462777
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/currency-yen.md
@@ -0,0 +1,8 @@
+---
+title: Currency yen
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cursor-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cursor-fill.md
new file mode 100644
index 000000000..d7e66ccad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cursor-fill.md
@@ -0,0 +1,7 @@
+---
+title: Cursor fill
+categories:
+ - Geo
+tags:
+ - pointer
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cursor-text.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cursor-text.md
new file mode 100644
index 000000000..fbdcc5a7c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cursor-text.md
@@ -0,0 +1,9 @@
+---
+title: Cursor text
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - cursor
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/cursor.md b/vendor/twbs/bootstrap-icons/docs/content/icons/cursor.md
new file mode 100644
index 000000000..fad7aa5db
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/cursor.md
@@ -0,0 +1,7 @@
+---
+title: Cursor
+categories:
+ - Geo
+tags:
+ - pointer
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle-dotted.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle-dotted.md
new file mode 100644
index 000000000..6c16b117b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle-dotted.md
@@ -0,0 +1,7 @@
+---
+title: Dash circle dotted
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - minus
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle-fill.md
new file mode 100644
index 000000000..0065315e6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle-fill.md
@@ -0,0 +1,7 @@
+---
+title: Dash circle fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - minus
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle.md
new file mode 100644
index 000000000..0e06063f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-circle.md
@@ -0,0 +1,7 @@
+---
+title: Dash circle
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - minus
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dash-lg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-lg.md
new file mode 100644
index 000000000..bee20148f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-lg.md
@@ -0,0 +1,7 @@
+---
+title: Dash lg
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - minus
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dash-square-dotted.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-square-dotted.md
new file mode 100644
index 000000000..a3d3a02d8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-square-dotted.md
@@ -0,0 +1,7 @@
+---
+title: Dash square dotted
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - minus
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dash-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-square-fill.md
new file mode 100644
index 000000000..6b7d03763
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-square-fill.md
@@ -0,0 +1,7 @@
+---
+title: Dash square fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - minus
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dash-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-square.md
new file mode 100644
index 000000000..4760c9a99
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dash-square.md
@@ -0,0 +1,7 @@
+---
+title: Dash square
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - minus
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dash.md
new file mode 100644
index 000000000..638f13a4a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dash.md
@@ -0,0 +1,7 @@
+---
+title: Dash
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - minus
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-add.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-add.md
new file mode 100644
index 000000000..a2b7785c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-add.md
@@ -0,0 +1,9 @@
+---
+title: Database add
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-check.md
new file mode 100644
index 000000000..910c72f40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-check.md
@@ -0,0 +1,9 @@
+---
+title: Database check
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-dash.md
new file mode 100644
index 000000000..fa3ecdb21
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-dash.md
@@ -0,0 +1,9 @@
+---
+title: Database dash
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-down.md
new file mode 100644
index 000000000..8c15a5726
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-down.md
@@ -0,0 +1,9 @@
+---
+title: Database down
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-exclamation.md
new file mode 100644
index 000000000..bad9b5995
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-exclamation.md
@@ -0,0 +1,9 @@
+---
+title: Database exclamation
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-add.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-add.md
new file mode 100644
index 000000000..af8c6da83
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-add.md
@@ -0,0 +1,9 @@
+---
+title: Database fill add
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-check.md
new file mode 100644
index 000000000..3c6b92952
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-check.md
@@ -0,0 +1,9 @@
+---
+title: Database fill check
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-dash.md
new file mode 100644
index 000000000..eb0521e54
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-dash.md
@@ -0,0 +1,9 @@
+---
+title: Database fill dash
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-down.md
new file mode 100644
index 000000000..a8cee36eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-down.md
@@ -0,0 +1,9 @@
+---
+title: Database fill down
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-exclamation.md
new file mode 100644
index 000000000..9fb09456f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-exclamation.md
@@ -0,0 +1,9 @@
+---
+title: Database fill exclamation
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-gear.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-gear.md
new file mode 100644
index 000000000..4a6d0c1f4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-gear.md
@@ -0,0 +1,9 @@
+---
+title: Database fill gear
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-lock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-lock.md
new file mode 100644
index 000000000..e68fbaff9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-lock.md
@@ -0,0 +1,9 @@
+---
+title: Database fill lock
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-slash.md
new file mode 100644
index 000000000..431d6d70b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-slash.md
@@ -0,0 +1,9 @@
+---
+title: Database fill slash
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-up.md
new file mode 100644
index 000000000..f10dfabb4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-up.md
@@ -0,0 +1,9 @@
+---
+title: Database fill up
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-x.md
new file mode 100644
index 000000000..f56688b2e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill-x.md
@@ -0,0 +1,9 @@
+---
+title: Database fill x
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill.md
new file mode 100644
index 000000000..f54b9f205
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-fill.md
@@ -0,0 +1,9 @@
+---
+title: Database fill
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-gear.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-gear.md
new file mode 100644
index 000000000..b64b0efe6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-gear.md
@@ -0,0 +1,9 @@
+---
+title: Database gear
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-lock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-lock.md
new file mode 100644
index 000000000..52aa0cc87
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-lock.md
@@ -0,0 +1,9 @@
+---
+title: Database lock
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-slash.md
new file mode 100644
index 000000000..a13bddc19
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-slash.md
@@ -0,0 +1,9 @@
+---
+title: Database slash
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-up.md
new file mode 100644
index 000000000..64f9faff2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-up.md
@@ -0,0 +1,9 @@
+---
+title: Database up
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database-x.md
new file mode 100644
index 000000000..a178924bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database-x.md
@@ -0,0 +1,9 @@
+---
+title: Database x
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/database.md b/vendor/twbs/bootstrap-icons/docs/content/icons/database.md
new file mode 100644
index 000000000..42f499fb3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/database.md
@@ -0,0 +1,9 @@
+---
+title: Database
+categories:
+ - Devices
+tags:
+ - server
+ - data
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/device-hdd-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/device-hdd-fill.md
new file mode 100644
index 000000000..70d3cac96
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/device-hdd-fill.md
@@ -0,0 +1,8 @@
+---
+title: Device HDD fill
+categories:
+ - Devices
+tags:
+ - drive
+ - "hard drive"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/device-hdd.md b/vendor/twbs/bootstrap-icons/docs/content/icons/device-hdd.md
new file mode 100644
index 000000000..031f0d6d8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/device-hdd.md
@@ -0,0 +1,8 @@
+---
+title: Device HDD
+categories:
+ - Devices
+tags:
+ - drive
+ - "hard drive"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/device-ssd-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/device-ssd-fill.md
new file mode 100644
index 000000000..21f149e58
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/device-ssd-fill.md
@@ -0,0 +1,8 @@
+---
+title: Device SSD fill
+categories:
+ - Devices
+tags:
+ - "solid state"
+ - drive
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/device-ssd.md b/vendor/twbs/bootstrap-icons/docs/content/icons/device-ssd.md
new file mode 100644
index 000000000..8b7112b11
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/device-ssd.md
@@ -0,0 +1,8 @@
+---
+title: Device SSD
+categories:
+ - Devices
+tags:
+ - "solid state"
+ - drive
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-2-fill.md
new file mode 100644
index 000000000..77fb1f69a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-2-fill.md
@@ -0,0 +1,11 @@
+---
+title: Diagram 2 fill
+categories:
+ - Graphics
+tags:
+ - node
+ - diagram
+ - sitemap
+ - children
+ - "org chart"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-2.md
new file mode 100644
index 000000000..e75333944
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-2.md
@@ -0,0 +1,11 @@
+---
+title: Diagram 2
+categories:
+ - Graphics
+tags:
+ - node
+ - diagram
+ - sitemap
+ - children
+ - "org chart"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-3-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-3-fill.md
new file mode 100644
index 000000000..db8d40313
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-3-fill.md
@@ -0,0 +1,11 @@
+---
+title: Diagram 3 fill
+categories:
+ - Graphics
+tags:
+ - node
+ - diagram
+ - sitemap
+ - children
+ - "org chart"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-3.md
new file mode 100644
index 000000000..a6ba2eac9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/diagram-3.md
@@ -0,0 +1,11 @@
+---
+title: Diagram 3
+categories:
+ - Graphics
+tags:
+ - node
+ - diagram
+ - sitemap
+ - children
+ - "org chart"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/diamond-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/diamond-fill.md
new file mode 100644
index 000000000..078dbe2e2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/diamond-fill.md
@@ -0,0 +1,7 @@
+---
+title: Diamond fill
+categories:
+ - Shapes
+tags:
+ - shape
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/diamond-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/diamond-half.md
new file mode 100644
index 000000000..bed654524
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/diamond-half.md
@@ -0,0 +1,7 @@
+---
+title: Diamond half fill
+categories:
+ - Shapes
+tags:
+ - shape
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/diamond.md b/vendor/twbs/bootstrap-icons/docs/content/icons/diamond.md
new file mode 100644
index 000000000..2d915bfcb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/diamond.md
@@ -0,0 +1,7 @@
+---
+title: Diamond
+categories:
+ - Shapes
+tags:
+ - shape
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-1-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-1-fill.md
new file mode 100644
index 000000000..7bb07804d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-1-fill.md
@@ -0,0 +1,11 @@
+---
+title: Dice 1 fill
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-1.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-1.md
new file mode 100644
index 000000000..d47c72b14
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-1.md
@@ -0,0 +1,11 @@
+---
+title: Dice 1
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-2-fill.md
new file mode 100644
index 000000000..529992e0d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-2-fill.md
@@ -0,0 +1,11 @@
+---
+title: Dice 2 fill
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-2.md
new file mode 100644
index 000000000..c8cb5ec9c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-2.md
@@ -0,0 +1,11 @@
+---
+title: Dice 2
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-3-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-3-fill.md
new file mode 100644
index 000000000..b27845dee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-3-fill.md
@@ -0,0 +1,11 @@
+---
+title: Dice 3 fill
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-3.md
new file mode 100644
index 000000000..f49beae32
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-3.md
@@ -0,0 +1,11 @@
+---
+title: Dice 3
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-4-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-4-fill.md
new file mode 100644
index 000000000..b9af43259
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-4-fill.md
@@ -0,0 +1,11 @@
+---
+title: Dice 4 fill
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-4.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-4.md
new file mode 100644
index 000000000..3320aae5e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-4.md
@@ -0,0 +1,11 @@
+---
+title: Dice 4
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-5-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-5-fill.md
new file mode 100644
index 000000000..17482ee40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-5-fill.md
@@ -0,0 +1,11 @@
+---
+title: Dice 5 fill
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-5.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-5.md
new file mode 100644
index 000000000..6ec6fadfa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-5.md
@@ -0,0 +1,11 @@
+---
+title: Dice 5
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-6-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-6-fill.md
new file mode 100644
index 000000000..26e6c6fde
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-6-fill.md
@@ -0,0 +1,11 @@
+---
+title: Dice 6 fill
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dice-6.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-6.md
new file mode 100644
index 000000000..4f5d28c35
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dice-6.md
@@ -0,0 +1,11 @@
+---
+title: Dice 6
+categories:
+ - Entertainment
+tags:
+ - dice
+ - die
+ - games
+ - gaming
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/disc-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/disc-fill.md
new file mode 100644
index 000000000..c4e9508a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/disc-fill.md
@@ -0,0 +1,10 @@
+---
+title: Disc fill
+categories:
+ - Media
+tags:
+ - cd
+ - compact disc
+ - bluray
+ - dvd
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/disc.md b/vendor/twbs/bootstrap-icons/docs/content/icons/disc.md
new file mode 100644
index 000000000..21b2c7863
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/disc.md
@@ -0,0 +1,10 @@
+---
+title: Disc
+categories:
+ - Media
+tags:
+ - cd
+ - compact disc
+ - bluray
+ - dvd
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/discord.md b/vendor/twbs/bootstrap-icons/docs/content/icons/discord.md
new file mode 100644
index 000000000..0065598a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/discord.md
@@ -0,0 +1,8 @@
+---
+title: Discord
+categories:
+ - Brand
+tags:
+ - social
+ - chat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/display-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/display-fill.md
new file mode 100644
index 000000000..1cebd34ec
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/display-fill.md
@@ -0,0 +1,8 @@
+---
+title: Display fill
+categories:
+ - Devices
+tags:
+ - monitor
+ - external
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/display.md b/vendor/twbs/bootstrap-icons/docs/content/icons/display.md
new file mode 100644
index 000000000..d3da8949b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/display.md
@@ -0,0 +1,8 @@
+---
+title: Display
+categories:
+ - Devices
+tags:
+ - monitor
+ - external
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/displayport-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/displayport-fill.md
new file mode 100644
index 000000000..f41dcb9ee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/displayport-fill.md
@@ -0,0 +1,8 @@
+---
+title: DisplayPort fill
+categories:
+ - Devices
+tags:
+ - video
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/displayport.md b/vendor/twbs/bootstrap-icons/docs/content/icons/displayport.md
new file mode 100644
index 000000000..a96e4f16c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/displayport.md
@@ -0,0 +1,8 @@
+---
+title: DisplayPort
+categories:
+ - Devices
+tags:
+ - video
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/distribute-horizontal.md b/vendor/twbs/bootstrap-icons/docs/content/icons/distribute-horizontal.md
new file mode 100644
index 000000000..77b3a3292
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/distribute-horizontal.md
@@ -0,0 +1,8 @@
+---
+title: Distribute horizontal
+categories:
+ - Graphics
+tags:
+ - space
+ - align
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/distribute-vertical.md b/vendor/twbs/bootstrap-icons/docs/content/icons/distribute-vertical.md
new file mode 100644
index 000000000..a8e0f31d9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/distribute-vertical.md
@@ -0,0 +1,8 @@
+---
+title: Distribute vertical
+categories:
+ - Graphics
+tags:
+ - space
+ - align
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/door-closed-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/door-closed-fill.md
new file mode 100644
index 000000000..d758690b9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/door-closed-fill.md
@@ -0,0 +1,9 @@
+---
+title: Door closed fill
+categories:
+ - Real world
+tags:
+ - door
+ - logout
+ - signout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/door-closed.md b/vendor/twbs/bootstrap-icons/docs/content/icons/door-closed.md
new file mode 100644
index 000000000..26e73ea75
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/door-closed.md
@@ -0,0 +1,9 @@
+---
+title: Door closed
+categories:
+ - Real world
+tags:
+ - door
+ - logout
+ - signout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/door-open-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/door-open-fill.md
new file mode 100644
index 000000000..e3ae00eaa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/door-open-fill.md
@@ -0,0 +1,9 @@
+---
+title: Door open fill
+categories:
+ - Real world
+tags:
+ - door
+ - login
+ - signin
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/door-open.md b/vendor/twbs/bootstrap-icons/docs/content/icons/door-open.md
new file mode 100644
index 000000000..edf166877
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/door-open.md
@@ -0,0 +1,9 @@
+---
+title: Door open
+categories:
+ - Real world
+tags:
+ - door
+ - login
+ - signin
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dot.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dot.md
new file mode 100644
index 000000000..35bb2f406
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dot.md
@@ -0,0 +1,7 @@
+---
+title: Dot
+categories:
+ - UI and keyboard
+tags:
+ - middot
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/download.md b/vendor/twbs/bootstrap-icons/docs/content/icons/download.md
new file mode 100644
index 000000000..4bba62b14
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/download.md
@@ -0,0 +1,9 @@
+---
+title: Download
+categories:
+ - Miscellaneous
+tags:
+ - arrow
+ - network
+ - save
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dpad-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dpad-fill.md
new file mode 100644
index 000000000..def5d19c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dpad-fill.md
@@ -0,0 +1,9 @@
+---
+title: Dpad fill
+categories:
+ - Entertainment
+tags:
+ - gaming
+ - controller
+ - direction
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dpad.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dpad.md
new file mode 100644
index 000000000..920ece501
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dpad.md
@@ -0,0 +1,9 @@
+---
+title: Dpad
+categories:
+ - Entertainment
+tags:
+ - gaming
+ - controller
+ - direction
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dribbble.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dribbble.md
new file mode 100644
index 000000000..acb60f3af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dribbble.md
@@ -0,0 +1,7 @@
+---
+title: Dribbble
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/dropbox.md b/vendor/twbs/bootstrap-icons/docs/content/icons/dropbox.md
new file mode 100644
index 000000000..f8d700942
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/dropbox.md
@@ -0,0 +1,7 @@
+---
+title: Dropbox
+categories:
+ - Brand
+tags:
+ - dropbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/droplet-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/droplet-fill.md
new file mode 100644
index 000000000..2276457a6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/droplet-fill.md
@@ -0,0 +1,10 @@
+---
+title: Droplet fill
+categories:
+ - Graphics
+tags:
+ - water-drop
+ - paint
+ - ink
+ - liquid
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/droplet-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/droplet-half.md
new file mode 100644
index 000000000..fb48f7ea4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/droplet-half.md
@@ -0,0 +1,10 @@
+---
+title: Droplet half
+categories:
+ - Graphics
+tags:
+ - water-drop
+ - paint
+ - ink
+ - liquid
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/droplet.md b/vendor/twbs/bootstrap-icons/docs/content/icons/droplet.md
new file mode 100644
index 000000000..5b8e496ce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/droplet.md
@@ -0,0 +1,10 @@
+---
+title: Droplet
+categories:
+ - Graphics
+tags:
+ - water-drop
+ - paint
+ - ink
+ - liquid
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/duffle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/duffle-fill.md
new file mode 100644
index 000000000..3ad0e151c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/duffle-fill.md
@@ -0,0 +1,12 @@
+---
+title: Duffle fill
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/duffle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/duffle.md
new file mode 100644
index 000000000..b1cb96233
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/duffle.md
@@ -0,0 +1,12 @@
+---
+title: Duffle
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ear-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ear-fill.md
new file mode 100644
index 000000000..06e54109d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ear-fill.md
@@ -0,0 +1,9 @@
+---
+title: Ear fill
+categories:
+ - Real World
+tags:
+ - hearing
+ - sound
+ - listen
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ear.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ear.md
new file mode 100644
index 000000000..0f38fbca6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ear.md
@@ -0,0 +1,9 @@
+---
+title: Ear
+categories:
+ - Real World
+tags:
+ - hearing
+ - sound
+ - listen
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/earbuds.md b/vendor/twbs/bootstrap-icons/docs/content/icons/earbuds.md
new file mode 100644
index 000000000..31ce4882d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/earbuds.md
@@ -0,0 +1,7 @@
+---
+title: Earbuds
+categories:
+ - Devices
+tags:
+ - headphones
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/easel-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/easel-fill.md
new file mode 100644
index 000000000..7ec61a3a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/easel-fill.md
@@ -0,0 +1,10 @@
+---
+title: Easel fill
+categories:
+ - Graphics
+tags:
+ - paint
+ - draw
+ - art
+ - present
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/easel.md b/vendor/twbs/bootstrap-icons/docs/content/icons/easel.md
new file mode 100644
index 000000000..9da97d5a3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/easel.md
@@ -0,0 +1,10 @@
+---
+title: Easel
+categories:
+ - Graphics
+tags:
+ - paint
+ - draw
+ - art
+ - present
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/easel2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/easel2-fill.md
new file mode 100644
index 000000000..685ee3202
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/easel2-fill.md
@@ -0,0 +1,10 @@
+---
+title: Easel2 fill
+categories:
+ - Graphics
+tags:
+ - paint
+ - draw
+ - art
+ - present
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/easel2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/easel2.md
new file mode 100644
index 000000000..0563b8092
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/easel2.md
@@ -0,0 +1,10 @@
+---
+title: Easel2
+categories:
+ - Graphics
+tags:
+ - paint
+ - draw
+ - art
+ - present
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/easel3-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/easel3-fill.md
new file mode 100644
index 000000000..37d3d7bf4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/easel3-fill.md
@@ -0,0 +1,10 @@
+---
+title: Easel3 fill
+categories:
+ - Graphics
+tags:
+ - paint
+ - draw
+ - art
+ - present
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/easel3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/easel3.md
new file mode 100644
index 000000000..7b3fbf382
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/easel3.md
@@ -0,0 +1,10 @@
+---
+title: Easel3
+categories:
+ - Graphics
+tags:
+ - paint
+ - draw
+ - art
+ - present
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/egg-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/egg-fill.md
new file mode 100644
index 000000000..7b4313416
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/egg-fill.md
@@ -0,0 +1,7 @@
+---
+title: Egg fill
+categories:
+ - Real world
+tags:
+ - food
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/egg-fried.md b/vendor/twbs/bootstrap-icons/docs/content/icons/egg-fried.md
new file mode 100644
index 000000000..0bdba2d38
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/egg-fried.md
@@ -0,0 +1,7 @@
+---
+title: Egg fried
+categories:
+ - Real world
+tags:
+ - food
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/egg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/egg.md
new file mode 100644
index 000000000..84c86a623
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/egg.md
@@ -0,0 +1,7 @@
+---
+title: Egg
+categories:
+ - Real world
+tags:
+ - food
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/eject-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/eject-fill.md
new file mode 100644
index 000000000..3372f2783
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/eject-fill.md
@@ -0,0 +1,9 @@
+---
+title: Eject fill
+categories:
+ - UI and keyboard
+tags:
+ - disc
+ - cd
+ - dvd
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/eject.md b/vendor/twbs/bootstrap-icons/docs/content/icons/eject.md
new file mode 100644
index 000000000..ec823a6fa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/eject.md
@@ -0,0 +1,9 @@
+---
+title: Eject
+categories:
+ - UI and keyboard
+tags:
+ - disc
+ - cd
+ - dvd
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-angry-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-angry-fill.md
new file mode 100644
index 000000000..e918251fe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-angry-fill.md
@@ -0,0 +1,9 @@
+---
+title: Emoji angry fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - anger
+ - upset
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-angry.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-angry.md
new file mode 100644
index 000000000..2536b3689
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-angry.md
@@ -0,0 +1,9 @@
+---
+title: Emoji angry
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - anger
+ - upset
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-astonished-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-astonished-fill.md
new file mode 100644
index 000000000..c623ed5f0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-astonished-fill.md
@@ -0,0 +1,9 @@
+---
+title: Emoji astonished fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - surprised
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-astonished.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-astonished.md
new file mode 100644
index 000000000..9ffbf722b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-astonished.md
@@ -0,0 +1,9 @@
+---
+title: Emoji astonished
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - surprised
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-dizzy-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-dizzy-fill.md
new file mode 100644
index 000000000..0b1f2d337
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-dizzy-fill.md
@@ -0,0 +1,7 @@
+---
+title: Emoji dizzy fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-dizzy.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-dizzy.md
new file mode 100644
index 000000000..ab03e2824
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-dizzy.md
@@ -0,0 +1,7 @@
+---
+title: Emoji dizzy
+categories:
+ - Emoji
+tags:
+ - emoticon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-expressionless-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-expressionless-fill.md
new file mode 100644
index 000000000..1dec16c31
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-expressionless-fill.md
@@ -0,0 +1,9 @@
+---
+title: Emoji expressionless fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - neutral
+ - unphased
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-expressionless.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-expressionless.md
new file mode 100644
index 000000000..67c050a9d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-expressionless.md
@@ -0,0 +1,9 @@
+---
+title: Emoji expressionless
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - neutral
+ - unphased
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-frown-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-frown-fill.md
new file mode 100644
index 000000000..b1e77db77
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-frown-fill.md
@@ -0,0 +1,8 @@
+---
+title: Emoji frown fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - sad
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-frown.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-frown.md
new file mode 100644
index 000000000..cd6a1d6b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-frown.md
@@ -0,0 +1,8 @@
+---
+title: Emoji frown
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - sad
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grimace-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grimace-fill.md
new file mode 100644
index 000000000..65267aefe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grimace-fill.md
@@ -0,0 +1,8 @@
+---
+title: Emoji grimace fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grimace.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grimace.md
new file mode 100644
index 000000000..b7b91b113
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grimace.md
@@ -0,0 +1,8 @@
+---
+title: Emoji grimace
+categories:
+ - Emoji
+tags:
+ - emoticon
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grin-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grin-fill.md
new file mode 100644
index 000000000..89d8f2a33
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grin-fill.md
@@ -0,0 +1,8 @@
+---
+title: Emoji grin fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grin.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grin.md
new file mode 100644
index 000000000..ceeed66b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-grin.md
@@ -0,0 +1,8 @@
+---
+title: Emoji grin
+categories:
+ - Emoji
+tags:
+ - emoticon
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-heart-eyes-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-heart-eyes-fill.md
new file mode 100644
index 000000000..60a21580b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-heart-eyes-fill.md
@@ -0,0 +1,9 @@
+---
+title: Emoji heart eyes fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - heart
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-heart-eyes.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-heart-eyes.md
new file mode 100644
index 000000000..3ee4c03cb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-heart-eyes.md
@@ -0,0 +1,9 @@
+---
+title: Emoji heart eyes
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - heart
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-kiss-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-kiss-fill.md
new file mode 100644
index 000000000..1b1fe47f2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-kiss-fill.md
@@ -0,0 +1,9 @@
+---
+title: Emoji kiss fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - heart
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-kiss.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-kiss.md
new file mode 100644
index 000000000..1506b8868
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-kiss.md
@@ -0,0 +1,9 @@
+---
+title: Emoji kiss
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - heart
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-laughing-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-laughing-fill.md
new file mode 100644
index 000000000..9b3fb20eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-laughing-fill.md
@@ -0,0 +1,8 @@
+---
+title: Emoji laughing fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - happy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-laughing.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-laughing.md
new file mode 100644
index 000000000..cef02baee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-laughing.md
@@ -0,0 +1,8 @@
+---
+title: Emoji laughing
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - happy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-neutral-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-neutral-fill.md
new file mode 100644
index 000000000..7917d3554
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-neutral-fill.md
@@ -0,0 +1,8 @@
+---
+title: Emoji neutral fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - expressionless
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-neutral.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-neutral.md
new file mode 100644
index 000000000..e1bf36490
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-neutral.md
@@ -0,0 +1,8 @@
+---
+title: Emoji neutral
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - expressionless
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-fill.md
new file mode 100644
index 000000000..9fa09f2cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-fill.md
@@ -0,0 +1,8 @@
+---
+title: Emoji smile fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - happy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-upside-down-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-upside-down-fill.md
new file mode 100644
index 000000000..4d00d387a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-upside-down-fill.md
@@ -0,0 +1,8 @@
+---
+title: Emoji smile upside down fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - sarcasm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-upside-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-upside-down.md
new file mode 100644
index 000000000..41580b06a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile-upside-down.md
@@ -0,0 +1,8 @@
+---
+title: Emoji smile upside down
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - sarcasm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile.md
new file mode 100644
index 000000000..8dd2e67b9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-smile.md
@@ -0,0 +1,8 @@
+---
+title: Emoji smile
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - happy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-sunglasses-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-sunglasses-fill.md
new file mode 100644
index 000000000..a7fbaae42
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-sunglasses-fill.md
@@ -0,0 +1,8 @@
+---
+title: Emoji sunglasses fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - cool
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-sunglasses.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-sunglasses.md
new file mode 100644
index 000000000..621f64395
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-sunglasses.md
@@ -0,0 +1,8 @@
+---
+title: Emoji sunglasses
+categories:
+ - Emoji
+tags:
+ - emoticon
+ - cool
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-surprise-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-surprise-fill.md
new file mode 100644
index 000000000..74febd781
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-surprise-fill.md
@@ -0,0 +1,8 @@
+---
+title: Emoji surprise fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-surprise.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-surprise.md
new file mode 100644
index 000000000..a3dc8a97b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-surprise.md
@@ -0,0 +1,8 @@
+---
+title: Emoji surprise
+categories:
+ - Emoji
+tags:
+ - emoticon
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-tear-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-tear-fill.md
new file mode 100644
index 000000000..3f027482a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-tear-fill.md
@@ -0,0 +1,8 @@
+---
+title: Emoji tear fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-tear.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-tear.md
new file mode 100644
index 000000000..fdbee1d69
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-tear.md
@@ -0,0 +1,8 @@
+---
+title: Emoji tear
+categories:
+ - Emoji
+tags:
+ - emoticon
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-wink-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-wink-fill.md
new file mode 100644
index 000000000..a9223fdcc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-wink-fill.md
@@ -0,0 +1,7 @@
+---
+title: Emoji wink fill
+categories:
+ - Emoji
+tags:
+ - emoticon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-wink.md b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-wink.md
new file mode 100644
index 000000000..894806191
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/emoji-wink.md
@@ -0,0 +1,7 @@
+---
+title: Emoji wink
+categories:
+ - Emoji
+tags:
+ - emoticon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-down-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-down-fill.md
new file mode 100644
index 000000000..4869b7489
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-down-fill.md
@@ -0,0 +1,11 @@
+---
+title: Envelope arrow down fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-down.md
new file mode 100644
index 000000000..605cce917
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-down.md
@@ -0,0 +1,11 @@
+---
+title: Envelope arrow down
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-up-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-up-fill.md
new file mode 100644
index 000000000..cd44cd56b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-up-fill.md
@@ -0,0 +1,11 @@
+---
+title: Envelope arrow up fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-up.md
new file mode 100644
index 000000000..6782a30b9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-arrow-up.md
@@ -0,0 +1,11 @@
+---
+title: Envelope arrow up
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-at-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-at-fill.md
new file mode 100644
index 000000000..60c6189c8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-at-fill.md
@@ -0,0 +1,11 @@
+---
+title: Envelope at fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-at.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-at.md
new file mode 100644
index 000000000..640d7c9dc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-at.md
@@ -0,0 +1,11 @@
+---
+title: Envelope at
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-check-fill.md
new file mode 100644
index 000000000..a7d44fda3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-check-fill.md
@@ -0,0 +1,10 @@
+---
+title: Envelope check fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-check.md
new file mode 100644
index 000000000..b752feed3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-check.md
@@ -0,0 +1,10 @@
+---
+title: Envelope check
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-dash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-dash-fill.md
new file mode 100644
index 000000000..640bd800e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-dash-fill.md
@@ -0,0 +1,10 @@
+---
+title: Envelope dash fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-dash.md
new file mode 100644
index 000000000..5ab70115e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-dash.md
@@ -0,0 +1,10 @@
+---
+title: Envelope dash
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-exclamation-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-exclamation-fill.md
new file mode 100644
index 000000000..50c6d2d5e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-exclamation-fill.md
@@ -0,0 +1,10 @@
+---
+title: Envelope exclamation fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-exclamation.md
new file mode 100644
index 000000000..7ee3f6323
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-exclamation.md
@@ -0,0 +1,10 @@
+---
+title: Envelope exclamation
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-fill.md
new file mode 100644
index 000000000..0cd3346b8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-fill.md
@@ -0,0 +1,10 @@
+---
+title: Envelope fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-heart-fill.md
new file mode 100644
index 000000000..7df041aff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-heart-fill.md
@@ -0,0 +1,13 @@
+---
+title: Envelope heart fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-heart.md
new file mode 100644
index 000000000..12163d143
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-heart.md
@@ -0,0 +1,13 @@
+---
+title: Envelope heart
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-fill.md
new file mode 100644
index 000000000..67edbe5b5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-fill.md
@@ -0,0 +1,10 @@
+---
+title: Envelope open fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-heart-fill.md
new file mode 100644
index 000000000..855c81651
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-heart-fill.md
@@ -0,0 +1,13 @@
+---
+title: Envelope open heart fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-heart.md
new file mode 100644
index 000000000..39e69d23f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open-heart.md
@@ -0,0 +1,13 @@
+---
+title: Envelope open heart
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open.md
new file mode 100644
index 000000000..2aab2ca5d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-open.md
@@ -0,0 +1,10 @@
+---
+title: Envelope open
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-fill.md
new file mode 100644
index 000000000..30a779c65
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-fill.md
@@ -0,0 +1,10 @@
+---
+title: Envelope paper fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-heart-fill.md
new file mode 100644
index 000000000..06463f131
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-heart-fill.md
@@ -0,0 +1,13 @@
+---
+title: Envelope paper heart fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-heart.md
new file mode 100644
index 000000000..010e7d189
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper-heart.md
@@ -0,0 +1,13 @@
+---
+title: Envelope paper heart
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper.md
new file mode 100644
index 000000000..1ea732d45
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-paper.md
@@ -0,0 +1,10 @@
+---
+title: Envelope paper
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-plus-fill.md
new file mode 100644
index 000000000..4c7d05d6b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-plus-fill.md
@@ -0,0 +1,10 @@
+---
+title: Envelope plus fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-plus.md
new file mode 100644
index 000000000..f36c1403f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-plus.md
@@ -0,0 +1,10 @@
+---
+title: Envelope plus
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-slash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-slash-fill.md
new file mode 100644
index 000000000..aa4a9869d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-slash-fill.md
@@ -0,0 +1,10 @@
+---
+title: Envelope slash fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-slash.md
new file mode 100644
index 000000000..8d0be96e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-slash.md
@@ -0,0 +1,10 @@
+---
+title: Envelope slash
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-x-fill.md
new file mode 100644
index 000000000..63419ac34
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-x-fill.md
@@ -0,0 +1,10 @@
+---
+title: Envelope x fill
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-x.md
new file mode 100644
index 000000000..4f486d58a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope-x.md
@@ -0,0 +1,10 @@
+---
+title: Envelope x
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/envelope.md b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope.md
new file mode 100644
index 000000000..9d84dc3e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/envelope.md
@@ -0,0 +1,10 @@
+---
+title: Envelope
+categories:
+ - Communications
+tags:
+ - email
+ - message
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/eraser-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/eraser-fill.md
new file mode 100644
index 000000000..ddcb23955
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/eraser-fill.md
@@ -0,0 +1,8 @@
+---
+title: Eraser fill
+categories:
+ - Graphics
+tags:
+ - erase
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/eraser.md b/vendor/twbs/bootstrap-icons/docs/content/icons/eraser.md
new file mode 100644
index 000000000..d8ce70a01
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/eraser.md
@@ -0,0 +1,8 @@
+---
+title: Eraser
+categories:
+ - Graphics
+tags:
+ - erase
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/escape.md b/vendor/twbs/bootstrap-icons/docs/content/icons/escape.md
new file mode 100644
index 000000000..22c67ee35
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/escape.md
@@ -0,0 +1,9 @@
+---
+title: Escape
+categories:
+ - UI and Keyboard
+tags:
+ - esc
+ - quit
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ethernet.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ethernet.md
new file mode 100644
index 000000000..01617d978
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ethernet.md
@@ -0,0 +1,10 @@
+---
+title: Ethernet
+categories:
+ - Devices
+tags:
+ - internet
+ - connection
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ev-front-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ev-front-fill.md
new file mode 100644
index 000000000..1f2ec472c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ev-front-fill.md
@@ -0,0 +1,16 @@
+---
+title: Ev front fill
+categories:
+ - Transportation
+tags:
+ - car
+ - automobile
+ - automotive
+ - auto
+ - sedan
+ - drive
+ - driving
+ - electric vehicle
+ - charging
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ev-front.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ev-front.md
new file mode 100644
index 000000000..76f3a1b40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ev-front.md
@@ -0,0 +1,16 @@
+---
+title: Ev front
+categories:
+ - Transportation
+tags:
+ - car
+ - automobile
+ - automotive
+ - auto
+ - sedan
+ - drive
+ - driving
+ - electric vehicle
+ - charging
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ev-station-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ev-station-fill.md
new file mode 100644
index 000000000..67e83e73c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ev-station-fill.md
@@ -0,0 +1,8 @@
+---
+title: EV station fill
+categories:
+ - Transportation
+tags:
+ - charging
+ - electric vehicle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ev-station.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ev-station.md
new file mode 100644
index 000000000..554617153
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ev-station.md
@@ -0,0 +1,8 @@
+---
+title: EV station
+categories:
+ - Transportation
+tags:
+ - charging
+ - electric vehicle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-circle-fill.md
new file mode 100644
index 000000000..45aa4296d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation circle fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-circle.md
new file mode 100644
index 000000000..8562afcf0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-circle.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation circle
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-diamond-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-diamond-fill.md
new file mode 100644
index 000000000..20cf6bcb6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-diamond-fill.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation diamond fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-diamond.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-diamond.md
new file mode 100644
index 000000000..5d4cb464f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-diamond.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation diamond
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-lg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-lg.md
new file mode 100644
index 000000000..41cd5d6c0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-lg.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation lg
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-octagon-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-octagon-fill.md
new file mode 100644
index 000000000..2ec020217
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-octagon-fill.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation octagon fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-octagon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-octagon.md
new file mode 100644
index 000000000..83d1c4066
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-octagon.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation octagon
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-square-fill.md
new file mode 100644
index 000000000..311a3e618
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation square fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-square.md
new file mode 100644
index 000000000..655821699
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-square.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation square
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-triangle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-triangle-fill.md
new file mode 100644
index 000000000..c4f1d24e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-triangle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation triangle fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-triangle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-triangle.md
new file mode 100644
index 000000000..9413ef752
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation-triangle.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation triangle
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation.md
new file mode 100644
index 000000000..ebdce4e67
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclamation.md
@@ -0,0 +1,8 @@
+---
+title: Exclamation
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - alert
+ - warning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exclude.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exclude.md
new file mode 100644
index 000000000..13dcf61bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exclude.md
@@ -0,0 +1,10 @@
+---
+title: Exclude
+categories:
+ - Graphics
+tags:
+ - graphics
+ - vector
+ - merge
+ - layers
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/explicit-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/explicit-fill.md
new file mode 100644
index 000000000..b4ae00686
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/explicit-fill.md
@@ -0,0 +1,7 @@
+---
+title: Explicit fill
+categories:
+ - Badges
+tags:
+ - r18
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/explicit.md b/vendor/twbs/bootstrap-icons/docs/content/icons/explicit.md
new file mode 100644
index 000000000..9de339a74
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/explicit.md
@@ -0,0 +1,7 @@
+---
+title: Explicit
+categories:
+ - Badges
+tags:
+ - r18
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/exposure.md b/vendor/twbs/bootstrap-icons/docs/content/icons/exposure.md
new file mode 100644
index 000000000..9b23dc3f2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/exposure.md
@@ -0,0 +1,11 @@
+---
+title: Exposure
+categories:
+ - Graphics
+tags:
+ - photo
+ - editing
+ - image
+ - picture
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/eye-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/eye-fill.md
new file mode 100644
index 000000000..7cc5857d8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/eye-fill.md
@@ -0,0 +1,9 @@
+---
+title: Eye fill
+categories:
+ - Real world
+tags:
+ - eyeball
+ - look
+ - see
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/eye-slash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/eye-slash-fill.md
new file mode 100644
index 000000000..11cef6f05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/eye-slash-fill.md
@@ -0,0 +1,9 @@
+---
+title: Eye slash fill
+categories:
+ - Real world
+tags:
+ - eyeball
+ - look
+ - see
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/eye-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/eye-slash.md
new file mode 100644
index 000000000..146e1760c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/eye-slash.md
@@ -0,0 +1,9 @@
+---
+title: Eye slash
+categories:
+ - Real world
+tags:
+ - eyeball
+ - look
+ - see
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/eye.md b/vendor/twbs/bootstrap-icons/docs/content/icons/eye.md
new file mode 100644
index 000000000..f2efecf3b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/eye.md
@@ -0,0 +1,9 @@
+---
+title: Eye
+categories:
+ - Real world
+tags:
+ - eyeball
+ - look
+ - see
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/eyedropper.md b/vendor/twbs/bootstrap-icons/docs/content/icons/eyedropper.md
new file mode 100644
index 000000000..497ad4b48
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/eyedropper.md
@@ -0,0 +1,8 @@
+---
+title: Eyedropper
+categories:
+ - Graphics
+tags:
+ - color
+ - picker
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/eyeglasses.md b/vendor/twbs/bootstrap-icons/docs/content/icons/eyeglasses.md
new file mode 100644
index 000000000..dd0dcfd09
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/eyeglasses.md
@@ -0,0 +1,11 @@
+---
+title: Eyeglasses
+categories:
+ - Real world
+tags:
+ - eyeball
+ - look
+ - see
+ - glasses
+ - reading
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/facebook.md b/vendor/twbs/bootstrap-icons/docs/content/icons/facebook.md
new file mode 100644
index 000000000..521c2cd03
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/facebook.md
@@ -0,0 +1,7 @@
+---
+title: Facebook
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fan.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fan.md
new file mode 100644
index 000000000..a4d638dd4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fan.md
@@ -0,0 +1,9 @@
+---
+title: Fan
+categories:
+ - Real World
+tags:
+ - fan
+ - vent
+ - airflow
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-btn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-btn-fill.md
new file mode 100644
index 000000000..0fe2945c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-btn-fill.md
@@ -0,0 +1,9 @@
+---
+title: Fast forward btn fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-btn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-btn.md
new file mode 100644
index 000000000..1b06ce61e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-btn.md
@@ -0,0 +1,9 @@
+---
+title: Fast forward btn
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-circle-fill.md
new file mode 100644
index 000000000..c157d40f4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Fast forward circle fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-circle.md
new file mode 100644
index 000000000..6d3d7d629
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-circle.md
@@ -0,0 +1,9 @@
+---
+title: Fast forward circle
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-fill.md
new file mode 100644
index 000000000..9e295c3fa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward-fill.md
@@ -0,0 +1,9 @@
+---
+title: Fast forward fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward.md
new file mode 100644
index 000000000..c25431f13
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fast-forward.md
@@ -0,0 +1,9 @@
+---
+title: Fast forward
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/feather.md b/vendor/twbs/bootstrap-icons/docs/content/icons/feather.md
new file mode 100644
index 000000000..cba36e436
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/feather.md
@@ -0,0 +1,10 @@
+---
+title: Feather
+categories:
+ - Real World
+tags:
+ - bird
+ - flight
+ - light
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/feather2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/feather2.md
new file mode 100644
index 000000000..6ff6c51ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/feather2.md
@@ -0,0 +1,10 @@
+---
+title: Feather2
+categories:
+ - Real World
+tags:
+ - bird
+ - flight
+ - light
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-down-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-down-fill.md
new file mode 100644
index 000000000..6ec7e445a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-down-fill.md
@@ -0,0 +1,9 @@
+---
+title: File arrow down fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - download
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-down.md
new file mode 100644
index 000000000..f6283cf82
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-down.md
@@ -0,0 +1,9 @@
+---
+title: File arrow down
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - download
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-up-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-up-fill.md
new file mode 100644
index 000000000..f8f925caf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-up-fill.md
@@ -0,0 +1,9 @@
+---
+title: File arrow up fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - upload
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-up.md
new file mode 100644
index 000000000..531bb1d69
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-arrow-up.md
@@ -0,0 +1,9 @@
+---
+title: File arrow up
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - upload
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-bar-graph-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-bar-graph-fill.md
new file mode 100644
index 000000000..f487b8dc7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-bar-graph-fill.md
@@ -0,0 +1,10 @@
+---
+title: File bar graph fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - data
+ - chart
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-bar-graph.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-bar-graph.md
new file mode 100644
index 000000000..3733d3c96
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-bar-graph.md
@@ -0,0 +1,10 @@
+---
+title: File bar graph
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - data
+ - chart
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-binary-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-binary-fill.md
new file mode 100644
index 000000000..283073723
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-binary-fill.md
@@ -0,0 +1,10 @@
+---
+title: File binary fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - binary
+ - source
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-binary.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-binary.md
new file mode 100644
index 000000000..08078e102
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-binary.md
@@ -0,0 +1,10 @@
+---
+title: File binary
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - binary
+ - source
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-break-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-break-fill.md
new file mode 100644
index 000000000..baadc4dc9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-break-fill.md
@@ -0,0 +1,9 @@
+---
+title: File break fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - page-break
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-break.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-break.md
new file mode 100644
index 000000000..8b7af5b9c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-break.md
@@ -0,0 +1,9 @@
+---
+title: File break
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - page-break
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-check-fill.md
new file mode 100644
index 000000000..832a70259
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-check-fill.md
@@ -0,0 +1,10 @@
+---
+title: File check fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - check
+ - verified
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-check.md
new file mode 100644
index 000000000..33a088b2c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-check.md
@@ -0,0 +1,10 @@
+---
+title: File check
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - check
+ - verified
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-code-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-code-fill.md
new file mode 100644
index 000000000..dfe759575
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-code-fill.md
@@ -0,0 +1,10 @@
+---
+title: File code fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - code
+ - development
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-code.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-code.md
new file mode 100644
index 000000000..3d57d0f79
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-code.md
@@ -0,0 +1,10 @@
+---
+title: File code
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - code
+ - development
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-diff-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-diff-fill.md
new file mode 100644
index 000000000..3eb50df3a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-diff-fill.md
@@ -0,0 +1,10 @@
+---
+title: File diff fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - version
+ - development
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-diff.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-diff.md
new file mode 100644
index 000000000..8c5348b45
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-diff.md
@@ -0,0 +1,10 @@
+---
+title: File diff
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - version
+ - development
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-down-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-down-fill.md
new file mode 100644
index 000000000..6e091993d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-down-fill.md
@@ -0,0 +1,9 @@
+---
+title: File earmark arrow down fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - download
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-down.md
new file mode 100644
index 000000000..72dab49ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-down.md
@@ -0,0 +1,9 @@
+---
+title: File earmark arrow down
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - download
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-up-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-up-fill.md
new file mode 100644
index 000000000..1c6f8c90c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-up-fill.md
@@ -0,0 +1,9 @@
+---
+title: File earmark arrow up fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - upload
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-up.md
new file mode 100644
index 000000000..34dd4bcb8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-arrow-up.md
@@ -0,0 +1,9 @@
+---
+title: File earmark arrow up
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - upload
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-bar-graph-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-bar-graph-fill.md
new file mode 100644
index 000000000..db6bd6cf7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-bar-graph-fill.md
@@ -0,0 +1,10 @@
+---
+title: File earmark bar graph fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - data
+ - chart
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-bar-graph.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-bar-graph.md
new file mode 100644
index 000000000..05717cfb3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-bar-graph.md
@@ -0,0 +1,10 @@
+---
+title: File earmark bar graph
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - data
+ - chart
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-binary-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-binary-fill.md
new file mode 100644
index 000000000..1d32095c0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-binary-fill.md
@@ -0,0 +1,10 @@
+---
+title: File earmark binary fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - binary
+ - source
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-binary.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-binary.md
new file mode 100644
index 000000000..19f40f690
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-binary.md
@@ -0,0 +1,10 @@
+---
+title: File earmark binary
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - binary
+ - source
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-break-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-break-fill.md
new file mode 100644
index 000000000..f37aa9d46
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-break-fill.md
@@ -0,0 +1,9 @@
+---
+title: File earmark break fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - page-break
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-break.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-break.md
new file mode 100644
index 000000000..144d1c72f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-break.md
@@ -0,0 +1,9 @@
+---
+title: File earmark break
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - page-break
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-check-fill.md
new file mode 100644
index 000000000..540f431e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-check-fill.md
@@ -0,0 +1,10 @@
+---
+title: File earmark check fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - check
+ - verified
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-check.md
new file mode 100644
index 000000000..2fd3ab29c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-check.md
@@ -0,0 +1,10 @@
+---
+title: File earmark check
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - check
+ - verified
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-code-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-code-fill.md
new file mode 100644
index 000000000..dba577adb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-code-fill.md
@@ -0,0 +1,10 @@
+---
+title: File earmark code fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - code
+ - development
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-code.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-code.md
new file mode 100644
index 000000000..0cd16e945
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-code.md
@@ -0,0 +1,10 @@
+---
+title: File earmark code
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - code
+ - development
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-diff-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-diff-fill.md
new file mode 100644
index 000000000..b884e4ec1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-diff-fill.md
@@ -0,0 +1,10 @@
+---
+title: File earmark diff fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - version
+ - development
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-diff.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-diff.md
new file mode 100644
index 000000000..d7bfda74e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-diff.md
@@ -0,0 +1,10 @@
+---
+title: File earmark diff
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - version
+ - development
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-easel-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-easel-fill.md
new file mode 100644
index 000000000..e29570bab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-easel-fill.md
@@ -0,0 +1,10 @@
+---
+title: File earmark easel fill
+categories:
+ - Files and folders
+tags:
+ - slides
+ - presentation
+ - powerpoint
+ - keynote
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-easel.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-easel.md
new file mode 100644
index 000000000..90d0b49e7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-easel.md
@@ -0,0 +1,10 @@
+---
+title: File earmark easel
+categories:
+ - Files and folders
+tags:
+ - slides
+ - presentation
+ - powerpoint
+ - keynote
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-excel-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-excel-fill.md
new file mode 100644
index 000000000..0ba6d8dbe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-excel-fill.md
@@ -0,0 +1,11 @@
+---
+title: File earmark excel fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - spreadsheet
+ - excel
+ - table
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-excel.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-excel.md
new file mode 100644
index 000000000..6cccf68b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-excel.md
@@ -0,0 +1,11 @@
+---
+title: File earmark excel
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - spreadsheet
+ - excel
+ - table
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-fill.md
new file mode 100644
index 000000000..a0bddc4b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-fill.md
@@ -0,0 +1,9 @@
+---
+title: File earmark fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - page
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-font-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-font-fill.md
new file mode 100644
index 000000000..4cc9f5568
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-font-fill.md
@@ -0,0 +1,8 @@
+---
+title: File earmark font fill
+categories:
+ - Files and folders
+tags:
+ - ttf
+ - otf
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-font.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-font.md
new file mode 100644
index 000000000..688fccd53
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-font.md
@@ -0,0 +1,8 @@
+---
+title: File earmark font
+categories:
+ - Files and folders
+tags:
+ - ttf
+ - otf
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-image-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-image-fill.md
new file mode 100644
index 000000000..e40ab71bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-image-fill.md
@@ -0,0 +1,8 @@
+---
+title: File earmark image fill
+categories:
+ - Files and folders
+tags:
+ - photo
+ - picture
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-image.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-image.md
new file mode 100644
index 000000000..c23380ca3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-image.md
@@ -0,0 +1,8 @@
+---
+title: File earmark image
+categories:
+ - Files and folders
+tags:
+ - photo
+ - picture
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock-fill.md
new file mode 100644
index 000000000..4f5787ae0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock-fill.md
@@ -0,0 +1,9 @@
+---
+title: File earmark lock fill
+categories:
+ - Files and folders
+tags:
+ - lock
+ - private
+ - secure
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock.md
new file mode 100644
index 000000000..bb41239aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock.md
@@ -0,0 +1,9 @@
+---
+title: File earmark lock
+categories:
+ - Files and folders
+tags:
+ - lock
+ - private
+ - secure
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock2-fill.md
new file mode 100644
index 000000000..68a418392
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock2-fill.md
@@ -0,0 +1,9 @@
+---
+title: File earmark lock2 fill
+categories:
+ - Files and folders
+tags:
+ - lock
+ - private
+ - secure
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock2.md
new file mode 100644
index 000000000..d3f7b4824
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-lock2.md
@@ -0,0 +1,9 @@
+---
+title: File earmark lock2
+categories:
+ - Files and folders
+tags:
+ - lock
+ - private
+ - secure
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-medical-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-medical-fill.md
new file mode 100644
index 000000000..aa2e122a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-medical-fill.md
@@ -0,0 +1,11 @@
+---
+title: File earmark medical fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - medical
+ - hospital
+ - health
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-medical.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-medical.md
new file mode 100644
index 000000000..c479a06e3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-medical.md
@@ -0,0 +1,11 @@
+---
+title: File earmark medical
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - medical
+ - hospital
+ - health
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-minus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-minus-fill.md
new file mode 100644
index 000000000..23a70836a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-minus-fill.md
@@ -0,0 +1,10 @@
+---
+title: File earmark minus fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - delete
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-minus.md
new file mode 100644
index 000000000..df0705b62
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-minus.md
@@ -0,0 +1,10 @@
+---
+title: File earmark minus
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - delete
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-music-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-music-fill.md
new file mode 100644
index 000000000..f479780f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-music-fill.md
@@ -0,0 +1,12 @@
+---
+title: File earmark music fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - music
+ - audio
+ - playlist
+ - songs
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-music.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-music.md
new file mode 100644
index 000000000..f52486881
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-music.md
@@ -0,0 +1,12 @@
+---
+title: File earmark music
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - music
+ - audio
+ - playlist
+ - songs
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-pdf-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-pdf-fill.md
new file mode 100644
index 000000000..eb578f472
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-pdf-fill.md
@@ -0,0 +1,10 @@
+---
+title: File earmark PDF fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - adobe
+ - acrobat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-pdf.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-pdf.md
new file mode 100644
index 000000000..311411050
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-pdf.md
@@ -0,0 +1,10 @@
+---
+title: File earmark PDF
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - adobe
+ - acrobat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-person-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-person-fill.md
new file mode 100644
index 000000000..fee5247f3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-person-fill.md
@@ -0,0 +1,12 @@
+---
+title: File earmark person fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - personal
+ - cv
+ - resume
+ - about
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-person.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-person.md
new file mode 100644
index 000000000..d37664846
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-person.md
@@ -0,0 +1,12 @@
+---
+title: File earmark person
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - personal
+ - cv
+ - resume
+ - about
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-play-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-play-fill.md
new file mode 100644
index 000000000..396fdf478
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-play-fill.md
@@ -0,0 +1,8 @@
+---
+title: File earmark play fill
+categories:
+ - Files and folders
+tags:
+ - video
+ - present
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-play.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-play.md
new file mode 100644
index 000000000..94512a775
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-play.md
@@ -0,0 +1,8 @@
+---
+title: File earmark play
+categories:
+ - Files and folders
+tags:
+ - video
+ - present
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-plus-fill.md
new file mode 100644
index 000000000..5166ff564
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-plus-fill.md
@@ -0,0 +1,10 @@
+---
+title: File earmark plus fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-plus.md
new file mode 100644
index 000000000..e28021fd4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-plus.md
@@ -0,0 +1,10 @@
+---
+title: File earmark plus
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-post-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-post-fill.md
new file mode 100644
index 000000000..afa83ac6d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-post-fill.md
@@ -0,0 +1,9 @@
+---
+title: File earmark post fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - post
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-post.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-post.md
new file mode 100644
index 000000000..1a8624200
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-post.md
@@ -0,0 +1,9 @@
+---
+title: File earmark post
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - post
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ppt-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ppt-fill.md
new file mode 100644
index 000000000..e92c5ce40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ppt-fill.md
@@ -0,0 +1,10 @@
+---
+title: File earmark ppt fill
+categories:
+ - Files and folders
+tags:
+ - slides
+ - presentation
+ - powerpoint
+ - keynote
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ppt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ppt.md
new file mode 100644
index 000000000..dc8dd254e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ppt.md
@@ -0,0 +1,10 @@
+---
+title: File earmark ppt
+categories:
+ - Files and folders
+tags:
+ - slides
+ - presentation
+ - powerpoint
+ - keynote
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-richtext-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-richtext-fill.md
new file mode 100644
index 000000000..fee04a612
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-richtext-fill.md
@@ -0,0 +1,9 @@
+---
+title: File earmark richtext fill
+categories:
+ - Files and folders
+tags:
+ - text
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-richtext.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-richtext.md
new file mode 100644
index 000000000..ef13919ef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-richtext.md
@@ -0,0 +1,9 @@
+---
+title: File earmark richtext
+categories:
+ - Files and folders
+tags:
+ - text
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ruled-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ruled-fill.md
new file mode 100644
index 000000000..d2d32ce43
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ruled-fill.md
@@ -0,0 +1,8 @@
+---
+title: File earmark ruled fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ruled.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ruled.md
new file mode 100644
index 000000000..b0627e808
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-ruled.md
@@ -0,0 +1,8 @@
+---
+title: File earmark ruled
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-slides-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-slides-fill.md
new file mode 100644
index 000000000..6c76037b8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-slides-fill.md
@@ -0,0 +1,9 @@
+---
+title: File earmark slides fill
+categories:
+ - Files and folders
+tags:
+ - presentation
+ - keynote
+ - powerpoint
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-slides.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-slides.md
new file mode 100644
index 000000000..8b16b770f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-slides.md
@@ -0,0 +1,9 @@
+---
+title: File earmark slides
+categories:
+ - Files and folders
+tags:
+ - presentation
+ - keynote
+ - powerpoint
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-spreadsheet-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-spreadsheet-fill.md
new file mode 100644
index 000000000..bc8ce1b61
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-spreadsheet-fill.md
@@ -0,0 +1,10 @@
+---
+title: File earmark spreadsheet fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - excel
+ - table
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-spreadsheet.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-spreadsheet.md
new file mode 100644
index 000000000..b298eed15
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-spreadsheet.md
@@ -0,0 +1,10 @@
+---
+title: File earmark spreadsheet
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - excel
+ - table
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-text-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-text-fill.md
new file mode 100644
index 000000000..53abd26b0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-text-fill.md
@@ -0,0 +1,8 @@
+---
+title: File earmark text fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-text.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-text.md
new file mode 100644
index 000000000..c64cbb460
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-text.md
@@ -0,0 +1,8 @@
+---
+title: File earmark text
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-word-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-word-fill.md
new file mode 100644
index 000000000..73acd824d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-word-fill.md
@@ -0,0 +1,8 @@
+---
+title: File earmark word fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-word.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-word.md
new file mode 100644
index 000000000..1d71a7051
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-word.md
@@ -0,0 +1,8 @@
+---
+title: File earmark word
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-x-fill.md
new file mode 100644
index 000000000..ab1c8ea6d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-x-fill.md
@@ -0,0 +1,9 @@
+---
+title: File earmark x fill
+categories:
+ - Files and folders
+tags:
+ - document
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-x.md
new file mode 100644
index 000000000..637367404
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-x.md
@@ -0,0 +1,9 @@
+---
+title: File earmark x
+categories:
+ - Files and folders
+tags:
+ - document
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-zip-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-zip-fill.md
new file mode 100644
index 000000000..45eef6dd7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-zip-fill.md
@@ -0,0 +1,11 @@
+---
+title: File earmark zip fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - zip
+ - archive
+ - compress
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-zip.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-zip.md
new file mode 100644
index 000000000..e195cebc0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark-zip.md
@@ -0,0 +1,11 @@
+---
+title: File earmark zip
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - zip
+ - archive
+ - compress
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark.md
new file mode 100644
index 000000000..e057b7a31
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-earmark.md
@@ -0,0 +1,9 @@
+---
+title: File earmark
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - page
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-easel-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-easel-fill.md
new file mode 100644
index 000000000..a38400898
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-easel-fill.md
@@ -0,0 +1,10 @@
+---
+title: File easel fill
+categories:
+ - Files and folders
+tags:
+ - slides
+ - presentation
+ - powerpoint
+ - keynote
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-easel.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-easel.md
new file mode 100644
index 000000000..54c14d8bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-easel.md
@@ -0,0 +1,10 @@
+---
+title: File easel
+categories:
+ - Files and folders
+tags:
+ - slides
+ - presentation
+ - powerpoint
+ - keynote
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-excel-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-excel-fill.md
new file mode 100644
index 000000000..e48674be1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-excel-fill.md
@@ -0,0 +1,11 @@
+---
+title: File excel fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - spreadsheet
+ - excel
+ - table
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-excel.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-excel.md
new file mode 100644
index 000000000..7ad9f9f84
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-excel.md
@@ -0,0 +1,11 @@
+---
+title: File excel
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - spreadsheet
+ - excel
+ - table
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-fill.md
new file mode 100644
index 000000000..cea5a9049
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-fill.md
@@ -0,0 +1,9 @@
+---
+title: File fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - page
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-font-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-font-fill.md
new file mode 100644
index 000000000..86a3c2f15
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-font-fill.md
@@ -0,0 +1,8 @@
+---
+title: File font fill
+categories:
+ - Files and folders
+tags:
+ - ttf
+ - otf
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-font.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-font.md
new file mode 100644
index 000000000..9d797dbf8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-font.md
@@ -0,0 +1,8 @@
+---
+title: File font
+categories:
+ - Files and folders
+tags:
+ - ttf
+ - otf
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-image-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-image-fill.md
new file mode 100644
index 000000000..3bf203604
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-image-fill.md
@@ -0,0 +1,8 @@
+---
+title: File image fill
+categories:
+ - Files and folders
+tags:
+ - photo
+ - picture
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-image.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-image.md
new file mode 100644
index 000000000..869ed51d8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-image.md
@@ -0,0 +1,8 @@
+---
+title: File image
+categories:
+ - Files and folders
+tags:
+ - photo
+ - picture
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock-fill.md
new file mode 100644
index 000000000..c6d59d7c4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock-fill.md
@@ -0,0 +1,9 @@
+---
+title: File lock fill
+categories:
+ - Files and folders
+tags:
+ - lock
+ - private
+ - secure
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock.md
new file mode 100644
index 000000000..c9b933358
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock.md
@@ -0,0 +1,9 @@
+---
+title: File lock
+categories:
+ - Files and folders
+tags:
+ - lock
+ - private
+ - secure
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock2-fill.md
new file mode 100644
index 000000000..62835f8ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock2-fill.md
@@ -0,0 +1,9 @@
+---
+title: File lock2 fill
+categories:
+ - Files and folders
+tags:
+ - lock
+ - private
+ - secure
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock2.md
new file mode 100644
index 000000000..48ee0528d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-lock2.md
@@ -0,0 +1,9 @@
+---
+title: File lock2
+categories:
+ - Files and folders
+tags:
+ - lock
+ - private
+ - secure
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-medical-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-medical-fill.md
new file mode 100644
index 000000000..ea3a3ab4b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-medical-fill.md
@@ -0,0 +1,11 @@
+---
+title: File medical fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - medical
+ - hospital
+ - health
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-medical.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-medical.md
new file mode 100644
index 000000000..949cb73ca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-medical.md
@@ -0,0 +1,11 @@
+---
+title: File medical
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - medical
+ - hospital
+ - health
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-minus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-minus-fill.md
new file mode 100644
index 000000000..e91ae788b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-minus-fill.md
@@ -0,0 +1,10 @@
+---
+title: File minus fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - delete
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-minus.md
new file mode 100644
index 000000000..b439dba52
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-minus.md
@@ -0,0 +1,10 @@
+---
+title: File minus
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - delete
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-music-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-music-fill.md
new file mode 100644
index 000000000..1568659aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-music-fill.md
@@ -0,0 +1,12 @@
+---
+title: File music fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - music
+ - audio
+ - playlist
+ - songs
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-music.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-music.md
new file mode 100644
index 000000000..c633c0952
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-music.md
@@ -0,0 +1,12 @@
+---
+title: File music
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - music
+ - audio
+ - playlist
+ - songs
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-pdf-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-pdf-fill.md
new file mode 100644
index 000000000..483015a8b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-pdf-fill.md
@@ -0,0 +1,10 @@
+---
+title: File PDF fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - adobe
+ - acrobat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-pdf.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-pdf.md
new file mode 100644
index 000000000..9e2bff6c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-pdf.md
@@ -0,0 +1,10 @@
+---
+title: File PDF
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - adobe
+ - acrobat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-person-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-person-fill.md
new file mode 100644
index 000000000..30cc08b82
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-person-fill.md
@@ -0,0 +1,12 @@
+---
+title: File person fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - personal
+ - cv
+ - resume
+ - about
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-person.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-person.md
new file mode 100644
index 000000000..0efe235bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-person.md
@@ -0,0 +1,12 @@
+---
+title: File person
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - personal
+ - cv
+ - resume
+ - about
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-play-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-play-fill.md
new file mode 100644
index 000000000..a5671bd42
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-play-fill.md
@@ -0,0 +1,8 @@
+---
+title: File play fill
+categories:
+ - Files and folders
+tags:
+ - video
+ - present
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-play.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-play.md
new file mode 100644
index 000000000..23939ce31
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-play.md
@@ -0,0 +1,8 @@
+---
+title: File play
+categories:
+ - Files and folders
+tags:
+ - video
+ - present
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-plus-fill.md
new file mode 100644
index 000000000..d550b1fb1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-plus-fill.md
@@ -0,0 +1,10 @@
+---
+title: File plus fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-plus.md
new file mode 100644
index 000000000..a87dde4ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-plus.md
@@ -0,0 +1,10 @@
+---
+title: File plus
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-post-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-post-fill.md
new file mode 100644
index 000000000..fb9cce628
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-post-fill.md
@@ -0,0 +1,9 @@
+---
+title: File post fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - post
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-post.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-post.md
new file mode 100644
index 000000000..327acea96
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-post.md
@@ -0,0 +1,9 @@
+---
+title: File post
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - post
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-ppt-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-ppt-fill.md
new file mode 100644
index 000000000..340e6e45d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-ppt-fill.md
@@ -0,0 +1,10 @@
+---
+title: File ppt fill
+categories:
+ - Files and folders
+tags:
+ - slides
+ - presentation
+ - powerpoint
+ - keynote
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-ppt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-ppt.md
new file mode 100644
index 000000000..37556af70
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-ppt.md
@@ -0,0 +1,10 @@
+---
+title: File ppt
+categories:
+ - Files and folders
+tags:
+ - slides
+ - presentation
+ - powerpoint
+ - keynote
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-richtext-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-richtext-fill.md
new file mode 100644
index 000000000..3f47b3b39
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-richtext-fill.md
@@ -0,0 +1,9 @@
+---
+title: File richtext fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - richtext
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-richtext.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-richtext.md
new file mode 100644
index 000000000..cf6708e6c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-richtext.md
@@ -0,0 +1,9 @@
+---
+title: File rich text
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - richtext
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-ruled-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-ruled-fill.md
new file mode 100644
index 000000000..08b9f12d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-ruled-fill.md
@@ -0,0 +1,8 @@
+---
+title: File ruled fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-ruled.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-ruled.md
new file mode 100644
index 000000000..eff567f3c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-ruled.md
@@ -0,0 +1,8 @@
+---
+title: File ruled
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-slides-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-slides-fill.md
new file mode 100644
index 000000000..dc66b5c1f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-slides-fill.md
@@ -0,0 +1,9 @@
+---
+title: File slides fill
+categories:
+ - Files and folders
+tags:
+ - presentation
+ - keynote
+ - powerpoint
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-slides.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-slides.md
new file mode 100644
index 000000000..1df4e8788
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-slides.md
@@ -0,0 +1,9 @@
+---
+title: File slides
+categories:
+ - Files and folders
+tags:
+ - presentation
+ - keynote
+ - powerpoint
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-spreadsheet-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-spreadsheet-fill.md
new file mode 100644
index 000000000..e87aef260
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-spreadsheet-fill.md
@@ -0,0 +1,10 @@
+---
+title: File spreadsheet fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - excel
+ - table
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-spreadsheet.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-spreadsheet.md
new file mode 100644
index 000000000..81b4675dc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-spreadsheet.md
@@ -0,0 +1,10 @@
+---
+title: File spreadsheet
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - excel
+ - table
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-text-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-text-fill.md
new file mode 100644
index 000000000..45332b57a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-text-fill.md
@@ -0,0 +1,9 @@
+---
+title: File text fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-text.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-text.md
new file mode 100644
index 000000000..51aa3845e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-text.md
@@ -0,0 +1,9 @@
+---
+title: File text
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-word-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-word-fill.md
new file mode 100644
index 000000000..499704b6c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-word-fill.md
@@ -0,0 +1,8 @@
+---
+title: File word fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-word.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-word.md
new file mode 100644
index 000000000..0ada9528a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-word.md
@@ -0,0 +1,8 @@
+---
+title: File word
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-x-fill.md
new file mode 100644
index 000000000..4d34a28c1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-x-fill.md
@@ -0,0 +1,9 @@
+---
+title: File x fill
+categories:
+ - Files and folders
+tags:
+ - document
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-x.md
new file mode 100644
index 000000000..8bc486bf9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-x.md
@@ -0,0 +1,9 @@
+---
+title: File x
+categories:
+ - Files and folders
+tags:
+ - document
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-zip-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-zip-fill.md
new file mode 100644
index 000000000..f5ae98b19
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-zip-fill.md
@@ -0,0 +1,11 @@
+---
+title: File zip fill
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - zip
+ - archive
+ - compress
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file-zip.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file-zip.md
new file mode 100644
index 000000000..6ef2c736f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file-zip.md
@@ -0,0 +1,11 @@
+---
+title: File zip
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - zip
+ - archive
+ - compress
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/file.md b/vendor/twbs/bootstrap-icons/docs/content/icons/file.md
new file mode 100644
index 000000000..6a0bcaa23
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/file.md
@@ -0,0 +1,9 @@
+---
+title: File
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+ - page
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/files-alt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/files-alt.md
new file mode 100644
index 000000000..facd54a06
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/files-alt.md
@@ -0,0 +1,8 @@
+---
+title: Files alt
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/files.md b/vendor/twbs/bootstrap-icons/docs/content/icons/files.md
new file mode 100644
index 000000000..fa21242fe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/files.md
@@ -0,0 +1,8 @@
+---
+title: Files
+categories:
+ - Files and folders
+tags:
+ - doc
+ - document
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-aac.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-aac.md
new file mode 100644
index 000000000..a0006326f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-aac.md
@@ -0,0 +1,9 @@
+---
+title: Filetype aac
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ai.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ai.md
new file mode 100644
index 000000000..060e0e78b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ai.md
@@ -0,0 +1,9 @@
+---
+title: Filetype ai
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-bmp.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-bmp.md
new file mode 100644
index 000000000..c8554f7de
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-bmp.md
@@ -0,0 +1,9 @@
+---
+title: Filetype bmp
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-cs.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-cs.md
new file mode 100644
index 000000000..8a6ea7de8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-cs.md
@@ -0,0 +1,10 @@
+---
+title: Filetype cs
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-css.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-css.md
new file mode 100644
index 000000000..377f4ebfd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-css.md
@@ -0,0 +1,11 @@
+---
+title: Filetype css
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - stylesheet
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-csv.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-csv.md
new file mode 100644
index 000000000..9c5b95545
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-csv.md
@@ -0,0 +1,9 @@
+---
+title: Filetype csv
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-doc.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-doc.md
new file mode 100644
index 000000000..07fb0581f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-doc.md
@@ -0,0 +1,9 @@
+---
+title: Filetype doc
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-docx.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-docx.md
new file mode 100644
index 000000000..aa50a2de0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-docx.md
@@ -0,0 +1,9 @@
+---
+title: Filetype docx
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-exe.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-exe.md
new file mode 100644
index 000000000..fb0e709a7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-exe.md
@@ -0,0 +1,9 @@
+---
+title: Filetype exe
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-gif.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-gif.md
new file mode 100644
index 000000000..3a46a23ee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-gif.md
@@ -0,0 +1,9 @@
+---
+title: Filetype gif
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-heic.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-heic.md
new file mode 100644
index 000000000..1029fef46
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-heic.md
@@ -0,0 +1,9 @@
+---
+title: Filetype heic
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-html.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-html.md
new file mode 100644
index 000000000..153201655
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-html.md
@@ -0,0 +1,11 @@
+---
+title: Filetype html
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - html
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-java.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-java.md
new file mode 100644
index 000000000..5e3183415
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-java.md
@@ -0,0 +1,11 @@
+---
+title: Filetype java
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - java
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-jpg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-jpg.md
new file mode 100644
index 000000000..9d527bcf5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-jpg.md
@@ -0,0 +1,9 @@
+---
+title: Filetype jpg
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-js.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-js.md
new file mode 100644
index 000000000..426ea80f1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-js.md
@@ -0,0 +1,11 @@
+---
+title: Filetype js
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - javascript
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-json.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-json.md
new file mode 100644
index 000000000..539258861
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-json.md
@@ -0,0 +1,11 @@
+---
+title: Filetype json
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - javascript
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-jsx.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-jsx.md
new file mode 100644
index 000000000..5f55c885d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-jsx.md
@@ -0,0 +1,12 @@
+---
+title: Filetype jsx
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - javascript
+ - react
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-key.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-key.md
new file mode 100644
index 000000000..54c30cd8c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-key.md
@@ -0,0 +1,10 @@
+---
+title: Filetype key
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - keynote
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-m4p.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-m4p.md
new file mode 100644
index 000000000..0acf7e746
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-m4p.md
@@ -0,0 +1,9 @@
+---
+title: Filetype m4p
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-md.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-md.md
new file mode 100644
index 000000000..c87083791
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-md.md
@@ -0,0 +1,11 @@
+---
+title: Filetype md
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - markdown
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mdx.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mdx.md
new file mode 100644
index 000000000..b69e5b96a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mdx.md
@@ -0,0 +1,9 @@
+---
+title: Filetype mdx
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mov.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mov.md
new file mode 100644
index 000000000..f32179aef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mov.md
@@ -0,0 +1,9 @@
+---
+title: Filetype mov
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mp3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mp3.md
new file mode 100644
index 000000000..ef9954bef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mp3.md
@@ -0,0 +1,9 @@
+---
+title: Filetype mp3
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mp4.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mp4.md
new file mode 100644
index 000000000..267783a03
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-mp4.md
@@ -0,0 +1,9 @@
+---
+title: Filetype mp4
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-otf.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-otf.md
new file mode 100644
index 000000000..51d0d6586
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-otf.md
@@ -0,0 +1,11 @@
+---
+title: Filetype otf
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - font
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-pdf.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-pdf.md
new file mode 100644
index 000000000..8708a624a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-pdf.md
@@ -0,0 +1,9 @@
+---
+title: Filetype pdf
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-php.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-php.md
new file mode 100644
index 000000000..12a6e2b5d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-php.md
@@ -0,0 +1,10 @@
+---
+title: Filetype php
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-png.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-png.md
new file mode 100644
index 000000000..df0e4af5f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-png.md
@@ -0,0 +1,9 @@
+---
+title: Filetype png
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ppt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ppt.md
new file mode 100644
index 000000000..40163e848
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ppt.md
@@ -0,0 +1,10 @@
+---
+title: Filetype ppt
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - powerpoint
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-pptx.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-pptx.md
new file mode 100644
index 000000000..903e013f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-pptx.md
@@ -0,0 +1,10 @@
+---
+title: Filetype pptx
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - powerpoint
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-psd.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-psd.md
new file mode 100644
index 000000000..d8595e57d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-psd.md
@@ -0,0 +1,9 @@
+---
+title: Filetype psd
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-py.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-py.md
new file mode 100644
index 000000000..87c86ecda
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-py.md
@@ -0,0 +1,11 @@
+---
+title: Filetype py
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - python
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-raw.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-raw.md
new file mode 100644
index 000000000..0effbcd81
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-raw.md
@@ -0,0 +1,9 @@
+---
+title: Filetype raw
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-rb.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-rb.md
new file mode 100644
index 000000000..78a0c8bd9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-rb.md
@@ -0,0 +1,11 @@
+---
+title: Filetype rb
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - ruby
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sass.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sass.md
new file mode 100644
index 000000000..ac3d4ee13
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sass.md
@@ -0,0 +1,12 @@
+---
+title: Filetype sass
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - css
+ - stylesheet
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-scss.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-scss.md
new file mode 100644
index 000000000..ab61a99f0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-scss.md
@@ -0,0 +1,12 @@
+---
+title: Filetype scss
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - css
+ - stylesheet
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sh.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sh.md
new file mode 100644
index 000000000..dee053bbf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sh.md
@@ -0,0 +1,11 @@
+---
+title: Filetype sh
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - shell
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sql.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sql.md
new file mode 100644
index 000000000..5a7dad27a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-sql.md
@@ -0,0 +1,10 @@
+---
+title: Filetype SQL
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - mysql
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-svg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-svg.md
new file mode 100644
index 000000000..2e5a1fdbc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-svg.md
@@ -0,0 +1,10 @@
+---
+title: Filetype svg
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-tiff.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-tiff.md
new file mode 100644
index 000000000..22020f0a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-tiff.md
@@ -0,0 +1,9 @@
+---
+title: Filetype tiff
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-tsx.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-tsx.md
new file mode 100644
index 000000000..8779461db
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-tsx.md
@@ -0,0 +1,11 @@
+---
+title: Filetype tsx
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - typescript
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ttf.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ttf.md
new file mode 100644
index 000000000..59dba7403
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-ttf.md
@@ -0,0 +1,11 @@
+---
+title: Filetype ttf
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - font
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-txt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-txt.md
new file mode 100644
index 000000000..618284f63
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-txt.md
@@ -0,0 +1,9 @@
+---
+title: Filetype txt
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-wav.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-wav.md
new file mode 100644
index 000000000..ab5667992
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-wav.md
@@ -0,0 +1,9 @@
+---
+title: Filetype wav
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-woff.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-woff.md
new file mode 100644
index 000000000..9880ce26e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-woff.md
@@ -0,0 +1,11 @@
+---
+title: Filetype woff
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - font
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xls.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xls.md
new file mode 100644
index 000000000..14ca7ec3f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xls.md
@@ -0,0 +1,10 @@
+---
+title: Filetype xls
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - spreadsheet
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xlsx.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xlsx.md
new file mode 100644
index 000000000..f9612bca8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xlsx.md
@@ -0,0 +1,10 @@
+---
+title: Filetype xlsx
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - spreadsheet
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xml.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xml.md
new file mode 100644
index 000000000..488f0f73f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-xml.md
@@ -0,0 +1,10 @@
+---
+title: Filetype xml
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-yml.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-yml.md
new file mode 100644
index 000000000..6adc3124c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filetype-yml.md
@@ -0,0 +1,11 @@
+---
+title: Filetype yml
+categories:
+ - Files and folders
+tags:
+ - file
+ - "file type"
+ - extension
+ - code
+ - yaml
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/film.md b/vendor/twbs/bootstrap-icons/docs/content/icons/film.md
new file mode 100644
index 000000000..6b2a1df20
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/film.md
@@ -0,0 +1,8 @@
+---
+title: Film
+categories:
+ - Media
+tags:
+ - video
+ - movie
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filter-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-circle-fill.md
new file mode 100644
index 000000000..797654fc6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Filter circle fill
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filter-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-circle.md
new file mode 100644
index 000000000..c2d03802c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-circle.md
@@ -0,0 +1,9 @@
+---
+title: Filter circle
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filter-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-left.md
new file mode 100644
index 000000000..44a13c795
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-left.md
@@ -0,0 +1,9 @@
+---
+title: Filter left
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filter-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-right.md
new file mode 100644
index 000000000..ccbf67b76
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-right.md
@@ -0,0 +1,9 @@
+---
+title: Filter right
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filter-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-square-fill.md
new file mode 100644
index 000000000..2b8af1b0d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-square-fill.md
@@ -0,0 +1,9 @@
+---
+title: Filter square fill
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filter-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-square.md
new file mode 100644
index 000000000..7f02124db
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filter-square.md
@@ -0,0 +1,9 @@
+---
+title: Filter square
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/filter.md b/vendor/twbs/bootstrap-icons/docs/content/icons/filter.md
new file mode 100644
index 000000000..91ba5f80d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/filter.md
@@ -0,0 +1,7 @@
+---
+title: Filter
+categories:
+ - UI and keyboard
+tags:
+ - sort
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fingerprint.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fingerprint.md
new file mode 100644
index 000000000..c17114a76
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fingerprint.md
@@ -0,0 +1,9 @@
+---
+title: Fingerprint
+categories:
+ - Security
+tags:
+ - "touch ID"
+ - secure
+ - biometric
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fire.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fire.md
new file mode 100644
index 000000000..21faa6d92
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fire.md
@@ -0,0 +1,8 @@
+---
+title: Fire
+categories:
+ - Real world
+tags:
+ - burning
+ - smoke
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/flag-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/flag-fill.md
new file mode 100644
index 000000000..2bc77de12
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/flag-fill.md
@@ -0,0 +1,7 @@
+---
+title: Flag fill
+categories:
+ - Communications
+tags:
+ - report
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/flag.md b/vendor/twbs/bootstrap-icons/docs/content/icons/flag.md
new file mode 100644
index 000000000..1299c44d2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/flag.md
@@ -0,0 +1,7 @@
+---
+title: Flag
+categories:
+ - Communications
+tags:
+ - report
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/floppy-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/floppy-fill.md
new file mode 100644
index 000000000..9ff4f1203
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/floppy-fill.md
@@ -0,0 +1,10 @@
+---
+title: Floppy fill
+categories:
+ - Devices
+tags:
+ - save
+ - storage
+ - disk
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/floppy.md b/vendor/twbs/bootstrap-icons/docs/content/icons/floppy.md
new file mode 100644
index 000000000..c1cbf55f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/floppy.md
@@ -0,0 +1,10 @@
+---
+title: Floppy
+categories:
+ - Devices
+tags:
+ - save
+ - storage
+ - disk
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/floppy2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/floppy2-fill.md
new file mode 100644
index 000000000..7e52b003e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/floppy2-fill.md
@@ -0,0 +1,10 @@
+---
+title: Floppy2 fill
+categories:
+ - Devices
+tags:
+ - save
+ - storage
+ - disk
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/floppy2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/floppy2.md
new file mode 100644
index 000000000..692ddb0c8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/floppy2.md
@@ -0,0 +1,10 @@
+---
+title: Floppy2
+categories:
+ - Devices
+tags:
+ - save
+ - storage
+ - disk
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/flower1.md b/vendor/twbs/bootstrap-icons/docs/content/icons/flower1.md
new file mode 100644
index 000000000..76b3d3230
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/flower1.md
@@ -0,0 +1,9 @@
+---
+title: Flower1
+categories:
+ - Real world
+tags:
+ - plant
+ - bloom
+ - flower
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/flower2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/flower2.md
new file mode 100644
index 000000000..fdd0f7222
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/flower2.md
@@ -0,0 +1,9 @@
+---
+title: Flower2
+categories:
+ - Real world
+tags:
+ - plant
+ - bloom
+ - flower
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/flower3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/flower3.md
new file mode 100644
index 000000000..17b7dcd6d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/flower3.md
@@ -0,0 +1,9 @@
+---
+title: Flower3
+categories:
+ - Real world
+tags:
+ - plant
+ - bloom
+ - flower
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/folder-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-check.md
new file mode 100644
index 000000000..e9cdeff5a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-check.md
@@ -0,0 +1,9 @@
+---
+title: Folder check
+categories:
+ - Files and folders
+tags:
+ - directory
+ - check
+ - verified
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/folder-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-fill.md
new file mode 100644
index 000000000..ab2bc1afa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-fill.md
@@ -0,0 +1,7 @@
+---
+title: Folder fill
+categories:
+ - Files and folders
+tags:
+ - directory
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/folder-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-minus.md
new file mode 100644
index 000000000..4b4fbb81a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-minus.md
@@ -0,0 +1,9 @@
+---
+title: Folder minus
+categories:
+ - Files and folders
+tags:
+ - directory
+ - delete
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/folder-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-plus.md
new file mode 100644
index 000000000..2fca66e46
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-plus.md
@@ -0,0 +1,10 @@
+---
+title: Folder plus
+categories:
+ - Files and folders
+tags:
+ - directory
+ - delete
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/folder-symlink-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-symlink-fill.md
new file mode 100644
index 000000000..75a974c19
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-symlink-fill.md
@@ -0,0 +1,8 @@
+---
+title: Folder symlink fill
+categories:
+ - Files and folders
+tags:
+ - directory
+ - symbolic-link
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/folder-symlink.md b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-symlink.md
new file mode 100644
index 000000000..9fbfd05fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-symlink.md
@@ -0,0 +1,8 @@
+---
+title: Folder symlink
+categories:
+ - Files and folders
+tags:
+ - directory
+ - symbolic-link
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/folder-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-x.md
new file mode 100644
index 000000000..240c5e6fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/folder-x.md
@@ -0,0 +1,9 @@
+---
+title: Folder x
+categories:
+ - Files and folders
+tags:
+ - directory
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/folder.md b/vendor/twbs/bootstrap-icons/docs/content/icons/folder.md
new file mode 100644
index 000000000..6ad0fca5d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/folder.md
@@ -0,0 +1,7 @@
+---
+title: Folder
+categories:
+ - Files and folders
+tags:
+ - directory
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/folder2-open.md b/vendor/twbs/bootstrap-icons/docs/content/icons/folder2-open.md
new file mode 100644
index 000000000..5472323a0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/folder2-open.md
@@ -0,0 +1,7 @@
+---
+title: Folder2 open
+categories:
+ - Files and folders
+tags:
+ - directory
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/folder2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/folder2.md
new file mode 100644
index 000000000..56259ee67
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/folder2.md
@@ -0,0 +1,7 @@
+---
+title: Folder2
+categories:
+ - Files and folders
+tags:
+ - directory
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fonts.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fonts.md
new file mode 100644
index 000000000..c71fc1dbc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fonts.md
@@ -0,0 +1,8 @@
+---
+title: Fonts
+categories:
+ - Typography
+tags:
+ - text
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/forward-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/forward-fill.md
new file mode 100644
index 000000000..29b6168b5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/forward-fill.md
@@ -0,0 +1,8 @@
+---
+title: Forward fill
+categories:
+ - Communications
+tags:
+ - mail
+ - email
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/forward.md b/vendor/twbs/bootstrap-icons/docs/content/icons/forward.md
new file mode 100644
index 000000000..dbaaf255f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/forward.md
@@ -0,0 +1,8 @@
+---
+title: Forward
+categories:
+ - Communications
+tags:
+ - mail
+ - email
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/front.md b/vendor/twbs/bootstrap-icons/docs/content/icons/front.md
new file mode 100644
index 000000000..e9cd777bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/front.md
@@ -0,0 +1,8 @@
+---
+title: Front
+categories:
+ - Graphics
+tags:
+ - forward
+ - layer
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-diesel-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-diesel-fill.md
new file mode 100644
index 000000000..075f868c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-diesel-fill.md
@@ -0,0 +1,10 @@
+---
+title: Fuel pump diesel fill
+categories:
+ - Transportation
+tags:
+ - gas
+ - petrol
+ - fuel
+ - "gas station"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-diesel.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-diesel.md
new file mode 100644
index 000000000..425a16549
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-diesel.md
@@ -0,0 +1,10 @@
+---
+title: Fuel pump diesel
+categories:
+ - Transportation
+tags:
+ - gas
+ - petrol
+ - fuel
+ - "gas station"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-fill.md
new file mode 100644
index 000000000..7a2d086ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump-fill.md
@@ -0,0 +1,10 @@
+---
+title: Fuel pump fill
+categories:
+ - Transportation
+tags:
+ - gas
+ - petrol
+ - fuel
+ - "gas station"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump.md
new file mode 100644
index 000000000..be9ea06b5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fuel-pump.md
@@ -0,0 +1,10 @@
+---
+title: Fuel pump
+categories:
+ - Transportation
+tags:
+ - gas
+ - petrol
+ - fuel
+ - "gas station"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fullscreen-exit.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fullscreen-exit.md
new file mode 100644
index 000000000..a928c9c2d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fullscreen-exit.md
@@ -0,0 +1,8 @@
+---
+title: Fullscreen exit
+categories:
+ - UI and keyboard
+tags:
+ - window
+ - minimize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/fullscreen.md b/vendor/twbs/bootstrap-icons/docs/content/icons/fullscreen.md
new file mode 100644
index 000000000..ed292d686
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/fullscreen.md
@@ -0,0 +1,8 @@
+---
+title: Fullscreen
+categories:
+ - UI and keyboard
+tags:
+ - window
+ - maximize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/funnel-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/funnel-fill.md
new file mode 100644
index 000000000..cf1aaf855
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/funnel-fill.md
@@ -0,0 +1,8 @@
+---
+title: Funnel fill
+categories:
+ - Real world
+tags:
+ - sort
+ - filter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/funnel.md b/vendor/twbs/bootstrap-icons/docs/content/icons/funnel.md
new file mode 100644
index 000000000..c22d2367f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/funnel.md
@@ -0,0 +1,8 @@
+---
+title: Funnel
+categories:
+ - Real world
+tags:
+ - sort
+ - filter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gear-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gear-fill.md
new file mode 100644
index 000000000..112260cd6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gear-fill.md
@@ -0,0 +1,9 @@
+---
+title: Gear fill
+categories:
+ - Tools
+tags:
+ - tool
+ - settings
+ - preferences
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gear-wide-connected.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gear-wide-connected.md
new file mode 100644
index 000000000..7a419f30f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gear-wide-connected.md
@@ -0,0 +1,9 @@
+---
+title: Gear wide connected
+categories:
+ - Tools
+tags:
+ - tool
+ - settings
+ - preferences
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gear-wide.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gear-wide.md
new file mode 100644
index 000000000..216b6a025
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gear-wide.md
@@ -0,0 +1,9 @@
+---
+title: Gear wide
+categories:
+ - Tools
+tags:
+ - tool
+ - settings
+ - preferences
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gear.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gear.md
new file mode 100644
index 000000000..2cee611e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gear.md
@@ -0,0 +1,9 @@
+---
+title: Gear
+categories:
+ - Tools
+tags:
+ - tool
+ - settings
+ - preferences
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gem.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gem.md
new file mode 100644
index 000000000..0440d1479
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gem.md
@@ -0,0 +1,8 @@
+---
+title: Gem
+categories:
+ - Shapes
+tags:
+ - shape
+ - diamond
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gender-ambiguous.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gender-ambiguous.md
new file mode 100644
index 000000000..712bbadbb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gender-ambiguous.md
@@ -0,0 +1,8 @@
+---
+title: Gender ambiguous
+categories:
+ - People
+tags:
+ - gender
+ - identity
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gender-female.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gender-female.md
new file mode 100644
index 000000000..bc0834660
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gender-female.md
@@ -0,0 +1,8 @@
+---
+title: Gender female
+categories:
+ - People
+tags:
+ - gender
+ - identity
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gender-male.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gender-male.md
new file mode 100644
index 000000000..add6e6ad2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gender-male.md
@@ -0,0 +1,8 @@
+---
+title: Gender male
+categories:
+ - People
+tags:
+ - gender
+ - identity
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gender-neuter.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gender-neuter.md
new file mode 100644
index 000000000..3afa9158b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gender-neuter.md
@@ -0,0 +1,9 @@
+---
+title: Gender neuter
+categories:
+ - People
+tags:
+ - gender
+ - identity
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gender-trans.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gender-trans.md
new file mode 100644
index 000000000..15a13cbd0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gender-trans.md
@@ -0,0 +1,8 @@
+---
+title: Gender trans
+categories:
+ - People
+tags:
+ - gender
+ - identity
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/geo-alt-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/geo-alt-fill.md
new file mode 100644
index 000000000..fef2e7b20
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/geo-alt-fill.md
@@ -0,0 +1,10 @@
+---
+title: Geo alt fill
+categories:
+ - Geo
+tags:
+ - geography
+ - map
+ - pin
+ - location
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/geo-alt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/geo-alt.md
new file mode 100644
index 000000000..b40652c20
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/geo-alt.md
@@ -0,0 +1,10 @@
+---
+title: Geo alt
+categories:
+ - Geo
+tags:
+ - geography
+ - map
+ - pin
+ - location
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/geo-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/geo-fill.md
new file mode 100644
index 000000000..1f3819a31
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/geo-fill.md
@@ -0,0 +1,10 @@
+---
+title: Geo fill
+categories:
+ - Geo
+tags:
+ - geography
+ - map
+ - pin
+ - location
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/geo.md b/vendor/twbs/bootstrap-icons/docs/content/icons/geo.md
new file mode 100644
index 000000000..663b73043
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/geo.md
@@ -0,0 +1,10 @@
+---
+title: Geo
+categories:
+ - Geo
+tags:
+ - geography
+ - map
+ - pin
+ - location
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gift-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gift-fill.md
new file mode 100644
index 000000000..15fdb5e5c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gift-fill.md
@@ -0,0 +1,8 @@
+---
+title: Gift fill
+categories:
+ - Real world
+tags:
+ - present
+ - gift
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gift.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gift.md
new file mode 100644
index 000000000..40ede8d3b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gift.md
@@ -0,0 +1,8 @@
+---
+title: Gift
+categories:
+ - Real world
+tags:
+ - present
+ - gift
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/git.md b/vendor/twbs/bootstrap-icons/docs/content/icons/git.md
new file mode 100644
index 000000000..796d01838
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/git.md
@@ -0,0 +1,10 @@
+---
+title: Git
+categories:
+ - Brand
+tags:
+ - "version control"
+ - vcs
+ - github
+ - version
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/github.md b/vendor/twbs/bootstrap-icons/docs/content/icons/github.md
new file mode 100644
index 000000000..05c264a56
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/github.md
@@ -0,0 +1,11 @@
+---
+title: GitHub
+categories:
+ - Brand
+tags:
+ - social
+ - microsoft
+ - vcs
+ - git
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gitlab.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gitlab.md
new file mode 100644
index 000000000..828c7d72a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gitlab.md
@@ -0,0 +1,10 @@
+---
+title: Gitlab
+categories:
+ - Brand
+tags:
+ - social
+ - vcs
+ - git
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/globe-americas.md b/vendor/twbs/bootstrap-icons/docs/content/icons/globe-americas.md
new file mode 100644
index 000000000..817ddc6c0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/globe-americas.md
@@ -0,0 +1,11 @@
+---
+title: Globe Americas
+categories:
+ - Geo
+tags:
+ - geography
+ - earth
+ - world
+ - map
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/globe-asia-australia.md b/vendor/twbs/bootstrap-icons/docs/content/icons/globe-asia-australia.md
new file mode 100644
index 000000000..8991edf9a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/globe-asia-australia.md
@@ -0,0 +1,11 @@
+---
+title: Globe Asia Australia
+categories:
+ - Geo
+tags:
+ - geography
+ - earth
+ - world
+ - map
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/globe-central-south-asia.md b/vendor/twbs/bootstrap-icons/docs/content/icons/globe-central-south-asia.md
new file mode 100644
index 000000000..a260b039b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/globe-central-south-asia.md
@@ -0,0 +1,11 @@
+---
+title: Globe Central South Asia
+categories:
+ - Geo
+tags:
+ - geography
+ - earth
+ - world
+ - map
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/globe-europe-africa.md b/vendor/twbs/bootstrap-icons/docs/content/icons/globe-europe-africa.md
new file mode 100644
index 000000000..24f158404
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/globe-europe-africa.md
@@ -0,0 +1,11 @@
+---
+title: Globe Europe Africa
+categories:
+ - Geo
+tags:
+ - geography
+ - earth
+ - world
+ - map
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/globe.md b/vendor/twbs/bootstrap-icons/docs/content/icons/globe.md
new file mode 100644
index 000000000..653be2ba8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/globe.md
@@ -0,0 +1,10 @@
+---
+title: Globe
+categories:
+ - Communications
+tags:
+ - world
+ - translate
+ - global
+ - international
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/globe2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/globe2.md
new file mode 100644
index 000000000..64efbff8e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/globe2.md
@@ -0,0 +1,10 @@
+---
+title: Globe2
+categories:
+ - Communications
+tags:
+ - world
+ - translate
+ - global
+ - international
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/google-play.md b/vendor/twbs/bootstrap-icons/docs/content/icons/google-play.md
new file mode 100644
index 000000000..656e2418f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/google-play.md
@@ -0,0 +1,10 @@
+---
+title: Google Play
+categories:
+ - Brand
+tags:
+ - "app store"
+ - apps
+ - store
+ - android
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/google.md b/vendor/twbs/bootstrap-icons/docs/content/icons/google.md
new file mode 100644
index 000000000..65cede354
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/google.md
@@ -0,0 +1,8 @@
+---
+title: Google
+categories:
+ - Brand
+tags:
+ - social
+ - search
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/gpu-card.md b/vendor/twbs/bootstrap-icons/docs/content/icons/gpu-card.md
new file mode 100644
index 000000000..2d310867f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/gpu-card.md
@@ -0,0 +1,9 @@
+---
+title: GPU card
+categories:
+ - Devices
+tags:
+ - video
+ - output
+ - graphics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/graph-down-arrow.md b/vendor/twbs/bootstrap-icons/docs/content/icons/graph-down-arrow.md
new file mode 100644
index 000000000..fca9e7cbb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/graph-down-arrow.md
@@ -0,0 +1,9 @@
+---
+title: Graph down arrow
+categories:
+ - Data
+tags:
+ - chart
+ - graph
+ - analytics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/graph-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/graph-down.md
new file mode 100644
index 000000000..0f86e79ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/graph-down.md
@@ -0,0 +1,9 @@
+---
+title: Graph down
+categories:
+ - Data
+tags:
+ - chart
+ - graph
+ - analytics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/graph-up-arrow.md b/vendor/twbs/bootstrap-icons/docs/content/icons/graph-up-arrow.md
new file mode 100644
index 000000000..484f98de1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/graph-up-arrow.md
@@ -0,0 +1,9 @@
+---
+title: Graph up arrow
+categories:
+ - Data
+tags:
+ - chart
+ - graph
+ - analytics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/graph-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/graph-up.md
new file mode 100644
index 000000000..2dd4a44a4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/graph-up.md
@@ -0,0 +1,9 @@
+---
+title: Graph up
+categories:
+ - Data
+tags:
+ - chart
+ - graph
+ - analytics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grid-1x2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-1x2-fill.md
new file mode 100644
index 000000000..d0d7ff1ea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-1x2-fill.md
@@ -0,0 +1,8 @@
+---
+title: Grid 1x2 fill
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grid-1x2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-1x2.md
new file mode 100644
index 000000000..b792ca809
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-1x2.md
@@ -0,0 +1,8 @@
+---
+title: Grid 1x2
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2-gap-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2-gap-fill.md
new file mode 100644
index 000000000..59d8cc2a6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2-gap-fill.md
@@ -0,0 +1,8 @@
+---
+title: Grid 3x2 gap fill
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2-gap.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2-gap.md
new file mode 100644
index 000000000..8aaf9d137
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2-gap.md
@@ -0,0 +1,8 @@
+---
+title: Grid 3x2 gap
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2.md
new file mode 100644
index 000000000..4e7922e08
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x2.md
@@ -0,0 +1,8 @@
+---
+title: Grid 3x2
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3-gap-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3-gap-fill.md
new file mode 100644
index 000000000..d4009078c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3-gap-fill.md
@@ -0,0 +1,8 @@
+---
+title: Grid 3x3 gap fill
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3-gap.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3-gap.md
new file mode 100644
index 000000000..c14762c97
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3-gap.md
@@ -0,0 +1,8 @@
+---
+title: Grid 3x3 gap
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3.md
new file mode 100644
index 000000000..76feaca32
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-3x3.md
@@ -0,0 +1,8 @@
+---
+title: Grid 3x3
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grid-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-fill.md
new file mode 100644
index 000000000..c65a7d1af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grid-fill.md
@@ -0,0 +1,8 @@
+---
+title: Grid fill
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grid.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grid.md
new file mode 100644
index 000000000..d94e9c6e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grid.md
@@ -0,0 +1,8 @@
+---
+title: Grid
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grip-horizontal.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grip-horizontal.md
new file mode 100644
index 000000000..cac379d79
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grip-horizontal.md
@@ -0,0 +1,8 @@
+---
+title: Grip horizontal
+categories:
+ - UI and keyboard
+tags:
+ - drag
+ - grab
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/grip-vertical.md b/vendor/twbs/bootstrap-icons/docs/content/icons/grip-vertical.md
new file mode 100644
index 000000000..5933e3346
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/grip-vertical.md
@@ -0,0 +1,8 @@
+---
+title: Grip vertical
+categories:
+ - UI and keyboard
+tags:
+ - drag
+ - grab
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/h-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/h-circle-fill.md
new file mode 100644
index 000000000..24a7bef99
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/h-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: H circle fill
+categories:
+ - Shapes
+tags:
+ - hospital
+ - helicopter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/h-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/h-circle.md
new file mode 100644
index 000000000..eaab0a7ce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/h-circle.md
@@ -0,0 +1,8 @@
+---
+title: H circle
+categories:
+ - Shapes
+tags:
+ - hospital
+ - helicopter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/h-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/h-square-fill.md
new file mode 100644
index 000000000..a71948746
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/h-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: H square fill
+categories:
+ - Shapes
+tags:
+ - hospital
+ - helicopter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/h-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/h-square.md
new file mode 100644
index 000000000..551165945
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/h-square.md
@@ -0,0 +1,8 @@
+---
+title: H square
+categories:
+ - Shapes
+tags:
+ - hospital
+ - helicopter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hammer.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hammer.md
new file mode 100644
index 000000000..89e10e311
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hammer.md
@@ -0,0 +1,7 @@
+---
+title: Hammer
+categories:
+ - Tools
+tags:
+ - tool
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-fill.md
new file mode 100644
index 000000000..668158b61
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-fill.md
@@ -0,0 +1,9 @@
+---
+title: Hand index fill
+categories:
+ - Hands
+tags:
+ - hand
+ - pointer
+ - cursor
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-thumb-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-thumb-fill.md
new file mode 100644
index 000000000..484cb4164
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-thumb-fill.md
@@ -0,0 +1,9 @@
+---
+title: Hand index thumb fill
+categories:
+ - Hands
+tags:
+ - hand
+ - pointer
+ - cursor
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-thumb.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-thumb.md
new file mode 100644
index 000000000..711f12e0f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index-thumb.md
@@ -0,0 +1,9 @@
+---
+title: Hand index thumb
+categories:
+ - Hands
+tags:
+ - hand
+ - pointer
+ - cursor
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index.md
new file mode 100644
index 000000000..c55c32092
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-index.md
@@ -0,0 +1,9 @@
+---
+title: Hand index
+categories:
+ - Hands
+tags:
+ - hand
+ - pointer
+ - cursor
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-down-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-down-fill.md
new file mode 100644
index 000000000..8a3c2881a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-down-fill.md
@@ -0,0 +1,10 @@
+---
+title: Hand thumbs down fill
+categories:
+ - Hands
+tags:
+ - hand
+ - pointer
+ - thumbs-down
+ - "-1"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-down.md
new file mode 100644
index 000000000..0c44a2c05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-down.md
@@ -0,0 +1,10 @@
+---
+title: Hand thumbs down
+categories:
+ - Hands
+tags:
+ - hand
+ - pointer
+ - thumbs-down
+ - "-1"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-up-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-up-fill.md
new file mode 100644
index 000000000..a81a7c633
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-up-fill.md
@@ -0,0 +1,10 @@
+---
+title: Hand thumbs up fill
+categories:
+ - Hands
+tags:
+ - hand
+ - pointer
+ - thumbs-up
+ - "+1"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-up.md
new file mode 100644
index 000000000..d5060fc89
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hand-thumbs-up.md
@@ -0,0 +1,10 @@
+---
+title: Hand thumbs up
+categories:
+ - Hands
+tags:
+ - hand
+ - pointer
+ - thumbs-up
+ - "+1"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/handbag-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/handbag-fill.md
new file mode 100644
index 000000000..e9b2c6549
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/handbag-fill.md
@@ -0,0 +1,8 @@
+---
+title: Handbag fill
+categories:
+ - Real world
+tags:
+ - purse
+ - tote
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/handbag.md b/vendor/twbs/bootstrap-icons/docs/content/icons/handbag.md
new file mode 100644
index 000000000..629689d14
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/handbag.md
@@ -0,0 +1,8 @@
+---
+title: Handbag
+categories:
+ - Real world
+tags:
+ - purse
+ - tote
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hash.md
new file mode 100644
index 000000000..8392f0661
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hash.md
@@ -0,0 +1,8 @@
+---
+title: Hash
+categories:
+ - Typography
+tags:
+ - text
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-fill.md
new file mode 100644
index 000000000..1657716cd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-fill.md
@@ -0,0 +1,11 @@
+---
+title: Hdd fill
+categories:
+ - Devices
+tags:
+ - "hard drive"
+ - "hard disk"
+ - ssd
+ - drive
+ - server
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-network-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-network-fill.md
new file mode 100644
index 000000000..88bb02c08
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-network-fill.md
@@ -0,0 +1,11 @@
+---
+title: Hdd network fill
+categories:
+ - Devices
+tags:
+ - "hard drive"
+ - "hard disk"
+ - ssd
+ - drive
+ - server
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-network.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-network.md
new file mode 100644
index 000000000..3e48dbefa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-network.md
@@ -0,0 +1,11 @@
+---
+title: Hdd network
+categories:
+ - Devices
+tags:
+ - "hard drive"
+ - "hard disk"
+ - ssd
+ - drive
+ - server
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-rack-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-rack-fill.md
new file mode 100644
index 000000000..02e95724f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-rack-fill.md
@@ -0,0 +1,11 @@
+---
+title: Hdd rack fill
+categories:
+ - Devices
+tags:
+ - "hard drive"
+ - "hard disk"
+ - ssd
+ - drive
+ - server
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-rack.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-rack.md
new file mode 100644
index 000000000..a67fc7bf3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-rack.md
@@ -0,0 +1,11 @@
+---
+title: Hdd rack
+categories:
+ - Devices
+tags:
+ - "hard drive"
+ - "hard disk"
+ - ssd
+ - drive
+ - server
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-stack-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-stack-fill.md
new file mode 100644
index 000000000..12d70e191
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-stack-fill.md
@@ -0,0 +1,11 @@
+---
+title: Hdd stack fill
+categories:
+ - Devices
+tags:
+ - "hard drive"
+ - "hard disk"
+ - ssd
+ - drive
+ - server
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-stack.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-stack.md
new file mode 100644
index 000000000..1f886db15
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd-stack.md
@@ -0,0 +1,11 @@
+---
+title: Hdd stack
+categories:
+ - Devices
+tags:
+ - "hard drive"
+ - "hard disk"
+ - ssd
+ - drive
+ - server
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hdd.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd.md
new file mode 100644
index 000000000..52a9bb0ee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hdd.md
@@ -0,0 +1,11 @@
+---
+title: Hdd
+categories:
+ - Devices
+tags:
+ - "hard drive"
+ - "hard disk"
+ - ssd
+ - drive
+ - server
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hdmi-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hdmi-fill.md
new file mode 100644
index 000000000..271eac0f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hdmi-fill.md
@@ -0,0 +1,8 @@
+---
+title: HDMI fill
+categories:
+ - Devices
+tags:
+ - video
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hdmi.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hdmi.md
new file mode 100644
index 000000000..e63d2552d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hdmi.md
@@ -0,0 +1,8 @@
+---
+title: HDMI
+categories:
+ - Devices
+tags:
+ - video
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/headphones.md b/vendor/twbs/bootstrap-icons/docs/content/icons/headphones.md
new file mode 100644
index 000000000..15f1ca1b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/headphones.md
@@ -0,0 +1,7 @@
+---
+title: Headphones
+categories:
+ - Devices
+tags:
+ - headphones
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/headset-vr.md b/vendor/twbs/bootstrap-icons/docs/content/icons/headset-vr.md
new file mode 100644
index 000000000..fcdcb2cf3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/headset-vr.md
@@ -0,0 +1,9 @@
+---
+title: Headset VR
+categories:
+ - Devices
+tags:
+ - "virual reality"
+ - oculus
+ - hololens
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/headset.md b/vendor/twbs/bootstrap-icons/docs/content/icons/headset.md
new file mode 100644
index 000000000..fb89a966f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/headset.md
@@ -0,0 +1,8 @@
+---
+title: Headset
+categories:
+ - Devices
+tags:
+ - headphones
+ - microphone
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/heart-arrow.md b/vendor/twbs/bootstrap-icons/docs/content/icons/heart-arrow.md
new file mode 100644
index 000000000..1f7d26e7e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/heart-arrow.md
@@ -0,0 +1,9 @@
+---
+title: Heart arrow
+categories:
+ - Love
+tags:
+ - romance
+ - cupid
+ - valentine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/heart-fill.md
new file mode 100644
index 000000000..8c5e5067e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/heart-fill.md
@@ -0,0 +1,8 @@
+---
+title: Heart fill
+categories:
+ - Shapes
+tags:
+ - love
+ - favorite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/heart-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/heart-half.md
new file mode 100644
index 000000000..3332e7a8c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/heart-half.md
@@ -0,0 +1,8 @@
+---
+title: Heart half
+categories:
+ - Shapes
+tags:
+ - love
+ - favorite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/heart-pulse-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/heart-pulse-fill.md
new file mode 100644
index 000000000..59d39457b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/heart-pulse-fill.md
@@ -0,0 +1,7 @@
+---
+title: Heart pulse fill
+categories:
+ - Medical
+tags:
+ - heartbeat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/heart-pulse.md b/vendor/twbs/bootstrap-icons/docs/content/icons/heart-pulse.md
new file mode 100644
index 000000000..f8264a980
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/heart-pulse.md
@@ -0,0 +1,7 @@
+---
+title: Heart pulse
+categories:
+ - Medical
+tags:
+ - heartbeat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/heart.md
new file mode 100644
index 000000000..ffb7ee331
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/heart.md
@@ -0,0 +1,8 @@
+---
+title: Heart
+categories:
+ - Shapes
+tags:
+ - love
+ - favorite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/heartbreak-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/heartbreak-fill.md
new file mode 100644
index 000000000..d8e184300
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/heartbreak-fill.md
@@ -0,0 +1,10 @@
+---
+title: Heartbreak fill
+categories:
+ - Emoji
+ - Love
+tags:
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/heartbreak.md b/vendor/twbs/bootstrap-icons/docs/content/icons/heartbreak.md
new file mode 100644
index 000000000..bfeaec3fa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/heartbreak.md
@@ -0,0 +1,10 @@
+---
+title: Heartbreak
+categories:
+ - Emoji
+ - Love
+tags:
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hearts.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hearts.md
new file mode 100644
index 000000000..a7694eff7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hearts.md
@@ -0,0 +1,8 @@
+---
+title: Hearts
+categories:
+ - Love
+tags:
+ - romance
+ - valentine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/heptagon-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/heptagon-fill.md
new file mode 100644
index 000000000..a7f6ff687
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/heptagon-fill.md
@@ -0,0 +1,8 @@
+---
+title: Heptagon fill
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/heptagon-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/heptagon-half.md
new file mode 100644
index 000000000..70bd5442f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/heptagon-half.md
@@ -0,0 +1,8 @@
+---
+title: Heptagon half
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/heptagon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/heptagon.md
new file mode 100644
index 000000000..72b14d212
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/heptagon.md
@@ -0,0 +1,8 @@
+---
+title: Heptagon
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hexagon-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hexagon-fill.md
new file mode 100644
index 000000000..a3a1bdd87
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hexagon-fill.md
@@ -0,0 +1,8 @@
+---
+title: Hexagon fill
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hexagon-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hexagon-half.md
new file mode 100644
index 000000000..ce7d8c288
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hexagon-half.md
@@ -0,0 +1,8 @@
+---
+title: Hexagon half
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hexagon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hexagon.md
new file mode 100644
index 000000000..7f81598d2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hexagon.md
@@ -0,0 +1,8 @@
+---
+title: Hexagon
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/highlighter.md b/vendor/twbs/bootstrap-icons/docs/content/icons/highlighter.md
new file mode 100644
index 000000000..a0d0f73c0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/highlighter.md
@@ -0,0 +1,11 @@
+---
+title: Highlighter
+categories:
+ - Tools
+tags:
+ - text
+ - study
+ - highlight
+ - marker
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/highlights.md b/vendor/twbs/bootstrap-icons/docs/content/icons/highlights.md
new file mode 100644
index 000000000..f7b5a0cfd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/highlights.md
@@ -0,0 +1,11 @@
+---
+title: Highlights
+categories:
+ - Graphics
+tags:
+ - photo
+ - editing
+ - image
+ - picture
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hospital-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hospital-fill.md
new file mode 100644
index 000000000..f7c12f144
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hospital-fill.md
@@ -0,0 +1,8 @@
+---
+title: Hospital fill
+categories:
+ - Medical
+tags:
+ - health
+ - "emergency room"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hospital.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hospital.md
new file mode 100644
index 000000000..61ba0aa49
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hospital.md
@@ -0,0 +1,8 @@
+---
+title: Hospital
+categories:
+ - Medical
+tags:
+ - health
+ - "emergency room"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-bottom.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-bottom.md
new file mode 100644
index 000000000..19056eeb5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-bottom.md
@@ -0,0 +1,11 @@
+---
+title: Hourglass bottom
+categories:
+ - Real world
+tags:
+ - time
+ - history
+ - wait
+ - sand
+ - clock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-split.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-split.md
new file mode 100644
index 000000000..bb50933e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-split.md
@@ -0,0 +1,11 @@
+---
+title: Hourglass split
+categories:
+ - Real world
+tags:
+ - time
+ - history
+ - wait
+ - sand
+ - clock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-top.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-top.md
new file mode 100644
index 000000000..9cb8ffddb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass-top.md
@@ -0,0 +1,11 @@
+---
+title: Hourglass top
+categories:
+ - Real world
+tags:
+ - time
+ - history
+ - wait
+ - sand
+ - clock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass.md
new file mode 100644
index 000000000..a2ee7de68
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hourglass.md
@@ -0,0 +1,11 @@
+---
+title: Hourglass
+categories:
+ - Real world
+tags:
+ - time
+ - history
+ - wait
+ - sand
+ - clock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-add-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-add-fill.md
new file mode 100644
index 000000000..6746624a6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-add-fill.md
@@ -0,0 +1,8 @@
+---
+title: House add fill
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-add.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-add.md
new file mode 100644
index 000000000..f016161be
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-add.md
@@ -0,0 +1,8 @@
+---
+title: House add
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-check-fill.md
new file mode 100644
index 000000000..02e8b57f8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-check-fill.md
@@ -0,0 +1,8 @@
+---
+title: House check fill
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-check.md
new file mode 100644
index 000000000..a5dddbbbd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-check.md
@@ -0,0 +1,8 @@
+---
+title: House check
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-dash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-dash-fill.md
new file mode 100644
index 000000000..7d451ef0c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-dash-fill.md
@@ -0,0 +1,8 @@
+---
+title: House dash fill
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-dash.md
new file mode 100644
index 000000000..42edd015a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-dash.md
@@ -0,0 +1,8 @@
+---
+title: House dash
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-door-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-door-fill.md
new file mode 100644
index 000000000..888f9d70e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-door-fill.md
@@ -0,0 +1,7 @@
+---
+title: House door fill
+categories:
+ - Real world
+tags:
+ - home
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-door.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-door.md
new file mode 100644
index 000000000..8b47655b2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-door.md
@@ -0,0 +1,7 @@
+---
+title: House door
+categories:
+ - Real world
+tags:
+ - home
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-down-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-down-fill.md
new file mode 100644
index 000000000..8ce4e7acf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-down-fill.md
@@ -0,0 +1,8 @@
+---
+title: House down fill
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-down.md
new file mode 100644
index 000000000..89bf2d7bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-down.md
@@ -0,0 +1,8 @@
+---
+title: House down
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-exclamation-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-exclamation-fill.md
new file mode 100644
index 000000000..55d54118a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-exclamation-fill.md
@@ -0,0 +1,8 @@
+---
+title: House exclamation fill
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-exclamation.md
new file mode 100644
index 000000000..9ebc808f3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-exclamation.md
@@ -0,0 +1,8 @@
+---
+title: House exclamation
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-fill.md
new file mode 100644
index 000000000..1e26cddae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-fill.md
@@ -0,0 +1,7 @@
+---
+title: House fill
+categories:
+ - Real world
+tags:
+ - home
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-gear-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-gear-fill.md
new file mode 100644
index 000000000..9d6b8edd1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-gear-fill.md
@@ -0,0 +1,8 @@
+---
+title: House gear fill
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-gear.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-gear.md
new file mode 100644
index 000000000..6bf1733be
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-gear.md
@@ -0,0 +1,8 @@
+---
+title: House gear
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-heart-fill.md
new file mode 100644
index 000000000..59c6df29d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-heart-fill.md
@@ -0,0 +1,9 @@
+---
+title: House heart fill
+categories:
+ - Real world
+tags:
+ - home
+ - love
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-heart.md
new file mode 100644
index 000000000..7b7bd0941
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-heart.md
@@ -0,0 +1,9 @@
+---
+title: House heart
+categories:
+ - Real world
+tags:
+ - home
+ - love
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-lock-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-lock-fill.md
new file mode 100644
index 000000000..7dd47fbca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-lock-fill.md
@@ -0,0 +1,8 @@
+---
+title: House lock fill
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-lock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-lock.md
new file mode 100644
index 000000000..cd352610a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-lock.md
@@ -0,0 +1,8 @@
+---
+title: House lock
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-slash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-slash-fill.md
new file mode 100644
index 000000000..73b8692f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-slash-fill.md
@@ -0,0 +1,8 @@
+---
+title: House slash fill
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-slash.md
new file mode 100644
index 000000000..5c6c3a18f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-slash.md
@@ -0,0 +1,8 @@
+---
+title: House slash
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-up-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-up-fill.md
new file mode 100644
index 000000000..340f39382
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-up-fill.md
@@ -0,0 +1,8 @@
+---
+title: House up fill
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-up.md
new file mode 100644
index 000000000..be55ef78e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-up.md
@@ -0,0 +1,8 @@
+---
+title: House up
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-x-fill.md
new file mode 100644
index 000000000..422242054
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-x-fill.md
@@ -0,0 +1,8 @@
+---
+title: House x fill
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house-x.md
new file mode 100644
index 000000000..6f79bf29b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house-x.md
@@ -0,0 +1,8 @@
+---
+title: House x
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/house.md b/vendor/twbs/bootstrap-icons/docs/content/icons/house.md
new file mode 100644
index 000000000..49017c778
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/house.md
@@ -0,0 +1,7 @@
+---
+title: House
+categories:
+ - Real world
+tags:
+ - home
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/houses-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/houses-fill.md
new file mode 100644
index 000000000..7fafcdc44
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/houses-fill.md
@@ -0,0 +1,8 @@
+---
+title: Houses fill
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/houses.md b/vendor/twbs/bootstrap-icons/docs/content/icons/houses.md
new file mode 100644
index 000000000..cee0f6353
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/houses.md
@@ -0,0 +1,8 @@
+---
+title: Houses
+categories:
+ - Real world
+tags:
+ - home
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hr.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hr.md
new file mode 100644
index 000000000..a41d91cf3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hr.md
@@ -0,0 +1,8 @@
+---
+title: HR
+categories:
+ - Typography
+tags:
+ - divider
+ - horizonal-rule
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hurricane.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hurricane.md
new file mode 100644
index 000000000..608c16b8c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hurricane.md
@@ -0,0 +1,7 @@
+---
+title: Hurricane
+categories:
+ - Weather
+tags:
+ - storm
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/hypnotize.md b/vendor/twbs/bootstrap-icons/docs/content/icons/hypnotize.md
new file mode 100644
index 000000000..d45e8a8f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/hypnotize.md
@@ -0,0 +1,8 @@
+---
+title: Hypnotize
+categories:
+ - Real World
+tags:
+ - hypnosis
+ - sleepy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/image-alt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/image-alt.md
new file mode 100644
index 000000000..eb663061f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/image-alt.md
@@ -0,0 +1,8 @@
+---
+title: Image alt
+categories:
+ - Files and folders
+tags:
+ - picture
+ - photo
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/image-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/image-fill.md
new file mode 100644
index 000000000..a3702dcd6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/image-fill.md
@@ -0,0 +1,8 @@
+---
+title: Image fill
+categories:
+ - Files and folders
+tags:
+ - picture
+ - photo
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/image.md b/vendor/twbs/bootstrap-icons/docs/content/icons/image.md
new file mode 100644
index 000000000..8dc7b3b01
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/image.md
@@ -0,0 +1,8 @@
+---
+title: Image
+categories:
+ - Files and folders
+tags:
+ - picture
+ - photo
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/images.md b/vendor/twbs/bootstrap-icons/docs/content/icons/images.md
new file mode 100644
index 000000000..65322d7ee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/images.md
@@ -0,0 +1,8 @@
+---
+title: Images
+categories:
+ - Files and folders
+tags:
+ - picture
+ - photo
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/inbox-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/inbox-fill.md
new file mode 100644
index 000000000..730dd0a16
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/inbox-fill.md
@@ -0,0 +1,9 @@
+---
+title: Inbox fill
+categories:
+ - Communications
+tags:
+ - mail
+ - email
+ - letter tray
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/inbox.md b/vendor/twbs/bootstrap-icons/docs/content/icons/inbox.md
new file mode 100644
index 000000000..5b2a51b44
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/inbox.md
@@ -0,0 +1,9 @@
+---
+title: Inbox
+categories:
+ - Communications
+tags:
+ - mail
+ - email
+ - letter tray
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/inboxes-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/inboxes-fill.md
new file mode 100644
index 000000000..d3da4f90a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/inboxes-fill.md
@@ -0,0 +1,9 @@
+---
+title: Inboxes fill
+categories:
+ - Communications
+tags:
+ - mail
+ - email
+ - letter tray
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/inboxes.md b/vendor/twbs/bootstrap-icons/docs/content/icons/inboxes.md
new file mode 100644
index 000000000..d3da4f90a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/inboxes.md
@@ -0,0 +1,9 @@
+---
+title: Inboxes fill
+categories:
+ - Communications
+tags:
+ - mail
+ - email
+ - letter tray
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/incognito.md b/vendor/twbs/bootstrap-icons/docs/content/icons/incognito.md
new file mode 100644
index 000000000..3f31b6580
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/incognito.md
@@ -0,0 +1,9 @@
+---
+title: Incognito
+categories:
+ - Miscellaneous
+tags:
+ - private
+ - investigator
+ - secret
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/indent.md b/vendor/twbs/bootstrap-icons/docs/content/icons/indent.md
new file mode 100644
index 000000000..fdf8f0205
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/indent.md
@@ -0,0 +1,8 @@
+---
+title: Indent
+categories:
+ - UI and Keyboard
+tags:
+ - tab
+ - indent
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/infinity.md b/vendor/twbs/bootstrap-icons/docs/content/icons/infinity.md
new file mode 100644
index 000000000..1f5ddbe7e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/infinity.md
@@ -0,0 +1,8 @@
+---
+title: Infinity
+categories:
+ - Typography
+tags:
+ - math
+ - infinite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/info-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/info-circle-fill.md
new file mode 100644
index 000000000..366a69763
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/info-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Info fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - information
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/info-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/info-circle.md
new file mode 100644
index 000000000..993b3ce71
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/info-circle.md
@@ -0,0 +1,8 @@
+---
+title: Info circle
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - information
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/info-lg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/info-lg.md
new file mode 100644
index 000000000..cc7e854e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/info-lg.md
@@ -0,0 +1,8 @@
+---
+title: Info lg
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - information
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/info-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/info-square-fill.md
new file mode 100644
index 000000000..431f9e02d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/info-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Info square fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - information
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/info-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/info-square.md
new file mode 100644
index 000000000..3ccddbe83
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/info-square.md
@@ -0,0 +1,8 @@
+---
+title: Info square
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - information
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/info.md b/vendor/twbs/bootstrap-icons/docs/content/icons/info.md
new file mode 100644
index 000000000..cf52526e6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/info.md
@@ -0,0 +1,8 @@
+---
+title: Info
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - information
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/input-cursor-text.md b/vendor/twbs/bootstrap-icons/docs/content/icons/input-cursor-text.md
new file mode 100644
index 000000000..a1bdfe117
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/input-cursor-text.md
@@ -0,0 +1,9 @@
+---
+title: Input cursor text
+categories:
+ - Graphics
+tags:
+ - textarea
+ - form
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/input-cursor.md b/vendor/twbs/bootstrap-icons/docs/content/icons/input-cursor.md
new file mode 100644
index 000000000..aaada0afd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/input-cursor.md
@@ -0,0 +1,9 @@
+---
+title: Input cursor
+categories:
+ - Graphics
+tags:
+ - textarea
+ - form
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/instagram.md b/vendor/twbs/bootstrap-icons/docs/content/icons/instagram.md
new file mode 100644
index 000000000..fc7eea63c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/instagram.md
@@ -0,0 +1,8 @@
+---
+title: Instagram
+categories:
+ - Brand
+tags:
+ - social
+ - chat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/intersect.md b/vendor/twbs/bootstrap-icons/docs/content/icons/intersect.md
new file mode 100644
index 000000000..1a1812aed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/intersect.md
@@ -0,0 +1,10 @@
+---
+title: Intersect
+categories:
+ - Graphics
+tags:
+ - graphics
+ - vector
+ - merge
+ - layers
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-album.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-album.md
new file mode 100644
index 000000000..3033f8b40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-album.md
@@ -0,0 +1,10 @@
+---
+title: Journal album
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-arrow-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-arrow-down.md
new file mode 100644
index 000000000..77a0daa0a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-arrow-down.md
@@ -0,0 +1,10 @@
+---
+title: Journal arrow down
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-arrow-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-arrow-up.md
new file mode 100644
index 000000000..6bc676082
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-arrow-up.md
@@ -0,0 +1,10 @@
+---
+title: Journal arrow up
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-bookmark-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-bookmark-fill.md
new file mode 100644
index 000000000..b49e9bfe8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-bookmark-fill.md
@@ -0,0 +1,10 @@
+---
+title: Journal bookmark fill
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-bookmark.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-bookmark.md
new file mode 100644
index 000000000..f62053680
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-bookmark.md
@@ -0,0 +1,10 @@
+---
+title: Journal bookmark
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-check.md
new file mode 100644
index 000000000..be1681a8f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-check.md
@@ -0,0 +1,10 @@
+---
+title: Journal check
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-code.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-code.md
new file mode 100644
index 000000000..0e986666b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-code.md
@@ -0,0 +1,10 @@
+---
+title: Journal code
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-medical.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-medical.md
new file mode 100644
index 000000000..88f7a4ef6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-medical.md
@@ -0,0 +1,10 @@
+---
+title: Journal medical
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-minus.md
new file mode 100644
index 000000000..115e77d7f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-minus.md
@@ -0,0 +1,10 @@
+---
+title: Journal minus
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-plus.md
new file mode 100644
index 000000000..c2c130727
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-plus.md
@@ -0,0 +1,10 @@
+---
+title: Journal plus
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-richtext.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-richtext.md
new file mode 100644
index 000000000..dcab678a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-richtext.md
@@ -0,0 +1,10 @@
+---
+title: Journal richtext
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-text.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-text.md
new file mode 100644
index 000000000..2c0cfcaea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-text.md
@@ -0,0 +1,10 @@
+---
+title: Journal text
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-x.md
new file mode 100644
index 000000000..171491ee8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal-x.md
@@ -0,0 +1,12 @@
+---
+title: Journal x
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journal.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journal.md
new file mode 100644
index 000000000..fe8c36e38
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journal.md
@@ -0,0 +1,10 @@
+---
+title: Journal
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/journals.md b/vendor/twbs/bootstrap-icons/docs/content/icons/journals.md
new file mode 100644
index 000000000..fd1ca3a5d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/journals.md
@@ -0,0 +1,10 @@
+---
+title: Journals
+categories:
+ - Files and folders
+tags:
+ - file
+ - folder
+ - journal
+ - notebook
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/joystick.md b/vendor/twbs/bootstrap-icons/docs/content/icons/joystick.md
new file mode 100644
index 000000000..0639e81f8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/joystick.md
@@ -0,0 +1,9 @@
+---
+title: Joystick
+categories:
+ - Entertainment
+tags:
+ - gaming
+ - game
+ - "video games"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/justify-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/justify-left.md
new file mode 100644
index 000000000..b36715fd0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/justify-left.md
@@ -0,0 +1,10 @@
+---
+title: Justify left
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/justify-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/justify-right.md
new file mode 100644
index 000000000..4be29fe43
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/justify-right.md
@@ -0,0 +1,10 @@
+---
+title: Justify right
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/justify.md b/vendor/twbs/bootstrap-icons/docs/content/icons/justify.md
new file mode 100644
index 000000000..c93548e8e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/justify.md
@@ -0,0 +1,10 @@
+---
+title: Justify
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/kanban-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/kanban-fill.md
new file mode 100644
index 000000000..049beaac2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/kanban-fill.md
@@ -0,0 +1,8 @@
+---
+title: Kanban fill
+categories:
+ - Miscellaneous
+tags:
+ - board
+ - project-management
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/kanban.md b/vendor/twbs/bootstrap-icons/docs/content/icons/kanban.md
new file mode 100644
index 000000000..9b997730a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/kanban.md
@@ -0,0 +1,8 @@
+---
+title: Kanban
+categories:
+ - Miscellaneous
+tags:
+ - board
+ - project-management
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/key-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/key-fill.md
new file mode 100644
index 000000000..6acbd2239
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/key-fill.md
@@ -0,0 +1,8 @@
+---
+title: Key fill
+categories:
+ - Real world
+tags:
+ - lock
+ - secure
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/key.md b/vendor/twbs/bootstrap-icons/docs/content/icons/key.md
new file mode 100644
index 000000000..f0c3a8a73
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/key.md
@@ -0,0 +1,8 @@
+---
+title: Key
+categories:
+ - Real world
+tags:
+ - lock
+ - secure
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/keyboard-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/keyboard-fill.md
new file mode 100644
index 000000000..e045d8719
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/keyboard-fill.md
@@ -0,0 +1,9 @@
+---
+title: Keyboard fill
+categories:
+ - Devices
+tags:
+ - keyboard
+ - keys
+ - typing
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/keyboard.md b/vendor/twbs/bootstrap-icons/docs/content/icons/keyboard.md
new file mode 100644
index 000000000..7950f37f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/keyboard.md
@@ -0,0 +1,9 @@
+---
+title: Keyboard
+categories:
+ - Devices
+tags:
+ - keyboard
+ - keys
+ - typing
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ladder.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ladder.md
new file mode 100644
index 000000000..b075bc2a3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ladder.md
@@ -0,0 +1,8 @@
+---
+title: Ladder
+categories:
+ - Real world
+tags:
+ - climb
+ - ladder
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lamp-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lamp-fill.md
new file mode 100644
index 000000000..e28f60c98
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lamp-fill.md
@@ -0,0 +1,8 @@
+---
+title: Lamp fill
+categories:
+ - Real world
+tags:
+ - light
+ - lamp
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lamp.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lamp.md
new file mode 100644
index 000000000..f11f7b602
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lamp.md
@@ -0,0 +1,8 @@
+---
+title: Lamp
+categories:
+ - Real world
+tags:
+ - light
+ - lamp
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/laptop-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/laptop-fill.md
new file mode 100644
index 000000000..83abbe8bc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/laptop-fill.md
@@ -0,0 +1,7 @@
+---
+title: Laptop fill
+categories:
+ - Devices
+tags:
+ - computer
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/laptop.md b/vendor/twbs/bootstrap-icons/docs/content/icons/laptop.md
new file mode 100644
index 000000000..f27c913cc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/laptop.md
@@ -0,0 +1,7 @@
+---
+title: Laptop
+categories:
+ - Devices
+tags:
+ - computer
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layer-backward.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layer-backward.md
new file mode 100644
index 000000000..ce2a1485e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layer-backward.md
@@ -0,0 +1,9 @@
+---
+title: Layer backward
+categories:
+ - Graphics
+tags:
+ - arrange
+ - layers
+ - back
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layer-forward.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layer-forward.md
new file mode 100644
index 000000000..0419600fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layer-forward.md
@@ -0,0 +1,9 @@
+---
+title: Layer forward
+categories:
+ - Graphics
+tags:
+ - arrange
+ - layers
+ - front
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layers-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layers-fill.md
new file mode 100644
index 000000000..ab85b9ebe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layers-fill.md
@@ -0,0 +1,8 @@
+---
+title: Layers fill
+categories:
+ - Graphics
+tags:
+ - perspective
+ - stacked
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layers-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layers-half.md
new file mode 100644
index 000000000..eef503dac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layers-half.md
@@ -0,0 +1,8 @@
+---
+title: Layers half
+categories:
+ - Graphics
+tags:
+ - perspective
+ - stacked
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layers.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layers.md
new file mode 100644
index 000000000..1e2a1e6ec
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layers.md
@@ -0,0 +1,8 @@
+---
+title: Layers
+categories:
+ - Graphics
+tags:
+ - perspective
+ - stacked
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-inset-reverse.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-inset-reverse.md
new file mode 100644
index 000000000..4c9aaaf9a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-inset-reverse.md
@@ -0,0 +1,8 @@
+---
+title: Layout sidebar inset reverse
+categories:
+ - Layout
+tags:
+ - layout
+ - columns
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-inset.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-inset.md
new file mode 100644
index 000000000..12be1166a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-inset.md
@@ -0,0 +1,8 @@
+---
+title: Layout sidebar nested
+categories:
+ - Layout
+tags:
+ - layout
+ - columns
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-reverse.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-reverse.md
new file mode 100644
index 000000000..9a0ac5ac5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar-reverse.md
@@ -0,0 +1,9 @@
+---
+title: Layout sidebar reverse
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+ - sidebar
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar.md
new file mode 100644
index 000000000..37cdad85b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-sidebar.md
@@ -0,0 +1,9 @@
+---
+title: Layout sidebar
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+ - sidebar
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layout-split.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-split.md
new file mode 100644
index 000000000..533538e68
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-split.md
@@ -0,0 +1,9 @@
+---
+title: Layout split
+categories:
+ - Layout
+tags:
+ - grid
+ - layout
+ - sidebar
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-sidebar-reverse.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-sidebar-reverse.md
new file mode 100644
index 000000000..16c11888e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-sidebar-reverse.md
@@ -0,0 +1,8 @@
+---
+title: Layout text sidebar reverse
+categories:
+ - Layout
+tags:
+ - layout
+ - columns
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-sidebar.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-sidebar.md
new file mode 100644
index 000000000..ebc879d6d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-sidebar.md
@@ -0,0 +1,8 @@
+---
+title: Layout text sidebar
+categories:
+ - Layout
+tags:
+ - layout
+ - columns
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-window-reverse.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-window-reverse.md
new file mode 100644
index 000000000..5d14e0e07
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-window-reverse.md
@@ -0,0 +1,8 @@
+---
+title: Layout text window reverse
+categories:
+ - Layout
+tags:
+ - layout
+ - columns
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-window.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-window.md
new file mode 100644
index 000000000..e63e1f140
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-text-window.md
@@ -0,0 +1,8 @@
+---
+title: Layout text window
+categories:
+ - Layout
+tags:
+ - layout
+ - columns
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layout-three-columns.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-three-columns.md
new file mode 100644
index 000000000..6e291f6b2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-three-columns.md
@@ -0,0 +1,8 @@
+---
+title: Layout three columns
+categories:
+ - Layout
+tags:
+ - layout
+ - columns
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/layout-wtf.md b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-wtf.md
new file mode 100644
index 000000000..d93772c5f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/layout-wtf.md
@@ -0,0 +1,8 @@
+---
+title: Layout WTF
+categories:
+ - Layout
+tags:
+ - layout
+ - broken
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/life-preserver.md b/vendor/twbs/bootstrap-icons/docs/content/icons/life-preserver.md
new file mode 100644
index 000000000..087aa1ebc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/life-preserver.md
@@ -0,0 +1,8 @@
+---
+title: Life preserver
+categories:
+ - Real world
+tags:
+ - lifesaver
+ - water
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-fill.md
new file mode 100644
index 000000000..7ce5c93af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-fill.md
@@ -0,0 +1,8 @@
+---
+title: Lightbulb fill
+categories:
+ - Real world
+tags:
+ - lights
+ - lamp
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-off-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-off-fill.md
new file mode 100644
index 000000000..3ea267a61
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-off-fill.md
@@ -0,0 +1,8 @@
+---
+title: Lightbulb off fill
+categories:
+ - Real world
+tags:
+ - lights
+ - lamp
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-off.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-off.md
new file mode 100644
index 000000000..22e183deb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb-off.md
@@ -0,0 +1,8 @@
+---
+title: Lightbulb off
+categories:
+ - Real world
+tags:
+ - lights
+ - lamp
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb.md
new file mode 100644
index 000000000..be0de01e9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lightbulb.md
@@ -0,0 +1,8 @@
+---
+title: Lightbulb
+categories:
+ - Real world
+tags:
+ - lights
+ - lamp
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lightning-charge-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lightning-charge-fill.md
new file mode 100644
index 000000000..d5a5641c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lightning-charge-fill.md
@@ -0,0 +1,10 @@
+---
+title: Lightning charge fill
+categories:
+ - Miscellaneous
+tags:
+ - weather
+ - storm
+ - thunder
+ - bolt
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lightning-charge.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lightning-charge.md
new file mode 100644
index 000000000..9e25fd2b1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lightning-charge.md
@@ -0,0 +1,10 @@
+---
+title: Lightning charge
+categories:
+ - Miscellaneous
+tags:
+ - weather
+ - storm
+ - thunder
+ - bolt
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lightning-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lightning-fill.md
new file mode 100644
index 000000000..6f10a9d0b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lightning-fill.md
@@ -0,0 +1,9 @@
+---
+title: Lightning fill
+categories:
+ - Weather
+tags:
+ - storm
+ - thunder
+ - bolt
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lightning.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lightning.md
new file mode 100644
index 000000000..b1362bc48
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lightning.md
@@ -0,0 +1,9 @@
+---
+title: Lightning
+categories:
+ - Weather
+tags:
+ - storm
+ - thunder
+ - bolt
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/line.md b/vendor/twbs/bootstrap-icons/docs/content/icons/line.md
new file mode 100644
index 000000000..7533267f3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/line.md
@@ -0,0 +1,7 @@
+---
+title: Line
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/link-45deg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/link-45deg.md
new file mode 100644
index 000000000..3db815e42
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/link-45deg.md
@@ -0,0 +1,9 @@
+---
+title: Link 45deg
+categories:
+ - UI and keyboard
+tags:
+ - anchor
+ - hyperlink
+ - href
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/link.md b/vendor/twbs/bootstrap-icons/docs/content/icons/link.md
new file mode 100644
index 000000000..fb79edb3e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/link.md
@@ -0,0 +1,9 @@
+---
+title: Link
+categories:
+ - UI and keyboard
+tags:
+ - anchor
+ - hyperlink
+ - href
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/linkedin.md b/vendor/twbs/bootstrap-icons/docs/content/icons/linkedin.md
new file mode 100644
index 000000000..e2f8eb231
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/linkedin.md
@@ -0,0 +1,8 @@
+---
+title: Linkedin
+categories:
+ - Brand
+tags:
+ - social
+ - microsoft
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/list-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/list-check.md
new file mode 100644
index 000000000..5fbab9a2e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/list-check.md
@@ -0,0 +1,12 @@
+---
+title: List checked
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+ - checklist
+ - done
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/list-columns-reverse.md b/vendor/twbs/bootstrap-icons/docs/content/icons/list-columns-reverse.md
new file mode 100644
index 000000000..e4cc7290c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/list-columns-reverse.md
@@ -0,0 +1,9 @@
+---
+title: List columns reverse
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - alignment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/list-columns.md b/vendor/twbs/bootstrap-icons/docs/content/icons/list-columns.md
new file mode 100644
index 000000000..65b14a56d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/list-columns.md
@@ -0,0 +1,9 @@
+---
+title: List columns
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - alignment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/list-nested.md b/vendor/twbs/bootstrap-icons/docs/content/icons/list-nested.md
new file mode 100644
index 000000000..89a2aab13
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/list-nested.md
@@ -0,0 +1,10 @@
+---
+title: List nested
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - alignment
+ - children
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/list-ol.md b/vendor/twbs/bootstrap-icons/docs/content/icons/list-ol.md
new file mode 100644
index 000000000..e1be5b171
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/list-ol.md
@@ -0,0 +1,13 @@
+---
+title: List OL
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+ - ordered-list
+ - numbered-list
+ - numbered
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/list-stars.md b/vendor/twbs/bootstrap-icons/docs/content/icons/list-stars.md
new file mode 100644
index 000000000..d4e2edb01
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/list-stars.md
@@ -0,0 +1,9 @@
+---
+title: List stars
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - starred
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/list-task.md b/vendor/twbs/bootstrap-icons/docs/content/icons/list-task.md
new file mode 100644
index 000000000..879801e6b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/list-task.md
@@ -0,0 +1,12 @@
+---
+title: List task
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+ - todos
+ - task
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/list-ul.md b/vendor/twbs/bootstrap-icons/docs/content/icons/list-ul.md
new file mode 100644
index 000000000..502863cca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/list-ul.md
@@ -0,0 +1,11 @@
+---
+title: List UL
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+ - unordered-list
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/list.md b/vendor/twbs/bootstrap-icons/docs/content/icons/list.md
new file mode 100644
index 000000000..ca4331ba8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/list.md
@@ -0,0 +1,12 @@
+---
+title: List
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+ - menu
+ - hamburger
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lock-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lock-fill.md
new file mode 100644
index 000000000..9f1788ba4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lock-fill.md
@@ -0,0 +1,8 @@
+---
+title: Lock fill
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lock.md
new file mode 100644
index 000000000..16c334e4e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lock.md
@@ -0,0 +1,8 @@
+---
+title: Lock
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/luggage-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/luggage-fill.md
new file mode 100644
index 000000000..b83ea7845
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/luggage-fill.md
@@ -0,0 +1,12 @@
+---
+title: Luggage fill
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/luggage.md b/vendor/twbs/bootstrap-icons/docs/content/icons/luggage.md
new file mode 100644
index 000000000..3ac626e6f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/luggage.md
@@ -0,0 +1,12 @@
+---
+title: Luggage
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+ - student
+ - education
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lungs-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lungs-fill.md
new file mode 100644
index 000000000..cb09febd2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lungs-fill.md
@@ -0,0 +1,9 @@
+---
+title: Lungs fill
+categories:
+ - Medical
+tags:
+ - medicine
+ - health
+ - breathing
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/lungs.md b/vendor/twbs/bootstrap-icons/docs/content/icons/lungs.md
new file mode 100644
index 000000000..31c8f66dd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/lungs.md
@@ -0,0 +1,9 @@
+---
+title: Lungs
+categories:
+ - Medical
+tags:
+ - medicine
+ - health
+ - breathing
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/magic.md b/vendor/twbs/bootstrap-icons/docs/content/icons/magic.md
new file mode 100644
index 000000000..2cc6e3428
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/magic.md
@@ -0,0 +1,7 @@
+---
+title: Magic
+categories:
+ - Real World
+tags:
+ - "magic stick"
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/magnet-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/magnet-fill.md
new file mode 100644
index 000000000..fdb11489f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/magnet-fill.md
@@ -0,0 +1,7 @@
+---
+title: Magnet fill
+categories:
+ - Real World
+tags:
+ - magnetic
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/magnet.md b/vendor/twbs/bootstrap-icons/docs/content/icons/magnet.md
new file mode 100644
index 000000000..174c7771b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/magnet.md
@@ -0,0 +1,7 @@
+---
+title: Magnet
+categories:
+ - Real World
+tags:
+ - magnetic
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox-flag.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox-flag.md
new file mode 100644
index 000000000..0472c8811
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox-flag.md
@@ -0,0 +1,10 @@
+---
+title: Mailbox flag
+categories:
+ - Real world
+tags:
+ - post
+ - postal
+ - postbox
+ - letterbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox.md
new file mode 100644
index 000000000..1ac78ab68
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox.md
@@ -0,0 +1,10 @@
+---
+title: Mailbox
+categories:
+ - Real world
+tags:
+ - post
+ - postal
+ - postbox
+ - letterbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox2-flag.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox2-flag.md
new file mode 100644
index 000000000..69cc6849e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox2-flag.md
@@ -0,0 +1,10 @@
+---
+title: Mailbox2 flag
+categories:
+ - Real world
+tags:
+ - post
+ - postal
+ - postbox
+ - letterbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox2.md
new file mode 100644
index 000000000..8dd08a452
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mailbox2.md
@@ -0,0 +1,10 @@
+---
+title: Mailbox2
+categories:
+ - Real world
+tags:
+ - post
+ - postal
+ - postbox
+ - letterbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/map-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/map-fill.md
new file mode 100644
index 000000000..03bcb5d18
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/map-fill.md
@@ -0,0 +1,9 @@
+---
+title: Map fill
+categories:
+ - Geo
+tags:
+ - geography
+ - directions
+ - location
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/map.md b/vendor/twbs/bootstrap-icons/docs/content/icons/map.md
new file mode 100644
index 000000000..b3ee747e8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/map.md
@@ -0,0 +1,9 @@
+---
+title: Map
+categories:
+ - Geo
+tags:
+ - geography
+ - directions
+ - location
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/markdown-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/markdown-fill.md
new file mode 100644
index 000000000..766cf8b68
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/markdown-fill.md
@@ -0,0 +1,10 @@
+---
+title: Markdown fill
+categories:
+ - Badges
+tags:
+ - markdown
+ - md
+ - content
+ - writing
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/markdown.md b/vendor/twbs/bootstrap-icons/docs/content/icons/markdown.md
new file mode 100644
index 000000000..f00d819ec
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/markdown.md
@@ -0,0 +1,10 @@
+---
+title: Markdown
+categories:
+ - Badges
+tags:
+ - markdown
+ - md
+ - content
+ - writing
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/marker-tip.md b/vendor/twbs/bootstrap-icons/docs/content/icons/marker-tip.md
new file mode 100644
index 000000000..6b185811a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/marker-tip.md
@@ -0,0 +1,10 @@
+---
+title: Marker tip
+categories:
+ - Tools
+tags:
+ - text
+ - study
+ - highlight
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mask.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mask.md
new file mode 100644
index 000000000..14936c225
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mask.md
@@ -0,0 +1,7 @@
+---
+title: Mask
+categories:
+ - Graphics
+tags:
+ - mask
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mastodon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mastodon.md
new file mode 100644
index 000000000..406e6b826
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mastodon.md
@@ -0,0 +1,7 @@
+---
+title: Mastodon
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/medium.md b/vendor/twbs/bootstrap-icons/docs/content/icons/medium.md
new file mode 100644
index 000000000..1c7c201f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/medium.md
@@ -0,0 +1,7 @@
+---
+title: Medium
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/megaphone-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/megaphone-fill.md
new file mode 100644
index 000000000..a7bd33eee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/megaphone-fill.md
@@ -0,0 +1,8 @@
+---
+title: Megaphone fill
+categories:
+ - Real world
+tags:
+ - loudspeaker
+ - announcement
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/megaphone.md b/vendor/twbs/bootstrap-icons/docs/content/icons/megaphone.md
new file mode 100644
index 000000000..40a09cb96
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/megaphone.md
@@ -0,0 +1,8 @@
+---
+title: Megaphone
+categories:
+ - Real world
+tags:
+ - loudspeaker
+ - announcement
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/memory.md b/vendor/twbs/bootstrap-icons/docs/content/icons/memory.md
new file mode 100644
index 000000000..f501021bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/memory.md
@@ -0,0 +1,7 @@
+---
+title: Memory
+categories:
+ - Devices
+tags:
+ - ram
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/menu-app-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-app-fill.md
new file mode 100644
index 000000000..72876252e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-app-fill.md
@@ -0,0 +1,11 @@
+---
+title: Menu app fill
+categories:
+ - Controls
+tags:
+ - dropdown
+ - menu
+ - context
+ - app
+ - ui
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/menu-app.md b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-app.md
new file mode 100644
index 000000000..06305f4db
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-app.md
@@ -0,0 +1,11 @@
+---
+title: Menu app
+categories:
+ - Controls
+tags:
+ - dropdown
+ - menu
+ - context
+ - app
+ - ui
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-fill.md
new file mode 100644
index 000000000..9c8f3d034
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-fill.md
@@ -0,0 +1,11 @@
+---
+title: Menu button fill
+categories:
+ - Controls
+tags:
+ - dropdown
+ - menu
+ - context
+ - app
+ - ui
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-wide-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-wide-fill.md
new file mode 100644
index 000000000..d0d5f8101
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-wide-fill.md
@@ -0,0 +1,11 @@
+---
+title: Menu button wide fill
+categories:
+ - Controls
+tags:
+ - dropdown
+ - menu
+ - context
+ - app
+ - ui
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-wide.md b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-wide.md
new file mode 100644
index 000000000..f05e7dc95
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button-wide.md
@@ -0,0 +1,11 @@
+---
+title: Menu button wide
+categories:
+ - Controls
+tags:
+ - dropdown
+ - menu
+ - context
+ - app
+ - ui
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button.md b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button.md
new file mode 100644
index 000000000..cea2f3988
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-button.md
@@ -0,0 +1,11 @@
+---
+title: Menu button
+categories:
+ - Controls
+tags:
+ - dropdown
+ - menu
+ - context
+ - app
+ - ui
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/menu-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-down.md
new file mode 100644
index 000000000..0c6e695f3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-down.md
@@ -0,0 +1,11 @@
+---
+title: Menu down
+categories:
+ - Controls
+tags:
+ - dropdown
+ - menu
+ - context
+ - app
+ - ui
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/menu-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-up.md
new file mode 100644
index 000000000..6bb66acdd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/menu-up.md
@@ -0,0 +1,11 @@
+---
+title: Menu up
+categories:
+ - Controls
+tags:
+ - dropdown
+ - menu
+ - context
+ - app
+ - ui
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/messenger.md b/vendor/twbs/bootstrap-icons/docs/content/icons/messenger.md
new file mode 100644
index 000000000..d8d6cb386
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/messenger.md
@@ -0,0 +1,9 @@
+---
+title: Messenger
+categories:
+ - Brand
+tags:
+ - social
+ - facebook
+ - chat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/meta.md b/vendor/twbs/bootstrap-icons/docs/content/icons/meta.md
new file mode 100644
index 000000000..7fa2e0302
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/meta.md
@@ -0,0 +1,8 @@
+---
+title: Meta
+categories:
+ - Brand
+tags:
+ - facebook
+ - fb
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mic-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mic-fill.md
new file mode 100644
index 000000000..84ef6966d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mic-fill.md
@@ -0,0 +1,13 @@
+---
+title: Mic fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+ - input
+ - microphone
+ - podcast
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mic-mute-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mic-mute-fill.md
new file mode 100644
index 000000000..1ae91db66
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mic-mute-fill.md
@@ -0,0 +1,12 @@
+---
+title: Mic mute fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+ - input
+ - microphone
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mic-mute.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mic-mute.md
new file mode 100644
index 000000000..047153c09
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mic-mute.md
@@ -0,0 +1,12 @@
+---
+title: Mic mute
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+ - input
+ - microphone
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mic.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mic.md
new file mode 100644
index 000000000..cf975a643
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mic.md
@@ -0,0 +1,13 @@
+---
+title: Mic
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+ - input
+ - microphone
+ - podcast
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/microsoft-teams.md b/vendor/twbs/bootstrap-icons/docs/content/icons/microsoft-teams.md
new file mode 100644
index 000000000..730063f2b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/microsoft-teams.md
@@ -0,0 +1,8 @@
+---
+title: Microsoft Teams
+categories:
+ - Brand
+tags:
+ - social
+ - messaging
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/microsoft.md b/vendor/twbs/bootstrap-icons/docs/content/icons/microsoft.md
new file mode 100644
index 000000000..cb68d3214
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/microsoft.md
@@ -0,0 +1,8 @@
+---
+title: Microsoft
+categories:
+ - Brand
+tags:
+ - msft
+ - windows
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/minecart-loaded.md b/vendor/twbs/bootstrap-icons/docs/content/icons/minecart-loaded.md
new file mode 100644
index 000000000..de835ac53
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/minecart-loaded.md
@@ -0,0 +1,8 @@
+---
+title: Minecart loaded
+categories:
+ - Real world
+tags:
+ - mining
+ - cart
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/minecart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/minecart.md
new file mode 100644
index 000000000..55635b10a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/minecart.md
@@ -0,0 +1,8 @@
+---
+title: Minecart
+categories:
+ - Real world
+tags:
+ - mining
+ - cart
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/modem-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/modem-fill.md
new file mode 100644
index 000000000..661679098
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/modem-fill.md
@@ -0,0 +1,8 @@
+---
+title: Modem fill
+categories:
+ - Devices
+tags:
+ - internet
+ - cable
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/modem.md b/vendor/twbs/bootstrap-icons/docs/content/icons/modem.md
new file mode 100644
index 000000000..903b9493b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/modem.md
@@ -0,0 +1,8 @@
+---
+title: Modem
+categories:
+ - Devices
+tags:
+ - internet
+ - cable
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/moisture.md b/vendor/twbs/bootstrap-icons/docs/content/icons/moisture.md
new file mode 100644
index 000000000..424d1668c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/moisture.md
@@ -0,0 +1,8 @@
+---
+title: Moisture
+categories:
+ - Weather
+tags:
+ - water
+ - droplets
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/moon-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/moon-fill.md
new file mode 100644
index 000000000..6b33ed1cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/moon-fill.md
@@ -0,0 +1,8 @@
+---
+title: Moon fill
+categories:
+ - Weather
+tags:
+ - night
+ - sky
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/moon-stars-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/moon-stars-fill.md
new file mode 100644
index 000000000..e8bf5a65d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/moon-stars-fill.md
@@ -0,0 +1,8 @@
+---
+title: Moon stars fill
+categories:
+ - Weather
+tags:
+ - night
+ - sky
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/moon-stars.md b/vendor/twbs/bootstrap-icons/docs/content/icons/moon-stars.md
new file mode 100644
index 000000000..7c17d2c9a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/moon-stars.md
@@ -0,0 +1,8 @@
+---
+title: Moon stars
+categories:
+ - Weather
+tags:
+ - night
+ - sky
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/moon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/moon.md
new file mode 100644
index 000000000..d96ed3902
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/moon.md
@@ -0,0 +1,9 @@
+---
+title: Moon
+categories:
+ - Real world
+tags:
+ - lunar
+ - weather
+ - night
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mortarboard-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mortarboard-fill.md
new file mode 100644
index 000000000..770eb2891
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mortarboard-fill.md
@@ -0,0 +1,8 @@
+---
+title: Mortorboard fill
+categories:
+ - Real World
+tags:
+ - graduation
+ - cap
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mortarboard.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mortarboard.md
new file mode 100644
index 000000000..0c4d01180
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mortarboard.md
@@ -0,0 +1,8 @@
+---
+title: Mortorboard
+categories:
+ - Real World
+tags:
+ - graduation
+ - cap
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/motherboard-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/motherboard-fill.md
new file mode 100644
index 000000000..59d3f4a49
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/motherboard-fill.md
@@ -0,0 +1,9 @@
+---
+title: Motherboard fill
+categories:
+ - Devices
+tags:
+ - mobo
+ - computer
+ - hardware
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/motherboard.md b/vendor/twbs/bootstrap-icons/docs/content/icons/motherboard.md
new file mode 100644
index 000000000..90da9bdd4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/motherboard.md
@@ -0,0 +1,9 @@
+---
+title: Motherboard
+categories:
+ - Devices
+tags:
+ - mobo
+ - computer
+ - hardware
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mouse-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse-fill.md
new file mode 100644
index 000000000..91742e4d9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse-fill.md
@@ -0,0 +1,8 @@
+---
+title: Mouse fill
+categories:
+ - Devices
+tags:
+ - mice
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mouse.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse.md
new file mode 100644
index 000000000..6dd999554
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse.md
@@ -0,0 +1,8 @@
+---
+title: Mouse
+categories:
+ - Devices
+tags:
+ - mice
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mouse2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse2-fill.md
new file mode 100644
index 000000000..94510ca3a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse2-fill.md
@@ -0,0 +1,8 @@
+---
+title: Mouse2 fill
+categories:
+ - Devices
+tags:
+ - mice
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mouse2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse2.md
new file mode 100644
index 000000000..1d48b6e64
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse2.md
@@ -0,0 +1,8 @@
+---
+title: Mouse2
+categories:
+ - Devices
+tags:
+ - mice
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mouse3-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse3-fill.md
new file mode 100644
index 000000000..1581aeb64
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse3-fill.md
@@ -0,0 +1,8 @@
+---
+title: Mouse3 fill
+categories:
+ - Devices
+tags:
+ - mice
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/mouse3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse3.md
new file mode 100644
index 000000000..d70f8a766
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/mouse3.md
@@ -0,0 +1,8 @@
+---
+title: Mouse3
+categories:
+ - Devices
+tags:
+ - mice
+ - input
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/music-note-beamed.md b/vendor/twbs/bootstrap-icons/docs/content/icons/music-note-beamed.md
new file mode 100644
index 000000000..2df60762b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/music-note-beamed.md
@@ -0,0 +1,10 @@
+---
+title: Music note beamed
+categories:
+ - Media
+tags:
+ - music
+ - notes
+ - audio
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/music-note-list.md b/vendor/twbs/bootstrap-icons/docs/content/icons/music-note-list.md
new file mode 100644
index 000000000..2af57459d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/music-note-list.md
@@ -0,0 +1,12 @@
+---
+title: Music note list
+categories:
+ - Media
+tags:
+ - music
+ - notes
+ - audio
+ - sound
+ - playlist
+ - library
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/music-note.md b/vendor/twbs/bootstrap-icons/docs/content/icons/music-note.md
new file mode 100644
index 000000000..7f078bb81
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/music-note.md
@@ -0,0 +1,10 @@
+---
+title: Music note
+categories:
+ - Media
+tags:
+ - music
+ - notes
+ - audio
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/music-player-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/music-player-fill.md
new file mode 100644
index 000000000..e2f98efea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/music-player-fill.md
@@ -0,0 +1,8 @@
+---
+title: Music player fill
+categories:
+ - Devices
+tags:
+ - ipod
+ - mp3
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/music-player.md b/vendor/twbs/bootstrap-icons/docs/content/icons/music-player.md
new file mode 100644
index 000000000..27f9b6233
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/music-player.md
@@ -0,0 +1,8 @@
+---
+title: Music player
+categories:
+ - Devices
+tags:
+ - ipod
+ - mp3
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/newspaper.md b/vendor/twbs/bootstrap-icons/docs/content/icons/newspaper.md
new file mode 100644
index 000000000..1cc3d25ce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/newspaper.md
@@ -0,0 +1,8 @@
+---
+title: Newspaper
+categories:
+ - Real world
+tags:
+ - news
+ - paper
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/nintendo-switch.md b/vendor/twbs/bootstrap-icons/docs/content/icons/nintendo-switch.md
new file mode 100644
index 000000000..84ffbfd0e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/nintendo-switch.md
@@ -0,0 +1,7 @@
+---
+title: Nintendo Switch
+categories:
+ - Brand
+tags:
+ - gaming
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/node-minus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/node-minus-fill.md
new file mode 100644
index 000000000..a02a947db
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/node-minus-fill.md
@@ -0,0 +1,10 @@
+---
+title: Node minus fill
+categories:
+ - Graphics
+tags:
+ - add
+ - new
+ - node
+ - diagram
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/node-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/node-minus.md
new file mode 100644
index 000000000..b8bc62212
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/node-minus.md
@@ -0,0 +1,10 @@
+---
+title: Node minus
+categories:
+ - Graphics
+tags:
+ - add
+ - new
+ - node
+ - diagram
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/node-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/node-plus-fill.md
new file mode 100644
index 000000000..76d0e78ad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/node-plus-fill.md
@@ -0,0 +1,10 @@
+---
+title: Node plus fill
+categories:
+ - Graphics
+tags:
+ - add
+ - new
+ - node
+ - diagram
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/node-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/node-plus.md
new file mode 100644
index 000000000..04439c246
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/node-plus.md
@@ -0,0 +1,10 @@
+---
+title: Node plus
+categories:
+ - Graphics
+tags:
+ - add
+ - new
+ - node
+ - diagram
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/noise-reduction.md b/vendor/twbs/bootstrap-icons/docs/content/icons/noise-reduction.md
new file mode 100644
index 000000000..608737a81
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/noise-reduction.md
@@ -0,0 +1,11 @@
+---
+title: Noise reduction
+categories:
+ - Graphics
+tags:
+ - photo
+ - editing
+ - image
+ - picture
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/nut-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/nut-fill.md
new file mode 100644
index 000000000..5e6fb27e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/nut-fill.md
@@ -0,0 +1,10 @@
+---
+title: Nut fill
+categories:
+ - Tools
+tags:
+ - nut
+ - bolt
+ - hexagon
+ - tools
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/nut.md b/vendor/twbs/bootstrap-icons/docs/content/icons/nut.md
new file mode 100644
index 000000000..5280bb6c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/nut.md
@@ -0,0 +1,10 @@
+---
+title: Nut
+categories:
+ - Tools
+tags:
+ - nut
+ - bolt
+ - hexagon
+ - tools
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/nvidia.md b/vendor/twbs/bootstrap-icons/docs/content/icons/nvidia.md
new file mode 100644
index 000000000..c55d64a2e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/nvidia.md
@@ -0,0 +1,8 @@
+---
+title: Nvidia
+categories:
+ - Brand
+tags:
+ - gpu
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/nvme-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/nvme-fill.md
new file mode 100644
index 000000000..10363f9fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/nvme-fill.md
@@ -0,0 +1,11 @@
+---
+title: Nvme fill
+categories:
+ - Devices
+tags:
+ - ssd
+ - "hard drive"
+ - "hard disk"
+ - storage
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/nvme.md b/vendor/twbs/bootstrap-icons/docs/content/icons/nvme.md
new file mode 100644
index 000000000..7d1684309
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/nvme.md
@@ -0,0 +1,11 @@
+---
+title: Nvme
+categories:
+ - Devices
+tags:
+ - ssd
+ - "hard drive"
+ - "hard disk"
+ - storage
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/octagon-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/octagon-fill.md
new file mode 100644
index 000000000..14b855f7e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/octagon-fill.md
@@ -0,0 +1,8 @@
+---
+title: Octagon fill
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/octagon-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/octagon-half.md
new file mode 100644
index 000000000..9652d2927
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/octagon-half.md
@@ -0,0 +1,8 @@
+---
+title: Octagon half
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/octagon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/octagon.md
new file mode 100644
index 000000000..2e87b065a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/octagon.md
@@ -0,0 +1,8 @@
+---
+title: Octagon
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/opencollective.md b/vendor/twbs/bootstrap-icons/docs/content/icons/opencollective.md
new file mode 100644
index 000000000..21acc256d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/opencollective.md
@@ -0,0 +1,8 @@
+---
+title: Opencollective
+categories:
+ - Brand
+tags:
+ - social
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/optical-audio-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/optical-audio-fill.md
new file mode 100644
index 000000000..68088c38e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/optical-audio-fill.md
@@ -0,0 +1,9 @@
+---
+title: Optical audio fill
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/optical-audio.md b/vendor/twbs/bootstrap-icons/docs/content/icons/optical-audio.md
new file mode 100644
index 000000000..1b2afc6c2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/optical-audio.md
@@ -0,0 +1,9 @@
+---
+title: Optical audio
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/option.md b/vendor/twbs/bootstrap-icons/docs/content/icons/option.md
new file mode 100644
index 000000000..44382c0b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/option.md
@@ -0,0 +1,8 @@
+---
+title: Option
+categories:
+ - UI and keyboard
+tags:
+ - key
+ - mac
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/outlet.md b/vendor/twbs/bootstrap-icons/docs/content/icons/outlet.md
new file mode 100644
index 000000000..961bdf5aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/outlet.md
@@ -0,0 +1,8 @@
+---
+title: Outlet
+categories:
+ - Real world
+tags:
+ - plug
+ - power
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/p-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/p-circle-fill.md
new file mode 100644
index 000000000..3a8a1da78
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/p-circle-fill.md
@@ -0,0 +1,7 @@
+---
+title: P circle fill
+categories:
+ - Shapes
+tags:
+ - parking
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/p-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/p-circle.md
new file mode 100644
index 000000000..02ce95a64
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/p-circle.md
@@ -0,0 +1,7 @@
+---
+title: P circle
+categories:
+ - Shapes
+tags:
+ - parking
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/p-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/p-square-fill.md
new file mode 100644
index 000000000..69fd6062c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/p-square-fill.md
@@ -0,0 +1,7 @@
+---
+title: P square fill
+categories:
+ - Shapes
+tags:
+ - parking
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/p-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/p-square.md
new file mode 100644
index 000000000..67b6f51e7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/p-square.md
@@ -0,0 +1,7 @@
+---
+title: P square
+categories:
+ - Shapes
+tags:
+ - parking
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/paint-bucket.md b/vendor/twbs/bootstrap-icons/docs/content/icons/paint-bucket.md
new file mode 100644
index 000000000..cf78aaef4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/paint-bucket.md
@@ -0,0 +1,10 @@
+---
+title: Paint bucket
+categories:
+ - Graphics
+tags:
+ - color
+ - paint
+ - fill
+ - palette
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/palette-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/palette-fill.md
new file mode 100644
index 000000000..f6e34beb3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/palette-fill.md
@@ -0,0 +1,10 @@
+---
+title: Palette fill
+categories:
+ - Graphics
+tags:
+ - color
+ - paint
+ - fill
+ - palette
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/palette.md b/vendor/twbs/bootstrap-icons/docs/content/icons/palette.md
new file mode 100644
index 000000000..eb0fa2d8f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/palette.md
@@ -0,0 +1,10 @@
+---
+title: Palette
+categories:
+ - Graphics
+tags:
+ - color
+ - paint
+ - fill
+ - palette
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/palette2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/palette2.md
new file mode 100644
index 000000000..2adfc70d3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/palette2.md
@@ -0,0 +1,10 @@
+---
+title: Palette2
+categories:
+ - Graphics
+tags:
+ - color
+ - paint
+ - fill
+ - palette
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/paperclip.md b/vendor/twbs/bootstrap-icons/docs/content/icons/paperclip.md
new file mode 100644
index 000000000..864c8b415
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/paperclip.md
@@ -0,0 +1,7 @@
+---
+title: Paperclip
+categories:
+ - Real world
+tags:
+ - attachment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/paragraph.md b/vendor/twbs/bootstrap-icons/docs/content/icons/paragraph.md
new file mode 100644
index 000000000..80dc52dc4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/paragraph.md
@@ -0,0 +1,10 @@
+---
+title: Paragraph
+categories:
+ - Typography
+tags:
+ - paragraph
+ - text
+ - body
+ - content
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pass-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pass-fill.md
new file mode 100644
index 000000000..f09bae27e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pass-fill.md
@@ -0,0 +1,7 @@
+---
+title: Pass fill
+categories:
+- Real World
+tags:
+- pass
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pass.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pass.md
new file mode 100644
index 000000000..1028f5ec3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pass.md
@@ -0,0 +1,7 @@
+---
+title: Pass
+categories:
+- Real World
+tags:
+- pass
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/passport-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/passport-fill.md
new file mode 100644
index 000000000..aabee34be
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/passport-fill.md
@@ -0,0 +1,9 @@
+---
+title: Passport fill
+categories:
+ - Travel
+tags:
+ - visa
+ - foreign
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/passport.md b/vendor/twbs/bootstrap-icons/docs/content/icons/passport.md
new file mode 100644
index 000000000..bdc5f63b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/passport.md
@@ -0,0 +1,9 @@
+---
+title: Passport
+categories:
+ - Travel
+tags:
+ - visa
+ - foreign
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/patch-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-check-fill.md
new file mode 100644
index 000000000..a55e87c58
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-check-fill.md
@@ -0,0 +1,11 @@
+---
+title: Patch check fill
+categories:
+ - Badges
+tags:
+ - verified
+ - checkmark
+ - certified
+aliases:
+ - /icons/patch-check-fll/
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/patch-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-check.md
new file mode 100644
index 000000000..a67b152ee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-check.md
@@ -0,0 +1,9 @@
+---
+title: Patch check
+categories:
+ - Badges
+tags:
+ - verified
+ - checkmark
+ - certified
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/patch-exclamation-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-exclamation-fill.md
new file mode 100644
index 000000000..de09eaeaa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-exclamation-fill.md
@@ -0,0 +1,10 @@
+---
+title: Patch exclamation fill
+categories:
+ - Badges
+tags:
+ - excited
+ - certified
+aliases:
+ - /icons/patch-exclamation-fll/
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/patch-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-exclamation.md
new file mode 100644
index 000000000..d126ae16b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-exclamation.md
@@ -0,0 +1,8 @@
+---
+title: Patch exclamation
+categories:
+ - Badges
+tags:
+ - excited
+ - certified
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/patch-minus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-minus-fill.md
new file mode 100644
index 000000000..ce9b1d45f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-minus-fill.md
@@ -0,0 +1,9 @@
+---
+title: Patch minus fill
+categories:
+ - Badges
+tags:
+ - subtract
+aliases:
+ - /icons/patch-minus-fll/
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/patch-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-minus.md
new file mode 100644
index 000000000..7b1a4777f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-minus.md
@@ -0,0 +1,7 @@
+---
+title: Patch minus
+categories:
+ - Badges
+tags:
+ - subtract
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/patch-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-plus-fill.md
new file mode 100644
index 000000000..5511756b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-plus-fill.md
@@ -0,0 +1,9 @@
+---
+title: Patch plus fill
+categories:
+ - Badges
+tags:
+ - add
+aliases:
+ - /icons/patch-plus-fll/
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/patch-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-plus.md
new file mode 100644
index 000000000..c87788e9c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-plus.md
@@ -0,0 +1,7 @@
+---
+title: Patch plus
+categories:
+ - Badges
+tags:
+ - add
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/patch-question-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-question-fill.md
new file mode 100644
index 000000000..311a056fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-question-fill.md
@@ -0,0 +1,9 @@
+---
+title: Patch question fill
+categories:
+ - Badges
+tags:
+ - help
+aliases:
+ - /icons/patch-question-fll/
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/patch-question.md b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-question.md
new file mode 100644
index 000000000..36ad56566
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/patch-question.md
@@ -0,0 +1,7 @@
+---
+title: Patch question
+categories:
+ - Badges
+tags:
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pause-btn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pause-btn-fill.md
new file mode 100644
index 000000000..7808059da
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pause-btn-fill.md
@@ -0,0 +1,9 @@
+---
+title: Pause btn fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pause-btn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pause-btn.md
new file mode 100644
index 000000000..d090a0a12
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pause-btn.md
@@ -0,0 +1,9 @@
+---
+title: Pause btn
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pause-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pause-circle-fill.md
new file mode 100644
index 000000000..19820db39
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pause-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Pause circle fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pause-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pause-circle.md
new file mode 100644
index 000000000..3c6c68c32
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pause-circle.md
@@ -0,0 +1,9 @@
+---
+title: Pause circle
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pause-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pause-fill.md
new file mode 100644
index 000000000..c8c8a91ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pause-fill.md
@@ -0,0 +1,9 @@
+---
+title: Pause fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pause.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pause.md
new file mode 100644
index 000000000..5eaba1a25
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pause.md
@@ -0,0 +1,9 @@
+---
+title: Pause
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/paypal.md b/vendor/twbs/bootstrap-icons/docs/content/icons/paypal.md
new file mode 100644
index 000000000..f557f9d28
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/paypal.md
@@ -0,0 +1,7 @@
+---
+title: Paypal
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pc-display-horizontal.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pc-display-horizontal.md
new file mode 100644
index 000000000..8c4a1ed61
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pc-display-horizontal.md
@@ -0,0 +1,9 @@
+---
+title: PC display horizontal
+categories:
+ - Devices
+tags:
+ - computer
+ - workstation
+ - desktop
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pc-display.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pc-display.md
new file mode 100644
index 000000000..8024875eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pc-display.md
@@ -0,0 +1,9 @@
+---
+title: PC display
+categories:
+ - Devices
+tags:
+ - computer
+ - workstation
+ - desktop
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pc-horizontal.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pc-horizontal.md
new file mode 100644
index 000000000..b449ce5a4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pc-horizontal.md
@@ -0,0 +1,9 @@
+---
+title: PC horizontal
+categories:
+ - Devices
+tags:
+ - computer
+ - workstation
+ - desktop
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pc.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pc.md
new file mode 100644
index 000000000..6338ff2ef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pc.md
@@ -0,0 +1,9 @@
+---
+title: PC
+categories:
+ - Devices
+tags:
+ - computer
+ - workstation
+ - desktop
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pci-card-network.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pci-card-network.md
new file mode 100644
index 000000000..1b0ba96f4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pci-card-network.md
@@ -0,0 +1,12 @@
+---
+title: PCI card network
+categories:
+ - Devices
+tags:
+ - card
+ - expansion
+ - ethernet
+ - wifi
+ - internet
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pci-card-sound.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pci-card-sound.md
new file mode 100644
index 000000000..e7e257cdf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pci-card-sound.md
@@ -0,0 +1,10 @@
+---
+title: PCI card sound
+categories:
+ - Devices
+tags:
+ - card
+ - expansion
+ - audio
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pci-card.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pci-card.md
new file mode 100644
index 000000000..1345d5ae7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pci-card.md
@@ -0,0 +1,8 @@
+---
+title: PCI card
+categories:
+ - Devices
+tags:
+ - card
+ - expansion
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/peace-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/peace-fill.md
new file mode 100644
index 000000000..b148c5174
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/peace-fill.md
@@ -0,0 +1,8 @@
+---
+title: Peace fill
+categories:
+ - Miscellaneous
+tags:
+ - peace
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/peace.md b/vendor/twbs/bootstrap-icons/docs/content/icons/peace.md
new file mode 100644
index 000000000..05e5d8659
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/peace.md
@@ -0,0 +1,8 @@
+---
+title: Peace
+categories:
+ - Miscellaneous
+tags:
+ - peace
+ - love
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pen-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pen-fill.md
new file mode 100644
index 000000000..889780f8b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pen-fill.md
@@ -0,0 +1,9 @@
+---
+title: Pen fill
+categories:
+ - Tools
+tags:
+ - edit
+ - write
+ - ballpoint
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pen.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pen.md
new file mode 100644
index 000000000..abaf89fca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pen.md
@@ -0,0 +1,9 @@
+---
+title: Pen
+categories:
+ - Tools
+tags:
+ - edit
+ - write
+ - ballpoint
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pencil-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pencil-fill.md
new file mode 100644
index 000000000..aa6ce2d50
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pencil-fill.md
@@ -0,0 +1,8 @@
+---
+title: Pencil fill
+categories:
+ - Tools
+tags:
+ - edit
+ - write
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pencil-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pencil-square.md
new file mode 100644
index 000000000..769290c22
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pencil-square.md
@@ -0,0 +1,8 @@
+---
+title: Pencil square
+categories:
+ - Tools
+tags:
+ - edit
+ - write
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pencil.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pencil.md
new file mode 100644
index 000000000..339939ddb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pencil.md
@@ -0,0 +1,8 @@
+---
+title: Pencil
+categories:
+ - Tools
+tags:
+ - edit
+ - write
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pentagon-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pentagon-fill.md
new file mode 100644
index 000000000..0e2ef7d29
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pentagon-fill.md
@@ -0,0 +1,8 @@
+---
+title: Pentagon fill
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pentagon-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pentagon-half.md
new file mode 100644
index 000000000..2407b7efe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pentagon-half.md
@@ -0,0 +1,8 @@
+---
+title: Pentagon half
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pentagon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pentagon.md
new file mode 100644
index 000000000..57ebbf42f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pentagon.md
@@ -0,0 +1,8 @@
+---
+title: Pentagon
+categories:
+ - Shapes
+tags:
+ - shape
+ - polygon
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/people-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/people-fill.md
new file mode 100644
index 000000000..d494b2c93
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/people-fill.md
@@ -0,0 +1,12 @@
+---
+title: People fill
+categories:
+ - People
+tags:
+ - member
+ - humans
+ - organization
+ - avatar
+ - users
+ - profile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/people.md b/vendor/twbs/bootstrap-icons/docs/content/icons/people.md
new file mode 100644
index 000000000..6b8282f6a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/people.md
@@ -0,0 +1,12 @@
+---
+title: People
+categories:
+ - People
+tags:
+ - member
+ - humans
+ - organization
+ - avatar
+ - users
+ - profile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/percent.md b/vendor/twbs/bootstrap-icons/docs/content/icons/percent.md
new file mode 100644
index 000000000..f830e0668
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/percent.md
@@ -0,0 +1,9 @@
+---
+title: Percent
+categories:
+ - Typography
+tags:
+ - percentage
+ - math
+ - fraction
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-add.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-add.md
new file mode 100644
index 000000000..c54f60278
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-add.md
@@ -0,0 +1,13 @@
+---
+title: Person add
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-arms-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-arms-up.md
new file mode 100644
index 000000000..340a2b553
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-arms-up.md
@@ -0,0 +1,10 @@
+---
+title: Person arms up
+categories:
+ - People
+tags:
+ - human
+ - man
+ - woman
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-badge-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-badge-fill.md
new file mode 100644
index 000000000..5cd870a31
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-badge-fill.md
@@ -0,0 +1,15 @@
+---
+title: Person badge fill
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - badge
+ - id
+ - card
+ - account
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-badge.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-badge.md
new file mode 100644
index 000000000..4bbcee741
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-badge.md
@@ -0,0 +1,16 @@
+---
+title: Person badge
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - badge
+ - id
+ - card
+ - account
+ - profile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-bounding-box.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-bounding-box.md
new file mode 100644
index 000000000..1cf02af86
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-bounding-box.md
@@ -0,0 +1,14 @@
+---
+title: Person bounding box
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - crop
+ - account
+ - profile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-check-fill.md
new file mode 100644
index 000000000..46011c159
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-check-fill.md
@@ -0,0 +1,14 @@
+---
+title: Person check fill
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - verified
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-check.md
new file mode 100644
index 000000000..1b0943f5b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-check.md
@@ -0,0 +1,15 @@
+---
+title: Person check
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - verified
+ - account
+ - profile
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-circle.md
new file mode 100644
index 000000000..e81675bb6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-circle.md
@@ -0,0 +1,13 @@
+---
+title: People circle
+categories:
+ - People
+tags:
+ - member
+ - humans
+ - organization
+ - avatar
+ - user
+ - account
+ - profile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-dash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-dash-fill.md
new file mode 100644
index 000000000..88fd0ac4c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-dash-fill.md
@@ -0,0 +1,15 @@
+---
+title: Person dash fill
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - remove
+ - delete
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-dash.md
new file mode 100644
index 000000000..376721374
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-dash.md
@@ -0,0 +1,15 @@
+---
+title: Person dash
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - remove
+ - delete
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-down.md
new file mode 100644
index 000000000..e1a7e0390
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-down.md
@@ -0,0 +1,12 @@
+---
+title: Person down
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-exclamation.md
new file mode 100644
index 000000000..96db2c926
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-exclamation.md
@@ -0,0 +1,12 @@
+---
+title: Person exclamation
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-add.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-add.md
new file mode 100644
index 000000000..7600181b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-add.md
@@ -0,0 +1,13 @@
+---
+title: Person fill add
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-check.md
new file mode 100644
index 000000000..2f6488e7b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-check.md
@@ -0,0 +1,13 @@
+---
+title: Person fill check
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-dash.md
new file mode 100644
index 000000000..a0900a4d5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-dash.md
@@ -0,0 +1,13 @@
+---
+title: Person fill dash
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-down.md
new file mode 100644
index 000000000..ec9b15ce6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-down.md
@@ -0,0 +1,13 @@
+---
+title: Person fill down
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-exclamation.md
new file mode 100644
index 000000000..6b4d209b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-exclamation.md
@@ -0,0 +1,13 @@
+---
+title: Person fill exclamation
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-gear.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-gear.md
new file mode 100644
index 000000000..1c8712282
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-gear.md
@@ -0,0 +1,13 @@
+---
+title: Person fill gear
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-lock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-lock.md
new file mode 100644
index 000000000..8024602e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-lock.md
@@ -0,0 +1,13 @@
+---
+title: Person fill lock
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-slash.md
new file mode 100644
index 000000000..125ba89e9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-slash.md
@@ -0,0 +1,13 @@
+---
+title: Person fill slash
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-up.md
new file mode 100644
index 000000000..1dc87affe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-up.md
@@ -0,0 +1,13 @@
+---
+title: Person fill up
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-x.md
new file mode 100644
index 000000000..77ad2f717
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill-x.md
@@ -0,0 +1,13 @@
+---
+title: Person fill x
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill.md
new file mode 100644
index 000000000..c3ffb01cd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-fill.md
@@ -0,0 +1,13 @@
+---
+title: Person fill
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+ - profile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-gear.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-gear.md
new file mode 100644
index 000000000..8b58db33b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-gear.md
@@ -0,0 +1,13 @@
+---
+title: Person gear
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-heart.md
new file mode 100644
index 000000000..ecd4592bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-heart.md
@@ -0,0 +1,15 @@
+---
+title: Person heart
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-hearts.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-hearts.md
new file mode 100644
index 000000000..2cc348375
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-hearts.md
@@ -0,0 +1,15 @@
+---
+title: Person hearts
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-lines-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-lines-fill.md
new file mode 100644
index 000000000..799d5fab7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-lines-fill.md
@@ -0,0 +1,15 @@
+---
+title: Person lines fill
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - contact
+ - list
+ - account
+ - profile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-lock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-lock.md
new file mode 100644
index 000000000..e30fafed2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-lock.md
@@ -0,0 +1,13 @@
+---
+title: Person lock
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-plus-fill.md
new file mode 100644
index 000000000..690527cc3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-plus-fill.md
@@ -0,0 +1,15 @@
+---
+title: Person plus fill
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - new
+ - add
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-plus.md
new file mode 100644
index 000000000..3df3d8d1d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-plus.md
@@ -0,0 +1,15 @@
+---
+title: Person plus
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - new
+ - add
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-raised-hand.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-raised-hand.md
new file mode 100644
index 000000000..b2ce1d9b5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-raised-hand.md
@@ -0,0 +1,12 @@
+---
+title: Person raised hand
+categories:
+ - People
+tags:
+ - human
+ - man
+ - woman
+ - question
+ - help
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-rolodex.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-rolodex.md
new file mode 100644
index 000000000..5309d3b96
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-rolodex.md
@@ -0,0 +1,13 @@
+---
+title: Person rolodex
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+ - contact
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-slash.md
new file mode 100644
index 000000000..3d6cde2d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-slash.md
@@ -0,0 +1,12 @@
+---
+title: Person slash
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-square.md
new file mode 100644
index 000000000..c01fe552d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-square.md
@@ -0,0 +1,13 @@
+---
+title: Person square
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+ - profile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-standing-dress.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-standing-dress.md
new file mode 100644
index 000000000..ca869af03
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-standing-dress.md
@@ -0,0 +1,10 @@
+---
+title: Person standing dress
+categories:
+ - People
+tags:
+ - human
+ - man
+ - woman
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-standing.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-standing.md
new file mode 100644
index 000000000..42f7df69e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-standing.md
@@ -0,0 +1,10 @@
+---
+title: Person standing
+categories:
+ - People
+tags:
+ - human
+ - man
+ - woman
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-up.md
new file mode 100644
index 000000000..18a14b8b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-up.md
@@ -0,0 +1,12 @@
+---
+title: Person up
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-vcard-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-vcard-fill.md
new file mode 100644
index 000000000..60e00e1c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-vcard-fill.md
@@ -0,0 +1,12 @@
+---
+title: Person vcard fill
+categories:
+ - People
+tags:
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-vcard.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-vcard.md
new file mode 100644
index 000000000..fd0e0c376
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-vcard.md
@@ -0,0 +1,12 @@
+---
+title: Person vcard
+categories:
+ - People
+tags:
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-video.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-video.md
new file mode 100644
index 000000000..81c4f0668
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-video.md
@@ -0,0 +1,11 @@
+---
+title: Person video
+categories:
+ - People
+tags:
+ - human
+ - individual
+ - avatar
+ - user
+ - wfh
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-video2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-video2.md
new file mode 100644
index 000000000..e3fea94f3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-video2.md
@@ -0,0 +1,11 @@
+---
+title: Person video2
+categories:
+ - People
+tags:
+ - human
+ - individual
+ - avatar
+ - user
+ - wfh
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-video3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-video3.md
new file mode 100644
index 000000000..c5ba1b2c5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-video3.md
@@ -0,0 +1,11 @@
+---
+title: Person video3
+categories:
+ - People
+tags:
+ - human
+ - individual
+ - avatar
+ - user
+ - wfh
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-walking.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-walking.md
new file mode 100644
index 000000000..c0522d3ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-walking.md
@@ -0,0 +1,10 @@
+---
+title: Person walking
+categories:
+ - People
+tags:
+ - human
+ - man
+ - woman
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-wheelchair.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-wheelchair.md
new file mode 100644
index 000000000..eacb4c700
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-wheelchair.md
@@ -0,0 +1,13 @@
+---
+title: Person wheelchair
+categories:
+ - People
+tags:
+ - human
+ - man
+ - woman
+ - accessibility
+ - a11y
+ - handicap
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-workspace.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-workspace.md
new file mode 100644
index 000000000..f92f47c06
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-workspace.md
@@ -0,0 +1,11 @@
+---
+title: Person workspace
+categories:
+ - People
+tags:
+ - human
+ - individual
+ - avatar
+ - user
+ - wfh
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-x-fill.md
new file mode 100644
index 000000000..f7fa53360
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-x-fill.md
@@ -0,0 +1,15 @@
+---
+title: Person x fill
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - remove
+ - delete
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person-x.md
new file mode 100644
index 000000000..5bd1b2b1b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person-x.md
@@ -0,0 +1,15 @@
+---
+title: Person x
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - remove
+ - delete
+ - account
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/person.md b/vendor/twbs/bootstrap-icons/docs/content/icons/person.md
new file mode 100644
index 000000000..7927a08c5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/person.md
@@ -0,0 +1,13 @@
+---
+title: Person
+categories:
+ - People
+tags:
+ - member
+ - human
+ - individual
+ - avatar
+ - user
+ - account
+ - profile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/phone-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-fill.md
new file mode 100644
index 000000000..ba19ecda3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-fill.md
@@ -0,0 +1,8 @@
+---
+title: Phone fill
+categories:
+ - Devices
+tags:
+ - mobile
+ - telephone
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/phone-flip.md b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-flip.md
new file mode 100644
index 000000000..1c1964afd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-flip.md
@@ -0,0 +1,8 @@
+---
+title: Phone flip
+categories:
+ - Devices
+tags:
+ - mobile
+ - telephone
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/phone-landscape-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-landscape-fill.md
new file mode 100644
index 000000000..83e7cadba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-landscape-fill.md
@@ -0,0 +1,8 @@
+---
+title: Phone landscape fill
+categories:
+ - Devices
+tags:
+ - mobile
+ - telephone
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/phone-landscape.md b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-landscape.md
new file mode 100644
index 000000000..034ee0f6b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-landscape.md
@@ -0,0 +1,8 @@
+---
+title: Phone landscape
+categories:
+ - Devices
+tags:
+ - mobile
+ - telephone
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/phone-vibrate-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-vibrate-fill.md
new file mode 100644
index 000000000..d46f8dbd1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-vibrate-fill.md
@@ -0,0 +1,9 @@
+---
+title: Phone vibrate fill
+categories:
+ - Devices
+tags:
+ - mobile
+ - telephone
+ - haptic
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/phone-vibrate.md b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-vibrate.md
new file mode 100644
index 000000000..273f66b22
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/phone-vibrate.md
@@ -0,0 +1,9 @@
+---
+title: Phone vibrate
+categories:
+ - Devices
+tags:
+ - mobile
+ - telephone
+ - haptic
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/phone.md b/vendor/twbs/bootstrap-icons/docs/content/icons/phone.md
new file mode 100644
index 000000000..81576e1df
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/phone.md
@@ -0,0 +1,8 @@
+---
+title: Phone
+categories:
+ - Devices
+tags:
+ - mobile
+ - telephone
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pie-chart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pie-chart-fill.md
new file mode 100644
index 000000000..d029221d8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pie-chart-fill.md
@@ -0,0 +1,9 @@
+---
+title: Pie chart fill
+categories:
+ - Data
+tags:
+ - chart
+ - graph
+ - analytics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pie-chart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pie-chart.md
new file mode 100644
index 000000000..5e7c5a6e2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pie-chart.md
@@ -0,0 +1,9 @@
+---
+title: Pie chart
+categories:
+ - Data
+tags:
+ - chart
+ - graph
+ - analytics
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/piggy-bank-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/piggy-bank-fill.md
new file mode 100644
index 000000000..1ac1c43fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/piggy-bank-fill.md
@@ -0,0 +1,10 @@
+---
+title: Piggy bank fill
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+ - banking
+ - savings
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/piggy-bank.md b/vendor/twbs/bootstrap-icons/docs/content/icons/piggy-bank.md
new file mode 100644
index 000000000..3ec71d283
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/piggy-bank.md
@@ -0,0 +1,10 @@
+---
+title: Piggy bank
+categories:
+ - Commerce
+tags:
+ - money
+ - finance
+ - banking
+ - savings
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pin-angle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pin-angle-fill.md
new file mode 100644
index 000000000..526796728
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pin-angle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Pin angle fill
+categories:
+ - Real world
+tags:
+ - pushpin
+ - thumbtack
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pin-angle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pin-angle.md
new file mode 100644
index 000000000..21615fa6e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pin-angle.md
@@ -0,0 +1,8 @@
+---
+title: Pin angle
+categories:
+ - Real world
+tags:
+ - pushpin
+ - thumbtack
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pin-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pin-fill.md
new file mode 100644
index 000000000..36b37f482
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pin-fill.md
@@ -0,0 +1,8 @@
+---
+title: Pin fill
+categories:
+ - Real world
+tags:
+ - pushpin
+ - thumbtack
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pin-map-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pin-map-fill.md
new file mode 100644
index 000000000..8fe84e9bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pin-map-fill.md
@@ -0,0 +1,10 @@
+---
+title: Pin map fill
+categories:
+ - Geo
+tags:
+ - geography
+ - map
+ - pin
+ - location
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pin-map.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pin-map.md
new file mode 100644
index 000000000..e2d8e006f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pin-map.md
@@ -0,0 +1,10 @@
+---
+title: Pin map
+categories:
+ - Geo
+tags:
+ - geography
+ - map
+ - pin
+ - location
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pin.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pin.md
new file mode 100644
index 000000000..9fffcafe0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pin.md
@@ -0,0 +1,8 @@
+---
+title: Pin
+categories:
+ - Real world
+tags:
+ - pushpin
+ - thumbtack
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pinterest.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pinterest.md
new file mode 100644
index 000000000..3a7b1de06
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pinterest.md
@@ -0,0 +1,7 @@
+---
+title: Pinterest
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pip-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pip-fill.md
new file mode 100644
index 000000000..23ea7c703
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pip-fill.md
@@ -0,0 +1,11 @@
+---
+title: Pip fill
+categories:
+ - Media
+tags:
+ - picture
+ - tv
+ - television
+ - display
+ - nested
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/pip.md b/vendor/twbs/bootstrap-icons/docs/content/icons/pip.md
new file mode 100644
index 000000000..700d862a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/pip.md
@@ -0,0 +1,11 @@
+---
+title: Pip
+categories:
+ - Media
+tags:
+ - picture
+ - tv
+ - television
+ - display
+ - nested
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/play-btn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/play-btn-fill.md
new file mode 100644
index 000000000..df6c3843d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/play-btn-fill.md
@@ -0,0 +1,9 @@
+---
+title: Play btn fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/play-btn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/play-btn.md
new file mode 100644
index 000000000..c6d44aee6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/play-btn.md
@@ -0,0 +1,9 @@
+---
+title: Play btn
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/play-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/play-circle-fill.md
new file mode 100644
index 000000000..9032bd740
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/play-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Play circle fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/play-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/play-circle.md
new file mode 100644
index 000000000..8428f7b8c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/play-circle.md
@@ -0,0 +1,9 @@
+---
+title: Play circle
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/play-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/play-fill.md
new file mode 100644
index 000000000..6a37057ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/play-fill.md
@@ -0,0 +1,9 @@
+---
+title: Play fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/play.md b/vendor/twbs/bootstrap-icons/docs/content/icons/play.md
new file mode 100644
index 000000000..7d0f21009
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/play.md
@@ -0,0 +1,9 @@
+---
+title: Play
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/playstation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/playstation.md
new file mode 100644
index 000000000..8fbc3d367
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/playstation.md
@@ -0,0 +1,8 @@
+---
+title: Playstation
+categories:
+ - Brand
+tags:
+ - sony
+ - gaming
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plug-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plug-fill.md
new file mode 100644
index 000000000..aa5d0cf73
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plug-fill.md
@@ -0,0 +1,8 @@
+---
+title: Plug fill
+categories:
+ - Real world
+tags:
+ - power
+ - outlet
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plug.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plug.md
new file mode 100644
index 000000000..8ffb8c777
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plug.md
@@ -0,0 +1,8 @@
+---
+title: Plug
+categories:
+ - Real world
+tags:
+ - power
+ - outlet
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plugin.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plugin.md
new file mode 100644
index 000000000..965a51576
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plugin.md
@@ -0,0 +1,8 @@
+---
+title: Plugin
+categories:
+ - UI
+tags:
+ - addon
+ - software
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle-dotted.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle-dotted.md
new file mode 100644
index 000000000..6e489fb87
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle-dotted.md
@@ -0,0 +1,8 @@
+---
+title: Plus circle dotted
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle-fill.md
new file mode 100644
index 000000000..28aa08be6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Plus circle fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle.md
new file mode 100644
index 000000000..212775998
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-circle.md
@@ -0,0 +1,8 @@
+---
+title: Plus circle
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plus-lg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-lg.md
new file mode 100644
index 000000000..675966330
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-lg.md
@@ -0,0 +1,8 @@
+---
+title: Plus lg
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plus-slash-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-slash-minus.md
new file mode 100644
index 000000000..56b044f07
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-slash-minus.md
@@ -0,0 +1,9 @@
+---
+title: Plus slash minus
+categories:
+ - Typography
+tags:
+ - difference
+ - add
+ - subtract
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plus-square-dotted.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-square-dotted.md
new file mode 100644
index 000000000..34e8a2bcf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-square-dotted.md
@@ -0,0 +1,8 @@
+---
+title: Plus square dotted
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plus-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-square-fill.md
new file mode 100644
index 000000000..fcd125f8b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Plus square fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plus-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-square.md
new file mode 100644
index 000000000..54eeffff2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plus-square.md
@@ -0,0 +1,8 @@
+---
+title: Plus square
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/plus.md
new file mode 100644
index 000000000..3a2f48365
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/plus.md
@@ -0,0 +1,8 @@
+---
+title: Plus
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - add
+ - new
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/postage-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/postage-fill.md
new file mode 100644
index 000000000..0c05d91e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/postage-fill.md
@@ -0,0 +1,9 @@
+---
+title: Postage fill
+categories:
+ - Real World
+tags:
+ - mail
+ - stamp
+ - shipping
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/postage-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/postage-heart-fill.md
new file mode 100644
index 000000000..1dd42bf19
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/postage-heart-fill.md
@@ -0,0 +1,12 @@
+---
+title: Postage heart fill
+categories:
+ - Real World
+ - Love
+tags:
+ - mail
+ - stamp
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/postage-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/postage-heart.md
new file mode 100644
index 000000000..d208e5ec3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/postage-heart.md
@@ -0,0 +1,12 @@
+---
+title: Postage heart
+categories:
+ - Real World
+ - Love
+tags:
+ - mail
+ - stamp
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/postage.md b/vendor/twbs/bootstrap-icons/docs/content/icons/postage.md
new file mode 100644
index 000000000..600869e57
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/postage.md
@@ -0,0 +1,8 @@
+---
+title: Postage
+categories:
+ - Real World
+tags:
+ - stamp
+ - shipping
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/postcard-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/postcard-fill.md
new file mode 100644
index 000000000..1aeb4ce82
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/postcard-fill.md
@@ -0,0 +1,8 @@
+---
+title: Postcard fill
+categories:
+ - Real World
+tags:
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/postcard-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/postcard-heart-fill.md
new file mode 100644
index 000000000..ff9bbc1f4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/postcard-heart-fill.md
@@ -0,0 +1,12 @@
+---
+title: Postcard heart fill
+categories:
+ - Real World
+ - Love
+tags:
+ - mail
+ - letter
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/postcard-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/postcard-heart.md
new file mode 100644
index 000000000..207ba9c8f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/postcard-heart.md
@@ -0,0 +1,12 @@
+---
+title: Postcard heart
+categories:
+ - Real World
+ - Love
+tags:
+ - mail
+ - letter
+ - love
+ - valentine
+ - romance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/postcard.md b/vendor/twbs/bootstrap-icons/docs/content/icons/postcard.md
new file mode 100644
index 000000000..23b5bf06e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/postcard.md
@@ -0,0 +1,8 @@
+---
+title: Postcard
+categories:
+ - Real World
+tags:
+ - mail
+ - letter
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/power.md b/vendor/twbs/bootstrap-icons/docs/content/icons/power.md
new file mode 100644
index 000000000..321caec0a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/power.md
@@ -0,0 +1,8 @@
+---
+title: Power
+categories:
+ - UI and keyboard
+tags:
+ - off
+ - on
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/prescription.md b/vendor/twbs/bootstrap-icons/docs/content/icons/prescription.md
new file mode 100644
index 000000000..6a82a5bff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/prescription.md
@@ -0,0 +1,10 @@
+---
+title: Prescription
+categories:
+ - Medical
+tags:
+ - rx
+ - pills
+ - capsules
+ - medicine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/prescription2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/prescription2.md
new file mode 100644
index 000000000..7c1472461
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/prescription2.md
@@ -0,0 +1,10 @@
+---
+title: Prescription2
+categories:
+ - Medical
+tags:
+ - rx
+ - pills
+ - capsules
+ - medicine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/printer-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/printer-fill.md
new file mode 100644
index 000000000..d30fd6cc0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/printer-fill.md
@@ -0,0 +1,7 @@
+---
+title: Printer fill
+categories:
+ - Devices
+tags:
+ - print
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/printer.md b/vendor/twbs/bootstrap-icons/docs/content/icons/printer.md
new file mode 100644
index 000000000..fa1c1dd37
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/printer.md
@@ -0,0 +1,7 @@
+---
+title: Printer
+categories:
+ - Devices
+tags:
+ - print
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/projector-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/projector-fill.md
new file mode 100644
index 000000000..b3c655c83
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/projector-fill.md
@@ -0,0 +1,9 @@
+---
+title: Projector fill
+categories:
+ - Devices
+tags:
+ - projection
+ - present
+ - screen
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/projector.md b/vendor/twbs/bootstrap-icons/docs/content/icons/projector.md
new file mode 100644
index 000000000..ac4b745c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/projector.md
@@ -0,0 +1,9 @@
+---
+title: Projector
+categories:
+ - Devices
+tags:
+ - projection
+ - present
+ - screen
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/puzzle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/puzzle-fill.md
new file mode 100644
index 000000000..6084911c1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/puzzle-fill.md
@@ -0,0 +1,8 @@
+---
+title: Puzzle fill
+categories:
+ - Miscellaneous
+tags:
+ - puzzle
+ - piece
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/puzzle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/puzzle.md
new file mode 100644
index 000000000..0f52d64cb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/puzzle.md
@@ -0,0 +1,8 @@
+---
+title: Puzzle
+categories:
+ - Miscellaneous
+tags:
+ - puzzle
+ - piece
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/qr-code-scan.md b/vendor/twbs/bootstrap-icons/docs/content/icons/qr-code-scan.md
new file mode 100644
index 000000000..83037301d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/qr-code-scan.md
@@ -0,0 +1,7 @@
+---
+title: QR code scan
+categories:
+ - Communications
+tags:
+ - scan
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/qr-code.md b/vendor/twbs/bootstrap-icons/docs/content/icons/qr-code.md
new file mode 100644
index 000000000..be4b31ebe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/qr-code.md
@@ -0,0 +1,7 @@
+---
+title: QR code
+categories:
+ - Communications
+tags:
+ - scan
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/question-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/question-circle-fill.md
new file mode 100644
index 000000000..48e0a9898
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/question-circle-fill.md
@@ -0,0 +1,7 @@
+---
+title: Question fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/question-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/question-circle.md
new file mode 100644
index 000000000..05c98d9ad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/question-circle.md
@@ -0,0 +1,7 @@
+---
+title: Question circle
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/question-diamond-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/question-diamond-fill.md
new file mode 100644
index 000000000..e559e60aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/question-diamond-fill.md
@@ -0,0 +1,7 @@
+---
+title: Question diamond fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/question-diamond.md b/vendor/twbs/bootstrap-icons/docs/content/icons/question-diamond.md
new file mode 100644
index 000000000..997adcbdb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/question-diamond.md
@@ -0,0 +1,7 @@
+---
+title: Question diamond
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/question-lg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/question-lg.md
new file mode 100644
index 000000000..1e5771248
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/question-lg.md
@@ -0,0 +1,7 @@
+---
+title: Question lg
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/question-octagon-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/question-octagon-fill.md
new file mode 100644
index 000000000..eab5c9e88
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/question-octagon-fill.md
@@ -0,0 +1,7 @@
+---
+title: Question octagon fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/question-octagon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/question-octagon.md
new file mode 100644
index 000000000..52f9cca17
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/question-octagon.md
@@ -0,0 +1,7 @@
+---
+title: Question octagon
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/question-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/question-square-fill.md
new file mode 100644
index 000000000..9fbec5c04
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/question-square-fill.md
@@ -0,0 +1,7 @@
+---
+title: Question square fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/question-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/question-square.md
new file mode 100644
index 000000000..51a884e07
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/question-square.md
@@ -0,0 +1,7 @@
+---
+title: Question square
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/question.md b/vendor/twbs/bootstrap-icons/docs/content/icons/question.md
new file mode 100644
index 000000000..36c6d2781
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/question.md
@@ -0,0 +1,7 @@
+---
+title: Question
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - help
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/quora.md b/vendor/twbs/bootstrap-icons/docs/content/icons/quora.md
new file mode 100644
index 000000000..312a407b1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/quora.md
@@ -0,0 +1,7 @@
+---
+title: Quora
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/quote.md b/vendor/twbs/bootstrap-icons/docs/content/icons/quote.md
new file mode 100644
index 000000000..40252dfdb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/quote.md
@@ -0,0 +1,9 @@
+---
+title: Quote
+categories:
+ - Typography
+tags:
+ - blockquote
+ - quotes
+ - quotation
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/r-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/r-circle-fill.md
new file mode 100644
index 000000000..b18fe35f3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/r-circle-fill.md
@@ -0,0 +1,8 @@
+---
+title: R circle fill
+categories:
+ - Shapes
+tags:
+ - registered
+ - trademark
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/r-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/r-circle.md
new file mode 100644
index 000000000..a62096be4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/r-circle.md
@@ -0,0 +1,8 @@
+---
+title: R circle
+categories:
+ - Shapes
+tags:
+ - registered
+ - trademark
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/r-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/r-square-fill.md
new file mode 100644
index 000000000..311ff808a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/r-square-fill.md
@@ -0,0 +1,8 @@
+---
+title: R square fill
+categories:
+ - Shapes
+tags:
+ - registered
+ - trademark
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/r-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/r-square.md
new file mode 100644
index 000000000..bbb10f128
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/r-square.md
@@ -0,0 +1,8 @@
+---
+title: R square
+categories:
+ - Shapes
+tags:
+ - registered
+ - trademark
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/radar.md b/vendor/twbs/bootstrap-icons/docs/content/icons/radar.md
new file mode 100644
index 000000000..4f2698687
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/radar.md
@@ -0,0 +1,11 @@
+---
+title: Radar
+categories:
+ - Geo
+tags:
+ - geography
+ - map
+ - pin
+ - location
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/radioactive.md b/vendor/twbs/bootstrap-icons/docs/content/icons/radioactive.md
new file mode 100644
index 000000000..bed05e1b1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/radioactive.md
@@ -0,0 +1,9 @@
+---
+title: Radioactive
+categories:
+ - Real World
+tags:
+ - radiation
+ - nuclear
+ - danger
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rainbow.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rainbow.md
new file mode 100644
index 000000000..caa2dbaf5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rainbow.md
@@ -0,0 +1,8 @@
+---
+title: Rainbow
+categories:
+ - Weather
+tags:
+ - colors
+ - arches
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/receipt-cutoff.md b/vendor/twbs/bootstrap-icons/docs/content/icons/receipt-cutoff.md
new file mode 100644
index 000000000..93207b5ec
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/receipt-cutoff.md
@@ -0,0 +1,11 @@
+---
+title: Receipt cutoff
+categories:
+ - Commerce
+tags:
+ - receipt
+ - invoice
+ - sale
+ - purchase
+ - bill
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/receipt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/receipt.md
new file mode 100644
index 000000000..6eb15c332
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/receipt.md
@@ -0,0 +1,11 @@
+---
+title: Receipt
+categories:
+ - Commerce
+tags:
+ - receipt
+ - invoice
+ - sale
+ - purchase
+ - bill
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/reception-0.md b/vendor/twbs/bootstrap-icons/docs/content/icons/reception-0.md
new file mode 100644
index 000000000..aaf656a93
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/reception-0.md
@@ -0,0 +1,12 @@
+---
+title: Reception 0
+categories:
+ - Communications
+tags:
+ - reception
+ - cellphone
+ - mobile
+ - carrier
+ - network
+ - signal
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/reception-1.md b/vendor/twbs/bootstrap-icons/docs/content/icons/reception-1.md
new file mode 100644
index 000000000..4e840e877
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/reception-1.md
@@ -0,0 +1,12 @@
+---
+title: Reception 1
+categories:
+ - Communications
+tags:
+ - reception
+ - cellphone
+ - mobile
+ - carrier
+ - network
+ - signal
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/reception-2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/reception-2.md
new file mode 100644
index 000000000..68414b6c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/reception-2.md
@@ -0,0 +1,12 @@
+---
+title: Reception 2
+categories:
+ - Communications
+tags:
+ - reception
+ - cellphone
+ - mobile
+ - carrier
+ - network
+ - signal
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/reception-3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/reception-3.md
new file mode 100644
index 000000000..d491e0d45
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/reception-3.md
@@ -0,0 +1,12 @@
+---
+title: Reception 3
+categories:
+ - Communications
+tags:
+ - reception
+ - cellphone
+ - mobile
+ - carrier
+ - network
+ - signal
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/reception-4.md b/vendor/twbs/bootstrap-icons/docs/content/icons/reception-4.md
new file mode 100644
index 000000000..2f49bbd8d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/reception-4.md
@@ -0,0 +1,12 @@
+---
+title: Reception 4
+categories:
+ - Communications
+tags:
+ - reception
+ - cellphone
+ - mobile
+ - carrier
+ - network
+ - signal
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/record-btn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/record-btn-fill.md
new file mode 100644
index 000000000..7d4d44169
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/record-btn-fill.md
@@ -0,0 +1,9 @@
+---
+title: Record btn fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/record-btn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/record-btn.md
new file mode 100644
index 000000000..617fa792f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/record-btn.md
@@ -0,0 +1,9 @@
+---
+title: Record btn
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/record-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/record-circle-fill.md
new file mode 100644
index 000000000..03a87bb44
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/record-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Record circle fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/record-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/record-circle.md
new file mode 100644
index 000000000..762bbf084
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/record-circle.md
@@ -0,0 +1,9 @@
+---
+title: Record circle
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/record-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/record-fill.md
new file mode 100644
index 000000000..8714a2bd7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/record-fill.md
@@ -0,0 +1,9 @@
+---
+title: Record fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/record.md b/vendor/twbs/bootstrap-icons/docs/content/icons/record.md
new file mode 100644
index 000000000..9196ee643
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/record.md
@@ -0,0 +1,9 @@
+---
+title: Record
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/record2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/record2-fill.md
new file mode 100644
index 000000000..f4411c128
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/record2-fill.md
@@ -0,0 +1,9 @@
+---
+title: Record2 fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/record2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/record2.md
new file mode 100644
index 000000000..6c045d408
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/record2.md
@@ -0,0 +1,9 @@
+---
+title: Record2
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/recycle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/recycle.md
new file mode 100644
index 000000000..26e540681
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/recycle.md
@@ -0,0 +1,8 @@
+---
+title: Recycle
+categories:
+ - Arrows
+tags:
+ - recyling
+ - trash
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/reddit.md b/vendor/twbs/bootstrap-icons/docs/content/icons/reddit.md
new file mode 100644
index 000000000..49dfeef3d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/reddit.md
@@ -0,0 +1,7 @@
+---
+title: Reddit
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/regex.md b/vendor/twbs/bootstrap-icons/docs/content/icons/regex.md
new file mode 100644
index 000000000..aa9a3772a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/regex.md
@@ -0,0 +1,14 @@
+---
+title: Regex
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - code
+ - developer
+ - development
+ - software
+ - "regular expression"
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/repeat-1.md b/vendor/twbs/bootstrap-icons/docs/content/icons/repeat-1.md
new file mode 100644
index 000000000..ede593808
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/repeat-1.md
@@ -0,0 +1,9 @@
+---
+title: Repeat 1
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/repeat.md b/vendor/twbs/bootstrap-icons/docs/content/icons/repeat.md
new file mode 100644
index 000000000..b224fcc7c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/repeat.md
@@ -0,0 +1,9 @@
+---
+title: Repeat
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/reply-all-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/reply-all-fill.md
new file mode 100644
index 000000000..2bd8916f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/reply-all-fill.md
@@ -0,0 +1,8 @@
+---
+title: Reply all fill
+categories:
+ - Communications
+tags:
+ - mail
+ - email
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/reply-all.md b/vendor/twbs/bootstrap-icons/docs/content/icons/reply-all.md
new file mode 100644
index 000000000..a6b7cefd7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/reply-all.md
@@ -0,0 +1,8 @@
+---
+title: Reply all
+categories:
+ - Communications
+tags:
+ - mail
+ - email
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/reply-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/reply-fill.md
new file mode 100644
index 000000000..5b3305a12
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/reply-fill.md
@@ -0,0 +1,8 @@
+---
+title: Reply fill
+categories:
+ - Communications
+tags:
+ - mail
+ - email
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/reply.md b/vendor/twbs/bootstrap-icons/docs/content/icons/reply.md
new file mode 100644
index 000000000..bde7140b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/reply.md
@@ -0,0 +1,8 @@
+---
+title: Reply
+categories:
+ - Communications
+tags:
+ - mail
+ - email
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-btn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-btn-fill.md
new file mode 100644
index 000000000..4e83c94e6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-btn-fill.md
@@ -0,0 +1,9 @@
+---
+title: Rewind btn fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-btn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-btn.md
new file mode 100644
index 000000000..60dd83e1b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-btn.md
@@ -0,0 +1,9 @@
+---
+title: Rewind btn
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-circle-fill.md
new file mode 100644
index 000000000..60b0bc16f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Rewind circle fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-circle.md
new file mode 100644
index 000000000..e25bfa1b0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-circle.md
@@ -0,0 +1,9 @@
+---
+title: Rewind circle
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-fill.md
new file mode 100644
index 000000000..08aeee466
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind-fill.md
@@ -0,0 +1,9 @@
+---
+title: Rewind fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rewind.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind.md
new file mode 100644
index 000000000..f331a8e10
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rewind.md
@@ -0,0 +1,9 @@
+---
+title: Rewind
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/robot.md b/vendor/twbs/bootstrap-icons/docs/content/icons/robot.md
new file mode 100644
index 000000000..daa193890
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/robot.md
@@ -0,0 +1,7 @@
+---
+title: Robot
+categories:
+ - Devices
+tags:
+ - bot
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rocket-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rocket-fill.md
new file mode 100644
index 000000000..0c4fe5e70
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rocket-fill.md
@@ -0,0 +1,10 @@
+---
+title: Rocket fill
+categories:
+ - Real world
+tags:
+ - ship
+ - rocketship
+ - spaceship
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rocket-takeoff-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rocket-takeoff-fill.md
new file mode 100644
index 000000000..d747729c1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rocket-takeoff-fill.md
@@ -0,0 +1,11 @@
+---
+title: Rocket takeoff fill
+categories:
+ - Real world
+tags:
+ - ship
+ - rocketship
+ - spaceship
+ - launch
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rocket-takeoff.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rocket-takeoff.md
new file mode 100644
index 000000000..43cbae682
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rocket-takeoff.md
@@ -0,0 +1,11 @@
+---
+title: Rocket takeoff
+categories:
+ - Real world
+tags:
+ - ship
+ - rocketship
+ - spaceship
+ - launch
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rocket.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rocket.md
new file mode 100644
index 000000000..03eb0dc7e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rocket.md
@@ -0,0 +1,10 @@
+---
+title: Rocket
+categories:
+ - Real world
+tags:
+ - ship
+ - rocketship
+ - spaceship
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/router-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/router-fill.md
new file mode 100644
index 000000000..674670aa4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/router-fill.md
@@ -0,0 +1,10 @@
+---
+title: Router fill
+categories:
+ - Devices
+tags:
+ - wifi
+ - internet
+ - wireless
+ - network
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/router.md b/vendor/twbs/bootstrap-icons/docs/content/icons/router.md
new file mode 100644
index 000000000..5ba11d9aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/router.md
@@ -0,0 +1,10 @@
+---
+title: Router
+categories:
+ - Devices
+tags:
+ - wifi
+ - internet
+ - wireless
+ - network
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rss-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rss-fill.md
new file mode 100644
index 000000000..6c4f504bc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rss-fill.md
@@ -0,0 +1,9 @@
+---
+title: RSS fill
+categories:
+ - Communications
+tags:
+ - atom
+ - feed
+ - xml
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rss.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rss.md
new file mode 100644
index 000000000..9d6b12f40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rss.md
@@ -0,0 +1,9 @@
+---
+title: RSS
+categories:
+ - Communications
+tags:
+ - atom
+ - feed
+ - xml
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/rulers.md b/vendor/twbs/bootstrap-icons/docs/content/icons/rulers.md
new file mode 100644
index 000000000..e8919d59e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/rulers.md
@@ -0,0 +1,8 @@
+---
+title: Rulers
+categories:
+ - Graphics
+tags:
+ - measure
+ - guide
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/safe-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/safe-fill.md
new file mode 100644
index 000000000..9bad18abc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/safe-fill.md
@@ -0,0 +1,9 @@
+---
+title: Safe fill
+categories:
+ - Real world
+tags:
+ - vault
+ - bank
+ - finance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/safe.md b/vendor/twbs/bootstrap-icons/docs/content/icons/safe.md
new file mode 100644
index 000000000..df192115b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/safe.md
@@ -0,0 +1,9 @@
+---
+title: Safe
+categories:
+ - Real world
+tags:
+ - vault
+ - bank
+ - finance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/safe2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/safe2-fill.md
new file mode 100644
index 000000000..5c64a9089
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/safe2-fill.md
@@ -0,0 +1,9 @@
+---
+title: Safe2 fill
+categories:
+ - Real world
+tags:
+ - vault
+ - bank
+ - finance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/safe2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/safe2.md
new file mode 100644
index 000000000..d0b893904
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/safe2.md
@@ -0,0 +1,9 @@
+---
+title: Safe2
+categories:
+ - Real world
+tags:
+ - vault
+ - bank
+ - finance
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/save-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/save-fill.md
new file mode 100644
index 000000000..e4feb23c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/save-fill.md
@@ -0,0 +1,8 @@
+---
+title: Save fill
+categories:
+ - UI and keyboard
+tags:
+ - save
+ - floppy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/save.md b/vendor/twbs/bootstrap-icons/docs/content/icons/save.md
new file mode 100644
index 000000000..b88e9c348
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/save.md
@@ -0,0 +1,8 @@
+---
+title: Save
+categories:
+ - UI and keyboard
+tags:
+ - save
+ - floppy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/save2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/save2-fill.md
new file mode 100644
index 000000000..e03b5984e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/save2-fill.md
@@ -0,0 +1,8 @@
+---
+title: Save2 fill
+categories:
+ - UI and keyboard
+tags:
+ - save
+ - floppy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/save2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/save2.md
new file mode 100644
index 000000000..d2f3c96ec
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/save2.md
@@ -0,0 +1,8 @@
+---
+title: Save2
+categories:
+ - UI and keyboard
+tags:
+ - save
+ - floppy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/scissors.md b/vendor/twbs/bootstrap-icons/docs/content/icons/scissors.md
new file mode 100644
index 000000000..480375f92
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/scissors.md
@@ -0,0 +1,8 @@
+---
+title: Scissors
+categories:
+ - Real world
+tags:
+ - cut
+ - shears
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/scooter.md b/vendor/twbs/bootstrap-icons/docs/content/icons/scooter.md
new file mode 100644
index 000000000..9637de3f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/scooter.md
@@ -0,0 +1,8 @@
+---
+title: Scooter
+categories:
+ - Transportation
+tags:
+ - riding
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/screwdriver.md b/vendor/twbs/bootstrap-icons/docs/content/icons/screwdriver.md
new file mode 100644
index 000000000..bb0775a74
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/screwdriver.md
@@ -0,0 +1,7 @@
+---
+title: Screwdriver
+categories:
+ - Tools
+tags:
+ - tool
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sd-card-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sd-card-fill.md
new file mode 100644
index 000000000..ddbe4ccdd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sd-card-fill.md
@@ -0,0 +1,10 @@
+---
+title: SD card fill
+categories:
+ - Devices
+tags:
+ - storage
+ - microsd
+ - chip
+ - memory
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sd-card.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sd-card.md
new file mode 100644
index 000000000..d9491254f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sd-card.md
@@ -0,0 +1,10 @@
+---
+title: SD card
+categories:
+ - Devices
+tags:
+ - storage
+ - microsd
+ - chip
+ - memory
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/search-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/search-heart-fill.md
new file mode 100644
index 000000000..4b75865cb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/search-heart-fill.md
@@ -0,0 +1,12 @@
+---
+title: Search heart fill
+categories:
+ - Communications
+ - Love
+tags:
+ - magnifying-glass
+ - look
+ - love
+ - romance
+ - valentine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/search-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/search-heart.md
new file mode 100644
index 000000000..d730ea222
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/search-heart.md
@@ -0,0 +1,12 @@
+---
+title: Search heart
+categories:
+ - Communications
+ - Love
+tags:
+ - magnifying-glass
+ - look
+ - love
+ - romance
+ - valentine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/search.md b/vendor/twbs/bootstrap-icons/docs/content/icons/search.md
new file mode 100644
index 000000000..41f13f04a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/search.md
@@ -0,0 +1,8 @@
+---
+title: Search
+categories:
+ - Communications
+tags:
+ - magnifying-glass
+ - look
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/segmented-nav.md b/vendor/twbs/bootstrap-icons/docs/content/icons/segmented-nav.md
new file mode 100644
index 000000000..62a86840a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/segmented-nav.md
@@ -0,0 +1,11 @@
+---
+title: Segmented nav
+categories:
+ - Controls
+tags:
+ - nav
+ - tabs
+ - tabbed
+ - app
+ - ui
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-down-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-down-fill.md
new file mode 100644
index 000000000..4ad0fca88
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-down-fill.md
@@ -0,0 +1,11 @@
+---
+title: Send arrow down fill
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-down.md
new file mode 100644
index 000000000..e2ea8ffb8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-down.md
@@ -0,0 +1,11 @@
+---
+title: Send arrow down
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-up-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-up-fill.md
new file mode 100644
index 000000000..343f1ef73
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-up-fill.md
@@ -0,0 +1,11 @@
+---
+title: Send arrow up fill
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-up.md
new file mode 100644
index 000000000..a90db0cea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-arrow-up.md
@@ -0,0 +1,11 @@
+---
+title: Send arrow up
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-check-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-check-fill.md
new file mode 100644
index 000000000..4a9a38366
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-check-fill.md
@@ -0,0 +1,10 @@
+---
+title: Send check fill
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-check.md
new file mode 100644
index 000000000..0aadba21c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-check.md
@@ -0,0 +1,10 @@
+---
+title: Send check
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-dash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-dash-fill.md
new file mode 100644
index 000000000..01befc56e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-dash-fill.md
@@ -0,0 +1,10 @@
+---
+title: Send dash fill
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-dash.md
new file mode 100644
index 000000000..367b21056
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-dash.md
@@ -0,0 +1,10 @@
+---
+title: Send dash
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-exclamation-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-exclamation-fill.md
new file mode 100644
index 000000000..67026eb16
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-exclamation-fill.md
@@ -0,0 +1,10 @@
+---
+title: Send exclamation fill
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-exclamation.md
new file mode 100644
index 000000000..f1b373784
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-exclamation.md
@@ -0,0 +1,10 @@
+---
+title: Send exclamation
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-fill.md
new file mode 100644
index 000000000..e10a28954
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-fill.md
@@ -0,0 +1,10 @@
+---
+title: Send fill
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-plus-fill.md
new file mode 100644
index 000000000..24e75aaee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-plus-fill.md
@@ -0,0 +1,10 @@
+---
+title: Send plus fill
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-plus.md
new file mode 100644
index 000000000..75b143dd3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-plus.md
@@ -0,0 +1,10 @@
+---
+title: Send plus
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-slash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-slash-fill.md
new file mode 100644
index 000000000..a958fc92b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-slash-fill.md
@@ -0,0 +1,10 @@
+---
+title: Send slash fill
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-slash.md
new file mode 100644
index 000000000..9779c9fd2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-slash.md
@@ -0,0 +1,10 @@
+---
+title: Send slash
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-x-fill.md
new file mode 100644
index 000000000..79752c891
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-x-fill.md
@@ -0,0 +1,10 @@
+---
+title: Send x fill
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send-x.md
new file mode 100644
index 000000000..7895d938c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send-x.md
@@ -0,0 +1,10 @@
+---
+title: Send x
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/send.md b/vendor/twbs/bootstrap-icons/docs/content/icons/send.md
new file mode 100644
index 000000000..15ecae151
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/send.md
@@ -0,0 +1,10 @@
+---
+title: Send
+categories:
+ - Communications
+tags:
+ - message
+ - sending
+ - sent
+ - paper-plane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/server.md b/vendor/twbs/bootstrap-icons/docs/content/icons/server.md
new file mode 100644
index 000000000..0dd15cba5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/server.md
@@ -0,0 +1,8 @@
+---
+title: Server
+categories:
+ - Devices
+tags:
+ - server
+ - network
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shadows.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shadows.md
new file mode 100644
index 000000000..a3590f7fa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shadows.md
@@ -0,0 +1,11 @@
+---
+title: Shadows
+categories:
+ - Graphics
+tags:
+ - photo
+ - editing
+ - image
+ - picture
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/share-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/share-fill.md
new file mode 100644
index 000000000..4868a9675
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/share-fill.md
@@ -0,0 +1,8 @@
+---
+title: Share fill
+categories:
+ - Communications
+tags:
+ - share
+ - link
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/share.md b/vendor/twbs/bootstrap-icons/docs/content/icons/share.md
new file mode 100644
index 000000000..4cf811564
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/share.md
@@ -0,0 +1,8 @@
+---
+title: Share
+categories:
+ - Communications
+tags:
+ - share
+ - link
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-check.md
new file mode 100644
index 000000000..3c9212de8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-check.md
@@ -0,0 +1,8 @@
+---
+title: Shield check
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-exclamation.md
new file mode 100644
index 000000000..f569c3c5c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-exclamation.md
@@ -0,0 +1,8 @@
+---
+title: Shield exclamation
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-check.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-check.md
new file mode 100644
index 000000000..c15872e9a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-check.md
@@ -0,0 +1,8 @@
+---
+title: Shield fill check
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-exclamation.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-exclamation.md
new file mode 100644
index 000000000..72df25d8b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-exclamation.md
@@ -0,0 +1,8 @@
+---
+title: Shield fill exclamation
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-minus.md
new file mode 100644
index 000000000..7d537bbb8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-minus.md
@@ -0,0 +1,8 @@
+---
+title: Shield fill minus
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-plus.md
new file mode 100644
index 000000000..444d20f5f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-plus.md
@@ -0,0 +1,8 @@
+---
+title: Shield fill plus
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-x.md
new file mode 100644
index 000000000..8074141a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill-x.md
@@ -0,0 +1,10 @@
+---
+title: Shield fill x
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill.md
new file mode 100644
index 000000000..b19393b09
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-fill.md
@@ -0,0 +1,8 @@
+---
+title: Shield fill
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-lock-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-lock-fill.md
new file mode 100644
index 000000000..fcaf15fbd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-lock-fill.md
@@ -0,0 +1,9 @@
+---
+title: Shield lock fill
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+ - lock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-lock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-lock.md
new file mode 100644
index 000000000..983a3af61
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-lock.md
@@ -0,0 +1,9 @@
+---
+title: Shield lock
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+ - lock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-minus.md
new file mode 100644
index 000000000..3c387a0b0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-minus.md
@@ -0,0 +1,8 @@
+---
+title: Shield minus
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-plus.md
new file mode 100644
index 000000000..9a9cfc88f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-plus.md
@@ -0,0 +1,8 @@
+---
+title: Shield plus
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-shaded.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-shaded.md
new file mode 100644
index 000000000..bfb286a95
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-shaded.md
@@ -0,0 +1,8 @@
+---
+title: Shield shaded
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-slash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-slash-fill.md
new file mode 100644
index 000000000..f94081596
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-slash-fill.md
@@ -0,0 +1,8 @@
+---
+title: Shield slash fill
+categories:
+ - Security
+tags:
+ - shield
+ - badge
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-slash.md
new file mode 100644
index 000000000..191d1c8b8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-slash.md
@@ -0,0 +1,8 @@
+---
+title: Shield slash
+categories:
+ - Security
+tags:
+ - shield
+ - badge
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-x.md
new file mode 100644
index 000000000..62c5e5d84
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield-x.md
@@ -0,0 +1,10 @@
+---
+title: Shield x
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+ - remove
+ - delete
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shield.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shield.md
new file mode 100644
index 000000000..ccdd14dbb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shield.md
@@ -0,0 +1,8 @@
+---
+title: Shield
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shift-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shift-fill.md
new file mode 100644
index 000000000..1426b652a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shift-fill.md
@@ -0,0 +1,7 @@
+---
+title: Shift fill
+categories:
+ - UI and keyboard
+tags:
+ - key
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shift.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shift.md
new file mode 100644
index 000000000..d7d938c76
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shift.md
@@ -0,0 +1,7 @@
+---
+title: Shift
+categories:
+ - UI and keyboard
+tags:
+ - key
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shop-window.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shop-window.md
new file mode 100644
index 000000000..a9e47f725
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shop-window.md
@@ -0,0 +1,12 @@
+---
+title: Shop window
+categories:
+ - Commerce
+tags:
+ - shop
+ - store
+ - market
+ - marketplace
+ - shopping
+ - retail
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shop.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shop.md
new file mode 100644
index 000000000..60681bd9e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shop.md
@@ -0,0 +1,12 @@
+---
+title: Shop
+categories:
+ - Commerce
+tags:
+ - shop
+ - store
+ - market
+ - marketplace
+ - shopping
+ - retail
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/shuffle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/shuffle.md
new file mode 100644
index 000000000..549c27c5a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/shuffle.md
@@ -0,0 +1,8 @@
+---
+title: Shuffle
+categories:
+ - Arrows
+tags:
+ - shuffle
+ - random
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-dead-end-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-dead-end-fill.md
new file mode 100644
index 000000000..755ca5bdc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-dead-end-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign dead end fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-dead-end.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-dead-end.md
new file mode 100644
index 000000000..df929adff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-dead-end.md
@@ -0,0 +1,10 @@
+---
+title: Sign dead end
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-do-not-enter-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-do-not-enter-fill.md
new file mode 100644
index 000000000..032622e4c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-do-not-enter-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign do not enter fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-do-not-enter.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-do-not-enter.md
new file mode 100644
index 000000000..de4ef76be
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-do-not-enter.md
@@ -0,0 +1,10 @@
+---
+title: Sign do not enter
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-fill.md
new file mode 100644
index 000000000..53385fa51
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign intersection fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-side-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-side-fill.md
new file mode 100644
index 000000000..253fa89e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-side-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign intersection side fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-side.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-side.md
new file mode 100644
index 000000000..27dec6cfc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-side.md
@@ -0,0 +1,10 @@
+---
+title: Sign intersection side
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-t-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-t-fill.md
new file mode 100644
index 000000000..58ba15fcf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-t-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign intersection t fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-t.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-t.md
new file mode 100644
index 000000000..70fe596e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-t.md
@@ -0,0 +1,10 @@
+---
+title: Sign intersection t
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-y-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-y-fill.md
new file mode 100644
index 000000000..b314da741
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-y-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign intersection y fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-y.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-y.md
new file mode 100644
index 000000000..da8dc6ac0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection-y.md
@@ -0,0 +1,10 @@
+---
+title: Sign intersection y
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection.md
new file mode 100644
index 000000000..a88ead0eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-intersection.md
@@ -0,0 +1,10 @@
+---
+title: Sign intersection
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-left-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-left-fill.md
new file mode 100644
index 000000000..d91e607a4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-left-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign merge left fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-left.md
new file mode 100644
index 000000000..d66e63954
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-left.md
@@ -0,0 +1,10 @@
+---
+title: Sign merge left
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-right-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-right-fill.md
new file mode 100644
index 000000000..7de115e79
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-right-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign merge right fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-right.md
new file mode 100644
index 000000000..4f01c1333
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-merge-right.md
@@ -0,0 +1,10 @@
+---
+title: Sign merge right
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-left-turn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-left-turn-fill.md
new file mode 100644
index 000000000..ddffa1953
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-left-turn-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign no left turn fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-left-turn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-left-turn.md
new file mode 100644
index 000000000..0616b68c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-left-turn.md
@@ -0,0 +1,10 @@
+---
+title: Sign no left turn
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-parking-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-parking-fill.md
new file mode 100644
index 000000000..d0b68e875
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-parking-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign no parking fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-parking.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-parking.md
new file mode 100644
index 000000000..3d589d508
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-parking.md
@@ -0,0 +1,10 @@
+---
+title: Sign no parking
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-right-turn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-right-turn-fill.md
new file mode 100644
index 000000000..ef59b1ab6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-right-turn-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign no right turn fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-right-turn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-right-turn.md
new file mode 100644
index 000000000..0b790023d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-no-right-turn.md
@@ -0,0 +1,10 @@
+---
+title: Sign no right turn
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - directions
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-railroad-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-railroad-fill.md
new file mode 100644
index 000000000..206681b8b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-railroad-fill.md
@@ -0,0 +1,11 @@
+---
+title: Sign railroad fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - train
+ - tracks
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-railroad.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-railroad.md
new file mode 100644
index 000000000..6e71b387c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-railroad.md
@@ -0,0 +1,11 @@
+---
+title: Sign railroad
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - train
+ - tracks
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-fill.md
new file mode 100644
index 000000000..51108d533
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-fill.md
@@ -0,0 +1,11 @@
+---
+title: Sign stop fill
+categories:
+ - Transportation
+tags:
+ - "stop sign"
+ - intersection
+ - road
+ - driving
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-lights-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-lights-fill.md
new file mode 100644
index 000000000..a52c14240
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-lights-fill.md
@@ -0,0 +1,11 @@
+---
+title: Sign stop lights fill
+categories:
+ - Transportation
+tags:
+ - "stop sign"
+ - intersection
+ - road
+ - driving
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-lights.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-lights.md
new file mode 100644
index 000000000..bca1c8db0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop-lights.md
@@ -0,0 +1,11 @@
+---
+title: Sign stop lights
+categories:
+ - Transportation
+tags:
+ - "stop sign"
+ - intersection
+ - road
+ - driving
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop.md
new file mode 100644
index 000000000..f4a331853
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-stop.md
@@ -0,0 +1,11 @@
+---
+title: Sign stop
+categories:
+ - Transportation
+tags:
+ - "stop sign"
+ - intersection
+ - road
+ - driving
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-left-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-left-fill.md
new file mode 100644
index 000000000..01998a30c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-left-fill.md
@@ -0,0 +1,12 @@
+---
+title: Sign turn left fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - navigate
+ - navigation
+ - route
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-left.md
new file mode 100644
index 000000000..7b88469f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-left.md
@@ -0,0 +1,12 @@
+---
+title: Sign turn left
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - navigate
+ - navigation
+ - route
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-right-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-right-fill.md
new file mode 100644
index 000000000..54bd5e070
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-right-fill.md
@@ -0,0 +1,12 @@
+---
+title: Sign turn right fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - navigate
+ - navigation
+ - route
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-right.md
new file mode 100644
index 000000000..bf175af16
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-right.md
@@ -0,0 +1,12 @@
+---
+title: Sign turn right
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - navigate
+ - navigation
+ - route
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-left-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-left-fill.md
new file mode 100644
index 000000000..0e1c8df77
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-left-fill.md
@@ -0,0 +1,12 @@
+---
+title: Sign turn slight left fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - navigate
+ - navigation
+ - route
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-left.md
new file mode 100644
index 000000000..178e8a962
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-left.md
@@ -0,0 +1,12 @@
+---
+title: Sign turn slight left
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - navigate
+ - navigation
+ - route
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-right-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-right-fill.md
new file mode 100644
index 000000000..1cbb45515
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-right-fill.md
@@ -0,0 +1,12 @@
+---
+title: Sign turn slight right fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - navigate
+ - navigation
+ - route
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-right.md
new file mode 100644
index 000000000..2ffdc6f79
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-turn-slight-right.md
@@ -0,0 +1,12 @@
+---
+title: Sign turn slight right
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - navigate
+ - navigation
+ - route
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-yield-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-yield-fill.md
new file mode 100644
index 000000000..a9b97af6a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-yield-fill.md
@@ -0,0 +1,10 @@
+---
+title: Sign yield fill
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - intersection
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sign-yield.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-yield.md
new file mode 100644
index 000000000..af6dc307a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sign-yield.md
@@ -0,0 +1,10 @@
+---
+title: Sign yield
+categories:
+ - Transportation
+tags:
+ - road
+ - driving
+ - intersection
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/signal.md b/vendor/twbs/bootstrap-icons/docs/content/icons/signal.md
new file mode 100644
index 000000000..8a8dcb495
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/signal.md
@@ -0,0 +1,7 @@
+---
+title: Signal
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-2-fill.md
new file mode 100644
index 000000000..f067d295a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-2-fill.md
@@ -0,0 +1,11 @@
+---
+title: Signpost 2 fill
+categories:
+ - Real world
+tags:
+ - milestone
+ - sign
+ - road sign
+ - street sign
+ - directions
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-2.md
new file mode 100644
index 000000000..0cbdbf0c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-2.md
@@ -0,0 +1,11 @@
+---
+title: Signpost 2
+categories:
+ - Real world
+tags:
+ - milestone
+ - sign
+ - road sign
+ - street sign
+ - directions
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-fill.md
new file mode 100644
index 000000000..35186bade
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-fill.md
@@ -0,0 +1,11 @@
+---
+title: Signpost fill
+categories:
+ - Real world
+tags:
+ - milestone
+ - sign
+ - road sign
+ - street sign
+ - directions
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-split-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-split-fill.md
new file mode 100644
index 000000000..6ce2b9d55
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-split-fill.md
@@ -0,0 +1,11 @@
+---
+title: Signpost split fill
+categories:
+ - Real world
+tags:
+ - milestone
+ - sign
+ - road sign
+ - street sign
+ - directions
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-split.md b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-split.md
new file mode 100644
index 000000000..eafd140b2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost-split.md
@@ -0,0 +1,11 @@
+---
+title: Signpost split
+categories:
+ - Real world
+tags:
+ - milestone
+ - sign
+ - road sign
+ - street sign
+ - directions
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/signpost.md b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost.md
new file mode 100644
index 000000000..14f55e628
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/signpost.md
@@ -0,0 +1,11 @@
+---
+title: Signpost
+categories:
+ - Real world
+tags:
+ - milestone
+ - sign
+ - road sign
+ - street sign
+ - directions
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sim-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sim-fill.md
new file mode 100644
index 000000000..4c448abd8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sim-fill.md
@@ -0,0 +1,8 @@
+---
+title: Sim fill
+categories:
+ - Devices
+tags:
+ - mobile
+ - carrier
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sim-slash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sim-slash-fill.md
new file mode 100644
index 000000000..78d099d08
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sim-slash-fill.md
@@ -0,0 +1,9 @@
+---
+title: Sim slash fill
+categories:
+ - Devices
+tags:
+ - mobile
+ - carrier
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sim-slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sim-slash.md
new file mode 100644
index 000000000..712e399fa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sim-slash.md
@@ -0,0 +1,9 @@
+---
+title: Sim slash
+categories:
+ - Devices
+tags:
+ - mobile
+ - carrier
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sim.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sim.md
new file mode 100644
index 000000000..53ea49b81
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sim.md
@@ -0,0 +1,8 @@
+---
+title: Sim
+categories:
+ - Devices
+tags:
+ - mobile
+ - carrier
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sina-weibo.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sina-weibo.md
new file mode 100644
index 000000000..10f93a02b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sina-weibo.md
@@ -0,0 +1,8 @@
+---
+title: Sina Weibo
+categories:
+ - Brand
+tags:
+ - social
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-btn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-btn-fill.md
new file mode 100644
index 000000000..e6c9e4757
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-btn-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip backward btn fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-btn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-btn.md
new file mode 100644
index 000000000..1784a14e9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-btn.md
@@ -0,0 +1,9 @@
+---
+title: Skip backward btn
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-circle-fill.md
new file mode 100644
index 000000000..84e72a678
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip backward circle fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-circle.md
new file mode 100644
index 000000000..84981ceae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-circle.md
@@ -0,0 +1,9 @@
+---
+title: Skip backward circle
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-fill.md
new file mode 100644
index 000000000..feab2aca0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip backward fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward.md
new file mode 100644
index 000000000..414829593
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-backward.md
@@ -0,0 +1,9 @@
+---
+title: Skip backward
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-btn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-btn-fill.md
new file mode 100644
index 000000000..d6a1a62ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-btn-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip end btn fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-btn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-btn.md
new file mode 100644
index 000000000..9dff1d118
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-btn.md
@@ -0,0 +1,9 @@
+---
+title: Skip end btn
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-circle-fill.md
new file mode 100644
index 000000000..b19e70a15
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip end circle fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-circle.md
new file mode 100644
index 000000000..a9b6e4e30
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-circle.md
@@ -0,0 +1,9 @@
+---
+title: Skip end circle
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-fill.md
new file mode 100644
index 000000000..2fb985f6a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip end fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end.md
new file mode 100644
index 000000000..13bb03287
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-end.md
@@ -0,0 +1,9 @@
+---
+title: Skip end
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-btn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-btn-fill.md
new file mode 100644
index 000000000..d541f1ebb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-btn-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip forward btn fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-btn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-btn.md
new file mode 100644
index 000000000..6f9414194
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-btn.md
@@ -0,0 +1,9 @@
+---
+title: Skip forward btn
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-circle-fill.md
new file mode 100644
index 000000000..471147f43
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip forward circle fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-circle.md
new file mode 100644
index 000000000..3d4b93a57
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-circle.md
@@ -0,0 +1,9 @@
+---
+title: Skip forward circle
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-fill.md
new file mode 100644
index 000000000..e53e3670c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip forward fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward.md
new file mode 100644
index 000000000..b9238d0a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-forward.md
@@ -0,0 +1,9 @@
+---
+title: Skip forward
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-btn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-btn-fill.md
new file mode 100644
index 000000000..8a6f646a3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-btn-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip start btn fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-btn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-btn.md
new file mode 100644
index 000000000..9a1336835
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-btn.md
@@ -0,0 +1,9 @@
+---
+title: Skip start btn
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-circle-fill.md
new file mode 100644
index 000000000..049749693
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip start circle fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-circle.md
new file mode 100644
index 000000000..9a9aeb806
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-circle.md
@@ -0,0 +1,9 @@
+---
+title: Skip start circle
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-fill.md
new file mode 100644
index 000000000..237c78aef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start-fill.md
@@ -0,0 +1,9 @@
+---
+title: Skip start fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start.md
new file mode 100644
index 000000000..03a7a2f87
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skip-start.md
@@ -0,0 +1,9 @@
+---
+title: Skip start
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/skype.md b/vendor/twbs/bootstrap-icons/docs/content/icons/skype.md
new file mode 100644
index 000000000..5f844bc41
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/skype.md
@@ -0,0 +1,8 @@
+---
+title: Skype
+categories:
+ - Brand
+tags:
+ - social
+ - microsoft
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/slack.md b/vendor/twbs/bootstrap-icons/docs/content/icons/slack.md
new file mode 100644
index 000000000..62ce95040
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/slack.md
@@ -0,0 +1,7 @@
+---
+title: Slack
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/slash-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/slash-circle-fill.md
new file mode 100644
index 000000000..68c0816d9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/slash-circle-fill.md
@@ -0,0 +1,10 @@
+---
+title: Slash circle fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - shape
+ - stop
+ - ban
+ - no
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/slash-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/slash-circle.md
new file mode 100644
index 000000000..3233f91dc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/slash-circle.md
@@ -0,0 +1,10 @@
+---
+title: Circle slash
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - shape
+ - stop
+ - ban
+ - no
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/slash-lg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/slash-lg.md
new file mode 100644
index 000000000..cedf41684
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/slash-lg.md
@@ -0,0 +1,10 @@
+---
+title: Slash lg
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - shape
+ - stop
+ - ban
+ - no
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/slash-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/slash-square-fill.md
new file mode 100644
index 000000000..00f4a3aaf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/slash-square-fill.md
@@ -0,0 +1,10 @@
+---
+title: Slash square fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - shape
+ - stop
+ - ban
+ - no
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/slash-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/slash-square.md
new file mode 100644
index 000000000..f89efc2b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/slash-square.md
@@ -0,0 +1,10 @@
+---
+title: Slash square
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - shape
+ - stop
+ - ban
+ - no
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/slash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/slash.md
new file mode 100644
index 000000000..f78c35d1d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/slash.md
@@ -0,0 +1,10 @@
+---
+title: Slash
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - shape
+ - stop
+ - ban
+ - no
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sliders.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sliders.md
new file mode 100644
index 000000000..0d1ddece2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sliders.md
@@ -0,0 +1,10 @@
+---
+title: Sliders
+categories:
+ - Graphics
+tags:
+ - equalizer
+ - settings
+ - preferences
+ - dials
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sliders2-vertical.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sliders2-vertical.md
new file mode 100644
index 000000000..de718d71a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sliders2-vertical.md
@@ -0,0 +1,10 @@
+---
+title: Sliders2 vertical
+categories:
+ - Graphics
+tags:
+ - equalizer
+ - settings
+ - preferences
+ - dials
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sliders2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sliders2.md
new file mode 100644
index 000000000..a195d360b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sliders2.md
@@ -0,0 +1,10 @@
+---
+title: Sliders2
+categories:
+ - Graphics
+tags:
+ - equalizer
+ - settings
+ - preferences
+ - dials
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/smartwatch.md b/vendor/twbs/bootstrap-icons/docs/content/icons/smartwatch.md
new file mode 100644
index 000000000..294ac0164
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/smartwatch.md
@@ -0,0 +1,8 @@
+---
+title: Smartwatch
+categories:
+ - Devices
+tags:
+ - watch
+ - wearables
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/snapchat.md b/vendor/twbs/bootstrap-icons/docs/content/icons/snapchat.md
new file mode 100644
index 000000000..f1236f9af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/snapchat.md
@@ -0,0 +1,7 @@
+---
+title: Snapchat
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/snow.md b/vendor/twbs/bootstrap-icons/docs/content/icons/snow.md
new file mode 100644
index 000000000..3af77a3e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/snow.md
@@ -0,0 +1,8 @@
+---
+title: Snow
+categories:
+ - Weather
+tags:
+ - blizzard
+ - flurries
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/snow2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/snow2.md
new file mode 100644
index 000000000..35eb0805f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/snow2.md
@@ -0,0 +1,8 @@
+---
+title: Snow2
+categories:
+ - Weather
+tags:
+ - blizzard
+ - flurries
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/snow3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/snow3.md
new file mode 100644
index 000000000..d4178258b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/snow3.md
@@ -0,0 +1,8 @@
+---
+title: Snow3
+categories:
+ - Weather
+tags:
+ - blizzard
+ - flurries
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-down-alt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-down-alt.md
new file mode 100644
index 000000000..887501d9e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-down-alt.md
@@ -0,0 +1,9 @@
+---
+title: Sort alpha down alt
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-down.md
new file mode 100644
index 000000000..7d40426ee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-down.md
@@ -0,0 +1,9 @@
+---
+title: Sort alpha down
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-up-alt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-up-alt.md
new file mode 100644
index 000000000..8bf34b625
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-up-alt.md
@@ -0,0 +1,9 @@
+---
+title: Sort alpha up alt
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-up.md
new file mode 100644
index 000000000..1e9f46e42
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-alpha-up.md
@@ -0,0 +1,9 @@
+---
+title: Sort alpha up
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-down-alt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-down-alt.md
new file mode 100644
index 000000000..24ca9df37
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-down-alt.md
@@ -0,0 +1,9 @@
+---
+title: Sort down alt
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-down.md
new file mode 100644
index 000000000..9d78d2465
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-down.md
@@ -0,0 +1,9 @@
+---
+title: Sort down
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-down-alt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-down-alt.md
new file mode 100644
index 000000000..466d979ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-down-alt.md
@@ -0,0 +1,9 @@
+---
+title: Sort numeric down alt
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-down.md
new file mode 100644
index 000000000..f77e13f1e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-down.md
@@ -0,0 +1,9 @@
+---
+title: Sort numeric down
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-up-alt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-up-alt.md
new file mode 100644
index 000000000..403a6059d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-up-alt.md
@@ -0,0 +1,9 @@
+---
+title: Sort numeric up alt
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-up.md
new file mode 100644
index 000000000..fee8ce618
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-numeric-up.md
@@ -0,0 +1,9 @@
+---
+title: Sort numeric up
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-up-alt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-up-alt.md
new file mode 100644
index 000000000..19eb51b3a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-up-alt.md
@@ -0,0 +1,9 @@
+---
+title: Sort up alt
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sort-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-up.md
new file mode 100644
index 000000000..2d761bfc8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sort-up.md
@@ -0,0 +1,9 @@
+---
+title: Sort up
+categories:
+ - Sort and filter
+tags:
+ - sort
+ - filter
+ - organize
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/soundwave.md b/vendor/twbs/bootstrap-icons/docs/content/icons/soundwave.md
new file mode 100644
index 000000000..3dd851f9a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/soundwave.md
@@ -0,0 +1,9 @@
+---
+title: Soundwave
+categories:
+ - Media
+tags:
+ - audio
+ - sound
+ - wave
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sourceforge.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sourceforge.md
new file mode 100644
index 000000000..9569a7ea5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sourceforge.md
@@ -0,0 +1,10 @@
+---
+title: Sourceforge
+categories:
+ - Brand
+tags:
+ - social
+ - vcs
+ - git
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/speaker-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/speaker-fill.md
new file mode 100644
index 000000000..0fd2815e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/speaker-fill.md
@@ -0,0 +1,8 @@
+---
+title: Speaker fill
+categories:
+ - Devices
+tags:
+ - audio
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/speaker.md b/vendor/twbs/bootstrap-icons/docs/content/icons/speaker.md
new file mode 100644
index 000000000..b00c0cb94
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/speaker.md
@@ -0,0 +1,8 @@
+---
+title: Speaker
+categories:
+ - Devices
+tags:
+ - audio
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/speedometer.md b/vendor/twbs/bootstrap-icons/docs/content/icons/speedometer.md
new file mode 100644
index 000000000..f41942219
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/speedometer.md
@@ -0,0 +1,10 @@
+---
+title: Speedometer
+categories:
+ - Real world
+tags:
+ - speed
+ - tachometer
+ - dashboard
+ - gauge
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/speedometer2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/speedometer2.md
new file mode 100644
index 000000000..1f55d6199
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/speedometer2.md
@@ -0,0 +1,10 @@
+---
+title: Speedometer2
+categories:
+ - Real world
+tags:
+ - speed
+ - tachometer
+ - dashboard
+ - gauge
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/spellcheck.md b/vendor/twbs/bootstrap-icons/docs/content/icons/spellcheck.md
new file mode 100644
index 000000000..d8c9ec45e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/spellcheck.md
@@ -0,0 +1,8 @@
+---
+title: Spellcheck
+categories:
+ - Typography
+tags:
+ - spelling
+ - grammar
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/spotify.md b/vendor/twbs/bootstrap-icons/docs/content/icons/spotify.md
new file mode 100644
index 000000000..0eb20d3af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/spotify.md
@@ -0,0 +1,7 @@
+---
+title: Spotify
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/square-fill.md
new file mode 100644
index 000000000..3e52376f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/square-fill.md
@@ -0,0 +1,8 @@
+---
+title: Square fill
+categories:
+ - Shapes
+tags:
+ - shape
+ - rectangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/square-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/square-half.md
new file mode 100644
index 000000000..f87c4f290
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/square-half.md
@@ -0,0 +1,8 @@
+---
+title: Square half fill
+categories:
+ - Shapes
+tags:
+ - shape
+ - rectangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/square.md
new file mode 100644
index 000000000..67744d85d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/square.md
@@ -0,0 +1,8 @@
+---
+title: Square
+categories:
+ - Shapes
+tags:
+ - shape
+ - rectangle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stack-overflow.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stack-overflow.md
new file mode 100644
index 000000000..559f742eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stack-overflow.md
@@ -0,0 +1,7 @@
+---
+title: Stack overflow
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stack.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stack.md
new file mode 100644
index 000000000..7dc4984a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stack.md
@@ -0,0 +1,7 @@
+---
+title: Stack
+categories:
+ - Graphics
+tags:
+ - layers
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/star-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/star-fill.md
new file mode 100644
index 000000000..d79f70f06
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/star-fill.md
@@ -0,0 +1,9 @@
+---
+title: Star fill
+categories:
+ - Shapes
+tags:
+ - shape
+ - like
+ - favorite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/star-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/star-half.md
new file mode 100644
index 000000000..df17cdba4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/star-half.md
@@ -0,0 +1,9 @@
+---
+title: Star half fill
+categories:
+ - Shapes
+tags:
+ - shape
+ - like
+ - favorite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/star.md b/vendor/twbs/bootstrap-icons/docs/content/icons/star.md
new file mode 100644
index 000000000..16049dc78
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/star.md
@@ -0,0 +1,9 @@
+---
+title: Star
+categories:
+ - Shapes
+tags:
+ - shape
+ - like
+ - favorite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stars.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stars.md
new file mode 100644
index 000000000..42faad746
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stars.md
@@ -0,0 +1,9 @@
+---
+title: Stars
+categories:
+ - Weather
+tags:
+ - clear
+ - skies
+ - night
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/steam.md b/vendor/twbs/bootstrap-icons/docs/content/icons/steam.md
new file mode 100644
index 000000000..49140e2c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/steam.md
@@ -0,0 +1,7 @@
+---
+title: Steam
+categories:
+ - Brand
+tags:
+ - gaming
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stickies-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stickies-fill.md
new file mode 100644
index 000000000..5e5c5d561
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stickies-fill.md
@@ -0,0 +1,9 @@
+---
+title: Stickies fill
+categories:
+ - Real world
+tags:
+ - postit
+ - note
+ - sticky
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stickies.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stickies.md
new file mode 100644
index 000000000..da27ffe63
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stickies.md
@@ -0,0 +1,9 @@
+---
+title: Stickies
+categories:
+ - Real world
+tags:
+ - postit
+ - note
+ - sticky
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sticky-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sticky-fill.md
new file mode 100644
index 000000000..481ca5ce1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sticky-fill.md
@@ -0,0 +1,9 @@
+---
+title: Sticky fill
+categories:
+ - Real world
+tags:
+ - postit
+ - note
+ - sticky
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sticky.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sticky.md
new file mode 100644
index 000000000..084f8db82
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sticky.md
@@ -0,0 +1,9 @@
+---
+title: Sticky
+categories:
+ - Real world
+tags:
+ - postit
+ - note
+ - sticky
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stop-btn-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stop-btn-fill.md
new file mode 100644
index 000000000..1f03f5702
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stop-btn-fill.md
@@ -0,0 +1,9 @@
+---
+title: Stop btn fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stop-btn.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stop-btn.md
new file mode 100644
index 000000000..8fc6d707d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stop-btn.md
@@ -0,0 +1,9 @@
+---
+title: Stop btn
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stop-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stop-circle-fill.md
new file mode 100644
index 000000000..e5f7c3279
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stop-circle-fill.md
@@ -0,0 +1,9 @@
+---
+title: Stop circle fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stop-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stop-circle.md
new file mode 100644
index 000000000..ec1d32392
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stop-circle.md
@@ -0,0 +1,9 @@
+---
+title: Stop circle
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stop-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stop-fill.md
new file mode 100644
index 000000000..c0828f83f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stop-fill.md
@@ -0,0 +1,9 @@
+---
+title: Stop fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stop.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stop.md
new file mode 100644
index 000000000..a8c3396d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stop.md
@@ -0,0 +1,9 @@
+---
+title: Stop
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stoplights-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stoplights-fill.md
new file mode 100644
index 000000000..9c65349c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stoplights-fill.md
@@ -0,0 +1,9 @@
+---
+title: Stoplights fill
+categories:
+ - Real world
+tags:
+ - traffic
+ - lights
+ - intersection
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stoplights.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stoplights.md
new file mode 100644
index 000000000..f25b0aa57
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stoplights.md
@@ -0,0 +1,9 @@
+---
+title: Stoplights
+categories:
+ - Real world
+tags:
+ - traffic
+ - lights
+ - intersection
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stopwatch-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stopwatch-fill.md
new file mode 100644
index 000000000..3a94e912f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stopwatch-fill.md
@@ -0,0 +1,9 @@
+---
+title: Stopwatch fill
+categories:
+ - Devices
+tags:
+ - time
+ - timer
+ - clock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stopwatch.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stopwatch.md
new file mode 100644
index 000000000..b03e86335
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stopwatch.md
@@ -0,0 +1,9 @@
+---
+title: Stopwatch
+categories:
+ - Devices
+tags:
+ - time
+ - timer
+ - clock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/strava.md b/vendor/twbs/bootstrap-icons/docs/content/icons/strava.md
new file mode 100644
index 000000000..d8df28563
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/strava.md
@@ -0,0 +1,7 @@
+---
+title: Strava
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/stripe.md b/vendor/twbs/bootstrap-icons/docs/content/icons/stripe.md
new file mode 100644
index 000000000..af4166cb2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/stripe.md
@@ -0,0 +1,9 @@
+---
+title: Stripe
+categories:
+ - Brand
+tags:
+ - payments
+ - commerce
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/subscript.md b/vendor/twbs/bootstrap-icons/docs/content/icons/subscript.md
new file mode 100644
index 000000000..9a96c6a83
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/subscript.md
@@ -0,0 +1,9 @@
+---
+title: Subscript
+categories:
+ - Typography
+tags:
+ - text
+ - type
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/substack.md b/vendor/twbs/bootstrap-icons/docs/content/icons/substack.md
new file mode 100644
index 000000000..cfc76abdb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/substack.md
@@ -0,0 +1,9 @@
+---
+title: Substack
+categories:
+ - Brand
+tags:
+ - social
+ - blog
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/subtract.md b/vendor/twbs/bootstrap-icons/docs/content/icons/subtract.md
new file mode 100644
index 000000000..207591a26
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/subtract.md
@@ -0,0 +1,10 @@
+---
+title: Subtract
+categories:
+ - Graphics
+tags:
+ - graphics
+ - vector
+ - merge
+ - layers
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suit-club-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-club-fill.md
new file mode 100644
index 000000000..b2ade9618
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-club-fill.md
@@ -0,0 +1,11 @@
+---
+title: Suit club fill
+categories:
+ - Entertainment
+tags:
+ - card
+ - cards
+ - suit
+ - deck
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suit-club.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-club.md
new file mode 100644
index 000000000..2871ac965
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-club.md
@@ -0,0 +1,11 @@
+---
+title: Suit club
+categories:
+ - Entertainment
+tags:
+ - card
+ - cards
+ - suit
+ - deck
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suit-diamond-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-diamond-fill.md
new file mode 100644
index 000000000..5b5a2efa4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-diamond-fill.md
@@ -0,0 +1,11 @@
+---
+title: Suit diamond fill
+categories:
+ - Entertainment
+tags:
+ - card
+ - cards
+ - suit
+ - deck
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suit-diamond.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-diamond.md
new file mode 100644
index 000000000..743baf125
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-diamond.md
@@ -0,0 +1,11 @@
+---
+title: Suit diamond
+categories:
+ - Entertainment
+tags:
+ - card
+ - cards
+ - suit
+ - deck
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suit-heart-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-heart-fill.md
new file mode 100644
index 000000000..00c34a30f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-heart-fill.md
@@ -0,0 +1,11 @@
+---
+title: Suit heart fill
+categories:
+ - Entertainment
+tags:
+ - card
+ - cards
+ - suit
+ - deck
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suit-heart.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-heart.md
new file mode 100644
index 000000000..189f07300
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-heart.md
@@ -0,0 +1,11 @@
+---
+title: Suit heart
+categories:
+ - Entertainment
+tags:
+ - card
+ - cards
+ - suit
+ - deck
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suit-spade-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-spade-fill.md
new file mode 100644
index 000000000..dd158cdde
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-spade-fill.md
@@ -0,0 +1,11 @@
+---
+title: Suit spade fill
+categories:
+ - Entertainment
+tags:
+ - card
+ - cards
+ - suit
+ - deck
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suit-spade.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-spade.md
new file mode 100644
index 000000000..06e5db45f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suit-spade.md
@@ -0,0 +1,11 @@
+---
+title: Suit spade
+categories:
+ - Entertainment
+tags:
+ - card
+ - cards
+ - suit
+ - deck
+ - gambling
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-fill.md
new file mode 100644
index 000000000..94c1e7ac6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-fill.md
@@ -0,0 +1,10 @@
+---
+title: Suitcase fill
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-lg-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-lg-fill.md
new file mode 100644
index 000000000..ed3258370
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-lg-fill.md
@@ -0,0 +1,10 @@
+---
+title: Suitcase lg fill
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-lg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-lg.md
new file mode 100644
index 000000000..79da17ec0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase-lg.md
@@ -0,0 +1,10 @@
+---
+title: Suitcase lg
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase.md
new file mode 100644
index 000000000..447db4434
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase.md
@@ -0,0 +1,10 @@
+---
+title: Suitcase
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase2-fill.md
new file mode 100644
index 000000000..34629d8b2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase2-fill.md
@@ -0,0 +1,10 @@
+---
+title: Suitcase2 fill
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase2.md
new file mode 100644
index 000000000..7a1c53bcf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/suitcase2.md
@@ -0,0 +1,10 @@
+---
+title: Suitcase2
+categories:
+ - Travel
+tags:
+ - luggage
+ - bags
+ - carry-on
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sun-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sun-fill.md
new file mode 100644
index 000000000..bd9eea036
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sun-fill.md
@@ -0,0 +1,8 @@
+---
+title: Sun fill
+categories:
+ - Weather
+tags:
+ - solar
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sun.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sun.md
new file mode 100644
index 000000000..96e2f1020
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sun.md
@@ -0,0 +1,8 @@
+---
+title: Sun
+categories:
+ - Weather
+tags:
+ - solar
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sunglasses.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sunglasses.md
new file mode 100644
index 000000000..104264e53
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sunglasses.md
@@ -0,0 +1,9 @@
+---
+title: Sunglasses
+categories:
+ - Real world
+tags:
+ - shades
+ - cool
+ - aviators
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sunrise-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sunrise-fill.md
new file mode 100644
index 000000000..377951084
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sunrise-fill.md
@@ -0,0 +1,7 @@
+---
+title: Sunrise fill
+categories:
+ - Weather
+tags:
+ - dawn
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sunrise.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sunrise.md
new file mode 100644
index 000000000..05c74cb50
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sunrise.md
@@ -0,0 +1,7 @@
+---
+title: Sunrise
+categories:
+ - Weather
+tags:
+ - dawn
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sunset-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sunset-fill.md
new file mode 100644
index 000000000..162b16ad7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sunset-fill.md
@@ -0,0 +1,7 @@
+---
+title: Sunset fill
+categories:
+ - Weather
+tags:
+ - dusk
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/sunset.md b/vendor/twbs/bootstrap-icons/docs/content/icons/sunset.md
new file mode 100644
index 000000000..26ea47397
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/sunset.md
@@ -0,0 +1,7 @@
+---
+title: Sunset
+categories:
+ - Weather
+tags:
+ - dusk
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/superscript.md b/vendor/twbs/bootstrap-icons/docs/content/icons/superscript.md
new file mode 100644
index 000000000..470eb2dda
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/superscript.md
@@ -0,0 +1,9 @@
+---
+title: Superscript
+categories:
+ - Typography
+tags:
+ - text
+ - type
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/symmetry-horizontal.md b/vendor/twbs/bootstrap-icons/docs/content/icons/symmetry-horizontal.md
new file mode 100644
index 000000000..d78272edc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/symmetry-horizontal.md
@@ -0,0 +1,9 @@
+---
+title: Symmetry horizontal
+categories:
+ - Graphics
+tags:
+ - align
+ - orientation
+ - mirror
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/symmetry-vertical.md b/vendor/twbs/bootstrap-icons/docs/content/icons/symmetry-vertical.md
new file mode 100644
index 000000000..bb86c60da
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/symmetry-vertical.md
@@ -0,0 +1,9 @@
+---
+title: Symmetry vertical
+categories:
+ - Graphics
+tags:
+ - align
+ - orientation
+ - mirror
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/table.md b/vendor/twbs/bootstrap-icons/docs/content/icons/table.md
new file mode 100644
index 000000000..bcbfb2da3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/table.md
@@ -0,0 +1,7 @@
+---
+title: Table
+categories:
+ - Files and folders
+tags:
+ - spreadsheet
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tablet-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tablet-fill.md
new file mode 100644
index 000000000..241eda2a0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tablet-fill.md
@@ -0,0 +1,7 @@
+---
+title: Tablet fill
+categories:
+ - Devices
+tags:
+ - mobile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tablet-landscape-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tablet-landscape-fill.md
new file mode 100644
index 000000000..3bd09541c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tablet-landscape-fill.md
@@ -0,0 +1,7 @@
+---
+title: Tablet landscape fill
+categories:
+ - Devices
+tags:
+ - mobile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tablet-landscape.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tablet-landscape.md
new file mode 100644
index 000000000..d0d4e339f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tablet-landscape.md
@@ -0,0 +1,7 @@
+---
+title: Tablet landscape
+categories:
+ - Devices
+tags:
+ - mobile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tablet.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tablet.md
new file mode 100644
index 000000000..b78834c64
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tablet.md
@@ -0,0 +1,7 @@
+---
+title: Tablet
+categories:
+ - Devices
+tags:
+ - mobile
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tag-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tag-fill.md
new file mode 100644
index 000000000..e83dc6dcd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tag-fill.md
@@ -0,0 +1,10 @@
+---
+title: Tag fill
+categories:
+ - Real world
+tags:
+ - price
+ - category
+ - taxonomy
+ - label
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tag.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tag.md
new file mode 100644
index 000000000..7bd18bc11
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tag.md
@@ -0,0 +1,10 @@
+---
+title: Tag
+categories:
+ - Real world
+tags:
+ - price
+ - category
+ - taxonomy
+ - label
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tags-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tags-fill.md
new file mode 100644
index 000000000..3eea360df
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tags-fill.md
@@ -0,0 +1,10 @@
+---
+title: Tags fill
+categories:
+ - Real world
+tags:
+ - price
+ - category
+ - taxonomy
+ - label
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tags.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tags.md
new file mode 100644
index 000000000..69f77dcf3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tags.md
@@ -0,0 +1,10 @@
+---
+title: Tags
+categories:
+ - Real world
+tags:
+ - price
+ - category
+ - taxonomy
+ - label
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/taxi-front-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/taxi-front-fill.md
new file mode 100644
index 000000000..d7ebd5ab0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/taxi-front-fill.md
@@ -0,0 +1,10 @@
+---
+title: Taxi front fill
+categories:
+ - Transportation
+tags:
+ - cab
+ - uber
+ - lyft
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/taxi-front.md b/vendor/twbs/bootstrap-icons/docs/content/icons/taxi-front.md
new file mode 100644
index 000000000..3909e2533
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/taxi-front.md
@@ -0,0 +1,10 @@
+---
+title: Taxi front
+categories:
+ - Transportation
+tags:
+ - cab
+ - uber
+ - lyft
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telegram.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telegram.md
new file mode 100644
index 000000000..ecb274766
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telegram.md
@@ -0,0 +1,8 @@
+---
+title: Telegram
+categories:
+ - Brand
+tags:
+ - social
+ - chat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-fill.md
new file mode 100644
index 000000000..45baa45e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-fill.md
@@ -0,0 +1,9 @@
+---
+title: Telephone fill
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-forward-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-forward-fill.md
new file mode 100644
index 000000000..68c0c9ab9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-forward-fill.md
@@ -0,0 +1,9 @@
+---
+title: Telephone forward fill
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-forward.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-forward.md
new file mode 100644
index 000000000..b0817831e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-forward.md
@@ -0,0 +1,9 @@
+---
+title: Telephone forward
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-inbound-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-inbound-fill.md
new file mode 100644
index 000000000..7cb42bdf8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-inbound-fill.md
@@ -0,0 +1,9 @@
+---
+title: Telephone inbound fill
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-inbound.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-inbound.md
new file mode 100644
index 000000000..a82186f58
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-inbound.md
@@ -0,0 +1,9 @@
+---
+title: Telephone inbound
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-minus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-minus-fill.md
new file mode 100644
index 000000000..63a0ac3e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-minus-fill.md
@@ -0,0 +1,9 @@
+---
+title: Telephone minus fill
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-minus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-minus.md
new file mode 100644
index 000000000..9c61b8f1d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-minus.md
@@ -0,0 +1,9 @@
+---
+title: Telephone minus
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-outbound-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-outbound-fill.md
new file mode 100644
index 000000000..60ef51add
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-outbound-fill.md
@@ -0,0 +1,9 @@
+---
+title: Telephone outbound fill
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-outbound.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-outbound.md
new file mode 100644
index 000000000..48427b0fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-outbound.md
@@ -0,0 +1,9 @@
+---
+title: Telephone outbound
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-plus-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-plus-fill.md
new file mode 100644
index 000000000..dcf8ff28b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-plus-fill.md
@@ -0,0 +1,9 @@
+---
+title: Telephone plus fill
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-plus.md
new file mode 100644
index 000000000..377883e6a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-plus.md
@@ -0,0 +1,9 @@
+---
+title: Telephone plus
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-x-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-x-fill.md
new file mode 100644
index 000000000..e3ed4de10
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-x-fill.md
@@ -0,0 +1,9 @@
+---
+title: Telephone x fill
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-x.md
new file mode 100644
index 000000000..3cdd516c5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone-x.md
@@ -0,0 +1,9 @@
+---
+title: Telephone x
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/telephone.md b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone.md
new file mode 100644
index 000000000..e24396774
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/telephone.md
@@ -0,0 +1,9 @@
+---
+title: Telephone
+categories:
+ - Communications
+tags:
+ - telephone
+ - phone
+ - call
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tencent-qq.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tencent-qq.md
new file mode 100644
index 000000000..468d323f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tencent-qq.md
@@ -0,0 +1,8 @@
+---
+title: Tencent QQ
+categories:
+ - Brand
+tags:
+ - social
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-dash.md
new file mode 100644
index 000000000..61a830005
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-dash.md
@@ -0,0 +1,9 @@
+---
+title: Terminal dash
+categories:
+ - Apps
+tags:
+ - command-line
+ - cli
+ - command-prompt
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-fill.md
new file mode 100644
index 000000000..5da2b9856
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-fill.md
@@ -0,0 +1,9 @@
+---
+title: Terminal fill
+categories:
+ - Apps
+tags:
+ - command-line
+ - cli
+ - command-prompt
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-plus.md
new file mode 100644
index 000000000..dd7c2cbb8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-plus.md
@@ -0,0 +1,9 @@
+---
+title: Terminal plus
+categories:
+ - Apps
+tags:
+ - command-line
+ - cli
+ - command-prompt
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-split.md b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-split.md
new file mode 100644
index 000000000..24cb068a9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-split.md
@@ -0,0 +1,9 @@
+---
+title: Terminal split
+categories:
+ - Apps
+tags:
+ - command-line
+ - cli
+ - command-prompt
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-x.md
new file mode 100644
index 000000000..134829e8c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal-x.md
@@ -0,0 +1,9 @@
+---
+title: Terminal x
+categories:
+ - Apps
+tags:
+ - command-line
+ - cli
+ - command-prompt
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/terminal.md b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal.md
new file mode 100644
index 000000000..a6a3e1adb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/terminal.md
@@ -0,0 +1,9 @@
+---
+title: Terminal
+categories:
+ - Apps
+tags:
+ - command-line
+ - cli
+ - command-prompt
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/text-center.md b/vendor/twbs/bootstrap-icons/docs/content/icons/text-center.md
new file mode 100644
index 000000000..92d08a095
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/text-center.md
@@ -0,0 +1,10 @@
+---
+title: Text center
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/text-indent-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/text-indent-left.md
new file mode 100644
index 000000000..3ed7dfaf0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/text-indent-left.md
@@ -0,0 +1,10 @@
+---
+title: Text indent left
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/text-indent-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/text-indent-right.md
new file mode 100644
index 000000000..f3d7568cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/text-indent-right.md
@@ -0,0 +1,10 @@
+---
+title: Text indent right
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/text-left.md b/vendor/twbs/bootstrap-icons/docs/content/icons/text-left.md
new file mode 100644
index 000000000..30ef11c98
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/text-left.md
@@ -0,0 +1,10 @@
+---
+title: Text left
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/text-paragraph.md b/vendor/twbs/bootstrap-icons/docs/content/icons/text-paragraph.md
new file mode 100644
index 000000000..30017d09d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/text-paragraph.md
@@ -0,0 +1,10 @@
+---
+title: Text paragraph
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - paragraph
+ - copy
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/text-right.md b/vendor/twbs/bootstrap-icons/docs/content/icons/text-right.md
new file mode 100644
index 000000000..341ed7bd9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/text-right.md
@@ -0,0 +1,10 @@
+---
+title: Text right
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - justify
+ - alignment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/text-wrap.md b/vendor/twbs/bootstrap-icons/docs/content/icons/text-wrap.md
new file mode 100644
index 000000000..7d88cd766
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/text-wrap.md
@@ -0,0 +1,10 @@
+---
+title: Text wrap
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - "word wrap"
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/textarea-resize.md b/vendor/twbs/bootstrap-icons/docs/content/icons/textarea-resize.md
new file mode 100644
index 000000000..1a888cab4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/textarea-resize.md
@@ -0,0 +1,8 @@
+---
+title: Textarea resize
+categories:
+ - Graphics
+tags:
+ - text
+ - form
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/textarea-t.md b/vendor/twbs/bootstrap-icons/docs/content/icons/textarea-t.md
new file mode 100644
index 000000000..4eff3fa82
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/textarea-t.md
@@ -0,0 +1,9 @@
+---
+title: Textarea t
+categories:
+ - Graphics
+tags:
+ - text
+ - insert
+ - bounding-box
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/textarea.md b/vendor/twbs/bootstrap-icons/docs/content/icons/textarea.md
new file mode 100644
index 000000000..7ff5fb352
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/textarea.md
@@ -0,0 +1,9 @@
+---
+title: Textarea
+categories:
+ - Graphics
+tags:
+ - text
+ - insert
+ - bounding-box
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-half.md
new file mode 100644
index 000000000..61179c337
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-half.md
@@ -0,0 +1,8 @@
+---
+title: Thermometer half
+categories:
+ - Weather
+tags:
+ - temperature
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-high.md b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-high.md
new file mode 100644
index 000000000..42155bd0e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-high.md
@@ -0,0 +1,8 @@
+---
+title: Thermometer high
+categories:
+ - Weather
+tags:
+ - temperature
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-low.md b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-low.md
new file mode 100644
index 000000000..7f294df2f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-low.md
@@ -0,0 +1,8 @@
+---
+title: Thermometer low
+categories:
+ - Weather
+tags:
+ - temperature
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-snow.md b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-snow.md
new file mode 100644
index 000000000..9bbf371de
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-snow.md
@@ -0,0 +1,8 @@
+---
+title: Thermometer snow
+categories:
+ - Weather
+tags:
+ - temperature
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-sun.md b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-sun.md
new file mode 100644
index 000000000..dd89bcb7a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer-sun.md
@@ -0,0 +1,8 @@
+---
+title: Thermometer sun
+categories:
+ - Weather
+tags:
+ - temperature
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer.md b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer.md
new file mode 100644
index 000000000..c2f58deaa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/thermometer.md
@@ -0,0 +1,8 @@
+---
+title: Thermometer
+categories:
+ - Real world
+tags:
+ - temperature
+ - weather
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/threads-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/threads-fill.md
new file mode 100644
index 000000000..92d9719e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/threads-fill.md
@@ -0,0 +1,11 @@
+---
+title: Threads fill
+categories:
+ - Brand
+tags:
+ - social
+ - chat
+ - instagram
+ - meta
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/threads.md b/vendor/twbs/bootstrap-icons/docs/content/icons/threads.md
new file mode 100644
index 000000000..5027319bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/threads.md
@@ -0,0 +1,11 @@
+---
+title: Threads
+categories:
+ - Brand
+tags:
+ - social
+ - chat
+ - instagram
+ - meta
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/three-dots-vertical.md b/vendor/twbs/bootstrap-icons/docs/content/icons/three-dots-vertical.md
new file mode 100644
index 000000000..37f622367
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/three-dots-vertical.md
@@ -0,0 +1,11 @@
+---
+title: Three dots vertical
+categories:
+ - Controls
+tags:
+ - kebab
+ - more
+ - ellipsis
+ - overflow
+ - menu
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/three-dots.md b/vendor/twbs/bootstrap-icons/docs/content/icons/three-dots.md
new file mode 100644
index 000000000..70f55a690
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/three-dots.md
@@ -0,0 +1,11 @@
+---
+title: Three dots
+categories:
+ - Controls
+tags:
+ - meatballs
+ - more
+ - ellipsis
+ - overflow
+ - menu
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/thunderbolt-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/thunderbolt-fill.md
new file mode 100644
index 000000000..5a6783d34
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/thunderbolt-fill.md
@@ -0,0 +1,8 @@
+---
+title: Thunderbolt fill
+categories:
+ - Devices
+tags:
+ - plug
+ - port
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/thunderbolt.md b/vendor/twbs/bootstrap-icons/docs/content/icons/thunderbolt.md
new file mode 100644
index 000000000..523be9e47
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/thunderbolt.md
@@ -0,0 +1,8 @@
+---
+title: Thunderbolt
+categories:
+ - Devices
+tags:
+ - plug
+ - port
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-detailed-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-detailed-fill.md
new file mode 100644
index 000000000..489e078f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-detailed-fill.md
@@ -0,0 +1,8 @@
+---
+title: Ticket detailed fill
+categories:
+ - Real World
+tags:
+ - tickets
+ - admission
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-detailed.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-detailed.md
new file mode 100644
index 000000000..069e14d3d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-detailed.md
@@ -0,0 +1,8 @@
+---
+title: Ticket detailed
+categories:
+ - Real World
+tags:
+ - tickets
+ - admission
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-fill.md
new file mode 100644
index 000000000..6af659c29
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-fill.md
@@ -0,0 +1,8 @@
+---
+title: Ticket fill
+categories:
+ - Real World
+tags:
+ - tickets
+ - admission
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-perforated-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-perforated-fill.md
new file mode 100644
index 000000000..b42665480
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-perforated-fill.md
@@ -0,0 +1,8 @@
+---
+title: Ticket perforated fill
+categories:
+ - Real World
+tags:
+ - tickets
+ - admission
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-perforated.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-perforated.md
new file mode 100644
index 000000000..52cf67466
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket-perforated.md
@@ -0,0 +1,8 @@
+---
+title: Ticket perforated
+categories:
+ - Real World
+tags:
+ - tickets
+ - admission
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ticket.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket.md
new file mode 100644
index 000000000..5725f9a6b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ticket.md
@@ -0,0 +1,8 @@
+---
+title: Ticket
+categories:
+ - Real World
+tags:
+ - tickets
+ - admission
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tiktok.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tiktok.md
new file mode 100644
index 000000000..34dd0c905
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tiktok.md
@@ -0,0 +1,7 @@
+---
+title: Tiktok
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/toggle-off.md b/vendor/twbs/bootstrap-icons/docs/content/icons/toggle-off.md
new file mode 100644
index 000000000..7ec36d72b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/toggle-off.md
@@ -0,0 +1,9 @@
+---
+title: Toggle off
+categories:
+ - Controls
+tags:
+ - toggle
+ - switch
+ - checkbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/toggle-on.md b/vendor/twbs/bootstrap-icons/docs/content/icons/toggle-on.md
new file mode 100644
index 000000000..f9a8c793a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/toggle-on.md
@@ -0,0 +1,9 @@
+---
+title: Toggle on
+categories:
+ - Controls
+tags:
+ - toggle
+ - switch
+ - checkbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/toggle2-off.md b/vendor/twbs/bootstrap-icons/docs/content/icons/toggle2-off.md
new file mode 100644
index 000000000..d4ce85063
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/toggle2-off.md
@@ -0,0 +1,9 @@
+---
+title: Toggle2 off
+categories:
+ - Controls
+tags:
+ - toggle
+ - switch
+ - checkbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/toggle2-on.md b/vendor/twbs/bootstrap-icons/docs/content/icons/toggle2-on.md
new file mode 100644
index 000000000..435a9d3fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/toggle2-on.md
@@ -0,0 +1,9 @@
+---
+title: Toggle2 on
+categories:
+ - Controls
+tags:
+ - toggle
+ - switch
+ - checkbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/toggles.md b/vendor/twbs/bootstrap-icons/docs/content/icons/toggles.md
new file mode 100644
index 000000000..3272d420d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/toggles.md
@@ -0,0 +1,9 @@
+---
+title: Toggles
+categories:
+ - Controls
+tags:
+ - toggle
+ - switch
+ - checkbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/toggles2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/toggles2.md
new file mode 100644
index 000000000..bb2f95008
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/toggles2.md
@@ -0,0 +1,9 @@
+---
+title: Toggles2
+categories:
+ - Controls
+tags:
+ - toggle
+ - switch
+ - checkbox
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tools.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tools.md
new file mode 100644
index 000000000..fd4746175
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tools.md
@@ -0,0 +1,9 @@
+---
+title: Tools
+categories:
+ - Tools
+tags:
+ - tool
+ - wrench
+ - screwdriver
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tornado.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tornado.md
new file mode 100644
index 000000000..3a6ffd9ea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tornado.md
@@ -0,0 +1,7 @@
+---
+title: Tornado
+categories:
+ - Weather
+tags:
+ - wind
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/train-freight-front-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/train-freight-front-fill.md
new file mode 100644
index 000000000..8629feb06
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/train-freight-front-fill.md
@@ -0,0 +1,9 @@
+---
+title: Train freight front fill
+categories:
+ - Transportation
+tags:
+ - transit
+ - public
+ - rail
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/train-freight-front.md b/vendor/twbs/bootstrap-icons/docs/content/icons/train-freight-front.md
new file mode 100644
index 000000000..43c4d6230
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/train-freight-front.md
@@ -0,0 +1,9 @@
+---
+title: Train freight front
+categories:
+ - Transportation
+tags:
+ - transit
+ - public
+ - rail
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/train-front-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/train-front-fill.md
new file mode 100644
index 000000000..ec075af05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/train-front-fill.md
@@ -0,0 +1,9 @@
+---
+title: Train front fill
+categories:
+ - Transportation
+tags:
+ - transit
+ - public
+ - rail
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/train-front.md b/vendor/twbs/bootstrap-icons/docs/content/icons/train-front.md
new file mode 100644
index 000000000..2bee14e0e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/train-front.md
@@ -0,0 +1,9 @@
+---
+title: Train front
+categories:
+ - Transportation
+tags:
+ - transit
+ - public
+ - rail
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/train-lightrail-front-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/train-lightrail-front-fill.md
new file mode 100644
index 000000000..b42496f64
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/train-lightrail-front-fill.md
@@ -0,0 +1,9 @@
+---
+title: Train lightrail front fill
+categories:
+ - Transportation
+tags:
+ - transit
+ - public
+ - rail
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/train-lightrail-front.md b/vendor/twbs/bootstrap-icons/docs/content/icons/train-lightrail-front.md
new file mode 100644
index 000000000..7a1c544a6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/train-lightrail-front.md
@@ -0,0 +1,9 @@
+---
+title: Train lightrail front
+categories:
+ - Transportation
+tags:
+ - transit
+ - public
+ - rail
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/translate.md b/vendor/twbs/bootstrap-icons/docs/content/icons/translate.md
new file mode 100644
index 000000000..e2264e612
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/translate.md
@@ -0,0 +1,9 @@
+---
+title: Translate
+categories:
+ - Communications
+tags:
+ - translation
+ - languages
+ - language
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/transparency.md b/vendor/twbs/bootstrap-icons/docs/content/icons/transparency.md
new file mode 100644
index 000000000..0e3f9a316
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/transparency.md
@@ -0,0 +1,11 @@
+---
+title: Transparency
+categories:
+ - Graphics
+tags:
+ - photo
+ - editing
+ - image
+ - picture
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/trash-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/trash-fill.md
new file mode 100644
index 000000000..a745b8bc9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/trash-fill.md
@@ -0,0 +1,10 @@
+---
+title: Trash fill
+categories:
+ - UI and keyboard
+tags:
+ - trash-can
+ - garbage
+ - delete
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/trash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/trash.md
new file mode 100644
index 000000000..3563feb1a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/trash.md
@@ -0,0 +1,10 @@
+---
+title: Trash
+categories:
+ - UI and keyboard
+tags:
+ - trash-can
+ - garbage
+ - delete
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/trash2-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/trash2-fill.md
new file mode 100644
index 000000000..2a4ddeaa8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/trash2-fill.md
@@ -0,0 +1,10 @@
+---
+title: Trash2 fill
+categories:
+ - UI and keyboard
+tags:
+ - trash-can
+ - garbage
+ - delete
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/trash2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/trash2.md
new file mode 100644
index 000000000..ebd0ace1f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/trash2.md
@@ -0,0 +1,10 @@
+---
+title: Trash2
+categories:
+ - UI and keyboard
+tags:
+ - trash-can
+ - garbage
+ - delete
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/trash3-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/trash3-fill.md
new file mode 100644
index 000000000..27161bc99
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/trash3-fill.md
@@ -0,0 +1,10 @@
+---
+title: Trash3 fill
+categories:
+ - UI and keyboard
+tags:
+ - trash-can
+ - garbage
+ - delete
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/trash3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/trash3.md
new file mode 100644
index 000000000..971517798
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/trash3.md
@@ -0,0 +1,10 @@
+---
+title: Trash3
+categories:
+ - UI and keyboard
+tags:
+ - trash-can
+ - garbage
+ - delete
+ - remove
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tree-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tree-fill.md
new file mode 100644
index 000000000..4db433a81
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tree-fill.md
@@ -0,0 +1,8 @@
+---
+title: Tree fill
+categories:
+ - Real world
+tags:
+ - tree
+ - forrest
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tree.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tree.md
new file mode 100644
index 000000000..8ed6bedac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tree.md
@@ -0,0 +1,8 @@
+---
+title: Tree
+categories:
+ - Real world
+tags:
+ - tree
+ - forrest
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/trello.md b/vendor/twbs/bootstrap-icons/docs/content/icons/trello.md
new file mode 100644
index 000000000..682895317
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/trello.md
@@ -0,0 +1,9 @@
+---
+title: Trello
+categories:
+ - Brand
+tags:
+ - kanban
+ - board
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/triangle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/triangle-fill.md
new file mode 100644
index 000000000..945485dba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/triangle-fill.md
@@ -0,0 +1,7 @@
+---
+title: Triangle fill
+categories:
+ - Shapes
+tags:
+ - shape
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/triangle-half.md b/vendor/twbs/bootstrap-icons/docs/content/icons/triangle-half.md
new file mode 100644
index 000000000..edf1b646f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/triangle-half.md
@@ -0,0 +1,7 @@
+---
+title: Triangle half fill
+categories:
+ - Shapes
+tags:
+ - shape
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/triangle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/triangle.md
new file mode 100644
index 000000000..7fbafe412
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/triangle.md
@@ -0,0 +1,7 @@
+---
+title: Triangle
+categories:
+ - Shapes
+tags:
+ - shape
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/trophy-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/trophy-fill.md
new file mode 100644
index 000000000..c0b2e1750
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/trophy-fill.md
@@ -0,0 +1,8 @@
+---
+title: Trophy fill
+categories:
+ - Real world
+tags:
+ - prize
+ - winning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/trophy.md b/vendor/twbs/bootstrap-icons/docs/content/icons/trophy.md
new file mode 100644
index 000000000..761f181e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/trophy.md
@@ -0,0 +1,8 @@
+---
+title: Trophy
+categories:
+ - Real world
+tags:
+ - prize
+ - winning
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tropical-storm.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tropical-storm.md
new file mode 100644
index 000000000..f260fd202
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tropical-storm.md
@@ -0,0 +1,7 @@
+---
+title: Tropical storm
+categories:
+ - Weather
+tags:
+ - hurricane
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/truck-flatbed.md b/vendor/twbs/bootstrap-icons/docs/content/icons/truck-flatbed.md
new file mode 100644
index 000000000..cd6d1b58c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/truck-flatbed.md
@@ -0,0 +1,13 @@
+---
+title: Truck flatbed
+categories:
+ - Commerce
+tags:
+ - trucking
+ - shipping
+ - shipment
+ - transport
+ - deliver
+ - delivery
+ - vehicle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/truck-front-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/truck-front-fill.md
new file mode 100644
index 000000000..de856fac0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/truck-front-fill.md
@@ -0,0 +1,11 @@
+---
+title: Truck front fill
+categories:
+ - Transportation
+tags:
+ - vehicle
+ - shipping
+ - transit
+ - haul
+ - freight
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/truck-front.md b/vendor/twbs/bootstrap-icons/docs/content/icons/truck-front.md
new file mode 100644
index 000000000..b89a67510
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/truck-front.md
@@ -0,0 +1,11 @@
+---
+title: Truck front
+categories:
+ - Transportation
+tags:
+ - vehicle
+ - shipping
+ - transit
+ - haul
+ - freight
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/truck.md b/vendor/twbs/bootstrap-icons/docs/content/icons/truck.md
new file mode 100644
index 000000000..fa573bbe2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/truck.md
@@ -0,0 +1,13 @@
+---
+title: Truck
+categories:
+ - Commerce
+tags:
+ - trucking
+ - shipping
+ - shipment
+ - transport
+ - deliver
+ - delivery
+ - vehicle
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tsunami.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tsunami.md
new file mode 100644
index 000000000..5cd25a1a4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tsunami.md
@@ -0,0 +1,7 @@
+---
+title: Tsunami
+categories:
+ - Weather
+tags:
+ - wave
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tv-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tv-fill.md
new file mode 100644
index 000000000..6ffa7c3a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tv-fill.md
@@ -0,0 +1,9 @@
+---
+title: TV fill
+categories:
+ - Devices
+tags:
+ - television
+ - monitor
+ - display
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/tv.md b/vendor/twbs/bootstrap-icons/docs/content/icons/tv.md
new file mode 100644
index 000000000..ff8e0979e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/tv.md
@@ -0,0 +1,9 @@
+---
+title: TV
+categories:
+ - Devices
+tags:
+ - television
+ - monitor
+ - display
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/twitch.md b/vendor/twbs/bootstrap-icons/docs/content/icons/twitch.md
new file mode 100644
index 000000000..32a68e729
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/twitch.md
@@ -0,0 +1,7 @@
+---
+title: Twitch
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/twitter-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/twitter-x.md
new file mode 100644
index 000000000..fad9e292a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/twitter-x.md
@@ -0,0 +1,9 @@
+---
+title: Twitter X
+categories:
+ - Brand
+tags:
+ - social
+ - chat
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/twitter.md b/vendor/twbs/bootstrap-icons/docs/content/icons/twitter.md
new file mode 100644
index 000000000..ab4b2e108
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/twitter.md
@@ -0,0 +1,8 @@
+---
+title: Twitter
+categories:
+ - Brand
+tags:
+ - social
+ - chat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/type-bold.md b/vendor/twbs/bootstrap-icons/docs/content/icons/type-bold.md
new file mode 100644
index 000000000..a7c6ae7b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/type-bold.md
@@ -0,0 +1,8 @@
+---
+title: Type bold
+categories:
+ - Typography
+tags:
+ - text
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/type-h1.md b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h1.md
new file mode 100644
index 000000000..331664e63
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h1.md
@@ -0,0 +1,9 @@
+---
+title: Type H1
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - heading
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/type-h2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h2.md
new file mode 100644
index 000000000..23a236a17
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h2.md
@@ -0,0 +1,9 @@
+---
+title: Type H2
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - heading
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/type-h3.md b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h3.md
new file mode 100644
index 000000000..56d01c16a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h3.md
@@ -0,0 +1,9 @@
+---
+title: Type H3
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - heading
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/type-h4.md b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h4.md
new file mode 100644
index 000000000..1b589fec1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h4.md
@@ -0,0 +1,10 @@
+---
+title: Type h4
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - heading
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/type-h5.md b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h5.md
new file mode 100644
index 000000000..a341c2b45
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h5.md
@@ -0,0 +1,10 @@
+---
+title: Type h5
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - heading
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/type-h6.md b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h6.md
new file mode 100644
index 000000000..fe5cd7fac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/type-h6.md
@@ -0,0 +1,10 @@
+---
+title: Type h6
+categories:
+ - Typography
+tags:
+ - text
+ - type
+ - heading
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/type-italic.md b/vendor/twbs/bootstrap-icons/docs/content/icons/type-italic.md
new file mode 100644
index 000000000..d03c3dc83
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/type-italic.md
@@ -0,0 +1,8 @@
+---
+title: Type italic
+categories:
+ - Typography
+tags:
+ - text
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/type-strikethrough.md b/vendor/twbs/bootstrap-icons/docs/content/icons/type-strikethrough.md
new file mode 100644
index 000000000..5130bd81c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/type-strikethrough.md
@@ -0,0 +1,8 @@
+---
+title: Type strikethrough
+categories:
+ - Typography
+tags:
+ - text
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/type-underline.md b/vendor/twbs/bootstrap-icons/docs/content/icons/type-underline.md
new file mode 100644
index 000000000..1b284795f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/type-underline.md
@@ -0,0 +1,8 @@
+---
+title: Type underline
+categories:
+ - Typography
+tags:
+ - text
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/type.md b/vendor/twbs/bootstrap-icons/docs/content/icons/type.md
new file mode 100644
index 000000000..cd450649a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/type.md
@@ -0,0 +1,8 @@
+---
+title: Type
+categories:
+ - Typography
+tags:
+ - text
+ - type
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ubuntu.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ubuntu.md
new file mode 100644
index 000000000..2b0adf636
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ubuntu.md
@@ -0,0 +1,8 @@
+---
+title: Ubuntu
+categories:
+ - Brand
+tags:
+ - linux
+ - distro
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ui-checks-grid.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ui-checks-grid.md
new file mode 100644
index 000000000..06537624b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ui-checks-grid.md
@@ -0,0 +1,8 @@
+---
+title: UI checks grid
+categories:
+ - Controls
+tags:
+ - checkbox
+ - form
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ui-checks.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ui-checks.md
new file mode 100644
index 000000000..316f4099b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ui-checks.md
@@ -0,0 +1,8 @@
+---
+title: UI checks
+categories:
+ - Controls
+tags:
+ - checkbox
+ - form
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ui-radios-grid.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ui-radios-grid.md
new file mode 100644
index 000000000..6a555c49a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ui-radios-grid.md
@@ -0,0 +1,8 @@
+---
+title: UI radios grid
+categories:
+ - Controls
+tags:
+ - radio
+ - form
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/ui-radios.md b/vendor/twbs/bootstrap-icons/docs/content/icons/ui-radios.md
new file mode 100644
index 000000000..66f50802e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/ui-radios.md
@@ -0,0 +1,8 @@
+---
+title: Ui radios
+categories:
+ - Controls
+tags:
+ - radio
+ - form
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/umbrella-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/umbrella-fill.md
new file mode 100644
index 000000000..9f80cbd7a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/umbrella-fill.md
@@ -0,0 +1,7 @@
+---
+title: Umbrella fill
+categories:
+ - Weather
+tags:
+ - rain
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/umbrella.md b/vendor/twbs/bootstrap-icons/docs/content/icons/umbrella.md
new file mode 100644
index 000000000..5bcd004da
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/umbrella.md
@@ -0,0 +1,7 @@
+---
+title: Umbrella
+categories:
+ - Weather
+tags:
+ - rain
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/unindent.md b/vendor/twbs/bootstrap-icons/docs/content/icons/unindent.md
new file mode 100644
index 000000000..09b31c443
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/unindent.md
@@ -0,0 +1,8 @@
+---
+title: Unindent
+categories:
+ - UI and Keyboard
+tags:
+ - tab
+ - indent
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/union.md b/vendor/twbs/bootstrap-icons/docs/content/icons/union.md
new file mode 100644
index 000000000..27bd8e97b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/union.md
@@ -0,0 +1,10 @@
+---
+title: Union
+categories:
+ - Graphics
+tags:
+ - graphics
+ - vector
+ - merge
+ - layers
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/unity.md b/vendor/twbs/bootstrap-icons/docs/content/icons/unity.md
new file mode 100644
index 000000000..6e29ffee5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/unity.md
@@ -0,0 +1,7 @@
+---
+title: Unity
+categories:
+ - Brand
+tags:
+ - gaming
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/universal-access-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/universal-access-circle.md
new file mode 100644
index 000000000..d16980740
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/universal-access-circle.md
@@ -0,0 +1,8 @@
+---
+title: Universal access circle
+categories:
+ - UI and Keyboard
+tags:
+ - accessibility
+ - a11y
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/universal-access.md b/vendor/twbs/bootstrap-icons/docs/content/icons/universal-access.md
new file mode 100644
index 000000000..8077da9b0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/universal-access.md
@@ -0,0 +1,8 @@
+---
+title: Universal Access
+categories:
+ - UI and Keyboard
+tags:
+ - accessibility
+ - a11y
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/unlock-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/unlock-fill.md
new file mode 100644
index 000000000..188cdba55
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/unlock-fill.md
@@ -0,0 +1,8 @@
+---
+title: Unlock fill
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/unlock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/unlock.md
new file mode 100644
index 000000000..c35ae194b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/unlock.md
@@ -0,0 +1,8 @@
+---
+title: Unlock
+categories:
+ - Security
+tags:
+ - privacy
+ - security
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/upc-scan.md b/vendor/twbs/bootstrap-icons/docs/content/icons/upc-scan.md
new file mode 100644
index 000000000..c5395f460
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/upc-scan.md
@@ -0,0 +1,8 @@
+---
+title: Upc scan
+categories:
+ - Commerce
+tags:
+ - purchase
+ - barcode
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/upc.md b/vendor/twbs/bootstrap-icons/docs/content/icons/upc.md
new file mode 100644
index 000000000..06df97973
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/upc.md
@@ -0,0 +1,8 @@
+---
+title: Upc
+categories:
+ - Commerce
+tags:
+ - purchase
+ - barcode
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/upload.md b/vendor/twbs/bootstrap-icons/docs/content/icons/upload.md
new file mode 100644
index 000000000..a69da1466
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/upload.md
@@ -0,0 +1,8 @@
+---
+title: Upload
+categories:
+ - Miscellaneous
+tags:
+ - arrow
+ - network
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-c-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-c-fill.md
new file mode 100644
index 000000000..a33690f89
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-c-fill.md
@@ -0,0 +1,8 @@
+---
+title: USB C fill
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-c.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-c.md
new file mode 100644
index 000000000..5f2d20763
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-c.md
@@ -0,0 +1,8 @@
+---
+title: USB C
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-drive-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-drive-fill.md
new file mode 100644
index 000000000..da1261d86
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-drive-fill.md
@@ -0,0 +1,7 @@
+---
+title: USB drive fill
+categories:
+ - Devices
+tags:
+ - thumb-drive
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-drive.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-drive.md
new file mode 100644
index 000000000..7cc714d05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-drive.md
@@ -0,0 +1,7 @@
+---
+title: USB drive
+categories:
+ - Devices
+tags:
+ - thumb-drive
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-fill.md
new file mode 100644
index 000000000..5b1fdd500
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-fill.md
@@ -0,0 +1,8 @@
+---
+title: USB fill
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-micro-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-micro-fill.md
new file mode 100644
index 000000000..9eed632f4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-micro-fill.md
@@ -0,0 +1,8 @@
+---
+title: USB micro fill
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-micro.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-micro.md
new file mode 100644
index 000000000..a95150ac3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-micro.md
@@ -0,0 +1,8 @@
+---
+title: USB micro
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-mini-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-mini-fill.md
new file mode 100644
index 000000000..e4382eb2e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-mini-fill.md
@@ -0,0 +1,8 @@
+---
+title: USB mini fill
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-mini.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-mini.md
new file mode 100644
index 000000000..d294c1e62
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-mini.md
@@ -0,0 +1,8 @@
+---
+title: USB mini
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-plug-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-plug-fill.md
new file mode 100644
index 000000000..3e95360a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-plug-fill.md
@@ -0,0 +1,8 @@
+---
+title: USB plug fill
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-plug.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-plug.md
new file mode 100644
index 000000000..a50e6e01b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-plug.md
@@ -0,0 +1,8 @@
+---
+title: USB plug
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb-symbol.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-symbol.md
new file mode 100644
index 000000000..6df31105e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb-symbol.md
@@ -0,0 +1,8 @@
+---
+title: USB symbol
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/usb.md b/vendor/twbs/bootstrap-icons/docs/content/icons/usb.md
new file mode 100644
index 000000000..289ab8c69
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/usb.md
@@ -0,0 +1,8 @@
+---
+title: USB
+categories:
+ - Devices
+tags:
+ - port
+ - plug
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/valentine.md b/vendor/twbs/bootstrap-icons/docs/content/icons/valentine.md
new file mode 100644
index 000000000..9861e2894
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/valentine.md
@@ -0,0 +1,9 @@
+---
+title: Valentine
+categories:
+ - Love
+tags:
+ - love
+ - romance
+ - valentine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/valentine2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/valentine2.md
new file mode 100644
index 000000000..3f036d093
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/valentine2.md
@@ -0,0 +1,9 @@
+---
+title: Valentine2
+categories:
+ - Love
+tags:
+ - love
+ - romance
+ - valentine
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/vector-pen.md b/vendor/twbs/bootstrap-icons/docs/content/icons/vector-pen.md
new file mode 100644
index 000000000..903da4160
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/vector-pen.md
@@ -0,0 +1,9 @@
+---
+title: Vector pen
+categories:
+ - Graphics
+tags:
+ - graphics
+ - vector
+ - pen
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/view-list.md b/vendor/twbs/bootstrap-icons/docs/content/icons/view-list.md
new file mode 100644
index 000000000..84e8370a9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/view-list.md
@@ -0,0 +1,8 @@
+---
+title: View list
+categories:
+ - UI and keyboard
+tags:
+ - view
+ - rearrange
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/view-stacked.md b/vendor/twbs/bootstrap-icons/docs/content/icons/view-stacked.md
new file mode 100644
index 000000000..cc8410b03
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/view-stacked.md
@@ -0,0 +1,8 @@
+---
+title: View stacked
+categories:
+ - UI and keyboard
+tags:
+ - view
+ - rearrange
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/vignette.md b/vendor/twbs/bootstrap-icons/docs/content/icons/vignette.md
new file mode 100644
index 000000000..4c64392c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/vignette.md
@@ -0,0 +1,11 @@
+---
+title: Vignette
+categories:
+ - Graphics
+tags:
+ - photo
+ - editing
+ - image
+ - picture
+added: 1.11.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/vimeo.md b/vendor/twbs/bootstrap-icons/docs/content/icons/vimeo.md
new file mode 100644
index 000000000..0075947b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/vimeo.md
@@ -0,0 +1,7 @@
+---
+title: Vimeo
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/vinyl-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/vinyl-fill.md
new file mode 100644
index 000000000..547061e08
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/vinyl-fill.md
@@ -0,0 +1,9 @@
+---
+title: Vinyl fill
+categories:
+ - Media
+tags:
+ - audio
+ - music
+ - record
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/vinyl.md b/vendor/twbs/bootstrap-icons/docs/content/icons/vinyl.md
new file mode 100644
index 000000000..7aa46d6c1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/vinyl.md
@@ -0,0 +1,9 @@
+---
+title: Vinyl
+categories:
+ - Media
+tags:
+ - audio
+ - music
+ - record
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/virus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/virus.md
new file mode 100644
index 000000000..59271121e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/virus.md
@@ -0,0 +1,8 @@
+---
+title: Virus
+categories:
+ - Medical
+tags:
+ - covid
+ - viral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/virus2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/virus2.md
new file mode 100644
index 000000000..52fc8c60e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/virus2.md
@@ -0,0 +1,8 @@
+---
+title: Virus2
+categories:
+ - Medical
+tags:
+ - covid
+ - viral
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/voicemail.md b/vendor/twbs/bootstrap-icons/docs/content/icons/voicemail.md
new file mode 100644
index 000000000..4c50205ea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/voicemail.md
@@ -0,0 +1,9 @@
+---
+title: Voicemail
+categories:
+ - Communications
+tags:
+ - voicemail
+ - message
+ - telephone
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/volume-down-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-down-fill.md
new file mode 100644
index 000000000..01cb4987b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-down-fill.md
@@ -0,0 +1,10 @@
+---
+title: Volume down fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/volume-down.md b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-down.md
new file mode 100644
index 000000000..9ea04c617
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-down.md
@@ -0,0 +1,10 @@
+---
+title: Volume down
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/volume-mute-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-mute-fill.md
new file mode 100644
index 000000000..cdf3fbf46
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-mute-fill.md
@@ -0,0 +1,10 @@
+---
+title: Volume mute fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/volume-mute.md b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-mute.md
new file mode 100644
index 000000000..f015cf0f2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-mute.md
@@ -0,0 +1,10 @@
+---
+title: Volume mute
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/volume-off-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-off-fill.md
new file mode 100644
index 000000000..c884a58b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-off-fill.md
@@ -0,0 +1,10 @@
+---
+title: Volume off fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/volume-off.md b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-off.md
new file mode 100644
index 000000000..afbc6cebe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-off.md
@@ -0,0 +1,10 @@
+---
+title: Volume off
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/volume-up-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-up-fill.md
new file mode 100644
index 000000000..7cadf5890
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-up-fill.md
@@ -0,0 +1,10 @@
+---
+title: Volume up fill
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/volume-up.md b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-up.md
new file mode 100644
index 000000000..e1b31b7e2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/volume-up.md
@@ -0,0 +1,10 @@
+---
+title: Volume up
+categories:
+ - Media
+tags:
+ - audio
+ - video
+ - av
+ - sound
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/vr.md b/vendor/twbs/bootstrap-icons/docs/content/icons/vr.md
new file mode 100644
index 000000000..e135234f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/vr.md
@@ -0,0 +1,8 @@
+---
+title: VR
+categories:
+ - Typography
+tags:
+ - divider
+ - vertical-rule
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wallet-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wallet-fill.md
new file mode 100644
index 000000000..ff2be8b5f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wallet-fill.md
@@ -0,0 +1,11 @@
+---
+title: Wallet fill
+categories:
+ - Commerce
+tags:
+ - cards
+ - money
+ - funds
+ - cash
+ - payment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wallet.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wallet.md
new file mode 100644
index 000000000..094640094
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wallet.md
@@ -0,0 +1,11 @@
+---
+title: Wallet
+categories:
+ - Commerce
+tags:
+ - cards
+ - money
+ - funds
+ - cash
+ - payment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wallet2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wallet2.md
new file mode 100644
index 000000000..f7939606b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wallet2.md
@@ -0,0 +1,11 @@
+---
+title: Wallet2
+categories:
+ - Commerce
+tags:
+ - cards
+ - money
+ - funds
+ - cash
+ - payment
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/watch.md b/vendor/twbs/bootstrap-icons/docs/content/icons/watch.md
new file mode 100644
index 000000000..809c0b872
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/watch.md
@@ -0,0 +1,8 @@
+---
+title: Watch
+categories:
+ - Devices
+tags:
+ - wearables
+ - clock
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/water.md b/vendor/twbs/bootstrap-icons/docs/content/icons/water.md
new file mode 100644
index 000000000..0a3bfef6c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/water.md
@@ -0,0 +1,8 @@
+---
+title: Water
+categories:
+ - Weather
+tags:
+ - waves
+ - levels
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/webcam-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/webcam-fill.md
new file mode 100644
index 000000000..b6bf83564
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/webcam-fill.md
@@ -0,0 +1,8 @@
+---
+title: Webcam fill
+categories:
+ - Devices
+tags:
+ - camera
+ - video
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/webcam.md b/vendor/twbs/bootstrap-icons/docs/content/icons/webcam.md
new file mode 100644
index 000000000..e42f55a6e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/webcam.md
@@ -0,0 +1,8 @@
+---
+title: Webcam
+categories:
+ - Devices
+tags:
+ - camera
+ - video
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wechat.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wechat.md
new file mode 100644
index 000000000..e973ae1f9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wechat.md
@@ -0,0 +1,8 @@
+---
+title: Wechat
+categories:
+ - Brand
+tags:
+ - social
+ - messaging
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/whatsapp.md b/vendor/twbs/bootstrap-icons/docs/content/icons/whatsapp.md
new file mode 100644
index 000000000..be086fe06
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/whatsapp.md
@@ -0,0 +1,9 @@
+---
+title: Whatsapp
+categories:
+ - Brand
+tags:
+ - social
+ - facebook
+ - chat
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wifi-1.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wifi-1.md
new file mode 100644
index 000000000..c00ec1899
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wifi-1.md
@@ -0,0 +1,9 @@
+---
+title: Wifi 1
+categories:
+ - Communications
+tags:
+ - internet
+ - network
+ - wireless
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wifi-2.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wifi-2.md
new file mode 100644
index 000000000..290200b72
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wifi-2.md
@@ -0,0 +1,9 @@
+---
+title: Wifi 2
+categories:
+ - Communications
+tags:
+ - internet
+ - network
+ - wireless
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wifi-off.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wifi-off.md
new file mode 100644
index 000000000..f6027578e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wifi-off.md
@@ -0,0 +1,9 @@
+---
+title: Wifi off
+categories:
+ - Communications
+tags:
+ - internet
+ - network
+ - wireless
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wifi.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wifi.md
new file mode 100644
index 000000000..7a63fb8b9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wifi.md
@@ -0,0 +1,9 @@
+---
+title: Wifi
+categories:
+ - Communications
+tags:
+ - internet
+ - network
+ - wireless
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wikipedia.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wikipedia.md
new file mode 100644
index 000000000..a826f9366
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wikipedia.md
@@ -0,0 +1,8 @@
+---
+title: Wikipedia
+categories:
+ - Brand
+tags:
+ - encyclopedia
+added: 1.10.0
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wind.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wind.md
new file mode 100644
index 000000000..0429bf590
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wind.md
@@ -0,0 +1,8 @@
+---
+title: Wind
+categories:
+ - Weather
+tags:
+ - windy
+ - breeze
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/window-dash.md b/vendor/twbs/bootstrap-icons/docs/content/icons/window-dash.md
new file mode 100644
index 000000000..f2eeccecf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/window-dash.md
@@ -0,0 +1,9 @@
+---
+title: Window dash
+categories:
+ - Apps
+tags:
+ - application
+ - desktop
+ - app
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/window-desktop.md b/vendor/twbs/bootstrap-icons/docs/content/icons/window-desktop.md
new file mode 100644
index 000000000..a911a2ec5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/window-desktop.md
@@ -0,0 +1,9 @@
+---
+title: Window desktop
+categories:
+ - Apps
+tags:
+ - application
+ - desktop
+ - app
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/window-dock.md b/vendor/twbs/bootstrap-icons/docs/content/icons/window-dock.md
new file mode 100644
index 000000000..6518f04e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/window-dock.md
@@ -0,0 +1,9 @@
+---
+title: Window dock
+categories:
+ - Apps
+tags:
+ - application
+ - desktop
+ - os
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/window-fullscreen.md b/vendor/twbs/bootstrap-icons/docs/content/icons/window-fullscreen.md
new file mode 100644
index 000000000..85fc06483
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/window-fullscreen.md
@@ -0,0 +1,9 @@
+---
+title: Window fullscreen
+categories:
+ - Apps
+tags:
+ - application
+ - desktop
+ - app
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/window-plus.md b/vendor/twbs/bootstrap-icons/docs/content/icons/window-plus.md
new file mode 100644
index 000000000..58bde78d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/window-plus.md
@@ -0,0 +1,9 @@
+---
+title: Window plus
+categories:
+ - Apps
+tags:
+ - application
+ - desktop
+ - app
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/window-sidebar.md b/vendor/twbs/bootstrap-icons/docs/content/icons/window-sidebar.md
new file mode 100644
index 000000000..d6470a1dd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/window-sidebar.md
@@ -0,0 +1,8 @@
+---
+title: Window sidebar
+categories:
+ - Apps
+tags:
+ - application
+ - desktop
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/window-split.md b/vendor/twbs/bootstrap-icons/docs/content/icons/window-split.md
new file mode 100644
index 000000000..fb35aee29
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/window-split.md
@@ -0,0 +1,9 @@
+---
+title: Window split
+categories:
+ - Apps
+tags:
+ - application
+ - desktop
+ - app
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/window-stack.md b/vendor/twbs/bootstrap-icons/docs/content/icons/window-stack.md
new file mode 100644
index 000000000..1b26a00f9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/window-stack.md
@@ -0,0 +1,10 @@
+---
+title: Window stack
+categories:
+ - Apps
+tags:
+ - application
+ - desktop
+ - app
+ - windows
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/window-x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/window-x.md
new file mode 100644
index 000000000..87e76759d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/window-x.md
@@ -0,0 +1,9 @@
+---
+title: Window x
+categories:
+ - Apps
+tags:
+ - application
+ - desktop
+ - app
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/window.md b/vendor/twbs/bootstrap-icons/docs/content/icons/window.md
new file mode 100644
index 000000000..e6a8e869c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/window.md
@@ -0,0 +1,8 @@
+---
+title: Window
+categories:
+ - Layout
+tags:
+ - app
+ - application
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/windows.md b/vendor/twbs/bootstrap-icons/docs/content/icons/windows.md
new file mode 100644
index 000000000..850d39f76
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/windows.md
@@ -0,0 +1,9 @@
+---
+title: Windows
+categories:
+ - Brand
+tags:
+ - microsoft
+ - msft
+ - windows
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wordpress.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wordpress.md
new file mode 100644
index 000000000..9d42ed2ea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wordpress.md
@@ -0,0 +1,7 @@
+---
+title: Wordpress
+categories:
+ - Brand
+tags:
+ - social
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable-circle-fill.md
new file mode 100644
index 000000000..54f4d14e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable-circle-fill.md
@@ -0,0 +1,7 @@
+---
+title: Wrench adjustable circle fill
+categories:
+ - Tools
+tags:
+ - tool
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable-circle.md
new file mode 100644
index 000000000..b044d3df7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable-circle.md
@@ -0,0 +1,7 @@
+---
+title: Wrench adjustable circle
+categories:
+ - Tools
+tags:
+ - tool
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable.md
new file mode 100644
index 000000000..bd631c676
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wrench-adjustable.md
@@ -0,0 +1,7 @@
+---
+title: Wrench adjustable
+categories:
+ - Tools
+tags:
+ - tool
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/wrench.md b/vendor/twbs/bootstrap-icons/docs/content/icons/wrench.md
new file mode 100644
index 000000000..83334392c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/wrench.md
@@ -0,0 +1,7 @@
+---
+title: Wrench
+categories:
+ - Tools
+tags:
+ - tool
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/x-circle-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/x-circle-fill.md
new file mode 100644
index 000000000..bde11b180
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/x-circle-fill.md
@@ -0,0 +1,14 @@
+---
+title: X circle fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - x
+ - delete
+ - remove
+ - reset
+ - clear
+ - cancel
+ - close
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/x-circle.md b/vendor/twbs/bootstrap-icons/docs/content/icons/x-circle.md
new file mode 100644
index 000000000..38706160e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/x-circle.md
@@ -0,0 +1,14 @@
+---
+title: X circle
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - x
+ - delete
+ - remove
+ - reset
+ - clear
+ - cancel
+ - close
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/x-diamond-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/x-diamond-fill.md
new file mode 100644
index 000000000..2fcf71381
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/x-diamond-fill.md
@@ -0,0 +1,13 @@
+---
+title: X diamond fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - x
+ - delete
+ - reset
+ - clear
+ - cancel
+ - close
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/x-diamond.md b/vendor/twbs/bootstrap-icons/docs/content/icons/x-diamond.md
new file mode 100644
index 000000000..d30a4421b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/x-diamond.md
@@ -0,0 +1,13 @@
+---
+title: X diamond
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - x
+ - delete
+ - reset
+ - clear
+ - cancel
+ - close
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/x-lg.md b/vendor/twbs/bootstrap-icons/docs/content/icons/x-lg.md
new file mode 100644
index 000000000..1b4fc2ebc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/x-lg.md
@@ -0,0 +1,14 @@
+---
+title: X lg
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - x
+ - delete
+ - remove
+ - reset
+ - clear
+ - cancel
+ - close
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/x-octagon-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/x-octagon-fill.md
new file mode 100644
index 000000000..25e66270f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/x-octagon-fill.md
@@ -0,0 +1,14 @@
+---
+title: X octagon fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - x
+ - delete
+ - remove
+ - reset
+ - clear
+ - cancel
+ - close
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/x-octagon.md b/vendor/twbs/bootstrap-icons/docs/content/icons/x-octagon.md
new file mode 100644
index 000000000..5907478b0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/x-octagon.md
@@ -0,0 +1,14 @@
+---
+title: X octagon
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - x
+ - delete
+ - remove
+ - reset
+ - clear
+ - cancel
+ - close
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/x-square-fill.md b/vendor/twbs/bootstrap-icons/docs/content/icons/x-square-fill.md
new file mode 100644
index 000000000..9ed89d74e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/x-square-fill.md
@@ -0,0 +1,14 @@
+---
+title: X square fill
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - x
+ - delete
+ - remove
+ - reset
+ - clear
+ - cancel
+ - close
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/x-square.md b/vendor/twbs/bootstrap-icons/docs/content/icons/x-square.md
new file mode 100644
index 000000000..3f34711a0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/x-square.md
@@ -0,0 +1,14 @@
+---
+title: X square
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - x
+ - delete
+ - remove
+ - reset
+ - clear
+ - cancel
+ - close
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/x.md b/vendor/twbs/bootstrap-icons/docs/content/icons/x.md
new file mode 100644
index 000000000..5588153f4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/x.md
@@ -0,0 +1,14 @@
+---
+title: X
+categories:
+ - Alerts, warnings, and signs
+tags:
+ - x
+ - delete
+ - remove
+ - reset
+ - clear
+ - cancel
+ - close
+ - exit
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/xbox.md b/vendor/twbs/bootstrap-icons/docs/content/icons/xbox.md
new file mode 100644
index 000000000..bbb4323ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/xbox.md
@@ -0,0 +1,8 @@
+---
+title: Xbox
+categories:
+ - Brand
+tags:
+ - microsoft
+ - gaming
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/yelp.md b/vendor/twbs/bootstrap-icons/docs/content/icons/yelp.md
new file mode 100644
index 000000000..f2b42e607
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/yelp.md
@@ -0,0 +1,8 @@
+---
+title: Yelp
+categories:
+ - Brand
+tags:
+ - social
+ - reviews
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/yin-yang.md b/vendor/twbs/bootstrap-icons/docs/content/icons/yin-yang.md
new file mode 100644
index 000000000..78bd0003b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/yin-yang.md
@@ -0,0 +1,7 @@
+---
+title: Yin yang
+categories:
+ - Real World
+tags:
+ - peace
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/youtube.md b/vendor/twbs/bootstrap-icons/docs/content/icons/youtube.md
new file mode 100644
index 000000000..f7a0c1e24
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/youtube.md
@@ -0,0 +1,9 @@
+---
+title: Youtube
+categories:
+ - Brand
+tags:
+ - social
+ - video
+ - google
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/zoom-in.md b/vendor/twbs/bootstrap-icons/docs/content/icons/zoom-in.md
new file mode 100644
index 000000000..a8d46ef69
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/zoom-in.md
@@ -0,0 +1,8 @@
+---
+title: Zoom in
+categories:
+ - Graphics
+tags:
+ - magnify
+ - scale
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/icons/zoom-out.md b/vendor/twbs/bootstrap-icons/docs/content/icons/zoom-out.md
new file mode 100644
index 000000000..4d7b77b22
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/icons/zoom-out.md
@@ -0,0 +1,8 @@
+---
+title: Zoom out
+categories:
+ - Graphics
+tags:
+ - minify
+ - scale
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/content/sprite.md b/vendor/twbs/bootstrap-icons/docs/content/sprite.md
new file mode 100644
index 000000000..f50012064
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/content/sprite.md
@@ -0,0 +1,5 @@
+---
+title: Icon Sprite
+description: Use Bootstrap Icons as an SVG sprite, built from our SVGs and easily customized with CSS.
+layout: sprite
+---
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/_default/404.html b/vendor/twbs/bootstrap-icons/docs/layouts/_default/404.html
new file mode 100644
index 000000000..7da3f1459
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/_default/404.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ {{ partial "head" . }}
+ </head>
+ <body class="d-flex flex-column min-vh-100">
+ {{ partialCached "skippy" . }}
+ {{ partialCached "navbar" . }}
+
+ <main class="my-auto p-5" id="content">
+ {{ .Content }}
+ </main>
+
+ {{- partialCached "scripts" . "default" }}
+ </body>
+</html>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/_default/sprite.html b/vendor/twbs/bootstrap-icons/docs/layouts/_default/sprite.html
new file mode 100644
index 000000000..fdb772fcb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/_default/sprite.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ {{ partial "head" . }}
+ </head>
+ <body id="icons-body" class="text-center">
+ {{ partialCached "skippy" . }}
+ {{ partialCached "navbar" . }}
+
+ <main class="container-xxl bd-gutter" id="content">
+ <nav aria-label="breadcrumb">
+ <ol class="breadcrumb my-4 p-0">
+ <li class="breadcrumb-item"><a href="/">Icons</a></li>
+ <li class="breadcrumb-item active" aria-current="page">SVG Sprite</li>
+ </ol>
+ </nav>
+ {{ partialCached "icons" . "fonts" }}
+
+ {{ .Content }}
+ </main>
+
+ {{- partialCached "footer" . }}
+ {{- partialCached "scripts" . "fonts" }}
+ </body>
+</html>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/alias.html b/vendor/twbs/bootstrap-icons/docs/layouts/alias.html
new file mode 100644
index 000000000..4c4b4d87d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/alias.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>{{ .Permalink }}</title>
+ <link rel="canonical" href="{{ .Permalink }}">
+ <meta name="robots" content="noindex">
+ <meta http-equiv="refresh" content="0; url={{ .Permalink }}">
+ </head>
+</html>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/icons/list.html b/vendor/twbs/bootstrap-icons/docs/layouts/icons/list.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/icons/list.html
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/icons/single.html b/vendor/twbs/bootstrap-icons/docs/layouts/icons/single.html
new file mode 100644
index 000000000..0d791da88
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/icons/single.html
@@ -0,0 +1,154 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ {{ partial "head" . }}
+ </head>
+ <body id="icons-body">
+ {{ partialCached "skippy" . }}
+ {{ partialCached "navbar" . }}
+
+ <main class="container icon-examples" id="content">
+ <nav aria-label="breadcrumb">
+ <ol class="breadcrumb my-4 p-0">
+ <li class="breadcrumb-item"><a href="/">Icons</a></li>
+ <li class="breadcrumb-item active" aria-current="page">{{ .Title }}</li>
+ </ol>
+ </nav>
+
+ <div class="row align-items-md-center">
+ <div class="col-md-6 col-lg-8">
+ <h1>{{ .Title }}</h1>
+
+ {{ if or .Params.tags .Params.categories -}}
+ <ul class="list-unstyled mb-3 mb-md-0">
+ {{ with .Params.tags }}<li><strong>Tags:</strong> {{ delimit . ", " }}</li>{{ end }}
+ {{ with .Params.categories }}<li><strong>Category:</strong> {{ delimit . ", " }}</li>{{ end }}
+ </ul>
+ {{- end }}
+ </div>
+ <div class="col-md-6 col-lg-4">
+ {{ partialCached "ads" . }}
+ </div>
+ </div>
+
+ <hr class="my-4">
+
+ {{- $localSvgPath := printf "/icons/%s.svg" .File.TranslationBaseName -}}
+ {{- $svgPath := path.Join "/assets/" $localSvgPath -}}
+ {{- $svgHtml := readFile $localSvgPath | chomp | safeHTML -}}
+
+ <div class="row gx-lg-5">
+ <div class="col-lg-8 mb-4">
+ <div class="icon-demo mb-4 border rounded-3 d-flex align-items-center justify-content-center p-3 py-6" style="font-size: 10em" role="img" aria-label="{{ .Title }} - large preview">
+ {{ $svgHtml }}
+ </div>
+
+ <h2>Examples</h2>
+ <div class="p-3 p-md-4 border rounded-3 icon-demo-examples">
+ <div class="fs-2 mb-3">
+ {{ $svgHtml }}
+ Heading
+ </div>
+ <div class="fs-4 mb-3">
+ {{ $svgHtml }}
+ Smaller heading
+ </div>
+ <p>
+ Inline text {{ $svgHtml }}
+ </p>
+ <p>
+ <a href="#" class="text-decoration-none">
+ Example link text
+ {{ $svgHtml }}
+ </a>
+ </p>
+ <div class="d-flex gap-2 mb-3">
+ <button type="button" class="btn btn-primary">
+ {{ $svgHtml }}
+ Button
+ </button>
+ <button type="button" class="btn btn-success">
+ {{ $svgHtml }}
+ Button
+ </button>
+ <button type="button" class="btn btn-outline-danger">
+ {{ $svgHtml }}
+ Button
+ </button>
+ </div>
+ <div class="d-flex gap-2 mb-3">
+ <button type="button" class="btn btn-secondary">
+ {{ $svgHtml }}
+ </button>
+ <div class="btn-group">
+ <button type="button" class="btn btn-outline-secondary">
+ {{ $svgHtml }}
+ <span class="visually-hidden">Button</span>
+ </button>
+ <button type="button" class="btn btn-outline-secondary">
+ {{ $svgHtml }}
+ <span class="visually-hidden">Button</span>
+ </button>
+ <button type="button" class="btn btn-outline-secondary">
+ {{ $svgHtml }}
+ <span class="visually-hidden">Button</span>
+ </button>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <div class="input-group">
+ <span class="input-group-text" id="basic-addon1">
+ {{ $svgHtml }}
+ </span>
+ <input type="text" class="form-control" placeholder="Input group example" aria-label="Input group example" aria-describedby="basic-addon1">
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-4 mb-4">
+ <h2 class="fs-3">Download</h2>
+ <p>Download the SVG to use or edit.</p>
+ <a href="{{ $svgPath }}" class="btn btn-bd-primary mb-4" download>Download SVG</a>
+
+ <h2 class="fs-3">Icon font</h2>
+ <p>Using the web font? Copy, paste, and go.</p>
+
+ <div class="mb-4">
+ {{ $iconFontSnippet := printf `<i class="bi bi-%s"></i>` .File.TranslationBaseName -}}
+ {{- highlight $iconFontSnippet "html" "" }}
+ </div>
+
+ <h2 class="fs-3">Code point</h2>
+ <div class="mb-4">
+ {{ $codepoints := getJSON "font/bootstrap-icons.json" -}}
+ {{ $hexCodepoint := printf "%X" (int (index $codepoints .File.TranslationBaseName)) }}
+ <ul class="list-unstyled">
+ <li>
+ Unicode: <code>U+{{- $hexCodepoint}}</code>
+ </li>
+ <li>
+ CSS: <code>\{{- $hexCodepoint}}</code>
+ </li>
+ <li>
+ JS: <code>\u{{- $hexCodepoint}}</code>
+ </li>
+ <li>
+ HTML: <code>&amp;#x{{- $hexCodepoint}};</code>
+ </li>
+ </ul>
+ </div>
+
+ <h2 class="fs-3">Copy HTML</h2>
+ <p>Paste the SVG right into your project's code.</p>
+
+ <div id="copy-error-callout" class="alert alert-info d-none" role="alert"></div>
+
+ {{ highlight $svgHtml "html" "" }}
+ </div>
+ </div>
+ </main>
+
+ {{- partialCached "footer" . }}
+ {{- partialCached "scripts" . "default" }}
+ </body>
+</html>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/ads.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/ads.html
new file mode 100644
index 000000000..5bfebe8bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/ads.html
@@ -0,0 +1 @@
+<script async src="https://cdn.carbonads.com/carbon.js?serve=CE7D4277&placement=iconsgetbootstrapcom" id="_carbonads_js"></script>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/analytics.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/analytics.html
new file mode 100644
index 000000000..3881ae896
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/analytics.html
@@ -0,0 +1,8 @@
+<script defer src="https://cdn.usefathom.com/script.js" data-site="ITUSEYJG"></script>
+<script>
+ window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
+ ga('create', 'UA-146052-10', 'getbootstrap.com');
+ ga('set', 'anonymizeIp', true);
+ ga('send', 'pageview');
+</script>
+<script async src="https://www.google-analytics.com/analytics.js"></script>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/favicons.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/favicons.html
new file mode 100644
index 000000000..520b61a12
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/favicons.html
@@ -0,0 +1,8 @@
+{{ "<!-- Favicons -->" | safeHTML }}
+<link rel="apple-touch-icon" href="/assets/img/favicons/apple-touch-icon.png" sizes="180x180">
+<link rel="icon" href="/assets/img/favicons/favicon-32x32.png" sizes="32x32" type="image/png">
+<link rel="icon" href="/assets/img/favicons/favicon-16x16.png" sizes="16x16" type="image/png">
+<link rel="manifest" href="/assets/img/favicons/manifest.json">
+<link rel="mask-icon" href="/assets/img/favicons/safari-pinned-tab.svg" color="#712cf9">
+<link rel="icon" href="/assets/img/favicons/favicon.ico">
+<meta name="theme-color" content="#712cf9">
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/footer.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/footer.html
new file mode 100644
index 000000000..e340df5b1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/footer.html
@@ -0,0 +1,58 @@
+<footer class="bd-footer py-4 py-md-5 mt-5 bg-body-tertiary">
+ <div class="container py-4 py-md-5 px-4 px-md-3 text-body-secondary">
+ <div class="row">
+ <div class="col-lg-3 mb-3">
+ <a class="d-inline-flex align-items-center mb-2 text-body-secondary text-decoration-none" href="/" aria-label="Bootstrap">
+ {{ partial "icons/bootstrap-white-fill.svg" (dict "class" "d-block me-2" "width" "40" "height" "32") }}
+ <span class="fs-5">Bootstrap</span>
+ </a>
+ <ul class="list-unstyled small">
+ <li class="mb-2">Designed and built with all the love in the world by the <a href="{{ .Site.Params.main }}/docs/{{ .Site.Params.docs_version }}/about/team/">Bootstrap team</a> with the help of <a href="{{ .Site.Params.repo }}/graphs/contributors">our contributors</a>.</li>
+ <li class="mb-2">Code licensed <a href="{{ .Site.Params.repo }}/blob/main/LICENSE" target="_blank" rel="license noopener">MIT</a>, docs <a href="https://creativecommons.org/licenses/by/3.0/" target="_blank" rel="license noopener">CC BY 3.0</a>.</li>
+ </ul>
+ </div>
+ <div class="col-6 col-lg-2 offset-lg-1 mb-3">
+ <h5>Links</h5>
+ <ul class="list-unstyled">
+ <li class="mb-2"><a href="{{ .Site.Params.main }}/">Home</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.main }}/docs/{{ .Site.Params.docs_version }}/">Docs</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.main }}/docs/{{ .Site.Params.docs_version }}/examples/">Examples</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.icons }}">Icons</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.themes }}">Themes</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.blog }}">Blog</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.swag }}">Swag Store</a></li>
+ </ul>
+ </div>
+ <div class="col-6 col-lg-2 mb-3">
+ <h5>Guides</h5>
+ <ul class="list-unstyled">
+ <li class="mb-2"><a href="{{ .Site.Params.main }}/docs/{{ .Site.Params.docs_version }}/getting-started/">Getting started</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.main }}/docs/{{ .Site.Params.docs_version }}/examples/starter-template/">Starter template</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.main }}/docs/{{ .Site.Params.docs_version }}/getting-started/webpack/">Webpack</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.main }}/docs/{{ .Site.Params.docs_version }}/getting-started/parcel/">Parcel</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.main }}/docs/{{ .Site.Params.docs_version }}/getting-started/vite/">Vite</a></li>
+ </ul>
+ </div>
+ <div class="col-6 col-lg-2 mb-3">
+ <h5>Projects</h5>
+ <ul class="list-unstyled">
+ <li class="mb-2"><a href="{{ .Site.Params.github_org }}/bootstrap">Bootstrap 5</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.github_org }}/bootstrap/tree/v4-dev">Bootstrap 4</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.github_org }}/icons">Icons</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.github_org }}/rfs">RFS</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.github_org }}/bootstrap-npm-starter">npm starter</a></li>
+ </ul>
+ </div>
+ <div class="col-6 col-lg-2 mb-3">
+ <h5>Community</h5>
+ <ul class="list-unstyled">
+ <li class="mb-2"><a href="{{ .Site.Params.github_org }}/bootstrap/issues">Issues</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.github_org }}/bootstrap/discussions">Discussions</a></li>
+ <li class="mb-2"><a href="https://github.com/sponsors/twbs">Corporate sponsors</a></li>
+ <li class="mb-2"><a href="{{ .Site.Params.opencollective }}">Open Collective</a></li>
+ <li class="mb-2"><a href="https://stackoverflow.com/questions/tagged/bootstrap-5">Stack Overflow</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+</footer>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/head.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/head.html
new file mode 100644
index 000000000..a718d128e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/head.html
@@ -0,0 +1,15 @@
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>{{ if .IsHome }}{{ .Site.Title | markdownify }} · {{ .Site.Params.description | markdownify }}{{ else }}{{ .Title | markdownify }} · {{ .Site.Title | markdownify }}{{ end }}</title>
+<meta name="description" content="{{ .Page.Params.description | default .Site.Params.description | markdownify }}">
+<meta name="generator" content="Hugo {{ hugo.Version }}">
+
+<link rel="canonical" href="{{ .Permalink }}">
+
+{{- $colorModeJS := resources.Get "js/color-modes.js" | resources.Copy "/assets/js/color-modes.js" -}}
+<script src="{{ $colorModeJS.Permalink | relURL }}"></script>
+
+{{ partialCached "stylesheet" . }}
+{{ partialCached "favicons" . }}
+{{ partial "social" . }}
+{{ partialCached "analytics" . }}
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/home/hero.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/home/hero.html
new file mode 100644
index 000000000..b6848f89e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/home/hero.html
@@ -0,0 +1,51 @@
+<div class="hero py-5 text-center text-lg-start">
+ <div class="container-xxl bd-gutter">
+ <div class="row flex-lg-row-reverse">
+ <div class="col-6 mx-auto col-lg-5 mx-lg-0">
+ <img srcset="/assets/img/icons-hero.png, /assets/img/icons-hero@2x.png 2x"
+ src="/assets/img/icons-hero.png"
+ class="img-fluid my-3 mx-auto"
+ alt="Bootstrap Icons" width="450" height="340">
+ </div>
+ <div class="col-lg-7">
+ <a class="d-block d-sm-inline-block py-1 px-3 mb-4 text-decoration-none rounded-3 hero-notice" href="{{ .Site.Params.blog }}/2023/09/12/bootstrap-icons-1-11-0/">
+ <strong>New in v1.11.0:</strong> 100 new icons!
+ </a>
+ <h1 class="f0">Bootstrap Icons</h1>
+ <p class="mb-4 f3 font-weight-normal">Free, high quality, open source icon library with over 2,000 icons. Include them anyway you like—SVGs, SVG sprite, or web fonts. Use them with or without <a href="{{ .Site.Params.main }}/">Bootstrap</a> in any project.</p>
+
+ <div class="d-flex flex-column flex-md-row align-items-stretch justify-content-center justify-content-md-start mb-5 fs-5">
+ <div class="fs-5 d-inline-block mb-3 me-md-3 mb-md-0">
+ {{ highlight "npm i bootstrap-icons" "sh" "" }}
+ </div>
+ <a class="btn btn-lg btn-figma d-flex align-items-center justify-content-center" href="{{ .Site.Params.icons_figma }}" target="_blank" rel="noopener">
+ {{ partial "icons/figma.svg" (dict "class" "me-2" "width" "18" "height" "24") }}
+ Open in Figma
+ </a>
+ </div>
+
+ {{ partialCached "ads" . }}
+
+ <hr class="mx-auto mx-lg-0 my-5">
+
+ <p class="text-muted">
+ Currently <a href="{{ .Site.Params.icons_repo }}/releases/tag/v{{ .Site.Params.version }}">v{{ .Site.Params.version }}</a>
+ <span class="px-1">&#8226;</span>
+ <a href="#icons">Icons</a>
+ <span class="px-1">&#8226;</span>
+ <a href="/sprite/">Icon Sprite</a>
+ <span class="px-1">&#8226;</span>
+ <a href="#install">Install</a>
+ <span class="px-1">&#8226;</span>
+ <a href="#usage">Usage</a>
+ <span class="px-1">&#8226;</span>
+ <a href="#styling">Styling</a>
+ <span class="px-1">&#8226;</span>
+ <a href="#accessibility">Accessibility</a>
+ <span class="px-1">&#8226;</span>
+ <a href="{{ .Site.Params.icons_repo }}">GitHub repo</a>
+ </p>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons.html
new file mode 100644
index 000000000..6f69a3294
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons.html
@@ -0,0 +1,30 @@
+<div class="my-5">
+ <div class="d-flex mb-4">
+ <h2 id="icons" class="mb-0">Icons</h2>
+ <form class="subnav-search d-flex flex-nowrap ms-auto">
+ <label for="search" class="visually-hidden">Search for icons</label>
+ <input class="form-control search mb-0" id="search" type="search" placeholder="Start typing to filter..." autocomplete="off">
+ </form>
+ </div>
+ <ul id="icons-list" class="row row-cols-3 row-cols-sm-4 row-cols-lg-6 row-cols-xl-8 list-unstyled list">
+ {{ range (where .Site.RegularPages "Type" "icons") -}}
+ {{- $filename := .File.TranslationBaseName -}}
+ {{- with .Site.GetPage .File.Path }}
+ <li class="col mb-4" data-name="{{ $filename }}"{{ with .Params.tags }} data-tags="{{ delimit . " " }}"{{ end }}{{ with .Params.categories }} data-categories="{{ delimit . " " | lower }}"{{ end }}>
+ <a class="d-block text-body-emphasis text-decoration-none" href="{{ .RelPermalink }}">
+ <div class="px-3 py-4 mb-2 bg-body-secondary text-center rounded">
+ {{ if $.IsHome -}}
+ <i class="bi bi-{{ $filename }}"></i>
+ {{- else -}}
+ <svg class="bi" width="1em" height="1em" fill="currentColor">
+ <use xlink:href="../bootstrap-icons.svg#{{ $filename }}"/>
+ </svg>
+ {{- end }}
+ </div>
+ <div class="name text-muted text-decoration-none text-center pt-1">{{ $filename }}</div>
+ </a>
+ </li>
+ {{- end }}
+ {{- end }}
+ </ul>
+</div>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/bootstrap-white-fill.svg b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/bootstrap-white-fill.svg
new file mode 100644
index 000000000..af4bc7fcf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/bootstrap-white-fill.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"{{ with .width }} width="{{ . }}"{{ end }}{{ with .height }} height="{{ . }}"{{ end }}{{ with .class }} class="{{ . }}"{{ end }} viewBox="0 0 118 94" role="img"><title>{{ with .title }}{{ . }}{{ else }}Bootstrap{{ end }}</title><path fill-rule="evenodd" clip-rule="evenodd" d="M24.509 0c-6.733 0-11.715 5.893-11.492 12.284.214 6.14-.064 14.092-2.066 20.577C8.943 39.365 5.547 43.485 0 44.014v5.972c5.547.529 8.943 4.649 10.951 11.153 2.002 6.485 2.28 14.437 2.066 20.577C12.794 88.106 17.776 94 24.51 94H93.5c6.733 0 11.714-5.893 11.491-12.284-.214-6.14.064-14.092 2.066-20.577 2.009-6.504 5.396-10.624 10.943-11.153v-5.972c-5.547-.529-8.934-4.649-10.943-11.153-2.002-6.484-2.28-14.437-2.066-20.577C105.214 5.894 100.233 0 93.5 0H24.508zM80 57.863C80 66.663 73.436 72 62.543 72H44a2 2 0 01-2-2V24a2 2 0 012-2h18.437c9.083 0 15.044 4.92 15.044 12.474 0 5.302-4.01 10.049-9.119 10.88v.277C75.317 46.394 80 51.21 80 57.863zM60.521 28.34H49.948v14.934h8.905c6.884 0 10.68-2.772 10.68-7.727 0-4.643-3.264-7.207-9.012-7.207zM49.948 49.2v16.458H60.91c7.167 0 10.964-2.876 10.964-8.281 0-5.406-3.903-8.178-11.425-8.178H49.948z" fill="currentColor"/></svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/figma.svg b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/figma.svg
new file mode 100644
index 000000000..2d22b215d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/figma.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg"{{ with .width }} width="{{ . }}"{{ end }}{{ with .height }} height="{{ . }}"{{ end }}{{ with .class }} class="{{ . }}"{{ end }} viewBox="0 0 288 432" role="img">
+ <rect width="95.0226" height="142.534" fill="black" fill-opacity="0" transform="translate(1.46603 2.19946) scale(3)"/>
+ <path d="M144 216C144 176.641 175.907 144.733 215.267 144.733V144.733C254.626 144.733 286.534 176.641 286.534 216V216C286.534 255.36 254.626 287.267 215.267 287.267V287.267C175.907 287.267 144 255.36 144 216V216Z" fill="#1ABCFE"/>
+ <path d="M1.46603 358.534C1.46603 319.175 33.3733 287.267 72.733 287.267H144V358.534C144 397.894 112.093 429.801 72.733 429.801V429.801C33.3733 429.801 1.46603 397.894 1.46603 358.534V358.534Z" fill="#0ACF83"/>
+ <path d="M144 2.19946V144.733H215.267C254.627 144.733 286.534 112.826 286.534 73.4664V73.4664C286.534 34.1068 254.627 2.19946 215.267 2.19946L144 2.19946Z" fill="#FF7262"/>
+ <path d="M1.46603 73.4664C1.46603 112.826 33.3733 144.733 72.733 144.733L144 144.733L144 2.19941L72.733 2.19941C33.3733 2.19941 1.46603 34.1067 1.46603 73.4664V73.4664Z" fill="#F24E1E"/>
+ <path d="M1.46603 216C1.46603 255.36 33.3733 287.267 72.733 287.267H144L144 144.733L72.733 144.733C33.3733 144.733 1.46603 176.641 1.46603 216V216Z" fill="#A259FF"/>
+</svg>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/github.svg b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/github.svg
new file mode 100644
index 000000000..6f06f7722
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/github.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"{{ with .width }} width="{{ . }}"{{ end }}{{ with .height }} height="{{ . }}"{{ end }}{{ with .class }} class="{{ . }}"{{ end }} viewBox="0 0 512 499.36" role="img"><title>{{ with .title }}{{ . }}{{ else }}GitHub{{ end }}</title><path fill="currentColor" fill-rule="evenodd" d="M256 0C114.64 0 0 114.61 0 256c0 113.09 73.34 209 175.08 242.9 12.8 2.35 17.47-5.56 17.47-12.34 0-6.08-.22-22.18-.35-43.54-71.2 15.49-86.2-34.34-86.2-34.34-11.64-29.57-28.42-37.45-28.42-37.45-23.27-15.84 1.73-15.55 1.73-15.55 25.69 1.81 39.21 26.38 39.21 26.38 22.84 39.12 59.92 27.82 74.5 21.27 2.33-16.54 8.94-27.82 16.25-34.22-56.84-6.43-116.6-28.43-116.6-126.49 0-27.95 10-50.8 26.35-68.69-2.63-6.48-11.42-32.5 2.51-67.75 0 0 21.49-6.88 70.4 26.24a242.65 242.65 0 0 1 128.18 0c48.87-33.13 70.33-26.24 70.33-26.24 14 35.25 5.18 61.27 2.55 67.75 16.41 17.9 26.31 40.75 26.31 68.69 0 98.35-59.85 120-116.88 126.32 9.19 7.9 17.38 23.53 17.38 47.41 0 34.22-.31 61.83-.31 70.23 0 6.85 4.61 14.81 17.6 12.31C438.72 464.97 512 369.08 512 256.02 512 114.62 397.37 0 256 0z"/></svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/opencollective.svg b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/opencollective.svg
new file mode 100644
index 000000000..2896ba50c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/opencollective.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"{{ with .width }} width="{{ . }}"{{ end }}{{ with .height }} height="{{ . }}"{{ end }} fill="currentColor" fill-rule="evenodd"{{ with .class }} class="{{ . }}"{{ end }} viewBox="0 0 40 41" role="img"><title>{{ with .title }}{{ . }}{{ else }}Open Collective{{ end }}</title><path fill-opacity=".4" d="M32.8 21c0 2.4-.8 4.9-2 6.9l5.1 5.1c2.5-3.4 4.1-7.6 4.1-12 0-4.6-1.6-8.8-4-12.2L30.7 14c1.2 2 2 4.3 2 7z"/><path d="M20 33.7a12.8 12.8 0 0 1 0-25.6c2.6 0 5 .7 7 2.1L32 5a20 20 0 1 0 .1 31.9l-5-5.2a13 13 0 0 1-7 2z"/></svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/twitter.svg b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/twitter.svg
new file mode 100644
index 000000000..7a7fcee28
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/icons/twitter.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"{{ with .width }} width="{{ . }}"{{ end }}{{ with .height }} height="{{ . }}"{{ end }}{{ with .class }} class="{{ . }}"{{ end }} viewBox="0 0 512 416.32" role="img"><title>{{ with .title }}{{ . }}{{ else }}Twitter{{ end }}</title><path fill="currentColor" d="M160.83 416.32c193.2 0 298.92-160.22 298.92-298.92 0-4.51 0-9-.2-13.52A214 214 0 0 0 512 49.38a212.93 212.93 0 0 1-60.44 16.6 105.7 105.7 0 0 0 46.3-58.19 209 209 0 0 1-66.79 25.37 105.09 105.09 0 0 0-181.73 71.91 116.12 116.12 0 0 0 2.66 24c-87.28-4.3-164.73-46.3-216.56-109.82A105.48 105.48 0 0 0 68 159.6a106.27 106.27 0 0 1-47.53-13.11v1.43a105.28 105.28 0 0 0 84.21 103.06 105.67 105.67 0 0 1-47.33 1.84 105.06 105.06 0 0 0 98.14 72.94A210.72 210.72 0 0 1 25 370.84a202.17 202.17 0 0 1-25-1.43 298.85 298.85 0 0 0 160.83 46.92"/></svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/navbar.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/navbar.html
new file mode 100644
index 000000000..6d68fd582
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/navbar.html
@@ -0,0 +1,119 @@
+<header class="navbar navbar-expand-lg navbar-dark bd-navbar sticky-top">
+ <nav class="container-xxl bd-gutter flex-wrap flex-lg-nowrap" aria-label="Main navigation">
+ <div class="d-lg-none" style="width: 2.25rem;"></div>
+
+ <a class="navbar-brand p-0 me-0 me-lg-2" href="{{ .Site.Params.main }}/" aria-label="Bootstrap">
+ {{ partial "icons/bootstrap-white-fill.svg" (dict "class" "d-block my-1" "width" "40" "height" "32") }}
+ </a>
+
+ <button class="navbar-toggler d-flex d-lg-none order-3 p-2" type="button" data-bs-toggle="offcanvas" data-bs-target="#bdNavbar" aria-controls="bdNavbar" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="bi bi-three-dots" aria-hidden="true"></i>
+ </button>
+
+ <div class="offcanvas-lg offcanvas-end flex-grow-1" id="bdNavbar" aria-labelledby="bdNavbarOffcanvasLabel">
+ <div class="offcanvas-header px-4 pb-0">
+ <h5 class="offcanvas-title text-white" id="bdNavbarOffcanvasLabel">Bootstrap</h5>
+ <button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close" data-bs-target="#bdNavbar"></button>
+ </div>
+
+ <div class="offcanvas-body p-4 pt-0 p-lg-0">
+ <hr class="d-lg-none text-white-50">
+ <ul class="navbar-nav flex-row flex-wrap bd-navbar-nav">
+ <li class="nav-item col-6 col-lg-auto">
+ <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.main }}/docs/{{ .Site.Params.docs_version }}/getting-started/introduction/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Docs');" target="_blank" rel="noopener">Docs</a>
+ </li>
+ <li class="nav-item col-6 col-lg-auto">
+ <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.main }}/docs/{{ .Site.Params.docs_version }}/examples/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Examples');" target="_blank" rel="noopener">Examples</a>
+ </li>
+ <li class="nav-item col-6 col-lg-auto">
+ <a class="nav-link py-2 px-0 px-lg-2 active" href="/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Icons');">Icons</a>
+ </li>
+ <li class="nav-item col-6 col-lg-auto">
+ <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.themes }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Themes');" target="_blank" rel="noopener">Themes</a>
+ </li>
+ <li class="nav-item col-6 col-lg-auto">
+ <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.blog }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Blog');" target="_blank" rel="noopener">Blog</a>
+ </li>
+ </ul>
+
+ <hr class="d-lg-none text-white-50">
+
+ <ul class="navbar-nav flex-row flex-wrap ms-md-auto">
+ <li class="nav-item col-6 col-lg-auto">
+ <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.github_org }}" target="_blank" rel="noopener">
+ {{ partial "icons/github.svg" (dict "class" "navbar-nav-svg" "width" "16" "height" "16") }}
+ <small class="d-lg-none ms-2">GitHub</small>
+ </a>
+ </li>
+ <li class="nav-item col-6 col-lg-auto">
+ <a class="nav-link py-2 px-0 px-lg-2" href="https://twitter.com/{{ .Site.Params.twitter }}" target="_blank" rel="noopener">
+ {{ partial "icons/twitter.svg" (dict "class" "navbar-nav-svg" "width" "16" "height" "16") }}
+ <small class="d-lg-none ms-2">Twitter</small>
+ </a>
+ </li>
+ <li class="nav-item col-6 col-lg-auto">
+ <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.opencollective }}" target="_blank" rel="noopener">
+ {{ partial "icons/opencollective.svg" (dict "class" "navbar-nav-svg" "width" "16" "height" "16") }}
+ <small class="d-lg-none ms-2">Open Collective</small>
+ </a>
+ </li>
+
+ <li class="nav-item py-2 py-lg-1 col-12 col-lg-auto">
+ <div class="vr d-none d-lg-flex h-100 mx-lg-2 text-white"></div>
+ <hr class="d-lg-none my-2 text-white-50">
+ </li>
+
+ <li class="nav-item dropdown">
+ <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
+ <symbol id="circle-half" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 0 8 1v14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"/>
+ </symbol>
+ <symbol id="moon-stars-fill" viewBox="0 0 16 16">
+ <path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z"/>
+ <path d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.734 1.734 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.734 1.734 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.734 1.734 0 0 0 1.097-1.097l.387-1.162zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z"/>
+ </symbol>
+ <symbol id="sun-fill" viewBox="0 0 16 16">
+ <path d="M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"/>
+ </symbol>
+ </svg>
+
+ <button class="btn btn-link nav-link py-2 px-0 px-lg-2 dropdown-toggle d-flex align-items-center"
+ id="bd-theme"
+ type="button"
+ aria-expanded="false"
+ data-bs-toggle="dropdown"
+ data-bs-display="static"
+ aria-label="Toggle theme (auto)">
+ <svg class="bi my-1 theme-icon-active"><use href="#circle-half"></use></svg>
+ <span class="d-lg-none ms-2" id="bd-theme-text">Toggle theme</span>
+ </button>
+ <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="bd-theme-text">
+ <li>
+ <button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="light" aria-pressed="false">
+ <svg class="bi me-2 opacity-50 theme-icon"><use href="#sun-fill"></use></svg>
+ Light
+ <svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
+ </button>
+ </li>
+ <li>
+ <button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="dark" aria-pressed="false">
+ <svg class="bi me-2 opacity-50 theme-icon"><use href="#moon-stars-fill"></use></svg>
+ Dark
+ <svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
+ </button>
+ </li>
+ <li>
+ <button type="button" class="dropdown-item d-flex align-items-center active" data-bs-theme-value="auto" aria-pressed="true">
+ <svg class="bi me-2 opacity-50 theme-icon"><use href="#circle-half"></use></svg>
+ Auto
+ <svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
+ </button>
+ </li>
+ </ul>
+ </li>
+
+ </ul>
+ </div>
+ </div>
+ </nav>
+</header>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/scripts.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/scripts.html
new file mode 100644
index 000000000..e8b01a080
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/scripts.html
@@ -0,0 +1,15 @@
+<script async src="/assets/js/vendor/bootstrap.bundle.min.js"></script>
+
+{{- $esbuildOptions := dict "target" "es2019" -}}
+
+{{- if eq hugo.Environment "production" -}}
+ {{- $esbuildOptions = merge $esbuildOptions (dict "minify" "true") -}}
+{{- end -}}
+
+{{- if or .IsHome (eq .Page.Layout "sprite") -}}
+ {{- $searchJs := resources.Get "js/search.js" | js.Build $esbuildOptions | resources.Copy "/assets/js/search.js" -}}
+ <script async src="{{ $searchJs.Permalink | relURL }}"></script>
+{{- end }}
+
+{{- $application := resources.Get "js/application.js" | js.Build $esbuildOptions | resources.Copy "/assets/js/application.js" -}}
+<script async src="{{ $application.Permalink | relURL }}"></script>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/skippy.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/skippy.html
new file mode 100644
index 000000000..a66b8d69c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/skippy.html
@@ -0,0 +1,3 @@
+<a class="skippy visually-hidden-focusable" href="#content">
+ <span class="skippy-text">Skip to main content</span>
+</a>
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/social.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/social.html
new file mode 100644
index 000000000..8e734dabd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/social.html
@@ -0,0 +1,17 @@
+{{ "<!-- Twitter -->" | safeHTML }}
+<meta name="twitter:card" content="{{ if .IsHome }}summary_large_image{{ else }}summary{{ end }}">
+<meta name="twitter:site" content="@{{ .Site.Params.twitter }}">
+<meta name="twitter:creator" content="@{{ .Site.Params.twitter }}">
+<meta name="twitter:title" content="{{ .Title | default .Site.Title | markdownify }}">
+<meta name="twitter:description" content="{{ .Page.Params.description | default .Site.Params.description | markdownify }}">
+<meta name="twitter:image" content="{{ .Site.Params.social_image_path | absURL }}">
+
+{{ "<!-- Facebook -->" | safeHTML }}
+<meta property="og:url" content="{{ .Permalink }}">
+<meta property="og:title" content="{{ .Title | default .Site.Title | markdownify }}">
+<meta property="og:description" content="{{ .Page.Params.description | default .Site.Params.description | markdownify }}">
+<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}">
+<meta property="og:image" content="{{ .Site.Params.social_image_path | absURL }}">
+<meta property="og:image:type" content="image/png">
+<meta property="og:image:width" content="1000">
+<meta property="og:image:height" content="500">
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/partials/stylesheet.html b/vendor/twbs/bootstrap-icons/docs/layouts/partials/stylesheet.html
new file mode 100644
index 000000000..2502e1b5e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/partials/stylesheet.html
@@ -0,0 +1,12 @@
+<link rel="stylesheet" href="/assets/font/bootstrap-icons.min.css">
+
+{{- $sassOptions := dict "targetPath" "assets/css/docs.css" "precision" 6 -}}
+{{- $postcssOptions := dict "use" "autoprefixer" "noMap" true -}}
+
+{{- if eq hugo.Environment "production" -}}
+ {{- $sassOptions = merge $sassOptions (dict "outputStyle" "compressed") -}}
+{{- end -}}
+
+{{- $style := resources.Get "scss/docs.scss" | toCSS $sassOptions | postCSS $postcssOptions -}}
+
+<link rel="stylesheet" href="{{ $style.Permalink | relURL }}">
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/robots.txt b/vendor/twbs/bootstrap-icons/docs/layouts/robots.txt
new file mode 100644
index 000000000..271b4f1b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/robots.txt
@@ -0,0 +1,12 @@
+# www.robotstxt.org
+
+{{- $isProduction := eq hugo.Environment "production" -}}
+{{- $isNetlify := eq (getenv "NETLIFY") "true" -}}
+{{- $allowCrawling := and (not $isNetlify) $isProduction -}}
+
+{{ if $allowCrawling }}
+# Allow crawling of all content
+{{- end }}
+User-agent: *
+Disallow:{{ if not $allowCrawling }} /{{ end }}
+Sitemap: {{ "/sitemap.xml" | absURL }}
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/shortcodes/example.html b/vendor/twbs/bootstrap-icons/docs/layouts/shortcodes/example.html
new file mode 100644
index 000000000..6701b1377
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/shortcodes/example.html
@@ -0,0 +1,25 @@
+{{- /*
+ Usage: `example [args]`
+
+ `args` are optional and can be one of the following:
+ id: the `div`'s id - default: ""
+ class: any extra class(es) to be added to the `div` - default ""
+ show_preview: if the preview should be output in the HTML - default: `true`
+ show_markup: if the markup should be output in the HTML - default: `true`
+*/ -}}
+
+{{- $show_preview := .Get "show_preview" | default true -}}
+{{- $show_markup := .Get "show_markup" | default true -}}
+{{- $input := .Inner -}}
+
+{{- if eq $show_preview true -}}
+<div{{ with .Get "id" }} id="{{ . }}"{{ end }} class="bd-example{{ with .Get "class" }} {{ . }}{{ end }}">
+ {{- $input -}}
+</div>
+{{- end -}}
+
+{{- if eq $show_markup true -}}
+ {{- $content := replaceRE `<svg class="bd\-placeholder\-img(?:\-lg)?(?: *?bd\-placeholder\-img\-lg)? ?(.*?)".*?<\/svg>\n` `<img src="..." class="$1" alt="...">` $input -}}
+ {{- $content = replaceRE `(class=" *?")` "" $content -}}
+ {{- highlight (trim $content "\n") "html" "" -}}
+{{- end -}}
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/shortcodes/md.html b/vendor/twbs/bootstrap-icons/docs/layouts/shortcodes/md.html
new file mode 100644
index 000000000..82107bcef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/shortcodes/md.html
@@ -0,0 +1 @@
+{{- .Inner | markdownify -}}
diff --git a/vendor/twbs/bootstrap-icons/docs/layouts/sitemap.xml b/vendor/twbs/bootstrap-icons/docs/layouts/sitemap.xml
new file mode 100644
index 000000000..575b6b81e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/layouts/sitemap.xml
@@ -0,0 +1,10 @@
+{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+ {{- range .Data.Pages -}}{{ if ne .Params.sitemap_exclude true }}
+ <url>
+ <loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
+ <lastmod>{{ safeHTML (.Lastmod.Format "2006-01-02T15:04:05-07:00") }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
+ <changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
+ <priority>{{ .Sitemap.Priority }}</priority>{{ end }}
+ </url>{{ end }}{{ end }}
+</urlset>
diff --git a/vendor/twbs/bootstrap-icons/docs/static/CNAME b/vendor/twbs/bootstrap-icons/docs/static/CNAME
new file mode 100644
index 000000000..6738a7bee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/static/CNAME
@@ -0,0 +1 @@
+icons.getbootstrap.com
diff --git a/vendor/twbs/bootstrap-icons/docs/static/assets/img/bootstrap-icons-social.png b/vendor/twbs/bootstrap-icons/docs/static/assets/img/bootstrap-icons-social.png
new file mode 100644
index 000000000..3f3f94ac5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/static/assets/img/bootstrap-icons-social.png
Binary files differ
diff --git a/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/android-chrome-192x192.png b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/android-chrome-192x192.png
new file mode 100644
index 000000000..1c276a531
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/android-chrome-192x192.png
Binary files differ
diff --git a/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/android-chrome-512x512.png b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/android-chrome-512x512.png
new file mode 100644
index 000000000..936025e1c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/android-chrome-512x512.png
Binary files differ
diff --git a/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/apple-touch-icon.png b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/apple-touch-icon.png
new file mode 100644
index 000000000..a55a22933
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/apple-touch-icon.png
Binary files differ
diff --git a/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/favicon-16x16.png b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/favicon-16x16.png
new file mode 100644
index 000000000..765238171
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/favicon-16x16.png
Binary files differ
diff --git a/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/favicon-32x32.png b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/favicon-32x32.png
new file mode 100644
index 000000000..7f99a91e3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/favicon-32x32.png
Binary files differ
diff --git a/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/manifest.json b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/manifest.json
new file mode 100644
index 000000000..3256f9f5f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/manifest.json
@@ -0,0 +1,20 @@
+{
+ "name": "Bootstrap Icons",
+ "short_name": "Bootstrap Icons",
+ "icons": [
+ {
+ "src": "/assets/img/favicons/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/assets/img/favicons/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "start_url": "/?utm_source=a2hs",
+ "theme_color": "#7952b3",
+ "background_color": "#7952b3",
+ "display": "standalone"
+}
diff --git a/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/safari-pinned-tab.svg b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/safari-pinned-tab.svg
new file mode 100644
index 000000000..aa6e85cb9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/static/assets/img/favicons/safari-pinned-tab.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" fill="none"><path fill="#000" fill-rule="evenodd" d="M39.878 20c-10.955 0-19.06 9.59-18.698 19.988.349 9.99-.104 22.93-3.361 33.48C14.55 84.052 9.026 90.756 0 91.615v9.719c9.026.86 14.55 7.563 17.819 18.147 3.257 10.551 3.71 23.491 3.361 33.48-.362 10.399 7.743 19.988 18.698 19.988h112.258c10.955 0 19.06-9.589 18.697-19.988-.348-9.989.104-22.929 3.362-33.48 3.268-10.584 8.779-17.287 17.805-18.147v-9.719c-9.026-.86-14.537-7.563-17.805-18.147-3.258-10.55-3.71-23.49-3.362-33.48C171.196 29.589 163.091 20 152.136 20H39.878zm88.665 94.15c0 14.32-10.68 23.002-28.404 23.002H68.713a2 2 0 01-2-2V57.797a2 2 0 012-2h31.253c14.779 0 24.478 8.006 24.478 20.296 0 8.626-6.524 16.35-14.837 17.703v.451c11.315 1.24 18.936 9.078 18.936 19.903zM96.848 66.114H79.644v24.3h14.491c11.2 0 17.377-4.51 17.377-12.573 0-7.555-5.311-11.727-14.664-11.727zm-17.204 33.941v26.78h17.84c11.661 0 17.838-4.68 17.838-13.475s-6.35-13.305-18.59-13.305H79.645z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/docs/static/assets/img/icons-hero.png b/vendor/twbs/bootstrap-icons/docs/static/assets/img/icons-hero.png
new file mode 100644
index 000000000..7ff4e15ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/static/assets/img/icons-hero.png
Binary files differ
diff --git a/vendor/twbs/bootstrap-icons/docs/static/assets/img/icons-hero@2x.png b/vendor/twbs/bootstrap-icons/docs/static/assets/img/icons-hero@2x.png
new file mode 100644
index 000000000..56f2179f0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/docs/static/assets/img/icons-hero@2x.png
Binary files differ
diff --git a/vendor/twbs/bootstrap-icons/font/bootstrap-icons.css b/vendor/twbs/bootstrap-icons/font/bootstrap-icons.css
new file mode 100644
index 000000000..bc84a5fe3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/font/bootstrap-icons.css
@@ -0,0 +1,2078 @@
+/*!
+ * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/)
+ * Copyright 2019-2024 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE)
+ */
+
+@font-face {
+ font-display: block;
+ font-family: "bootstrap-icons";
+ src: url("./fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6") format("woff2"),
+url("./fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6") format("woff");
+}
+
+.bi::before,
+[class^="bi-"]::before,
+[class*=" bi-"]::before {
+ display: inline-block;
+ font-family: bootstrap-icons !important;
+ font-style: normal;
+ font-weight: normal !important;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ vertical-align: -.125em;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.bi-123::before { content: "\f67f"; }
+.bi-alarm-fill::before { content: "\f101"; }
+.bi-alarm::before { content: "\f102"; }
+.bi-align-bottom::before { content: "\f103"; }
+.bi-align-center::before { content: "\f104"; }
+.bi-align-end::before { content: "\f105"; }
+.bi-align-middle::before { content: "\f106"; }
+.bi-align-start::before { content: "\f107"; }
+.bi-align-top::before { content: "\f108"; }
+.bi-alt::before { content: "\f109"; }
+.bi-app-indicator::before { content: "\f10a"; }
+.bi-app::before { content: "\f10b"; }
+.bi-archive-fill::before { content: "\f10c"; }
+.bi-archive::before { content: "\f10d"; }
+.bi-arrow-90deg-down::before { content: "\f10e"; }
+.bi-arrow-90deg-left::before { content: "\f10f"; }
+.bi-arrow-90deg-right::before { content: "\f110"; }
+.bi-arrow-90deg-up::before { content: "\f111"; }
+.bi-arrow-bar-down::before { content: "\f112"; }
+.bi-arrow-bar-left::before { content: "\f113"; }
+.bi-arrow-bar-right::before { content: "\f114"; }
+.bi-arrow-bar-up::before { content: "\f115"; }
+.bi-arrow-clockwise::before { content: "\f116"; }
+.bi-arrow-counterclockwise::before { content: "\f117"; }
+.bi-arrow-down-circle-fill::before { content: "\f118"; }
+.bi-arrow-down-circle::before { content: "\f119"; }
+.bi-arrow-down-left-circle-fill::before { content: "\f11a"; }
+.bi-arrow-down-left-circle::before { content: "\f11b"; }
+.bi-arrow-down-left-square-fill::before { content: "\f11c"; }
+.bi-arrow-down-left-square::before { content: "\f11d"; }
+.bi-arrow-down-left::before { content: "\f11e"; }
+.bi-arrow-down-right-circle-fill::before { content: "\f11f"; }
+.bi-arrow-down-right-circle::before { content: "\f120"; }
+.bi-arrow-down-right-square-fill::before { content: "\f121"; }
+.bi-arrow-down-right-square::before { content: "\f122"; }
+.bi-arrow-down-right::before { content: "\f123"; }
+.bi-arrow-down-short::before { content: "\f124"; }
+.bi-arrow-down-square-fill::before { content: "\f125"; }
+.bi-arrow-down-square::before { content: "\f126"; }
+.bi-arrow-down-up::before { content: "\f127"; }
+.bi-arrow-down::before { content: "\f128"; }
+.bi-arrow-left-circle-fill::before { content: "\f129"; }
+.bi-arrow-left-circle::before { content: "\f12a"; }
+.bi-arrow-left-right::before { content: "\f12b"; }
+.bi-arrow-left-short::before { content: "\f12c"; }
+.bi-arrow-left-square-fill::before { content: "\f12d"; }
+.bi-arrow-left-square::before { content: "\f12e"; }
+.bi-arrow-left::before { content: "\f12f"; }
+.bi-arrow-repeat::before { content: "\f130"; }
+.bi-arrow-return-left::before { content: "\f131"; }
+.bi-arrow-return-right::before { content: "\f132"; }
+.bi-arrow-right-circle-fill::before { content: "\f133"; }
+.bi-arrow-right-circle::before { content: "\f134"; }
+.bi-arrow-right-short::before { content: "\f135"; }
+.bi-arrow-right-square-fill::before { content: "\f136"; }
+.bi-arrow-right-square::before { content: "\f137"; }
+.bi-arrow-right::before { content: "\f138"; }
+.bi-arrow-up-circle-fill::before { content: "\f139"; }
+.bi-arrow-up-circle::before { content: "\f13a"; }
+.bi-arrow-up-left-circle-fill::before { content: "\f13b"; }
+.bi-arrow-up-left-circle::before { content: "\f13c"; }
+.bi-arrow-up-left-square-fill::before { content: "\f13d"; }
+.bi-arrow-up-left-square::before { content: "\f13e"; }
+.bi-arrow-up-left::before { content: "\f13f"; }
+.bi-arrow-up-right-circle-fill::before { content: "\f140"; }
+.bi-arrow-up-right-circle::before { content: "\f141"; }
+.bi-arrow-up-right-square-fill::before { content: "\f142"; }
+.bi-arrow-up-right-square::before { content: "\f143"; }
+.bi-arrow-up-right::before { content: "\f144"; }
+.bi-arrow-up-short::before { content: "\f145"; }
+.bi-arrow-up-square-fill::before { content: "\f146"; }
+.bi-arrow-up-square::before { content: "\f147"; }
+.bi-arrow-up::before { content: "\f148"; }
+.bi-arrows-angle-contract::before { content: "\f149"; }
+.bi-arrows-angle-expand::before { content: "\f14a"; }
+.bi-arrows-collapse::before { content: "\f14b"; }
+.bi-arrows-expand::before { content: "\f14c"; }
+.bi-arrows-fullscreen::before { content: "\f14d"; }
+.bi-arrows-move::before { content: "\f14e"; }
+.bi-aspect-ratio-fill::before { content: "\f14f"; }
+.bi-aspect-ratio::before { content: "\f150"; }
+.bi-asterisk::before { content: "\f151"; }
+.bi-at::before { content: "\f152"; }
+.bi-award-fill::before { content: "\f153"; }
+.bi-award::before { content: "\f154"; }
+.bi-back::before { content: "\f155"; }
+.bi-backspace-fill::before { content: "\f156"; }
+.bi-backspace-reverse-fill::before { content: "\f157"; }
+.bi-backspace-reverse::before { content: "\f158"; }
+.bi-backspace::before { content: "\f159"; }
+.bi-badge-3d-fill::before { content: "\f15a"; }
+.bi-badge-3d::before { content: "\f15b"; }
+.bi-badge-4k-fill::before { content: "\f15c"; }
+.bi-badge-4k::before { content: "\f15d"; }
+.bi-badge-8k-fill::before { content: "\f15e"; }
+.bi-badge-8k::before { content: "\f15f"; }
+.bi-badge-ad-fill::before { content: "\f160"; }
+.bi-badge-ad::before { content: "\f161"; }
+.bi-badge-ar-fill::before { content: "\f162"; }
+.bi-badge-ar::before { content: "\f163"; }
+.bi-badge-cc-fill::before { content: "\f164"; }
+.bi-badge-cc::before { content: "\f165"; }
+.bi-badge-hd-fill::before { content: "\f166"; }
+.bi-badge-hd::before { content: "\f167"; }
+.bi-badge-tm-fill::before { content: "\f168"; }
+.bi-badge-tm::before { content: "\f169"; }
+.bi-badge-vo-fill::before { content: "\f16a"; }
+.bi-badge-vo::before { content: "\f16b"; }
+.bi-badge-vr-fill::before { content: "\f16c"; }
+.bi-badge-vr::before { content: "\f16d"; }
+.bi-badge-wc-fill::before { content: "\f16e"; }
+.bi-badge-wc::before { content: "\f16f"; }
+.bi-bag-check-fill::before { content: "\f170"; }
+.bi-bag-check::before { content: "\f171"; }
+.bi-bag-dash-fill::before { content: "\f172"; }
+.bi-bag-dash::before { content: "\f173"; }
+.bi-bag-fill::before { content: "\f174"; }
+.bi-bag-plus-fill::before { content: "\f175"; }
+.bi-bag-plus::before { content: "\f176"; }
+.bi-bag-x-fill::before { content: "\f177"; }
+.bi-bag-x::before { content: "\f178"; }
+.bi-bag::before { content: "\f179"; }
+.bi-bar-chart-fill::before { content: "\f17a"; }
+.bi-bar-chart-line-fill::before { content: "\f17b"; }
+.bi-bar-chart-line::before { content: "\f17c"; }
+.bi-bar-chart-steps::before { content: "\f17d"; }
+.bi-bar-chart::before { content: "\f17e"; }
+.bi-basket-fill::before { content: "\f17f"; }
+.bi-basket::before { content: "\f180"; }
+.bi-basket2-fill::before { content: "\f181"; }
+.bi-basket2::before { content: "\f182"; }
+.bi-basket3-fill::before { content: "\f183"; }
+.bi-basket3::before { content: "\f184"; }
+.bi-battery-charging::before { content: "\f185"; }
+.bi-battery-full::before { content: "\f186"; }
+.bi-battery-half::before { content: "\f187"; }
+.bi-battery::before { content: "\f188"; }
+.bi-bell-fill::before { content: "\f189"; }
+.bi-bell::before { content: "\f18a"; }
+.bi-bezier::before { content: "\f18b"; }
+.bi-bezier2::before { content: "\f18c"; }
+.bi-bicycle::before { content: "\f18d"; }
+.bi-binoculars-fill::before { content: "\f18e"; }
+.bi-binoculars::before { content: "\f18f"; }
+.bi-blockquote-left::before { content: "\f190"; }
+.bi-blockquote-right::before { content: "\f191"; }
+.bi-book-fill::before { content: "\f192"; }
+.bi-book-half::before { content: "\f193"; }
+.bi-book::before { content: "\f194"; }
+.bi-bookmark-check-fill::before { content: "\f195"; }
+.bi-bookmark-check::before { content: "\f196"; }
+.bi-bookmark-dash-fill::before { content: "\f197"; }
+.bi-bookmark-dash::before { content: "\f198"; }
+.bi-bookmark-fill::before { content: "\f199"; }
+.bi-bookmark-heart-fill::before { content: "\f19a"; }
+.bi-bookmark-heart::before { content: "\f19b"; }
+.bi-bookmark-plus-fill::before { content: "\f19c"; }
+.bi-bookmark-plus::before { content: "\f19d"; }
+.bi-bookmark-star-fill::before { content: "\f19e"; }
+.bi-bookmark-star::before { content: "\f19f"; }
+.bi-bookmark-x-fill::before { content: "\f1a0"; }
+.bi-bookmark-x::before { content: "\f1a1"; }
+.bi-bookmark::before { content: "\f1a2"; }
+.bi-bookmarks-fill::before { content: "\f1a3"; }
+.bi-bookmarks::before { content: "\f1a4"; }
+.bi-bookshelf::before { content: "\f1a5"; }
+.bi-bootstrap-fill::before { content: "\f1a6"; }
+.bi-bootstrap-reboot::before { content: "\f1a7"; }
+.bi-bootstrap::before { content: "\f1a8"; }
+.bi-border-all::before { content: "\f1a9"; }
+.bi-border-bottom::before { content: "\f1aa"; }
+.bi-border-center::before { content: "\f1ab"; }
+.bi-border-inner::before { content: "\f1ac"; }
+.bi-border-left::before { content: "\f1ad"; }
+.bi-border-middle::before { content: "\f1ae"; }
+.bi-border-outer::before { content: "\f1af"; }
+.bi-border-right::before { content: "\f1b0"; }
+.bi-border-style::before { content: "\f1b1"; }
+.bi-border-top::before { content: "\f1b2"; }
+.bi-border-width::before { content: "\f1b3"; }
+.bi-border::before { content: "\f1b4"; }
+.bi-bounding-box-circles::before { content: "\f1b5"; }
+.bi-bounding-box::before { content: "\f1b6"; }
+.bi-box-arrow-down-left::before { content: "\f1b7"; }
+.bi-box-arrow-down-right::before { content: "\f1b8"; }
+.bi-box-arrow-down::before { content: "\f1b9"; }
+.bi-box-arrow-in-down-left::before { content: "\f1ba"; }
+.bi-box-arrow-in-down-right::before { content: "\f1bb"; }
+.bi-box-arrow-in-down::before { content: "\f1bc"; }
+.bi-box-arrow-in-left::before { content: "\f1bd"; }
+.bi-box-arrow-in-right::before { content: "\f1be"; }
+.bi-box-arrow-in-up-left::before { content: "\f1bf"; }
+.bi-box-arrow-in-up-right::before { content: "\f1c0"; }
+.bi-box-arrow-in-up::before { content: "\f1c1"; }
+.bi-box-arrow-left::before { content: "\f1c2"; }
+.bi-box-arrow-right::before { content: "\f1c3"; }
+.bi-box-arrow-up-left::before { content: "\f1c4"; }
+.bi-box-arrow-up-right::before { content: "\f1c5"; }
+.bi-box-arrow-up::before { content: "\f1c6"; }
+.bi-box-seam::before { content: "\f1c7"; }
+.bi-box::before { content: "\f1c8"; }
+.bi-braces::before { content: "\f1c9"; }
+.bi-bricks::before { content: "\f1ca"; }
+.bi-briefcase-fill::before { content: "\f1cb"; }
+.bi-briefcase::before { content: "\f1cc"; }
+.bi-brightness-alt-high-fill::before { content: "\f1cd"; }
+.bi-brightness-alt-high::before { content: "\f1ce"; }
+.bi-brightness-alt-low-fill::before { content: "\f1cf"; }
+.bi-brightness-alt-low::before { content: "\f1d0"; }
+.bi-brightness-high-fill::before { content: "\f1d1"; }
+.bi-brightness-high::before { content: "\f1d2"; }
+.bi-brightness-low-fill::before { content: "\f1d3"; }
+.bi-brightness-low::before { content: "\f1d4"; }
+.bi-broadcast-pin::before { content: "\f1d5"; }
+.bi-broadcast::before { content: "\f1d6"; }
+.bi-brush-fill::before { content: "\f1d7"; }
+.bi-brush::before { content: "\f1d8"; }
+.bi-bucket-fill::before { content: "\f1d9"; }
+.bi-bucket::before { content: "\f1da"; }
+.bi-bug-fill::before { content: "\f1db"; }
+.bi-bug::before { content: "\f1dc"; }
+.bi-building::before { content: "\f1dd"; }
+.bi-bullseye::before { content: "\f1de"; }
+.bi-calculator-fill::before { content: "\f1df"; }
+.bi-calculator::before { content: "\f1e0"; }
+.bi-calendar-check-fill::before { content: "\f1e1"; }
+.bi-calendar-check::before { content: "\f1e2"; }
+.bi-calendar-date-fill::before { content: "\f1e3"; }
+.bi-calendar-date::before { content: "\f1e4"; }
+.bi-calendar-day-fill::before { content: "\f1e5"; }
+.bi-calendar-day::before { content: "\f1e6"; }
+.bi-calendar-event-fill::before { content: "\f1e7"; }
+.bi-calendar-event::before { content: "\f1e8"; }
+.bi-calendar-fill::before { content: "\f1e9"; }
+.bi-calendar-minus-fill::before { content: "\f1ea"; }
+.bi-calendar-minus::before { content: "\f1eb"; }
+.bi-calendar-month-fill::before { content: "\f1ec"; }
+.bi-calendar-month::before { content: "\f1ed"; }
+.bi-calendar-plus-fill::before { content: "\f1ee"; }
+.bi-calendar-plus::before { content: "\f1ef"; }
+.bi-calendar-range-fill::before { content: "\f1f0"; }
+.bi-calendar-range::before { content: "\f1f1"; }
+.bi-calendar-week-fill::before { content: "\f1f2"; }
+.bi-calendar-week::before { content: "\f1f3"; }
+.bi-calendar-x-fill::before { content: "\f1f4"; }
+.bi-calendar-x::before { content: "\f1f5"; }
+.bi-calendar::before { content: "\f1f6"; }
+.bi-calendar2-check-fill::before { content: "\f1f7"; }
+.bi-calendar2-check::before { content: "\f1f8"; }
+.bi-calendar2-date-fill::before { content: "\f1f9"; }
+.bi-calendar2-date::before { content: "\f1fa"; }
+.bi-calendar2-day-fill::before { content: "\f1fb"; }
+.bi-calendar2-day::before { content: "\f1fc"; }
+.bi-calendar2-event-fill::before { content: "\f1fd"; }
+.bi-calendar2-event::before { content: "\f1fe"; }
+.bi-calendar2-fill::before { content: "\f1ff"; }
+.bi-calendar2-minus-fill::before { content: "\f200"; }
+.bi-calendar2-minus::before { content: "\f201"; }
+.bi-calendar2-month-fill::before { content: "\f202"; }
+.bi-calendar2-month::before { content: "\f203"; }
+.bi-calendar2-plus-fill::before { content: "\f204"; }
+.bi-calendar2-plus::before { content: "\f205"; }
+.bi-calendar2-range-fill::before { content: "\f206"; }
+.bi-calendar2-range::before { content: "\f207"; }
+.bi-calendar2-week-fill::before { content: "\f208"; }
+.bi-calendar2-week::before { content: "\f209"; }
+.bi-calendar2-x-fill::before { content: "\f20a"; }
+.bi-calendar2-x::before { content: "\f20b"; }
+.bi-calendar2::before { content: "\f20c"; }
+.bi-calendar3-event-fill::before { content: "\f20d"; }
+.bi-calendar3-event::before { content: "\f20e"; }
+.bi-calendar3-fill::before { content: "\f20f"; }
+.bi-calendar3-range-fill::before { content: "\f210"; }
+.bi-calendar3-range::before { content: "\f211"; }
+.bi-calendar3-week-fill::before { content: "\f212"; }
+.bi-calendar3-week::before { content: "\f213"; }
+.bi-calendar3::before { content: "\f214"; }
+.bi-calendar4-event::before { content: "\f215"; }
+.bi-calendar4-range::before { content: "\f216"; }
+.bi-calendar4-week::before { content: "\f217"; }
+.bi-calendar4::before { content: "\f218"; }
+.bi-camera-fill::before { content: "\f219"; }
+.bi-camera-reels-fill::before { content: "\f21a"; }
+.bi-camera-reels::before { content: "\f21b"; }
+.bi-camera-video-fill::before { content: "\f21c"; }
+.bi-camera-video-off-fill::before { content: "\f21d"; }
+.bi-camera-video-off::before { content: "\f21e"; }
+.bi-camera-video::before { content: "\f21f"; }
+.bi-camera::before { content: "\f220"; }
+.bi-camera2::before { content: "\f221"; }
+.bi-capslock-fill::before { content: "\f222"; }
+.bi-capslock::before { content: "\f223"; }
+.bi-card-checklist::before { content: "\f224"; }
+.bi-card-heading::before { content: "\f225"; }
+.bi-card-image::before { content: "\f226"; }
+.bi-card-list::before { content: "\f227"; }
+.bi-card-text::before { content: "\f228"; }
+.bi-caret-down-fill::before { content: "\f229"; }
+.bi-caret-down-square-fill::before { content: "\f22a"; }
+.bi-caret-down-square::before { content: "\f22b"; }
+.bi-caret-down::before { content: "\f22c"; }
+.bi-caret-left-fill::before { content: "\f22d"; }
+.bi-caret-left-square-fill::before { content: "\f22e"; }
+.bi-caret-left-square::before { content: "\f22f"; }
+.bi-caret-left::before { content: "\f230"; }
+.bi-caret-right-fill::before { content: "\f231"; }
+.bi-caret-right-square-fill::before { content: "\f232"; }
+.bi-caret-right-square::before { content: "\f233"; }
+.bi-caret-right::before { content: "\f234"; }
+.bi-caret-up-fill::before { content: "\f235"; }
+.bi-caret-up-square-fill::before { content: "\f236"; }
+.bi-caret-up-square::before { content: "\f237"; }
+.bi-caret-up::before { content: "\f238"; }
+.bi-cart-check-fill::before { content: "\f239"; }
+.bi-cart-check::before { content: "\f23a"; }
+.bi-cart-dash-fill::before { content: "\f23b"; }
+.bi-cart-dash::before { content: "\f23c"; }
+.bi-cart-fill::before { content: "\f23d"; }
+.bi-cart-plus-fill::before { content: "\f23e"; }
+.bi-cart-plus::before { content: "\f23f"; }
+.bi-cart-x-fill::before { content: "\f240"; }
+.bi-cart-x::before { content: "\f241"; }
+.bi-cart::before { content: "\f242"; }
+.bi-cart2::before { content: "\f243"; }
+.bi-cart3::before { content: "\f244"; }
+.bi-cart4::before { content: "\f245"; }
+.bi-cash-stack::before { content: "\f246"; }
+.bi-cash::before { content: "\f247"; }
+.bi-cast::before { content: "\f248"; }
+.bi-chat-dots-fill::before { content: "\f249"; }
+.bi-chat-dots::before { content: "\f24a"; }
+.bi-chat-fill::before { content: "\f24b"; }
+.bi-chat-left-dots-fill::before { content: "\f24c"; }
+.bi-chat-left-dots::before { content: "\f24d"; }
+.bi-chat-left-fill::before { content: "\f24e"; }
+.bi-chat-left-quote-fill::before { content: "\f24f"; }
+.bi-chat-left-quote::before { content: "\f250"; }
+.bi-chat-left-text-fill::before { content: "\f251"; }
+.bi-chat-left-text::before { content: "\f252"; }
+.bi-chat-left::before { content: "\f253"; }
+.bi-chat-quote-fill::before { content: "\f254"; }
+.bi-chat-quote::before { content: "\f255"; }
+.bi-chat-right-dots-fill::before { content: "\f256"; }
+.bi-chat-right-dots::before { content: "\f257"; }
+.bi-chat-right-fill::before { content: "\f258"; }
+.bi-chat-right-quote-fill::before { content: "\f259"; }
+.bi-chat-right-quote::before { content: "\f25a"; }
+.bi-chat-right-text-fill::before { content: "\f25b"; }
+.bi-chat-right-text::before { content: "\f25c"; }
+.bi-chat-right::before { content: "\f25d"; }
+.bi-chat-square-dots-fill::before { content: "\f25e"; }
+.bi-chat-square-dots::before { content: "\f25f"; }
+.bi-chat-square-fill::before { content: "\f260"; }
+.bi-chat-square-quote-fill::before { content: "\f261"; }
+.bi-chat-square-quote::before { content: "\f262"; }
+.bi-chat-square-text-fill::before { content: "\f263"; }
+.bi-chat-square-text::before { content: "\f264"; }
+.bi-chat-square::before { content: "\f265"; }
+.bi-chat-text-fill::before { content: "\f266"; }
+.bi-chat-text::before { content: "\f267"; }
+.bi-chat::before { content: "\f268"; }
+.bi-check-all::before { content: "\f269"; }
+.bi-check-circle-fill::before { content: "\f26a"; }
+.bi-check-circle::before { content: "\f26b"; }
+.bi-check-square-fill::before { content: "\f26c"; }
+.bi-check-square::before { content: "\f26d"; }
+.bi-check::before { content: "\f26e"; }
+.bi-check2-all::before { content: "\f26f"; }
+.bi-check2-circle::before { content: "\f270"; }
+.bi-check2-square::before { content: "\f271"; }
+.bi-check2::before { content: "\f272"; }
+.bi-chevron-bar-contract::before { content: "\f273"; }
+.bi-chevron-bar-down::before { content: "\f274"; }
+.bi-chevron-bar-expand::before { content: "\f275"; }
+.bi-chevron-bar-left::before { content: "\f276"; }
+.bi-chevron-bar-right::before { content: "\f277"; }
+.bi-chevron-bar-up::before { content: "\f278"; }
+.bi-chevron-compact-down::before { content: "\f279"; }
+.bi-chevron-compact-left::before { content: "\f27a"; }
+.bi-chevron-compact-right::before { content: "\f27b"; }
+.bi-chevron-compact-up::before { content: "\f27c"; }
+.bi-chevron-contract::before { content: "\f27d"; }
+.bi-chevron-double-down::before { content: "\f27e"; }
+.bi-chevron-double-left::before { content: "\f27f"; }
+.bi-chevron-double-right::before { content: "\f280"; }
+.bi-chevron-double-up::before { content: "\f281"; }
+.bi-chevron-down::before { content: "\f282"; }
+.bi-chevron-expand::before { content: "\f283"; }
+.bi-chevron-left::before { content: "\f284"; }
+.bi-chevron-right::before { content: "\f285"; }
+.bi-chevron-up::before { content: "\f286"; }
+.bi-circle-fill::before { content: "\f287"; }
+.bi-circle-half::before { content: "\f288"; }
+.bi-circle-square::before { content: "\f289"; }
+.bi-circle::before { content: "\f28a"; }
+.bi-clipboard-check::before { content: "\f28b"; }
+.bi-clipboard-data::before { content: "\f28c"; }
+.bi-clipboard-minus::before { content: "\f28d"; }
+.bi-clipboard-plus::before { content: "\f28e"; }
+.bi-clipboard-x::before { content: "\f28f"; }
+.bi-clipboard::before { content: "\f290"; }
+.bi-clock-fill::before { content: "\f291"; }
+.bi-clock-history::before { content: "\f292"; }
+.bi-clock::before { content: "\f293"; }
+.bi-cloud-arrow-down-fill::before { content: "\f294"; }
+.bi-cloud-arrow-down::before { content: "\f295"; }
+.bi-cloud-arrow-up-fill::before { content: "\f296"; }
+.bi-cloud-arrow-up::before { content: "\f297"; }
+.bi-cloud-check-fill::before { content: "\f298"; }
+.bi-cloud-check::before { content: "\f299"; }
+.bi-cloud-download-fill::before { content: "\f29a"; }
+.bi-cloud-download::before { content: "\f29b"; }
+.bi-cloud-drizzle-fill::before { content: "\f29c"; }
+.bi-cloud-drizzle::before { content: "\f29d"; }
+.bi-cloud-fill::before { content: "\f29e"; }
+.bi-cloud-fog-fill::before { content: "\f29f"; }
+.bi-cloud-fog::before { content: "\f2a0"; }
+.bi-cloud-fog2-fill::before { content: "\f2a1"; }
+.bi-cloud-fog2::before { content: "\f2a2"; }
+.bi-cloud-hail-fill::before { content: "\f2a3"; }
+.bi-cloud-hail::before { content: "\f2a4"; }
+.bi-cloud-haze-fill::before { content: "\f2a6"; }
+.bi-cloud-haze::before { content: "\f2a7"; }
+.bi-cloud-haze2-fill::before { content: "\f2a8"; }
+.bi-cloud-lightning-fill::before { content: "\f2a9"; }
+.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; }
+.bi-cloud-lightning-rain::before { content: "\f2ab"; }
+.bi-cloud-lightning::before { content: "\f2ac"; }
+.bi-cloud-minus-fill::before { content: "\f2ad"; }
+.bi-cloud-minus::before { content: "\f2ae"; }
+.bi-cloud-moon-fill::before { content: "\f2af"; }
+.bi-cloud-moon::before { content: "\f2b0"; }
+.bi-cloud-plus-fill::before { content: "\f2b1"; }
+.bi-cloud-plus::before { content: "\f2b2"; }
+.bi-cloud-rain-fill::before { content: "\f2b3"; }
+.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; }
+.bi-cloud-rain-heavy::before { content: "\f2b5"; }
+.bi-cloud-rain::before { content: "\f2b6"; }
+.bi-cloud-slash-fill::before { content: "\f2b7"; }
+.bi-cloud-slash::before { content: "\f2b8"; }
+.bi-cloud-sleet-fill::before { content: "\f2b9"; }
+.bi-cloud-sleet::before { content: "\f2ba"; }
+.bi-cloud-snow-fill::before { content: "\f2bb"; }
+.bi-cloud-snow::before { content: "\f2bc"; }
+.bi-cloud-sun-fill::before { content: "\f2bd"; }
+.bi-cloud-sun::before { content: "\f2be"; }
+.bi-cloud-upload-fill::before { content: "\f2bf"; }
+.bi-cloud-upload::before { content: "\f2c0"; }
+.bi-cloud::before { content: "\f2c1"; }
+.bi-clouds-fill::before { content: "\f2c2"; }
+.bi-clouds::before { content: "\f2c3"; }
+.bi-cloudy-fill::before { content: "\f2c4"; }
+.bi-cloudy::before { content: "\f2c5"; }
+.bi-code-slash::before { content: "\f2c6"; }
+.bi-code-square::before { content: "\f2c7"; }
+.bi-code::before { content: "\f2c8"; }
+.bi-collection-fill::before { content: "\f2c9"; }
+.bi-collection-play-fill::before { content: "\f2ca"; }
+.bi-collection-play::before { content: "\f2cb"; }
+.bi-collection::before { content: "\f2cc"; }
+.bi-columns-gap::before { content: "\f2cd"; }
+.bi-columns::before { content: "\f2ce"; }
+.bi-command::before { content: "\f2cf"; }
+.bi-compass-fill::before { content: "\f2d0"; }
+.bi-compass::before { content: "\f2d1"; }
+.bi-cone-striped::before { content: "\f2d2"; }
+.bi-cone::before { content: "\f2d3"; }
+.bi-controller::before { content: "\f2d4"; }
+.bi-cpu-fill::before { content: "\f2d5"; }
+.bi-cpu::before { content: "\f2d6"; }
+.bi-credit-card-2-back-fill::before { content: "\f2d7"; }
+.bi-credit-card-2-back::before { content: "\f2d8"; }
+.bi-credit-card-2-front-fill::before { content: "\f2d9"; }
+.bi-credit-card-2-front::before { content: "\f2da"; }
+.bi-credit-card-fill::before { content: "\f2db"; }
+.bi-credit-card::before { content: "\f2dc"; }
+.bi-crop::before { content: "\f2dd"; }
+.bi-cup-fill::before { content: "\f2de"; }
+.bi-cup-straw::before { content: "\f2df"; }
+.bi-cup::before { content: "\f2e0"; }
+.bi-cursor-fill::before { content: "\f2e1"; }
+.bi-cursor-text::before { content: "\f2e2"; }
+.bi-cursor::before { content: "\f2e3"; }
+.bi-dash-circle-dotted::before { content: "\f2e4"; }
+.bi-dash-circle-fill::before { content: "\f2e5"; }
+.bi-dash-circle::before { content: "\f2e6"; }
+.bi-dash-square-dotted::before { content: "\f2e7"; }
+.bi-dash-square-fill::before { content: "\f2e8"; }
+.bi-dash-square::before { content: "\f2e9"; }
+.bi-dash::before { content: "\f2ea"; }
+.bi-diagram-2-fill::before { content: "\f2eb"; }
+.bi-diagram-2::before { content: "\f2ec"; }
+.bi-diagram-3-fill::before { content: "\f2ed"; }
+.bi-diagram-3::before { content: "\f2ee"; }
+.bi-diamond-fill::before { content: "\f2ef"; }
+.bi-diamond-half::before { content: "\f2f0"; }
+.bi-diamond::before { content: "\f2f1"; }
+.bi-dice-1-fill::before { content: "\f2f2"; }
+.bi-dice-1::before { content: "\f2f3"; }
+.bi-dice-2-fill::before { content: "\f2f4"; }
+.bi-dice-2::before { content: "\f2f5"; }
+.bi-dice-3-fill::before { content: "\f2f6"; }
+.bi-dice-3::before { content: "\f2f7"; }
+.bi-dice-4-fill::before { content: "\f2f8"; }
+.bi-dice-4::before { content: "\f2f9"; }
+.bi-dice-5-fill::before { content: "\f2fa"; }
+.bi-dice-5::before { content: "\f2fb"; }
+.bi-dice-6-fill::before { content: "\f2fc"; }
+.bi-dice-6::before { content: "\f2fd"; }
+.bi-disc-fill::before { content: "\f2fe"; }
+.bi-disc::before { content: "\f2ff"; }
+.bi-discord::before { content: "\f300"; }
+.bi-display-fill::before { content: "\f301"; }
+.bi-display::before { content: "\f302"; }
+.bi-distribute-horizontal::before { content: "\f303"; }
+.bi-distribute-vertical::before { content: "\f304"; }
+.bi-door-closed-fill::before { content: "\f305"; }
+.bi-door-closed::before { content: "\f306"; }
+.bi-door-open-fill::before { content: "\f307"; }
+.bi-door-open::before { content: "\f308"; }
+.bi-dot::before { content: "\f309"; }
+.bi-download::before { content: "\f30a"; }
+.bi-droplet-fill::before { content: "\f30b"; }
+.bi-droplet-half::before { content: "\f30c"; }
+.bi-droplet::before { content: "\f30d"; }
+.bi-earbuds::before { content: "\f30e"; }
+.bi-easel-fill::before { content: "\f30f"; }
+.bi-easel::before { content: "\f310"; }
+.bi-egg-fill::before { content: "\f311"; }
+.bi-egg-fried::before { content: "\f312"; }
+.bi-egg::before { content: "\f313"; }
+.bi-eject-fill::before { content: "\f314"; }
+.bi-eject::before { content: "\f315"; }
+.bi-emoji-angry-fill::before { content: "\f316"; }
+.bi-emoji-angry::before { content: "\f317"; }
+.bi-emoji-dizzy-fill::before { content: "\f318"; }
+.bi-emoji-dizzy::before { content: "\f319"; }
+.bi-emoji-expressionless-fill::before { content: "\f31a"; }
+.bi-emoji-expressionless::before { content: "\f31b"; }
+.bi-emoji-frown-fill::before { content: "\f31c"; }
+.bi-emoji-frown::before { content: "\f31d"; }
+.bi-emoji-heart-eyes-fill::before { content: "\f31e"; }
+.bi-emoji-heart-eyes::before { content: "\f31f"; }
+.bi-emoji-laughing-fill::before { content: "\f320"; }
+.bi-emoji-laughing::before { content: "\f321"; }
+.bi-emoji-neutral-fill::before { content: "\f322"; }
+.bi-emoji-neutral::before { content: "\f323"; }
+.bi-emoji-smile-fill::before { content: "\f324"; }
+.bi-emoji-smile-upside-down-fill::before { content: "\f325"; }
+.bi-emoji-smile-upside-down::before { content: "\f326"; }
+.bi-emoji-smile::before { content: "\f327"; }
+.bi-emoji-sunglasses-fill::before { content: "\f328"; }
+.bi-emoji-sunglasses::before { content: "\f329"; }
+.bi-emoji-wink-fill::before { content: "\f32a"; }
+.bi-emoji-wink::before { content: "\f32b"; }
+.bi-envelope-fill::before { content: "\f32c"; }
+.bi-envelope-open-fill::before { content: "\f32d"; }
+.bi-envelope-open::before { content: "\f32e"; }
+.bi-envelope::before { content: "\f32f"; }
+.bi-eraser-fill::before { content: "\f330"; }
+.bi-eraser::before { content: "\f331"; }
+.bi-exclamation-circle-fill::before { content: "\f332"; }
+.bi-exclamation-circle::before { content: "\f333"; }
+.bi-exclamation-diamond-fill::before { content: "\f334"; }
+.bi-exclamation-diamond::before { content: "\f335"; }
+.bi-exclamation-octagon-fill::before { content: "\f336"; }
+.bi-exclamation-octagon::before { content: "\f337"; }
+.bi-exclamation-square-fill::before { content: "\f338"; }
+.bi-exclamation-square::before { content: "\f339"; }
+.bi-exclamation-triangle-fill::before { content: "\f33a"; }
+.bi-exclamation-triangle::before { content: "\f33b"; }
+.bi-exclamation::before { content: "\f33c"; }
+.bi-exclude::before { content: "\f33d"; }
+.bi-eye-fill::before { content: "\f33e"; }
+.bi-eye-slash-fill::before { content: "\f33f"; }
+.bi-eye-slash::before { content: "\f340"; }
+.bi-eye::before { content: "\f341"; }
+.bi-eyedropper::before { content: "\f342"; }
+.bi-eyeglasses::before { content: "\f343"; }
+.bi-facebook::before { content: "\f344"; }
+.bi-file-arrow-down-fill::before { content: "\f345"; }
+.bi-file-arrow-down::before { content: "\f346"; }
+.bi-file-arrow-up-fill::before { content: "\f347"; }
+.bi-file-arrow-up::before { content: "\f348"; }
+.bi-file-bar-graph-fill::before { content: "\f349"; }
+.bi-file-bar-graph::before { content: "\f34a"; }
+.bi-file-binary-fill::before { content: "\f34b"; }
+.bi-file-binary::before { content: "\f34c"; }
+.bi-file-break-fill::before { content: "\f34d"; }
+.bi-file-break::before { content: "\f34e"; }
+.bi-file-check-fill::before { content: "\f34f"; }
+.bi-file-check::before { content: "\f350"; }
+.bi-file-code-fill::before { content: "\f351"; }
+.bi-file-code::before { content: "\f352"; }
+.bi-file-diff-fill::before { content: "\f353"; }
+.bi-file-diff::before { content: "\f354"; }
+.bi-file-earmark-arrow-down-fill::before { content: "\f355"; }
+.bi-file-earmark-arrow-down::before { content: "\f356"; }
+.bi-file-earmark-arrow-up-fill::before { content: "\f357"; }
+.bi-file-earmark-arrow-up::before { content: "\f358"; }
+.bi-file-earmark-bar-graph-fill::before { content: "\f359"; }
+.bi-file-earmark-bar-graph::before { content: "\f35a"; }
+.bi-file-earmark-binary-fill::before { content: "\f35b"; }
+.bi-file-earmark-binary::before { content: "\f35c"; }
+.bi-file-earmark-break-fill::before { content: "\f35d"; }
+.bi-file-earmark-break::before { content: "\f35e"; }
+.bi-file-earmark-check-fill::before { content: "\f35f"; }
+.bi-file-earmark-check::before { content: "\f360"; }
+.bi-file-earmark-code-fill::before { content: "\f361"; }
+.bi-file-earmark-code::before { content: "\f362"; }
+.bi-file-earmark-diff-fill::before { content: "\f363"; }
+.bi-file-earmark-diff::before { content: "\f364"; }
+.bi-file-earmark-easel-fill::before { content: "\f365"; }
+.bi-file-earmark-easel::before { content: "\f366"; }
+.bi-file-earmark-excel-fill::before { content: "\f367"; }
+.bi-file-earmark-excel::before { content: "\f368"; }
+.bi-file-earmark-fill::before { content: "\f369"; }
+.bi-file-earmark-font-fill::before { content: "\f36a"; }
+.bi-file-earmark-font::before { content: "\f36b"; }
+.bi-file-earmark-image-fill::before { content: "\f36c"; }
+.bi-file-earmark-image::before { content: "\f36d"; }
+.bi-file-earmark-lock-fill::before { content: "\f36e"; }
+.bi-file-earmark-lock::before { content: "\f36f"; }
+.bi-file-earmark-lock2-fill::before { content: "\f370"; }
+.bi-file-earmark-lock2::before { content: "\f371"; }
+.bi-file-earmark-medical-fill::before { content: "\f372"; }
+.bi-file-earmark-medical::before { content: "\f373"; }
+.bi-file-earmark-minus-fill::before { content: "\f374"; }
+.bi-file-earmark-minus::before { content: "\f375"; }
+.bi-file-earmark-music-fill::before { content: "\f376"; }
+.bi-file-earmark-music::before { content: "\f377"; }
+.bi-file-earmark-person-fill::before { content: "\f378"; }
+.bi-file-earmark-person::before { content: "\f379"; }
+.bi-file-earmark-play-fill::before { content: "\f37a"; }
+.bi-file-earmark-play::before { content: "\f37b"; }
+.bi-file-earmark-plus-fill::before { content: "\f37c"; }
+.bi-file-earmark-plus::before { content: "\f37d"; }
+.bi-file-earmark-post-fill::before { content: "\f37e"; }
+.bi-file-earmark-post::before { content: "\f37f"; }
+.bi-file-earmark-ppt-fill::before { content: "\f380"; }
+.bi-file-earmark-ppt::before { content: "\f381"; }
+.bi-file-earmark-richtext-fill::before { content: "\f382"; }
+.bi-file-earmark-richtext::before { content: "\f383"; }
+.bi-file-earmark-ruled-fill::before { content: "\f384"; }
+.bi-file-earmark-ruled::before { content: "\f385"; }
+.bi-file-earmark-slides-fill::before { content: "\f386"; }
+.bi-file-earmark-slides::before { content: "\f387"; }
+.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; }
+.bi-file-earmark-spreadsheet::before { content: "\f389"; }
+.bi-file-earmark-text-fill::before { content: "\f38a"; }
+.bi-file-earmark-text::before { content: "\f38b"; }
+.bi-file-earmark-word-fill::before { content: "\f38c"; }
+.bi-file-earmark-word::before { content: "\f38d"; }
+.bi-file-earmark-x-fill::before { content: "\f38e"; }
+.bi-file-earmark-x::before { content: "\f38f"; }
+.bi-file-earmark-zip-fill::before { content: "\f390"; }
+.bi-file-earmark-zip::before { content: "\f391"; }
+.bi-file-earmark::before { content: "\f392"; }
+.bi-file-easel-fill::before { content: "\f393"; }
+.bi-file-easel::before { content: "\f394"; }
+.bi-file-excel-fill::before { content: "\f395"; }
+.bi-file-excel::before { content: "\f396"; }
+.bi-file-fill::before { content: "\f397"; }
+.bi-file-font-fill::before { content: "\f398"; }
+.bi-file-font::before { content: "\f399"; }
+.bi-file-image-fill::before { content: "\f39a"; }
+.bi-file-image::before { content: "\f39b"; }
+.bi-file-lock-fill::before { content: "\f39c"; }
+.bi-file-lock::before { content: "\f39d"; }
+.bi-file-lock2-fill::before { content: "\f39e"; }
+.bi-file-lock2::before { content: "\f39f"; }
+.bi-file-medical-fill::before { content: "\f3a0"; }
+.bi-file-medical::before { content: "\f3a1"; }
+.bi-file-minus-fill::before { content: "\f3a2"; }
+.bi-file-minus::before { content: "\f3a3"; }
+.bi-file-music-fill::before { content: "\f3a4"; }
+.bi-file-music::before { content: "\f3a5"; }
+.bi-file-person-fill::before { content: "\f3a6"; }
+.bi-file-person::before { content: "\f3a7"; }
+.bi-file-play-fill::before { content: "\f3a8"; }
+.bi-file-play::before { content: "\f3a9"; }
+.bi-file-plus-fill::before { content: "\f3aa"; }
+.bi-file-plus::before { content: "\f3ab"; }
+.bi-file-post-fill::before { content: "\f3ac"; }
+.bi-file-post::before { content: "\f3ad"; }
+.bi-file-ppt-fill::before { content: "\f3ae"; }
+.bi-file-ppt::before { content: "\f3af"; }
+.bi-file-richtext-fill::before { content: "\f3b0"; }
+.bi-file-richtext::before { content: "\f3b1"; }
+.bi-file-ruled-fill::before { content: "\f3b2"; }
+.bi-file-ruled::before { content: "\f3b3"; }
+.bi-file-slides-fill::before { content: "\f3b4"; }
+.bi-file-slides::before { content: "\f3b5"; }
+.bi-file-spreadsheet-fill::before { content: "\f3b6"; }
+.bi-file-spreadsheet::before { content: "\f3b7"; }
+.bi-file-text-fill::before { content: "\f3b8"; }
+.bi-file-text::before { content: "\f3b9"; }
+.bi-file-word-fill::before { content: "\f3ba"; }
+.bi-file-word::before { content: "\f3bb"; }
+.bi-file-x-fill::before { content: "\f3bc"; }
+.bi-file-x::before { content: "\f3bd"; }
+.bi-file-zip-fill::before { content: "\f3be"; }
+.bi-file-zip::before { content: "\f3bf"; }
+.bi-file::before { content: "\f3c0"; }
+.bi-files-alt::before { content: "\f3c1"; }
+.bi-files::before { content: "\f3c2"; }
+.bi-film::before { content: "\f3c3"; }
+.bi-filter-circle-fill::before { content: "\f3c4"; }
+.bi-filter-circle::before { content: "\f3c5"; }
+.bi-filter-left::before { content: "\f3c6"; }
+.bi-filter-right::before { content: "\f3c7"; }
+.bi-filter-square-fill::before { content: "\f3c8"; }
+.bi-filter-square::before { content: "\f3c9"; }
+.bi-filter::before { content: "\f3ca"; }
+.bi-flag-fill::before { content: "\f3cb"; }
+.bi-flag::before { content: "\f3cc"; }
+.bi-flower1::before { content: "\f3cd"; }
+.bi-flower2::before { content: "\f3ce"; }
+.bi-flower3::before { content: "\f3cf"; }
+.bi-folder-check::before { content: "\f3d0"; }
+.bi-folder-fill::before { content: "\f3d1"; }
+.bi-folder-minus::before { content: "\f3d2"; }
+.bi-folder-plus::before { content: "\f3d3"; }
+.bi-folder-symlink-fill::before { content: "\f3d4"; }
+.bi-folder-symlink::before { content: "\f3d5"; }
+.bi-folder-x::before { content: "\f3d6"; }
+.bi-folder::before { content: "\f3d7"; }
+.bi-folder2-open::before { content: "\f3d8"; }
+.bi-folder2::before { content: "\f3d9"; }
+.bi-fonts::before { content: "\f3da"; }
+.bi-forward-fill::before { content: "\f3db"; }
+.bi-forward::before { content: "\f3dc"; }
+.bi-front::before { content: "\f3dd"; }
+.bi-fullscreen-exit::before { content: "\f3de"; }
+.bi-fullscreen::before { content: "\f3df"; }
+.bi-funnel-fill::before { content: "\f3e0"; }
+.bi-funnel::before { content: "\f3e1"; }
+.bi-gear-fill::before { content: "\f3e2"; }
+.bi-gear-wide-connected::before { content: "\f3e3"; }
+.bi-gear-wide::before { content: "\f3e4"; }
+.bi-gear::before { content: "\f3e5"; }
+.bi-gem::before { content: "\f3e6"; }
+.bi-geo-alt-fill::before { content: "\f3e7"; }
+.bi-geo-alt::before { content: "\f3e8"; }
+.bi-geo-fill::before { content: "\f3e9"; }
+.bi-geo::before { content: "\f3ea"; }
+.bi-gift-fill::before { content: "\f3eb"; }
+.bi-gift::before { content: "\f3ec"; }
+.bi-github::before { content: "\f3ed"; }
+.bi-globe::before { content: "\f3ee"; }
+.bi-globe2::before { content: "\f3ef"; }
+.bi-google::before { content: "\f3f0"; }
+.bi-graph-down::before { content: "\f3f1"; }
+.bi-graph-up::before { content: "\f3f2"; }
+.bi-grid-1x2-fill::before { content: "\f3f3"; }
+.bi-grid-1x2::before { content: "\f3f4"; }
+.bi-grid-3x2-gap-fill::before { content: "\f3f5"; }
+.bi-grid-3x2-gap::before { content: "\f3f6"; }
+.bi-grid-3x2::before { content: "\f3f7"; }
+.bi-grid-3x3-gap-fill::before { content: "\f3f8"; }
+.bi-grid-3x3-gap::before { content: "\f3f9"; }
+.bi-grid-3x3::before { content: "\f3fa"; }
+.bi-grid-fill::before { content: "\f3fb"; }
+.bi-grid::before { content: "\f3fc"; }
+.bi-grip-horizontal::before { content: "\f3fd"; }
+.bi-grip-vertical::before { content: "\f3fe"; }
+.bi-hammer::before { content: "\f3ff"; }
+.bi-hand-index-fill::before { content: "\f400"; }
+.bi-hand-index-thumb-fill::before { content: "\f401"; }
+.bi-hand-index-thumb::before { content: "\f402"; }
+.bi-hand-index::before { content: "\f403"; }
+.bi-hand-thumbs-down-fill::before { content: "\f404"; }
+.bi-hand-thumbs-down::before { content: "\f405"; }
+.bi-hand-thumbs-up-fill::before { content: "\f406"; }
+.bi-hand-thumbs-up::before { content: "\f407"; }
+.bi-handbag-fill::before { content: "\f408"; }
+.bi-handbag::before { content: "\f409"; }
+.bi-hash::before { content: "\f40a"; }
+.bi-hdd-fill::before { content: "\f40b"; }
+.bi-hdd-network-fill::before { content: "\f40c"; }
+.bi-hdd-network::before { content: "\f40d"; }
+.bi-hdd-rack-fill::before { content: "\f40e"; }
+.bi-hdd-rack::before { content: "\f40f"; }
+.bi-hdd-stack-fill::before { content: "\f410"; }
+.bi-hdd-stack::before { content: "\f411"; }
+.bi-hdd::before { content: "\f412"; }
+.bi-headphones::before { content: "\f413"; }
+.bi-headset::before { content: "\f414"; }
+.bi-heart-fill::before { content: "\f415"; }
+.bi-heart-half::before { content: "\f416"; }
+.bi-heart::before { content: "\f417"; }
+.bi-heptagon-fill::before { content: "\f418"; }
+.bi-heptagon-half::before { content: "\f419"; }
+.bi-heptagon::before { content: "\f41a"; }
+.bi-hexagon-fill::before { content: "\f41b"; }
+.bi-hexagon-half::before { content: "\f41c"; }
+.bi-hexagon::before { content: "\f41d"; }
+.bi-hourglass-bottom::before { content: "\f41e"; }
+.bi-hourglass-split::before { content: "\f41f"; }
+.bi-hourglass-top::before { content: "\f420"; }
+.bi-hourglass::before { content: "\f421"; }
+.bi-house-door-fill::before { content: "\f422"; }
+.bi-house-door::before { content: "\f423"; }
+.bi-house-fill::before { content: "\f424"; }
+.bi-house::before { content: "\f425"; }
+.bi-hr::before { content: "\f426"; }
+.bi-hurricane::before { content: "\f427"; }
+.bi-image-alt::before { content: "\f428"; }
+.bi-image-fill::before { content: "\f429"; }
+.bi-image::before { content: "\f42a"; }
+.bi-images::before { content: "\f42b"; }
+.bi-inbox-fill::before { content: "\f42c"; }
+.bi-inbox::before { content: "\f42d"; }
+.bi-inboxes-fill::before { content: "\f42e"; }
+.bi-inboxes::before { content: "\f42f"; }
+.bi-info-circle-fill::before { content: "\f430"; }
+.bi-info-circle::before { content: "\f431"; }
+.bi-info-square-fill::before { content: "\f432"; }
+.bi-info-square::before { content: "\f433"; }
+.bi-info::before { content: "\f434"; }
+.bi-input-cursor-text::before { content: "\f435"; }
+.bi-input-cursor::before { content: "\f436"; }
+.bi-instagram::before { content: "\f437"; }
+.bi-intersect::before { content: "\f438"; }
+.bi-journal-album::before { content: "\f439"; }
+.bi-journal-arrow-down::before { content: "\f43a"; }
+.bi-journal-arrow-up::before { content: "\f43b"; }
+.bi-journal-bookmark-fill::before { content: "\f43c"; }
+.bi-journal-bookmark::before { content: "\f43d"; }
+.bi-journal-check::before { content: "\f43e"; }
+.bi-journal-code::before { content: "\f43f"; }
+.bi-journal-medical::before { content: "\f440"; }
+.bi-journal-minus::before { content: "\f441"; }
+.bi-journal-plus::before { content: "\f442"; }
+.bi-journal-richtext::before { content: "\f443"; }
+.bi-journal-text::before { content: "\f444"; }
+.bi-journal-x::before { content: "\f445"; }
+.bi-journal::before { content: "\f446"; }
+.bi-journals::before { content: "\f447"; }
+.bi-joystick::before { content: "\f448"; }
+.bi-justify-left::before { content: "\f449"; }
+.bi-justify-right::before { content: "\f44a"; }
+.bi-justify::before { content: "\f44b"; }
+.bi-kanban-fill::before { content: "\f44c"; }
+.bi-kanban::before { content: "\f44d"; }
+.bi-key-fill::before { content: "\f44e"; }
+.bi-key::before { content: "\f44f"; }
+.bi-keyboard-fill::before { content: "\f450"; }
+.bi-keyboard::before { content: "\f451"; }
+.bi-ladder::before { content: "\f452"; }
+.bi-lamp-fill::before { content: "\f453"; }
+.bi-lamp::before { content: "\f454"; }
+.bi-laptop-fill::before { content: "\f455"; }
+.bi-laptop::before { content: "\f456"; }
+.bi-layer-backward::before { content: "\f457"; }
+.bi-layer-forward::before { content: "\f458"; }
+.bi-layers-fill::before { content: "\f459"; }
+.bi-layers-half::before { content: "\f45a"; }
+.bi-layers::before { content: "\f45b"; }
+.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; }
+.bi-layout-sidebar-inset::before { content: "\f45d"; }
+.bi-layout-sidebar-reverse::before { content: "\f45e"; }
+.bi-layout-sidebar::before { content: "\f45f"; }
+.bi-layout-split::before { content: "\f460"; }
+.bi-layout-text-sidebar-reverse::before { content: "\f461"; }
+.bi-layout-text-sidebar::before { content: "\f462"; }
+.bi-layout-text-window-reverse::before { content: "\f463"; }
+.bi-layout-text-window::before { content: "\f464"; }
+.bi-layout-three-columns::before { content: "\f465"; }
+.bi-layout-wtf::before { content: "\f466"; }
+.bi-life-preserver::before { content: "\f467"; }
+.bi-lightbulb-fill::before { content: "\f468"; }
+.bi-lightbulb-off-fill::before { content: "\f469"; }
+.bi-lightbulb-off::before { content: "\f46a"; }
+.bi-lightbulb::before { content: "\f46b"; }
+.bi-lightning-charge-fill::before { content: "\f46c"; }
+.bi-lightning-charge::before { content: "\f46d"; }
+.bi-lightning-fill::before { content: "\f46e"; }
+.bi-lightning::before { content: "\f46f"; }
+.bi-link-45deg::before { content: "\f470"; }
+.bi-link::before { content: "\f471"; }
+.bi-linkedin::before { content: "\f472"; }
+.bi-list-check::before { content: "\f473"; }
+.bi-list-nested::before { content: "\f474"; }
+.bi-list-ol::before { content: "\f475"; }
+.bi-list-stars::before { content: "\f476"; }
+.bi-list-task::before { content: "\f477"; }
+.bi-list-ul::before { content: "\f478"; }
+.bi-list::before { content: "\f479"; }
+.bi-lock-fill::before { content: "\f47a"; }
+.bi-lock::before { content: "\f47b"; }
+.bi-mailbox::before { content: "\f47c"; }
+.bi-mailbox2::before { content: "\f47d"; }
+.bi-map-fill::before { content: "\f47e"; }
+.bi-map::before { content: "\f47f"; }
+.bi-markdown-fill::before { content: "\f480"; }
+.bi-markdown::before { content: "\f481"; }
+.bi-mask::before { content: "\f482"; }
+.bi-megaphone-fill::before { content: "\f483"; }
+.bi-megaphone::before { content: "\f484"; }
+.bi-menu-app-fill::before { content: "\f485"; }
+.bi-menu-app::before { content: "\f486"; }
+.bi-menu-button-fill::before { content: "\f487"; }
+.bi-menu-button-wide-fill::before { content: "\f488"; }
+.bi-menu-button-wide::before { content: "\f489"; }
+.bi-menu-button::before { content: "\f48a"; }
+.bi-menu-down::before { content: "\f48b"; }
+.bi-menu-up::before { content: "\f48c"; }
+.bi-mic-fill::before { content: "\f48d"; }
+.bi-mic-mute-fill::before { content: "\f48e"; }
+.bi-mic-mute::before { content: "\f48f"; }
+.bi-mic::before { content: "\f490"; }
+.bi-minecart-loaded::before { content: "\f491"; }
+.bi-minecart::before { content: "\f492"; }
+.bi-moisture::before { content: "\f493"; }
+.bi-moon-fill::before { content: "\f494"; }
+.bi-moon-stars-fill::before { content: "\f495"; }
+.bi-moon-stars::before { content: "\f496"; }
+.bi-moon::before { content: "\f497"; }
+.bi-mouse-fill::before { content: "\f498"; }
+.bi-mouse::before { content: "\f499"; }
+.bi-mouse2-fill::before { content: "\f49a"; }
+.bi-mouse2::before { content: "\f49b"; }
+.bi-mouse3-fill::before { content: "\f49c"; }
+.bi-mouse3::before { content: "\f49d"; }
+.bi-music-note-beamed::before { content: "\f49e"; }
+.bi-music-note-list::before { content: "\f49f"; }
+.bi-music-note::before { content: "\f4a0"; }
+.bi-music-player-fill::before { content: "\f4a1"; }
+.bi-music-player::before { content: "\f4a2"; }
+.bi-newspaper::before { content: "\f4a3"; }
+.bi-node-minus-fill::before { content: "\f4a4"; }
+.bi-node-minus::before { content: "\f4a5"; }
+.bi-node-plus-fill::before { content: "\f4a6"; }
+.bi-node-plus::before { content: "\f4a7"; }
+.bi-nut-fill::before { content: "\f4a8"; }
+.bi-nut::before { content: "\f4a9"; }
+.bi-octagon-fill::before { content: "\f4aa"; }
+.bi-octagon-half::before { content: "\f4ab"; }
+.bi-octagon::before { content: "\f4ac"; }
+.bi-option::before { content: "\f4ad"; }
+.bi-outlet::before { content: "\f4ae"; }
+.bi-paint-bucket::before { content: "\f4af"; }
+.bi-palette-fill::before { content: "\f4b0"; }
+.bi-palette::before { content: "\f4b1"; }
+.bi-palette2::before { content: "\f4b2"; }
+.bi-paperclip::before { content: "\f4b3"; }
+.bi-paragraph::before { content: "\f4b4"; }
+.bi-patch-check-fill::before { content: "\f4b5"; }
+.bi-patch-check::before { content: "\f4b6"; }
+.bi-patch-exclamation-fill::before { content: "\f4b7"; }
+.bi-patch-exclamation::before { content: "\f4b8"; }
+.bi-patch-minus-fill::before { content: "\f4b9"; }
+.bi-patch-minus::before { content: "\f4ba"; }
+.bi-patch-plus-fill::before { content: "\f4bb"; }
+.bi-patch-plus::before { content: "\f4bc"; }
+.bi-patch-question-fill::before { content: "\f4bd"; }
+.bi-patch-question::before { content: "\f4be"; }
+.bi-pause-btn-fill::before { content: "\f4bf"; }
+.bi-pause-btn::before { content: "\f4c0"; }
+.bi-pause-circle-fill::before { content: "\f4c1"; }
+.bi-pause-circle::before { content: "\f4c2"; }
+.bi-pause-fill::before { content: "\f4c3"; }
+.bi-pause::before { content: "\f4c4"; }
+.bi-peace-fill::before { content: "\f4c5"; }
+.bi-peace::before { content: "\f4c6"; }
+.bi-pen-fill::before { content: "\f4c7"; }
+.bi-pen::before { content: "\f4c8"; }
+.bi-pencil-fill::before { content: "\f4c9"; }
+.bi-pencil-square::before { content: "\f4ca"; }
+.bi-pencil::before { content: "\f4cb"; }
+.bi-pentagon-fill::before { content: "\f4cc"; }
+.bi-pentagon-half::before { content: "\f4cd"; }
+.bi-pentagon::before { content: "\f4ce"; }
+.bi-people-fill::before { content: "\f4cf"; }
+.bi-people::before { content: "\f4d0"; }
+.bi-percent::before { content: "\f4d1"; }
+.bi-person-badge-fill::before { content: "\f4d2"; }
+.bi-person-badge::before { content: "\f4d3"; }
+.bi-person-bounding-box::before { content: "\f4d4"; }
+.bi-person-check-fill::before { content: "\f4d5"; }
+.bi-person-check::before { content: "\f4d6"; }
+.bi-person-circle::before { content: "\f4d7"; }
+.bi-person-dash-fill::before { content: "\f4d8"; }
+.bi-person-dash::before { content: "\f4d9"; }
+.bi-person-fill::before { content: "\f4da"; }
+.bi-person-lines-fill::before { content: "\f4db"; }
+.bi-person-plus-fill::before { content: "\f4dc"; }
+.bi-person-plus::before { content: "\f4dd"; }
+.bi-person-square::before { content: "\f4de"; }
+.bi-person-x-fill::before { content: "\f4df"; }
+.bi-person-x::before { content: "\f4e0"; }
+.bi-person::before { content: "\f4e1"; }
+.bi-phone-fill::before { content: "\f4e2"; }
+.bi-phone-landscape-fill::before { content: "\f4e3"; }
+.bi-phone-landscape::before { content: "\f4e4"; }
+.bi-phone-vibrate-fill::before { content: "\f4e5"; }
+.bi-phone-vibrate::before { content: "\f4e6"; }
+.bi-phone::before { content: "\f4e7"; }
+.bi-pie-chart-fill::before { content: "\f4e8"; }
+.bi-pie-chart::before { content: "\f4e9"; }
+.bi-pin-angle-fill::before { content: "\f4ea"; }
+.bi-pin-angle::before { content: "\f4eb"; }
+.bi-pin-fill::before { content: "\f4ec"; }
+.bi-pin::before { content: "\f4ed"; }
+.bi-pip-fill::before { content: "\f4ee"; }
+.bi-pip::before { content: "\f4ef"; }
+.bi-play-btn-fill::before { content: "\f4f0"; }
+.bi-play-btn::before { content: "\f4f1"; }
+.bi-play-circle-fill::before { content: "\f4f2"; }
+.bi-play-circle::before { content: "\f4f3"; }
+.bi-play-fill::before { content: "\f4f4"; }
+.bi-play::before { content: "\f4f5"; }
+.bi-plug-fill::before { content: "\f4f6"; }
+.bi-plug::before { content: "\f4f7"; }
+.bi-plus-circle-dotted::before { content: "\f4f8"; }
+.bi-plus-circle-fill::before { content: "\f4f9"; }
+.bi-plus-circle::before { content: "\f4fa"; }
+.bi-plus-square-dotted::before { content: "\f4fb"; }
+.bi-plus-square-fill::before { content: "\f4fc"; }
+.bi-plus-square::before { content: "\f4fd"; }
+.bi-plus::before { content: "\f4fe"; }
+.bi-power::before { content: "\f4ff"; }
+.bi-printer-fill::before { content: "\f500"; }
+.bi-printer::before { content: "\f501"; }
+.bi-puzzle-fill::before { content: "\f502"; }
+.bi-puzzle::before { content: "\f503"; }
+.bi-question-circle-fill::before { content: "\f504"; }
+.bi-question-circle::before { content: "\f505"; }
+.bi-question-diamond-fill::before { content: "\f506"; }
+.bi-question-diamond::before { content: "\f507"; }
+.bi-question-octagon-fill::before { content: "\f508"; }
+.bi-question-octagon::before { content: "\f509"; }
+.bi-question-square-fill::before { content: "\f50a"; }
+.bi-question-square::before { content: "\f50b"; }
+.bi-question::before { content: "\f50c"; }
+.bi-rainbow::before { content: "\f50d"; }
+.bi-receipt-cutoff::before { content: "\f50e"; }
+.bi-receipt::before { content: "\f50f"; }
+.bi-reception-0::before { content: "\f510"; }
+.bi-reception-1::before { content: "\f511"; }
+.bi-reception-2::before { content: "\f512"; }
+.bi-reception-3::before { content: "\f513"; }
+.bi-reception-4::before { content: "\f514"; }
+.bi-record-btn-fill::before { content: "\f515"; }
+.bi-record-btn::before { content: "\f516"; }
+.bi-record-circle-fill::before { content: "\f517"; }
+.bi-record-circle::before { content: "\f518"; }
+.bi-record-fill::before { content: "\f519"; }
+.bi-record::before { content: "\f51a"; }
+.bi-record2-fill::before { content: "\f51b"; }
+.bi-record2::before { content: "\f51c"; }
+.bi-reply-all-fill::before { content: "\f51d"; }
+.bi-reply-all::before { content: "\f51e"; }
+.bi-reply-fill::before { content: "\f51f"; }
+.bi-reply::before { content: "\f520"; }
+.bi-rss-fill::before { content: "\f521"; }
+.bi-rss::before { content: "\f522"; }
+.bi-rulers::before { content: "\f523"; }
+.bi-save-fill::before { content: "\f524"; }
+.bi-save::before { content: "\f525"; }
+.bi-save2-fill::before { content: "\f526"; }
+.bi-save2::before { content: "\f527"; }
+.bi-scissors::before { content: "\f528"; }
+.bi-screwdriver::before { content: "\f529"; }
+.bi-search::before { content: "\f52a"; }
+.bi-segmented-nav::before { content: "\f52b"; }
+.bi-server::before { content: "\f52c"; }
+.bi-share-fill::before { content: "\f52d"; }
+.bi-share::before { content: "\f52e"; }
+.bi-shield-check::before { content: "\f52f"; }
+.bi-shield-exclamation::before { content: "\f530"; }
+.bi-shield-fill-check::before { content: "\f531"; }
+.bi-shield-fill-exclamation::before { content: "\f532"; }
+.bi-shield-fill-minus::before { content: "\f533"; }
+.bi-shield-fill-plus::before { content: "\f534"; }
+.bi-shield-fill-x::before { content: "\f535"; }
+.bi-shield-fill::before { content: "\f536"; }
+.bi-shield-lock-fill::before { content: "\f537"; }
+.bi-shield-lock::before { content: "\f538"; }
+.bi-shield-minus::before { content: "\f539"; }
+.bi-shield-plus::before { content: "\f53a"; }
+.bi-shield-shaded::before { content: "\f53b"; }
+.bi-shield-slash-fill::before { content: "\f53c"; }
+.bi-shield-slash::before { content: "\f53d"; }
+.bi-shield-x::before { content: "\f53e"; }
+.bi-shield::before { content: "\f53f"; }
+.bi-shift-fill::before { content: "\f540"; }
+.bi-shift::before { content: "\f541"; }
+.bi-shop-window::before { content: "\f542"; }
+.bi-shop::before { content: "\f543"; }
+.bi-shuffle::before { content: "\f544"; }
+.bi-signpost-2-fill::before { content: "\f545"; }
+.bi-signpost-2::before { content: "\f546"; }
+.bi-signpost-fill::before { content: "\f547"; }
+.bi-signpost-split-fill::before { content: "\f548"; }
+.bi-signpost-split::before { content: "\f549"; }
+.bi-signpost::before { content: "\f54a"; }
+.bi-sim-fill::before { content: "\f54b"; }
+.bi-sim::before { content: "\f54c"; }
+.bi-skip-backward-btn-fill::before { content: "\f54d"; }
+.bi-skip-backward-btn::before { content: "\f54e"; }
+.bi-skip-backward-circle-fill::before { content: "\f54f"; }
+.bi-skip-backward-circle::before { content: "\f550"; }
+.bi-skip-backward-fill::before { content: "\f551"; }
+.bi-skip-backward::before { content: "\f552"; }
+.bi-skip-end-btn-fill::before { content: "\f553"; }
+.bi-skip-end-btn::before { content: "\f554"; }
+.bi-skip-end-circle-fill::before { content: "\f555"; }
+.bi-skip-end-circle::before { content: "\f556"; }
+.bi-skip-end-fill::before { content: "\f557"; }
+.bi-skip-end::before { content: "\f558"; }
+.bi-skip-forward-btn-fill::before { content: "\f559"; }
+.bi-skip-forward-btn::before { content: "\f55a"; }
+.bi-skip-forward-circle-fill::before { content: "\f55b"; }
+.bi-skip-forward-circle::before { content: "\f55c"; }
+.bi-skip-forward-fill::before { content: "\f55d"; }
+.bi-skip-forward::before { content: "\f55e"; }
+.bi-skip-start-btn-fill::before { content: "\f55f"; }
+.bi-skip-start-btn::before { content: "\f560"; }
+.bi-skip-start-circle-fill::before { content: "\f561"; }
+.bi-skip-start-circle::before { content: "\f562"; }
+.bi-skip-start-fill::before { content: "\f563"; }
+.bi-skip-start::before { content: "\f564"; }
+.bi-slack::before { content: "\f565"; }
+.bi-slash-circle-fill::before { content: "\f566"; }
+.bi-slash-circle::before { content: "\f567"; }
+.bi-slash-square-fill::before { content: "\f568"; }
+.bi-slash-square::before { content: "\f569"; }
+.bi-slash::before { content: "\f56a"; }
+.bi-sliders::before { content: "\f56b"; }
+.bi-smartwatch::before { content: "\f56c"; }
+.bi-snow::before { content: "\f56d"; }
+.bi-snow2::before { content: "\f56e"; }
+.bi-snow3::before { content: "\f56f"; }
+.bi-sort-alpha-down-alt::before { content: "\f570"; }
+.bi-sort-alpha-down::before { content: "\f571"; }
+.bi-sort-alpha-up-alt::before { content: "\f572"; }
+.bi-sort-alpha-up::before { content: "\f573"; }
+.bi-sort-down-alt::before { content: "\f574"; }
+.bi-sort-down::before { content: "\f575"; }
+.bi-sort-numeric-down-alt::before { content: "\f576"; }
+.bi-sort-numeric-down::before { content: "\f577"; }
+.bi-sort-numeric-up-alt::before { content: "\f578"; }
+.bi-sort-numeric-up::before { content: "\f579"; }
+.bi-sort-up-alt::before { content: "\f57a"; }
+.bi-sort-up::before { content: "\f57b"; }
+.bi-soundwave::before { content: "\f57c"; }
+.bi-speaker-fill::before { content: "\f57d"; }
+.bi-speaker::before { content: "\f57e"; }
+.bi-speedometer::before { content: "\f57f"; }
+.bi-speedometer2::before { content: "\f580"; }
+.bi-spellcheck::before { content: "\f581"; }
+.bi-square-fill::before { content: "\f582"; }
+.bi-square-half::before { content: "\f583"; }
+.bi-square::before { content: "\f584"; }
+.bi-stack::before { content: "\f585"; }
+.bi-star-fill::before { content: "\f586"; }
+.bi-star-half::before { content: "\f587"; }
+.bi-star::before { content: "\f588"; }
+.bi-stars::before { content: "\f589"; }
+.bi-stickies-fill::before { content: "\f58a"; }
+.bi-stickies::before { content: "\f58b"; }
+.bi-sticky-fill::before { content: "\f58c"; }
+.bi-sticky::before { content: "\f58d"; }
+.bi-stop-btn-fill::before { content: "\f58e"; }
+.bi-stop-btn::before { content: "\f58f"; }
+.bi-stop-circle-fill::before { content: "\f590"; }
+.bi-stop-circle::before { content: "\f591"; }
+.bi-stop-fill::before { content: "\f592"; }
+.bi-stop::before { content: "\f593"; }
+.bi-stoplights-fill::before { content: "\f594"; }
+.bi-stoplights::before { content: "\f595"; }
+.bi-stopwatch-fill::before { content: "\f596"; }
+.bi-stopwatch::before { content: "\f597"; }
+.bi-subtract::before { content: "\f598"; }
+.bi-suit-club-fill::before { content: "\f599"; }
+.bi-suit-club::before { content: "\f59a"; }
+.bi-suit-diamond-fill::before { content: "\f59b"; }
+.bi-suit-diamond::before { content: "\f59c"; }
+.bi-suit-heart-fill::before { content: "\f59d"; }
+.bi-suit-heart::before { content: "\f59e"; }
+.bi-suit-spade-fill::before { content: "\f59f"; }
+.bi-suit-spade::before { content: "\f5a0"; }
+.bi-sun-fill::before { content: "\f5a1"; }
+.bi-sun::before { content: "\f5a2"; }
+.bi-sunglasses::before { content: "\f5a3"; }
+.bi-sunrise-fill::before { content: "\f5a4"; }
+.bi-sunrise::before { content: "\f5a5"; }
+.bi-sunset-fill::before { content: "\f5a6"; }
+.bi-sunset::before { content: "\f5a7"; }
+.bi-symmetry-horizontal::before { content: "\f5a8"; }
+.bi-symmetry-vertical::before { content: "\f5a9"; }
+.bi-table::before { content: "\f5aa"; }
+.bi-tablet-fill::before { content: "\f5ab"; }
+.bi-tablet-landscape-fill::before { content: "\f5ac"; }
+.bi-tablet-landscape::before { content: "\f5ad"; }
+.bi-tablet::before { content: "\f5ae"; }
+.bi-tag-fill::before { content: "\f5af"; }
+.bi-tag::before { content: "\f5b0"; }
+.bi-tags-fill::before { content: "\f5b1"; }
+.bi-tags::before { content: "\f5b2"; }
+.bi-telegram::before { content: "\f5b3"; }
+.bi-telephone-fill::before { content: "\f5b4"; }
+.bi-telephone-forward-fill::before { content: "\f5b5"; }
+.bi-telephone-forward::before { content: "\f5b6"; }
+.bi-telephone-inbound-fill::before { content: "\f5b7"; }
+.bi-telephone-inbound::before { content: "\f5b8"; }
+.bi-telephone-minus-fill::before { content: "\f5b9"; }
+.bi-telephone-minus::before { content: "\f5ba"; }
+.bi-telephone-outbound-fill::before { content: "\f5bb"; }
+.bi-telephone-outbound::before { content: "\f5bc"; }
+.bi-telephone-plus-fill::before { content: "\f5bd"; }
+.bi-telephone-plus::before { content: "\f5be"; }
+.bi-telephone-x-fill::before { content: "\f5bf"; }
+.bi-telephone-x::before { content: "\f5c0"; }
+.bi-telephone::before { content: "\f5c1"; }
+.bi-terminal-fill::before { content: "\f5c2"; }
+.bi-terminal::before { content: "\f5c3"; }
+.bi-text-center::before { content: "\f5c4"; }
+.bi-text-indent-left::before { content: "\f5c5"; }
+.bi-text-indent-right::before { content: "\f5c6"; }
+.bi-text-left::before { content: "\f5c7"; }
+.bi-text-paragraph::before { content: "\f5c8"; }
+.bi-text-right::before { content: "\f5c9"; }
+.bi-textarea-resize::before { content: "\f5ca"; }
+.bi-textarea-t::before { content: "\f5cb"; }
+.bi-textarea::before { content: "\f5cc"; }
+.bi-thermometer-half::before { content: "\f5cd"; }
+.bi-thermometer-high::before { content: "\f5ce"; }
+.bi-thermometer-low::before { content: "\f5cf"; }
+.bi-thermometer-snow::before { content: "\f5d0"; }
+.bi-thermometer-sun::before { content: "\f5d1"; }
+.bi-thermometer::before { content: "\f5d2"; }
+.bi-three-dots-vertical::before { content: "\f5d3"; }
+.bi-three-dots::before { content: "\f5d4"; }
+.bi-toggle-off::before { content: "\f5d5"; }
+.bi-toggle-on::before { content: "\f5d6"; }
+.bi-toggle2-off::before { content: "\f5d7"; }
+.bi-toggle2-on::before { content: "\f5d8"; }
+.bi-toggles::before { content: "\f5d9"; }
+.bi-toggles2::before { content: "\f5da"; }
+.bi-tools::before { content: "\f5db"; }
+.bi-tornado::before { content: "\f5dc"; }
+.bi-trash-fill::before { content: "\f5dd"; }
+.bi-trash::before { content: "\f5de"; }
+.bi-trash2-fill::before { content: "\f5df"; }
+.bi-trash2::before { content: "\f5e0"; }
+.bi-tree-fill::before { content: "\f5e1"; }
+.bi-tree::before { content: "\f5e2"; }
+.bi-triangle-fill::before { content: "\f5e3"; }
+.bi-triangle-half::before { content: "\f5e4"; }
+.bi-triangle::before { content: "\f5e5"; }
+.bi-trophy-fill::before { content: "\f5e6"; }
+.bi-trophy::before { content: "\f5e7"; }
+.bi-tropical-storm::before { content: "\f5e8"; }
+.bi-truck-flatbed::before { content: "\f5e9"; }
+.bi-truck::before { content: "\f5ea"; }
+.bi-tsunami::before { content: "\f5eb"; }
+.bi-tv-fill::before { content: "\f5ec"; }
+.bi-tv::before { content: "\f5ed"; }
+.bi-twitch::before { content: "\f5ee"; }
+.bi-twitter::before { content: "\f5ef"; }
+.bi-type-bold::before { content: "\f5f0"; }
+.bi-type-h1::before { content: "\f5f1"; }
+.bi-type-h2::before { content: "\f5f2"; }
+.bi-type-h3::before { content: "\f5f3"; }
+.bi-type-italic::before { content: "\f5f4"; }
+.bi-type-strikethrough::before { content: "\f5f5"; }
+.bi-type-underline::before { content: "\f5f6"; }
+.bi-type::before { content: "\f5f7"; }
+.bi-ui-checks-grid::before { content: "\f5f8"; }
+.bi-ui-checks::before { content: "\f5f9"; }
+.bi-ui-radios-grid::before { content: "\f5fa"; }
+.bi-ui-radios::before { content: "\f5fb"; }
+.bi-umbrella-fill::before { content: "\f5fc"; }
+.bi-umbrella::before { content: "\f5fd"; }
+.bi-union::before { content: "\f5fe"; }
+.bi-unlock-fill::before { content: "\f5ff"; }
+.bi-unlock::before { content: "\f600"; }
+.bi-upc-scan::before { content: "\f601"; }
+.bi-upc::before { content: "\f602"; }
+.bi-upload::before { content: "\f603"; }
+.bi-vector-pen::before { content: "\f604"; }
+.bi-view-list::before { content: "\f605"; }
+.bi-view-stacked::before { content: "\f606"; }
+.bi-vinyl-fill::before { content: "\f607"; }
+.bi-vinyl::before { content: "\f608"; }
+.bi-voicemail::before { content: "\f609"; }
+.bi-volume-down-fill::before { content: "\f60a"; }
+.bi-volume-down::before { content: "\f60b"; }
+.bi-volume-mute-fill::before { content: "\f60c"; }
+.bi-volume-mute::before { content: "\f60d"; }
+.bi-volume-off-fill::before { content: "\f60e"; }
+.bi-volume-off::before { content: "\f60f"; }
+.bi-volume-up-fill::before { content: "\f610"; }
+.bi-volume-up::before { content: "\f611"; }
+.bi-vr::before { content: "\f612"; }
+.bi-wallet-fill::before { content: "\f613"; }
+.bi-wallet::before { content: "\f614"; }
+.bi-wallet2::before { content: "\f615"; }
+.bi-watch::before { content: "\f616"; }
+.bi-water::before { content: "\f617"; }
+.bi-whatsapp::before { content: "\f618"; }
+.bi-wifi-1::before { content: "\f619"; }
+.bi-wifi-2::before { content: "\f61a"; }
+.bi-wifi-off::before { content: "\f61b"; }
+.bi-wifi::before { content: "\f61c"; }
+.bi-wind::before { content: "\f61d"; }
+.bi-window-dock::before { content: "\f61e"; }
+.bi-window-sidebar::before { content: "\f61f"; }
+.bi-window::before { content: "\f620"; }
+.bi-wrench::before { content: "\f621"; }
+.bi-x-circle-fill::before { content: "\f622"; }
+.bi-x-circle::before { content: "\f623"; }
+.bi-x-diamond-fill::before { content: "\f624"; }
+.bi-x-diamond::before { content: "\f625"; }
+.bi-x-octagon-fill::before { content: "\f626"; }
+.bi-x-octagon::before { content: "\f627"; }
+.bi-x-square-fill::before { content: "\f628"; }
+.bi-x-square::before { content: "\f629"; }
+.bi-x::before { content: "\f62a"; }
+.bi-youtube::before { content: "\f62b"; }
+.bi-zoom-in::before { content: "\f62c"; }
+.bi-zoom-out::before { content: "\f62d"; }
+.bi-bank::before { content: "\f62e"; }
+.bi-bank2::before { content: "\f62f"; }
+.bi-bell-slash-fill::before { content: "\f630"; }
+.bi-bell-slash::before { content: "\f631"; }
+.bi-cash-coin::before { content: "\f632"; }
+.bi-check-lg::before { content: "\f633"; }
+.bi-coin::before { content: "\f634"; }
+.bi-currency-bitcoin::before { content: "\f635"; }
+.bi-currency-dollar::before { content: "\f636"; }
+.bi-currency-euro::before { content: "\f637"; }
+.bi-currency-exchange::before { content: "\f638"; }
+.bi-currency-pound::before { content: "\f639"; }
+.bi-currency-yen::before { content: "\f63a"; }
+.bi-dash-lg::before { content: "\f63b"; }
+.bi-exclamation-lg::before { content: "\f63c"; }
+.bi-file-earmark-pdf-fill::before { content: "\f63d"; }
+.bi-file-earmark-pdf::before { content: "\f63e"; }
+.bi-file-pdf-fill::before { content: "\f63f"; }
+.bi-file-pdf::before { content: "\f640"; }
+.bi-gender-ambiguous::before { content: "\f641"; }
+.bi-gender-female::before { content: "\f642"; }
+.bi-gender-male::before { content: "\f643"; }
+.bi-gender-trans::before { content: "\f644"; }
+.bi-headset-vr::before { content: "\f645"; }
+.bi-info-lg::before { content: "\f646"; }
+.bi-mastodon::before { content: "\f647"; }
+.bi-messenger::before { content: "\f648"; }
+.bi-piggy-bank-fill::before { content: "\f649"; }
+.bi-piggy-bank::before { content: "\f64a"; }
+.bi-pin-map-fill::before { content: "\f64b"; }
+.bi-pin-map::before { content: "\f64c"; }
+.bi-plus-lg::before { content: "\f64d"; }
+.bi-question-lg::before { content: "\f64e"; }
+.bi-recycle::before { content: "\f64f"; }
+.bi-reddit::before { content: "\f650"; }
+.bi-safe-fill::before { content: "\f651"; }
+.bi-safe2-fill::before { content: "\f652"; }
+.bi-safe2::before { content: "\f653"; }
+.bi-sd-card-fill::before { content: "\f654"; }
+.bi-sd-card::before { content: "\f655"; }
+.bi-skype::before { content: "\f656"; }
+.bi-slash-lg::before { content: "\f657"; }
+.bi-translate::before { content: "\f658"; }
+.bi-x-lg::before { content: "\f659"; }
+.bi-safe::before { content: "\f65a"; }
+.bi-apple::before { content: "\f65b"; }
+.bi-microsoft::before { content: "\f65d"; }
+.bi-windows::before { content: "\f65e"; }
+.bi-behance::before { content: "\f65c"; }
+.bi-dribbble::before { content: "\f65f"; }
+.bi-line::before { content: "\f660"; }
+.bi-medium::before { content: "\f661"; }
+.bi-paypal::before { content: "\f662"; }
+.bi-pinterest::before { content: "\f663"; }
+.bi-signal::before { content: "\f664"; }
+.bi-snapchat::before { content: "\f665"; }
+.bi-spotify::before { content: "\f666"; }
+.bi-stack-overflow::before { content: "\f667"; }
+.bi-strava::before { content: "\f668"; }
+.bi-wordpress::before { content: "\f669"; }
+.bi-vimeo::before { content: "\f66a"; }
+.bi-activity::before { content: "\f66b"; }
+.bi-easel2-fill::before { content: "\f66c"; }
+.bi-easel2::before { content: "\f66d"; }
+.bi-easel3-fill::before { content: "\f66e"; }
+.bi-easel3::before { content: "\f66f"; }
+.bi-fan::before { content: "\f670"; }
+.bi-fingerprint::before { content: "\f671"; }
+.bi-graph-down-arrow::before { content: "\f672"; }
+.bi-graph-up-arrow::before { content: "\f673"; }
+.bi-hypnotize::before { content: "\f674"; }
+.bi-magic::before { content: "\f675"; }
+.bi-person-rolodex::before { content: "\f676"; }
+.bi-person-video::before { content: "\f677"; }
+.bi-person-video2::before { content: "\f678"; }
+.bi-person-video3::before { content: "\f679"; }
+.bi-person-workspace::before { content: "\f67a"; }
+.bi-radioactive::before { content: "\f67b"; }
+.bi-webcam-fill::before { content: "\f67c"; }
+.bi-webcam::before { content: "\f67d"; }
+.bi-yin-yang::before { content: "\f67e"; }
+.bi-bandaid-fill::before { content: "\f680"; }
+.bi-bandaid::before { content: "\f681"; }
+.bi-bluetooth::before { content: "\f682"; }
+.bi-body-text::before { content: "\f683"; }
+.bi-boombox::before { content: "\f684"; }
+.bi-boxes::before { content: "\f685"; }
+.bi-dpad-fill::before { content: "\f686"; }
+.bi-dpad::before { content: "\f687"; }
+.bi-ear-fill::before { content: "\f688"; }
+.bi-ear::before { content: "\f689"; }
+.bi-envelope-check-fill::before { content: "\f68b"; }
+.bi-envelope-check::before { content: "\f68c"; }
+.bi-envelope-dash-fill::before { content: "\f68e"; }
+.bi-envelope-dash::before { content: "\f68f"; }
+.bi-envelope-exclamation-fill::before { content: "\f691"; }
+.bi-envelope-exclamation::before { content: "\f692"; }
+.bi-envelope-plus-fill::before { content: "\f693"; }
+.bi-envelope-plus::before { content: "\f694"; }
+.bi-envelope-slash-fill::before { content: "\f696"; }
+.bi-envelope-slash::before { content: "\f697"; }
+.bi-envelope-x-fill::before { content: "\f699"; }
+.bi-envelope-x::before { content: "\f69a"; }
+.bi-explicit-fill::before { content: "\f69b"; }
+.bi-explicit::before { content: "\f69c"; }
+.bi-git::before { content: "\f69d"; }
+.bi-infinity::before { content: "\f69e"; }
+.bi-list-columns-reverse::before { content: "\f69f"; }
+.bi-list-columns::before { content: "\f6a0"; }
+.bi-meta::before { content: "\f6a1"; }
+.bi-nintendo-switch::before { content: "\f6a4"; }
+.bi-pc-display-horizontal::before { content: "\f6a5"; }
+.bi-pc-display::before { content: "\f6a6"; }
+.bi-pc-horizontal::before { content: "\f6a7"; }
+.bi-pc::before { content: "\f6a8"; }
+.bi-playstation::before { content: "\f6a9"; }
+.bi-plus-slash-minus::before { content: "\f6aa"; }
+.bi-projector-fill::before { content: "\f6ab"; }
+.bi-projector::before { content: "\f6ac"; }
+.bi-qr-code-scan::before { content: "\f6ad"; }
+.bi-qr-code::before { content: "\f6ae"; }
+.bi-quora::before { content: "\f6af"; }
+.bi-quote::before { content: "\f6b0"; }
+.bi-robot::before { content: "\f6b1"; }
+.bi-send-check-fill::before { content: "\f6b2"; }
+.bi-send-check::before { content: "\f6b3"; }
+.bi-send-dash-fill::before { content: "\f6b4"; }
+.bi-send-dash::before { content: "\f6b5"; }
+.bi-send-exclamation-fill::before { content: "\f6b7"; }
+.bi-send-exclamation::before { content: "\f6b8"; }
+.bi-send-fill::before { content: "\f6b9"; }
+.bi-send-plus-fill::before { content: "\f6ba"; }
+.bi-send-plus::before { content: "\f6bb"; }
+.bi-send-slash-fill::before { content: "\f6bc"; }
+.bi-send-slash::before { content: "\f6bd"; }
+.bi-send-x-fill::before { content: "\f6be"; }
+.bi-send-x::before { content: "\f6bf"; }
+.bi-send::before { content: "\f6c0"; }
+.bi-steam::before { content: "\f6c1"; }
+.bi-terminal-dash::before { content: "\f6c3"; }
+.bi-terminal-plus::before { content: "\f6c4"; }
+.bi-terminal-split::before { content: "\f6c5"; }
+.bi-ticket-detailed-fill::before { content: "\f6c6"; }
+.bi-ticket-detailed::before { content: "\f6c7"; }
+.bi-ticket-fill::before { content: "\f6c8"; }
+.bi-ticket-perforated-fill::before { content: "\f6c9"; }
+.bi-ticket-perforated::before { content: "\f6ca"; }
+.bi-ticket::before { content: "\f6cb"; }
+.bi-tiktok::before { content: "\f6cc"; }
+.bi-window-dash::before { content: "\f6cd"; }
+.bi-window-desktop::before { content: "\f6ce"; }
+.bi-window-fullscreen::before { content: "\f6cf"; }
+.bi-window-plus::before { content: "\f6d0"; }
+.bi-window-split::before { content: "\f6d1"; }
+.bi-window-stack::before { content: "\f6d2"; }
+.bi-window-x::before { content: "\f6d3"; }
+.bi-xbox::before { content: "\f6d4"; }
+.bi-ethernet::before { content: "\f6d5"; }
+.bi-hdmi-fill::before { content: "\f6d6"; }
+.bi-hdmi::before { content: "\f6d7"; }
+.bi-usb-c-fill::before { content: "\f6d8"; }
+.bi-usb-c::before { content: "\f6d9"; }
+.bi-usb-fill::before { content: "\f6da"; }
+.bi-usb-plug-fill::before { content: "\f6db"; }
+.bi-usb-plug::before { content: "\f6dc"; }
+.bi-usb-symbol::before { content: "\f6dd"; }
+.bi-usb::before { content: "\f6de"; }
+.bi-boombox-fill::before { content: "\f6df"; }
+.bi-displayport::before { content: "\f6e1"; }
+.bi-gpu-card::before { content: "\f6e2"; }
+.bi-memory::before { content: "\f6e3"; }
+.bi-modem-fill::before { content: "\f6e4"; }
+.bi-modem::before { content: "\f6e5"; }
+.bi-motherboard-fill::before { content: "\f6e6"; }
+.bi-motherboard::before { content: "\f6e7"; }
+.bi-optical-audio-fill::before { content: "\f6e8"; }
+.bi-optical-audio::before { content: "\f6e9"; }
+.bi-pci-card::before { content: "\f6ea"; }
+.bi-router-fill::before { content: "\f6eb"; }
+.bi-router::before { content: "\f6ec"; }
+.bi-thunderbolt-fill::before { content: "\f6ef"; }
+.bi-thunderbolt::before { content: "\f6f0"; }
+.bi-usb-drive-fill::before { content: "\f6f1"; }
+.bi-usb-drive::before { content: "\f6f2"; }
+.bi-usb-micro-fill::before { content: "\f6f3"; }
+.bi-usb-micro::before { content: "\f6f4"; }
+.bi-usb-mini-fill::before { content: "\f6f5"; }
+.bi-usb-mini::before { content: "\f6f6"; }
+.bi-cloud-haze2::before { content: "\f6f7"; }
+.bi-device-hdd-fill::before { content: "\f6f8"; }
+.bi-device-hdd::before { content: "\f6f9"; }
+.bi-device-ssd-fill::before { content: "\f6fa"; }
+.bi-device-ssd::before { content: "\f6fb"; }
+.bi-displayport-fill::before { content: "\f6fc"; }
+.bi-mortarboard-fill::before { content: "\f6fd"; }
+.bi-mortarboard::before { content: "\f6fe"; }
+.bi-terminal-x::before { content: "\f6ff"; }
+.bi-arrow-through-heart-fill::before { content: "\f700"; }
+.bi-arrow-through-heart::before { content: "\f701"; }
+.bi-badge-sd-fill::before { content: "\f702"; }
+.bi-badge-sd::before { content: "\f703"; }
+.bi-bag-heart-fill::before { content: "\f704"; }
+.bi-bag-heart::before { content: "\f705"; }
+.bi-balloon-fill::before { content: "\f706"; }
+.bi-balloon-heart-fill::before { content: "\f707"; }
+.bi-balloon-heart::before { content: "\f708"; }
+.bi-balloon::before { content: "\f709"; }
+.bi-box2-fill::before { content: "\f70a"; }
+.bi-box2-heart-fill::before { content: "\f70b"; }
+.bi-box2-heart::before { content: "\f70c"; }
+.bi-box2::before { content: "\f70d"; }
+.bi-braces-asterisk::before { content: "\f70e"; }
+.bi-calendar-heart-fill::before { content: "\f70f"; }
+.bi-calendar-heart::before { content: "\f710"; }
+.bi-calendar2-heart-fill::before { content: "\f711"; }
+.bi-calendar2-heart::before { content: "\f712"; }
+.bi-chat-heart-fill::before { content: "\f713"; }
+.bi-chat-heart::before { content: "\f714"; }
+.bi-chat-left-heart-fill::before { content: "\f715"; }
+.bi-chat-left-heart::before { content: "\f716"; }
+.bi-chat-right-heart-fill::before { content: "\f717"; }
+.bi-chat-right-heart::before { content: "\f718"; }
+.bi-chat-square-heart-fill::before { content: "\f719"; }
+.bi-chat-square-heart::before { content: "\f71a"; }
+.bi-clipboard-check-fill::before { content: "\f71b"; }
+.bi-clipboard-data-fill::before { content: "\f71c"; }
+.bi-clipboard-fill::before { content: "\f71d"; }
+.bi-clipboard-heart-fill::before { content: "\f71e"; }
+.bi-clipboard-heart::before { content: "\f71f"; }
+.bi-clipboard-minus-fill::before { content: "\f720"; }
+.bi-clipboard-plus-fill::before { content: "\f721"; }
+.bi-clipboard-pulse::before { content: "\f722"; }
+.bi-clipboard-x-fill::before { content: "\f723"; }
+.bi-clipboard2-check-fill::before { content: "\f724"; }
+.bi-clipboard2-check::before { content: "\f725"; }
+.bi-clipboard2-data-fill::before { content: "\f726"; }
+.bi-clipboard2-data::before { content: "\f727"; }
+.bi-clipboard2-fill::before { content: "\f728"; }
+.bi-clipboard2-heart-fill::before { content: "\f729"; }
+.bi-clipboard2-heart::before { content: "\f72a"; }
+.bi-clipboard2-minus-fill::before { content: "\f72b"; }
+.bi-clipboard2-minus::before { content: "\f72c"; }
+.bi-clipboard2-plus-fill::before { content: "\f72d"; }
+.bi-clipboard2-plus::before { content: "\f72e"; }
+.bi-clipboard2-pulse-fill::before { content: "\f72f"; }
+.bi-clipboard2-pulse::before { content: "\f730"; }
+.bi-clipboard2-x-fill::before { content: "\f731"; }
+.bi-clipboard2-x::before { content: "\f732"; }
+.bi-clipboard2::before { content: "\f733"; }
+.bi-emoji-kiss-fill::before { content: "\f734"; }
+.bi-emoji-kiss::before { content: "\f735"; }
+.bi-envelope-heart-fill::before { content: "\f736"; }
+.bi-envelope-heart::before { content: "\f737"; }
+.bi-envelope-open-heart-fill::before { content: "\f738"; }
+.bi-envelope-open-heart::before { content: "\f739"; }
+.bi-envelope-paper-fill::before { content: "\f73a"; }
+.bi-envelope-paper-heart-fill::before { content: "\f73b"; }
+.bi-envelope-paper-heart::before { content: "\f73c"; }
+.bi-envelope-paper::before { content: "\f73d"; }
+.bi-filetype-aac::before { content: "\f73e"; }
+.bi-filetype-ai::before { content: "\f73f"; }
+.bi-filetype-bmp::before { content: "\f740"; }
+.bi-filetype-cs::before { content: "\f741"; }
+.bi-filetype-css::before { content: "\f742"; }
+.bi-filetype-csv::before { content: "\f743"; }
+.bi-filetype-doc::before { content: "\f744"; }
+.bi-filetype-docx::before { content: "\f745"; }
+.bi-filetype-exe::before { content: "\f746"; }
+.bi-filetype-gif::before { content: "\f747"; }
+.bi-filetype-heic::before { content: "\f748"; }
+.bi-filetype-html::before { content: "\f749"; }
+.bi-filetype-java::before { content: "\f74a"; }
+.bi-filetype-jpg::before { content: "\f74b"; }
+.bi-filetype-js::before { content: "\f74c"; }
+.bi-filetype-jsx::before { content: "\f74d"; }
+.bi-filetype-key::before { content: "\f74e"; }
+.bi-filetype-m4p::before { content: "\f74f"; }
+.bi-filetype-md::before { content: "\f750"; }
+.bi-filetype-mdx::before { content: "\f751"; }
+.bi-filetype-mov::before { content: "\f752"; }
+.bi-filetype-mp3::before { content: "\f753"; }
+.bi-filetype-mp4::before { content: "\f754"; }
+.bi-filetype-otf::before { content: "\f755"; }
+.bi-filetype-pdf::before { content: "\f756"; }
+.bi-filetype-php::before { content: "\f757"; }
+.bi-filetype-png::before { content: "\f758"; }
+.bi-filetype-ppt::before { content: "\f75a"; }
+.bi-filetype-psd::before { content: "\f75b"; }
+.bi-filetype-py::before { content: "\f75c"; }
+.bi-filetype-raw::before { content: "\f75d"; }
+.bi-filetype-rb::before { content: "\f75e"; }
+.bi-filetype-sass::before { content: "\f75f"; }
+.bi-filetype-scss::before { content: "\f760"; }
+.bi-filetype-sh::before { content: "\f761"; }
+.bi-filetype-svg::before { content: "\f762"; }
+.bi-filetype-tiff::before { content: "\f763"; }
+.bi-filetype-tsx::before { content: "\f764"; }
+.bi-filetype-ttf::before { content: "\f765"; }
+.bi-filetype-txt::before { content: "\f766"; }
+.bi-filetype-wav::before { content: "\f767"; }
+.bi-filetype-woff::before { content: "\f768"; }
+.bi-filetype-xls::before { content: "\f76a"; }
+.bi-filetype-xml::before { content: "\f76b"; }
+.bi-filetype-yml::before { content: "\f76c"; }
+.bi-heart-arrow::before { content: "\f76d"; }
+.bi-heart-pulse-fill::before { content: "\f76e"; }
+.bi-heart-pulse::before { content: "\f76f"; }
+.bi-heartbreak-fill::before { content: "\f770"; }
+.bi-heartbreak::before { content: "\f771"; }
+.bi-hearts::before { content: "\f772"; }
+.bi-hospital-fill::before { content: "\f773"; }
+.bi-hospital::before { content: "\f774"; }
+.bi-house-heart-fill::before { content: "\f775"; }
+.bi-house-heart::before { content: "\f776"; }
+.bi-incognito::before { content: "\f777"; }
+.bi-magnet-fill::before { content: "\f778"; }
+.bi-magnet::before { content: "\f779"; }
+.bi-person-heart::before { content: "\f77a"; }
+.bi-person-hearts::before { content: "\f77b"; }
+.bi-phone-flip::before { content: "\f77c"; }
+.bi-plugin::before { content: "\f77d"; }
+.bi-postage-fill::before { content: "\f77e"; }
+.bi-postage-heart-fill::before { content: "\f77f"; }
+.bi-postage-heart::before { content: "\f780"; }
+.bi-postage::before { content: "\f781"; }
+.bi-postcard-fill::before { content: "\f782"; }
+.bi-postcard-heart-fill::before { content: "\f783"; }
+.bi-postcard-heart::before { content: "\f784"; }
+.bi-postcard::before { content: "\f785"; }
+.bi-search-heart-fill::before { content: "\f786"; }
+.bi-search-heart::before { content: "\f787"; }
+.bi-sliders2-vertical::before { content: "\f788"; }
+.bi-sliders2::before { content: "\f789"; }
+.bi-trash3-fill::before { content: "\f78a"; }
+.bi-trash3::before { content: "\f78b"; }
+.bi-valentine::before { content: "\f78c"; }
+.bi-valentine2::before { content: "\f78d"; }
+.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; }
+.bi-wrench-adjustable-circle::before { content: "\f78f"; }
+.bi-wrench-adjustable::before { content: "\f790"; }
+.bi-filetype-json::before { content: "\f791"; }
+.bi-filetype-pptx::before { content: "\f792"; }
+.bi-filetype-xlsx::before { content: "\f793"; }
+.bi-1-circle-fill::before { content: "\f796"; }
+.bi-1-circle::before { content: "\f797"; }
+.bi-1-square-fill::before { content: "\f798"; }
+.bi-1-square::before { content: "\f799"; }
+.bi-2-circle-fill::before { content: "\f79c"; }
+.bi-2-circle::before { content: "\f79d"; }
+.bi-2-square-fill::before { content: "\f79e"; }
+.bi-2-square::before { content: "\f79f"; }
+.bi-3-circle-fill::before { content: "\f7a2"; }
+.bi-3-circle::before { content: "\f7a3"; }
+.bi-3-square-fill::before { content: "\f7a4"; }
+.bi-3-square::before { content: "\f7a5"; }
+.bi-4-circle-fill::before { content: "\f7a8"; }
+.bi-4-circle::before { content: "\f7a9"; }
+.bi-4-square-fill::before { content: "\f7aa"; }
+.bi-4-square::before { content: "\f7ab"; }
+.bi-5-circle-fill::before { content: "\f7ae"; }
+.bi-5-circle::before { content: "\f7af"; }
+.bi-5-square-fill::before { content: "\f7b0"; }
+.bi-5-square::before { content: "\f7b1"; }
+.bi-6-circle-fill::before { content: "\f7b4"; }
+.bi-6-circle::before { content: "\f7b5"; }
+.bi-6-square-fill::before { content: "\f7b6"; }
+.bi-6-square::before { content: "\f7b7"; }
+.bi-7-circle-fill::before { content: "\f7ba"; }
+.bi-7-circle::before { content: "\f7bb"; }
+.bi-7-square-fill::before { content: "\f7bc"; }
+.bi-7-square::before { content: "\f7bd"; }
+.bi-8-circle-fill::before { content: "\f7c0"; }
+.bi-8-circle::before { content: "\f7c1"; }
+.bi-8-square-fill::before { content: "\f7c2"; }
+.bi-8-square::before { content: "\f7c3"; }
+.bi-9-circle-fill::before { content: "\f7c6"; }
+.bi-9-circle::before { content: "\f7c7"; }
+.bi-9-square-fill::before { content: "\f7c8"; }
+.bi-9-square::before { content: "\f7c9"; }
+.bi-airplane-engines-fill::before { content: "\f7ca"; }
+.bi-airplane-engines::before { content: "\f7cb"; }
+.bi-airplane-fill::before { content: "\f7cc"; }
+.bi-airplane::before { content: "\f7cd"; }
+.bi-alexa::before { content: "\f7ce"; }
+.bi-alipay::before { content: "\f7cf"; }
+.bi-android::before { content: "\f7d0"; }
+.bi-android2::before { content: "\f7d1"; }
+.bi-box-fill::before { content: "\f7d2"; }
+.bi-box-seam-fill::before { content: "\f7d3"; }
+.bi-browser-chrome::before { content: "\f7d4"; }
+.bi-browser-edge::before { content: "\f7d5"; }
+.bi-browser-firefox::before { content: "\f7d6"; }
+.bi-browser-safari::before { content: "\f7d7"; }
+.bi-c-circle-fill::before { content: "\f7da"; }
+.bi-c-circle::before { content: "\f7db"; }
+.bi-c-square-fill::before { content: "\f7dc"; }
+.bi-c-square::before { content: "\f7dd"; }
+.bi-capsule-pill::before { content: "\f7de"; }
+.bi-capsule::before { content: "\f7df"; }
+.bi-car-front-fill::before { content: "\f7e0"; }
+.bi-car-front::before { content: "\f7e1"; }
+.bi-cassette-fill::before { content: "\f7e2"; }
+.bi-cassette::before { content: "\f7e3"; }
+.bi-cc-circle-fill::before { content: "\f7e6"; }
+.bi-cc-circle::before { content: "\f7e7"; }
+.bi-cc-square-fill::before { content: "\f7e8"; }
+.bi-cc-square::before { content: "\f7e9"; }
+.bi-cup-hot-fill::before { content: "\f7ea"; }
+.bi-cup-hot::before { content: "\f7eb"; }
+.bi-currency-rupee::before { content: "\f7ec"; }
+.bi-dropbox::before { content: "\f7ed"; }
+.bi-escape::before { content: "\f7ee"; }
+.bi-fast-forward-btn-fill::before { content: "\f7ef"; }
+.bi-fast-forward-btn::before { content: "\f7f0"; }
+.bi-fast-forward-circle-fill::before { content: "\f7f1"; }
+.bi-fast-forward-circle::before { content: "\f7f2"; }
+.bi-fast-forward-fill::before { content: "\f7f3"; }
+.bi-fast-forward::before { content: "\f7f4"; }
+.bi-filetype-sql::before { content: "\f7f5"; }
+.bi-fire::before { content: "\f7f6"; }
+.bi-google-play::before { content: "\f7f7"; }
+.bi-h-circle-fill::before { content: "\f7fa"; }
+.bi-h-circle::before { content: "\f7fb"; }
+.bi-h-square-fill::before { content: "\f7fc"; }
+.bi-h-square::before { content: "\f7fd"; }
+.bi-indent::before { content: "\f7fe"; }
+.bi-lungs-fill::before { content: "\f7ff"; }
+.bi-lungs::before { content: "\f800"; }
+.bi-microsoft-teams::before { content: "\f801"; }
+.bi-p-circle-fill::before { content: "\f804"; }
+.bi-p-circle::before { content: "\f805"; }
+.bi-p-square-fill::before { content: "\f806"; }
+.bi-p-square::before { content: "\f807"; }
+.bi-pass-fill::before { content: "\f808"; }
+.bi-pass::before { content: "\f809"; }
+.bi-prescription::before { content: "\f80a"; }
+.bi-prescription2::before { content: "\f80b"; }
+.bi-r-circle-fill::before { content: "\f80e"; }
+.bi-r-circle::before { content: "\f80f"; }
+.bi-r-square-fill::before { content: "\f810"; }
+.bi-r-square::before { content: "\f811"; }
+.bi-repeat-1::before { content: "\f812"; }
+.bi-repeat::before { content: "\f813"; }
+.bi-rewind-btn-fill::before { content: "\f814"; }
+.bi-rewind-btn::before { content: "\f815"; }
+.bi-rewind-circle-fill::before { content: "\f816"; }
+.bi-rewind-circle::before { content: "\f817"; }
+.bi-rewind-fill::before { content: "\f818"; }
+.bi-rewind::before { content: "\f819"; }
+.bi-train-freight-front-fill::before { content: "\f81a"; }
+.bi-train-freight-front::before { content: "\f81b"; }
+.bi-train-front-fill::before { content: "\f81c"; }
+.bi-train-front::before { content: "\f81d"; }
+.bi-train-lightrail-front-fill::before { content: "\f81e"; }
+.bi-train-lightrail-front::before { content: "\f81f"; }
+.bi-truck-front-fill::before { content: "\f820"; }
+.bi-truck-front::before { content: "\f821"; }
+.bi-ubuntu::before { content: "\f822"; }
+.bi-unindent::before { content: "\f823"; }
+.bi-unity::before { content: "\f824"; }
+.bi-universal-access-circle::before { content: "\f825"; }
+.bi-universal-access::before { content: "\f826"; }
+.bi-virus::before { content: "\f827"; }
+.bi-virus2::before { content: "\f828"; }
+.bi-wechat::before { content: "\f829"; }
+.bi-yelp::before { content: "\f82a"; }
+.bi-sign-stop-fill::before { content: "\f82b"; }
+.bi-sign-stop-lights-fill::before { content: "\f82c"; }
+.bi-sign-stop-lights::before { content: "\f82d"; }
+.bi-sign-stop::before { content: "\f82e"; }
+.bi-sign-turn-left-fill::before { content: "\f82f"; }
+.bi-sign-turn-left::before { content: "\f830"; }
+.bi-sign-turn-right-fill::before { content: "\f831"; }
+.bi-sign-turn-right::before { content: "\f832"; }
+.bi-sign-turn-slight-left-fill::before { content: "\f833"; }
+.bi-sign-turn-slight-left::before { content: "\f834"; }
+.bi-sign-turn-slight-right-fill::before { content: "\f835"; }
+.bi-sign-turn-slight-right::before { content: "\f836"; }
+.bi-sign-yield-fill::before { content: "\f837"; }
+.bi-sign-yield::before { content: "\f838"; }
+.bi-ev-station-fill::before { content: "\f839"; }
+.bi-ev-station::before { content: "\f83a"; }
+.bi-fuel-pump-diesel-fill::before { content: "\f83b"; }
+.bi-fuel-pump-diesel::before { content: "\f83c"; }
+.bi-fuel-pump-fill::before { content: "\f83d"; }
+.bi-fuel-pump::before { content: "\f83e"; }
+.bi-0-circle-fill::before { content: "\f83f"; }
+.bi-0-circle::before { content: "\f840"; }
+.bi-0-square-fill::before { content: "\f841"; }
+.bi-0-square::before { content: "\f842"; }
+.bi-rocket-fill::before { content: "\f843"; }
+.bi-rocket-takeoff-fill::before { content: "\f844"; }
+.bi-rocket-takeoff::before { content: "\f845"; }
+.bi-rocket::before { content: "\f846"; }
+.bi-stripe::before { content: "\f847"; }
+.bi-subscript::before { content: "\f848"; }
+.bi-superscript::before { content: "\f849"; }
+.bi-trello::before { content: "\f84a"; }
+.bi-envelope-at-fill::before { content: "\f84b"; }
+.bi-envelope-at::before { content: "\f84c"; }
+.bi-regex::before { content: "\f84d"; }
+.bi-text-wrap::before { content: "\f84e"; }
+.bi-sign-dead-end-fill::before { content: "\f84f"; }
+.bi-sign-dead-end::before { content: "\f850"; }
+.bi-sign-do-not-enter-fill::before { content: "\f851"; }
+.bi-sign-do-not-enter::before { content: "\f852"; }
+.bi-sign-intersection-fill::before { content: "\f853"; }
+.bi-sign-intersection-side-fill::before { content: "\f854"; }
+.bi-sign-intersection-side::before { content: "\f855"; }
+.bi-sign-intersection-t-fill::before { content: "\f856"; }
+.bi-sign-intersection-t::before { content: "\f857"; }
+.bi-sign-intersection-y-fill::before { content: "\f858"; }
+.bi-sign-intersection-y::before { content: "\f859"; }
+.bi-sign-intersection::before { content: "\f85a"; }
+.bi-sign-merge-left-fill::before { content: "\f85b"; }
+.bi-sign-merge-left::before { content: "\f85c"; }
+.bi-sign-merge-right-fill::before { content: "\f85d"; }
+.bi-sign-merge-right::before { content: "\f85e"; }
+.bi-sign-no-left-turn-fill::before { content: "\f85f"; }
+.bi-sign-no-left-turn::before { content: "\f860"; }
+.bi-sign-no-parking-fill::before { content: "\f861"; }
+.bi-sign-no-parking::before { content: "\f862"; }
+.bi-sign-no-right-turn-fill::before { content: "\f863"; }
+.bi-sign-no-right-turn::before { content: "\f864"; }
+.bi-sign-railroad-fill::before { content: "\f865"; }
+.bi-sign-railroad::before { content: "\f866"; }
+.bi-building-add::before { content: "\f867"; }
+.bi-building-check::before { content: "\f868"; }
+.bi-building-dash::before { content: "\f869"; }
+.bi-building-down::before { content: "\f86a"; }
+.bi-building-exclamation::before { content: "\f86b"; }
+.bi-building-fill-add::before { content: "\f86c"; }
+.bi-building-fill-check::before { content: "\f86d"; }
+.bi-building-fill-dash::before { content: "\f86e"; }
+.bi-building-fill-down::before { content: "\f86f"; }
+.bi-building-fill-exclamation::before { content: "\f870"; }
+.bi-building-fill-gear::before { content: "\f871"; }
+.bi-building-fill-lock::before { content: "\f872"; }
+.bi-building-fill-slash::before { content: "\f873"; }
+.bi-building-fill-up::before { content: "\f874"; }
+.bi-building-fill-x::before { content: "\f875"; }
+.bi-building-fill::before { content: "\f876"; }
+.bi-building-gear::before { content: "\f877"; }
+.bi-building-lock::before { content: "\f878"; }
+.bi-building-slash::before { content: "\f879"; }
+.bi-building-up::before { content: "\f87a"; }
+.bi-building-x::before { content: "\f87b"; }
+.bi-buildings-fill::before { content: "\f87c"; }
+.bi-buildings::before { content: "\f87d"; }
+.bi-bus-front-fill::before { content: "\f87e"; }
+.bi-bus-front::before { content: "\f87f"; }
+.bi-ev-front-fill::before { content: "\f880"; }
+.bi-ev-front::before { content: "\f881"; }
+.bi-globe-americas::before { content: "\f882"; }
+.bi-globe-asia-australia::before { content: "\f883"; }
+.bi-globe-central-south-asia::before { content: "\f884"; }
+.bi-globe-europe-africa::before { content: "\f885"; }
+.bi-house-add-fill::before { content: "\f886"; }
+.bi-house-add::before { content: "\f887"; }
+.bi-house-check-fill::before { content: "\f888"; }
+.bi-house-check::before { content: "\f889"; }
+.bi-house-dash-fill::before { content: "\f88a"; }
+.bi-house-dash::before { content: "\f88b"; }
+.bi-house-down-fill::before { content: "\f88c"; }
+.bi-house-down::before { content: "\f88d"; }
+.bi-house-exclamation-fill::before { content: "\f88e"; }
+.bi-house-exclamation::before { content: "\f88f"; }
+.bi-house-gear-fill::before { content: "\f890"; }
+.bi-house-gear::before { content: "\f891"; }
+.bi-house-lock-fill::before { content: "\f892"; }
+.bi-house-lock::before { content: "\f893"; }
+.bi-house-slash-fill::before { content: "\f894"; }
+.bi-house-slash::before { content: "\f895"; }
+.bi-house-up-fill::before { content: "\f896"; }
+.bi-house-up::before { content: "\f897"; }
+.bi-house-x-fill::before { content: "\f898"; }
+.bi-house-x::before { content: "\f899"; }
+.bi-person-add::before { content: "\f89a"; }
+.bi-person-down::before { content: "\f89b"; }
+.bi-person-exclamation::before { content: "\f89c"; }
+.bi-person-fill-add::before { content: "\f89d"; }
+.bi-person-fill-check::before { content: "\f89e"; }
+.bi-person-fill-dash::before { content: "\f89f"; }
+.bi-person-fill-down::before { content: "\f8a0"; }
+.bi-person-fill-exclamation::before { content: "\f8a1"; }
+.bi-person-fill-gear::before { content: "\f8a2"; }
+.bi-person-fill-lock::before { content: "\f8a3"; }
+.bi-person-fill-slash::before { content: "\f8a4"; }
+.bi-person-fill-up::before { content: "\f8a5"; }
+.bi-person-fill-x::before { content: "\f8a6"; }
+.bi-person-gear::before { content: "\f8a7"; }
+.bi-person-lock::before { content: "\f8a8"; }
+.bi-person-slash::before { content: "\f8a9"; }
+.bi-person-up::before { content: "\f8aa"; }
+.bi-scooter::before { content: "\f8ab"; }
+.bi-taxi-front-fill::before { content: "\f8ac"; }
+.bi-taxi-front::before { content: "\f8ad"; }
+.bi-amd::before { content: "\f8ae"; }
+.bi-database-add::before { content: "\f8af"; }
+.bi-database-check::before { content: "\f8b0"; }
+.bi-database-dash::before { content: "\f8b1"; }
+.bi-database-down::before { content: "\f8b2"; }
+.bi-database-exclamation::before { content: "\f8b3"; }
+.bi-database-fill-add::before { content: "\f8b4"; }
+.bi-database-fill-check::before { content: "\f8b5"; }
+.bi-database-fill-dash::before { content: "\f8b6"; }
+.bi-database-fill-down::before { content: "\f8b7"; }
+.bi-database-fill-exclamation::before { content: "\f8b8"; }
+.bi-database-fill-gear::before { content: "\f8b9"; }
+.bi-database-fill-lock::before { content: "\f8ba"; }
+.bi-database-fill-slash::before { content: "\f8bb"; }
+.bi-database-fill-up::before { content: "\f8bc"; }
+.bi-database-fill-x::before { content: "\f8bd"; }
+.bi-database-fill::before { content: "\f8be"; }
+.bi-database-gear::before { content: "\f8bf"; }
+.bi-database-lock::before { content: "\f8c0"; }
+.bi-database-slash::before { content: "\f8c1"; }
+.bi-database-up::before { content: "\f8c2"; }
+.bi-database-x::before { content: "\f8c3"; }
+.bi-database::before { content: "\f8c4"; }
+.bi-houses-fill::before { content: "\f8c5"; }
+.bi-houses::before { content: "\f8c6"; }
+.bi-nvidia::before { content: "\f8c7"; }
+.bi-person-vcard-fill::before { content: "\f8c8"; }
+.bi-person-vcard::before { content: "\f8c9"; }
+.bi-sina-weibo::before { content: "\f8ca"; }
+.bi-tencent-qq::before { content: "\f8cb"; }
+.bi-wikipedia::before { content: "\f8cc"; }
+.bi-alphabet-uppercase::before { content: "\f2a5"; }
+.bi-alphabet::before { content: "\f68a"; }
+.bi-amazon::before { content: "\f68d"; }
+.bi-arrows-collapse-vertical::before { content: "\f690"; }
+.bi-arrows-expand-vertical::before { content: "\f695"; }
+.bi-arrows-vertical::before { content: "\f698"; }
+.bi-arrows::before { content: "\f6a2"; }
+.bi-ban-fill::before { content: "\f6a3"; }
+.bi-ban::before { content: "\f6b6"; }
+.bi-bing::before { content: "\f6c2"; }
+.bi-cake::before { content: "\f6e0"; }
+.bi-cake2::before { content: "\f6ed"; }
+.bi-cookie::before { content: "\f6ee"; }
+.bi-copy::before { content: "\f759"; }
+.bi-crosshair::before { content: "\f769"; }
+.bi-crosshair2::before { content: "\f794"; }
+.bi-emoji-astonished-fill::before { content: "\f795"; }
+.bi-emoji-astonished::before { content: "\f79a"; }
+.bi-emoji-grimace-fill::before { content: "\f79b"; }
+.bi-emoji-grimace::before { content: "\f7a0"; }
+.bi-emoji-grin-fill::before { content: "\f7a1"; }
+.bi-emoji-grin::before { content: "\f7a6"; }
+.bi-emoji-surprise-fill::before { content: "\f7a7"; }
+.bi-emoji-surprise::before { content: "\f7ac"; }
+.bi-emoji-tear-fill::before { content: "\f7ad"; }
+.bi-emoji-tear::before { content: "\f7b2"; }
+.bi-envelope-arrow-down-fill::before { content: "\f7b3"; }
+.bi-envelope-arrow-down::before { content: "\f7b8"; }
+.bi-envelope-arrow-up-fill::before { content: "\f7b9"; }
+.bi-envelope-arrow-up::before { content: "\f7be"; }
+.bi-feather::before { content: "\f7bf"; }
+.bi-feather2::before { content: "\f7c4"; }
+.bi-floppy-fill::before { content: "\f7c5"; }
+.bi-floppy::before { content: "\f7d8"; }
+.bi-floppy2-fill::before { content: "\f7d9"; }
+.bi-floppy2::before { content: "\f7e4"; }
+.bi-gitlab::before { content: "\f7e5"; }
+.bi-highlighter::before { content: "\f7f8"; }
+.bi-marker-tip::before { content: "\f802"; }
+.bi-nvme-fill::before { content: "\f803"; }
+.bi-nvme::before { content: "\f80c"; }
+.bi-opencollective::before { content: "\f80d"; }
+.bi-pci-card-network::before { content: "\f8cd"; }
+.bi-pci-card-sound::before { content: "\f8ce"; }
+.bi-radar::before { content: "\f8cf"; }
+.bi-send-arrow-down-fill::before { content: "\f8d0"; }
+.bi-send-arrow-down::before { content: "\f8d1"; }
+.bi-send-arrow-up-fill::before { content: "\f8d2"; }
+.bi-send-arrow-up::before { content: "\f8d3"; }
+.bi-sim-slash-fill::before { content: "\f8d4"; }
+.bi-sim-slash::before { content: "\f8d5"; }
+.bi-sourceforge::before { content: "\f8d6"; }
+.bi-substack::before { content: "\f8d7"; }
+.bi-threads-fill::before { content: "\f8d8"; }
+.bi-threads::before { content: "\f8d9"; }
+.bi-transparency::before { content: "\f8da"; }
+.bi-twitter-x::before { content: "\f8db"; }
+.bi-type-h4::before { content: "\f8dc"; }
+.bi-type-h5::before { content: "\f8dd"; }
+.bi-type-h6::before { content: "\f8de"; }
+.bi-backpack-fill::before { content: "\f8df"; }
+.bi-backpack::before { content: "\f8e0"; }
+.bi-backpack2-fill::before { content: "\f8e1"; }
+.bi-backpack2::before { content: "\f8e2"; }
+.bi-backpack3-fill::before { content: "\f8e3"; }
+.bi-backpack3::before { content: "\f8e4"; }
+.bi-backpack4-fill::before { content: "\f8e5"; }
+.bi-backpack4::before { content: "\f8e6"; }
+.bi-brilliance::before { content: "\f8e7"; }
+.bi-cake-fill::before { content: "\f8e8"; }
+.bi-cake2-fill::before { content: "\f8e9"; }
+.bi-duffle-fill::before { content: "\f8ea"; }
+.bi-duffle::before { content: "\f8eb"; }
+.bi-exposure::before { content: "\f8ec"; }
+.bi-gender-neuter::before { content: "\f8ed"; }
+.bi-highlights::before { content: "\f8ee"; }
+.bi-luggage-fill::before { content: "\f8ef"; }
+.bi-luggage::before { content: "\f8f0"; }
+.bi-mailbox-flag::before { content: "\f8f1"; }
+.bi-mailbox2-flag::before { content: "\f8f2"; }
+.bi-noise-reduction::before { content: "\f8f3"; }
+.bi-passport-fill::before { content: "\f8f4"; }
+.bi-passport::before { content: "\f8f5"; }
+.bi-person-arms-up::before { content: "\f8f6"; }
+.bi-person-raised-hand::before { content: "\f8f7"; }
+.bi-person-standing-dress::before { content: "\f8f8"; }
+.bi-person-standing::before { content: "\f8f9"; }
+.bi-person-walking::before { content: "\f8fa"; }
+.bi-person-wheelchair::before { content: "\f8fb"; }
+.bi-shadows::before { content: "\f8fc"; }
+.bi-suitcase-fill::before { content: "\f8fd"; }
+.bi-suitcase-lg-fill::before { content: "\f8fe"; }
+.bi-suitcase-lg::before { content: "\f8ff"; }
+.bi-suitcase::before { content: "\f900"; }
+.bi-suitcase2-fill::before { content: "\f901"; }
+.bi-suitcase2::before { content: "\f902"; }
+.bi-vignette::before { content: "\f903"; }
diff --git a/vendor/twbs/bootstrap-icons/font/bootstrap-icons.json b/vendor/twbs/bootstrap-icons/font/bootstrap-icons.json
new file mode 100644
index 000000000..56247e50b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/font/bootstrap-icons.json
@@ -0,0 +1,2052 @@
+{
+ "123": 63103,
+ "alarm-fill": 61697,
+ "alarm": 61698,
+ "align-bottom": 61699,
+ "align-center": 61700,
+ "align-end": 61701,
+ "align-middle": 61702,
+ "align-start": 61703,
+ "align-top": 61704,
+ "alt": 61705,
+ "app-indicator": 61706,
+ "app": 61707,
+ "archive-fill": 61708,
+ "archive": 61709,
+ "arrow-90deg-down": 61710,
+ "arrow-90deg-left": 61711,
+ "arrow-90deg-right": 61712,
+ "arrow-90deg-up": 61713,
+ "arrow-bar-down": 61714,
+ "arrow-bar-left": 61715,
+ "arrow-bar-right": 61716,
+ "arrow-bar-up": 61717,
+ "arrow-clockwise": 61718,
+ "arrow-counterclockwise": 61719,
+ "arrow-down-circle-fill": 61720,
+ "arrow-down-circle": 61721,
+ "arrow-down-left-circle-fill": 61722,
+ "arrow-down-left-circle": 61723,
+ "arrow-down-left-square-fill": 61724,
+ "arrow-down-left-square": 61725,
+ "arrow-down-left": 61726,
+ "arrow-down-right-circle-fill": 61727,
+ "arrow-down-right-circle": 61728,
+ "arrow-down-right-square-fill": 61729,
+ "arrow-down-right-square": 61730,
+ "arrow-down-right": 61731,
+ "arrow-down-short": 61732,
+ "arrow-down-square-fill": 61733,
+ "arrow-down-square": 61734,
+ "arrow-down-up": 61735,
+ "arrow-down": 61736,
+ "arrow-left-circle-fill": 61737,
+ "arrow-left-circle": 61738,
+ "arrow-left-right": 61739,
+ "arrow-left-short": 61740,
+ "arrow-left-square-fill": 61741,
+ "arrow-left-square": 61742,
+ "arrow-left": 61743,
+ "arrow-repeat": 61744,
+ "arrow-return-left": 61745,
+ "arrow-return-right": 61746,
+ "arrow-right-circle-fill": 61747,
+ "arrow-right-circle": 61748,
+ "arrow-right-short": 61749,
+ "arrow-right-square-fill": 61750,
+ "arrow-right-square": 61751,
+ "arrow-right": 61752,
+ "arrow-up-circle-fill": 61753,
+ "arrow-up-circle": 61754,
+ "arrow-up-left-circle-fill": 61755,
+ "arrow-up-left-circle": 61756,
+ "arrow-up-left-square-fill": 61757,
+ "arrow-up-left-square": 61758,
+ "arrow-up-left": 61759,
+ "arrow-up-right-circle-fill": 61760,
+ "arrow-up-right-circle": 61761,
+ "arrow-up-right-square-fill": 61762,
+ "arrow-up-right-square": 61763,
+ "arrow-up-right": 61764,
+ "arrow-up-short": 61765,
+ "arrow-up-square-fill": 61766,
+ "arrow-up-square": 61767,
+ "arrow-up": 61768,
+ "arrows-angle-contract": 61769,
+ "arrows-angle-expand": 61770,
+ "arrows-collapse": 61771,
+ "arrows-expand": 61772,
+ "arrows-fullscreen": 61773,
+ "arrows-move": 61774,
+ "aspect-ratio-fill": 61775,
+ "aspect-ratio": 61776,
+ "asterisk": 61777,
+ "at": 61778,
+ "award-fill": 61779,
+ "award": 61780,
+ "back": 61781,
+ "backspace-fill": 61782,
+ "backspace-reverse-fill": 61783,
+ "backspace-reverse": 61784,
+ "backspace": 61785,
+ "badge-3d-fill": 61786,
+ "badge-3d": 61787,
+ "badge-4k-fill": 61788,
+ "badge-4k": 61789,
+ "badge-8k-fill": 61790,
+ "badge-8k": 61791,
+ "badge-ad-fill": 61792,
+ "badge-ad": 61793,
+ "badge-ar-fill": 61794,
+ "badge-ar": 61795,
+ "badge-cc-fill": 61796,
+ "badge-cc": 61797,
+ "badge-hd-fill": 61798,
+ "badge-hd": 61799,
+ "badge-tm-fill": 61800,
+ "badge-tm": 61801,
+ "badge-vo-fill": 61802,
+ "badge-vo": 61803,
+ "badge-vr-fill": 61804,
+ "badge-vr": 61805,
+ "badge-wc-fill": 61806,
+ "badge-wc": 61807,
+ "bag-check-fill": 61808,
+ "bag-check": 61809,
+ "bag-dash-fill": 61810,
+ "bag-dash": 61811,
+ "bag-fill": 61812,
+ "bag-plus-fill": 61813,
+ "bag-plus": 61814,
+ "bag-x-fill": 61815,
+ "bag-x": 61816,
+ "bag": 61817,
+ "bar-chart-fill": 61818,
+ "bar-chart-line-fill": 61819,
+ "bar-chart-line": 61820,
+ "bar-chart-steps": 61821,
+ "bar-chart": 61822,
+ "basket-fill": 61823,
+ "basket": 61824,
+ "basket2-fill": 61825,
+ "basket2": 61826,
+ "basket3-fill": 61827,
+ "basket3": 61828,
+ "battery-charging": 61829,
+ "battery-full": 61830,
+ "battery-half": 61831,
+ "battery": 61832,
+ "bell-fill": 61833,
+ "bell": 61834,
+ "bezier": 61835,
+ "bezier2": 61836,
+ "bicycle": 61837,
+ "binoculars-fill": 61838,
+ "binoculars": 61839,
+ "blockquote-left": 61840,
+ "blockquote-right": 61841,
+ "book-fill": 61842,
+ "book-half": 61843,
+ "book": 61844,
+ "bookmark-check-fill": 61845,
+ "bookmark-check": 61846,
+ "bookmark-dash-fill": 61847,
+ "bookmark-dash": 61848,
+ "bookmark-fill": 61849,
+ "bookmark-heart-fill": 61850,
+ "bookmark-heart": 61851,
+ "bookmark-plus-fill": 61852,
+ "bookmark-plus": 61853,
+ "bookmark-star-fill": 61854,
+ "bookmark-star": 61855,
+ "bookmark-x-fill": 61856,
+ "bookmark-x": 61857,
+ "bookmark": 61858,
+ "bookmarks-fill": 61859,
+ "bookmarks": 61860,
+ "bookshelf": 61861,
+ "bootstrap-fill": 61862,
+ "bootstrap-reboot": 61863,
+ "bootstrap": 61864,
+ "border-all": 61865,
+ "border-bottom": 61866,
+ "border-center": 61867,
+ "border-inner": 61868,
+ "border-left": 61869,
+ "border-middle": 61870,
+ "border-outer": 61871,
+ "border-right": 61872,
+ "border-style": 61873,
+ "border-top": 61874,
+ "border-width": 61875,
+ "border": 61876,
+ "bounding-box-circles": 61877,
+ "bounding-box": 61878,
+ "box-arrow-down-left": 61879,
+ "box-arrow-down-right": 61880,
+ "box-arrow-down": 61881,
+ "box-arrow-in-down-left": 61882,
+ "box-arrow-in-down-right": 61883,
+ "box-arrow-in-down": 61884,
+ "box-arrow-in-left": 61885,
+ "box-arrow-in-right": 61886,
+ "box-arrow-in-up-left": 61887,
+ "box-arrow-in-up-right": 61888,
+ "box-arrow-in-up": 61889,
+ "box-arrow-left": 61890,
+ "box-arrow-right": 61891,
+ "box-arrow-up-left": 61892,
+ "box-arrow-up-right": 61893,
+ "box-arrow-up": 61894,
+ "box-seam": 61895,
+ "box": 61896,
+ "braces": 61897,
+ "bricks": 61898,
+ "briefcase-fill": 61899,
+ "briefcase": 61900,
+ "brightness-alt-high-fill": 61901,
+ "brightness-alt-high": 61902,
+ "brightness-alt-low-fill": 61903,
+ "brightness-alt-low": 61904,
+ "brightness-high-fill": 61905,
+ "brightness-high": 61906,
+ "brightness-low-fill": 61907,
+ "brightness-low": 61908,
+ "broadcast-pin": 61909,
+ "broadcast": 61910,
+ "brush-fill": 61911,
+ "brush": 61912,
+ "bucket-fill": 61913,
+ "bucket": 61914,
+ "bug-fill": 61915,
+ "bug": 61916,
+ "building": 61917,
+ "bullseye": 61918,
+ "calculator-fill": 61919,
+ "calculator": 61920,
+ "calendar-check-fill": 61921,
+ "calendar-check": 61922,
+ "calendar-date-fill": 61923,
+ "calendar-date": 61924,
+ "calendar-day-fill": 61925,
+ "calendar-day": 61926,
+ "calendar-event-fill": 61927,
+ "calendar-event": 61928,
+ "calendar-fill": 61929,
+ "calendar-minus-fill": 61930,
+ "calendar-minus": 61931,
+ "calendar-month-fill": 61932,
+ "calendar-month": 61933,
+ "calendar-plus-fill": 61934,
+ "calendar-plus": 61935,
+ "calendar-range-fill": 61936,
+ "calendar-range": 61937,
+ "calendar-week-fill": 61938,
+ "calendar-week": 61939,
+ "calendar-x-fill": 61940,
+ "calendar-x": 61941,
+ "calendar": 61942,
+ "calendar2-check-fill": 61943,
+ "calendar2-check": 61944,
+ "calendar2-date-fill": 61945,
+ "calendar2-date": 61946,
+ "calendar2-day-fill": 61947,
+ "calendar2-day": 61948,
+ "calendar2-event-fill": 61949,
+ "calendar2-event": 61950,
+ "calendar2-fill": 61951,
+ "calendar2-minus-fill": 61952,
+ "calendar2-minus": 61953,
+ "calendar2-month-fill": 61954,
+ "calendar2-month": 61955,
+ "calendar2-plus-fill": 61956,
+ "calendar2-plus": 61957,
+ "calendar2-range-fill": 61958,
+ "calendar2-range": 61959,
+ "calendar2-week-fill": 61960,
+ "calendar2-week": 61961,
+ "calendar2-x-fill": 61962,
+ "calendar2-x": 61963,
+ "calendar2": 61964,
+ "calendar3-event-fill": 61965,
+ "calendar3-event": 61966,
+ "calendar3-fill": 61967,
+ "calendar3-range-fill": 61968,
+ "calendar3-range": 61969,
+ "calendar3-week-fill": 61970,
+ "calendar3-week": 61971,
+ "calendar3": 61972,
+ "calendar4-event": 61973,
+ "calendar4-range": 61974,
+ "calendar4-week": 61975,
+ "calendar4": 61976,
+ "camera-fill": 61977,
+ "camera-reels-fill": 61978,
+ "camera-reels": 61979,
+ "camera-video-fill": 61980,
+ "camera-video-off-fill": 61981,
+ "camera-video-off": 61982,
+ "camera-video": 61983,
+ "camera": 61984,
+ "camera2": 61985,
+ "capslock-fill": 61986,
+ "capslock": 61987,
+ "card-checklist": 61988,
+ "card-heading": 61989,
+ "card-image": 61990,
+ "card-list": 61991,
+ "card-text": 61992,
+ "caret-down-fill": 61993,
+ "caret-down-square-fill": 61994,
+ "caret-down-square": 61995,
+ "caret-down": 61996,
+ "caret-left-fill": 61997,
+ "caret-left-square-fill": 61998,
+ "caret-left-square": 61999,
+ "caret-left": 62000,
+ "caret-right-fill": 62001,
+ "caret-right-square-fill": 62002,
+ "caret-right-square": 62003,
+ "caret-right": 62004,
+ "caret-up-fill": 62005,
+ "caret-up-square-fill": 62006,
+ "caret-up-square": 62007,
+ "caret-up": 62008,
+ "cart-check-fill": 62009,
+ "cart-check": 62010,
+ "cart-dash-fill": 62011,
+ "cart-dash": 62012,
+ "cart-fill": 62013,
+ "cart-plus-fill": 62014,
+ "cart-plus": 62015,
+ "cart-x-fill": 62016,
+ "cart-x": 62017,
+ "cart": 62018,
+ "cart2": 62019,
+ "cart3": 62020,
+ "cart4": 62021,
+ "cash-stack": 62022,
+ "cash": 62023,
+ "cast": 62024,
+ "chat-dots-fill": 62025,
+ "chat-dots": 62026,
+ "chat-fill": 62027,
+ "chat-left-dots-fill": 62028,
+ "chat-left-dots": 62029,
+ "chat-left-fill": 62030,
+ "chat-left-quote-fill": 62031,
+ "chat-left-quote": 62032,
+ "chat-left-text-fill": 62033,
+ "chat-left-text": 62034,
+ "chat-left": 62035,
+ "chat-quote-fill": 62036,
+ "chat-quote": 62037,
+ "chat-right-dots-fill": 62038,
+ "chat-right-dots": 62039,
+ "chat-right-fill": 62040,
+ "chat-right-quote-fill": 62041,
+ "chat-right-quote": 62042,
+ "chat-right-text-fill": 62043,
+ "chat-right-text": 62044,
+ "chat-right": 62045,
+ "chat-square-dots-fill": 62046,
+ "chat-square-dots": 62047,
+ "chat-square-fill": 62048,
+ "chat-square-quote-fill": 62049,
+ "chat-square-quote": 62050,
+ "chat-square-text-fill": 62051,
+ "chat-square-text": 62052,
+ "chat-square": 62053,
+ "chat-text-fill": 62054,
+ "chat-text": 62055,
+ "chat": 62056,
+ "check-all": 62057,
+ "check-circle-fill": 62058,
+ "check-circle": 62059,
+ "check-square-fill": 62060,
+ "check-square": 62061,
+ "check": 62062,
+ "check2-all": 62063,
+ "check2-circle": 62064,
+ "check2-square": 62065,
+ "check2": 62066,
+ "chevron-bar-contract": 62067,
+ "chevron-bar-down": 62068,
+ "chevron-bar-expand": 62069,
+ "chevron-bar-left": 62070,
+ "chevron-bar-right": 62071,
+ "chevron-bar-up": 62072,
+ "chevron-compact-down": 62073,
+ "chevron-compact-left": 62074,
+ "chevron-compact-right": 62075,
+ "chevron-compact-up": 62076,
+ "chevron-contract": 62077,
+ "chevron-double-down": 62078,
+ "chevron-double-left": 62079,
+ "chevron-double-right": 62080,
+ "chevron-double-up": 62081,
+ "chevron-down": 62082,
+ "chevron-expand": 62083,
+ "chevron-left": 62084,
+ "chevron-right": 62085,
+ "chevron-up": 62086,
+ "circle-fill": 62087,
+ "circle-half": 62088,
+ "circle-square": 62089,
+ "circle": 62090,
+ "clipboard-check": 62091,
+ "clipboard-data": 62092,
+ "clipboard-minus": 62093,
+ "clipboard-plus": 62094,
+ "clipboard-x": 62095,
+ "clipboard": 62096,
+ "clock-fill": 62097,
+ "clock-history": 62098,
+ "clock": 62099,
+ "cloud-arrow-down-fill": 62100,
+ "cloud-arrow-down": 62101,
+ "cloud-arrow-up-fill": 62102,
+ "cloud-arrow-up": 62103,
+ "cloud-check-fill": 62104,
+ "cloud-check": 62105,
+ "cloud-download-fill": 62106,
+ "cloud-download": 62107,
+ "cloud-drizzle-fill": 62108,
+ "cloud-drizzle": 62109,
+ "cloud-fill": 62110,
+ "cloud-fog-fill": 62111,
+ "cloud-fog": 62112,
+ "cloud-fog2-fill": 62113,
+ "cloud-fog2": 62114,
+ "cloud-hail-fill": 62115,
+ "cloud-hail": 62116,
+ "cloud-haze-fill": 62118,
+ "cloud-haze": 62119,
+ "cloud-haze2-fill": 62120,
+ "cloud-lightning-fill": 62121,
+ "cloud-lightning-rain-fill": 62122,
+ "cloud-lightning-rain": 62123,
+ "cloud-lightning": 62124,
+ "cloud-minus-fill": 62125,
+ "cloud-minus": 62126,
+ "cloud-moon-fill": 62127,
+ "cloud-moon": 62128,
+ "cloud-plus-fill": 62129,
+ "cloud-plus": 62130,
+ "cloud-rain-fill": 62131,
+ "cloud-rain-heavy-fill": 62132,
+ "cloud-rain-heavy": 62133,
+ "cloud-rain": 62134,
+ "cloud-slash-fill": 62135,
+ "cloud-slash": 62136,
+ "cloud-sleet-fill": 62137,
+ "cloud-sleet": 62138,
+ "cloud-snow-fill": 62139,
+ "cloud-snow": 62140,
+ "cloud-sun-fill": 62141,
+ "cloud-sun": 62142,
+ "cloud-upload-fill": 62143,
+ "cloud-upload": 62144,
+ "cloud": 62145,
+ "clouds-fill": 62146,
+ "clouds": 62147,
+ "cloudy-fill": 62148,
+ "cloudy": 62149,
+ "code-slash": 62150,
+ "code-square": 62151,
+ "code": 62152,
+ "collection-fill": 62153,
+ "collection-play-fill": 62154,
+ "collection-play": 62155,
+ "collection": 62156,
+ "columns-gap": 62157,
+ "columns": 62158,
+ "command": 62159,
+ "compass-fill": 62160,
+ "compass": 62161,
+ "cone-striped": 62162,
+ "cone": 62163,
+ "controller": 62164,
+ "cpu-fill": 62165,
+ "cpu": 62166,
+ "credit-card-2-back-fill": 62167,
+ "credit-card-2-back": 62168,
+ "credit-card-2-front-fill": 62169,
+ "credit-card-2-front": 62170,
+ "credit-card-fill": 62171,
+ "credit-card": 62172,
+ "crop": 62173,
+ "cup-fill": 62174,
+ "cup-straw": 62175,
+ "cup": 62176,
+ "cursor-fill": 62177,
+ "cursor-text": 62178,
+ "cursor": 62179,
+ "dash-circle-dotted": 62180,
+ "dash-circle-fill": 62181,
+ "dash-circle": 62182,
+ "dash-square-dotted": 62183,
+ "dash-square-fill": 62184,
+ "dash-square": 62185,
+ "dash": 62186,
+ "diagram-2-fill": 62187,
+ "diagram-2": 62188,
+ "diagram-3-fill": 62189,
+ "diagram-3": 62190,
+ "diamond-fill": 62191,
+ "diamond-half": 62192,
+ "diamond": 62193,
+ "dice-1-fill": 62194,
+ "dice-1": 62195,
+ "dice-2-fill": 62196,
+ "dice-2": 62197,
+ "dice-3-fill": 62198,
+ "dice-3": 62199,
+ "dice-4-fill": 62200,
+ "dice-4": 62201,
+ "dice-5-fill": 62202,
+ "dice-5": 62203,
+ "dice-6-fill": 62204,
+ "dice-6": 62205,
+ "disc-fill": 62206,
+ "disc": 62207,
+ "discord": 62208,
+ "display-fill": 62209,
+ "display": 62210,
+ "distribute-horizontal": 62211,
+ "distribute-vertical": 62212,
+ "door-closed-fill": 62213,
+ "door-closed": 62214,
+ "door-open-fill": 62215,
+ "door-open": 62216,
+ "dot": 62217,
+ "download": 62218,
+ "droplet-fill": 62219,
+ "droplet-half": 62220,
+ "droplet": 62221,
+ "earbuds": 62222,
+ "easel-fill": 62223,
+ "easel": 62224,
+ "egg-fill": 62225,
+ "egg-fried": 62226,
+ "egg": 62227,
+ "eject-fill": 62228,
+ "eject": 62229,
+ "emoji-angry-fill": 62230,
+ "emoji-angry": 62231,
+ "emoji-dizzy-fill": 62232,
+ "emoji-dizzy": 62233,
+ "emoji-expressionless-fill": 62234,
+ "emoji-expressionless": 62235,
+ "emoji-frown-fill": 62236,
+ "emoji-frown": 62237,
+ "emoji-heart-eyes-fill": 62238,
+ "emoji-heart-eyes": 62239,
+ "emoji-laughing-fill": 62240,
+ "emoji-laughing": 62241,
+ "emoji-neutral-fill": 62242,
+ "emoji-neutral": 62243,
+ "emoji-smile-fill": 62244,
+ "emoji-smile-upside-down-fill": 62245,
+ "emoji-smile-upside-down": 62246,
+ "emoji-smile": 62247,
+ "emoji-sunglasses-fill": 62248,
+ "emoji-sunglasses": 62249,
+ "emoji-wink-fill": 62250,
+ "emoji-wink": 62251,
+ "envelope-fill": 62252,
+ "envelope-open-fill": 62253,
+ "envelope-open": 62254,
+ "envelope": 62255,
+ "eraser-fill": 62256,
+ "eraser": 62257,
+ "exclamation-circle-fill": 62258,
+ "exclamation-circle": 62259,
+ "exclamation-diamond-fill": 62260,
+ "exclamation-diamond": 62261,
+ "exclamation-octagon-fill": 62262,
+ "exclamation-octagon": 62263,
+ "exclamation-square-fill": 62264,
+ "exclamation-square": 62265,
+ "exclamation-triangle-fill": 62266,
+ "exclamation-triangle": 62267,
+ "exclamation": 62268,
+ "exclude": 62269,
+ "eye-fill": 62270,
+ "eye-slash-fill": 62271,
+ "eye-slash": 62272,
+ "eye": 62273,
+ "eyedropper": 62274,
+ "eyeglasses": 62275,
+ "facebook": 62276,
+ "file-arrow-down-fill": 62277,
+ "file-arrow-down": 62278,
+ "file-arrow-up-fill": 62279,
+ "file-arrow-up": 62280,
+ "file-bar-graph-fill": 62281,
+ "file-bar-graph": 62282,
+ "file-binary-fill": 62283,
+ "file-binary": 62284,
+ "file-break-fill": 62285,
+ "file-break": 62286,
+ "file-check-fill": 62287,
+ "file-check": 62288,
+ "file-code-fill": 62289,
+ "file-code": 62290,
+ "file-diff-fill": 62291,
+ "file-diff": 62292,
+ "file-earmark-arrow-down-fill": 62293,
+ "file-earmark-arrow-down": 62294,
+ "file-earmark-arrow-up-fill": 62295,
+ "file-earmark-arrow-up": 62296,
+ "file-earmark-bar-graph-fill": 62297,
+ "file-earmark-bar-graph": 62298,
+ "file-earmark-binary-fill": 62299,
+ "file-earmark-binary": 62300,
+ "file-earmark-break-fill": 62301,
+ "file-earmark-break": 62302,
+ "file-earmark-check-fill": 62303,
+ "file-earmark-check": 62304,
+ "file-earmark-code-fill": 62305,
+ "file-earmark-code": 62306,
+ "file-earmark-diff-fill": 62307,
+ "file-earmark-diff": 62308,
+ "file-earmark-easel-fill": 62309,
+ "file-earmark-easel": 62310,
+ "file-earmark-excel-fill": 62311,
+ "file-earmark-excel": 62312,
+ "file-earmark-fill": 62313,
+ "file-earmark-font-fill": 62314,
+ "file-earmark-font": 62315,
+ "file-earmark-image-fill": 62316,
+ "file-earmark-image": 62317,
+ "file-earmark-lock-fill": 62318,
+ "file-earmark-lock": 62319,
+ "file-earmark-lock2-fill": 62320,
+ "file-earmark-lock2": 62321,
+ "file-earmark-medical-fill": 62322,
+ "file-earmark-medical": 62323,
+ "file-earmark-minus-fill": 62324,
+ "file-earmark-minus": 62325,
+ "file-earmark-music-fill": 62326,
+ "file-earmark-music": 62327,
+ "file-earmark-person-fill": 62328,
+ "file-earmark-person": 62329,
+ "file-earmark-play-fill": 62330,
+ "file-earmark-play": 62331,
+ "file-earmark-plus-fill": 62332,
+ "file-earmark-plus": 62333,
+ "file-earmark-post-fill": 62334,
+ "file-earmark-post": 62335,
+ "file-earmark-ppt-fill": 62336,
+ "file-earmark-ppt": 62337,
+ "file-earmark-richtext-fill": 62338,
+ "file-earmark-richtext": 62339,
+ "file-earmark-ruled-fill": 62340,
+ "file-earmark-ruled": 62341,
+ "file-earmark-slides-fill": 62342,
+ "file-earmark-slides": 62343,
+ "file-earmark-spreadsheet-fill": 62344,
+ "file-earmark-spreadsheet": 62345,
+ "file-earmark-text-fill": 62346,
+ "file-earmark-text": 62347,
+ "file-earmark-word-fill": 62348,
+ "file-earmark-word": 62349,
+ "file-earmark-x-fill": 62350,
+ "file-earmark-x": 62351,
+ "file-earmark-zip-fill": 62352,
+ "file-earmark-zip": 62353,
+ "file-earmark": 62354,
+ "file-easel-fill": 62355,
+ "file-easel": 62356,
+ "file-excel-fill": 62357,
+ "file-excel": 62358,
+ "file-fill": 62359,
+ "file-font-fill": 62360,
+ "file-font": 62361,
+ "file-image-fill": 62362,
+ "file-image": 62363,
+ "file-lock-fill": 62364,
+ "file-lock": 62365,
+ "file-lock2-fill": 62366,
+ "file-lock2": 62367,
+ "file-medical-fill": 62368,
+ "file-medical": 62369,
+ "file-minus-fill": 62370,
+ "file-minus": 62371,
+ "file-music-fill": 62372,
+ "file-music": 62373,
+ "file-person-fill": 62374,
+ "file-person": 62375,
+ "file-play-fill": 62376,
+ "file-play": 62377,
+ "file-plus-fill": 62378,
+ "file-plus": 62379,
+ "file-post-fill": 62380,
+ "file-post": 62381,
+ "file-ppt-fill": 62382,
+ "file-ppt": 62383,
+ "file-richtext-fill": 62384,
+ "file-richtext": 62385,
+ "file-ruled-fill": 62386,
+ "file-ruled": 62387,
+ "file-slides-fill": 62388,
+ "file-slides": 62389,
+ "file-spreadsheet-fill": 62390,
+ "file-spreadsheet": 62391,
+ "file-text-fill": 62392,
+ "file-text": 62393,
+ "file-word-fill": 62394,
+ "file-word": 62395,
+ "file-x-fill": 62396,
+ "file-x": 62397,
+ "file-zip-fill": 62398,
+ "file-zip": 62399,
+ "file": 62400,
+ "files-alt": 62401,
+ "files": 62402,
+ "film": 62403,
+ "filter-circle-fill": 62404,
+ "filter-circle": 62405,
+ "filter-left": 62406,
+ "filter-right": 62407,
+ "filter-square-fill": 62408,
+ "filter-square": 62409,
+ "filter": 62410,
+ "flag-fill": 62411,
+ "flag": 62412,
+ "flower1": 62413,
+ "flower2": 62414,
+ "flower3": 62415,
+ "folder-check": 62416,
+ "folder-fill": 62417,
+ "folder-minus": 62418,
+ "folder-plus": 62419,
+ "folder-symlink-fill": 62420,
+ "folder-symlink": 62421,
+ "folder-x": 62422,
+ "folder": 62423,
+ "folder2-open": 62424,
+ "folder2": 62425,
+ "fonts": 62426,
+ "forward-fill": 62427,
+ "forward": 62428,
+ "front": 62429,
+ "fullscreen-exit": 62430,
+ "fullscreen": 62431,
+ "funnel-fill": 62432,
+ "funnel": 62433,
+ "gear-fill": 62434,
+ "gear-wide-connected": 62435,
+ "gear-wide": 62436,
+ "gear": 62437,
+ "gem": 62438,
+ "geo-alt-fill": 62439,
+ "geo-alt": 62440,
+ "geo-fill": 62441,
+ "geo": 62442,
+ "gift-fill": 62443,
+ "gift": 62444,
+ "github": 62445,
+ "globe": 62446,
+ "globe2": 62447,
+ "google": 62448,
+ "graph-down": 62449,
+ "graph-up": 62450,
+ "grid-1x2-fill": 62451,
+ "grid-1x2": 62452,
+ "grid-3x2-gap-fill": 62453,
+ "grid-3x2-gap": 62454,
+ "grid-3x2": 62455,
+ "grid-3x3-gap-fill": 62456,
+ "grid-3x3-gap": 62457,
+ "grid-3x3": 62458,
+ "grid-fill": 62459,
+ "grid": 62460,
+ "grip-horizontal": 62461,
+ "grip-vertical": 62462,
+ "hammer": 62463,
+ "hand-index-fill": 62464,
+ "hand-index-thumb-fill": 62465,
+ "hand-index-thumb": 62466,
+ "hand-index": 62467,
+ "hand-thumbs-down-fill": 62468,
+ "hand-thumbs-down": 62469,
+ "hand-thumbs-up-fill": 62470,
+ "hand-thumbs-up": 62471,
+ "handbag-fill": 62472,
+ "handbag": 62473,
+ "hash": 62474,
+ "hdd-fill": 62475,
+ "hdd-network-fill": 62476,
+ "hdd-network": 62477,
+ "hdd-rack-fill": 62478,
+ "hdd-rack": 62479,
+ "hdd-stack-fill": 62480,
+ "hdd-stack": 62481,
+ "hdd": 62482,
+ "headphones": 62483,
+ "headset": 62484,
+ "heart-fill": 62485,
+ "heart-half": 62486,
+ "heart": 62487,
+ "heptagon-fill": 62488,
+ "heptagon-half": 62489,
+ "heptagon": 62490,
+ "hexagon-fill": 62491,
+ "hexagon-half": 62492,
+ "hexagon": 62493,
+ "hourglass-bottom": 62494,
+ "hourglass-split": 62495,
+ "hourglass-top": 62496,
+ "hourglass": 62497,
+ "house-door-fill": 62498,
+ "house-door": 62499,
+ "house-fill": 62500,
+ "house": 62501,
+ "hr": 62502,
+ "hurricane": 62503,
+ "image-alt": 62504,
+ "image-fill": 62505,
+ "image": 62506,
+ "images": 62507,
+ "inbox-fill": 62508,
+ "inbox": 62509,
+ "inboxes-fill": 62510,
+ "inboxes": 62511,
+ "info-circle-fill": 62512,
+ "info-circle": 62513,
+ "info-square-fill": 62514,
+ "info-square": 62515,
+ "info": 62516,
+ "input-cursor-text": 62517,
+ "input-cursor": 62518,
+ "instagram": 62519,
+ "intersect": 62520,
+ "journal-album": 62521,
+ "journal-arrow-down": 62522,
+ "journal-arrow-up": 62523,
+ "journal-bookmark-fill": 62524,
+ "journal-bookmark": 62525,
+ "journal-check": 62526,
+ "journal-code": 62527,
+ "journal-medical": 62528,
+ "journal-minus": 62529,
+ "journal-plus": 62530,
+ "journal-richtext": 62531,
+ "journal-text": 62532,
+ "journal-x": 62533,
+ "journal": 62534,
+ "journals": 62535,
+ "joystick": 62536,
+ "justify-left": 62537,
+ "justify-right": 62538,
+ "justify": 62539,
+ "kanban-fill": 62540,
+ "kanban": 62541,
+ "key-fill": 62542,
+ "key": 62543,
+ "keyboard-fill": 62544,
+ "keyboard": 62545,
+ "ladder": 62546,
+ "lamp-fill": 62547,
+ "lamp": 62548,
+ "laptop-fill": 62549,
+ "laptop": 62550,
+ "layer-backward": 62551,
+ "layer-forward": 62552,
+ "layers-fill": 62553,
+ "layers-half": 62554,
+ "layers": 62555,
+ "layout-sidebar-inset-reverse": 62556,
+ "layout-sidebar-inset": 62557,
+ "layout-sidebar-reverse": 62558,
+ "layout-sidebar": 62559,
+ "layout-split": 62560,
+ "layout-text-sidebar-reverse": 62561,
+ "layout-text-sidebar": 62562,
+ "layout-text-window-reverse": 62563,
+ "layout-text-window": 62564,
+ "layout-three-columns": 62565,
+ "layout-wtf": 62566,
+ "life-preserver": 62567,
+ "lightbulb-fill": 62568,
+ "lightbulb-off-fill": 62569,
+ "lightbulb-off": 62570,
+ "lightbulb": 62571,
+ "lightning-charge-fill": 62572,
+ "lightning-charge": 62573,
+ "lightning-fill": 62574,
+ "lightning": 62575,
+ "link-45deg": 62576,
+ "link": 62577,
+ "linkedin": 62578,
+ "list-check": 62579,
+ "list-nested": 62580,
+ "list-ol": 62581,
+ "list-stars": 62582,
+ "list-task": 62583,
+ "list-ul": 62584,
+ "list": 62585,
+ "lock-fill": 62586,
+ "lock": 62587,
+ "mailbox": 62588,
+ "mailbox2": 62589,
+ "map-fill": 62590,
+ "map": 62591,
+ "markdown-fill": 62592,
+ "markdown": 62593,
+ "mask": 62594,
+ "megaphone-fill": 62595,
+ "megaphone": 62596,
+ "menu-app-fill": 62597,
+ "menu-app": 62598,
+ "menu-button-fill": 62599,
+ "menu-button-wide-fill": 62600,
+ "menu-button-wide": 62601,
+ "menu-button": 62602,
+ "menu-down": 62603,
+ "menu-up": 62604,
+ "mic-fill": 62605,
+ "mic-mute-fill": 62606,
+ "mic-mute": 62607,
+ "mic": 62608,
+ "minecart-loaded": 62609,
+ "minecart": 62610,
+ "moisture": 62611,
+ "moon-fill": 62612,
+ "moon-stars-fill": 62613,
+ "moon-stars": 62614,
+ "moon": 62615,
+ "mouse-fill": 62616,
+ "mouse": 62617,
+ "mouse2-fill": 62618,
+ "mouse2": 62619,
+ "mouse3-fill": 62620,
+ "mouse3": 62621,
+ "music-note-beamed": 62622,
+ "music-note-list": 62623,
+ "music-note": 62624,
+ "music-player-fill": 62625,
+ "music-player": 62626,
+ "newspaper": 62627,
+ "node-minus-fill": 62628,
+ "node-minus": 62629,
+ "node-plus-fill": 62630,
+ "node-plus": 62631,
+ "nut-fill": 62632,
+ "nut": 62633,
+ "octagon-fill": 62634,
+ "octagon-half": 62635,
+ "octagon": 62636,
+ "option": 62637,
+ "outlet": 62638,
+ "paint-bucket": 62639,
+ "palette-fill": 62640,
+ "palette": 62641,
+ "palette2": 62642,
+ "paperclip": 62643,
+ "paragraph": 62644,
+ "patch-check-fill": 62645,
+ "patch-check": 62646,
+ "patch-exclamation-fill": 62647,
+ "patch-exclamation": 62648,
+ "patch-minus-fill": 62649,
+ "patch-minus": 62650,
+ "patch-plus-fill": 62651,
+ "patch-plus": 62652,
+ "patch-question-fill": 62653,
+ "patch-question": 62654,
+ "pause-btn-fill": 62655,
+ "pause-btn": 62656,
+ "pause-circle-fill": 62657,
+ "pause-circle": 62658,
+ "pause-fill": 62659,
+ "pause": 62660,
+ "peace-fill": 62661,
+ "peace": 62662,
+ "pen-fill": 62663,
+ "pen": 62664,
+ "pencil-fill": 62665,
+ "pencil-square": 62666,
+ "pencil": 62667,
+ "pentagon-fill": 62668,
+ "pentagon-half": 62669,
+ "pentagon": 62670,
+ "people-fill": 62671,
+ "people": 62672,
+ "percent": 62673,
+ "person-badge-fill": 62674,
+ "person-badge": 62675,
+ "person-bounding-box": 62676,
+ "person-check-fill": 62677,
+ "person-check": 62678,
+ "person-circle": 62679,
+ "person-dash-fill": 62680,
+ "person-dash": 62681,
+ "person-fill": 62682,
+ "person-lines-fill": 62683,
+ "person-plus-fill": 62684,
+ "person-plus": 62685,
+ "person-square": 62686,
+ "person-x-fill": 62687,
+ "person-x": 62688,
+ "person": 62689,
+ "phone-fill": 62690,
+ "phone-landscape-fill": 62691,
+ "phone-landscape": 62692,
+ "phone-vibrate-fill": 62693,
+ "phone-vibrate": 62694,
+ "phone": 62695,
+ "pie-chart-fill": 62696,
+ "pie-chart": 62697,
+ "pin-angle-fill": 62698,
+ "pin-angle": 62699,
+ "pin-fill": 62700,
+ "pin": 62701,
+ "pip-fill": 62702,
+ "pip": 62703,
+ "play-btn-fill": 62704,
+ "play-btn": 62705,
+ "play-circle-fill": 62706,
+ "play-circle": 62707,
+ "play-fill": 62708,
+ "play": 62709,
+ "plug-fill": 62710,
+ "plug": 62711,
+ "plus-circle-dotted": 62712,
+ "plus-circle-fill": 62713,
+ "plus-circle": 62714,
+ "plus-square-dotted": 62715,
+ "plus-square-fill": 62716,
+ "plus-square": 62717,
+ "plus": 62718,
+ "power": 62719,
+ "printer-fill": 62720,
+ "printer": 62721,
+ "puzzle-fill": 62722,
+ "puzzle": 62723,
+ "question-circle-fill": 62724,
+ "question-circle": 62725,
+ "question-diamond-fill": 62726,
+ "question-diamond": 62727,
+ "question-octagon-fill": 62728,
+ "question-octagon": 62729,
+ "question-square-fill": 62730,
+ "question-square": 62731,
+ "question": 62732,
+ "rainbow": 62733,
+ "receipt-cutoff": 62734,
+ "receipt": 62735,
+ "reception-0": 62736,
+ "reception-1": 62737,
+ "reception-2": 62738,
+ "reception-3": 62739,
+ "reception-4": 62740,
+ "record-btn-fill": 62741,
+ "record-btn": 62742,
+ "record-circle-fill": 62743,
+ "record-circle": 62744,
+ "record-fill": 62745,
+ "record": 62746,
+ "record2-fill": 62747,
+ "record2": 62748,
+ "reply-all-fill": 62749,
+ "reply-all": 62750,
+ "reply-fill": 62751,
+ "reply": 62752,
+ "rss-fill": 62753,
+ "rss": 62754,
+ "rulers": 62755,
+ "save-fill": 62756,
+ "save": 62757,
+ "save2-fill": 62758,
+ "save2": 62759,
+ "scissors": 62760,
+ "screwdriver": 62761,
+ "search": 62762,
+ "segmented-nav": 62763,
+ "server": 62764,
+ "share-fill": 62765,
+ "share": 62766,
+ "shield-check": 62767,
+ "shield-exclamation": 62768,
+ "shield-fill-check": 62769,
+ "shield-fill-exclamation": 62770,
+ "shield-fill-minus": 62771,
+ "shield-fill-plus": 62772,
+ "shield-fill-x": 62773,
+ "shield-fill": 62774,
+ "shield-lock-fill": 62775,
+ "shield-lock": 62776,
+ "shield-minus": 62777,
+ "shield-plus": 62778,
+ "shield-shaded": 62779,
+ "shield-slash-fill": 62780,
+ "shield-slash": 62781,
+ "shield-x": 62782,
+ "shield": 62783,
+ "shift-fill": 62784,
+ "shift": 62785,
+ "shop-window": 62786,
+ "shop": 62787,
+ "shuffle": 62788,
+ "signpost-2-fill": 62789,
+ "signpost-2": 62790,
+ "signpost-fill": 62791,
+ "signpost-split-fill": 62792,
+ "signpost-split": 62793,
+ "signpost": 62794,
+ "sim-fill": 62795,
+ "sim": 62796,
+ "skip-backward-btn-fill": 62797,
+ "skip-backward-btn": 62798,
+ "skip-backward-circle-fill": 62799,
+ "skip-backward-circle": 62800,
+ "skip-backward-fill": 62801,
+ "skip-backward": 62802,
+ "skip-end-btn-fill": 62803,
+ "skip-end-btn": 62804,
+ "skip-end-circle-fill": 62805,
+ "skip-end-circle": 62806,
+ "skip-end-fill": 62807,
+ "skip-end": 62808,
+ "skip-forward-btn-fill": 62809,
+ "skip-forward-btn": 62810,
+ "skip-forward-circle-fill": 62811,
+ "skip-forward-circle": 62812,
+ "skip-forward-fill": 62813,
+ "skip-forward": 62814,
+ "skip-start-btn-fill": 62815,
+ "skip-start-btn": 62816,
+ "skip-start-circle-fill": 62817,
+ "skip-start-circle": 62818,
+ "skip-start-fill": 62819,
+ "skip-start": 62820,
+ "slack": 62821,
+ "slash-circle-fill": 62822,
+ "slash-circle": 62823,
+ "slash-square-fill": 62824,
+ "slash-square": 62825,
+ "slash": 62826,
+ "sliders": 62827,
+ "smartwatch": 62828,
+ "snow": 62829,
+ "snow2": 62830,
+ "snow3": 62831,
+ "sort-alpha-down-alt": 62832,
+ "sort-alpha-down": 62833,
+ "sort-alpha-up-alt": 62834,
+ "sort-alpha-up": 62835,
+ "sort-down-alt": 62836,
+ "sort-down": 62837,
+ "sort-numeric-down-alt": 62838,
+ "sort-numeric-down": 62839,
+ "sort-numeric-up-alt": 62840,
+ "sort-numeric-up": 62841,
+ "sort-up-alt": 62842,
+ "sort-up": 62843,
+ "soundwave": 62844,
+ "speaker-fill": 62845,
+ "speaker": 62846,
+ "speedometer": 62847,
+ "speedometer2": 62848,
+ "spellcheck": 62849,
+ "square-fill": 62850,
+ "square-half": 62851,
+ "square": 62852,
+ "stack": 62853,
+ "star-fill": 62854,
+ "star-half": 62855,
+ "star": 62856,
+ "stars": 62857,
+ "stickies-fill": 62858,
+ "stickies": 62859,
+ "sticky-fill": 62860,
+ "sticky": 62861,
+ "stop-btn-fill": 62862,
+ "stop-btn": 62863,
+ "stop-circle-fill": 62864,
+ "stop-circle": 62865,
+ "stop-fill": 62866,
+ "stop": 62867,
+ "stoplights-fill": 62868,
+ "stoplights": 62869,
+ "stopwatch-fill": 62870,
+ "stopwatch": 62871,
+ "subtract": 62872,
+ "suit-club-fill": 62873,
+ "suit-club": 62874,
+ "suit-diamond-fill": 62875,
+ "suit-diamond": 62876,
+ "suit-heart-fill": 62877,
+ "suit-heart": 62878,
+ "suit-spade-fill": 62879,
+ "suit-spade": 62880,
+ "sun-fill": 62881,
+ "sun": 62882,
+ "sunglasses": 62883,
+ "sunrise-fill": 62884,
+ "sunrise": 62885,
+ "sunset-fill": 62886,
+ "sunset": 62887,
+ "symmetry-horizontal": 62888,
+ "symmetry-vertical": 62889,
+ "table": 62890,
+ "tablet-fill": 62891,
+ "tablet-landscape-fill": 62892,
+ "tablet-landscape": 62893,
+ "tablet": 62894,
+ "tag-fill": 62895,
+ "tag": 62896,
+ "tags-fill": 62897,
+ "tags": 62898,
+ "telegram": 62899,
+ "telephone-fill": 62900,
+ "telephone-forward-fill": 62901,
+ "telephone-forward": 62902,
+ "telephone-inbound-fill": 62903,
+ "telephone-inbound": 62904,
+ "telephone-minus-fill": 62905,
+ "telephone-minus": 62906,
+ "telephone-outbound-fill": 62907,
+ "telephone-outbound": 62908,
+ "telephone-plus-fill": 62909,
+ "telephone-plus": 62910,
+ "telephone-x-fill": 62911,
+ "telephone-x": 62912,
+ "telephone": 62913,
+ "terminal-fill": 62914,
+ "terminal": 62915,
+ "text-center": 62916,
+ "text-indent-left": 62917,
+ "text-indent-right": 62918,
+ "text-left": 62919,
+ "text-paragraph": 62920,
+ "text-right": 62921,
+ "textarea-resize": 62922,
+ "textarea-t": 62923,
+ "textarea": 62924,
+ "thermometer-half": 62925,
+ "thermometer-high": 62926,
+ "thermometer-low": 62927,
+ "thermometer-snow": 62928,
+ "thermometer-sun": 62929,
+ "thermometer": 62930,
+ "three-dots-vertical": 62931,
+ "three-dots": 62932,
+ "toggle-off": 62933,
+ "toggle-on": 62934,
+ "toggle2-off": 62935,
+ "toggle2-on": 62936,
+ "toggles": 62937,
+ "toggles2": 62938,
+ "tools": 62939,
+ "tornado": 62940,
+ "trash-fill": 62941,
+ "trash": 62942,
+ "trash2-fill": 62943,
+ "trash2": 62944,
+ "tree-fill": 62945,
+ "tree": 62946,
+ "triangle-fill": 62947,
+ "triangle-half": 62948,
+ "triangle": 62949,
+ "trophy-fill": 62950,
+ "trophy": 62951,
+ "tropical-storm": 62952,
+ "truck-flatbed": 62953,
+ "truck": 62954,
+ "tsunami": 62955,
+ "tv-fill": 62956,
+ "tv": 62957,
+ "twitch": 62958,
+ "twitter": 62959,
+ "type-bold": 62960,
+ "type-h1": 62961,
+ "type-h2": 62962,
+ "type-h3": 62963,
+ "type-italic": 62964,
+ "type-strikethrough": 62965,
+ "type-underline": 62966,
+ "type": 62967,
+ "ui-checks-grid": 62968,
+ "ui-checks": 62969,
+ "ui-radios-grid": 62970,
+ "ui-radios": 62971,
+ "umbrella-fill": 62972,
+ "umbrella": 62973,
+ "union": 62974,
+ "unlock-fill": 62975,
+ "unlock": 62976,
+ "upc-scan": 62977,
+ "upc": 62978,
+ "upload": 62979,
+ "vector-pen": 62980,
+ "view-list": 62981,
+ "view-stacked": 62982,
+ "vinyl-fill": 62983,
+ "vinyl": 62984,
+ "voicemail": 62985,
+ "volume-down-fill": 62986,
+ "volume-down": 62987,
+ "volume-mute-fill": 62988,
+ "volume-mute": 62989,
+ "volume-off-fill": 62990,
+ "volume-off": 62991,
+ "volume-up-fill": 62992,
+ "volume-up": 62993,
+ "vr": 62994,
+ "wallet-fill": 62995,
+ "wallet": 62996,
+ "wallet2": 62997,
+ "watch": 62998,
+ "water": 62999,
+ "whatsapp": 63000,
+ "wifi-1": 63001,
+ "wifi-2": 63002,
+ "wifi-off": 63003,
+ "wifi": 63004,
+ "wind": 63005,
+ "window-dock": 63006,
+ "window-sidebar": 63007,
+ "window": 63008,
+ "wrench": 63009,
+ "x-circle-fill": 63010,
+ "x-circle": 63011,
+ "x-diamond-fill": 63012,
+ "x-diamond": 63013,
+ "x-octagon-fill": 63014,
+ "x-octagon": 63015,
+ "x-square-fill": 63016,
+ "x-square": 63017,
+ "x": 63018,
+ "youtube": 63019,
+ "zoom-in": 63020,
+ "zoom-out": 63021,
+ "bank": 63022,
+ "bank2": 63023,
+ "bell-slash-fill": 63024,
+ "bell-slash": 63025,
+ "cash-coin": 63026,
+ "check-lg": 63027,
+ "coin": 63028,
+ "currency-bitcoin": 63029,
+ "currency-dollar": 63030,
+ "currency-euro": 63031,
+ "currency-exchange": 63032,
+ "currency-pound": 63033,
+ "currency-yen": 63034,
+ "dash-lg": 63035,
+ "exclamation-lg": 63036,
+ "file-earmark-pdf-fill": 63037,
+ "file-earmark-pdf": 63038,
+ "file-pdf-fill": 63039,
+ "file-pdf": 63040,
+ "gender-ambiguous": 63041,
+ "gender-female": 63042,
+ "gender-male": 63043,
+ "gender-trans": 63044,
+ "headset-vr": 63045,
+ "info-lg": 63046,
+ "mastodon": 63047,
+ "messenger": 63048,
+ "piggy-bank-fill": 63049,
+ "piggy-bank": 63050,
+ "pin-map-fill": 63051,
+ "pin-map": 63052,
+ "plus-lg": 63053,
+ "question-lg": 63054,
+ "recycle": 63055,
+ "reddit": 63056,
+ "safe-fill": 63057,
+ "safe2-fill": 63058,
+ "safe2": 63059,
+ "sd-card-fill": 63060,
+ "sd-card": 63061,
+ "skype": 63062,
+ "slash-lg": 63063,
+ "translate": 63064,
+ "x-lg": 63065,
+ "safe": 63066,
+ "apple": 63067,
+ "microsoft": 63069,
+ "windows": 63070,
+ "behance": 63068,
+ "dribbble": 63071,
+ "line": 63072,
+ "medium": 63073,
+ "paypal": 63074,
+ "pinterest": 63075,
+ "signal": 63076,
+ "snapchat": 63077,
+ "spotify": 63078,
+ "stack-overflow": 63079,
+ "strava": 63080,
+ "wordpress": 63081,
+ "vimeo": 63082,
+ "activity": 63083,
+ "easel2-fill": 63084,
+ "easel2": 63085,
+ "easel3-fill": 63086,
+ "easel3": 63087,
+ "fan": 63088,
+ "fingerprint": 63089,
+ "graph-down-arrow": 63090,
+ "graph-up-arrow": 63091,
+ "hypnotize": 63092,
+ "magic": 63093,
+ "person-rolodex": 63094,
+ "person-video": 63095,
+ "person-video2": 63096,
+ "person-video3": 63097,
+ "person-workspace": 63098,
+ "radioactive": 63099,
+ "webcam-fill": 63100,
+ "webcam": 63101,
+ "yin-yang": 63102,
+ "bandaid-fill": 63104,
+ "bandaid": 63105,
+ "bluetooth": 63106,
+ "body-text": 63107,
+ "boombox": 63108,
+ "boxes": 63109,
+ "dpad-fill": 63110,
+ "dpad": 63111,
+ "ear-fill": 63112,
+ "ear": 63113,
+ "envelope-check-fill": 63115,
+ "envelope-check": 63116,
+ "envelope-dash-fill": 63118,
+ "envelope-dash": 63119,
+ "envelope-exclamation-fill": 63121,
+ "envelope-exclamation": 63122,
+ "envelope-plus-fill": 63123,
+ "envelope-plus": 63124,
+ "envelope-slash-fill": 63126,
+ "envelope-slash": 63127,
+ "envelope-x-fill": 63129,
+ "envelope-x": 63130,
+ "explicit-fill": 63131,
+ "explicit": 63132,
+ "git": 63133,
+ "infinity": 63134,
+ "list-columns-reverse": 63135,
+ "list-columns": 63136,
+ "meta": 63137,
+ "nintendo-switch": 63140,
+ "pc-display-horizontal": 63141,
+ "pc-display": 63142,
+ "pc-horizontal": 63143,
+ "pc": 63144,
+ "playstation": 63145,
+ "plus-slash-minus": 63146,
+ "projector-fill": 63147,
+ "projector": 63148,
+ "qr-code-scan": 63149,
+ "qr-code": 63150,
+ "quora": 63151,
+ "quote": 63152,
+ "robot": 63153,
+ "send-check-fill": 63154,
+ "send-check": 63155,
+ "send-dash-fill": 63156,
+ "send-dash": 63157,
+ "send-exclamation-fill": 63159,
+ "send-exclamation": 63160,
+ "send-fill": 63161,
+ "send-plus-fill": 63162,
+ "send-plus": 63163,
+ "send-slash-fill": 63164,
+ "send-slash": 63165,
+ "send-x-fill": 63166,
+ "send-x": 63167,
+ "send": 63168,
+ "steam": 63169,
+ "terminal-dash": 63171,
+ "terminal-plus": 63172,
+ "terminal-split": 63173,
+ "ticket-detailed-fill": 63174,
+ "ticket-detailed": 63175,
+ "ticket-fill": 63176,
+ "ticket-perforated-fill": 63177,
+ "ticket-perforated": 63178,
+ "ticket": 63179,
+ "tiktok": 63180,
+ "window-dash": 63181,
+ "window-desktop": 63182,
+ "window-fullscreen": 63183,
+ "window-plus": 63184,
+ "window-split": 63185,
+ "window-stack": 63186,
+ "window-x": 63187,
+ "xbox": 63188,
+ "ethernet": 63189,
+ "hdmi-fill": 63190,
+ "hdmi": 63191,
+ "usb-c-fill": 63192,
+ "usb-c": 63193,
+ "usb-fill": 63194,
+ "usb-plug-fill": 63195,
+ "usb-plug": 63196,
+ "usb-symbol": 63197,
+ "usb": 63198,
+ "boombox-fill": 63199,
+ "displayport": 63201,
+ "gpu-card": 63202,
+ "memory": 63203,
+ "modem-fill": 63204,
+ "modem": 63205,
+ "motherboard-fill": 63206,
+ "motherboard": 63207,
+ "optical-audio-fill": 63208,
+ "optical-audio": 63209,
+ "pci-card": 63210,
+ "router-fill": 63211,
+ "router": 63212,
+ "thunderbolt-fill": 63215,
+ "thunderbolt": 63216,
+ "usb-drive-fill": 63217,
+ "usb-drive": 63218,
+ "usb-micro-fill": 63219,
+ "usb-micro": 63220,
+ "usb-mini-fill": 63221,
+ "usb-mini": 63222,
+ "cloud-haze2": 63223,
+ "device-hdd-fill": 63224,
+ "device-hdd": 63225,
+ "device-ssd-fill": 63226,
+ "device-ssd": 63227,
+ "displayport-fill": 63228,
+ "mortarboard-fill": 63229,
+ "mortarboard": 63230,
+ "terminal-x": 63231,
+ "arrow-through-heart-fill": 63232,
+ "arrow-through-heart": 63233,
+ "badge-sd-fill": 63234,
+ "badge-sd": 63235,
+ "bag-heart-fill": 63236,
+ "bag-heart": 63237,
+ "balloon-fill": 63238,
+ "balloon-heart-fill": 63239,
+ "balloon-heart": 63240,
+ "balloon": 63241,
+ "box2-fill": 63242,
+ "box2-heart-fill": 63243,
+ "box2-heart": 63244,
+ "box2": 63245,
+ "braces-asterisk": 63246,
+ "calendar-heart-fill": 63247,
+ "calendar-heart": 63248,
+ "calendar2-heart-fill": 63249,
+ "calendar2-heart": 63250,
+ "chat-heart-fill": 63251,
+ "chat-heart": 63252,
+ "chat-left-heart-fill": 63253,
+ "chat-left-heart": 63254,
+ "chat-right-heart-fill": 63255,
+ "chat-right-heart": 63256,
+ "chat-square-heart-fill": 63257,
+ "chat-square-heart": 63258,
+ "clipboard-check-fill": 63259,
+ "clipboard-data-fill": 63260,
+ "clipboard-fill": 63261,
+ "clipboard-heart-fill": 63262,
+ "clipboard-heart": 63263,
+ "clipboard-minus-fill": 63264,
+ "clipboard-plus-fill": 63265,
+ "clipboard-pulse": 63266,
+ "clipboard-x-fill": 63267,
+ "clipboard2-check-fill": 63268,
+ "clipboard2-check": 63269,
+ "clipboard2-data-fill": 63270,
+ "clipboard2-data": 63271,
+ "clipboard2-fill": 63272,
+ "clipboard2-heart-fill": 63273,
+ "clipboard2-heart": 63274,
+ "clipboard2-minus-fill": 63275,
+ "clipboard2-minus": 63276,
+ "clipboard2-plus-fill": 63277,
+ "clipboard2-plus": 63278,
+ "clipboard2-pulse-fill": 63279,
+ "clipboard2-pulse": 63280,
+ "clipboard2-x-fill": 63281,
+ "clipboard2-x": 63282,
+ "clipboard2": 63283,
+ "emoji-kiss-fill": 63284,
+ "emoji-kiss": 63285,
+ "envelope-heart-fill": 63286,
+ "envelope-heart": 63287,
+ "envelope-open-heart-fill": 63288,
+ "envelope-open-heart": 63289,
+ "envelope-paper-fill": 63290,
+ "envelope-paper-heart-fill": 63291,
+ "envelope-paper-heart": 63292,
+ "envelope-paper": 63293,
+ "filetype-aac": 63294,
+ "filetype-ai": 63295,
+ "filetype-bmp": 63296,
+ "filetype-cs": 63297,
+ "filetype-css": 63298,
+ "filetype-csv": 63299,
+ "filetype-doc": 63300,
+ "filetype-docx": 63301,
+ "filetype-exe": 63302,
+ "filetype-gif": 63303,
+ "filetype-heic": 63304,
+ "filetype-html": 63305,
+ "filetype-java": 63306,
+ "filetype-jpg": 63307,
+ "filetype-js": 63308,
+ "filetype-jsx": 63309,
+ "filetype-key": 63310,
+ "filetype-m4p": 63311,
+ "filetype-md": 63312,
+ "filetype-mdx": 63313,
+ "filetype-mov": 63314,
+ "filetype-mp3": 63315,
+ "filetype-mp4": 63316,
+ "filetype-otf": 63317,
+ "filetype-pdf": 63318,
+ "filetype-php": 63319,
+ "filetype-png": 63320,
+ "filetype-ppt": 63322,
+ "filetype-psd": 63323,
+ "filetype-py": 63324,
+ "filetype-raw": 63325,
+ "filetype-rb": 63326,
+ "filetype-sass": 63327,
+ "filetype-scss": 63328,
+ "filetype-sh": 63329,
+ "filetype-svg": 63330,
+ "filetype-tiff": 63331,
+ "filetype-tsx": 63332,
+ "filetype-ttf": 63333,
+ "filetype-txt": 63334,
+ "filetype-wav": 63335,
+ "filetype-woff": 63336,
+ "filetype-xls": 63338,
+ "filetype-xml": 63339,
+ "filetype-yml": 63340,
+ "heart-arrow": 63341,
+ "heart-pulse-fill": 63342,
+ "heart-pulse": 63343,
+ "heartbreak-fill": 63344,
+ "heartbreak": 63345,
+ "hearts": 63346,
+ "hospital-fill": 63347,
+ "hospital": 63348,
+ "house-heart-fill": 63349,
+ "house-heart": 63350,
+ "incognito": 63351,
+ "magnet-fill": 63352,
+ "magnet": 63353,
+ "person-heart": 63354,
+ "person-hearts": 63355,
+ "phone-flip": 63356,
+ "plugin": 63357,
+ "postage-fill": 63358,
+ "postage-heart-fill": 63359,
+ "postage-heart": 63360,
+ "postage": 63361,
+ "postcard-fill": 63362,
+ "postcard-heart-fill": 63363,
+ "postcard-heart": 63364,
+ "postcard": 63365,
+ "search-heart-fill": 63366,
+ "search-heart": 63367,
+ "sliders2-vertical": 63368,
+ "sliders2": 63369,
+ "trash3-fill": 63370,
+ "trash3": 63371,
+ "valentine": 63372,
+ "valentine2": 63373,
+ "wrench-adjustable-circle-fill": 63374,
+ "wrench-adjustable-circle": 63375,
+ "wrench-adjustable": 63376,
+ "filetype-json": 63377,
+ "filetype-pptx": 63378,
+ "filetype-xlsx": 63379,
+ "1-circle-fill": 63382,
+ "1-circle": 63383,
+ "1-square-fill": 63384,
+ "1-square": 63385,
+ "2-circle-fill": 63388,
+ "2-circle": 63389,
+ "2-square-fill": 63390,
+ "2-square": 63391,
+ "3-circle-fill": 63394,
+ "3-circle": 63395,
+ "3-square-fill": 63396,
+ "3-square": 63397,
+ "4-circle-fill": 63400,
+ "4-circle": 63401,
+ "4-square-fill": 63402,
+ "4-square": 63403,
+ "5-circle-fill": 63406,
+ "5-circle": 63407,
+ "5-square-fill": 63408,
+ "5-square": 63409,
+ "6-circle-fill": 63412,
+ "6-circle": 63413,
+ "6-square-fill": 63414,
+ "6-square": 63415,
+ "7-circle-fill": 63418,
+ "7-circle": 63419,
+ "7-square-fill": 63420,
+ "7-square": 63421,
+ "8-circle-fill": 63424,
+ "8-circle": 63425,
+ "8-square-fill": 63426,
+ "8-square": 63427,
+ "9-circle-fill": 63430,
+ "9-circle": 63431,
+ "9-square-fill": 63432,
+ "9-square": 63433,
+ "airplane-engines-fill": 63434,
+ "airplane-engines": 63435,
+ "airplane-fill": 63436,
+ "airplane": 63437,
+ "alexa": 63438,
+ "alipay": 63439,
+ "android": 63440,
+ "android2": 63441,
+ "box-fill": 63442,
+ "box-seam-fill": 63443,
+ "browser-chrome": 63444,
+ "browser-edge": 63445,
+ "browser-firefox": 63446,
+ "browser-safari": 63447,
+ "c-circle-fill": 63450,
+ "c-circle": 63451,
+ "c-square-fill": 63452,
+ "c-square": 63453,
+ "capsule-pill": 63454,
+ "capsule": 63455,
+ "car-front-fill": 63456,
+ "car-front": 63457,
+ "cassette-fill": 63458,
+ "cassette": 63459,
+ "cc-circle-fill": 63462,
+ "cc-circle": 63463,
+ "cc-square-fill": 63464,
+ "cc-square": 63465,
+ "cup-hot-fill": 63466,
+ "cup-hot": 63467,
+ "currency-rupee": 63468,
+ "dropbox": 63469,
+ "escape": 63470,
+ "fast-forward-btn-fill": 63471,
+ "fast-forward-btn": 63472,
+ "fast-forward-circle-fill": 63473,
+ "fast-forward-circle": 63474,
+ "fast-forward-fill": 63475,
+ "fast-forward": 63476,
+ "filetype-sql": 63477,
+ "fire": 63478,
+ "google-play": 63479,
+ "h-circle-fill": 63482,
+ "h-circle": 63483,
+ "h-square-fill": 63484,
+ "h-square": 63485,
+ "indent": 63486,
+ "lungs-fill": 63487,
+ "lungs": 63488,
+ "microsoft-teams": 63489,
+ "p-circle-fill": 63492,
+ "p-circle": 63493,
+ "p-square-fill": 63494,
+ "p-square": 63495,
+ "pass-fill": 63496,
+ "pass": 63497,
+ "prescription": 63498,
+ "prescription2": 63499,
+ "r-circle-fill": 63502,
+ "r-circle": 63503,
+ "r-square-fill": 63504,
+ "r-square": 63505,
+ "repeat-1": 63506,
+ "repeat": 63507,
+ "rewind-btn-fill": 63508,
+ "rewind-btn": 63509,
+ "rewind-circle-fill": 63510,
+ "rewind-circle": 63511,
+ "rewind-fill": 63512,
+ "rewind": 63513,
+ "train-freight-front-fill": 63514,
+ "train-freight-front": 63515,
+ "train-front-fill": 63516,
+ "train-front": 63517,
+ "train-lightrail-front-fill": 63518,
+ "train-lightrail-front": 63519,
+ "truck-front-fill": 63520,
+ "truck-front": 63521,
+ "ubuntu": 63522,
+ "unindent": 63523,
+ "unity": 63524,
+ "universal-access-circle": 63525,
+ "universal-access": 63526,
+ "virus": 63527,
+ "virus2": 63528,
+ "wechat": 63529,
+ "yelp": 63530,
+ "sign-stop-fill": 63531,
+ "sign-stop-lights-fill": 63532,
+ "sign-stop-lights": 63533,
+ "sign-stop": 63534,
+ "sign-turn-left-fill": 63535,
+ "sign-turn-left": 63536,
+ "sign-turn-right-fill": 63537,
+ "sign-turn-right": 63538,
+ "sign-turn-slight-left-fill": 63539,
+ "sign-turn-slight-left": 63540,
+ "sign-turn-slight-right-fill": 63541,
+ "sign-turn-slight-right": 63542,
+ "sign-yield-fill": 63543,
+ "sign-yield": 63544,
+ "ev-station-fill": 63545,
+ "ev-station": 63546,
+ "fuel-pump-diesel-fill": 63547,
+ "fuel-pump-diesel": 63548,
+ "fuel-pump-fill": 63549,
+ "fuel-pump": 63550,
+ "0-circle-fill": 63551,
+ "0-circle": 63552,
+ "0-square-fill": 63553,
+ "0-square": 63554,
+ "rocket-fill": 63555,
+ "rocket-takeoff-fill": 63556,
+ "rocket-takeoff": 63557,
+ "rocket": 63558,
+ "stripe": 63559,
+ "subscript": 63560,
+ "superscript": 63561,
+ "trello": 63562,
+ "envelope-at-fill": 63563,
+ "envelope-at": 63564,
+ "regex": 63565,
+ "text-wrap": 63566,
+ "sign-dead-end-fill": 63567,
+ "sign-dead-end": 63568,
+ "sign-do-not-enter-fill": 63569,
+ "sign-do-not-enter": 63570,
+ "sign-intersection-fill": 63571,
+ "sign-intersection-side-fill": 63572,
+ "sign-intersection-side": 63573,
+ "sign-intersection-t-fill": 63574,
+ "sign-intersection-t": 63575,
+ "sign-intersection-y-fill": 63576,
+ "sign-intersection-y": 63577,
+ "sign-intersection": 63578,
+ "sign-merge-left-fill": 63579,
+ "sign-merge-left": 63580,
+ "sign-merge-right-fill": 63581,
+ "sign-merge-right": 63582,
+ "sign-no-left-turn-fill": 63583,
+ "sign-no-left-turn": 63584,
+ "sign-no-parking-fill": 63585,
+ "sign-no-parking": 63586,
+ "sign-no-right-turn-fill": 63587,
+ "sign-no-right-turn": 63588,
+ "sign-railroad-fill": 63589,
+ "sign-railroad": 63590,
+ "building-add": 63591,
+ "building-check": 63592,
+ "building-dash": 63593,
+ "building-down": 63594,
+ "building-exclamation": 63595,
+ "building-fill-add": 63596,
+ "building-fill-check": 63597,
+ "building-fill-dash": 63598,
+ "building-fill-down": 63599,
+ "building-fill-exclamation": 63600,
+ "building-fill-gear": 63601,
+ "building-fill-lock": 63602,
+ "building-fill-slash": 63603,
+ "building-fill-up": 63604,
+ "building-fill-x": 63605,
+ "building-fill": 63606,
+ "building-gear": 63607,
+ "building-lock": 63608,
+ "building-slash": 63609,
+ "building-up": 63610,
+ "building-x": 63611,
+ "buildings-fill": 63612,
+ "buildings": 63613,
+ "bus-front-fill": 63614,
+ "bus-front": 63615,
+ "ev-front-fill": 63616,
+ "ev-front": 63617,
+ "globe-americas": 63618,
+ "globe-asia-australia": 63619,
+ "globe-central-south-asia": 63620,
+ "globe-europe-africa": 63621,
+ "house-add-fill": 63622,
+ "house-add": 63623,
+ "house-check-fill": 63624,
+ "house-check": 63625,
+ "house-dash-fill": 63626,
+ "house-dash": 63627,
+ "house-down-fill": 63628,
+ "house-down": 63629,
+ "house-exclamation-fill": 63630,
+ "house-exclamation": 63631,
+ "house-gear-fill": 63632,
+ "house-gear": 63633,
+ "house-lock-fill": 63634,
+ "house-lock": 63635,
+ "house-slash-fill": 63636,
+ "house-slash": 63637,
+ "house-up-fill": 63638,
+ "house-up": 63639,
+ "house-x-fill": 63640,
+ "house-x": 63641,
+ "person-add": 63642,
+ "person-down": 63643,
+ "person-exclamation": 63644,
+ "person-fill-add": 63645,
+ "person-fill-check": 63646,
+ "person-fill-dash": 63647,
+ "person-fill-down": 63648,
+ "person-fill-exclamation": 63649,
+ "person-fill-gear": 63650,
+ "person-fill-lock": 63651,
+ "person-fill-slash": 63652,
+ "person-fill-up": 63653,
+ "person-fill-x": 63654,
+ "person-gear": 63655,
+ "person-lock": 63656,
+ "person-slash": 63657,
+ "person-up": 63658,
+ "scooter": 63659,
+ "taxi-front-fill": 63660,
+ "taxi-front": 63661,
+ "amd": 63662,
+ "database-add": 63663,
+ "database-check": 63664,
+ "database-dash": 63665,
+ "database-down": 63666,
+ "database-exclamation": 63667,
+ "database-fill-add": 63668,
+ "database-fill-check": 63669,
+ "database-fill-dash": 63670,
+ "database-fill-down": 63671,
+ "database-fill-exclamation": 63672,
+ "database-fill-gear": 63673,
+ "database-fill-lock": 63674,
+ "database-fill-slash": 63675,
+ "database-fill-up": 63676,
+ "database-fill-x": 63677,
+ "database-fill": 63678,
+ "database-gear": 63679,
+ "database-lock": 63680,
+ "database-slash": 63681,
+ "database-up": 63682,
+ "database-x": 63683,
+ "database": 63684,
+ "houses-fill": 63685,
+ "houses": 63686,
+ "nvidia": 63687,
+ "person-vcard-fill": 63688,
+ "person-vcard": 63689,
+ "sina-weibo": 63690,
+ "tencent-qq": 63691,
+ "wikipedia": 63692,
+ "alphabet-uppercase": 62117,
+ "alphabet": 63114,
+ "amazon": 63117,
+ "arrows-collapse-vertical": 63120,
+ "arrows-expand-vertical": 63125,
+ "arrows-vertical": 63128,
+ "arrows": 63138,
+ "ban-fill": 63139,
+ "ban": 63158,
+ "bing": 63170,
+ "cake": 63200,
+ "cake2": 63213,
+ "cookie": 63214,
+ "copy": 63321,
+ "crosshair": 63337,
+ "crosshair2": 63380,
+ "emoji-astonished-fill": 63381,
+ "emoji-astonished": 63386,
+ "emoji-grimace-fill": 63387,
+ "emoji-grimace": 63392,
+ "emoji-grin-fill": 63393,
+ "emoji-grin": 63398,
+ "emoji-surprise-fill": 63399,
+ "emoji-surprise": 63404,
+ "emoji-tear-fill": 63405,
+ "emoji-tear": 63410,
+ "envelope-arrow-down-fill": 63411,
+ "envelope-arrow-down": 63416,
+ "envelope-arrow-up-fill": 63417,
+ "envelope-arrow-up": 63422,
+ "feather": 63423,
+ "feather2": 63428,
+ "floppy-fill": 63429,
+ "floppy": 63448,
+ "floppy2-fill": 63449,
+ "floppy2": 63460,
+ "gitlab": 63461,
+ "highlighter": 63480,
+ "marker-tip": 63490,
+ "nvme-fill": 63491,
+ "nvme": 63500,
+ "opencollective": 63501,
+ "pci-card-network": 63693,
+ "pci-card-sound": 63694,
+ "radar": 63695,
+ "send-arrow-down-fill": 63696,
+ "send-arrow-down": 63697,
+ "send-arrow-up-fill": 63698,
+ "send-arrow-up": 63699,
+ "sim-slash-fill": 63700,
+ "sim-slash": 63701,
+ "sourceforge": 63702,
+ "substack": 63703,
+ "threads-fill": 63704,
+ "threads": 63705,
+ "transparency": 63706,
+ "twitter-x": 63707,
+ "type-h4": 63708,
+ "type-h5": 63709,
+ "type-h6": 63710,
+ "backpack-fill": 63711,
+ "backpack": 63712,
+ "backpack2-fill": 63713,
+ "backpack2": 63714,
+ "backpack3-fill": 63715,
+ "backpack3": 63716,
+ "backpack4-fill": 63717,
+ "backpack4": 63718,
+ "brilliance": 63719,
+ "cake-fill": 63720,
+ "cake2-fill": 63721,
+ "duffle-fill": 63722,
+ "duffle": 63723,
+ "exposure": 63724,
+ "gender-neuter": 63725,
+ "highlights": 63726,
+ "luggage-fill": 63727,
+ "luggage": 63728,
+ "mailbox-flag": 63729,
+ "mailbox2-flag": 63730,
+ "noise-reduction": 63731,
+ "passport-fill": 63732,
+ "passport": 63733,
+ "person-arms-up": 63734,
+ "person-raised-hand": 63735,
+ "person-standing-dress": 63736,
+ "person-standing": 63737,
+ "person-walking": 63738,
+ "person-wheelchair": 63739,
+ "shadows": 63740,
+ "suitcase-fill": 63741,
+ "suitcase-lg-fill": 63742,
+ "suitcase-lg": 63743,
+ "suitcase": 63744,
+ "suitcase2-fill": 63745,
+ "suitcase2": 63746,
+ "vignette": 63747
+} \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/font/bootstrap-icons.min.css b/vendor/twbs/bootstrap-icons/font/bootstrap-icons.min.css
new file mode 100644
index 000000000..dadd6dcac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/font/bootstrap-icons.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/)
+ * Copyright 2019-2024 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE)
+ */@font-face{font-display:block;font-family:bootstrap-icons;src:url("fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6") format("woff2"),url("fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6") format("woff")}.bi::before,[class*=" bi-"]::before,[class^=bi-]::before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123::before{content:"\f67f"}.bi-alarm-fill::before{content:"\f101"}.bi-alarm::before{content:"\f102"}.bi-align-bottom::before{content:"\f103"}.bi-align-center::before{content:"\f104"}.bi-align-end::before{content:"\f105"}.bi-align-middle::before{content:"\f106"}.bi-align-start::before{content:"\f107"}.bi-align-top::before{content:"\f108"}.bi-alt::before{content:"\f109"}.bi-app-indicator::before{content:"\f10a"}.bi-app::before{content:"\f10b"}.bi-archive-fill::before{content:"\f10c"}.bi-archive::before{content:"\f10d"}.bi-arrow-90deg-down::before{content:"\f10e"}.bi-arrow-90deg-left::before{content:"\f10f"}.bi-arrow-90deg-right::before{content:"\f110"}.bi-arrow-90deg-up::before{content:"\f111"}.bi-arrow-bar-down::before{content:"\f112"}.bi-arrow-bar-left::before{content:"\f113"}.bi-arrow-bar-right::before{content:"\f114"}.bi-arrow-bar-up::before{content:"\f115"}.bi-arrow-clockwise::before{content:"\f116"}.bi-arrow-counterclockwise::before{content:"\f117"}.bi-arrow-down-circle-fill::before{content:"\f118"}.bi-arrow-down-circle::before{content:"\f119"}.bi-arrow-down-left-circle-fill::before{content:"\f11a"}.bi-arrow-down-left-circle::before{content:"\f11b"}.bi-arrow-down-left-square-fill::before{content:"\f11c"}.bi-arrow-down-left-square::before{content:"\f11d"}.bi-arrow-down-left::before{content:"\f11e"}.bi-arrow-down-right-circle-fill::before{content:"\f11f"}.bi-arrow-down-right-circle::before{content:"\f120"}.bi-arrow-down-right-square-fill::before{content:"\f121"}.bi-arrow-down-right-square::before{content:"\f122"}.bi-arrow-down-right::before{content:"\f123"}.bi-arrow-down-short::before{content:"\f124"}.bi-arrow-down-square-fill::before{content:"\f125"}.bi-arrow-down-square::before{content:"\f126"}.bi-arrow-down-up::before{content:"\f127"}.bi-arrow-down::before{content:"\f128"}.bi-arrow-left-circle-fill::before{content:"\f129"}.bi-arrow-left-circle::before{content:"\f12a"}.bi-arrow-left-right::before{content:"\f12b"}.bi-arrow-left-short::before{content:"\f12c"}.bi-arrow-left-square-fill::before{content:"\f12d"}.bi-arrow-left-square::before{content:"\f12e"}.bi-arrow-left::before{content:"\f12f"}.bi-arrow-repeat::before{content:"\f130"}.bi-arrow-return-left::before{content:"\f131"}.bi-arrow-return-right::before{content:"\f132"}.bi-arrow-right-circle-fill::before{content:"\f133"}.bi-arrow-right-circle::before{content:"\f134"}.bi-arrow-right-short::before{content:"\f135"}.bi-arrow-right-square-fill::before{content:"\f136"}.bi-arrow-right-square::before{content:"\f137"}.bi-arrow-right::before{content:"\f138"}.bi-arrow-up-circle-fill::before{content:"\f139"}.bi-arrow-up-circle::before{content:"\f13a"}.bi-arrow-up-left-circle-fill::before{content:"\f13b"}.bi-arrow-up-left-circle::before{content:"\f13c"}.bi-arrow-up-left-square-fill::before{content:"\f13d"}.bi-arrow-up-left-square::before{content:"\f13e"}.bi-arrow-up-left::before{content:"\f13f"}.bi-arrow-up-right-circle-fill::before{content:"\f140"}.bi-arrow-up-right-circle::before{content:"\f141"}.bi-arrow-up-right-square-fill::before{content:"\f142"}.bi-arrow-up-right-square::before{content:"\f143"}.bi-arrow-up-right::before{content:"\f144"}.bi-arrow-up-short::before{content:"\f145"}.bi-arrow-up-square-fill::before{content:"\f146"}.bi-arrow-up-square::before{content:"\f147"}.bi-arrow-up::before{content:"\f148"}.bi-arrows-angle-contract::before{content:"\f149"}.bi-arrows-angle-expand::before{content:"\f14a"}.bi-arrows-collapse::before{content:"\f14b"}.bi-arrows-expand::before{content:"\f14c"}.bi-arrows-fullscreen::before{content:"\f14d"}.bi-arrows-move::before{content:"\f14e"}.bi-aspect-ratio-fill::before{content:"\f14f"}.bi-aspect-ratio::before{content:"\f150"}.bi-asterisk::before{content:"\f151"}.bi-at::before{content:"\f152"}.bi-award-fill::before{content:"\f153"}.bi-award::before{content:"\f154"}.bi-back::before{content:"\f155"}.bi-backspace-fill::before{content:"\f156"}.bi-backspace-reverse-fill::before{content:"\f157"}.bi-backspace-reverse::before{content:"\f158"}.bi-backspace::before{content:"\f159"}.bi-badge-3d-fill::before{content:"\f15a"}.bi-badge-3d::before{content:"\f15b"}.bi-badge-4k-fill::before{content:"\f15c"}.bi-badge-4k::before{content:"\f15d"}.bi-badge-8k-fill::before{content:"\f15e"}.bi-badge-8k::before{content:"\f15f"}.bi-badge-ad-fill::before{content:"\f160"}.bi-badge-ad::before{content:"\f161"}.bi-badge-ar-fill::before{content:"\f162"}.bi-badge-ar::before{content:"\f163"}.bi-badge-cc-fill::before{content:"\f164"}.bi-badge-cc::before{content:"\f165"}.bi-badge-hd-fill::before{content:"\f166"}.bi-badge-hd::before{content:"\f167"}.bi-badge-tm-fill::before{content:"\f168"}.bi-badge-tm::before{content:"\f169"}.bi-badge-vo-fill::before{content:"\f16a"}.bi-badge-vo::before{content:"\f16b"}.bi-badge-vr-fill::before{content:"\f16c"}.bi-badge-vr::before{content:"\f16d"}.bi-badge-wc-fill::before{content:"\f16e"}.bi-badge-wc::before{content:"\f16f"}.bi-bag-check-fill::before{content:"\f170"}.bi-bag-check::before{content:"\f171"}.bi-bag-dash-fill::before{content:"\f172"}.bi-bag-dash::before{content:"\f173"}.bi-bag-fill::before{content:"\f174"}.bi-bag-plus-fill::before{content:"\f175"}.bi-bag-plus::before{content:"\f176"}.bi-bag-x-fill::before{content:"\f177"}.bi-bag-x::before{content:"\f178"}.bi-bag::before{content:"\f179"}.bi-bar-chart-fill::before{content:"\f17a"}.bi-bar-chart-line-fill::before{content:"\f17b"}.bi-bar-chart-line::before{content:"\f17c"}.bi-bar-chart-steps::before{content:"\f17d"}.bi-bar-chart::before{content:"\f17e"}.bi-basket-fill::before{content:"\f17f"}.bi-basket::before{content:"\f180"}.bi-basket2-fill::before{content:"\f181"}.bi-basket2::before{content:"\f182"}.bi-basket3-fill::before{content:"\f183"}.bi-basket3::before{content:"\f184"}.bi-battery-charging::before{content:"\f185"}.bi-battery-full::before{content:"\f186"}.bi-battery-half::before{content:"\f187"}.bi-battery::before{content:"\f188"}.bi-bell-fill::before{content:"\f189"}.bi-bell::before{content:"\f18a"}.bi-bezier::before{content:"\f18b"}.bi-bezier2::before{content:"\f18c"}.bi-bicycle::before{content:"\f18d"}.bi-binoculars-fill::before{content:"\f18e"}.bi-binoculars::before{content:"\f18f"}.bi-blockquote-left::before{content:"\f190"}.bi-blockquote-right::before{content:"\f191"}.bi-book-fill::before{content:"\f192"}.bi-book-half::before{content:"\f193"}.bi-book::before{content:"\f194"}.bi-bookmark-check-fill::before{content:"\f195"}.bi-bookmark-check::before{content:"\f196"}.bi-bookmark-dash-fill::before{content:"\f197"}.bi-bookmark-dash::before{content:"\f198"}.bi-bookmark-fill::before{content:"\f199"}.bi-bookmark-heart-fill::before{content:"\f19a"}.bi-bookmark-heart::before{content:"\f19b"}.bi-bookmark-plus-fill::before{content:"\f19c"}.bi-bookmark-plus::before{content:"\f19d"}.bi-bookmark-star-fill::before{content:"\f19e"}.bi-bookmark-star::before{content:"\f19f"}.bi-bookmark-x-fill::before{content:"\f1a0"}.bi-bookmark-x::before{content:"\f1a1"}.bi-bookmark::before{content:"\f1a2"}.bi-bookmarks-fill::before{content:"\f1a3"}.bi-bookmarks::before{content:"\f1a4"}.bi-bookshelf::before{content:"\f1a5"}.bi-bootstrap-fill::before{content:"\f1a6"}.bi-bootstrap-reboot::before{content:"\f1a7"}.bi-bootstrap::before{content:"\f1a8"}.bi-border-all::before{content:"\f1a9"}.bi-border-bottom::before{content:"\f1aa"}.bi-border-center::before{content:"\f1ab"}.bi-border-inner::before{content:"\f1ac"}.bi-border-left::before{content:"\f1ad"}.bi-border-middle::before{content:"\f1ae"}.bi-border-outer::before{content:"\f1af"}.bi-border-right::before{content:"\f1b0"}.bi-border-style::before{content:"\f1b1"}.bi-border-top::before{content:"\f1b2"}.bi-border-width::before{content:"\f1b3"}.bi-border::before{content:"\f1b4"}.bi-bounding-box-circles::before{content:"\f1b5"}.bi-bounding-box::before{content:"\f1b6"}.bi-box-arrow-down-left::before{content:"\f1b7"}.bi-box-arrow-down-right::before{content:"\f1b8"}.bi-box-arrow-down::before{content:"\f1b9"}.bi-box-arrow-in-down-left::before{content:"\f1ba"}.bi-box-arrow-in-down-right::before{content:"\f1bb"}.bi-box-arrow-in-down::before{content:"\f1bc"}.bi-box-arrow-in-left::before{content:"\f1bd"}.bi-box-arrow-in-right::before{content:"\f1be"}.bi-box-arrow-in-up-left::before{content:"\f1bf"}.bi-box-arrow-in-up-right::before{content:"\f1c0"}.bi-box-arrow-in-up::before{content:"\f1c1"}.bi-box-arrow-left::before{content:"\f1c2"}.bi-box-arrow-right::before{content:"\f1c3"}.bi-box-arrow-up-left::before{content:"\f1c4"}.bi-box-arrow-up-right::before{content:"\f1c5"}.bi-box-arrow-up::before{content:"\f1c6"}.bi-box-seam::before{content:"\f1c7"}.bi-box::before{content:"\f1c8"}.bi-braces::before{content:"\f1c9"}.bi-bricks::before{content:"\f1ca"}.bi-briefcase-fill::before{content:"\f1cb"}.bi-briefcase::before{content:"\f1cc"}.bi-brightness-alt-high-fill::before{content:"\f1cd"}.bi-brightness-alt-high::before{content:"\f1ce"}.bi-brightness-alt-low-fill::before{content:"\f1cf"}.bi-brightness-alt-low::before{content:"\f1d0"}.bi-brightness-high-fill::before{content:"\f1d1"}.bi-brightness-high::before{content:"\f1d2"}.bi-brightness-low-fill::before{content:"\f1d3"}.bi-brightness-low::before{content:"\f1d4"}.bi-broadcast-pin::before{content:"\f1d5"}.bi-broadcast::before{content:"\f1d6"}.bi-brush-fill::before{content:"\f1d7"}.bi-brush::before{content:"\f1d8"}.bi-bucket-fill::before{content:"\f1d9"}.bi-bucket::before{content:"\f1da"}.bi-bug-fill::before{content:"\f1db"}.bi-bug::before{content:"\f1dc"}.bi-building::before{content:"\f1dd"}.bi-bullseye::before{content:"\f1de"}.bi-calculator-fill::before{content:"\f1df"}.bi-calculator::before{content:"\f1e0"}.bi-calendar-check-fill::before{content:"\f1e1"}.bi-calendar-check::before{content:"\f1e2"}.bi-calendar-date-fill::before{content:"\f1e3"}.bi-calendar-date::before{content:"\f1e4"}.bi-calendar-day-fill::before{content:"\f1e5"}.bi-calendar-day::before{content:"\f1e6"}.bi-calendar-event-fill::before{content:"\f1e7"}.bi-calendar-event::before{content:"\f1e8"}.bi-calendar-fill::before{content:"\f1e9"}.bi-calendar-minus-fill::before{content:"\f1ea"}.bi-calendar-minus::before{content:"\f1eb"}.bi-calendar-month-fill::before{content:"\f1ec"}.bi-calendar-month::before{content:"\f1ed"}.bi-calendar-plus-fill::before{content:"\f1ee"}.bi-calendar-plus::before{content:"\f1ef"}.bi-calendar-range-fill::before{content:"\f1f0"}.bi-calendar-range::before{content:"\f1f1"}.bi-calendar-week-fill::before{content:"\f1f2"}.bi-calendar-week::before{content:"\f1f3"}.bi-calendar-x-fill::before{content:"\f1f4"}.bi-calendar-x::before{content:"\f1f5"}.bi-calendar::before{content:"\f1f6"}.bi-calendar2-check-fill::before{content:"\f1f7"}.bi-calendar2-check::before{content:"\f1f8"}.bi-calendar2-date-fill::before{content:"\f1f9"}.bi-calendar2-date::before{content:"\f1fa"}.bi-calendar2-day-fill::before{content:"\f1fb"}.bi-calendar2-day::before{content:"\f1fc"}.bi-calendar2-event-fill::before{content:"\f1fd"}.bi-calendar2-event::before{content:"\f1fe"}.bi-calendar2-fill::before{content:"\f1ff"}.bi-calendar2-minus-fill::before{content:"\f200"}.bi-calendar2-minus::before{content:"\f201"}.bi-calendar2-month-fill::before{content:"\f202"}.bi-calendar2-month::before{content:"\f203"}.bi-calendar2-plus-fill::before{content:"\f204"}.bi-calendar2-plus::before{content:"\f205"}.bi-calendar2-range-fill::before{content:"\f206"}.bi-calendar2-range::before{content:"\f207"}.bi-calendar2-week-fill::before{content:"\f208"}.bi-calendar2-week::before{content:"\f209"}.bi-calendar2-x-fill::before{content:"\f20a"}.bi-calendar2-x::before{content:"\f20b"}.bi-calendar2::before{content:"\f20c"}.bi-calendar3-event-fill::before{content:"\f20d"}.bi-calendar3-event::before{content:"\f20e"}.bi-calendar3-fill::before{content:"\f20f"}.bi-calendar3-range-fill::before{content:"\f210"}.bi-calendar3-range::before{content:"\f211"}.bi-calendar3-week-fill::before{content:"\f212"}.bi-calendar3-week::before{content:"\f213"}.bi-calendar3::before{content:"\f214"}.bi-calendar4-event::before{content:"\f215"}.bi-calendar4-range::before{content:"\f216"}.bi-calendar4-week::before{content:"\f217"}.bi-calendar4::before{content:"\f218"}.bi-camera-fill::before{content:"\f219"}.bi-camera-reels-fill::before{content:"\f21a"}.bi-camera-reels::before{content:"\f21b"}.bi-camera-video-fill::before{content:"\f21c"}.bi-camera-video-off-fill::before{content:"\f21d"}.bi-camera-video-off::before{content:"\f21e"}.bi-camera-video::before{content:"\f21f"}.bi-camera::before{content:"\f220"}.bi-camera2::before{content:"\f221"}.bi-capslock-fill::before{content:"\f222"}.bi-capslock::before{content:"\f223"}.bi-card-checklist::before{content:"\f224"}.bi-card-heading::before{content:"\f225"}.bi-card-image::before{content:"\f226"}.bi-card-list::before{content:"\f227"}.bi-card-text::before{content:"\f228"}.bi-caret-down-fill::before{content:"\f229"}.bi-caret-down-square-fill::before{content:"\f22a"}.bi-caret-down-square::before{content:"\f22b"}.bi-caret-down::before{content:"\f22c"}.bi-caret-left-fill::before{content:"\f22d"}.bi-caret-left-square-fill::before{content:"\f22e"}.bi-caret-left-square::before{content:"\f22f"}.bi-caret-left::before{content:"\f230"}.bi-caret-right-fill::before{content:"\f231"}.bi-caret-right-square-fill::before{content:"\f232"}.bi-caret-right-square::before{content:"\f233"}.bi-caret-right::before{content:"\f234"}.bi-caret-up-fill::before{content:"\f235"}.bi-caret-up-square-fill::before{content:"\f236"}.bi-caret-up-square::before{content:"\f237"}.bi-caret-up::before{content:"\f238"}.bi-cart-check-fill::before{content:"\f239"}.bi-cart-check::before{content:"\f23a"}.bi-cart-dash-fill::before{content:"\f23b"}.bi-cart-dash::before{content:"\f23c"}.bi-cart-fill::before{content:"\f23d"}.bi-cart-plus-fill::before{content:"\f23e"}.bi-cart-plus::before{content:"\f23f"}.bi-cart-x-fill::before{content:"\f240"}.bi-cart-x::before{content:"\f241"}.bi-cart::before{content:"\f242"}.bi-cart2::before{content:"\f243"}.bi-cart3::before{content:"\f244"}.bi-cart4::before{content:"\f245"}.bi-cash-stack::before{content:"\f246"}.bi-cash::before{content:"\f247"}.bi-cast::before{content:"\f248"}.bi-chat-dots-fill::before{content:"\f249"}.bi-chat-dots::before{content:"\f24a"}.bi-chat-fill::before{content:"\f24b"}.bi-chat-left-dots-fill::before{content:"\f24c"}.bi-chat-left-dots::before{content:"\f24d"}.bi-chat-left-fill::before{content:"\f24e"}.bi-chat-left-quote-fill::before{content:"\f24f"}.bi-chat-left-quote::before{content:"\f250"}.bi-chat-left-text-fill::before{content:"\f251"}.bi-chat-left-text::before{content:"\f252"}.bi-chat-left::before{content:"\f253"}.bi-chat-quote-fill::before{content:"\f254"}.bi-chat-quote::before{content:"\f255"}.bi-chat-right-dots-fill::before{content:"\f256"}.bi-chat-right-dots::before{content:"\f257"}.bi-chat-right-fill::before{content:"\f258"}.bi-chat-right-quote-fill::before{content:"\f259"}.bi-chat-right-quote::before{content:"\f25a"}.bi-chat-right-text-fill::before{content:"\f25b"}.bi-chat-right-text::before{content:"\f25c"}.bi-chat-right::before{content:"\f25d"}.bi-chat-square-dots-fill::before{content:"\f25e"}.bi-chat-square-dots::before{content:"\f25f"}.bi-chat-square-fill::before{content:"\f260"}.bi-chat-square-quote-fill::before{content:"\f261"}.bi-chat-square-quote::before{content:"\f262"}.bi-chat-square-text-fill::before{content:"\f263"}.bi-chat-square-text::before{content:"\f264"}.bi-chat-square::before{content:"\f265"}.bi-chat-text-fill::before{content:"\f266"}.bi-chat-text::before{content:"\f267"}.bi-chat::before{content:"\f268"}.bi-check-all::before{content:"\f269"}.bi-check-circle-fill::before{content:"\f26a"}.bi-check-circle::before{content:"\f26b"}.bi-check-square-fill::before{content:"\f26c"}.bi-check-square::before{content:"\f26d"}.bi-check::before{content:"\f26e"}.bi-check2-all::before{content:"\f26f"}.bi-check2-circle::before{content:"\f270"}.bi-check2-square::before{content:"\f271"}.bi-check2::before{content:"\f272"}.bi-chevron-bar-contract::before{content:"\f273"}.bi-chevron-bar-down::before{content:"\f274"}.bi-chevron-bar-expand::before{content:"\f275"}.bi-chevron-bar-left::before{content:"\f276"}.bi-chevron-bar-right::before{content:"\f277"}.bi-chevron-bar-up::before{content:"\f278"}.bi-chevron-compact-down::before{content:"\f279"}.bi-chevron-compact-left::before{content:"\f27a"}.bi-chevron-compact-right::before{content:"\f27b"}.bi-chevron-compact-up::before{content:"\f27c"}.bi-chevron-contract::before{content:"\f27d"}.bi-chevron-double-down::before{content:"\f27e"}.bi-chevron-double-left::before{content:"\f27f"}.bi-chevron-double-right::before{content:"\f280"}.bi-chevron-double-up::before{content:"\f281"}.bi-chevron-down::before{content:"\f282"}.bi-chevron-expand::before{content:"\f283"}.bi-chevron-left::before{content:"\f284"}.bi-chevron-right::before{content:"\f285"}.bi-chevron-up::before{content:"\f286"}.bi-circle-fill::before{content:"\f287"}.bi-circle-half::before{content:"\f288"}.bi-circle-square::before{content:"\f289"}.bi-circle::before{content:"\f28a"}.bi-clipboard-check::before{content:"\f28b"}.bi-clipboard-data::before{content:"\f28c"}.bi-clipboard-minus::before{content:"\f28d"}.bi-clipboard-plus::before{content:"\f28e"}.bi-clipboard-x::before{content:"\f28f"}.bi-clipboard::before{content:"\f290"}.bi-clock-fill::before{content:"\f291"}.bi-clock-history::before{content:"\f292"}.bi-clock::before{content:"\f293"}.bi-cloud-arrow-down-fill::before{content:"\f294"}.bi-cloud-arrow-down::before{content:"\f295"}.bi-cloud-arrow-up-fill::before{content:"\f296"}.bi-cloud-arrow-up::before{content:"\f297"}.bi-cloud-check-fill::before{content:"\f298"}.bi-cloud-check::before{content:"\f299"}.bi-cloud-download-fill::before{content:"\f29a"}.bi-cloud-download::before{content:"\f29b"}.bi-cloud-drizzle-fill::before{content:"\f29c"}.bi-cloud-drizzle::before{content:"\f29d"}.bi-cloud-fill::before{content:"\f29e"}.bi-cloud-fog-fill::before{content:"\f29f"}.bi-cloud-fog::before{content:"\f2a0"}.bi-cloud-fog2-fill::before{content:"\f2a1"}.bi-cloud-fog2::before{content:"\f2a2"}.bi-cloud-hail-fill::before{content:"\f2a3"}.bi-cloud-hail::before{content:"\f2a4"}.bi-cloud-haze-fill::before{content:"\f2a6"}.bi-cloud-haze::before{content:"\f2a7"}.bi-cloud-haze2-fill::before{content:"\f2a8"}.bi-cloud-lightning-fill::before{content:"\f2a9"}.bi-cloud-lightning-rain-fill::before{content:"\f2aa"}.bi-cloud-lightning-rain::before{content:"\f2ab"}.bi-cloud-lightning::before{content:"\f2ac"}.bi-cloud-minus-fill::before{content:"\f2ad"}.bi-cloud-minus::before{content:"\f2ae"}.bi-cloud-moon-fill::before{content:"\f2af"}.bi-cloud-moon::before{content:"\f2b0"}.bi-cloud-plus-fill::before{content:"\f2b1"}.bi-cloud-plus::before{content:"\f2b2"}.bi-cloud-rain-fill::before{content:"\f2b3"}.bi-cloud-rain-heavy-fill::before{content:"\f2b4"}.bi-cloud-rain-heavy::before{content:"\f2b5"}.bi-cloud-rain::before{content:"\f2b6"}.bi-cloud-slash-fill::before{content:"\f2b7"}.bi-cloud-slash::before{content:"\f2b8"}.bi-cloud-sleet-fill::before{content:"\f2b9"}.bi-cloud-sleet::before{content:"\f2ba"}.bi-cloud-snow-fill::before{content:"\f2bb"}.bi-cloud-snow::before{content:"\f2bc"}.bi-cloud-sun-fill::before{content:"\f2bd"}.bi-cloud-sun::before{content:"\f2be"}.bi-cloud-upload-fill::before{content:"\f2bf"}.bi-cloud-upload::before{content:"\f2c0"}.bi-cloud::before{content:"\f2c1"}.bi-clouds-fill::before{content:"\f2c2"}.bi-clouds::before{content:"\f2c3"}.bi-cloudy-fill::before{content:"\f2c4"}.bi-cloudy::before{content:"\f2c5"}.bi-code-slash::before{content:"\f2c6"}.bi-code-square::before{content:"\f2c7"}.bi-code::before{content:"\f2c8"}.bi-collection-fill::before{content:"\f2c9"}.bi-collection-play-fill::before{content:"\f2ca"}.bi-collection-play::before{content:"\f2cb"}.bi-collection::before{content:"\f2cc"}.bi-columns-gap::before{content:"\f2cd"}.bi-columns::before{content:"\f2ce"}.bi-command::before{content:"\f2cf"}.bi-compass-fill::before{content:"\f2d0"}.bi-compass::before{content:"\f2d1"}.bi-cone-striped::before{content:"\f2d2"}.bi-cone::before{content:"\f2d3"}.bi-controller::before{content:"\f2d4"}.bi-cpu-fill::before{content:"\f2d5"}.bi-cpu::before{content:"\f2d6"}.bi-credit-card-2-back-fill::before{content:"\f2d7"}.bi-credit-card-2-back::before{content:"\f2d8"}.bi-credit-card-2-front-fill::before{content:"\f2d9"}.bi-credit-card-2-front::before{content:"\f2da"}.bi-credit-card-fill::before{content:"\f2db"}.bi-credit-card::before{content:"\f2dc"}.bi-crop::before{content:"\f2dd"}.bi-cup-fill::before{content:"\f2de"}.bi-cup-straw::before{content:"\f2df"}.bi-cup::before{content:"\f2e0"}.bi-cursor-fill::before{content:"\f2e1"}.bi-cursor-text::before{content:"\f2e2"}.bi-cursor::before{content:"\f2e3"}.bi-dash-circle-dotted::before{content:"\f2e4"}.bi-dash-circle-fill::before{content:"\f2e5"}.bi-dash-circle::before{content:"\f2e6"}.bi-dash-square-dotted::before{content:"\f2e7"}.bi-dash-square-fill::before{content:"\f2e8"}.bi-dash-square::before{content:"\f2e9"}.bi-dash::before{content:"\f2ea"}.bi-diagram-2-fill::before{content:"\f2eb"}.bi-diagram-2::before{content:"\f2ec"}.bi-diagram-3-fill::before{content:"\f2ed"}.bi-diagram-3::before{content:"\f2ee"}.bi-diamond-fill::before{content:"\f2ef"}.bi-diamond-half::before{content:"\f2f0"}.bi-diamond::before{content:"\f2f1"}.bi-dice-1-fill::before{content:"\f2f2"}.bi-dice-1::before{content:"\f2f3"}.bi-dice-2-fill::before{content:"\f2f4"}.bi-dice-2::before{content:"\f2f5"}.bi-dice-3-fill::before{content:"\f2f6"}.bi-dice-3::before{content:"\f2f7"}.bi-dice-4-fill::before{content:"\f2f8"}.bi-dice-4::before{content:"\f2f9"}.bi-dice-5-fill::before{content:"\f2fa"}.bi-dice-5::before{content:"\f2fb"}.bi-dice-6-fill::before{content:"\f2fc"}.bi-dice-6::before{content:"\f2fd"}.bi-disc-fill::before{content:"\f2fe"}.bi-disc::before{content:"\f2ff"}.bi-discord::before{content:"\f300"}.bi-display-fill::before{content:"\f301"}.bi-display::before{content:"\f302"}.bi-distribute-horizontal::before{content:"\f303"}.bi-distribute-vertical::before{content:"\f304"}.bi-door-closed-fill::before{content:"\f305"}.bi-door-closed::before{content:"\f306"}.bi-door-open-fill::before{content:"\f307"}.bi-door-open::before{content:"\f308"}.bi-dot::before{content:"\f309"}.bi-download::before{content:"\f30a"}.bi-droplet-fill::before{content:"\f30b"}.bi-droplet-half::before{content:"\f30c"}.bi-droplet::before{content:"\f30d"}.bi-earbuds::before{content:"\f30e"}.bi-easel-fill::before{content:"\f30f"}.bi-easel::before{content:"\f310"}.bi-egg-fill::before{content:"\f311"}.bi-egg-fried::before{content:"\f312"}.bi-egg::before{content:"\f313"}.bi-eject-fill::before{content:"\f314"}.bi-eject::before{content:"\f315"}.bi-emoji-angry-fill::before{content:"\f316"}.bi-emoji-angry::before{content:"\f317"}.bi-emoji-dizzy-fill::before{content:"\f318"}.bi-emoji-dizzy::before{content:"\f319"}.bi-emoji-expressionless-fill::before{content:"\f31a"}.bi-emoji-expressionless::before{content:"\f31b"}.bi-emoji-frown-fill::before{content:"\f31c"}.bi-emoji-frown::before{content:"\f31d"}.bi-emoji-heart-eyes-fill::before{content:"\f31e"}.bi-emoji-heart-eyes::before{content:"\f31f"}.bi-emoji-laughing-fill::before{content:"\f320"}.bi-emoji-laughing::before{content:"\f321"}.bi-emoji-neutral-fill::before{content:"\f322"}.bi-emoji-neutral::before{content:"\f323"}.bi-emoji-smile-fill::before{content:"\f324"}.bi-emoji-smile-upside-down-fill::before{content:"\f325"}.bi-emoji-smile-upside-down::before{content:"\f326"}.bi-emoji-smile::before{content:"\f327"}.bi-emoji-sunglasses-fill::before{content:"\f328"}.bi-emoji-sunglasses::before{content:"\f329"}.bi-emoji-wink-fill::before{content:"\f32a"}.bi-emoji-wink::before{content:"\f32b"}.bi-envelope-fill::before{content:"\f32c"}.bi-envelope-open-fill::before{content:"\f32d"}.bi-envelope-open::before{content:"\f32e"}.bi-envelope::before{content:"\f32f"}.bi-eraser-fill::before{content:"\f330"}.bi-eraser::before{content:"\f331"}.bi-exclamation-circle-fill::before{content:"\f332"}.bi-exclamation-circle::before{content:"\f333"}.bi-exclamation-diamond-fill::before{content:"\f334"}.bi-exclamation-diamond::before{content:"\f335"}.bi-exclamation-octagon-fill::before{content:"\f336"}.bi-exclamation-octagon::before{content:"\f337"}.bi-exclamation-square-fill::before{content:"\f338"}.bi-exclamation-square::before{content:"\f339"}.bi-exclamation-triangle-fill::before{content:"\f33a"}.bi-exclamation-triangle::before{content:"\f33b"}.bi-exclamation::before{content:"\f33c"}.bi-exclude::before{content:"\f33d"}.bi-eye-fill::before{content:"\f33e"}.bi-eye-slash-fill::before{content:"\f33f"}.bi-eye-slash::before{content:"\f340"}.bi-eye::before{content:"\f341"}.bi-eyedropper::before{content:"\f342"}.bi-eyeglasses::before{content:"\f343"}.bi-facebook::before{content:"\f344"}.bi-file-arrow-down-fill::before{content:"\f345"}.bi-file-arrow-down::before{content:"\f346"}.bi-file-arrow-up-fill::before{content:"\f347"}.bi-file-arrow-up::before{content:"\f348"}.bi-file-bar-graph-fill::before{content:"\f349"}.bi-file-bar-graph::before{content:"\f34a"}.bi-file-binary-fill::before{content:"\f34b"}.bi-file-binary::before{content:"\f34c"}.bi-file-break-fill::before{content:"\f34d"}.bi-file-break::before{content:"\f34e"}.bi-file-check-fill::before{content:"\f34f"}.bi-file-check::before{content:"\f350"}.bi-file-code-fill::before{content:"\f351"}.bi-file-code::before{content:"\f352"}.bi-file-diff-fill::before{content:"\f353"}.bi-file-diff::before{content:"\f354"}.bi-file-earmark-arrow-down-fill::before{content:"\f355"}.bi-file-earmark-arrow-down::before{content:"\f356"}.bi-file-earmark-arrow-up-fill::before{content:"\f357"}.bi-file-earmark-arrow-up::before{content:"\f358"}.bi-file-earmark-bar-graph-fill::before{content:"\f359"}.bi-file-earmark-bar-graph::before{content:"\f35a"}.bi-file-earmark-binary-fill::before{content:"\f35b"}.bi-file-earmark-binary::before{content:"\f35c"}.bi-file-earmark-break-fill::before{content:"\f35d"}.bi-file-earmark-break::before{content:"\f35e"}.bi-file-earmark-check-fill::before{content:"\f35f"}.bi-file-earmark-check::before{content:"\f360"}.bi-file-earmark-code-fill::before{content:"\f361"}.bi-file-earmark-code::before{content:"\f362"}.bi-file-earmark-diff-fill::before{content:"\f363"}.bi-file-earmark-diff::before{content:"\f364"}.bi-file-earmark-easel-fill::before{content:"\f365"}.bi-file-earmark-easel::before{content:"\f366"}.bi-file-earmark-excel-fill::before{content:"\f367"}.bi-file-earmark-excel::before{content:"\f368"}.bi-file-earmark-fill::before{content:"\f369"}.bi-file-earmark-font-fill::before{content:"\f36a"}.bi-file-earmark-font::before{content:"\f36b"}.bi-file-earmark-image-fill::before{content:"\f36c"}.bi-file-earmark-image::before{content:"\f36d"}.bi-file-earmark-lock-fill::before{content:"\f36e"}.bi-file-earmark-lock::before{content:"\f36f"}.bi-file-earmark-lock2-fill::before{content:"\f370"}.bi-file-earmark-lock2::before{content:"\f371"}.bi-file-earmark-medical-fill::before{content:"\f372"}.bi-file-earmark-medical::before{content:"\f373"}.bi-file-earmark-minus-fill::before{content:"\f374"}.bi-file-earmark-minus::before{content:"\f375"}.bi-file-earmark-music-fill::before{content:"\f376"}.bi-file-earmark-music::before{content:"\f377"}.bi-file-earmark-person-fill::before{content:"\f378"}.bi-file-earmark-person::before{content:"\f379"}.bi-file-earmark-play-fill::before{content:"\f37a"}.bi-file-earmark-play::before{content:"\f37b"}.bi-file-earmark-plus-fill::before{content:"\f37c"}.bi-file-earmark-plus::before{content:"\f37d"}.bi-file-earmark-post-fill::before{content:"\f37e"}.bi-file-earmark-post::before{content:"\f37f"}.bi-file-earmark-ppt-fill::before{content:"\f380"}.bi-file-earmark-ppt::before{content:"\f381"}.bi-file-earmark-richtext-fill::before{content:"\f382"}.bi-file-earmark-richtext::before{content:"\f383"}.bi-file-earmark-ruled-fill::before{content:"\f384"}.bi-file-earmark-ruled::before{content:"\f385"}.bi-file-earmark-slides-fill::before{content:"\f386"}.bi-file-earmark-slides::before{content:"\f387"}.bi-file-earmark-spreadsheet-fill::before{content:"\f388"}.bi-file-earmark-spreadsheet::before{content:"\f389"}.bi-file-earmark-text-fill::before{content:"\f38a"}.bi-file-earmark-text::before{content:"\f38b"}.bi-file-earmark-word-fill::before{content:"\f38c"}.bi-file-earmark-word::before{content:"\f38d"}.bi-file-earmark-x-fill::before{content:"\f38e"}.bi-file-earmark-x::before{content:"\f38f"}.bi-file-earmark-zip-fill::before{content:"\f390"}.bi-file-earmark-zip::before{content:"\f391"}.bi-file-earmark::before{content:"\f392"}.bi-file-easel-fill::before{content:"\f393"}.bi-file-easel::before{content:"\f394"}.bi-file-excel-fill::before{content:"\f395"}.bi-file-excel::before{content:"\f396"}.bi-file-fill::before{content:"\f397"}.bi-file-font-fill::before{content:"\f398"}.bi-file-font::before{content:"\f399"}.bi-file-image-fill::before{content:"\f39a"}.bi-file-image::before{content:"\f39b"}.bi-file-lock-fill::before{content:"\f39c"}.bi-file-lock::before{content:"\f39d"}.bi-file-lock2-fill::before{content:"\f39e"}.bi-file-lock2::before{content:"\f39f"}.bi-file-medical-fill::before{content:"\f3a0"}.bi-file-medical::before{content:"\f3a1"}.bi-file-minus-fill::before{content:"\f3a2"}.bi-file-minus::before{content:"\f3a3"}.bi-file-music-fill::before{content:"\f3a4"}.bi-file-music::before{content:"\f3a5"}.bi-file-person-fill::before{content:"\f3a6"}.bi-file-person::before{content:"\f3a7"}.bi-file-play-fill::before{content:"\f3a8"}.bi-file-play::before{content:"\f3a9"}.bi-file-plus-fill::before{content:"\f3aa"}.bi-file-plus::before{content:"\f3ab"}.bi-file-post-fill::before{content:"\f3ac"}.bi-file-post::before{content:"\f3ad"}.bi-file-ppt-fill::before{content:"\f3ae"}.bi-file-ppt::before{content:"\f3af"}.bi-file-richtext-fill::before{content:"\f3b0"}.bi-file-richtext::before{content:"\f3b1"}.bi-file-ruled-fill::before{content:"\f3b2"}.bi-file-ruled::before{content:"\f3b3"}.bi-file-slides-fill::before{content:"\f3b4"}.bi-file-slides::before{content:"\f3b5"}.bi-file-spreadsheet-fill::before{content:"\f3b6"}.bi-file-spreadsheet::before{content:"\f3b7"}.bi-file-text-fill::before{content:"\f3b8"}.bi-file-text::before{content:"\f3b9"}.bi-file-word-fill::before{content:"\f3ba"}.bi-file-word::before{content:"\f3bb"}.bi-file-x-fill::before{content:"\f3bc"}.bi-file-x::before{content:"\f3bd"}.bi-file-zip-fill::before{content:"\f3be"}.bi-file-zip::before{content:"\f3bf"}.bi-file::before{content:"\f3c0"}.bi-files-alt::before{content:"\f3c1"}.bi-files::before{content:"\f3c2"}.bi-film::before{content:"\f3c3"}.bi-filter-circle-fill::before{content:"\f3c4"}.bi-filter-circle::before{content:"\f3c5"}.bi-filter-left::before{content:"\f3c6"}.bi-filter-right::before{content:"\f3c7"}.bi-filter-square-fill::before{content:"\f3c8"}.bi-filter-square::before{content:"\f3c9"}.bi-filter::before{content:"\f3ca"}.bi-flag-fill::before{content:"\f3cb"}.bi-flag::before{content:"\f3cc"}.bi-flower1::before{content:"\f3cd"}.bi-flower2::before{content:"\f3ce"}.bi-flower3::before{content:"\f3cf"}.bi-folder-check::before{content:"\f3d0"}.bi-folder-fill::before{content:"\f3d1"}.bi-folder-minus::before{content:"\f3d2"}.bi-folder-plus::before{content:"\f3d3"}.bi-folder-symlink-fill::before{content:"\f3d4"}.bi-folder-symlink::before{content:"\f3d5"}.bi-folder-x::before{content:"\f3d6"}.bi-folder::before{content:"\f3d7"}.bi-folder2-open::before{content:"\f3d8"}.bi-folder2::before{content:"\f3d9"}.bi-fonts::before{content:"\f3da"}.bi-forward-fill::before{content:"\f3db"}.bi-forward::before{content:"\f3dc"}.bi-front::before{content:"\f3dd"}.bi-fullscreen-exit::before{content:"\f3de"}.bi-fullscreen::before{content:"\f3df"}.bi-funnel-fill::before{content:"\f3e0"}.bi-funnel::before{content:"\f3e1"}.bi-gear-fill::before{content:"\f3e2"}.bi-gear-wide-connected::before{content:"\f3e3"}.bi-gear-wide::before{content:"\f3e4"}.bi-gear::before{content:"\f3e5"}.bi-gem::before{content:"\f3e6"}.bi-geo-alt-fill::before{content:"\f3e7"}.bi-geo-alt::before{content:"\f3e8"}.bi-geo-fill::before{content:"\f3e9"}.bi-geo::before{content:"\f3ea"}.bi-gift-fill::before{content:"\f3eb"}.bi-gift::before{content:"\f3ec"}.bi-github::before{content:"\f3ed"}.bi-globe::before{content:"\f3ee"}.bi-globe2::before{content:"\f3ef"}.bi-google::before{content:"\f3f0"}.bi-graph-down::before{content:"\f3f1"}.bi-graph-up::before{content:"\f3f2"}.bi-grid-1x2-fill::before{content:"\f3f3"}.bi-grid-1x2::before{content:"\f3f4"}.bi-grid-3x2-gap-fill::before{content:"\f3f5"}.bi-grid-3x2-gap::before{content:"\f3f6"}.bi-grid-3x2::before{content:"\f3f7"}.bi-grid-3x3-gap-fill::before{content:"\f3f8"}.bi-grid-3x3-gap::before{content:"\f3f9"}.bi-grid-3x3::before{content:"\f3fa"}.bi-grid-fill::before{content:"\f3fb"}.bi-grid::before{content:"\f3fc"}.bi-grip-horizontal::before{content:"\f3fd"}.bi-grip-vertical::before{content:"\f3fe"}.bi-hammer::before{content:"\f3ff"}.bi-hand-index-fill::before{content:"\f400"}.bi-hand-index-thumb-fill::before{content:"\f401"}.bi-hand-index-thumb::before{content:"\f402"}.bi-hand-index::before{content:"\f403"}.bi-hand-thumbs-down-fill::before{content:"\f404"}.bi-hand-thumbs-down::before{content:"\f405"}.bi-hand-thumbs-up-fill::before{content:"\f406"}.bi-hand-thumbs-up::before{content:"\f407"}.bi-handbag-fill::before{content:"\f408"}.bi-handbag::before{content:"\f409"}.bi-hash::before{content:"\f40a"}.bi-hdd-fill::before{content:"\f40b"}.bi-hdd-network-fill::before{content:"\f40c"}.bi-hdd-network::before{content:"\f40d"}.bi-hdd-rack-fill::before{content:"\f40e"}.bi-hdd-rack::before{content:"\f40f"}.bi-hdd-stack-fill::before{content:"\f410"}.bi-hdd-stack::before{content:"\f411"}.bi-hdd::before{content:"\f412"}.bi-headphones::before{content:"\f413"}.bi-headset::before{content:"\f414"}.bi-heart-fill::before{content:"\f415"}.bi-heart-half::before{content:"\f416"}.bi-heart::before{content:"\f417"}.bi-heptagon-fill::before{content:"\f418"}.bi-heptagon-half::before{content:"\f419"}.bi-heptagon::before{content:"\f41a"}.bi-hexagon-fill::before{content:"\f41b"}.bi-hexagon-half::before{content:"\f41c"}.bi-hexagon::before{content:"\f41d"}.bi-hourglass-bottom::before{content:"\f41e"}.bi-hourglass-split::before{content:"\f41f"}.bi-hourglass-top::before{content:"\f420"}.bi-hourglass::before{content:"\f421"}.bi-house-door-fill::before{content:"\f422"}.bi-house-door::before{content:"\f423"}.bi-house-fill::before{content:"\f424"}.bi-house::before{content:"\f425"}.bi-hr::before{content:"\f426"}.bi-hurricane::before{content:"\f427"}.bi-image-alt::before{content:"\f428"}.bi-image-fill::before{content:"\f429"}.bi-image::before{content:"\f42a"}.bi-images::before{content:"\f42b"}.bi-inbox-fill::before{content:"\f42c"}.bi-inbox::before{content:"\f42d"}.bi-inboxes-fill::before{content:"\f42e"}.bi-inboxes::before{content:"\f42f"}.bi-info-circle-fill::before{content:"\f430"}.bi-info-circle::before{content:"\f431"}.bi-info-square-fill::before{content:"\f432"}.bi-info-square::before{content:"\f433"}.bi-info::before{content:"\f434"}.bi-input-cursor-text::before{content:"\f435"}.bi-input-cursor::before{content:"\f436"}.bi-instagram::before{content:"\f437"}.bi-intersect::before{content:"\f438"}.bi-journal-album::before{content:"\f439"}.bi-journal-arrow-down::before{content:"\f43a"}.bi-journal-arrow-up::before{content:"\f43b"}.bi-journal-bookmark-fill::before{content:"\f43c"}.bi-journal-bookmark::before{content:"\f43d"}.bi-journal-check::before{content:"\f43e"}.bi-journal-code::before{content:"\f43f"}.bi-journal-medical::before{content:"\f440"}.bi-journal-minus::before{content:"\f441"}.bi-journal-plus::before{content:"\f442"}.bi-journal-richtext::before{content:"\f443"}.bi-journal-text::before{content:"\f444"}.bi-journal-x::before{content:"\f445"}.bi-journal::before{content:"\f446"}.bi-journals::before{content:"\f447"}.bi-joystick::before{content:"\f448"}.bi-justify-left::before{content:"\f449"}.bi-justify-right::before{content:"\f44a"}.bi-justify::before{content:"\f44b"}.bi-kanban-fill::before{content:"\f44c"}.bi-kanban::before{content:"\f44d"}.bi-key-fill::before{content:"\f44e"}.bi-key::before{content:"\f44f"}.bi-keyboard-fill::before{content:"\f450"}.bi-keyboard::before{content:"\f451"}.bi-ladder::before{content:"\f452"}.bi-lamp-fill::before{content:"\f453"}.bi-lamp::before{content:"\f454"}.bi-laptop-fill::before{content:"\f455"}.bi-laptop::before{content:"\f456"}.bi-layer-backward::before{content:"\f457"}.bi-layer-forward::before{content:"\f458"}.bi-layers-fill::before{content:"\f459"}.bi-layers-half::before{content:"\f45a"}.bi-layers::before{content:"\f45b"}.bi-layout-sidebar-inset-reverse::before{content:"\f45c"}.bi-layout-sidebar-inset::before{content:"\f45d"}.bi-layout-sidebar-reverse::before{content:"\f45e"}.bi-layout-sidebar::before{content:"\f45f"}.bi-layout-split::before{content:"\f460"}.bi-layout-text-sidebar-reverse::before{content:"\f461"}.bi-layout-text-sidebar::before{content:"\f462"}.bi-layout-text-window-reverse::before{content:"\f463"}.bi-layout-text-window::before{content:"\f464"}.bi-layout-three-columns::before{content:"\f465"}.bi-layout-wtf::before{content:"\f466"}.bi-life-preserver::before{content:"\f467"}.bi-lightbulb-fill::before{content:"\f468"}.bi-lightbulb-off-fill::before{content:"\f469"}.bi-lightbulb-off::before{content:"\f46a"}.bi-lightbulb::before{content:"\f46b"}.bi-lightning-charge-fill::before{content:"\f46c"}.bi-lightning-charge::before{content:"\f46d"}.bi-lightning-fill::before{content:"\f46e"}.bi-lightning::before{content:"\f46f"}.bi-link-45deg::before{content:"\f470"}.bi-link::before{content:"\f471"}.bi-linkedin::before{content:"\f472"}.bi-list-check::before{content:"\f473"}.bi-list-nested::before{content:"\f474"}.bi-list-ol::before{content:"\f475"}.bi-list-stars::before{content:"\f476"}.bi-list-task::before{content:"\f477"}.bi-list-ul::before{content:"\f478"}.bi-list::before{content:"\f479"}.bi-lock-fill::before{content:"\f47a"}.bi-lock::before{content:"\f47b"}.bi-mailbox::before{content:"\f47c"}.bi-mailbox2::before{content:"\f47d"}.bi-map-fill::before{content:"\f47e"}.bi-map::before{content:"\f47f"}.bi-markdown-fill::before{content:"\f480"}.bi-markdown::before{content:"\f481"}.bi-mask::before{content:"\f482"}.bi-megaphone-fill::before{content:"\f483"}.bi-megaphone::before{content:"\f484"}.bi-menu-app-fill::before{content:"\f485"}.bi-menu-app::before{content:"\f486"}.bi-menu-button-fill::before{content:"\f487"}.bi-menu-button-wide-fill::before{content:"\f488"}.bi-menu-button-wide::before{content:"\f489"}.bi-menu-button::before{content:"\f48a"}.bi-menu-down::before{content:"\f48b"}.bi-menu-up::before{content:"\f48c"}.bi-mic-fill::before{content:"\f48d"}.bi-mic-mute-fill::before{content:"\f48e"}.bi-mic-mute::before{content:"\f48f"}.bi-mic::before{content:"\f490"}.bi-minecart-loaded::before{content:"\f491"}.bi-minecart::before{content:"\f492"}.bi-moisture::before{content:"\f493"}.bi-moon-fill::before{content:"\f494"}.bi-moon-stars-fill::before{content:"\f495"}.bi-moon-stars::before{content:"\f496"}.bi-moon::before{content:"\f497"}.bi-mouse-fill::before{content:"\f498"}.bi-mouse::before{content:"\f499"}.bi-mouse2-fill::before{content:"\f49a"}.bi-mouse2::before{content:"\f49b"}.bi-mouse3-fill::before{content:"\f49c"}.bi-mouse3::before{content:"\f49d"}.bi-music-note-beamed::before{content:"\f49e"}.bi-music-note-list::before{content:"\f49f"}.bi-music-note::before{content:"\f4a0"}.bi-music-player-fill::before{content:"\f4a1"}.bi-music-player::before{content:"\f4a2"}.bi-newspaper::before{content:"\f4a3"}.bi-node-minus-fill::before{content:"\f4a4"}.bi-node-minus::before{content:"\f4a5"}.bi-node-plus-fill::before{content:"\f4a6"}.bi-node-plus::before{content:"\f4a7"}.bi-nut-fill::before{content:"\f4a8"}.bi-nut::before{content:"\f4a9"}.bi-octagon-fill::before{content:"\f4aa"}.bi-octagon-half::before{content:"\f4ab"}.bi-octagon::before{content:"\f4ac"}.bi-option::before{content:"\f4ad"}.bi-outlet::before{content:"\f4ae"}.bi-paint-bucket::before{content:"\f4af"}.bi-palette-fill::before{content:"\f4b0"}.bi-palette::before{content:"\f4b1"}.bi-palette2::before{content:"\f4b2"}.bi-paperclip::before{content:"\f4b3"}.bi-paragraph::before{content:"\f4b4"}.bi-patch-check-fill::before{content:"\f4b5"}.bi-patch-check::before{content:"\f4b6"}.bi-patch-exclamation-fill::before{content:"\f4b7"}.bi-patch-exclamation::before{content:"\f4b8"}.bi-patch-minus-fill::before{content:"\f4b9"}.bi-patch-minus::before{content:"\f4ba"}.bi-patch-plus-fill::before{content:"\f4bb"}.bi-patch-plus::before{content:"\f4bc"}.bi-patch-question-fill::before{content:"\f4bd"}.bi-patch-question::before{content:"\f4be"}.bi-pause-btn-fill::before{content:"\f4bf"}.bi-pause-btn::before{content:"\f4c0"}.bi-pause-circle-fill::before{content:"\f4c1"}.bi-pause-circle::before{content:"\f4c2"}.bi-pause-fill::before{content:"\f4c3"}.bi-pause::before{content:"\f4c4"}.bi-peace-fill::before{content:"\f4c5"}.bi-peace::before{content:"\f4c6"}.bi-pen-fill::before{content:"\f4c7"}.bi-pen::before{content:"\f4c8"}.bi-pencil-fill::before{content:"\f4c9"}.bi-pencil-square::before{content:"\f4ca"}.bi-pencil::before{content:"\f4cb"}.bi-pentagon-fill::before{content:"\f4cc"}.bi-pentagon-half::before{content:"\f4cd"}.bi-pentagon::before{content:"\f4ce"}.bi-people-fill::before{content:"\f4cf"}.bi-people::before{content:"\f4d0"}.bi-percent::before{content:"\f4d1"}.bi-person-badge-fill::before{content:"\f4d2"}.bi-person-badge::before{content:"\f4d3"}.bi-person-bounding-box::before{content:"\f4d4"}.bi-person-check-fill::before{content:"\f4d5"}.bi-person-check::before{content:"\f4d6"}.bi-person-circle::before{content:"\f4d7"}.bi-person-dash-fill::before{content:"\f4d8"}.bi-person-dash::before{content:"\f4d9"}.bi-person-fill::before{content:"\f4da"}.bi-person-lines-fill::before{content:"\f4db"}.bi-person-plus-fill::before{content:"\f4dc"}.bi-person-plus::before{content:"\f4dd"}.bi-person-square::before{content:"\f4de"}.bi-person-x-fill::before{content:"\f4df"}.bi-person-x::before{content:"\f4e0"}.bi-person::before{content:"\f4e1"}.bi-phone-fill::before{content:"\f4e2"}.bi-phone-landscape-fill::before{content:"\f4e3"}.bi-phone-landscape::before{content:"\f4e4"}.bi-phone-vibrate-fill::before{content:"\f4e5"}.bi-phone-vibrate::before{content:"\f4e6"}.bi-phone::before{content:"\f4e7"}.bi-pie-chart-fill::before{content:"\f4e8"}.bi-pie-chart::before{content:"\f4e9"}.bi-pin-angle-fill::before{content:"\f4ea"}.bi-pin-angle::before{content:"\f4eb"}.bi-pin-fill::before{content:"\f4ec"}.bi-pin::before{content:"\f4ed"}.bi-pip-fill::before{content:"\f4ee"}.bi-pip::before{content:"\f4ef"}.bi-play-btn-fill::before{content:"\f4f0"}.bi-play-btn::before{content:"\f4f1"}.bi-play-circle-fill::before{content:"\f4f2"}.bi-play-circle::before{content:"\f4f3"}.bi-play-fill::before{content:"\f4f4"}.bi-play::before{content:"\f4f5"}.bi-plug-fill::before{content:"\f4f6"}.bi-plug::before{content:"\f4f7"}.bi-plus-circle-dotted::before{content:"\f4f8"}.bi-plus-circle-fill::before{content:"\f4f9"}.bi-plus-circle::before{content:"\f4fa"}.bi-plus-square-dotted::before{content:"\f4fb"}.bi-plus-square-fill::before{content:"\f4fc"}.bi-plus-square::before{content:"\f4fd"}.bi-plus::before{content:"\f4fe"}.bi-power::before{content:"\f4ff"}.bi-printer-fill::before{content:"\f500"}.bi-printer::before{content:"\f501"}.bi-puzzle-fill::before{content:"\f502"}.bi-puzzle::before{content:"\f503"}.bi-question-circle-fill::before{content:"\f504"}.bi-question-circle::before{content:"\f505"}.bi-question-diamond-fill::before{content:"\f506"}.bi-question-diamond::before{content:"\f507"}.bi-question-octagon-fill::before{content:"\f508"}.bi-question-octagon::before{content:"\f509"}.bi-question-square-fill::before{content:"\f50a"}.bi-question-square::before{content:"\f50b"}.bi-question::before{content:"\f50c"}.bi-rainbow::before{content:"\f50d"}.bi-receipt-cutoff::before{content:"\f50e"}.bi-receipt::before{content:"\f50f"}.bi-reception-0::before{content:"\f510"}.bi-reception-1::before{content:"\f511"}.bi-reception-2::before{content:"\f512"}.bi-reception-3::before{content:"\f513"}.bi-reception-4::before{content:"\f514"}.bi-record-btn-fill::before{content:"\f515"}.bi-record-btn::before{content:"\f516"}.bi-record-circle-fill::before{content:"\f517"}.bi-record-circle::before{content:"\f518"}.bi-record-fill::before{content:"\f519"}.bi-record::before{content:"\f51a"}.bi-record2-fill::before{content:"\f51b"}.bi-record2::before{content:"\f51c"}.bi-reply-all-fill::before{content:"\f51d"}.bi-reply-all::before{content:"\f51e"}.bi-reply-fill::before{content:"\f51f"}.bi-reply::before{content:"\f520"}.bi-rss-fill::before{content:"\f521"}.bi-rss::before{content:"\f522"}.bi-rulers::before{content:"\f523"}.bi-save-fill::before{content:"\f524"}.bi-save::before{content:"\f525"}.bi-save2-fill::before{content:"\f526"}.bi-save2::before{content:"\f527"}.bi-scissors::before{content:"\f528"}.bi-screwdriver::before{content:"\f529"}.bi-search::before{content:"\f52a"}.bi-segmented-nav::before{content:"\f52b"}.bi-server::before{content:"\f52c"}.bi-share-fill::before{content:"\f52d"}.bi-share::before{content:"\f52e"}.bi-shield-check::before{content:"\f52f"}.bi-shield-exclamation::before{content:"\f530"}.bi-shield-fill-check::before{content:"\f531"}.bi-shield-fill-exclamation::before{content:"\f532"}.bi-shield-fill-minus::before{content:"\f533"}.bi-shield-fill-plus::before{content:"\f534"}.bi-shield-fill-x::before{content:"\f535"}.bi-shield-fill::before{content:"\f536"}.bi-shield-lock-fill::before{content:"\f537"}.bi-shield-lock::before{content:"\f538"}.bi-shield-minus::before{content:"\f539"}.bi-shield-plus::before{content:"\f53a"}.bi-shield-shaded::before{content:"\f53b"}.bi-shield-slash-fill::before{content:"\f53c"}.bi-shield-slash::before{content:"\f53d"}.bi-shield-x::before{content:"\f53e"}.bi-shield::before{content:"\f53f"}.bi-shift-fill::before{content:"\f540"}.bi-shift::before{content:"\f541"}.bi-shop-window::before{content:"\f542"}.bi-shop::before{content:"\f543"}.bi-shuffle::before{content:"\f544"}.bi-signpost-2-fill::before{content:"\f545"}.bi-signpost-2::before{content:"\f546"}.bi-signpost-fill::before{content:"\f547"}.bi-signpost-split-fill::before{content:"\f548"}.bi-signpost-split::before{content:"\f549"}.bi-signpost::before{content:"\f54a"}.bi-sim-fill::before{content:"\f54b"}.bi-sim::before{content:"\f54c"}.bi-skip-backward-btn-fill::before{content:"\f54d"}.bi-skip-backward-btn::before{content:"\f54e"}.bi-skip-backward-circle-fill::before{content:"\f54f"}.bi-skip-backward-circle::before{content:"\f550"}.bi-skip-backward-fill::before{content:"\f551"}.bi-skip-backward::before{content:"\f552"}.bi-skip-end-btn-fill::before{content:"\f553"}.bi-skip-end-btn::before{content:"\f554"}.bi-skip-end-circle-fill::before{content:"\f555"}.bi-skip-end-circle::before{content:"\f556"}.bi-skip-end-fill::before{content:"\f557"}.bi-skip-end::before{content:"\f558"}.bi-skip-forward-btn-fill::before{content:"\f559"}.bi-skip-forward-btn::before{content:"\f55a"}.bi-skip-forward-circle-fill::before{content:"\f55b"}.bi-skip-forward-circle::before{content:"\f55c"}.bi-skip-forward-fill::before{content:"\f55d"}.bi-skip-forward::before{content:"\f55e"}.bi-skip-start-btn-fill::before{content:"\f55f"}.bi-skip-start-btn::before{content:"\f560"}.bi-skip-start-circle-fill::before{content:"\f561"}.bi-skip-start-circle::before{content:"\f562"}.bi-skip-start-fill::before{content:"\f563"}.bi-skip-start::before{content:"\f564"}.bi-slack::before{content:"\f565"}.bi-slash-circle-fill::before{content:"\f566"}.bi-slash-circle::before{content:"\f567"}.bi-slash-square-fill::before{content:"\f568"}.bi-slash-square::before{content:"\f569"}.bi-slash::before{content:"\f56a"}.bi-sliders::before{content:"\f56b"}.bi-smartwatch::before{content:"\f56c"}.bi-snow::before{content:"\f56d"}.bi-snow2::before{content:"\f56e"}.bi-snow3::before{content:"\f56f"}.bi-sort-alpha-down-alt::before{content:"\f570"}.bi-sort-alpha-down::before{content:"\f571"}.bi-sort-alpha-up-alt::before{content:"\f572"}.bi-sort-alpha-up::before{content:"\f573"}.bi-sort-down-alt::before{content:"\f574"}.bi-sort-down::before{content:"\f575"}.bi-sort-numeric-down-alt::before{content:"\f576"}.bi-sort-numeric-down::before{content:"\f577"}.bi-sort-numeric-up-alt::before{content:"\f578"}.bi-sort-numeric-up::before{content:"\f579"}.bi-sort-up-alt::before{content:"\f57a"}.bi-sort-up::before{content:"\f57b"}.bi-soundwave::before{content:"\f57c"}.bi-speaker-fill::before{content:"\f57d"}.bi-speaker::before{content:"\f57e"}.bi-speedometer::before{content:"\f57f"}.bi-speedometer2::before{content:"\f580"}.bi-spellcheck::before{content:"\f581"}.bi-square-fill::before{content:"\f582"}.bi-square-half::before{content:"\f583"}.bi-square::before{content:"\f584"}.bi-stack::before{content:"\f585"}.bi-star-fill::before{content:"\f586"}.bi-star-half::before{content:"\f587"}.bi-star::before{content:"\f588"}.bi-stars::before{content:"\f589"}.bi-stickies-fill::before{content:"\f58a"}.bi-stickies::before{content:"\f58b"}.bi-sticky-fill::before{content:"\f58c"}.bi-sticky::before{content:"\f58d"}.bi-stop-btn-fill::before{content:"\f58e"}.bi-stop-btn::before{content:"\f58f"}.bi-stop-circle-fill::before{content:"\f590"}.bi-stop-circle::before{content:"\f591"}.bi-stop-fill::before{content:"\f592"}.bi-stop::before{content:"\f593"}.bi-stoplights-fill::before{content:"\f594"}.bi-stoplights::before{content:"\f595"}.bi-stopwatch-fill::before{content:"\f596"}.bi-stopwatch::before{content:"\f597"}.bi-subtract::before{content:"\f598"}.bi-suit-club-fill::before{content:"\f599"}.bi-suit-club::before{content:"\f59a"}.bi-suit-diamond-fill::before{content:"\f59b"}.bi-suit-diamond::before{content:"\f59c"}.bi-suit-heart-fill::before{content:"\f59d"}.bi-suit-heart::before{content:"\f59e"}.bi-suit-spade-fill::before{content:"\f59f"}.bi-suit-spade::before{content:"\f5a0"}.bi-sun-fill::before{content:"\f5a1"}.bi-sun::before{content:"\f5a2"}.bi-sunglasses::before{content:"\f5a3"}.bi-sunrise-fill::before{content:"\f5a4"}.bi-sunrise::before{content:"\f5a5"}.bi-sunset-fill::before{content:"\f5a6"}.bi-sunset::before{content:"\f5a7"}.bi-symmetry-horizontal::before{content:"\f5a8"}.bi-symmetry-vertical::before{content:"\f5a9"}.bi-table::before{content:"\f5aa"}.bi-tablet-fill::before{content:"\f5ab"}.bi-tablet-landscape-fill::before{content:"\f5ac"}.bi-tablet-landscape::before{content:"\f5ad"}.bi-tablet::before{content:"\f5ae"}.bi-tag-fill::before{content:"\f5af"}.bi-tag::before{content:"\f5b0"}.bi-tags-fill::before{content:"\f5b1"}.bi-tags::before{content:"\f5b2"}.bi-telegram::before{content:"\f5b3"}.bi-telephone-fill::before{content:"\f5b4"}.bi-telephone-forward-fill::before{content:"\f5b5"}.bi-telephone-forward::before{content:"\f5b6"}.bi-telephone-inbound-fill::before{content:"\f5b7"}.bi-telephone-inbound::before{content:"\f5b8"}.bi-telephone-minus-fill::before{content:"\f5b9"}.bi-telephone-minus::before{content:"\f5ba"}.bi-telephone-outbound-fill::before{content:"\f5bb"}.bi-telephone-outbound::before{content:"\f5bc"}.bi-telephone-plus-fill::before{content:"\f5bd"}.bi-telephone-plus::before{content:"\f5be"}.bi-telephone-x-fill::before{content:"\f5bf"}.bi-telephone-x::before{content:"\f5c0"}.bi-telephone::before{content:"\f5c1"}.bi-terminal-fill::before{content:"\f5c2"}.bi-terminal::before{content:"\f5c3"}.bi-text-center::before{content:"\f5c4"}.bi-text-indent-left::before{content:"\f5c5"}.bi-text-indent-right::before{content:"\f5c6"}.bi-text-left::before{content:"\f5c7"}.bi-text-paragraph::before{content:"\f5c8"}.bi-text-right::before{content:"\f5c9"}.bi-textarea-resize::before{content:"\f5ca"}.bi-textarea-t::before{content:"\f5cb"}.bi-textarea::before{content:"\f5cc"}.bi-thermometer-half::before{content:"\f5cd"}.bi-thermometer-high::before{content:"\f5ce"}.bi-thermometer-low::before{content:"\f5cf"}.bi-thermometer-snow::before{content:"\f5d0"}.bi-thermometer-sun::before{content:"\f5d1"}.bi-thermometer::before{content:"\f5d2"}.bi-three-dots-vertical::before{content:"\f5d3"}.bi-three-dots::before{content:"\f5d4"}.bi-toggle-off::before{content:"\f5d5"}.bi-toggle-on::before{content:"\f5d6"}.bi-toggle2-off::before{content:"\f5d7"}.bi-toggle2-on::before{content:"\f5d8"}.bi-toggles::before{content:"\f5d9"}.bi-toggles2::before{content:"\f5da"}.bi-tools::before{content:"\f5db"}.bi-tornado::before{content:"\f5dc"}.bi-trash-fill::before{content:"\f5dd"}.bi-trash::before{content:"\f5de"}.bi-trash2-fill::before{content:"\f5df"}.bi-trash2::before{content:"\f5e0"}.bi-tree-fill::before{content:"\f5e1"}.bi-tree::before{content:"\f5e2"}.bi-triangle-fill::before{content:"\f5e3"}.bi-triangle-half::before{content:"\f5e4"}.bi-triangle::before{content:"\f5e5"}.bi-trophy-fill::before{content:"\f5e6"}.bi-trophy::before{content:"\f5e7"}.bi-tropical-storm::before{content:"\f5e8"}.bi-truck-flatbed::before{content:"\f5e9"}.bi-truck::before{content:"\f5ea"}.bi-tsunami::before{content:"\f5eb"}.bi-tv-fill::before{content:"\f5ec"}.bi-tv::before{content:"\f5ed"}.bi-twitch::before{content:"\f5ee"}.bi-twitter::before{content:"\f5ef"}.bi-type-bold::before{content:"\f5f0"}.bi-type-h1::before{content:"\f5f1"}.bi-type-h2::before{content:"\f5f2"}.bi-type-h3::before{content:"\f5f3"}.bi-type-italic::before{content:"\f5f4"}.bi-type-strikethrough::before{content:"\f5f5"}.bi-type-underline::before{content:"\f5f6"}.bi-type::before{content:"\f5f7"}.bi-ui-checks-grid::before{content:"\f5f8"}.bi-ui-checks::before{content:"\f5f9"}.bi-ui-radios-grid::before{content:"\f5fa"}.bi-ui-radios::before{content:"\f5fb"}.bi-umbrella-fill::before{content:"\f5fc"}.bi-umbrella::before{content:"\f5fd"}.bi-union::before{content:"\f5fe"}.bi-unlock-fill::before{content:"\f5ff"}.bi-unlock::before{content:"\f600"}.bi-upc-scan::before{content:"\f601"}.bi-upc::before{content:"\f602"}.bi-upload::before{content:"\f603"}.bi-vector-pen::before{content:"\f604"}.bi-view-list::before{content:"\f605"}.bi-view-stacked::before{content:"\f606"}.bi-vinyl-fill::before{content:"\f607"}.bi-vinyl::before{content:"\f608"}.bi-voicemail::before{content:"\f609"}.bi-volume-down-fill::before{content:"\f60a"}.bi-volume-down::before{content:"\f60b"}.bi-volume-mute-fill::before{content:"\f60c"}.bi-volume-mute::before{content:"\f60d"}.bi-volume-off-fill::before{content:"\f60e"}.bi-volume-off::before{content:"\f60f"}.bi-volume-up-fill::before{content:"\f610"}.bi-volume-up::before{content:"\f611"}.bi-vr::before{content:"\f612"}.bi-wallet-fill::before{content:"\f613"}.bi-wallet::before{content:"\f614"}.bi-wallet2::before{content:"\f615"}.bi-watch::before{content:"\f616"}.bi-water::before{content:"\f617"}.bi-whatsapp::before{content:"\f618"}.bi-wifi-1::before{content:"\f619"}.bi-wifi-2::before{content:"\f61a"}.bi-wifi-off::before{content:"\f61b"}.bi-wifi::before{content:"\f61c"}.bi-wind::before{content:"\f61d"}.bi-window-dock::before{content:"\f61e"}.bi-window-sidebar::before{content:"\f61f"}.bi-window::before{content:"\f620"}.bi-wrench::before{content:"\f621"}.bi-x-circle-fill::before{content:"\f622"}.bi-x-circle::before{content:"\f623"}.bi-x-diamond-fill::before{content:"\f624"}.bi-x-diamond::before{content:"\f625"}.bi-x-octagon-fill::before{content:"\f626"}.bi-x-octagon::before{content:"\f627"}.bi-x-square-fill::before{content:"\f628"}.bi-x-square::before{content:"\f629"}.bi-x::before{content:"\f62a"}.bi-youtube::before{content:"\f62b"}.bi-zoom-in::before{content:"\f62c"}.bi-zoom-out::before{content:"\f62d"}.bi-bank::before{content:"\f62e"}.bi-bank2::before{content:"\f62f"}.bi-bell-slash-fill::before{content:"\f630"}.bi-bell-slash::before{content:"\f631"}.bi-cash-coin::before{content:"\f632"}.bi-check-lg::before{content:"\f633"}.bi-coin::before{content:"\f634"}.bi-currency-bitcoin::before{content:"\f635"}.bi-currency-dollar::before{content:"\f636"}.bi-currency-euro::before{content:"\f637"}.bi-currency-exchange::before{content:"\f638"}.bi-currency-pound::before{content:"\f639"}.bi-currency-yen::before{content:"\f63a"}.bi-dash-lg::before{content:"\f63b"}.bi-exclamation-lg::before{content:"\f63c"}.bi-file-earmark-pdf-fill::before{content:"\f63d"}.bi-file-earmark-pdf::before{content:"\f63e"}.bi-file-pdf-fill::before{content:"\f63f"}.bi-file-pdf::before{content:"\f640"}.bi-gender-ambiguous::before{content:"\f641"}.bi-gender-female::before{content:"\f642"}.bi-gender-male::before{content:"\f643"}.bi-gender-trans::before{content:"\f644"}.bi-headset-vr::before{content:"\f645"}.bi-info-lg::before{content:"\f646"}.bi-mastodon::before{content:"\f647"}.bi-messenger::before{content:"\f648"}.bi-piggy-bank-fill::before{content:"\f649"}.bi-piggy-bank::before{content:"\f64a"}.bi-pin-map-fill::before{content:"\f64b"}.bi-pin-map::before{content:"\f64c"}.bi-plus-lg::before{content:"\f64d"}.bi-question-lg::before{content:"\f64e"}.bi-recycle::before{content:"\f64f"}.bi-reddit::before{content:"\f650"}.bi-safe-fill::before{content:"\f651"}.bi-safe2-fill::before{content:"\f652"}.bi-safe2::before{content:"\f653"}.bi-sd-card-fill::before{content:"\f654"}.bi-sd-card::before{content:"\f655"}.bi-skype::before{content:"\f656"}.bi-slash-lg::before{content:"\f657"}.bi-translate::before{content:"\f658"}.bi-x-lg::before{content:"\f659"}.bi-safe::before{content:"\f65a"}.bi-apple::before{content:"\f65b"}.bi-microsoft::before{content:"\f65d"}.bi-windows::before{content:"\f65e"}.bi-behance::before{content:"\f65c"}.bi-dribbble::before{content:"\f65f"}.bi-line::before{content:"\f660"}.bi-medium::before{content:"\f661"}.bi-paypal::before{content:"\f662"}.bi-pinterest::before{content:"\f663"}.bi-signal::before{content:"\f664"}.bi-snapchat::before{content:"\f665"}.bi-spotify::before{content:"\f666"}.bi-stack-overflow::before{content:"\f667"}.bi-strava::before{content:"\f668"}.bi-wordpress::before{content:"\f669"}.bi-vimeo::before{content:"\f66a"}.bi-activity::before{content:"\f66b"}.bi-easel2-fill::before{content:"\f66c"}.bi-easel2::before{content:"\f66d"}.bi-easel3-fill::before{content:"\f66e"}.bi-easel3::before{content:"\f66f"}.bi-fan::before{content:"\f670"}.bi-fingerprint::before{content:"\f671"}.bi-graph-down-arrow::before{content:"\f672"}.bi-graph-up-arrow::before{content:"\f673"}.bi-hypnotize::before{content:"\f674"}.bi-magic::before{content:"\f675"}.bi-person-rolodex::before{content:"\f676"}.bi-person-video::before{content:"\f677"}.bi-person-video2::before{content:"\f678"}.bi-person-video3::before{content:"\f679"}.bi-person-workspace::before{content:"\f67a"}.bi-radioactive::before{content:"\f67b"}.bi-webcam-fill::before{content:"\f67c"}.bi-webcam::before{content:"\f67d"}.bi-yin-yang::before{content:"\f67e"}.bi-bandaid-fill::before{content:"\f680"}.bi-bandaid::before{content:"\f681"}.bi-bluetooth::before{content:"\f682"}.bi-body-text::before{content:"\f683"}.bi-boombox::before{content:"\f684"}.bi-boxes::before{content:"\f685"}.bi-dpad-fill::before{content:"\f686"}.bi-dpad::before{content:"\f687"}.bi-ear-fill::before{content:"\f688"}.bi-ear::before{content:"\f689"}.bi-envelope-check-fill::before{content:"\f68b"}.bi-envelope-check::before{content:"\f68c"}.bi-envelope-dash-fill::before{content:"\f68e"}.bi-envelope-dash::before{content:"\f68f"}.bi-envelope-exclamation-fill::before{content:"\f691"}.bi-envelope-exclamation::before{content:"\f692"}.bi-envelope-plus-fill::before{content:"\f693"}.bi-envelope-plus::before{content:"\f694"}.bi-envelope-slash-fill::before{content:"\f696"}.bi-envelope-slash::before{content:"\f697"}.bi-envelope-x-fill::before{content:"\f699"}.bi-envelope-x::before{content:"\f69a"}.bi-explicit-fill::before{content:"\f69b"}.bi-explicit::before{content:"\f69c"}.bi-git::before{content:"\f69d"}.bi-infinity::before{content:"\f69e"}.bi-list-columns-reverse::before{content:"\f69f"}.bi-list-columns::before{content:"\f6a0"}.bi-meta::before{content:"\f6a1"}.bi-nintendo-switch::before{content:"\f6a4"}.bi-pc-display-horizontal::before{content:"\f6a5"}.bi-pc-display::before{content:"\f6a6"}.bi-pc-horizontal::before{content:"\f6a7"}.bi-pc::before{content:"\f6a8"}.bi-playstation::before{content:"\f6a9"}.bi-plus-slash-minus::before{content:"\f6aa"}.bi-projector-fill::before{content:"\f6ab"}.bi-projector::before{content:"\f6ac"}.bi-qr-code-scan::before{content:"\f6ad"}.bi-qr-code::before{content:"\f6ae"}.bi-quora::before{content:"\f6af"}.bi-quote::before{content:"\f6b0"}.bi-robot::before{content:"\f6b1"}.bi-send-check-fill::before{content:"\f6b2"}.bi-send-check::before{content:"\f6b3"}.bi-send-dash-fill::before{content:"\f6b4"}.bi-send-dash::before{content:"\f6b5"}.bi-send-exclamation-fill::before{content:"\f6b7"}.bi-send-exclamation::before{content:"\f6b8"}.bi-send-fill::before{content:"\f6b9"}.bi-send-plus-fill::before{content:"\f6ba"}.bi-send-plus::before{content:"\f6bb"}.bi-send-slash-fill::before{content:"\f6bc"}.bi-send-slash::before{content:"\f6bd"}.bi-send-x-fill::before{content:"\f6be"}.bi-send-x::before{content:"\f6bf"}.bi-send::before{content:"\f6c0"}.bi-steam::before{content:"\f6c1"}.bi-terminal-dash::before{content:"\f6c3"}.bi-terminal-plus::before{content:"\f6c4"}.bi-terminal-split::before{content:"\f6c5"}.bi-ticket-detailed-fill::before{content:"\f6c6"}.bi-ticket-detailed::before{content:"\f6c7"}.bi-ticket-fill::before{content:"\f6c8"}.bi-ticket-perforated-fill::before{content:"\f6c9"}.bi-ticket-perforated::before{content:"\f6ca"}.bi-ticket::before{content:"\f6cb"}.bi-tiktok::before{content:"\f6cc"}.bi-window-dash::before{content:"\f6cd"}.bi-window-desktop::before{content:"\f6ce"}.bi-window-fullscreen::before{content:"\f6cf"}.bi-window-plus::before{content:"\f6d0"}.bi-window-split::before{content:"\f6d1"}.bi-window-stack::before{content:"\f6d2"}.bi-window-x::before{content:"\f6d3"}.bi-xbox::before{content:"\f6d4"}.bi-ethernet::before{content:"\f6d5"}.bi-hdmi-fill::before{content:"\f6d6"}.bi-hdmi::before{content:"\f6d7"}.bi-usb-c-fill::before{content:"\f6d8"}.bi-usb-c::before{content:"\f6d9"}.bi-usb-fill::before{content:"\f6da"}.bi-usb-plug-fill::before{content:"\f6db"}.bi-usb-plug::before{content:"\f6dc"}.bi-usb-symbol::before{content:"\f6dd"}.bi-usb::before{content:"\f6de"}.bi-boombox-fill::before{content:"\f6df"}.bi-displayport::before{content:"\f6e1"}.bi-gpu-card::before{content:"\f6e2"}.bi-memory::before{content:"\f6e3"}.bi-modem-fill::before{content:"\f6e4"}.bi-modem::before{content:"\f6e5"}.bi-motherboard-fill::before{content:"\f6e6"}.bi-motherboard::before{content:"\f6e7"}.bi-optical-audio-fill::before{content:"\f6e8"}.bi-optical-audio::before{content:"\f6e9"}.bi-pci-card::before{content:"\f6ea"}.bi-router-fill::before{content:"\f6eb"}.bi-router::before{content:"\f6ec"}.bi-thunderbolt-fill::before{content:"\f6ef"}.bi-thunderbolt::before{content:"\f6f0"}.bi-usb-drive-fill::before{content:"\f6f1"}.bi-usb-drive::before{content:"\f6f2"}.bi-usb-micro-fill::before{content:"\f6f3"}.bi-usb-micro::before{content:"\f6f4"}.bi-usb-mini-fill::before{content:"\f6f5"}.bi-usb-mini::before{content:"\f6f6"}.bi-cloud-haze2::before{content:"\f6f7"}.bi-device-hdd-fill::before{content:"\f6f8"}.bi-device-hdd::before{content:"\f6f9"}.bi-device-ssd-fill::before{content:"\f6fa"}.bi-device-ssd::before{content:"\f6fb"}.bi-displayport-fill::before{content:"\f6fc"}.bi-mortarboard-fill::before{content:"\f6fd"}.bi-mortarboard::before{content:"\f6fe"}.bi-terminal-x::before{content:"\f6ff"}.bi-arrow-through-heart-fill::before{content:"\f700"}.bi-arrow-through-heart::before{content:"\f701"}.bi-badge-sd-fill::before{content:"\f702"}.bi-badge-sd::before{content:"\f703"}.bi-bag-heart-fill::before{content:"\f704"}.bi-bag-heart::before{content:"\f705"}.bi-balloon-fill::before{content:"\f706"}.bi-balloon-heart-fill::before{content:"\f707"}.bi-balloon-heart::before{content:"\f708"}.bi-balloon::before{content:"\f709"}.bi-box2-fill::before{content:"\f70a"}.bi-box2-heart-fill::before{content:"\f70b"}.bi-box2-heart::before{content:"\f70c"}.bi-box2::before{content:"\f70d"}.bi-braces-asterisk::before{content:"\f70e"}.bi-calendar-heart-fill::before{content:"\f70f"}.bi-calendar-heart::before{content:"\f710"}.bi-calendar2-heart-fill::before{content:"\f711"}.bi-calendar2-heart::before{content:"\f712"}.bi-chat-heart-fill::before{content:"\f713"}.bi-chat-heart::before{content:"\f714"}.bi-chat-left-heart-fill::before{content:"\f715"}.bi-chat-left-heart::before{content:"\f716"}.bi-chat-right-heart-fill::before{content:"\f717"}.bi-chat-right-heart::before{content:"\f718"}.bi-chat-square-heart-fill::before{content:"\f719"}.bi-chat-square-heart::before{content:"\f71a"}.bi-clipboard-check-fill::before{content:"\f71b"}.bi-clipboard-data-fill::before{content:"\f71c"}.bi-clipboard-fill::before{content:"\f71d"}.bi-clipboard-heart-fill::before{content:"\f71e"}.bi-clipboard-heart::before{content:"\f71f"}.bi-clipboard-minus-fill::before{content:"\f720"}.bi-clipboard-plus-fill::before{content:"\f721"}.bi-clipboard-pulse::before{content:"\f722"}.bi-clipboard-x-fill::before{content:"\f723"}.bi-clipboard2-check-fill::before{content:"\f724"}.bi-clipboard2-check::before{content:"\f725"}.bi-clipboard2-data-fill::before{content:"\f726"}.bi-clipboard2-data::before{content:"\f727"}.bi-clipboard2-fill::before{content:"\f728"}.bi-clipboard2-heart-fill::before{content:"\f729"}.bi-clipboard2-heart::before{content:"\f72a"}.bi-clipboard2-minus-fill::before{content:"\f72b"}.bi-clipboard2-minus::before{content:"\f72c"}.bi-clipboard2-plus-fill::before{content:"\f72d"}.bi-clipboard2-plus::before{content:"\f72e"}.bi-clipboard2-pulse-fill::before{content:"\f72f"}.bi-clipboard2-pulse::before{content:"\f730"}.bi-clipboard2-x-fill::before{content:"\f731"}.bi-clipboard2-x::before{content:"\f732"}.bi-clipboard2::before{content:"\f733"}.bi-emoji-kiss-fill::before{content:"\f734"}.bi-emoji-kiss::before{content:"\f735"}.bi-envelope-heart-fill::before{content:"\f736"}.bi-envelope-heart::before{content:"\f737"}.bi-envelope-open-heart-fill::before{content:"\f738"}.bi-envelope-open-heart::before{content:"\f739"}.bi-envelope-paper-fill::before{content:"\f73a"}.bi-envelope-paper-heart-fill::before{content:"\f73b"}.bi-envelope-paper-heart::before{content:"\f73c"}.bi-envelope-paper::before{content:"\f73d"}.bi-filetype-aac::before{content:"\f73e"}.bi-filetype-ai::before{content:"\f73f"}.bi-filetype-bmp::before{content:"\f740"}.bi-filetype-cs::before{content:"\f741"}.bi-filetype-css::before{content:"\f742"}.bi-filetype-csv::before{content:"\f743"}.bi-filetype-doc::before{content:"\f744"}.bi-filetype-docx::before{content:"\f745"}.bi-filetype-exe::before{content:"\f746"}.bi-filetype-gif::before{content:"\f747"}.bi-filetype-heic::before{content:"\f748"}.bi-filetype-html::before{content:"\f749"}.bi-filetype-java::before{content:"\f74a"}.bi-filetype-jpg::before{content:"\f74b"}.bi-filetype-js::before{content:"\f74c"}.bi-filetype-jsx::before{content:"\f74d"}.bi-filetype-key::before{content:"\f74e"}.bi-filetype-m4p::before{content:"\f74f"}.bi-filetype-md::before{content:"\f750"}.bi-filetype-mdx::before{content:"\f751"}.bi-filetype-mov::before{content:"\f752"}.bi-filetype-mp3::before{content:"\f753"}.bi-filetype-mp4::before{content:"\f754"}.bi-filetype-otf::before{content:"\f755"}.bi-filetype-pdf::before{content:"\f756"}.bi-filetype-php::before{content:"\f757"}.bi-filetype-png::before{content:"\f758"}.bi-filetype-ppt::before{content:"\f75a"}.bi-filetype-psd::before{content:"\f75b"}.bi-filetype-py::before{content:"\f75c"}.bi-filetype-raw::before{content:"\f75d"}.bi-filetype-rb::before{content:"\f75e"}.bi-filetype-sass::before{content:"\f75f"}.bi-filetype-scss::before{content:"\f760"}.bi-filetype-sh::before{content:"\f761"}.bi-filetype-svg::before{content:"\f762"}.bi-filetype-tiff::before{content:"\f763"}.bi-filetype-tsx::before{content:"\f764"}.bi-filetype-ttf::before{content:"\f765"}.bi-filetype-txt::before{content:"\f766"}.bi-filetype-wav::before{content:"\f767"}.bi-filetype-woff::before{content:"\f768"}.bi-filetype-xls::before{content:"\f76a"}.bi-filetype-xml::before{content:"\f76b"}.bi-filetype-yml::before{content:"\f76c"}.bi-heart-arrow::before{content:"\f76d"}.bi-heart-pulse-fill::before{content:"\f76e"}.bi-heart-pulse::before{content:"\f76f"}.bi-heartbreak-fill::before{content:"\f770"}.bi-heartbreak::before{content:"\f771"}.bi-hearts::before{content:"\f772"}.bi-hospital-fill::before{content:"\f773"}.bi-hospital::before{content:"\f774"}.bi-house-heart-fill::before{content:"\f775"}.bi-house-heart::before{content:"\f776"}.bi-incognito::before{content:"\f777"}.bi-magnet-fill::before{content:"\f778"}.bi-magnet::before{content:"\f779"}.bi-person-heart::before{content:"\f77a"}.bi-person-hearts::before{content:"\f77b"}.bi-phone-flip::before{content:"\f77c"}.bi-plugin::before{content:"\f77d"}.bi-postage-fill::before{content:"\f77e"}.bi-postage-heart-fill::before{content:"\f77f"}.bi-postage-heart::before{content:"\f780"}.bi-postage::before{content:"\f781"}.bi-postcard-fill::before{content:"\f782"}.bi-postcard-heart-fill::before{content:"\f783"}.bi-postcard-heart::before{content:"\f784"}.bi-postcard::before{content:"\f785"}.bi-search-heart-fill::before{content:"\f786"}.bi-search-heart::before{content:"\f787"}.bi-sliders2-vertical::before{content:"\f788"}.bi-sliders2::before{content:"\f789"}.bi-trash3-fill::before{content:"\f78a"}.bi-trash3::before{content:"\f78b"}.bi-valentine::before{content:"\f78c"}.bi-valentine2::before{content:"\f78d"}.bi-wrench-adjustable-circle-fill::before{content:"\f78e"}.bi-wrench-adjustable-circle::before{content:"\f78f"}.bi-wrench-adjustable::before{content:"\f790"}.bi-filetype-json::before{content:"\f791"}.bi-filetype-pptx::before{content:"\f792"}.bi-filetype-xlsx::before{content:"\f793"}.bi-1-circle-fill::before{content:"\f796"}.bi-1-circle::before{content:"\f797"}.bi-1-square-fill::before{content:"\f798"}.bi-1-square::before{content:"\f799"}.bi-2-circle-fill::before{content:"\f79c"}.bi-2-circle::before{content:"\f79d"}.bi-2-square-fill::before{content:"\f79e"}.bi-2-square::before{content:"\f79f"}.bi-3-circle-fill::before{content:"\f7a2"}.bi-3-circle::before{content:"\f7a3"}.bi-3-square-fill::before{content:"\f7a4"}.bi-3-square::before{content:"\f7a5"}.bi-4-circle-fill::before{content:"\f7a8"}.bi-4-circle::before{content:"\f7a9"}.bi-4-square-fill::before{content:"\f7aa"}.bi-4-square::before{content:"\f7ab"}.bi-5-circle-fill::before{content:"\f7ae"}.bi-5-circle::before{content:"\f7af"}.bi-5-square-fill::before{content:"\f7b0"}.bi-5-square::before{content:"\f7b1"}.bi-6-circle-fill::before{content:"\f7b4"}.bi-6-circle::before{content:"\f7b5"}.bi-6-square-fill::before{content:"\f7b6"}.bi-6-square::before{content:"\f7b7"}.bi-7-circle-fill::before{content:"\f7ba"}.bi-7-circle::before{content:"\f7bb"}.bi-7-square-fill::before{content:"\f7bc"}.bi-7-square::before{content:"\f7bd"}.bi-8-circle-fill::before{content:"\f7c0"}.bi-8-circle::before{content:"\f7c1"}.bi-8-square-fill::before{content:"\f7c2"}.bi-8-square::before{content:"\f7c3"}.bi-9-circle-fill::before{content:"\f7c6"}.bi-9-circle::before{content:"\f7c7"}.bi-9-square-fill::before{content:"\f7c8"}.bi-9-square::before{content:"\f7c9"}.bi-airplane-engines-fill::before{content:"\f7ca"}.bi-airplane-engines::before{content:"\f7cb"}.bi-airplane-fill::before{content:"\f7cc"}.bi-airplane::before{content:"\f7cd"}.bi-alexa::before{content:"\f7ce"}.bi-alipay::before{content:"\f7cf"}.bi-android::before{content:"\f7d0"}.bi-android2::before{content:"\f7d1"}.bi-box-fill::before{content:"\f7d2"}.bi-box-seam-fill::before{content:"\f7d3"}.bi-browser-chrome::before{content:"\f7d4"}.bi-browser-edge::before{content:"\f7d5"}.bi-browser-firefox::before{content:"\f7d6"}.bi-browser-safari::before{content:"\f7d7"}.bi-c-circle-fill::before{content:"\f7da"}.bi-c-circle::before{content:"\f7db"}.bi-c-square-fill::before{content:"\f7dc"}.bi-c-square::before{content:"\f7dd"}.bi-capsule-pill::before{content:"\f7de"}.bi-capsule::before{content:"\f7df"}.bi-car-front-fill::before{content:"\f7e0"}.bi-car-front::before{content:"\f7e1"}.bi-cassette-fill::before{content:"\f7e2"}.bi-cassette::before{content:"\f7e3"}.bi-cc-circle-fill::before{content:"\f7e6"}.bi-cc-circle::before{content:"\f7e7"}.bi-cc-square-fill::before{content:"\f7e8"}.bi-cc-square::before{content:"\f7e9"}.bi-cup-hot-fill::before{content:"\f7ea"}.bi-cup-hot::before{content:"\f7eb"}.bi-currency-rupee::before{content:"\f7ec"}.bi-dropbox::before{content:"\f7ed"}.bi-escape::before{content:"\f7ee"}.bi-fast-forward-btn-fill::before{content:"\f7ef"}.bi-fast-forward-btn::before{content:"\f7f0"}.bi-fast-forward-circle-fill::before{content:"\f7f1"}.bi-fast-forward-circle::before{content:"\f7f2"}.bi-fast-forward-fill::before{content:"\f7f3"}.bi-fast-forward::before{content:"\f7f4"}.bi-filetype-sql::before{content:"\f7f5"}.bi-fire::before{content:"\f7f6"}.bi-google-play::before{content:"\f7f7"}.bi-h-circle-fill::before{content:"\f7fa"}.bi-h-circle::before{content:"\f7fb"}.bi-h-square-fill::before{content:"\f7fc"}.bi-h-square::before{content:"\f7fd"}.bi-indent::before{content:"\f7fe"}.bi-lungs-fill::before{content:"\f7ff"}.bi-lungs::before{content:"\f800"}.bi-microsoft-teams::before{content:"\f801"}.bi-p-circle-fill::before{content:"\f804"}.bi-p-circle::before{content:"\f805"}.bi-p-square-fill::before{content:"\f806"}.bi-p-square::before{content:"\f807"}.bi-pass-fill::before{content:"\f808"}.bi-pass::before{content:"\f809"}.bi-prescription::before{content:"\f80a"}.bi-prescription2::before{content:"\f80b"}.bi-r-circle-fill::before{content:"\f80e"}.bi-r-circle::before{content:"\f80f"}.bi-r-square-fill::before{content:"\f810"}.bi-r-square::before{content:"\f811"}.bi-repeat-1::before{content:"\f812"}.bi-repeat::before{content:"\f813"}.bi-rewind-btn-fill::before{content:"\f814"}.bi-rewind-btn::before{content:"\f815"}.bi-rewind-circle-fill::before{content:"\f816"}.bi-rewind-circle::before{content:"\f817"}.bi-rewind-fill::before{content:"\f818"}.bi-rewind::before{content:"\f819"}.bi-train-freight-front-fill::before{content:"\f81a"}.bi-train-freight-front::before{content:"\f81b"}.bi-train-front-fill::before{content:"\f81c"}.bi-train-front::before{content:"\f81d"}.bi-train-lightrail-front-fill::before{content:"\f81e"}.bi-train-lightrail-front::before{content:"\f81f"}.bi-truck-front-fill::before{content:"\f820"}.bi-truck-front::before{content:"\f821"}.bi-ubuntu::before{content:"\f822"}.bi-unindent::before{content:"\f823"}.bi-unity::before{content:"\f824"}.bi-universal-access-circle::before{content:"\f825"}.bi-universal-access::before{content:"\f826"}.bi-virus::before{content:"\f827"}.bi-virus2::before{content:"\f828"}.bi-wechat::before{content:"\f829"}.bi-yelp::before{content:"\f82a"}.bi-sign-stop-fill::before{content:"\f82b"}.bi-sign-stop-lights-fill::before{content:"\f82c"}.bi-sign-stop-lights::before{content:"\f82d"}.bi-sign-stop::before{content:"\f82e"}.bi-sign-turn-left-fill::before{content:"\f82f"}.bi-sign-turn-left::before{content:"\f830"}.bi-sign-turn-right-fill::before{content:"\f831"}.bi-sign-turn-right::before{content:"\f832"}.bi-sign-turn-slight-left-fill::before{content:"\f833"}.bi-sign-turn-slight-left::before{content:"\f834"}.bi-sign-turn-slight-right-fill::before{content:"\f835"}.bi-sign-turn-slight-right::before{content:"\f836"}.bi-sign-yield-fill::before{content:"\f837"}.bi-sign-yield::before{content:"\f838"}.bi-ev-station-fill::before{content:"\f839"}.bi-ev-station::before{content:"\f83a"}.bi-fuel-pump-diesel-fill::before{content:"\f83b"}.bi-fuel-pump-diesel::before{content:"\f83c"}.bi-fuel-pump-fill::before{content:"\f83d"}.bi-fuel-pump::before{content:"\f83e"}.bi-0-circle-fill::before{content:"\f83f"}.bi-0-circle::before{content:"\f840"}.bi-0-square-fill::before{content:"\f841"}.bi-0-square::before{content:"\f842"}.bi-rocket-fill::before{content:"\f843"}.bi-rocket-takeoff-fill::before{content:"\f844"}.bi-rocket-takeoff::before{content:"\f845"}.bi-rocket::before{content:"\f846"}.bi-stripe::before{content:"\f847"}.bi-subscript::before{content:"\f848"}.bi-superscript::before{content:"\f849"}.bi-trello::before{content:"\f84a"}.bi-envelope-at-fill::before{content:"\f84b"}.bi-envelope-at::before{content:"\f84c"}.bi-regex::before{content:"\f84d"}.bi-text-wrap::before{content:"\f84e"}.bi-sign-dead-end-fill::before{content:"\f84f"}.bi-sign-dead-end::before{content:"\f850"}.bi-sign-do-not-enter-fill::before{content:"\f851"}.bi-sign-do-not-enter::before{content:"\f852"}.bi-sign-intersection-fill::before{content:"\f853"}.bi-sign-intersection-side-fill::before{content:"\f854"}.bi-sign-intersection-side::before{content:"\f855"}.bi-sign-intersection-t-fill::before{content:"\f856"}.bi-sign-intersection-t::before{content:"\f857"}.bi-sign-intersection-y-fill::before{content:"\f858"}.bi-sign-intersection-y::before{content:"\f859"}.bi-sign-intersection::before{content:"\f85a"}.bi-sign-merge-left-fill::before{content:"\f85b"}.bi-sign-merge-left::before{content:"\f85c"}.bi-sign-merge-right-fill::before{content:"\f85d"}.bi-sign-merge-right::before{content:"\f85e"}.bi-sign-no-left-turn-fill::before{content:"\f85f"}.bi-sign-no-left-turn::before{content:"\f860"}.bi-sign-no-parking-fill::before{content:"\f861"}.bi-sign-no-parking::before{content:"\f862"}.bi-sign-no-right-turn-fill::before{content:"\f863"}.bi-sign-no-right-turn::before{content:"\f864"}.bi-sign-railroad-fill::before{content:"\f865"}.bi-sign-railroad::before{content:"\f866"}.bi-building-add::before{content:"\f867"}.bi-building-check::before{content:"\f868"}.bi-building-dash::before{content:"\f869"}.bi-building-down::before{content:"\f86a"}.bi-building-exclamation::before{content:"\f86b"}.bi-building-fill-add::before{content:"\f86c"}.bi-building-fill-check::before{content:"\f86d"}.bi-building-fill-dash::before{content:"\f86e"}.bi-building-fill-down::before{content:"\f86f"}.bi-building-fill-exclamation::before{content:"\f870"}.bi-building-fill-gear::before{content:"\f871"}.bi-building-fill-lock::before{content:"\f872"}.bi-building-fill-slash::before{content:"\f873"}.bi-building-fill-up::before{content:"\f874"}.bi-building-fill-x::before{content:"\f875"}.bi-building-fill::before{content:"\f876"}.bi-building-gear::before{content:"\f877"}.bi-building-lock::before{content:"\f878"}.bi-building-slash::before{content:"\f879"}.bi-building-up::before{content:"\f87a"}.bi-building-x::before{content:"\f87b"}.bi-buildings-fill::before{content:"\f87c"}.bi-buildings::before{content:"\f87d"}.bi-bus-front-fill::before{content:"\f87e"}.bi-bus-front::before{content:"\f87f"}.bi-ev-front-fill::before{content:"\f880"}.bi-ev-front::before{content:"\f881"}.bi-globe-americas::before{content:"\f882"}.bi-globe-asia-australia::before{content:"\f883"}.bi-globe-central-south-asia::before{content:"\f884"}.bi-globe-europe-africa::before{content:"\f885"}.bi-house-add-fill::before{content:"\f886"}.bi-house-add::before{content:"\f887"}.bi-house-check-fill::before{content:"\f888"}.bi-house-check::before{content:"\f889"}.bi-house-dash-fill::before{content:"\f88a"}.bi-house-dash::before{content:"\f88b"}.bi-house-down-fill::before{content:"\f88c"}.bi-house-down::before{content:"\f88d"}.bi-house-exclamation-fill::before{content:"\f88e"}.bi-house-exclamation::before{content:"\f88f"}.bi-house-gear-fill::before{content:"\f890"}.bi-house-gear::before{content:"\f891"}.bi-house-lock-fill::before{content:"\f892"}.bi-house-lock::before{content:"\f893"}.bi-house-slash-fill::before{content:"\f894"}.bi-house-slash::before{content:"\f895"}.bi-house-up-fill::before{content:"\f896"}.bi-house-up::before{content:"\f897"}.bi-house-x-fill::before{content:"\f898"}.bi-house-x::before{content:"\f899"}.bi-person-add::before{content:"\f89a"}.bi-person-down::before{content:"\f89b"}.bi-person-exclamation::before{content:"\f89c"}.bi-person-fill-add::before{content:"\f89d"}.bi-person-fill-check::before{content:"\f89e"}.bi-person-fill-dash::before{content:"\f89f"}.bi-person-fill-down::before{content:"\f8a0"}.bi-person-fill-exclamation::before{content:"\f8a1"}.bi-person-fill-gear::before{content:"\f8a2"}.bi-person-fill-lock::before{content:"\f8a3"}.bi-person-fill-slash::before{content:"\f8a4"}.bi-person-fill-up::before{content:"\f8a5"}.bi-person-fill-x::before{content:"\f8a6"}.bi-person-gear::before{content:"\f8a7"}.bi-person-lock::before{content:"\f8a8"}.bi-person-slash::before{content:"\f8a9"}.bi-person-up::before{content:"\f8aa"}.bi-scooter::before{content:"\f8ab"}.bi-taxi-front-fill::before{content:"\f8ac"}.bi-taxi-front::before{content:"\f8ad"}.bi-amd::before{content:"\f8ae"}.bi-database-add::before{content:"\f8af"}.bi-database-check::before{content:"\f8b0"}.bi-database-dash::before{content:"\f8b1"}.bi-database-down::before{content:"\f8b2"}.bi-database-exclamation::before{content:"\f8b3"}.bi-database-fill-add::before{content:"\f8b4"}.bi-database-fill-check::before{content:"\f8b5"}.bi-database-fill-dash::before{content:"\f8b6"}.bi-database-fill-down::before{content:"\f8b7"}.bi-database-fill-exclamation::before{content:"\f8b8"}.bi-database-fill-gear::before{content:"\f8b9"}.bi-database-fill-lock::before{content:"\f8ba"}.bi-database-fill-slash::before{content:"\f8bb"}.bi-database-fill-up::before{content:"\f8bc"}.bi-database-fill-x::before{content:"\f8bd"}.bi-database-fill::before{content:"\f8be"}.bi-database-gear::before{content:"\f8bf"}.bi-database-lock::before{content:"\f8c0"}.bi-database-slash::before{content:"\f8c1"}.bi-database-up::before{content:"\f8c2"}.bi-database-x::before{content:"\f8c3"}.bi-database::before{content:"\f8c4"}.bi-houses-fill::before{content:"\f8c5"}.bi-houses::before{content:"\f8c6"}.bi-nvidia::before{content:"\f8c7"}.bi-person-vcard-fill::before{content:"\f8c8"}.bi-person-vcard::before{content:"\f8c9"}.bi-sina-weibo::before{content:"\f8ca"}.bi-tencent-qq::before{content:"\f8cb"}.bi-wikipedia::before{content:"\f8cc"}.bi-alphabet-uppercase::before{content:"\f2a5"}.bi-alphabet::before{content:"\f68a"}.bi-amazon::before{content:"\f68d"}.bi-arrows-collapse-vertical::before{content:"\f690"}.bi-arrows-expand-vertical::before{content:"\f695"}.bi-arrows-vertical::before{content:"\f698"}.bi-arrows::before{content:"\f6a2"}.bi-ban-fill::before{content:"\f6a3"}.bi-ban::before{content:"\f6b6"}.bi-bing::before{content:"\f6c2"}.bi-cake::before{content:"\f6e0"}.bi-cake2::before{content:"\f6ed"}.bi-cookie::before{content:"\f6ee"}.bi-copy::before{content:"\f759"}.bi-crosshair::before{content:"\f769"}.bi-crosshair2::before{content:"\f794"}.bi-emoji-astonished-fill::before{content:"\f795"}.bi-emoji-astonished::before{content:"\f79a"}.bi-emoji-grimace-fill::before{content:"\f79b"}.bi-emoji-grimace::before{content:"\f7a0"}.bi-emoji-grin-fill::before{content:"\f7a1"}.bi-emoji-grin::before{content:"\f7a6"}.bi-emoji-surprise-fill::before{content:"\f7a7"}.bi-emoji-surprise::before{content:"\f7ac"}.bi-emoji-tear-fill::before{content:"\f7ad"}.bi-emoji-tear::before{content:"\f7b2"}.bi-envelope-arrow-down-fill::before{content:"\f7b3"}.bi-envelope-arrow-down::before{content:"\f7b8"}.bi-envelope-arrow-up-fill::before{content:"\f7b9"}.bi-envelope-arrow-up::before{content:"\f7be"}.bi-feather::before{content:"\f7bf"}.bi-feather2::before{content:"\f7c4"}.bi-floppy-fill::before{content:"\f7c5"}.bi-floppy::before{content:"\f7d8"}.bi-floppy2-fill::before{content:"\f7d9"}.bi-floppy2::before{content:"\f7e4"}.bi-gitlab::before{content:"\f7e5"}.bi-highlighter::before{content:"\f7f8"}.bi-marker-tip::before{content:"\f802"}.bi-nvme-fill::before{content:"\f803"}.bi-nvme::before{content:"\f80c"}.bi-opencollective::before{content:"\f80d"}.bi-pci-card-network::before{content:"\f8cd"}.bi-pci-card-sound::before{content:"\f8ce"}.bi-radar::before{content:"\f8cf"}.bi-send-arrow-down-fill::before{content:"\f8d0"}.bi-send-arrow-down::before{content:"\f8d1"}.bi-send-arrow-up-fill::before{content:"\f8d2"}.bi-send-arrow-up::before{content:"\f8d3"}.bi-sim-slash-fill::before{content:"\f8d4"}.bi-sim-slash::before{content:"\f8d5"}.bi-sourceforge::before{content:"\f8d6"}.bi-substack::before{content:"\f8d7"}.bi-threads-fill::before{content:"\f8d8"}.bi-threads::before{content:"\f8d9"}.bi-transparency::before{content:"\f8da"}.bi-twitter-x::before{content:"\f8db"}.bi-type-h4::before{content:"\f8dc"}.bi-type-h5::before{content:"\f8dd"}.bi-type-h6::before{content:"\f8de"}.bi-backpack-fill::before{content:"\f8df"}.bi-backpack::before{content:"\f8e0"}.bi-backpack2-fill::before{content:"\f8e1"}.bi-backpack2::before{content:"\f8e2"}.bi-backpack3-fill::before{content:"\f8e3"}.bi-backpack3::before{content:"\f8e4"}.bi-backpack4-fill::before{content:"\f8e5"}.bi-backpack4::before{content:"\f8e6"}.bi-brilliance::before{content:"\f8e7"}.bi-cake-fill::before{content:"\f8e8"}.bi-cake2-fill::before{content:"\f8e9"}.bi-duffle-fill::before{content:"\f8ea"}.bi-duffle::before{content:"\f8eb"}.bi-exposure::before{content:"\f8ec"}.bi-gender-neuter::before{content:"\f8ed"}.bi-highlights::before{content:"\f8ee"}.bi-luggage-fill::before{content:"\f8ef"}.bi-luggage::before{content:"\f8f0"}.bi-mailbox-flag::before{content:"\f8f1"}.bi-mailbox2-flag::before{content:"\f8f2"}.bi-noise-reduction::before{content:"\f8f3"}.bi-passport-fill::before{content:"\f8f4"}.bi-passport::before{content:"\f8f5"}.bi-person-arms-up::before{content:"\f8f6"}.bi-person-raised-hand::before{content:"\f8f7"}.bi-person-standing-dress::before{content:"\f8f8"}.bi-person-standing::before{content:"\f8f9"}.bi-person-walking::before{content:"\f8fa"}.bi-person-wheelchair::before{content:"\f8fb"}.bi-shadows::before{content:"\f8fc"}.bi-suitcase-fill::before{content:"\f8fd"}.bi-suitcase-lg-fill::before{content:"\f8fe"}.bi-suitcase-lg::before{content:"\f8ff"}.bi-suitcase::before{content:"\f900"}.bi-suitcase2-fill::before{content:"\f901"}.bi-suitcase2::before{content:"\f902"}.bi-vignette::before{content:"\f903"} \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/font/bootstrap-icons.scss b/vendor/twbs/bootstrap-icons/font/bootstrap-icons.scss
new file mode 100644
index 000000000..ea5c018f4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/font/bootstrap-icons.scss
@@ -0,0 +1,2090 @@
+/*!
+ * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/)
+ * Copyright 2019-2024 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE)
+ */
+
+$bootstrap-icons-font: "bootstrap-icons" !default;
+$bootstrap-icons-font-dir: "./fonts" !default;
+$bootstrap-icons-font-file: "#{$bootstrap-icons-font-dir}/#{$bootstrap-icons-font}" !default;
+$bootstrap-icons-font-hash: "24e3eb84d0bcaf83d77f904c78ac1f47" !default;
+$bootstrap-icons-font-src: url("#{$bootstrap-icons-font-file}.woff2?#{$bootstrap-icons-font-hash}") format("woff2"),
+ url("#{$bootstrap-icons-font-file}.woff?#{$bootstrap-icons-font-hash}") format("woff") !default;
+
+@font-face {
+ font-display: block;
+ font-family: $bootstrap-icons-font;
+ src: $bootstrap-icons-font-src;
+}
+
+.bi::before,
+[class^="bi-"]::before,
+[class*=" bi-"]::before {
+ display: inline-block;
+ font-family: $bootstrap-icons-font !important;
+ font-style: normal;
+ font-weight: normal !important;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ vertical-align: -.125em;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+$bootstrap-icons-map: (
+ "123": "\f67f",
+ "alarm-fill": "\f101",
+ "alarm": "\f102",
+ "align-bottom": "\f103",
+ "align-center": "\f104",
+ "align-end": "\f105",
+ "align-middle": "\f106",
+ "align-start": "\f107",
+ "align-top": "\f108",
+ "alt": "\f109",
+ "app-indicator": "\f10a",
+ "app": "\f10b",
+ "archive-fill": "\f10c",
+ "archive": "\f10d",
+ "arrow-90deg-down": "\f10e",
+ "arrow-90deg-left": "\f10f",
+ "arrow-90deg-right": "\f110",
+ "arrow-90deg-up": "\f111",
+ "arrow-bar-down": "\f112",
+ "arrow-bar-left": "\f113",
+ "arrow-bar-right": "\f114",
+ "arrow-bar-up": "\f115",
+ "arrow-clockwise": "\f116",
+ "arrow-counterclockwise": "\f117",
+ "arrow-down-circle-fill": "\f118",
+ "arrow-down-circle": "\f119",
+ "arrow-down-left-circle-fill": "\f11a",
+ "arrow-down-left-circle": "\f11b",
+ "arrow-down-left-square-fill": "\f11c",
+ "arrow-down-left-square": "\f11d",
+ "arrow-down-left": "\f11e",
+ "arrow-down-right-circle-fill": "\f11f",
+ "arrow-down-right-circle": "\f120",
+ "arrow-down-right-square-fill": "\f121",
+ "arrow-down-right-square": "\f122",
+ "arrow-down-right": "\f123",
+ "arrow-down-short": "\f124",
+ "arrow-down-square-fill": "\f125",
+ "arrow-down-square": "\f126",
+ "arrow-down-up": "\f127",
+ "arrow-down": "\f128",
+ "arrow-left-circle-fill": "\f129",
+ "arrow-left-circle": "\f12a",
+ "arrow-left-right": "\f12b",
+ "arrow-left-short": "\f12c",
+ "arrow-left-square-fill": "\f12d",
+ "arrow-left-square": "\f12e",
+ "arrow-left": "\f12f",
+ "arrow-repeat": "\f130",
+ "arrow-return-left": "\f131",
+ "arrow-return-right": "\f132",
+ "arrow-right-circle-fill": "\f133",
+ "arrow-right-circle": "\f134",
+ "arrow-right-short": "\f135",
+ "arrow-right-square-fill": "\f136",
+ "arrow-right-square": "\f137",
+ "arrow-right": "\f138",
+ "arrow-up-circle-fill": "\f139",
+ "arrow-up-circle": "\f13a",
+ "arrow-up-left-circle-fill": "\f13b",
+ "arrow-up-left-circle": "\f13c",
+ "arrow-up-left-square-fill": "\f13d",
+ "arrow-up-left-square": "\f13e",
+ "arrow-up-left": "\f13f",
+ "arrow-up-right-circle-fill": "\f140",
+ "arrow-up-right-circle": "\f141",
+ "arrow-up-right-square-fill": "\f142",
+ "arrow-up-right-square": "\f143",
+ "arrow-up-right": "\f144",
+ "arrow-up-short": "\f145",
+ "arrow-up-square-fill": "\f146",
+ "arrow-up-square": "\f147",
+ "arrow-up": "\f148",
+ "arrows-angle-contract": "\f149",
+ "arrows-angle-expand": "\f14a",
+ "arrows-collapse": "\f14b",
+ "arrows-expand": "\f14c",
+ "arrows-fullscreen": "\f14d",
+ "arrows-move": "\f14e",
+ "aspect-ratio-fill": "\f14f",
+ "aspect-ratio": "\f150",
+ "asterisk": "\f151",
+ "at": "\f152",
+ "award-fill": "\f153",
+ "award": "\f154",
+ "back": "\f155",
+ "backspace-fill": "\f156",
+ "backspace-reverse-fill": "\f157",
+ "backspace-reverse": "\f158",
+ "backspace": "\f159",
+ "badge-3d-fill": "\f15a",
+ "badge-3d": "\f15b",
+ "badge-4k-fill": "\f15c",
+ "badge-4k": "\f15d",
+ "badge-8k-fill": "\f15e",
+ "badge-8k": "\f15f",
+ "badge-ad-fill": "\f160",
+ "badge-ad": "\f161",
+ "badge-ar-fill": "\f162",
+ "badge-ar": "\f163",
+ "badge-cc-fill": "\f164",
+ "badge-cc": "\f165",
+ "badge-hd-fill": "\f166",
+ "badge-hd": "\f167",
+ "badge-tm-fill": "\f168",
+ "badge-tm": "\f169",
+ "badge-vo-fill": "\f16a",
+ "badge-vo": "\f16b",
+ "badge-vr-fill": "\f16c",
+ "badge-vr": "\f16d",
+ "badge-wc-fill": "\f16e",
+ "badge-wc": "\f16f",
+ "bag-check-fill": "\f170",
+ "bag-check": "\f171",
+ "bag-dash-fill": "\f172",
+ "bag-dash": "\f173",
+ "bag-fill": "\f174",
+ "bag-plus-fill": "\f175",
+ "bag-plus": "\f176",
+ "bag-x-fill": "\f177",
+ "bag-x": "\f178",
+ "bag": "\f179",
+ "bar-chart-fill": "\f17a",
+ "bar-chart-line-fill": "\f17b",
+ "bar-chart-line": "\f17c",
+ "bar-chart-steps": "\f17d",
+ "bar-chart": "\f17e",
+ "basket-fill": "\f17f",
+ "basket": "\f180",
+ "basket2-fill": "\f181",
+ "basket2": "\f182",
+ "basket3-fill": "\f183",
+ "basket3": "\f184",
+ "battery-charging": "\f185",
+ "battery-full": "\f186",
+ "battery-half": "\f187",
+ "battery": "\f188",
+ "bell-fill": "\f189",
+ "bell": "\f18a",
+ "bezier": "\f18b",
+ "bezier2": "\f18c",
+ "bicycle": "\f18d",
+ "binoculars-fill": "\f18e",
+ "binoculars": "\f18f",
+ "blockquote-left": "\f190",
+ "blockquote-right": "\f191",
+ "book-fill": "\f192",
+ "book-half": "\f193",
+ "book": "\f194",
+ "bookmark-check-fill": "\f195",
+ "bookmark-check": "\f196",
+ "bookmark-dash-fill": "\f197",
+ "bookmark-dash": "\f198",
+ "bookmark-fill": "\f199",
+ "bookmark-heart-fill": "\f19a",
+ "bookmark-heart": "\f19b",
+ "bookmark-plus-fill": "\f19c",
+ "bookmark-plus": "\f19d",
+ "bookmark-star-fill": "\f19e",
+ "bookmark-star": "\f19f",
+ "bookmark-x-fill": "\f1a0",
+ "bookmark-x": "\f1a1",
+ "bookmark": "\f1a2",
+ "bookmarks-fill": "\f1a3",
+ "bookmarks": "\f1a4",
+ "bookshelf": "\f1a5",
+ "bootstrap-fill": "\f1a6",
+ "bootstrap-reboot": "\f1a7",
+ "bootstrap": "\f1a8",
+ "border-all": "\f1a9",
+ "border-bottom": "\f1aa",
+ "border-center": "\f1ab",
+ "border-inner": "\f1ac",
+ "border-left": "\f1ad",
+ "border-middle": "\f1ae",
+ "border-outer": "\f1af",
+ "border-right": "\f1b0",
+ "border-style": "\f1b1",
+ "border-top": "\f1b2",
+ "border-width": "\f1b3",
+ "border": "\f1b4",
+ "bounding-box-circles": "\f1b5",
+ "bounding-box": "\f1b6",
+ "box-arrow-down-left": "\f1b7",
+ "box-arrow-down-right": "\f1b8",
+ "box-arrow-down": "\f1b9",
+ "box-arrow-in-down-left": "\f1ba",
+ "box-arrow-in-down-right": "\f1bb",
+ "box-arrow-in-down": "\f1bc",
+ "box-arrow-in-left": "\f1bd",
+ "box-arrow-in-right": "\f1be",
+ "box-arrow-in-up-left": "\f1bf",
+ "box-arrow-in-up-right": "\f1c0",
+ "box-arrow-in-up": "\f1c1",
+ "box-arrow-left": "\f1c2",
+ "box-arrow-right": "\f1c3",
+ "box-arrow-up-left": "\f1c4",
+ "box-arrow-up-right": "\f1c5",
+ "box-arrow-up": "\f1c6",
+ "box-seam": "\f1c7",
+ "box": "\f1c8",
+ "braces": "\f1c9",
+ "bricks": "\f1ca",
+ "briefcase-fill": "\f1cb",
+ "briefcase": "\f1cc",
+ "brightness-alt-high-fill": "\f1cd",
+ "brightness-alt-high": "\f1ce",
+ "brightness-alt-low-fill": "\f1cf",
+ "brightness-alt-low": "\f1d0",
+ "brightness-high-fill": "\f1d1",
+ "brightness-high": "\f1d2",
+ "brightness-low-fill": "\f1d3",
+ "brightness-low": "\f1d4",
+ "broadcast-pin": "\f1d5",
+ "broadcast": "\f1d6",
+ "brush-fill": "\f1d7",
+ "brush": "\f1d8",
+ "bucket-fill": "\f1d9",
+ "bucket": "\f1da",
+ "bug-fill": "\f1db",
+ "bug": "\f1dc",
+ "building": "\f1dd",
+ "bullseye": "\f1de",
+ "calculator-fill": "\f1df",
+ "calculator": "\f1e0",
+ "calendar-check-fill": "\f1e1",
+ "calendar-check": "\f1e2",
+ "calendar-date-fill": "\f1e3",
+ "calendar-date": "\f1e4",
+ "calendar-day-fill": "\f1e5",
+ "calendar-day": "\f1e6",
+ "calendar-event-fill": "\f1e7",
+ "calendar-event": "\f1e8",
+ "calendar-fill": "\f1e9",
+ "calendar-minus-fill": "\f1ea",
+ "calendar-minus": "\f1eb",
+ "calendar-month-fill": "\f1ec",
+ "calendar-month": "\f1ed",
+ "calendar-plus-fill": "\f1ee",
+ "calendar-plus": "\f1ef",
+ "calendar-range-fill": "\f1f0",
+ "calendar-range": "\f1f1",
+ "calendar-week-fill": "\f1f2",
+ "calendar-week": "\f1f3",
+ "calendar-x-fill": "\f1f4",
+ "calendar-x": "\f1f5",
+ "calendar": "\f1f6",
+ "calendar2-check-fill": "\f1f7",
+ "calendar2-check": "\f1f8",
+ "calendar2-date-fill": "\f1f9",
+ "calendar2-date": "\f1fa",
+ "calendar2-day-fill": "\f1fb",
+ "calendar2-day": "\f1fc",
+ "calendar2-event-fill": "\f1fd",
+ "calendar2-event": "\f1fe",
+ "calendar2-fill": "\f1ff",
+ "calendar2-minus-fill": "\f200",
+ "calendar2-minus": "\f201",
+ "calendar2-month-fill": "\f202",
+ "calendar2-month": "\f203",
+ "calendar2-plus-fill": "\f204",
+ "calendar2-plus": "\f205",
+ "calendar2-range-fill": "\f206",
+ "calendar2-range": "\f207",
+ "calendar2-week-fill": "\f208",
+ "calendar2-week": "\f209",
+ "calendar2-x-fill": "\f20a",
+ "calendar2-x": "\f20b",
+ "calendar2": "\f20c",
+ "calendar3-event-fill": "\f20d",
+ "calendar3-event": "\f20e",
+ "calendar3-fill": "\f20f",
+ "calendar3-range-fill": "\f210",
+ "calendar3-range": "\f211",
+ "calendar3-week-fill": "\f212",
+ "calendar3-week": "\f213",
+ "calendar3": "\f214",
+ "calendar4-event": "\f215",
+ "calendar4-range": "\f216",
+ "calendar4-week": "\f217",
+ "calendar4": "\f218",
+ "camera-fill": "\f219",
+ "camera-reels-fill": "\f21a",
+ "camera-reels": "\f21b",
+ "camera-video-fill": "\f21c",
+ "camera-video-off-fill": "\f21d",
+ "camera-video-off": "\f21e",
+ "camera-video": "\f21f",
+ "camera": "\f220",
+ "camera2": "\f221",
+ "capslock-fill": "\f222",
+ "capslock": "\f223",
+ "card-checklist": "\f224",
+ "card-heading": "\f225",
+ "card-image": "\f226",
+ "card-list": "\f227",
+ "card-text": "\f228",
+ "caret-down-fill": "\f229",
+ "caret-down-square-fill": "\f22a",
+ "caret-down-square": "\f22b",
+ "caret-down": "\f22c",
+ "caret-left-fill": "\f22d",
+ "caret-left-square-fill": "\f22e",
+ "caret-left-square": "\f22f",
+ "caret-left": "\f230",
+ "caret-right-fill": "\f231",
+ "caret-right-square-fill": "\f232",
+ "caret-right-square": "\f233",
+ "caret-right": "\f234",
+ "caret-up-fill": "\f235",
+ "caret-up-square-fill": "\f236",
+ "caret-up-square": "\f237",
+ "caret-up": "\f238",
+ "cart-check-fill": "\f239",
+ "cart-check": "\f23a",
+ "cart-dash-fill": "\f23b",
+ "cart-dash": "\f23c",
+ "cart-fill": "\f23d",
+ "cart-plus-fill": "\f23e",
+ "cart-plus": "\f23f",
+ "cart-x-fill": "\f240",
+ "cart-x": "\f241",
+ "cart": "\f242",
+ "cart2": "\f243",
+ "cart3": "\f244",
+ "cart4": "\f245",
+ "cash-stack": "\f246",
+ "cash": "\f247",
+ "cast": "\f248",
+ "chat-dots-fill": "\f249",
+ "chat-dots": "\f24a",
+ "chat-fill": "\f24b",
+ "chat-left-dots-fill": "\f24c",
+ "chat-left-dots": "\f24d",
+ "chat-left-fill": "\f24e",
+ "chat-left-quote-fill": "\f24f",
+ "chat-left-quote": "\f250",
+ "chat-left-text-fill": "\f251",
+ "chat-left-text": "\f252",
+ "chat-left": "\f253",
+ "chat-quote-fill": "\f254",
+ "chat-quote": "\f255",
+ "chat-right-dots-fill": "\f256",
+ "chat-right-dots": "\f257",
+ "chat-right-fill": "\f258",
+ "chat-right-quote-fill": "\f259",
+ "chat-right-quote": "\f25a",
+ "chat-right-text-fill": "\f25b",
+ "chat-right-text": "\f25c",
+ "chat-right": "\f25d",
+ "chat-square-dots-fill": "\f25e",
+ "chat-square-dots": "\f25f",
+ "chat-square-fill": "\f260",
+ "chat-square-quote-fill": "\f261",
+ "chat-square-quote": "\f262",
+ "chat-square-text-fill": "\f263",
+ "chat-square-text": "\f264",
+ "chat-square": "\f265",
+ "chat-text-fill": "\f266",
+ "chat-text": "\f267",
+ "chat": "\f268",
+ "check-all": "\f269",
+ "check-circle-fill": "\f26a",
+ "check-circle": "\f26b",
+ "check-square-fill": "\f26c",
+ "check-square": "\f26d",
+ "check": "\f26e",
+ "check2-all": "\f26f",
+ "check2-circle": "\f270",
+ "check2-square": "\f271",
+ "check2": "\f272",
+ "chevron-bar-contract": "\f273",
+ "chevron-bar-down": "\f274",
+ "chevron-bar-expand": "\f275",
+ "chevron-bar-left": "\f276",
+ "chevron-bar-right": "\f277",
+ "chevron-bar-up": "\f278",
+ "chevron-compact-down": "\f279",
+ "chevron-compact-left": "\f27a",
+ "chevron-compact-right": "\f27b",
+ "chevron-compact-up": "\f27c",
+ "chevron-contract": "\f27d",
+ "chevron-double-down": "\f27e",
+ "chevron-double-left": "\f27f",
+ "chevron-double-right": "\f280",
+ "chevron-double-up": "\f281",
+ "chevron-down": "\f282",
+ "chevron-expand": "\f283",
+ "chevron-left": "\f284",
+ "chevron-right": "\f285",
+ "chevron-up": "\f286",
+ "circle-fill": "\f287",
+ "circle-half": "\f288",
+ "circle-square": "\f289",
+ "circle": "\f28a",
+ "clipboard-check": "\f28b",
+ "clipboard-data": "\f28c",
+ "clipboard-minus": "\f28d",
+ "clipboard-plus": "\f28e",
+ "clipboard-x": "\f28f",
+ "clipboard": "\f290",
+ "clock-fill": "\f291",
+ "clock-history": "\f292",
+ "clock": "\f293",
+ "cloud-arrow-down-fill": "\f294",
+ "cloud-arrow-down": "\f295",
+ "cloud-arrow-up-fill": "\f296",
+ "cloud-arrow-up": "\f297",
+ "cloud-check-fill": "\f298",
+ "cloud-check": "\f299",
+ "cloud-download-fill": "\f29a",
+ "cloud-download": "\f29b",
+ "cloud-drizzle-fill": "\f29c",
+ "cloud-drizzle": "\f29d",
+ "cloud-fill": "\f29e",
+ "cloud-fog-fill": "\f29f",
+ "cloud-fog": "\f2a0",
+ "cloud-fog2-fill": "\f2a1",
+ "cloud-fog2": "\f2a2",
+ "cloud-hail-fill": "\f2a3",
+ "cloud-hail": "\f2a4",
+ "cloud-haze-fill": "\f2a6",
+ "cloud-haze": "\f2a7",
+ "cloud-haze2-fill": "\f2a8",
+ "cloud-lightning-fill": "\f2a9",
+ "cloud-lightning-rain-fill": "\f2aa",
+ "cloud-lightning-rain": "\f2ab",
+ "cloud-lightning": "\f2ac",
+ "cloud-minus-fill": "\f2ad",
+ "cloud-minus": "\f2ae",
+ "cloud-moon-fill": "\f2af",
+ "cloud-moon": "\f2b0",
+ "cloud-plus-fill": "\f2b1",
+ "cloud-plus": "\f2b2",
+ "cloud-rain-fill": "\f2b3",
+ "cloud-rain-heavy-fill": "\f2b4",
+ "cloud-rain-heavy": "\f2b5",
+ "cloud-rain": "\f2b6",
+ "cloud-slash-fill": "\f2b7",
+ "cloud-slash": "\f2b8",
+ "cloud-sleet-fill": "\f2b9",
+ "cloud-sleet": "\f2ba",
+ "cloud-snow-fill": "\f2bb",
+ "cloud-snow": "\f2bc",
+ "cloud-sun-fill": "\f2bd",
+ "cloud-sun": "\f2be",
+ "cloud-upload-fill": "\f2bf",
+ "cloud-upload": "\f2c0",
+ "cloud": "\f2c1",
+ "clouds-fill": "\f2c2",
+ "clouds": "\f2c3",
+ "cloudy-fill": "\f2c4",
+ "cloudy": "\f2c5",
+ "code-slash": "\f2c6",
+ "code-square": "\f2c7",
+ "code": "\f2c8",
+ "collection-fill": "\f2c9",
+ "collection-play-fill": "\f2ca",
+ "collection-play": "\f2cb",
+ "collection": "\f2cc",
+ "columns-gap": "\f2cd",
+ "columns": "\f2ce",
+ "command": "\f2cf",
+ "compass-fill": "\f2d0",
+ "compass": "\f2d1",
+ "cone-striped": "\f2d2",
+ "cone": "\f2d3",
+ "controller": "\f2d4",
+ "cpu-fill": "\f2d5",
+ "cpu": "\f2d6",
+ "credit-card-2-back-fill": "\f2d7",
+ "credit-card-2-back": "\f2d8",
+ "credit-card-2-front-fill": "\f2d9",
+ "credit-card-2-front": "\f2da",
+ "credit-card-fill": "\f2db",
+ "credit-card": "\f2dc",
+ "crop": "\f2dd",
+ "cup-fill": "\f2de",
+ "cup-straw": "\f2df",
+ "cup": "\f2e0",
+ "cursor-fill": "\f2e1",
+ "cursor-text": "\f2e2",
+ "cursor": "\f2e3",
+ "dash-circle-dotted": "\f2e4",
+ "dash-circle-fill": "\f2e5",
+ "dash-circle": "\f2e6",
+ "dash-square-dotted": "\f2e7",
+ "dash-square-fill": "\f2e8",
+ "dash-square": "\f2e9",
+ "dash": "\f2ea",
+ "diagram-2-fill": "\f2eb",
+ "diagram-2": "\f2ec",
+ "diagram-3-fill": "\f2ed",
+ "diagram-3": "\f2ee",
+ "diamond-fill": "\f2ef",
+ "diamond-half": "\f2f0",
+ "diamond": "\f2f1",
+ "dice-1-fill": "\f2f2",
+ "dice-1": "\f2f3",
+ "dice-2-fill": "\f2f4",
+ "dice-2": "\f2f5",
+ "dice-3-fill": "\f2f6",
+ "dice-3": "\f2f7",
+ "dice-4-fill": "\f2f8",
+ "dice-4": "\f2f9",
+ "dice-5-fill": "\f2fa",
+ "dice-5": "\f2fb",
+ "dice-6-fill": "\f2fc",
+ "dice-6": "\f2fd",
+ "disc-fill": "\f2fe",
+ "disc": "\f2ff",
+ "discord": "\f300",
+ "display-fill": "\f301",
+ "display": "\f302",
+ "distribute-horizontal": "\f303",
+ "distribute-vertical": "\f304",
+ "door-closed-fill": "\f305",
+ "door-closed": "\f306",
+ "door-open-fill": "\f307",
+ "door-open": "\f308",
+ "dot": "\f309",
+ "download": "\f30a",
+ "droplet-fill": "\f30b",
+ "droplet-half": "\f30c",
+ "droplet": "\f30d",
+ "earbuds": "\f30e",
+ "easel-fill": "\f30f",
+ "easel": "\f310",
+ "egg-fill": "\f311",
+ "egg-fried": "\f312",
+ "egg": "\f313",
+ "eject-fill": "\f314",
+ "eject": "\f315",
+ "emoji-angry-fill": "\f316",
+ "emoji-angry": "\f317",
+ "emoji-dizzy-fill": "\f318",
+ "emoji-dizzy": "\f319",
+ "emoji-expressionless-fill": "\f31a",
+ "emoji-expressionless": "\f31b",
+ "emoji-frown-fill": "\f31c",
+ "emoji-frown": "\f31d",
+ "emoji-heart-eyes-fill": "\f31e",
+ "emoji-heart-eyes": "\f31f",
+ "emoji-laughing-fill": "\f320",
+ "emoji-laughing": "\f321",
+ "emoji-neutral-fill": "\f322",
+ "emoji-neutral": "\f323",
+ "emoji-smile-fill": "\f324",
+ "emoji-smile-upside-down-fill": "\f325",
+ "emoji-smile-upside-down": "\f326",
+ "emoji-smile": "\f327",
+ "emoji-sunglasses-fill": "\f328",
+ "emoji-sunglasses": "\f329",
+ "emoji-wink-fill": "\f32a",
+ "emoji-wink": "\f32b",
+ "envelope-fill": "\f32c",
+ "envelope-open-fill": "\f32d",
+ "envelope-open": "\f32e",
+ "envelope": "\f32f",
+ "eraser-fill": "\f330",
+ "eraser": "\f331",
+ "exclamation-circle-fill": "\f332",
+ "exclamation-circle": "\f333",
+ "exclamation-diamond-fill": "\f334",
+ "exclamation-diamond": "\f335",
+ "exclamation-octagon-fill": "\f336",
+ "exclamation-octagon": "\f337",
+ "exclamation-square-fill": "\f338",
+ "exclamation-square": "\f339",
+ "exclamation-triangle-fill": "\f33a",
+ "exclamation-triangle": "\f33b",
+ "exclamation": "\f33c",
+ "exclude": "\f33d",
+ "eye-fill": "\f33e",
+ "eye-slash-fill": "\f33f",
+ "eye-slash": "\f340",
+ "eye": "\f341",
+ "eyedropper": "\f342",
+ "eyeglasses": "\f343",
+ "facebook": "\f344",
+ "file-arrow-down-fill": "\f345",
+ "file-arrow-down": "\f346",
+ "file-arrow-up-fill": "\f347",
+ "file-arrow-up": "\f348",
+ "file-bar-graph-fill": "\f349",
+ "file-bar-graph": "\f34a",
+ "file-binary-fill": "\f34b",
+ "file-binary": "\f34c",
+ "file-break-fill": "\f34d",
+ "file-break": "\f34e",
+ "file-check-fill": "\f34f",
+ "file-check": "\f350",
+ "file-code-fill": "\f351",
+ "file-code": "\f352",
+ "file-diff-fill": "\f353",
+ "file-diff": "\f354",
+ "file-earmark-arrow-down-fill": "\f355",
+ "file-earmark-arrow-down": "\f356",
+ "file-earmark-arrow-up-fill": "\f357",
+ "file-earmark-arrow-up": "\f358",
+ "file-earmark-bar-graph-fill": "\f359",
+ "file-earmark-bar-graph": "\f35a",
+ "file-earmark-binary-fill": "\f35b",
+ "file-earmark-binary": "\f35c",
+ "file-earmark-break-fill": "\f35d",
+ "file-earmark-break": "\f35e",
+ "file-earmark-check-fill": "\f35f",
+ "file-earmark-check": "\f360",
+ "file-earmark-code-fill": "\f361",
+ "file-earmark-code": "\f362",
+ "file-earmark-diff-fill": "\f363",
+ "file-earmark-diff": "\f364",
+ "file-earmark-easel-fill": "\f365",
+ "file-earmark-easel": "\f366",
+ "file-earmark-excel-fill": "\f367",
+ "file-earmark-excel": "\f368",
+ "file-earmark-fill": "\f369",
+ "file-earmark-font-fill": "\f36a",
+ "file-earmark-font": "\f36b",
+ "file-earmark-image-fill": "\f36c",
+ "file-earmark-image": "\f36d",
+ "file-earmark-lock-fill": "\f36e",
+ "file-earmark-lock": "\f36f",
+ "file-earmark-lock2-fill": "\f370",
+ "file-earmark-lock2": "\f371",
+ "file-earmark-medical-fill": "\f372",
+ "file-earmark-medical": "\f373",
+ "file-earmark-minus-fill": "\f374",
+ "file-earmark-minus": "\f375",
+ "file-earmark-music-fill": "\f376",
+ "file-earmark-music": "\f377",
+ "file-earmark-person-fill": "\f378",
+ "file-earmark-person": "\f379",
+ "file-earmark-play-fill": "\f37a",
+ "file-earmark-play": "\f37b",
+ "file-earmark-plus-fill": "\f37c",
+ "file-earmark-plus": "\f37d",
+ "file-earmark-post-fill": "\f37e",
+ "file-earmark-post": "\f37f",
+ "file-earmark-ppt-fill": "\f380",
+ "file-earmark-ppt": "\f381",
+ "file-earmark-richtext-fill": "\f382",
+ "file-earmark-richtext": "\f383",
+ "file-earmark-ruled-fill": "\f384",
+ "file-earmark-ruled": "\f385",
+ "file-earmark-slides-fill": "\f386",
+ "file-earmark-slides": "\f387",
+ "file-earmark-spreadsheet-fill": "\f388",
+ "file-earmark-spreadsheet": "\f389",
+ "file-earmark-text-fill": "\f38a",
+ "file-earmark-text": "\f38b",
+ "file-earmark-word-fill": "\f38c",
+ "file-earmark-word": "\f38d",
+ "file-earmark-x-fill": "\f38e",
+ "file-earmark-x": "\f38f",
+ "file-earmark-zip-fill": "\f390",
+ "file-earmark-zip": "\f391",
+ "file-earmark": "\f392",
+ "file-easel-fill": "\f393",
+ "file-easel": "\f394",
+ "file-excel-fill": "\f395",
+ "file-excel": "\f396",
+ "file-fill": "\f397",
+ "file-font-fill": "\f398",
+ "file-font": "\f399",
+ "file-image-fill": "\f39a",
+ "file-image": "\f39b",
+ "file-lock-fill": "\f39c",
+ "file-lock": "\f39d",
+ "file-lock2-fill": "\f39e",
+ "file-lock2": "\f39f",
+ "file-medical-fill": "\f3a0",
+ "file-medical": "\f3a1",
+ "file-minus-fill": "\f3a2",
+ "file-minus": "\f3a3",
+ "file-music-fill": "\f3a4",
+ "file-music": "\f3a5",
+ "file-person-fill": "\f3a6",
+ "file-person": "\f3a7",
+ "file-play-fill": "\f3a8",
+ "file-play": "\f3a9",
+ "file-plus-fill": "\f3aa",
+ "file-plus": "\f3ab",
+ "file-post-fill": "\f3ac",
+ "file-post": "\f3ad",
+ "file-ppt-fill": "\f3ae",
+ "file-ppt": "\f3af",
+ "file-richtext-fill": "\f3b0",
+ "file-richtext": "\f3b1",
+ "file-ruled-fill": "\f3b2",
+ "file-ruled": "\f3b3",
+ "file-slides-fill": "\f3b4",
+ "file-slides": "\f3b5",
+ "file-spreadsheet-fill": "\f3b6",
+ "file-spreadsheet": "\f3b7",
+ "file-text-fill": "\f3b8",
+ "file-text": "\f3b9",
+ "file-word-fill": "\f3ba",
+ "file-word": "\f3bb",
+ "file-x-fill": "\f3bc",
+ "file-x": "\f3bd",
+ "file-zip-fill": "\f3be",
+ "file-zip": "\f3bf",
+ "file": "\f3c0",
+ "files-alt": "\f3c1",
+ "files": "\f3c2",
+ "film": "\f3c3",
+ "filter-circle-fill": "\f3c4",
+ "filter-circle": "\f3c5",
+ "filter-left": "\f3c6",
+ "filter-right": "\f3c7",
+ "filter-square-fill": "\f3c8",
+ "filter-square": "\f3c9",
+ "filter": "\f3ca",
+ "flag-fill": "\f3cb",
+ "flag": "\f3cc",
+ "flower1": "\f3cd",
+ "flower2": "\f3ce",
+ "flower3": "\f3cf",
+ "folder-check": "\f3d0",
+ "folder-fill": "\f3d1",
+ "folder-minus": "\f3d2",
+ "folder-plus": "\f3d3",
+ "folder-symlink-fill": "\f3d4",
+ "folder-symlink": "\f3d5",
+ "folder-x": "\f3d6",
+ "folder": "\f3d7",
+ "folder2-open": "\f3d8",
+ "folder2": "\f3d9",
+ "fonts": "\f3da",
+ "forward-fill": "\f3db",
+ "forward": "\f3dc",
+ "front": "\f3dd",
+ "fullscreen-exit": "\f3de",
+ "fullscreen": "\f3df",
+ "funnel-fill": "\f3e0",
+ "funnel": "\f3e1",
+ "gear-fill": "\f3e2",
+ "gear-wide-connected": "\f3e3",
+ "gear-wide": "\f3e4",
+ "gear": "\f3e5",
+ "gem": "\f3e6",
+ "geo-alt-fill": "\f3e7",
+ "geo-alt": "\f3e8",
+ "geo-fill": "\f3e9",
+ "geo": "\f3ea",
+ "gift-fill": "\f3eb",
+ "gift": "\f3ec",
+ "github": "\f3ed",
+ "globe": "\f3ee",
+ "globe2": "\f3ef",
+ "google": "\f3f0",
+ "graph-down": "\f3f1",
+ "graph-up": "\f3f2",
+ "grid-1x2-fill": "\f3f3",
+ "grid-1x2": "\f3f4",
+ "grid-3x2-gap-fill": "\f3f5",
+ "grid-3x2-gap": "\f3f6",
+ "grid-3x2": "\f3f7",
+ "grid-3x3-gap-fill": "\f3f8",
+ "grid-3x3-gap": "\f3f9",
+ "grid-3x3": "\f3fa",
+ "grid-fill": "\f3fb",
+ "grid": "\f3fc",
+ "grip-horizontal": "\f3fd",
+ "grip-vertical": "\f3fe",
+ "hammer": "\f3ff",
+ "hand-index-fill": "\f400",
+ "hand-index-thumb-fill": "\f401",
+ "hand-index-thumb": "\f402",
+ "hand-index": "\f403",
+ "hand-thumbs-down-fill": "\f404",
+ "hand-thumbs-down": "\f405",
+ "hand-thumbs-up-fill": "\f406",
+ "hand-thumbs-up": "\f407",
+ "handbag-fill": "\f408",
+ "handbag": "\f409",
+ "hash": "\f40a",
+ "hdd-fill": "\f40b",
+ "hdd-network-fill": "\f40c",
+ "hdd-network": "\f40d",
+ "hdd-rack-fill": "\f40e",
+ "hdd-rack": "\f40f",
+ "hdd-stack-fill": "\f410",
+ "hdd-stack": "\f411",
+ "hdd": "\f412",
+ "headphones": "\f413",
+ "headset": "\f414",
+ "heart-fill": "\f415",
+ "heart-half": "\f416",
+ "heart": "\f417",
+ "heptagon-fill": "\f418",
+ "heptagon-half": "\f419",
+ "heptagon": "\f41a",
+ "hexagon-fill": "\f41b",
+ "hexagon-half": "\f41c",
+ "hexagon": "\f41d",
+ "hourglass-bottom": "\f41e",
+ "hourglass-split": "\f41f",
+ "hourglass-top": "\f420",
+ "hourglass": "\f421",
+ "house-door-fill": "\f422",
+ "house-door": "\f423",
+ "house-fill": "\f424",
+ "house": "\f425",
+ "hr": "\f426",
+ "hurricane": "\f427",
+ "image-alt": "\f428",
+ "image-fill": "\f429",
+ "image": "\f42a",
+ "images": "\f42b",
+ "inbox-fill": "\f42c",
+ "inbox": "\f42d",
+ "inboxes-fill": "\f42e",
+ "inboxes": "\f42f",
+ "info-circle-fill": "\f430",
+ "info-circle": "\f431",
+ "info-square-fill": "\f432",
+ "info-square": "\f433",
+ "info": "\f434",
+ "input-cursor-text": "\f435",
+ "input-cursor": "\f436",
+ "instagram": "\f437",
+ "intersect": "\f438",
+ "journal-album": "\f439",
+ "journal-arrow-down": "\f43a",
+ "journal-arrow-up": "\f43b",
+ "journal-bookmark-fill": "\f43c",
+ "journal-bookmark": "\f43d",
+ "journal-check": "\f43e",
+ "journal-code": "\f43f",
+ "journal-medical": "\f440",
+ "journal-minus": "\f441",
+ "journal-plus": "\f442",
+ "journal-richtext": "\f443",
+ "journal-text": "\f444",
+ "journal-x": "\f445",
+ "journal": "\f446",
+ "journals": "\f447",
+ "joystick": "\f448",
+ "justify-left": "\f449",
+ "justify-right": "\f44a",
+ "justify": "\f44b",
+ "kanban-fill": "\f44c",
+ "kanban": "\f44d",
+ "key-fill": "\f44e",
+ "key": "\f44f",
+ "keyboard-fill": "\f450",
+ "keyboard": "\f451",
+ "ladder": "\f452",
+ "lamp-fill": "\f453",
+ "lamp": "\f454",
+ "laptop-fill": "\f455",
+ "laptop": "\f456",
+ "layer-backward": "\f457",
+ "layer-forward": "\f458",
+ "layers-fill": "\f459",
+ "layers-half": "\f45a",
+ "layers": "\f45b",
+ "layout-sidebar-inset-reverse": "\f45c",
+ "layout-sidebar-inset": "\f45d",
+ "layout-sidebar-reverse": "\f45e",
+ "layout-sidebar": "\f45f",
+ "layout-split": "\f460",
+ "layout-text-sidebar-reverse": "\f461",
+ "layout-text-sidebar": "\f462",
+ "layout-text-window-reverse": "\f463",
+ "layout-text-window": "\f464",
+ "layout-three-columns": "\f465",
+ "layout-wtf": "\f466",
+ "life-preserver": "\f467",
+ "lightbulb-fill": "\f468",
+ "lightbulb-off-fill": "\f469",
+ "lightbulb-off": "\f46a",
+ "lightbulb": "\f46b",
+ "lightning-charge-fill": "\f46c",
+ "lightning-charge": "\f46d",
+ "lightning-fill": "\f46e",
+ "lightning": "\f46f",
+ "link-45deg": "\f470",
+ "link": "\f471",
+ "linkedin": "\f472",
+ "list-check": "\f473",
+ "list-nested": "\f474",
+ "list-ol": "\f475",
+ "list-stars": "\f476",
+ "list-task": "\f477",
+ "list-ul": "\f478",
+ "list": "\f479",
+ "lock-fill": "\f47a",
+ "lock": "\f47b",
+ "mailbox": "\f47c",
+ "mailbox2": "\f47d",
+ "map-fill": "\f47e",
+ "map": "\f47f",
+ "markdown-fill": "\f480",
+ "markdown": "\f481",
+ "mask": "\f482",
+ "megaphone-fill": "\f483",
+ "megaphone": "\f484",
+ "menu-app-fill": "\f485",
+ "menu-app": "\f486",
+ "menu-button-fill": "\f487",
+ "menu-button-wide-fill": "\f488",
+ "menu-button-wide": "\f489",
+ "menu-button": "\f48a",
+ "menu-down": "\f48b",
+ "menu-up": "\f48c",
+ "mic-fill": "\f48d",
+ "mic-mute-fill": "\f48e",
+ "mic-mute": "\f48f",
+ "mic": "\f490",
+ "minecart-loaded": "\f491",
+ "minecart": "\f492",
+ "moisture": "\f493",
+ "moon-fill": "\f494",
+ "moon-stars-fill": "\f495",
+ "moon-stars": "\f496",
+ "moon": "\f497",
+ "mouse-fill": "\f498",
+ "mouse": "\f499",
+ "mouse2-fill": "\f49a",
+ "mouse2": "\f49b",
+ "mouse3-fill": "\f49c",
+ "mouse3": "\f49d",
+ "music-note-beamed": "\f49e",
+ "music-note-list": "\f49f",
+ "music-note": "\f4a0",
+ "music-player-fill": "\f4a1",
+ "music-player": "\f4a2",
+ "newspaper": "\f4a3",
+ "node-minus-fill": "\f4a4",
+ "node-minus": "\f4a5",
+ "node-plus-fill": "\f4a6",
+ "node-plus": "\f4a7",
+ "nut-fill": "\f4a8",
+ "nut": "\f4a9",
+ "octagon-fill": "\f4aa",
+ "octagon-half": "\f4ab",
+ "octagon": "\f4ac",
+ "option": "\f4ad",
+ "outlet": "\f4ae",
+ "paint-bucket": "\f4af",
+ "palette-fill": "\f4b0",
+ "palette": "\f4b1",
+ "palette2": "\f4b2",
+ "paperclip": "\f4b3",
+ "paragraph": "\f4b4",
+ "patch-check-fill": "\f4b5",
+ "patch-check": "\f4b6",
+ "patch-exclamation-fill": "\f4b7",
+ "patch-exclamation": "\f4b8",
+ "patch-minus-fill": "\f4b9",
+ "patch-minus": "\f4ba",
+ "patch-plus-fill": "\f4bb",
+ "patch-plus": "\f4bc",
+ "patch-question-fill": "\f4bd",
+ "patch-question": "\f4be",
+ "pause-btn-fill": "\f4bf",
+ "pause-btn": "\f4c0",
+ "pause-circle-fill": "\f4c1",
+ "pause-circle": "\f4c2",
+ "pause-fill": "\f4c3",
+ "pause": "\f4c4",
+ "peace-fill": "\f4c5",
+ "peace": "\f4c6",
+ "pen-fill": "\f4c7",
+ "pen": "\f4c8",
+ "pencil-fill": "\f4c9",
+ "pencil-square": "\f4ca",
+ "pencil": "\f4cb",
+ "pentagon-fill": "\f4cc",
+ "pentagon-half": "\f4cd",
+ "pentagon": "\f4ce",
+ "people-fill": "\f4cf",
+ "people": "\f4d0",
+ "percent": "\f4d1",
+ "person-badge-fill": "\f4d2",
+ "person-badge": "\f4d3",
+ "person-bounding-box": "\f4d4",
+ "person-check-fill": "\f4d5",
+ "person-check": "\f4d6",
+ "person-circle": "\f4d7",
+ "person-dash-fill": "\f4d8",
+ "person-dash": "\f4d9",
+ "person-fill": "\f4da",
+ "person-lines-fill": "\f4db",
+ "person-plus-fill": "\f4dc",
+ "person-plus": "\f4dd",
+ "person-square": "\f4de",
+ "person-x-fill": "\f4df",
+ "person-x": "\f4e0",
+ "person": "\f4e1",
+ "phone-fill": "\f4e2",
+ "phone-landscape-fill": "\f4e3",
+ "phone-landscape": "\f4e4",
+ "phone-vibrate-fill": "\f4e5",
+ "phone-vibrate": "\f4e6",
+ "phone": "\f4e7",
+ "pie-chart-fill": "\f4e8",
+ "pie-chart": "\f4e9",
+ "pin-angle-fill": "\f4ea",
+ "pin-angle": "\f4eb",
+ "pin-fill": "\f4ec",
+ "pin": "\f4ed",
+ "pip-fill": "\f4ee",
+ "pip": "\f4ef",
+ "play-btn-fill": "\f4f0",
+ "play-btn": "\f4f1",
+ "play-circle-fill": "\f4f2",
+ "play-circle": "\f4f3",
+ "play-fill": "\f4f4",
+ "play": "\f4f5",
+ "plug-fill": "\f4f6",
+ "plug": "\f4f7",
+ "plus-circle-dotted": "\f4f8",
+ "plus-circle-fill": "\f4f9",
+ "plus-circle": "\f4fa",
+ "plus-square-dotted": "\f4fb",
+ "plus-square-fill": "\f4fc",
+ "plus-square": "\f4fd",
+ "plus": "\f4fe",
+ "power": "\f4ff",
+ "printer-fill": "\f500",
+ "printer": "\f501",
+ "puzzle-fill": "\f502",
+ "puzzle": "\f503",
+ "question-circle-fill": "\f504",
+ "question-circle": "\f505",
+ "question-diamond-fill": "\f506",
+ "question-diamond": "\f507",
+ "question-octagon-fill": "\f508",
+ "question-octagon": "\f509",
+ "question-square-fill": "\f50a",
+ "question-square": "\f50b",
+ "question": "\f50c",
+ "rainbow": "\f50d",
+ "receipt-cutoff": "\f50e",
+ "receipt": "\f50f",
+ "reception-0": "\f510",
+ "reception-1": "\f511",
+ "reception-2": "\f512",
+ "reception-3": "\f513",
+ "reception-4": "\f514",
+ "record-btn-fill": "\f515",
+ "record-btn": "\f516",
+ "record-circle-fill": "\f517",
+ "record-circle": "\f518",
+ "record-fill": "\f519",
+ "record": "\f51a",
+ "record2-fill": "\f51b",
+ "record2": "\f51c",
+ "reply-all-fill": "\f51d",
+ "reply-all": "\f51e",
+ "reply-fill": "\f51f",
+ "reply": "\f520",
+ "rss-fill": "\f521",
+ "rss": "\f522",
+ "rulers": "\f523",
+ "save-fill": "\f524",
+ "save": "\f525",
+ "save2-fill": "\f526",
+ "save2": "\f527",
+ "scissors": "\f528",
+ "screwdriver": "\f529",
+ "search": "\f52a",
+ "segmented-nav": "\f52b",
+ "server": "\f52c",
+ "share-fill": "\f52d",
+ "share": "\f52e",
+ "shield-check": "\f52f",
+ "shield-exclamation": "\f530",
+ "shield-fill-check": "\f531",
+ "shield-fill-exclamation": "\f532",
+ "shield-fill-minus": "\f533",
+ "shield-fill-plus": "\f534",
+ "shield-fill-x": "\f535",
+ "shield-fill": "\f536",
+ "shield-lock-fill": "\f537",
+ "shield-lock": "\f538",
+ "shield-minus": "\f539",
+ "shield-plus": "\f53a",
+ "shield-shaded": "\f53b",
+ "shield-slash-fill": "\f53c",
+ "shield-slash": "\f53d",
+ "shield-x": "\f53e",
+ "shield": "\f53f",
+ "shift-fill": "\f540",
+ "shift": "\f541",
+ "shop-window": "\f542",
+ "shop": "\f543",
+ "shuffle": "\f544",
+ "signpost-2-fill": "\f545",
+ "signpost-2": "\f546",
+ "signpost-fill": "\f547",
+ "signpost-split-fill": "\f548",
+ "signpost-split": "\f549",
+ "signpost": "\f54a",
+ "sim-fill": "\f54b",
+ "sim": "\f54c",
+ "skip-backward-btn-fill": "\f54d",
+ "skip-backward-btn": "\f54e",
+ "skip-backward-circle-fill": "\f54f",
+ "skip-backward-circle": "\f550",
+ "skip-backward-fill": "\f551",
+ "skip-backward": "\f552",
+ "skip-end-btn-fill": "\f553",
+ "skip-end-btn": "\f554",
+ "skip-end-circle-fill": "\f555",
+ "skip-end-circle": "\f556",
+ "skip-end-fill": "\f557",
+ "skip-end": "\f558",
+ "skip-forward-btn-fill": "\f559",
+ "skip-forward-btn": "\f55a",
+ "skip-forward-circle-fill": "\f55b",
+ "skip-forward-circle": "\f55c",
+ "skip-forward-fill": "\f55d",
+ "skip-forward": "\f55e",
+ "skip-start-btn-fill": "\f55f",
+ "skip-start-btn": "\f560",
+ "skip-start-circle-fill": "\f561",
+ "skip-start-circle": "\f562",
+ "skip-start-fill": "\f563",
+ "skip-start": "\f564",
+ "slack": "\f565",
+ "slash-circle-fill": "\f566",
+ "slash-circle": "\f567",
+ "slash-square-fill": "\f568",
+ "slash-square": "\f569",
+ "slash": "\f56a",
+ "sliders": "\f56b",
+ "smartwatch": "\f56c",
+ "snow": "\f56d",
+ "snow2": "\f56e",
+ "snow3": "\f56f",
+ "sort-alpha-down-alt": "\f570",
+ "sort-alpha-down": "\f571",
+ "sort-alpha-up-alt": "\f572",
+ "sort-alpha-up": "\f573",
+ "sort-down-alt": "\f574",
+ "sort-down": "\f575",
+ "sort-numeric-down-alt": "\f576",
+ "sort-numeric-down": "\f577",
+ "sort-numeric-up-alt": "\f578",
+ "sort-numeric-up": "\f579",
+ "sort-up-alt": "\f57a",
+ "sort-up": "\f57b",
+ "soundwave": "\f57c",
+ "speaker-fill": "\f57d",
+ "speaker": "\f57e",
+ "speedometer": "\f57f",
+ "speedometer2": "\f580",
+ "spellcheck": "\f581",
+ "square-fill": "\f582",
+ "square-half": "\f583",
+ "square": "\f584",
+ "stack": "\f585",
+ "star-fill": "\f586",
+ "star-half": "\f587",
+ "star": "\f588",
+ "stars": "\f589",
+ "stickies-fill": "\f58a",
+ "stickies": "\f58b",
+ "sticky-fill": "\f58c",
+ "sticky": "\f58d",
+ "stop-btn-fill": "\f58e",
+ "stop-btn": "\f58f",
+ "stop-circle-fill": "\f590",
+ "stop-circle": "\f591",
+ "stop-fill": "\f592",
+ "stop": "\f593",
+ "stoplights-fill": "\f594",
+ "stoplights": "\f595",
+ "stopwatch-fill": "\f596",
+ "stopwatch": "\f597",
+ "subtract": "\f598",
+ "suit-club-fill": "\f599",
+ "suit-club": "\f59a",
+ "suit-diamond-fill": "\f59b",
+ "suit-diamond": "\f59c",
+ "suit-heart-fill": "\f59d",
+ "suit-heart": "\f59e",
+ "suit-spade-fill": "\f59f",
+ "suit-spade": "\f5a0",
+ "sun-fill": "\f5a1",
+ "sun": "\f5a2",
+ "sunglasses": "\f5a3",
+ "sunrise-fill": "\f5a4",
+ "sunrise": "\f5a5",
+ "sunset-fill": "\f5a6",
+ "sunset": "\f5a7",
+ "symmetry-horizontal": "\f5a8",
+ "symmetry-vertical": "\f5a9",
+ "table": "\f5aa",
+ "tablet-fill": "\f5ab",
+ "tablet-landscape-fill": "\f5ac",
+ "tablet-landscape": "\f5ad",
+ "tablet": "\f5ae",
+ "tag-fill": "\f5af",
+ "tag": "\f5b0",
+ "tags-fill": "\f5b1",
+ "tags": "\f5b2",
+ "telegram": "\f5b3",
+ "telephone-fill": "\f5b4",
+ "telephone-forward-fill": "\f5b5",
+ "telephone-forward": "\f5b6",
+ "telephone-inbound-fill": "\f5b7",
+ "telephone-inbound": "\f5b8",
+ "telephone-minus-fill": "\f5b9",
+ "telephone-minus": "\f5ba",
+ "telephone-outbound-fill": "\f5bb",
+ "telephone-outbound": "\f5bc",
+ "telephone-plus-fill": "\f5bd",
+ "telephone-plus": "\f5be",
+ "telephone-x-fill": "\f5bf",
+ "telephone-x": "\f5c0",
+ "telephone": "\f5c1",
+ "terminal-fill": "\f5c2",
+ "terminal": "\f5c3",
+ "text-center": "\f5c4",
+ "text-indent-left": "\f5c5",
+ "text-indent-right": "\f5c6",
+ "text-left": "\f5c7",
+ "text-paragraph": "\f5c8",
+ "text-right": "\f5c9",
+ "textarea-resize": "\f5ca",
+ "textarea-t": "\f5cb",
+ "textarea": "\f5cc",
+ "thermometer-half": "\f5cd",
+ "thermometer-high": "\f5ce",
+ "thermometer-low": "\f5cf",
+ "thermometer-snow": "\f5d0",
+ "thermometer-sun": "\f5d1",
+ "thermometer": "\f5d2",
+ "three-dots-vertical": "\f5d3",
+ "three-dots": "\f5d4",
+ "toggle-off": "\f5d5",
+ "toggle-on": "\f5d6",
+ "toggle2-off": "\f5d7",
+ "toggle2-on": "\f5d8",
+ "toggles": "\f5d9",
+ "toggles2": "\f5da",
+ "tools": "\f5db",
+ "tornado": "\f5dc",
+ "trash-fill": "\f5dd",
+ "trash": "\f5de",
+ "trash2-fill": "\f5df",
+ "trash2": "\f5e0",
+ "tree-fill": "\f5e1",
+ "tree": "\f5e2",
+ "triangle-fill": "\f5e3",
+ "triangle-half": "\f5e4",
+ "triangle": "\f5e5",
+ "trophy-fill": "\f5e6",
+ "trophy": "\f5e7",
+ "tropical-storm": "\f5e8",
+ "truck-flatbed": "\f5e9",
+ "truck": "\f5ea",
+ "tsunami": "\f5eb",
+ "tv-fill": "\f5ec",
+ "tv": "\f5ed",
+ "twitch": "\f5ee",
+ "twitter": "\f5ef",
+ "type-bold": "\f5f0",
+ "type-h1": "\f5f1",
+ "type-h2": "\f5f2",
+ "type-h3": "\f5f3",
+ "type-italic": "\f5f4",
+ "type-strikethrough": "\f5f5",
+ "type-underline": "\f5f6",
+ "type": "\f5f7",
+ "ui-checks-grid": "\f5f8",
+ "ui-checks": "\f5f9",
+ "ui-radios-grid": "\f5fa",
+ "ui-radios": "\f5fb",
+ "umbrella-fill": "\f5fc",
+ "umbrella": "\f5fd",
+ "union": "\f5fe",
+ "unlock-fill": "\f5ff",
+ "unlock": "\f600",
+ "upc-scan": "\f601",
+ "upc": "\f602",
+ "upload": "\f603",
+ "vector-pen": "\f604",
+ "view-list": "\f605",
+ "view-stacked": "\f606",
+ "vinyl-fill": "\f607",
+ "vinyl": "\f608",
+ "voicemail": "\f609",
+ "volume-down-fill": "\f60a",
+ "volume-down": "\f60b",
+ "volume-mute-fill": "\f60c",
+ "volume-mute": "\f60d",
+ "volume-off-fill": "\f60e",
+ "volume-off": "\f60f",
+ "volume-up-fill": "\f610",
+ "volume-up": "\f611",
+ "vr": "\f612",
+ "wallet-fill": "\f613",
+ "wallet": "\f614",
+ "wallet2": "\f615",
+ "watch": "\f616",
+ "water": "\f617",
+ "whatsapp": "\f618",
+ "wifi-1": "\f619",
+ "wifi-2": "\f61a",
+ "wifi-off": "\f61b",
+ "wifi": "\f61c",
+ "wind": "\f61d",
+ "window-dock": "\f61e",
+ "window-sidebar": "\f61f",
+ "window": "\f620",
+ "wrench": "\f621",
+ "x-circle-fill": "\f622",
+ "x-circle": "\f623",
+ "x-diamond-fill": "\f624",
+ "x-diamond": "\f625",
+ "x-octagon-fill": "\f626",
+ "x-octagon": "\f627",
+ "x-square-fill": "\f628",
+ "x-square": "\f629",
+ "x": "\f62a",
+ "youtube": "\f62b",
+ "zoom-in": "\f62c",
+ "zoom-out": "\f62d",
+ "bank": "\f62e",
+ "bank2": "\f62f",
+ "bell-slash-fill": "\f630",
+ "bell-slash": "\f631",
+ "cash-coin": "\f632",
+ "check-lg": "\f633",
+ "coin": "\f634",
+ "currency-bitcoin": "\f635",
+ "currency-dollar": "\f636",
+ "currency-euro": "\f637",
+ "currency-exchange": "\f638",
+ "currency-pound": "\f639",
+ "currency-yen": "\f63a",
+ "dash-lg": "\f63b",
+ "exclamation-lg": "\f63c",
+ "file-earmark-pdf-fill": "\f63d",
+ "file-earmark-pdf": "\f63e",
+ "file-pdf-fill": "\f63f",
+ "file-pdf": "\f640",
+ "gender-ambiguous": "\f641",
+ "gender-female": "\f642",
+ "gender-male": "\f643",
+ "gender-trans": "\f644",
+ "headset-vr": "\f645",
+ "info-lg": "\f646",
+ "mastodon": "\f647",
+ "messenger": "\f648",
+ "piggy-bank-fill": "\f649",
+ "piggy-bank": "\f64a",
+ "pin-map-fill": "\f64b",
+ "pin-map": "\f64c",
+ "plus-lg": "\f64d",
+ "question-lg": "\f64e",
+ "recycle": "\f64f",
+ "reddit": "\f650",
+ "safe-fill": "\f651",
+ "safe2-fill": "\f652",
+ "safe2": "\f653",
+ "sd-card-fill": "\f654",
+ "sd-card": "\f655",
+ "skype": "\f656",
+ "slash-lg": "\f657",
+ "translate": "\f658",
+ "x-lg": "\f659",
+ "safe": "\f65a",
+ "apple": "\f65b",
+ "microsoft": "\f65d",
+ "windows": "\f65e",
+ "behance": "\f65c",
+ "dribbble": "\f65f",
+ "line": "\f660",
+ "medium": "\f661",
+ "paypal": "\f662",
+ "pinterest": "\f663",
+ "signal": "\f664",
+ "snapchat": "\f665",
+ "spotify": "\f666",
+ "stack-overflow": "\f667",
+ "strava": "\f668",
+ "wordpress": "\f669",
+ "vimeo": "\f66a",
+ "activity": "\f66b",
+ "easel2-fill": "\f66c",
+ "easel2": "\f66d",
+ "easel3-fill": "\f66e",
+ "easel3": "\f66f",
+ "fan": "\f670",
+ "fingerprint": "\f671",
+ "graph-down-arrow": "\f672",
+ "graph-up-arrow": "\f673",
+ "hypnotize": "\f674",
+ "magic": "\f675",
+ "person-rolodex": "\f676",
+ "person-video": "\f677",
+ "person-video2": "\f678",
+ "person-video3": "\f679",
+ "person-workspace": "\f67a",
+ "radioactive": "\f67b",
+ "webcam-fill": "\f67c",
+ "webcam": "\f67d",
+ "yin-yang": "\f67e",
+ "bandaid-fill": "\f680",
+ "bandaid": "\f681",
+ "bluetooth": "\f682",
+ "body-text": "\f683",
+ "boombox": "\f684",
+ "boxes": "\f685",
+ "dpad-fill": "\f686",
+ "dpad": "\f687",
+ "ear-fill": "\f688",
+ "ear": "\f689",
+ "envelope-check-fill": "\f68b",
+ "envelope-check": "\f68c",
+ "envelope-dash-fill": "\f68e",
+ "envelope-dash": "\f68f",
+ "envelope-exclamation-fill": "\f691",
+ "envelope-exclamation": "\f692",
+ "envelope-plus-fill": "\f693",
+ "envelope-plus": "\f694",
+ "envelope-slash-fill": "\f696",
+ "envelope-slash": "\f697",
+ "envelope-x-fill": "\f699",
+ "envelope-x": "\f69a",
+ "explicit-fill": "\f69b",
+ "explicit": "\f69c",
+ "git": "\f69d",
+ "infinity": "\f69e",
+ "list-columns-reverse": "\f69f",
+ "list-columns": "\f6a0",
+ "meta": "\f6a1",
+ "nintendo-switch": "\f6a4",
+ "pc-display-horizontal": "\f6a5",
+ "pc-display": "\f6a6",
+ "pc-horizontal": "\f6a7",
+ "pc": "\f6a8",
+ "playstation": "\f6a9",
+ "plus-slash-minus": "\f6aa",
+ "projector-fill": "\f6ab",
+ "projector": "\f6ac",
+ "qr-code-scan": "\f6ad",
+ "qr-code": "\f6ae",
+ "quora": "\f6af",
+ "quote": "\f6b0",
+ "robot": "\f6b1",
+ "send-check-fill": "\f6b2",
+ "send-check": "\f6b3",
+ "send-dash-fill": "\f6b4",
+ "send-dash": "\f6b5",
+ "send-exclamation-fill": "\f6b7",
+ "send-exclamation": "\f6b8",
+ "send-fill": "\f6b9",
+ "send-plus-fill": "\f6ba",
+ "send-plus": "\f6bb",
+ "send-slash-fill": "\f6bc",
+ "send-slash": "\f6bd",
+ "send-x-fill": "\f6be",
+ "send-x": "\f6bf",
+ "send": "\f6c0",
+ "steam": "\f6c1",
+ "terminal-dash": "\f6c3",
+ "terminal-plus": "\f6c4",
+ "terminal-split": "\f6c5",
+ "ticket-detailed-fill": "\f6c6",
+ "ticket-detailed": "\f6c7",
+ "ticket-fill": "\f6c8",
+ "ticket-perforated-fill": "\f6c9",
+ "ticket-perforated": "\f6ca",
+ "ticket": "\f6cb",
+ "tiktok": "\f6cc",
+ "window-dash": "\f6cd",
+ "window-desktop": "\f6ce",
+ "window-fullscreen": "\f6cf",
+ "window-plus": "\f6d0",
+ "window-split": "\f6d1",
+ "window-stack": "\f6d2",
+ "window-x": "\f6d3",
+ "xbox": "\f6d4",
+ "ethernet": "\f6d5",
+ "hdmi-fill": "\f6d6",
+ "hdmi": "\f6d7",
+ "usb-c-fill": "\f6d8",
+ "usb-c": "\f6d9",
+ "usb-fill": "\f6da",
+ "usb-plug-fill": "\f6db",
+ "usb-plug": "\f6dc",
+ "usb-symbol": "\f6dd",
+ "usb": "\f6de",
+ "boombox-fill": "\f6df",
+ "displayport": "\f6e1",
+ "gpu-card": "\f6e2",
+ "memory": "\f6e3",
+ "modem-fill": "\f6e4",
+ "modem": "\f6e5",
+ "motherboard-fill": "\f6e6",
+ "motherboard": "\f6e7",
+ "optical-audio-fill": "\f6e8",
+ "optical-audio": "\f6e9",
+ "pci-card": "\f6ea",
+ "router-fill": "\f6eb",
+ "router": "\f6ec",
+ "thunderbolt-fill": "\f6ef",
+ "thunderbolt": "\f6f0",
+ "usb-drive-fill": "\f6f1",
+ "usb-drive": "\f6f2",
+ "usb-micro-fill": "\f6f3",
+ "usb-micro": "\f6f4",
+ "usb-mini-fill": "\f6f5",
+ "usb-mini": "\f6f6",
+ "cloud-haze2": "\f6f7",
+ "device-hdd-fill": "\f6f8",
+ "device-hdd": "\f6f9",
+ "device-ssd-fill": "\f6fa",
+ "device-ssd": "\f6fb",
+ "displayport-fill": "\f6fc",
+ "mortarboard-fill": "\f6fd",
+ "mortarboard": "\f6fe",
+ "terminal-x": "\f6ff",
+ "arrow-through-heart-fill": "\f700",
+ "arrow-through-heart": "\f701",
+ "badge-sd-fill": "\f702",
+ "badge-sd": "\f703",
+ "bag-heart-fill": "\f704",
+ "bag-heart": "\f705",
+ "balloon-fill": "\f706",
+ "balloon-heart-fill": "\f707",
+ "balloon-heart": "\f708",
+ "balloon": "\f709",
+ "box2-fill": "\f70a",
+ "box2-heart-fill": "\f70b",
+ "box2-heart": "\f70c",
+ "box2": "\f70d",
+ "braces-asterisk": "\f70e",
+ "calendar-heart-fill": "\f70f",
+ "calendar-heart": "\f710",
+ "calendar2-heart-fill": "\f711",
+ "calendar2-heart": "\f712",
+ "chat-heart-fill": "\f713",
+ "chat-heart": "\f714",
+ "chat-left-heart-fill": "\f715",
+ "chat-left-heart": "\f716",
+ "chat-right-heart-fill": "\f717",
+ "chat-right-heart": "\f718",
+ "chat-square-heart-fill": "\f719",
+ "chat-square-heart": "\f71a",
+ "clipboard-check-fill": "\f71b",
+ "clipboard-data-fill": "\f71c",
+ "clipboard-fill": "\f71d",
+ "clipboard-heart-fill": "\f71e",
+ "clipboard-heart": "\f71f",
+ "clipboard-minus-fill": "\f720",
+ "clipboard-plus-fill": "\f721",
+ "clipboard-pulse": "\f722",
+ "clipboard-x-fill": "\f723",
+ "clipboard2-check-fill": "\f724",
+ "clipboard2-check": "\f725",
+ "clipboard2-data-fill": "\f726",
+ "clipboard2-data": "\f727",
+ "clipboard2-fill": "\f728",
+ "clipboard2-heart-fill": "\f729",
+ "clipboard2-heart": "\f72a",
+ "clipboard2-minus-fill": "\f72b",
+ "clipboard2-minus": "\f72c",
+ "clipboard2-plus-fill": "\f72d",
+ "clipboard2-plus": "\f72e",
+ "clipboard2-pulse-fill": "\f72f",
+ "clipboard2-pulse": "\f730",
+ "clipboard2-x-fill": "\f731",
+ "clipboard2-x": "\f732",
+ "clipboard2": "\f733",
+ "emoji-kiss-fill": "\f734",
+ "emoji-kiss": "\f735",
+ "envelope-heart-fill": "\f736",
+ "envelope-heart": "\f737",
+ "envelope-open-heart-fill": "\f738",
+ "envelope-open-heart": "\f739",
+ "envelope-paper-fill": "\f73a",
+ "envelope-paper-heart-fill": "\f73b",
+ "envelope-paper-heart": "\f73c",
+ "envelope-paper": "\f73d",
+ "filetype-aac": "\f73e",
+ "filetype-ai": "\f73f",
+ "filetype-bmp": "\f740",
+ "filetype-cs": "\f741",
+ "filetype-css": "\f742",
+ "filetype-csv": "\f743",
+ "filetype-doc": "\f744",
+ "filetype-docx": "\f745",
+ "filetype-exe": "\f746",
+ "filetype-gif": "\f747",
+ "filetype-heic": "\f748",
+ "filetype-html": "\f749",
+ "filetype-java": "\f74a",
+ "filetype-jpg": "\f74b",
+ "filetype-js": "\f74c",
+ "filetype-jsx": "\f74d",
+ "filetype-key": "\f74e",
+ "filetype-m4p": "\f74f",
+ "filetype-md": "\f750",
+ "filetype-mdx": "\f751",
+ "filetype-mov": "\f752",
+ "filetype-mp3": "\f753",
+ "filetype-mp4": "\f754",
+ "filetype-otf": "\f755",
+ "filetype-pdf": "\f756",
+ "filetype-php": "\f757",
+ "filetype-png": "\f758",
+ "filetype-ppt": "\f75a",
+ "filetype-psd": "\f75b",
+ "filetype-py": "\f75c",
+ "filetype-raw": "\f75d",
+ "filetype-rb": "\f75e",
+ "filetype-sass": "\f75f",
+ "filetype-scss": "\f760",
+ "filetype-sh": "\f761",
+ "filetype-svg": "\f762",
+ "filetype-tiff": "\f763",
+ "filetype-tsx": "\f764",
+ "filetype-ttf": "\f765",
+ "filetype-txt": "\f766",
+ "filetype-wav": "\f767",
+ "filetype-woff": "\f768",
+ "filetype-xls": "\f76a",
+ "filetype-xml": "\f76b",
+ "filetype-yml": "\f76c",
+ "heart-arrow": "\f76d",
+ "heart-pulse-fill": "\f76e",
+ "heart-pulse": "\f76f",
+ "heartbreak-fill": "\f770",
+ "heartbreak": "\f771",
+ "hearts": "\f772",
+ "hospital-fill": "\f773",
+ "hospital": "\f774",
+ "house-heart-fill": "\f775",
+ "house-heart": "\f776",
+ "incognito": "\f777",
+ "magnet-fill": "\f778",
+ "magnet": "\f779",
+ "person-heart": "\f77a",
+ "person-hearts": "\f77b",
+ "phone-flip": "\f77c",
+ "plugin": "\f77d",
+ "postage-fill": "\f77e",
+ "postage-heart-fill": "\f77f",
+ "postage-heart": "\f780",
+ "postage": "\f781",
+ "postcard-fill": "\f782",
+ "postcard-heart-fill": "\f783",
+ "postcard-heart": "\f784",
+ "postcard": "\f785",
+ "search-heart-fill": "\f786",
+ "search-heart": "\f787",
+ "sliders2-vertical": "\f788",
+ "sliders2": "\f789",
+ "trash3-fill": "\f78a",
+ "trash3": "\f78b",
+ "valentine": "\f78c",
+ "valentine2": "\f78d",
+ "wrench-adjustable-circle-fill": "\f78e",
+ "wrench-adjustable-circle": "\f78f",
+ "wrench-adjustable": "\f790",
+ "filetype-json": "\f791",
+ "filetype-pptx": "\f792",
+ "filetype-xlsx": "\f793",
+ "1-circle-fill": "\f796",
+ "1-circle": "\f797",
+ "1-square-fill": "\f798",
+ "1-square": "\f799",
+ "2-circle-fill": "\f79c",
+ "2-circle": "\f79d",
+ "2-square-fill": "\f79e",
+ "2-square": "\f79f",
+ "3-circle-fill": "\f7a2",
+ "3-circle": "\f7a3",
+ "3-square-fill": "\f7a4",
+ "3-square": "\f7a5",
+ "4-circle-fill": "\f7a8",
+ "4-circle": "\f7a9",
+ "4-square-fill": "\f7aa",
+ "4-square": "\f7ab",
+ "5-circle-fill": "\f7ae",
+ "5-circle": "\f7af",
+ "5-square-fill": "\f7b0",
+ "5-square": "\f7b1",
+ "6-circle-fill": "\f7b4",
+ "6-circle": "\f7b5",
+ "6-square-fill": "\f7b6",
+ "6-square": "\f7b7",
+ "7-circle-fill": "\f7ba",
+ "7-circle": "\f7bb",
+ "7-square-fill": "\f7bc",
+ "7-square": "\f7bd",
+ "8-circle-fill": "\f7c0",
+ "8-circle": "\f7c1",
+ "8-square-fill": "\f7c2",
+ "8-square": "\f7c3",
+ "9-circle-fill": "\f7c6",
+ "9-circle": "\f7c7",
+ "9-square-fill": "\f7c8",
+ "9-square": "\f7c9",
+ "airplane-engines-fill": "\f7ca",
+ "airplane-engines": "\f7cb",
+ "airplane-fill": "\f7cc",
+ "airplane": "\f7cd",
+ "alexa": "\f7ce",
+ "alipay": "\f7cf",
+ "android": "\f7d0",
+ "android2": "\f7d1",
+ "box-fill": "\f7d2",
+ "box-seam-fill": "\f7d3",
+ "browser-chrome": "\f7d4",
+ "browser-edge": "\f7d5",
+ "browser-firefox": "\f7d6",
+ "browser-safari": "\f7d7",
+ "c-circle-fill": "\f7da",
+ "c-circle": "\f7db",
+ "c-square-fill": "\f7dc",
+ "c-square": "\f7dd",
+ "capsule-pill": "\f7de",
+ "capsule": "\f7df",
+ "car-front-fill": "\f7e0",
+ "car-front": "\f7e1",
+ "cassette-fill": "\f7e2",
+ "cassette": "\f7e3",
+ "cc-circle-fill": "\f7e6",
+ "cc-circle": "\f7e7",
+ "cc-square-fill": "\f7e8",
+ "cc-square": "\f7e9",
+ "cup-hot-fill": "\f7ea",
+ "cup-hot": "\f7eb",
+ "currency-rupee": "\f7ec",
+ "dropbox": "\f7ed",
+ "escape": "\f7ee",
+ "fast-forward-btn-fill": "\f7ef",
+ "fast-forward-btn": "\f7f0",
+ "fast-forward-circle-fill": "\f7f1",
+ "fast-forward-circle": "\f7f2",
+ "fast-forward-fill": "\f7f3",
+ "fast-forward": "\f7f4",
+ "filetype-sql": "\f7f5",
+ "fire": "\f7f6",
+ "google-play": "\f7f7",
+ "h-circle-fill": "\f7fa",
+ "h-circle": "\f7fb",
+ "h-square-fill": "\f7fc",
+ "h-square": "\f7fd",
+ "indent": "\f7fe",
+ "lungs-fill": "\f7ff",
+ "lungs": "\f800",
+ "microsoft-teams": "\f801",
+ "p-circle-fill": "\f804",
+ "p-circle": "\f805",
+ "p-square-fill": "\f806",
+ "p-square": "\f807",
+ "pass-fill": "\f808",
+ "pass": "\f809",
+ "prescription": "\f80a",
+ "prescription2": "\f80b",
+ "r-circle-fill": "\f80e",
+ "r-circle": "\f80f",
+ "r-square-fill": "\f810",
+ "r-square": "\f811",
+ "repeat-1": "\f812",
+ "repeat": "\f813",
+ "rewind-btn-fill": "\f814",
+ "rewind-btn": "\f815",
+ "rewind-circle-fill": "\f816",
+ "rewind-circle": "\f817",
+ "rewind-fill": "\f818",
+ "rewind": "\f819",
+ "train-freight-front-fill": "\f81a",
+ "train-freight-front": "\f81b",
+ "train-front-fill": "\f81c",
+ "train-front": "\f81d",
+ "train-lightrail-front-fill": "\f81e",
+ "train-lightrail-front": "\f81f",
+ "truck-front-fill": "\f820",
+ "truck-front": "\f821",
+ "ubuntu": "\f822",
+ "unindent": "\f823",
+ "unity": "\f824",
+ "universal-access-circle": "\f825",
+ "universal-access": "\f826",
+ "virus": "\f827",
+ "virus2": "\f828",
+ "wechat": "\f829",
+ "yelp": "\f82a",
+ "sign-stop-fill": "\f82b",
+ "sign-stop-lights-fill": "\f82c",
+ "sign-stop-lights": "\f82d",
+ "sign-stop": "\f82e",
+ "sign-turn-left-fill": "\f82f",
+ "sign-turn-left": "\f830",
+ "sign-turn-right-fill": "\f831",
+ "sign-turn-right": "\f832",
+ "sign-turn-slight-left-fill": "\f833",
+ "sign-turn-slight-left": "\f834",
+ "sign-turn-slight-right-fill": "\f835",
+ "sign-turn-slight-right": "\f836",
+ "sign-yield-fill": "\f837",
+ "sign-yield": "\f838",
+ "ev-station-fill": "\f839",
+ "ev-station": "\f83a",
+ "fuel-pump-diesel-fill": "\f83b",
+ "fuel-pump-diesel": "\f83c",
+ "fuel-pump-fill": "\f83d",
+ "fuel-pump": "\f83e",
+ "0-circle-fill": "\f83f",
+ "0-circle": "\f840",
+ "0-square-fill": "\f841",
+ "0-square": "\f842",
+ "rocket-fill": "\f843",
+ "rocket-takeoff-fill": "\f844",
+ "rocket-takeoff": "\f845",
+ "rocket": "\f846",
+ "stripe": "\f847",
+ "subscript": "\f848",
+ "superscript": "\f849",
+ "trello": "\f84a",
+ "envelope-at-fill": "\f84b",
+ "envelope-at": "\f84c",
+ "regex": "\f84d",
+ "text-wrap": "\f84e",
+ "sign-dead-end-fill": "\f84f",
+ "sign-dead-end": "\f850",
+ "sign-do-not-enter-fill": "\f851",
+ "sign-do-not-enter": "\f852",
+ "sign-intersection-fill": "\f853",
+ "sign-intersection-side-fill": "\f854",
+ "sign-intersection-side": "\f855",
+ "sign-intersection-t-fill": "\f856",
+ "sign-intersection-t": "\f857",
+ "sign-intersection-y-fill": "\f858",
+ "sign-intersection-y": "\f859",
+ "sign-intersection": "\f85a",
+ "sign-merge-left-fill": "\f85b",
+ "sign-merge-left": "\f85c",
+ "sign-merge-right-fill": "\f85d",
+ "sign-merge-right": "\f85e",
+ "sign-no-left-turn-fill": "\f85f",
+ "sign-no-left-turn": "\f860",
+ "sign-no-parking-fill": "\f861",
+ "sign-no-parking": "\f862",
+ "sign-no-right-turn-fill": "\f863",
+ "sign-no-right-turn": "\f864",
+ "sign-railroad-fill": "\f865",
+ "sign-railroad": "\f866",
+ "building-add": "\f867",
+ "building-check": "\f868",
+ "building-dash": "\f869",
+ "building-down": "\f86a",
+ "building-exclamation": "\f86b",
+ "building-fill-add": "\f86c",
+ "building-fill-check": "\f86d",
+ "building-fill-dash": "\f86e",
+ "building-fill-down": "\f86f",
+ "building-fill-exclamation": "\f870",
+ "building-fill-gear": "\f871",
+ "building-fill-lock": "\f872",
+ "building-fill-slash": "\f873",
+ "building-fill-up": "\f874",
+ "building-fill-x": "\f875",
+ "building-fill": "\f876",
+ "building-gear": "\f877",
+ "building-lock": "\f878",
+ "building-slash": "\f879",
+ "building-up": "\f87a",
+ "building-x": "\f87b",
+ "buildings-fill": "\f87c",
+ "buildings": "\f87d",
+ "bus-front-fill": "\f87e",
+ "bus-front": "\f87f",
+ "ev-front-fill": "\f880",
+ "ev-front": "\f881",
+ "globe-americas": "\f882",
+ "globe-asia-australia": "\f883",
+ "globe-central-south-asia": "\f884",
+ "globe-europe-africa": "\f885",
+ "house-add-fill": "\f886",
+ "house-add": "\f887",
+ "house-check-fill": "\f888",
+ "house-check": "\f889",
+ "house-dash-fill": "\f88a",
+ "house-dash": "\f88b",
+ "house-down-fill": "\f88c",
+ "house-down": "\f88d",
+ "house-exclamation-fill": "\f88e",
+ "house-exclamation": "\f88f",
+ "house-gear-fill": "\f890",
+ "house-gear": "\f891",
+ "house-lock-fill": "\f892",
+ "house-lock": "\f893",
+ "house-slash-fill": "\f894",
+ "house-slash": "\f895",
+ "house-up-fill": "\f896",
+ "house-up": "\f897",
+ "house-x-fill": "\f898",
+ "house-x": "\f899",
+ "person-add": "\f89a",
+ "person-down": "\f89b",
+ "person-exclamation": "\f89c",
+ "person-fill-add": "\f89d",
+ "person-fill-check": "\f89e",
+ "person-fill-dash": "\f89f",
+ "person-fill-down": "\f8a0",
+ "person-fill-exclamation": "\f8a1",
+ "person-fill-gear": "\f8a2",
+ "person-fill-lock": "\f8a3",
+ "person-fill-slash": "\f8a4",
+ "person-fill-up": "\f8a5",
+ "person-fill-x": "\f8a6",
+ "person-gear": "\f8a7",
+ "person-lock": "\f8a8",
+ "person-slash": "\f8a9",
+ "person-up": "\f8aa",
+ "scooter": "\f8ab",
+ "taxi-front-fill": "\f8ac",
+ "taxi-front": "\f8ad",
+ "amd": "\f8ae",
+ "database-add": "\f8af",
+ "database-check": "\f8b0",
+ "database-dash": "\f8b1",
+ "database-down": "\f8b2",
+ "database-exclamation": "\f8b3",
+ "database-fill-add": "\f8b4",
+ "database-fill-check": "\f8b5",
+ "database-fill-dash": "\f8b6",
+ "database-fill-down": "\f8b7",
+ "database-fill-exclamation": "\f8b8",
+ "database-fill-gear": "\f8b9",
+ "database-fill-lock": "\f8ba",
+ "database-fill-slash": "\f8bb",
+ "database-fill-up": "\f8bc",
+ "database-fill-x": "\f8bd",
+ "database-fill": "\f8be",
+ "database-gear": "\f8bf",
+ "database-lock": "\f8c0",
+ "database-slash": "\f8c1",
+ "database-up": "\f8c2",
+ "database-x": "\f8c3",
+ "database": "\f8c4",
+ "houses-fill": "\f8c5",
+ "houses": "\f8c6",
+ "nvidia": "\f8c7",
+ "person-vcard-fill": "\f8c8",
+ "person-vcard": "\f8c9",
+ "sina-weibo": "\f8ca",
+ "tencent-qq": "\f8cb",
+ "wikipedia": "\f8cc",
+ "alphabet-uppercase": "\f2a5",
+ "alphabet": "\f68a",
+ "amazon": "\f68d",
+ "arrows-collapse-vertical": "\f690",
+ "arrows-expand-vertical": "\f695",
+ "arrows-vertical": "\f698",
+ "arrows": "\f6a2",
+ "ban-fill": "\f6a3",
+ "ban": "\f6b6",
+ "bing": "\f6c2",
+ "cake": "\f6e0",
+ "cake2": "\f6ed",
+ "cookie": "\f6ee",
+ "copy": "\f759",
+ "crosshair": "\f769",
+ "crosshair2": "\f794",
+ "emoji-astonished-fill": "\f795",
+ "emoji-astonished": "\f79a",
+ "emoji-grimace-fill": "\f79b",
+ "emoji-grimace": "\f7a0",
+ "emoji-grin-fill": "\f7a1",
+ "emoji-grin": "\f7a6",
+ "emoji-surprise-fill": "\f7a7",
+ "emoji-surprise": "\f7ac",
+ "emoji-tear-fill": "\f7ad",
+ "emoji-tear": "\f7b2",
+ "envelope-arrow-down-fill": "\f7b3",
+ "envelope-arrow-down": "\f7b8",
+ "envelope-arrow-up-fill": "\f7b9",
+ "envelope-arrow-up": "\f7be",
+ "feather": "\f7bf",
+ "feather2": "\f7c4",
+ "floppy-fill": "\f7c5",
+ "floppy": "\f7d8",
+ "floppy2-fill": "\f7d9",
+ "floppy2": "\f7e4",
+ "gitlab": "\f7e5",
+ "highlighter": "\f7f8",
+ "marker-tip": "\f802",
+ "nvme-fill": "\f803",
+ "nvme": "\f80c",
+ "opencollective": "\f80d",
+ "pci-card-network": "\f8cd",
+ "pci-card-sound": "\f8ce",
+ "radar": "\f8cf",
+ "send-arrow-down-fill": "\f8d0",
+ "send-arrow-down": "\f8d1",
+ "send-arrow-up-fill": "\f8d2",
+ "send-arrow-up": "\f8d3",
+ "sim-slash-fill": "\f8d4",
+ "sim-slash": "\f8d5",
+ "sourceforge": "\f8d6",
+ "substack": "\f8d7",
+ "threads-fill": "\f8d8",
+ "threads": "\f8d9",
+ "transparency": "\f8da",
+ "twitter-x": "\f8db",
+ "type-h4": "\f8dc",
+ "type-h5": "\f8dd",
+ "type-h6": "\f8de",
+ "backpack-fill": "\f8df",
+ "backpack": "\f8e0",
+ "backpack2-fill": "\f8e1",
+ "backpack2": "\f8e2",
+ "backpack3-fill": "\f8e3",
+ "backpack3": "\f8e4",
+ "backpack4-fill": "\f8e5",
+ "backpack4": "\f8e6",
+ "brilliance": "\f8e7",
+ "cake-fill": "\f8e8",
+ "cake2-fill": "\f8e9",
+ "duffle-fill": "\f8ea",
+ "duffle": "\f8eb",
+ "exposure": "\f8ec",
+ "gender-neuter": "\f8ed",
+ "highlights": "\f8ee",
+ "luggage-fill": "\f8ef",
+ "luggage": "\f8f0",
+ "mailbox-flag": "\f8f1",
+ "mailbox2-flag": "\f8f2",
+ "noise-reduction": "\f8f3",
+ "passport-fill": "\f8f4",
+ "passport": "\f8f5",
+ "person-arms-up": "\f8f6",
+ "person-raised-hand": "\f8f7",
+ "person-standing-dress": "\f8f8",
+ "person-standing": "\f8f9",
+ "person-walking": "\f8fa",
+ "person-wheelchair": "\f8fb",
+ "shadows": "\f8fc",
+ "suitcase-fill": "\f8fd",
+ "suitcase-lg-fill": "\f8fe",
+ "suitcase-lg": "\f8ff",
+ "suitcase": "\f900",
+ "suitcase2-fill": "\f901",
+ "suitcase2": "\f902",
+ "vignette": "\f903",
+);
+
+@each $icon, $codepoint in $bootstrap-icons-map {
+ .bi-#{$icon}::before { content: $codepoint; }
+}
diff --git a/vendor/twbs/bootstrap-icons/font/fonts/bootstrap-icons.woff b/vendor/twbs/bootstrap-icons/font/fonts/bootstrap-icons.woff
new file mode 100644
index 000000000..51204d27d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/font/fonts/bootstrap-icons.woff
Binary files differ
diff --git a/vendor/twbs/bootstrap-icons/font/fonts/bootstrap-icons.woff2 b/vendor/twbs/bootstrap-icons/font/fonts/bootstrap-icons.woff2
new file mode 100644
index 000000000..92c483021
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/font/fonts/bootstrap-icons.woff2
Binary files differ
diff --git a/vendor/twbs/bootstrap-icons/hugo.yml b/vendor/twbs/bootstrap-icons/hugo.yml
new file mode 100644
index 000000000..6655d9161
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/hugo.yml
@@ -0,0 +1,69 @@
+languageCode: "en"
+title: "Bootstrap Icons"
+baseURL: "https://icons.getbootstrap.com"
+enableInlineShortcodes: true
+enableRobotsTXT: true
+metaDataFormat: "yaml"
+disableKinds: ["404", "taxonomy", "term", "RSS"]
+
+publishDir: "_site"
+
+security:
+ enableInlineShortcodes: true
+ funcs:
+ getenv:
+ - ^HUGO_
+ - NETLIFY
+
+markup:
+ goldmark:
+ renderer:
+ unsafe: true
+ highlight:
+ noClasses: false
+
+module:
+ mounts:
+ - source: docs/assets
+ target: assets
+ - source: docs/content
+ target: content
+ - source: docs/data
+ target: data
+ - source: docs/layouts
+ target: layouts
+ - source: docs/static
+ target: static
+ - source: docs/static/assets/img/favicons/apple-touch-icon.png
+ target: static/apple-touch-icon.png
+ - source: docs/static/assets/img/favicons/favicon.ico
+ target: static/favicon.ico
+ - source: bootstrap-icons.svg
+ target: static/bootstrap-icons.svg
+ - source: icons
+ target: static/assets/icons
+ - source: font
+ target: static/assets/font
+ - source: node_modules/bootstrap/scss
+ target: assets/scss/bootstrap
+ - source: node_modules/bootstrap/dist/js/bootstrap.bundle.min.js
+ target: static/assets/js/vendor/bootstrap.bundle.min.js
+
+params:
+ description: "Official open source SVG icon library for Bootstrap"
+ social_image_path: /assets/img/bootstrap-icons-social.png
+
+ version: "1.11.3"
+ docs_version: "5.3"
+
+ main: "https://getbootstrap.com"
+ github_org: "https://github.com/twbs"
+ icons_repo: "https://github.com/twbs/icons"
+ repo: "https://github.com/twbs/bootstrap"
+ twitter: "getbootstrap"
+ opencollective: "https://opencollective.com/bootstrap"
+ blog: "https://blog.getbootstrap.com/"
+ themes: "https://themes.getbootstrap.com/"
+ icons: "https://icons.getbootstrap.com/"
+ swag: "https://cottonbureau.com/people/bootstrap"
+ icons_figma: "https://www.figma.com/community/file/1042482994486402696/Bootstrap-Icons"
diff --git a/vendor/twbs/bootstrap-icons/icons/0-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/0-circle-fill.svg
new file mode 100644
index 000000000..2f5f026ce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/0-circle-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-circle-fill" viewBox="0 0 16 16">
+ <path d="M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.012 4.158c1.858 0 2.96-1.582 2.96-3.99V7.84c0-2.426-1.079-3.996-2.936-3.996-1.864 0-2.965 1.588-2.965 3.996v.328c0 2.42 1.09 3.99 2.941 3.99"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/0-circle.svg b/vendor/twbs/bootstrap-icons/icons/0-circle.svg
new file mode 100644
index 000000000..5e84c8cf2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/0-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-circle" viewBox="0 0 16 16">
+ <path d="M7.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/0-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/0-square-fill.svg
new file mode 100644
index 000000000..cca049bca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/0-square-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-square-fill" viewBox="0 0 16 16">
+ <path d="M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/0-square.svg b/vendor/twbs/bootstrap-icons/icons/0-square.svg
new file mode 100644
index 000000000..73b7bc168
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/0-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-square" viewBox="0 0 16 16">
+ <path d="M7.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/1-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/1-circle-fill.svg
new file mode 100644
index 000000000..b10d0f3ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/1-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.283 4.002H7.971L6.072 5.385v1.271l1.834-1.318h.065V12h1.312z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/1-circle.svg b/vendor/twbs/bootstrap-icons/icons/1-circle.svg
new file mode 100644
index 000000000..2aa21f9e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/1-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/1-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/1-square-fill.svg
new file mode 100644
index 000000000..2ce792fdb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/1-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm7.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/1-square.svg b/vendor/twbs/bootstrap-icons/icons/1-square.svg
new file mode 100644
index 000000000..773534a2f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/1-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-square" viewBox="0 0 16 16">
+ <path d="M9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/123.svg b/vendor/twbs/bootstrap-icons/icons/123.svg
new file mode 100644
index 000000000..277d40520
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/123.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-123" viewBox="0 0 16 16">
+ <path d="M2.873 11.297V4.142H1.699L0 5.379v1.137l1.64-1.18h.06v5.961zm3.213-5.09v-.063c0-.618.44-1.169 1.196-1.169.676 0 1.174.44 1.174 1.106 0 .624-.42 1.101-.807 1.526L4.99 10.553v.744h4.78v-.99H6.643v-.069L8.41 8.252c.65-.724 1.237-1.332 1.237-2.27C9.646 4.849 8.723 4 7.308 4c-1.573 0-2.36 1.064-2.36 2.15v.057zm6.559 1.883h.786c.823 0 1.374.481 1.379 1.179.01.707-.55 1.216-1.421 1.21-.77-.005-1.326-.419-1.379-.953h-1.095c.042 1.053.938 1.918 2.464 1.918 1.478 0 2.642-.839 2.62-2.144-.02-1.143-.922-1.651-1.551-1.714v-.063c.535-.09 1.347-.66 1.326-1.678-.026-1.053-.933-1.855-2.359-1.845-1.5.005-2.317.88-2.348 1.898h1.116c.032-.498.498-.944 1.206-.944.703 0 1.206.435 1.206 1.07.005.64-.504 1.106-1.2 1.106h-.75z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/2-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/2-circle-fill.svg
new file mode 100644
index 000000000..169df3a14
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/2-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.646 6.24c0-.691.493-1.306 1.336-1.306.756 0 1.313.492 1.313 1.236 0 .697-.469 1.23-.902 1.705l-2.971 3.293V12h5.344v-1.107H7.268v-.077l1.974-2.22.096-.107c.688-.763 1.287-1.428 1.287-2.43 0-1.266-1.031-2.215-2.613-2.215-1.758 0-2.637 1.19-2.637 2.402v.065h1.271v-.07Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/2-circle.svg b/vendor/twbs/bootstrap-icons/icons/2-circle.svg
new file mode 100644
index 000000000..00260b6c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/2-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/2-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/2-square-fill.svg
new file mode 100644
index 000000000..2760ca773
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/2-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm4.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/2-square.svg b/vendor/twbs/bootstrap-icons/icons/2-square.svg
new file mode 100644
index 000000000..4a79ed6e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/2-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-square" viewBox="0 0 16 16">
+ <path d="M6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/3-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/3-circle-fill.svg
new file mode 100644
index 000000000..9aedc47b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/3-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.082.414c.92 0 1.535.54 1.541 1.318.012.791-.615 1.36-1.588 1.354-.861-.006-1.482-.469-1.54-1.066H5.104c.047 1.177 1.05 2.144 2.754 2.144 1.653 0 2.954-.937 2.93-2.396-.023-1.278-1.031-1.846-1.734-1.916v-.07c.597-.1 1.505-.739 1.482-1.876-.03-1.177-1.043-2.074-2.637-2.062-1.675.006-2.59.984-2.625 2.12h1.248c.036-.556.557-1.054 1.348-1.054.785 0 1.348.486 1.348 1.195.006.715-.563 1.237-1.342 1.237h-.838v1.072h.879Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/3-circle.svg b/vendor/twbs/bootstrap-icons/icons/3-circle.svg
new file mode 100644
index 000000000..c2fc5178d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/3-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-circle" viewBox="0 0 16 16">
+ <path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/>
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/3-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/3-square-fill.svg
new file mode 100644
index 000000000..20c71a762
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/3-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/3-square.svg b/vendor/twbs/bootstrap-icons/icons/3-square.svg
new file mode 100644
index 000000000..f0907ccb6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/3-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-square" viewBox="0 0 16 16">
+ <path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/4-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/4-circle-fill.svg
new file mode 100644
index 000000000..51dc8a580
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/4-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M7.519 5.057c-.886 1.418-1.772 2.838-2.542 4.265v1.12H8.85V12h1.26v-1.559h1.007V9.334H10.11V4.002H8.176zM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/4-circle.svg b/vendor/twbs/bootstrap-icons/icons/4-circle.svg
new file mode 100644
index 000000000..e25df5107
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/4-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-circle" viewBox="0 0 16 16">
+ <path d="M7.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/4-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/4-square-fill.svg
new file mode 100644
index 000000000..ce3aa94af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/4-square-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-square-fill" viewBox="0 0 16 16">
+ <path d="M6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/4-square.svg b/vendor/twbs/bootstrap-icons/icons/4-square.svg
new file mode 100644
index 000000000..769102de0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/4-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-square" viewBox="0 0 16 16">
+ <path d="M7.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/5-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/5-circle-fill.svg
new file mode 100644
index 000000000..915462dcc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/5-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.006 4.158c1.74 0 2.924-1.119 2.924-2.806 0-1.641-1.178-2.584-2.56-2.584-.897 0-1.442.421-1.612.68h-.064l.193-2.344h3.621V4.002H5.791L5.445 8.63h1.149c.193-.358.668-.809 1.435-.809.85 0 1.582.604 1.582 1.57 0 1.085-.779 1.682-1.57 1.682-.697 0-1.389-.31-1.53-1.031H5.276c.065 1.213 1.149 2.115 2.72 2.115Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/5-circle.svg b/vendor/twbs/bootstrap-icons/icons/5-circle.svg
new file mode 100644
index 000000000..5ef620d44
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/5-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 1 14 0A7 7 0 0 1 1 8m15 0A8 8 0 1 0 0 8a8 8 0 0 0 16 0m-8.006 4.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/5-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/5-square-fill.svg
new file mode 100644
index 000000000..2b066bbe0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/5-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/5-square.svg b/vendor/twbs/bootstrap-icons/icons/5-square.svg
new file mode 100644
index 000000000..ad3e28117
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/5-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-square" viewBox="0 0 16 16">
+ <path d="M7.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/6-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/6-circle-fill.svg
new file mode 100644
index 000000000..21b601ad9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/6-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.21 3.855c-1.868 0-3.116 1.395-3.116 4.407 0 1.183.228 2.039.597 2.642.569.926 1.477 1.254 2.409 1.254 1.629 0 2.847-1.013 2.847-2.783 0-1.676-1.254-2.555-2.508-2.555-1.125 0-1.752.61-1.98 1.155h-.082c-.012-1.946.727-3.036 1.805-3.036.802 0 1.213.457 1.312.815h1.29c-.06-.908-.962-1.899-2.573-1.899Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/6-circle.svg b/vendor/twbs/bootstrap-icons/icons/6-circle.svg
new file mode 100644
index 000000000..fc036b024
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/6-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/6-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/6-square-fill.svg
new file mode 100644
index 000000000..908706d4d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/6-square-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-square-fill" viewBox="0 0 16 16">
+ <path d="M8.111 7.863c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/6-square.svg b/vendor/twbs/bootstrap-icons/icons/6-square.svg
new file mode 100644
index 000000000..ce28209f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/6-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-square" viewBox="0 0 16 16">
+ <path d="M8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/7-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/7-circle-fill.svg
new file mode 100644
index 000000000..0f4f6d9c5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/7-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.37 5.11h3.972v.07L6.025 12H7.42l3.258-6.85V4.002H5.369v1.107Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/7-circle.svg b/vendor/twbs/bootstrap-icons/icons/7-circle.svg
new file mode 100644
index 000000000..796f45c3e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/7-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/7-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/7-square-fill.svg
new file mode 100644
index 000000000..604186dd9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/7-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/7-square.svg b/vendor/twbs/bootstrap-icons/icons/7-square.svg
new file mode 100644
index 000000000..f26903292
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/7-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-square" viewBox="0 0 16 16">
+ <path d="M5.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/8-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/8-circle-fill.svg
new file mode 100644
index 000000000..579846b2d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/8-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.03 1.803c0-1.248-.943-1.84-1.646-1.992v-.065c.598-.187 1.336-.72 1.336-1.781 0-1.225-1.084-2.121-2.654-2.121s-2.66.896-2.66 2.12c0 1.044.709 1.589 1.33 1.782v.065c-.697.152-1.647.732-1.647 2.003 0 1.39 1.19 2.344 2.953 2.344 1.77 0 2.989-.96 2.989-2.355Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/8-circle.svg b/vendor/twbs/bootstrap-icons/icons/8-circle.svg
new file mode 100644
index 000000000..2dbb93edf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/8-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.03 1.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/8-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/8-square-fill.svg
new file mode 100644
index 000000000..f8efe93eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/8-square-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-square-fill" viewBox="0 0 16 16">
+ <path d="M6.623 6.094c0 .738.586 1.254 1.383 1.254s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23m-.281 3.644c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm8.97 9.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/8-square.svg b/vendor/twbs/bootstrap-icons/icons/8-square.svg
new file mode 100644
index 000000000..f29d225d4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/8-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-square" viewBox="0 0 16 16">
+ <path d="M10.97 9.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/9-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/9-circle-fill.svg
new file mode 100644
index 000000000..b19b3f5fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/9-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-9-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.223 4.146c2.104 0 3.123-1.464 3.123-4.3 0-3.147-1.459-4.014-2.97-4.014-1.63 0-2.871 1.02-2.871 2.73 0 1.706 1.171 2.667 2.566 2.667 1.06 0 1.7-.557 1.934-1.184h.076c.047 1.67-.475 3.023-1.834 3.023-.71 0-1.149-.363-1.248-.72H5.258c.094.908.926 1.798 2.52 1.798Zm.118-3.972c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/9-circle.svg b/vendor/twbs/bootstrap-icons/icons/9-circle.svg
new file mode 100644
index 000000000..ff919495f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/9-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-9-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.223 4.146c-1.593 0-2.425-.89-2.52-1.798h1.296c.1.357.539.72 1.248.72 1.36 0 1.88-1.353 1.834-3.023h-.076c-.235.627-.873 1.184-1.934 1.184-1.395 0-2.566-.961-2.566-2.666 0-1.711 1.242-2.731 2.87-2.731 1.512 0 2.971.867 2.971 4.014 0 2.836-1.02 4.3-3.123 4.3m.118-3.972c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/9-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/9-square-fill.svg
new file mode 100644
index 000000000..e2ca2c362
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/9-square-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-9-square-fill" viewBox="0 0 16 16">
+ <path d="M7.895 8.174c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/>
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.777 12.146c-1.593 0-2.425-.89-2.52-1.798h1.296c.1.357.539.72 1.248.72 1.36 0 1.88-1.353 1.834-3.023h-.076c-.235.627-.873 1.184-1.934 1.184-1.395 0-2.566-.961-2.566-2.666 0-1.711 1.242-2.731 2.87-2.731 1.512 0 2.971.867 2.971 4.014 0 2.836-1.02 4.3-3.123 4.3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/9-square.svg b/vendor/twbs/bootstrap-icons/icons/9-square.svg
new file mode 100644
index 000000000..3410f7bdc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/9-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-9-square" viewBox="0 0 16 16">
+ <path d="M7.777 12.146c-1.593 0-2.425-.89-2.52-1.798h1.296c.1.357.539.72 1.248.72 1.36 0 1.88-1.353 1.834-3.023h-.076c-.235.627-.873 1.184-1.934 1.184-1.395 0-2.566-.961-2.566-2.666 0-1.711 1.242-2.731 2.87-2.731 1.512 0 2.971.867 2.971 4.014 0 2.836-1.02 4.3-3.123 4.3m.118-3.972c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/activity.svg b/vendor/twbs/bootstrap-icons/icons/activity.svg
new file mode 100644
index 000000000..1ca946ec6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/activity.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-activity" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 2a.5.5 0 0 1 .47.33L10 12.036l1.53-4.208A.5.5 0 0 1 12 7.5h3.5a.5.5 0 0 1 0 1h-3.15l-1.88 5.17a.5.5 0 0 1-.94 0L6 3.964 4.47 8.171A.5.5 0 0 1 4 8.5H.5a.5.5 0 0 1 0-1h3.15l1.88-5.17A.5.5 0 0 1 6 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/airplane-engines-fill.svg b/vendor/twbs/bootstrap-icons/icons/airplane-engines-fill.svg
new file mode 100644
index 000000000..3d8f185e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/airplane-engines-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-airplane-engines-fill" viewBox="0 0 16 16">
+ <path d="M8 0c-.787 0-1.292.592-1.572 1.151A4.35 4.35 0 0 0 6 3v3.691l-2 1V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.191l-1.17.585A1.5 1.5 0 0 0 0 10.618V12a.5.5 0 0 0 .582.493l1.631-.272.313.937a.5.5 0 0 0 .948 0l.405-1.214 2.21-.369.375 2.253-1.318 1.318A.5.5 0 0 0 5.5 16h5a.5.5 0 0 0 .354-.854l-1.318-1.318.375-2.253 2.21.369.405 1.214a.5.5 0 0 0 .948 0l.313-.937 1.63.272A.5.5 0 0 0 16 12v-1.382a1.5 1.5 0 0 0-.83-1.342L14 8.691V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v.191l-2-1V3c0-.568-.14-1.271-.428-1.849C9.292.591 8.787 0 8 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/airplane-engines.svg b/vendor/twbs/bootstrap-icons/icons/airplane-engines.svg
new file mode 100644
index 000000000..2efc31ecc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/airplane-engines.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-airplane-engines" viewBox="0 0 16 16">
+ <path d="M8 0c-.787 0-1.292.592-1.572 1.151A4.35 4.35 0 0 0 6 3v3.691l-2 1V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.191l-1.17.585A1.5 1.5 0 0 0 0 10.618V12a.5.5 0 0 0 .582.493l1.631-.272.313.937a.5.5 0 0 0 .948 0l.405-1.214 2.21-.369.375 2.253-1.318 1.318A.5.5 0 0 0 5.5 16h5a.5.5 0 0 0 .354-.854l-1.318-1.318.375-2.253 2.21.369.405 1.214a.5.5 0 0 0 .948 0l.313-.937 1.63.272A.5.5 0 0 0 16 12v-1.382a1.5 1.5 0 0 0-.83-1.342L14 8.691V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v.191l-2-1V3c0-.568-.14-1.271-.428-1.849C9.292.591 8.787 0 8 0M7 3c0-.432.11-.979.322-1.401C7.542 1.159 7.787 1 8 1s.458.158.678.599C8.889 2.02 9 2.569 9 3v4a.5.5 0 0 0 .276.447l5.448 2.724a.5.5 0 0 1 .276.447v.792l-5.418-.903a.5.5 0 0 0-.575.41l-.5 3a.5.5 0 0 0 .14.437l.646.646H6.707l.647-.646a.5.5 0 0 0 .14-.436l-.5-3a.5.5 0 0 0-.576-.411L1 11.41v-.792a.5.5 0 0 1 .276-.447l5.448-2.724A.5.5 0 0 0 7 7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/airplane-fill.svg b/vendor/twbs/bootstrap-icons/icons/airplane-fill.svg
new file mode 100644
index 000000000..b1e4fa3a0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/airplane-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-airplane-fill" viewBox="0 0 16 16">
+ <path d="M6.428 1.151C6.708.591 7.213 0 8 0s1.292.592 1.572 1.151C9.861 1.73 10 2.431 10 3v3.691l5.17 2.585a1.5 1.5 0 0 1 .83 1.342V12a.5.5 0 0 1-.582.493l-5.507-.918-.375 2.253 1.318 1.318A.5.5 0 0 1 10.5 16h-5a.5.5 0 0 1-.354-.854l1.319-1.318-.376-2.253-5.507.918A.5.5 0 0 1 0 12v-1.382a1.5 1.5 0 0 1 .83-1.342L6 6.691V3c0-.568.14-1.271.428-1.849"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/airplane.svg b/vendor/twbs/bootstrap-icons/icons/airplane.svg
new file mode 100644
index 000000000..5f937e1c0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/airplane.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-airplane" viewBox="0 0 16 16">
+ <path d="M6.428 1.151C6.708.591 7.213 0 8 0s1.292.592 1.572 1.151C9.861 1.73 10 2.431 10 3v3.691l5.17 2.585a1.5 1.5 0 0 1 .83 1.342V12a.5.5 0 0 1-.582.493l-5.507-.918-.375 2.253 1.318 1.318A.5.5 0 0 1 10.5 16h-5a.5.5 0 0 1-.354-.854l1.319-1.318-.376-2.253-5.507.918A.5.5 0 0 1 0 12v-1.382a1.5 1.5 0 0 1 .83-1.342L6 6.691V3c0-.568.14-1.271.428-1.849m.894.448C7.111 2.02 7 2.569 7 3v4a.5.5 0 0 1-.276.447l-5.448 2.724a.5.5 0 0 0-.276.447v.792l5.418-.903a.5.5 0 0 1 .575.41l.5 3a.5.5 0 0 1-.14.437L6.708 15h2.586l-.647-.646a.5.5 0 0 1-.14-.436l.5-3a.5.5 0 0 1 .576-.411L15 11.41v-.792a.5.5 0 0 0-.276-.447L9.276 7.447A.5.5 0 0 1 9 7V3c0-.432-.11-.979-.322-1.401C8.458 1.159 8.213 1 8 1s-.458.158-.678.599"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/alarm-fill.svg b/vendor/twbs/bootstrap-icons/icons/alarm-fill.svg
new file mode 100644
index 000000000..a53c88fa7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/alarm-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alarm-fill" viewBox="0 0 16 16">
+ <path d="M6 .5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1H9v1.07a7.001 7.001 0 0 1 3.274 12.474l.601.602a.5.5 0 0 1-.707.708l-.746-.746A6.97 6.97 0 0 1 8 16a6.97 6.97 0 0 1-3.422-.892l-.746.746a.5.5 0 0 1-.707-.708l.602-.602A7.001 7.001 0 0 1 7 2.07V1h-.5A.5.5 0 0 1 6 .5m2.5 5a.5.5 0 0 0-1 0v3.362l-1.429 2.38a.5.5 0 1 0 .858.515l1.5-2.5A.5.5 0 0 0 8.5 9zM.86 5.387A2.5 2.5 0 1 1 4.387 1.86 8.04 8.04 0 0 0 .86 5.387M11.613 1.86a2.5 2.5 0 1 1 3.527 3.527 8.04 8.04 0 0 0-3.527-3.527"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/alarm.svg b/vendor/twbs/bootstrap-icons/icons/alarm.svg
new file mode 100644
index 000000000..27160b3bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/alarm.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alarm" viewBox="0 0 16 16">
+ <path d="M8.5 5.5a.5.5 0 0 0-1 0v3.362l-1.429 2.38a.5.5 0 1 0 .858.515l1.5-2.5A.5.5 0 0 0 8.5 9z"/>
+ <path d="M6.5 0a.5.5 0 0 0 0 1H7v1.07a7.001 7.001 0 0 0-3.273 12.474l-.602.602a.5.5 0 0 0 .707.708l.746-.746A6.97 6.97 0 0 0 8 16a6.97 6.97 0 0 0 3.422-.892l.746.746a.5.5 0 0 0 .707-.708l-.601-.602A7.001 7.001 0 0 0 9 2.07V1h.5a.5.5 0 0 0 0-1zm1.038 3.018a6 6 0 0 1 .924 0 6 6 0 1 1-.924 0M0 3.5c0 .753.333 1.429.86 1.887A8.04 8.04 0 0 1 4.387 1.86 2.5 2.5 0 0 0 0 3.5M13.5 1c-.753 0-1.429.333-1.887.86a8.04 8.04 0 0 1 3.527 3.527A2.5 2.5 0 0 0 13.5 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/alexa.svg b/vendor/twbs/bootstrap-icons/icons/alexa.svg
new file mode 100644
index 000000000..0827c41db
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/alexa.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alexa" viewBox="0 0 16 16">
+ <path d="M7.996 0A8 8 0 0 0 0 8a8 8 0 0 0 6.93 7.93v-1.613a1.06 1.06 0 0 0-.717-1.008A5.6 5.6 0 0 1 2.4 7.865 5.58 5.58 0 0 1 8.054 2.4a5.6 5.6 0 0 1 5.535 5.81l-.002.046-.012.192-.005.061a5 5 0 0 1-.033.284l-.01.068c-.685 4.516-6.564 7.054-6.596 7.068A7.998 7.998 0 0 0 15.992 8 8 8 0 0 0 7.996.001Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/align-bottom.svg b/vendor/twbs/bootstrap-icons/icons/align-bottom.svg
new file mode 100644
index 000000000..5c2569f07
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/align-bottom.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-bottom" viewBox="0 0 16 16">
+ <rect width="4" height="12" x="6" y="1" rx="1"/>
+ <path d="M1.5 14a.5.5 0 0 0 0 1zm13 1a.5.5 0 0 0 0-1zm-13 0h13v-1h-13z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/align-center.svg b/vendor/twbs/bootstrap-icons/icons/align-center.svg
new file mode 100644
index 000000000..ea4290bce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/align-center.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-center" viewBox="0 0 16 16">
+ <path d="M8 1a.5.5 0 0 1 .5.5V6h-1V1.5A.5.5 0 0 1 8 1m0 14a.5.5 0 0 1-.5-.5V10h1v4.5a.5.5 0 0 1-.5.5M2 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/align-end.svg b/vendor/twbs/bootstrap-icons/icons/align-end.svg
new file mode 100644
index 000000000..15429bbd9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/align-end.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-end" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5"/>
+ <path d="M13 7a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/align-middle.svg b/vendor/twbs/bootstrap-icons/icons/align-middle.svg
new file mode 100644
index 000000000..82f680168
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/align-middle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-middle" viewBox="0 0 16 16">
+ <path d="M6 13a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1zM1 8a.5.5 0 0 0 .5.5H6v-1H1.5A.5.5 0 0 0 1 8m14 0a.5.5 0 0 1-.5.5H10v-1h4.5a.5.5 0 0 1 .5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/align-start.svg b/vendor/twbs/bootstrap-icons/icons/align-start.svg
new file mode 100644
index 000000000..75dca501f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/align-start.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-start" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.5 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13a.5.5 0 0 1 .5-.5"/>
+ <path d="M3 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/align-top.svg b/vendor/twbs/bootstrap-icons/icons/align-top.svg
new file mode 100644
index 000000000..f354fc530
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/align-top.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-top" viewBox="0 0 16 16">
+ <rect width="4" height="12" rx="1" transform="matrix(1 0 0 -1 6 15)"/>
+ <path d="M1.5 2a.5.5 0 0 1 0-1zm13-1a.5.5 0 0 1 0 1zm-13 0h13v1h-13z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/alipay.svg b/vendor/twbs/bootstrap-icons/icons/alipay.svg
new file mode 100644
index 000000000..30b6fe7dd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/alipay.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alipay" viewBox="0 0 16 16">
+ <path d="M2.541 0H13.5a2.55 2.55 0 0 1 2.54 2.563v8.297c-.006 0-.531-.046-2.978-.813-.412-.14-.916-.327-1.479-.536q-.456-.17-.957-.353a13 13 0 0 0 1.325-3.373H8.822V4.649h3.831v-.634h-3.83V2.121H7.26c-.274 0-.274.273-.274.273v1.621H3.11v.634h3.875v1.136h-3.2v.634H9.99c-.227.789-.532 1.53-.894 2.202-2.013-.67-4.161-1.212-5.51-.878-.864.214-1.42.597-1.746.998-1.499 1.84-.424 4.633 2.741 4.633 1.872 0 3.675-1.053 5.072-2.787 2.08 1.008 6.37 2.738 6.387 2.745v.105A2.55 2.55 0 0 1 13.5 16H2.541A2.55 2.55 0 0 1 0 13.437V2.563A2.55 2.55 0 0 1 2.541 0"/>
+ <path d="M2.309 9.27c-1.22 1.073-.49 3.034 1.978 3.034 1.434 0 2.868-.925 3.994-2.406-1.602-.789-2.959-1.353-4.425-1.207-.397.04-1.14.217-1.547.58Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/alphabet-uppercase.svg b/vendor/twbs/bootstrap-icons/icons/alphabet-uppercase.svg
new file mode 100644
index 000000000..d0887b5d2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/alphabet-uppercase.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alphabet-uppercase" viewBox="0 0 16 16">
+ <path d="M1.226 10.88H0l2.056-6.26h1.42l2.047 6.26h-1.29l-.48-1.61H1.707l-.48 1.61ZM2.76 5.818h-.054l-.75 2.532H3.51zm3.217 5.062V4.62h2.56c1.09 0 1.808.582 1.808 1.54 0 .762-.444 1.22-1.05 1.372v.055c.736.074 1.365.587 1.365 1.528 0 1.119-.89 1.766-2.133 1.766zM7.18 5.55v1.675h.8c.812 0 1.171-.308 1.171-.853 0-.51-.328-.822-.898-.822zm0 2.537V9.95h.903c.951 0 1.342-.312 1.342-.909 0-.591-.382-.954-1.095-.954zm5.089-.711v.775c0 1.156.49 1.803 1.347 1.803.705 0 1.163-.454 1.212-1.096H16v.12C15.942 10.173 14.95 11 13.607 11c-1.648 0-2.573-1.073-2.573-2.849v-.78c0-1.775.934-2.871 2.573-2.871 1.347 0 2.34.849 2.393 2.087v.115h-1.172c-.05-.665-.516-1.156-1.212-1.156-.849 0-1.347.67-1.347 1.83"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/alphabet.svg b/vendor/twbs/bootstrap-icons/icons/alphabet.svg
new file mode 100644
index 000000000..5d097d7a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/alphabet.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alphabet" viewBox="0 0 16 16">
+ <path d="M2.204 11.078c.767 0 1.201-.356 1.406-.737h.059V11h1.216V7.519c0-1.314-.947-1.783-2.11-1.783C1.355 5.736.75 6.42.69 7.27h1.216c.064-.323.313-.552.84-.552s.864.249.864.771v.464H2.346C1.145 7.953.5 8.568.5 9.496c0 .977.693 1.582 1.704 1.582m.42-.947c-.44 0-.845-.235-.845-.718 0-.395.269-.684.84-.684h.991v.538c0 .503-.444.864-.986.864m5.593.937c1.216 0 1.948-.869 1.948-2.31v-.702c0-1.44-.727-2.305-1.929-2.305-.742 0-1.328.347-1.499.889h-.063V3.983h-1.29V11h1.27v-.791h.064c.21.532.776.86 1.499.86Zm-.43-1.025c-.66 0-1.113-.518-1.113-1.28V8.12c0-.825.42-1.343 1.098-1.343.684 0 1.075.518 1.075 1.416v.45c0 .888-.386 1.401-1.06 1.401Zm2.834-1.328c0 1.47.87 2.378 2.305 2.378 1.416 0 2.139-.777 2.158-1.763h-1.186c-.06.425-.313.732-.933.732-.66 0-1.05-.512-1.05-1.352v-.625c0-.81.371-1.328 1.045-1.328.635 0 .879.425.918.776h1.187c-.02-.986-.787-1.806-2.14-1.806-1.41 0-2.304.918-2.304 2.338z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/alt.svg b/vendor/twbs/bootstrap-icons/icons/alt.svg
new file mode 100644
index 000000000..2141bcb50
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/alt.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alt" viewBox="0 0 16 16">
+ <path d="M1 13.5a.5.5 0 0 0 .5.5h3.797a.5.5 0 0 0 .439-.26L11 3h3.5a.5.5 0 0 0 0-1h-3.797a.5.5 0 0 0-.439.26L5 13H1.5a.5.5 0 0 0-.5.5m10 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/amazon.svg b/vendor/twbs/bootstrap-icons/icons/amazon.svg
new file mode 100644
index 000000000..07525458e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/amazon.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-amazon" viewBox="0 0 16 16">
+ <path d="M10.813 11.968c.157.083.36.074.5-.05l.005.005a90 90 0 0 1 1.623-1.405c.173-.143.143-.372.006-.563l-.125-.17c-.345-.465-.673-.906-.673-1.791v-3.3l.001-.335c.008-1.265.014-2.421-.933-3.305C10.404.274 9.06 0 8.03 0 6.017 0 3.77.75 3.296 3.24c-.047.264.143.404.316.443l2.054.22c.19-.009.33-.196.366-.387.176-.857.896-1.271 1.703-1.271.435 0 .929.16 1.188.55.264.39.26.91.257 1.376v.432q-.3.033-.621.065c-1.113.114-2.397.246-3.36.67C3.873 5.91 2.94 7.08 2.94 8.798c0 2.2 1.387 3.298 3.168 3.298 1.506 0 2.328-.354 3.489-1.54l.167.246c.274.405.456.675 1.047 1.166ZM6.03 8.431C6.03 6.627 7.647 6.3 9.177 6.3v.57c.001.776.002 1.434-.396 2.133-.336.595-.87.961-1.465.961-.812 0-1.286-.619-1.286-1.533M.435 12.174c2.629 1.603 6.698 4.084 13.183.997.28-.116.475.078.199.431C13.538 13.96 11.312 16 7.57 16 3.832 16 .968 13.446.094 12.386c-.24-.275.036-.4.199-.299z"/>
+ <path d="M13.828 11.943c.567-.07 1.468-.027 1.645.204.135.176-.004.966-.233 1.533-.23.563-.572.961-.762 1.115s-.333.094-.23-.137c.105-.23.684-1.663.455-1.963-.213-.278-1.177-.177-1.625-.13l-.09.009q-.142.013-.233.024c-.193.021-.245.027-.274-.032-.074-.209.779-.556 1.347-.623"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/amd.svg b/vendor/twbs/bootstrap-icons/icons/amd.svg
new file mode 100644
index 000000000..ef0757ce9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/amd.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-amd" viewBox="0 0 16 16">
+ <path d="m.334 0 4.358 4.359h7.15v7.15l4.358 4.358V0zM.2 9.72l4.487-4.488v6.281h6.28L6.48 16H.2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/android.svg b/vendor/twbs/bootstrap-icons/icons/android.svg
new file mode 100644
index 000000000..4c1f097cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/android.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-android" viewBox="0 0 16 16">
+ <path d="M2.76 3.061a.5.5 0 0 1 .679.2l1.283 2.352A8.9 8.9 0 0 1 8 5a8.9 8.9 0 0 1 3.278.613l1.283-2.352a.5.5 0 1 1 .878.478l-1.252 2.295C14.475 7.266 16 9.477 16 12H0c0-2.523 1.525-4.734 3.813-5.966L2.56 3.74a.5.5 0 0 1 .2-.678ZM5 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2m6 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/android2.svg b/vendor/twbs/bootstrap-icons/icons/android2.svg
new file mode 100644
index 000000000..f49c14ea2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/android2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-android2" viewBox="0 0 16 16">
+ <path d="m10.213 1.471.691-1.26q.069-.124-.048-.192-.128-.057-.195.058l-.7 1.27A4.8 4.8 0 0 0 8.005.941q-1.032 0-1.956.404l-.7-1.27Q5.281-.037 5.154.02q-.117.069-.049.193l.691 1.259a4.25 4.25 0 0 0-1.673 1.476A3.7 3.7 0 0 0 3.5 5.02h9q0-1.125-.623-2.072a4.27 4.27 0 0 0-1.664-1.476ZM6.22 3.303a.37.37 0 0 1-.267.11.35.35 0 0 1-.263-.11.37.37 0 0 1-.107-.264.37.37 0 0 1 .107-.265.35.35 0 0 1 .263-.11q.155 0 .267.11a.36.36 0 0 1 .112.265.36.36 0 0 1-.112.264m4.101 0a.35.35 0 0 1-.262.11.37.37 0 0 1-.268-.11.36.36 0 0 1-.112-.264q0-.154.112-.265a.37.37 0 0 1 .268-.11q.155 0 .262.11a.37.37 0 0 1 .107.265q0 .153-.107.264M3.5 11.77q0 .441.311.75.311.306.76.307h.758l.01 2.182q0 .414.292.703a.96.96 0 0 0 .7.288.97.97 0 0 0 .71-.288.95.95 0 0 0 .292-.703v-2.182h1.343v2.182q0 .414.292.703a.97.97 0 0 0 .71.288.97.97 0 0 0 .71-.288.95.95 0 0 0 .292-.703v-2.182h.76q.436 0 .749-.308.31-.307.311-.75V5.365h-9zm10.495-6.587a.98.98 0 0 0-.702.278.9.9 0 0 0-.293.685v4.063q0 .406.293.69a.97.97 0 0 0 .702.284q.42 0 .712-.284a.92.92 0 0 0 .293-.69V6.146a.9.9 0 0 0-.293-.685 1 1 0 0 0-.712-.278m-12.702.283a1 1 0 0 1 .712-.283q.41 0 .702.283a.9.9 0 0 1 .293.68v4.063a.93.93 0 0 1-.288.69.97.97 0 0 1-.707.284 1 1 0 0 1-.712-.284.92.92 0 0 1-.293-.69V6.146q0-.396.293-.68"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/app-indicator.svg b/vendor/twbs/bootstrap-icons/icons/app-indicator.svg
new file mode 100644
index 000000000..b28e2195d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/app-indicator.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-app-indicator" viewBox="0 0 16 16">
+ <path d="M5.5 2A3.5 3.5 0 0 0 2 5.5v5A3.5 3.5 0 0 0 5.5 14h5a3.5 3.5 0 0 0 3.5-3.5V8a.5.5 0 0 1 1 0v2.5a4.5 4.5 0 0 1-4.5 4.5h-5A4.5 4.5 0 0 1 1 10.5v-5A4.5 4.5 0 0 1 5.5 1H8a.5.5 0 0 1 0 1z"/>
+ <path d="M16 3a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/app.svg b/vendor/twbs/bootstrap-icons/icons/app.svg
new file mode 100644
index 000000000..b36130807
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/app.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-app" viewBox="0 0 16 16">
+ <path d="M11 2a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/apple.svg b/vendor/twbs/bootstrap-icons/icons/apple.svg
new file mode 100644
index 000000000..58235c3fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/apple.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-apple" viewBox="0 0 16 16">
+ <path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516s1.52.087 2.475-1.258.762-2.391.728-2.43m3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422s1.675-2.789 1.698-2.854-.597-.79-1.254-1.157a3.7 3.7 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56s.625 1.924 1.273 2.796c.576.984 1.34 1.667 1.659 1.899s1.219.386 1.843.067c.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758q.52-1.185.473-1.282"/>
+ <path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516s1.52.087 2.475-1.258.762-2.391.728-2.43m3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422s1.675-2.789 1.698-2.854-.597-.79-1.254-1.157a3.7 3.7 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56s.625 1.924 1.273 2.796c.576.984 1.34 1.667 1.659 1.899s1.219.386 1.843.067c.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758q.52-1.185.473-1.282"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/archive-fill.svg b/vendor/twbs/bootstrap-icons/icons/archive-fill.svg
new file mode 100644
index 000000000..e5ea32be2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/archive-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-archive-fill" viewBox="0 0 16 16">
+ <path d="M12.643 15C13.979 15 15 13.845 15 12.5V5H1v7.5C1 13.845 2.021 15 3.357 15zM5.5 7h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1M.8 1a.8.8 0 0 0-.8.8V3a.8.8 0 0 0 .8.8h14.4A.8.8 0 0 0 16 3V1.8a.8.8 0 0 0-.8-.8z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/archive.svg b/vendor/twbs/bootstrap-icons/icons/archive.svg
new file mode 100644
index 000000000..7bc5eb2aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/archive.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-archive" viewBox="0 0 16 16">
+ <path d="M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v7.5a2.5 2.5 0 0 1-2.5 2.5h-9A2.5 2.5 0 0 1 1 12.5V5a1 1 0 0 1-1-1zm2 3v7.5A1.5 1.5 0 0 0 3.5 14h9a1.5 1.5 0 0 0 1.5-1.5V5zm13-3H1v2h14zM5 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-90deg-down.svg b/vendor/twbs/bootstrap-icons/icons/arrow-90deg-down.svg
new file mode 100644
index 000000000..7459597ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-90deg-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-90deg-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4.854 14.854a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L4 13.293V3.5A2.5 2.5 0 0 1 6.5 1h8a.5.5 0 0 1 0 1h-8A1.5 1.5 0 0 0 5 3.5v9.793l3.146-3.147a.5.5 0 0 1 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-90deg-left.svg b/vendor/twbs/bootstrap-icons/icons/arrow-90deg-left.svg
new file mode 100644
index 000000000..4e17ab49d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-90deg-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-90deg-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.146 4.854a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 4H12.5A2.5 2.5 0 0 1 15 6.5v8a.5.5 0 0 1-1 0v-8A1.5 1.5 0 0 0 12.5 5H2.707l3.147 3.146a.5.5 0 1 1-.708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-90deg-right.svg b/vendor/twbs/bootstrap-icons/icons/arrow-90deg-right.svg
new file mode 100644
index 000000000..9fb6363ce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-90deg-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-90deg-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14.854 4.854a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 4H3.5A2.5 2.5 0 0 0 1 6.5v8a.5.5 0 0 0 1 0v-8A1.5 1.5 0 0 1 3.5 5h9.793l-3.147 3.146a.5.5 0 0 0 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-90deg-up.svg b/vendor/twbs/bootstrap-icons/icons/arrow-90deg-up.svg
new file mode 100644
index 000000000..11be0dec4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-90deg-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-90deg-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4.854 1.146a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L4 2.707V12.5A2.5 2.5 0 0 0 6.5 15h8a.5.5 0 0 0 0-1h-8A1.5 1.5 0 0 1 5 12.5V2.707l3.146 3.147a.5.5 0 1 0 .708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-bar-down.svg b/vendor/twbs/bootstrap-icons/icons/arrow-bar-down.svg
new file mode 100644
index 000000000..1b212d514
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-bar-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-bar-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 3.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13a.5.5 0 0 1-.5-.5M8 6a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 .708-.708L7.5 12.293V6.5A.5.5 0 0 1 8 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-bar-left.svg b/vendor/twbs/bootstrap-icons/icons/arrow-bar-left.svg
new file mode 100644
index 000000000..621bf2a2d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-bar-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-bar-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M12.5 15a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5M10 8a.5.5 0 0 1-.5.5H3.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L3.707 7.5H9.5a.5.5 0 0 1 .5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-bar-right.svg b/vendor/twbs/bootstrap-icons/icons/arrow-bar-right.svg
new file mode 100644
index 000000000..0210410a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-bar-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-bar-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 8a.5.5 0 0 0 .5.5h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L12.293 7.5H6.5A.5.5 0 0 0 6 8m-2.5 7a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-bar-up.svg b/vendor/twbs/bootstrap-icons/icons/arrow-bar-up.svg
new file mode 100644
index 000000000..d5510da2e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-bar-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-bar-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 10a.5.5 0 0 0 .5-.5V3.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 3.707V9.5a.5.5 0 0 0 .5.5m-7 2.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-clockwise.svg b/vendor/twbs/bootstrap-icons/icons/arrow-clockwise.svg
new file mode 100644
index 000000000..324d5af1a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-clockwise.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-clockwise" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2z"/>
+ <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-counterclockwise.svg b/vendor/twbs/bootstrap-icons/icons/arrow-counterclockwise.svg
new file mode 100644
index 000000000..3d9ff62ef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-counterclockwise.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-counterclockwise" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 3a5 5 0 1 1-4.546 2.914.5.5 0 0 0-.908-.417A6 6 0 1 0 8 2z"/>
+ <path d="M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-circle-fill.svg
new file mode 100644
index 000000000..242eb58d8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.5 4.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-circle.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-circle.svg
new file mode 100644
index 000000000..42e96b54e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-circle" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.5 4.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-left-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-left-circle-fill.svg
new file mode 100644
index 000000000..e7f4735c4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-left-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-left-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 0 0 8a8 8 0 0 0 16 0m-5.904-2.803a.5.5 0 1 1 .707.707L6.707 10h2.768a.5.5 0 0 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.525a.5.5 0 0 1 1 0v2.768z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-left-circle.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-left-circle.svg
new file mode 100644
index 000000000..f67491fbf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-left-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-left-circle" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.904-2.854a.5.5 0 1 1 .707.708L6.707 9.95h2.768a.5.5 0 1 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.475a.5.5 0 1 1 1 0v2.768z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-left-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-left-square-fill.svg
new file mode 100644
index 000000000..6e03bf23d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-left-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-left-square-fill" viewBox="0 0 16 16">
+ <path d="M2 16a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2zm8.096-10.803L6 9.293V6.525a.5.5 0 0 0-1 0V10.5a.5.5 0 0 0 .5.5h3.975a.5.5 0 0 0 0-1H6.707l4.096-4.096a.5.5 0 1 0-.707-.707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-left-square.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-left-square.svg
new file mode 100644
index 000000000..1278d394e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-left-square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-left-square" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm10.096 3.146a.5.5 0 1 1 .707.708L6.707 9.95h2.768a.5.5 0 1 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.475a.5.5 0 1 1 1 0v2.768z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-left.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-left.svg
new file mode 100644
index 000000000..4011c77b8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 13.5a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 0-1H3.707L13.854 2.854a.5.5 0 0 0-.708-.708L3 12.293V7.5a.5.5 0 0 0-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-right-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-right-circle-fill.svg
new file mode 100644
index 000000000..4ff73b6ae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-right-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-right-circle-fill" viewBox="0 0 16 16">
+ <path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m5.904-2.803a.5.5 0 1 0-.707.707L9.293 10H6.525a.5.5 0 0 0 0 1H10.5a.5.5 0 0 0 .5-.5V6.525a.5.5 0 0 0-1 0v2.768z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-right-circle.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-right-circle.svg
new file mode 100644
index 000000000..054e83f68
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-right-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-right-circle" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.854 5.146a.5.5 0 1 0-.708.708L9.243 9.95H6.475a.5.5 0 1 0 0 1h3.975a.5.5 0 0 0 .5-.5V6.475a.5.5 0 1 0-1 0v2.768z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-right-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-right-square-fill.svg
new file mode 100644
index 000000000..a556e0667
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-right-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-right-square-fill" viewBox="0 0 16 16">
+ <path d="M14 16a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2zM5.904 5.197 10 9.293V6.525a.5.5 0 0 1 1 0V10.5a.5.5 0 0 1-.5.5H6.525a.5.5 0 0 1 0-1h2.768L5.197 5.904a.5.5 0 0 1 .707-.707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-right-square.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-right-square.svg
new file mode 100644
index 000000000..4bfb67926
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-right-square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-right-square" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.854 3.146a.5.5 0 1 0-.708.708L9.243 9.95H6.475a.5.5 0 1 0 0 1h3.975a.5.5 0 0 0 .5-.5V6.475a.5.5 0 1 0-1 0v2.768z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-right.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-right.svg
new file mode 100644
index 000000000..08aef1661
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 13.5a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1 0-1h4.793L2.146 2.854a.5.5 0 1 1 .708-.708L13 12.293V7.5a.5.5 0 0 1 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-short.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-short.svg
new file mode 100644
index 000000000..66b7fa1b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-short.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-short" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-square-fill.svg
new file mode 100644
index 000000000..c9020dc7b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.5 4.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-square.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-square.svg
new file mode 100644
index 000000000..c492b71a7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-square" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8.5 2.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down-up.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down-up.svg
new file mode 100644
index 000000000..04cb3a535
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11.5 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L11 2.707V14.5a.5.5 0 0 0 .5.5m-7-14a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L4 13.293V1.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-down.svg b/vendor/twbs/bootstrap-icons/icons/arrow-down.svg
new file mode 100644
index 000000000..f66f74bad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-left-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-left-circle-fill.svg
new file mode 100644
index 000000000..ae19d97b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-left-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-left-circle-fill" viewBox="0 0 16 16">
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0m3.5 7.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-left-circle.svg b/vendor/twbs/bootstrap-icons/icons/arrow-left-circle.svg
new file mode 100644
index 000000000..f3246ea01
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-left-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-left-circle" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-4.5-.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-left-right.svg b/vendor/twbs/bootstrap-icons/icons/arrow-left-right.svg
new file mode 100644
index 000000000..89c40034e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-left-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-left-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 11.5a.5.5 0 0 0 .5.5h11.793l-3.147 3.146a.5.5 0 0 0 .708.708l4-4a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 11H1.5a.5.5 0 0 0-.5.5m14-7a.5.5 0 0 1-.5.5H2.707l3.147 3.146a.5.5 0 1 1-.708.708l-4-4a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 4H14.5a.5.5 0 0 1 .5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-left-short.svg b/vendor/twbs/bootstrap-icons/icons/arrow-left-short.svg
new file mode 100644
index 000000000..abb15dd76
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-left-short.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-left-short" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M12 8a.5.5 0 0 1-.5.5H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5a.5.5 0 0 1 .5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-left-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-left-square-fill.svg
new file mode 100644
index 000000000..3ee717ebc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-left-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-left-square-fill" viewBox="0 0 16 16">
+ <path d="M16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2zm-4.5-6.5H5.707l2.147-2.146a.5.5 0 1 0-.708-.708l-3 3a.5.5 0 0 0 0 .708l3 3a.5.5 0 0 0 .708-.708L5.707 8.5H11.5a.5.5 0 0 0 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-left-square.svg b/vendor/twbs/bootstrap-icons/icons/arrow-left-square.svg
new file mode 100644
index 000000000..8f09a48c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-left-square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-left-square" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm11.5 5.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-left.svg b/vendor/twbs/bootstrap-icons/icons/arrow-left.svg
new file mode 100644
index 000000000..587d4fec8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-repeat.svg b/vendor/twbs/bootstrap-icons/icons/arrow-repeat.svg
new file mode 100644
index 000000000..b17dba47b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-repeat.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-repeat" viewBox="0 0 16 16">
+ <path d="M11.534 7h3.932a.25.25 0 0 1 .192.41l-1.966 2.36a.25.25 0 0 1-.384 0l-1.966-2.36a.25.25 0 0 1 .192-.41m-11 2h3.932a.25.25 0 0 0 .192-.41L2.692 6.23a.25.25 0 0 0-.384 0L.342 8.59A.25.25 0 0 0 .534 9"/>
+ <path fill-rule="evenodd" d="M8 3c-1.552 0-2.94.707-3.857 1.818a.5.5 0 1 1-.771-.636A6.002 6.002 0 0 1 13.917 7H12.9A5 5 0 0 0 8 3M3.1 9a5.002 5.002 0 0 0 8.757 2.182.5.5 0 1 1 .771.636A6.002 6.002 0 0 1 2.083 9z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-return-left.svg b/vendor/twbs/bootstrap-icons/icons/arrow-return-left.svg
new file mode 100644
index 000000000..3c13fc406
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-return-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-return-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14.5 1.5a.5.5 0 0 1 .5.5v4.8a2.5 2.5 0 0 1-2.5 2.5H2.707l3.347 3.346a.5.5 0 0 1-.708.708l-4.2-4.2a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 8.3H12.5A1.5 1.5 0 0 0 14 6.8V2a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-return-right.svg b/vendor/twbs/bootstrap-icons/icons/arrow-return-right.svg
new file mode 100644
index 000000000..60d282c91
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-return-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-return-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.5 1.5A.5.5 0 0 0 1 2v4.8a2.5 2.5 0 0 0 2.5 2.5h9.793l-3.347 3.346a.5.5 0 0 0 .708.708l4.2-4.2a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 8.3H3.5A1.5 1.5 0 0 1 2 6.8V2a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-right-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-right-circle-fill.svg
new file mode 100644
index 000000000..32c21ea3f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-right-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right-circle-fill" viewBox="0 0 16 16">
+ <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M4.5 7.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-right-circle.svg b/vendor/twbs/bootstrap-icons/icons/arrow-right-circle.svg
new file mode 100644
index 000000000..ad7293e1a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-right-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right-circle" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M4.5 7.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-right-short.svg b/vendor/twbs/bootstrap-icons/icons/arrow-right-short.svg
new file mode 100644
index 000000000..fa238fffb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-right-short.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right-short" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-right-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-right-square-fill.svg
new file mode 100644
index 000000000..c7c8eec92
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-right-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right-square-fill" viewBox="0 0 16 16">
+ <path d="M0 14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2zm4.5-6.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-right-square.svg b/vendor/twbs/bootstrap-icons/icons/arrow-right-square.svg
new file mode 100644
index 000000000..7a4b78b7c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-right-square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right-square" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm4.5 5.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-right.svg b/vendor/twbs/bootstrap-icons/icons/arrow-right.svg
new file mode 100644
index 000000000..236290439
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-through-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-through-heart-fill.svg
new file mode 100644
index 000000000..e98bce15b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-through-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-through-heart-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2.854 15.854A.5.5 0 0 1 2 15.5V14H.5a.5.5 0 0 1-.354-.854l1.5-1.5A.5.5 0 0 1 2 11.5h1.793l3.103-3.104a.5.5 0 1 1 .708.708L4.5 12.207V14a.5.5 0 0 1-.146.354zM16 3.5a.5.5 0 0 1-.854.354L14 2.707l-1.006 1.006c.236.248.44.531.6.845.562 1.096.585 2.517-.213 4.092-.793 1.563-2.395 3.288-5.105 5.08L8 13.912l-.276-.182A24 24 0 0 1 5.8 12.323L8.31 9.81a1.5 1.5 0 0 0-2.122-2.122L3.657 10.22a9 9 0 0 1-1.039-1.57c-.798-1.576-.775-2.997-.213-4.093C3.426 2.565 6.18 1.809 8 3.233c1.25-.98 2.944-.928 4.212-.152L13.292 2 12.147.854A.5.5 0 0 1 12.5 0h3a.5.5 0 0 1 .5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-through-heart.svg b/vendor/twbs/bootstrap-icons/icons/arrow-through-heart.svg
new file mode 100644
index 000000000..daf397bbb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-through-heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-through-heart" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2.854 15.854A.5.5 0 0 1 2 15.5V14H.5a.5.5 0 0 1-.354-.854l1.5-1.5A.5.5 0 0 1 2 11.5h1.793l.53-.53c-.771-.802-1.328-1.58-1.704-2.32-.798-1.575-.775-2.996-.213-4.092C3.426 2.565 6.18 1.809 8 3.233c1.25-.98 2.944-.928 4.212-.152L13.292 2 12.147.854A.5.5 0 0 1 12.5 0h3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.854.354L14 2.707l-1.006 1.006c.236.248.44.531.6.845.562 1.096.585 2.517-.213 4.092-.793 1.563-2.395 3.288-5.105 5.08L8 13.912l-.276-.182a22 22 0 0 1-2.685-2.062l-.539.54V14a.5.5 0 0 1-.146.354zm2.893-4.894A20.4 20.4 0 0 0 8 12.71c2.456-1.666 3.827-3.207 4.489-4.512.679-1.34.607-2.42.215-3.185-.817-1.595-3.087-2.054-4.346-.761L8 4.62l-.358-.368c-1.259-1.293-3.53-.834-4.346.761-.392.766-.464 1.845.215 3.185.323.636.815 1.33 1.519 2.065l1.866-1.867a.5.5 0 1 1 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-circle-fill.svg
new file mode 100644
index 000000000..9e7ef362c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 0 0 8a8 8 0 0 0 16 0m-7.5 3.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-circle.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-circle.svg
new file mode 100644
index 000000000..e18a6890b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-circle" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-7.5 3.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-left-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-left-circle-fill.svg
new file mode 100644
index 000000000..e1e2e97d4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-left-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-left-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.904 2.803a.5.5 0 1 0 .707-.707L6.707 6h2.768a.5.5 0 1 0 0-1H5.5a.5.5 0 0 0-.5.5v3.975a.5.5 0 0 0 1 0V6.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-left-circle.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-left-circle.svg
new file mode 100644
index 000000000..3101b65d2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-left-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-left-circle" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.904 2.803a.5.5 0 1 0 .707-.707L6.707 6h2.768a.5.5 0 1 0 0-1H5.5a.5.5 0 0 0-.5.5v3.975a.5.5 0 0 0 1 0V6.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-left-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-left-square-fill.svg
new file mode 100644
index 000000000..e699865fa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-left-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-left-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm8.096 10.803L6 6.707v2.768a.5.5 0 0 1-1 0V5.5a.5.5 0 0 1 .5-.5h3.975a.5.5 0 1 1 0 1H6.707l4.096 4.096a.5.5 0 1 1-.707.707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-left-square.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-left-square.svg
new file mode 100644
index 000000000..4f31190bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-left-square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-left-square" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm10.096 8.803a.5.5 0 1 0 .707-.707L6.707 6h2.768a.5.5 0 1 0 0-1H5.5a.5.5 0 0 0-.5.5v3.975a.5.5 0 0 0 1 0V6.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-left.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-left.svg
new file mode 100644
index 000000000..938d0d01f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 2.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1H3.707l10.147 10.146a.5.5 0 0 1-.708.708L3 3.707V8.5a.5.5 0 0 1-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-right-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-right-circle-fill.svg
new file mode 100644
index 000000000..0eb9b5440
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-right-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-right-circle-fill" viewBox="0 0 16 16">
+ <path d="M0 8a8 8 0 1 0 16 0A8 8 0 0 0 0 8m5.904 2.803a.5.5 0 1 1-.707-.707L9.293 6H6.525a.5.5 0 1 1 0-1H10.5a.5.5 0 0 1 .5.5v3.975a.5.5 0 0 1-1 0V6.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-right-circle.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-right-circle.svg
new file mode 100644
index 000000000..ed6ae4151
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-right-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-right-circle" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.854 10.803a.5.5 0 1 1-.708-.707L9.243 6H6.475a.5.5 0 1 1 0-1h3.975a.5.5 0 0 1 .5.5v3.975a.5.5 0 1 1-1 0V6.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-right-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-right-square-fill.svg
new file mode 100644
index 000000000..c2246ec7e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-right-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-right-square-fill" viewBox="0 0 16 16">
+ <path d="M14 0a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zM5.904 10.803 10 6.707v2.768a.5.5 0 0 0 1 0V5.5a.5.5 0 0 0-.5-.5H6.525a.5.5 0 1 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 .707.707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-right-square.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-right-square.svg
new file mode 100644
index 000000000..b14940fb8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-right-square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-right-square" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.854 8.803a.5.5 0 1 1-.708-.707L9.243 6H6.475a.5.5 0 1 1 0-1h3.975a.5.5 0 0 1 .5.5v3.975a.5.5 0 1 1-1 0V6.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-right.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-right.svg
new file mode 100644
index 000000000..7b3794b8d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 2.5a.5.5 0 0 0-.5-.5h-6a.5.5 0 0 0 0 1h4.793L2.146 13.146a.5.5 0 0 0 .708.708L13 3.707V8.5a.5.5 0 0 0 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-short.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-short.svg
new file mode 100644
index 000000000..543089afb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-short.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-short" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-square-fill.svg
new file mode 100644
index 000000000..9d7f65f4f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-square-fill" viewBox="0 0 16 16">
+ <path d="M2 16a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2zm6.5-4.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up-square.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up-square.svg
new file mode 100644
index 000000000..bec15c49b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up-square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-square" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8.5 9.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrow-up.svg b/vendor/twbs/bootstrap-icons/icons/arrow-up.svg
new file mode 100644
index 000000000..951521a68
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrow-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrows-angle-contract.svg b/vendor/twbs/bootstrap-icons/icons/arrows-angle-contract.svg
new file mode 100644
index 000000000..1aa78751c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrows-angle-contract.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows-angle-contract" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M.172 15.828a.5.5 0 0 0 .707 0l4.096-4.096V14.5a.5.5 0 1 0 1 0v-3.975a.5.5 0 0 0-.5-.5H1.5a.5.5 0 0 0 0 1h2.768L.172 15.121a.5.5 0 0 0 0 .707M15.828.172a.5.5 0 0 0-.707 0l-4.096 4.096V1.5a.5.5 0 1 0-1 0v3.975a.5.5 0 0 0 .5.5H14.5a.5.5 0 0 0 0-1h-2.768L15.828.879a.5.5 0 0 0 0-.707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrows-angle-expand.svg b/vendor/twbs/bootstrap-icons/icons/arrows-angle-expand.svg
new file mode 100644
index 000000000..578d3b66c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrows-angle-expand.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows-angle-expand" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5.828 10.172a.5.5 0 0 0-.707 0l-4.096 4.096V11.5a.5.5 0 0 0-1 0v3.975a.5.5 0 0 0 .5.5H4.5a.5.5 0 0 0 0-1H1.732l4.096-4.096a.5.5 0 0 0 0-.707m4.344-4.344a.5.5 0 0 0 .707 0l4.096-4.096V4.5a.5.5 0 1 0 1 0V.525a.5.5 0 0 0-.5-.5H11.5a.5.5 0 0 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 0 .707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrows-collapse-vertical.svg b/vendor/twbs/bootstrap-icons/icons/arrows-collapse-vertical.svg
new file mode 100644
index 000000000..0fc447799
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrows-collapse-vertical.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows-collapse-vertical" viewBox="0 0 16 16">
+ <path d="M8 15a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5M0 8a.5.5 0 0 1 .5-.5h3.793L3.146 6.354a.5.5 0 1 1 .708-.708l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L4.293 8.5H.5A.5.5 0 0 1 0 8m11.707.5 1.147 1.146a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708l2-2a.5.5 0 0 1 .708.708L11.707 7.5H15.5a.5.5 0 0 1 0 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrows-collapse.svg b/vendor/twbs/bootstrap-icons/icons/arrows-collapse.svg
new file mode 100644
index 000000000..ca055c3e2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrows-collapse.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows-collapse" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8m7-8a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 4.293V.5A.5.5 0 0 1 8 0m-.5 11.707-1.146 1.147a.5.5 0 0 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 11.707V15.5a.5.5 0 0 1-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrows-expand-vertical.svg b/vendor/twbs/bootstrap-icons/icons/arrows-expand-vertical.svg
new file mode 100644
index 000000000..9dbfac458
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrows-expand-vertical.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows-expand-vertical" viewBox="0 0 16 16">
+ <path d="M8 15a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5M.146 8.354a.5.5 0 0 1 0-.708l2-2a.5.5 0 1 1 .708.708L1.707 7.5H5.5a.5.5 0 0 1 0 1H1.707l1.147 1.146a.5.5 0 0 1-.708.708zM10 8a.5.5 0 0 1 .5-.5h3.793l-1.147-1.146a.5.5 0 0 1 .708-.708l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L14.293 8.5H10.5A.5.5 0 0 1 10 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrows-expand.svg b/vendor/twbs/bootstrap-icons/icons/arrows-expand.svg
new file mode 100644
index 000000000..99eb276ca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrows-expand.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows-expand" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8M7.646.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 1.707V5.5a.5.5 0 0 1-1 0V1.707L6.354 2.854a.5.5 0 1 1-.708-.708zM8 10a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7.5 14.293V10.5A.5.5 0 0 1 8 10"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrows-fullscreen.svg b/vendor/twbs/bootstrap-icons/icons/arrows-fullscreen.svg
new file mode 100644
index 000000000..7633e3f1d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrows-fullscreen.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows-fullscreen" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5.828 10.172a.5.5 0 0 0-.707 0l-4.096 4.096V11.5a.5.5 0 0 0-1 0v3.975a.5.5 0 0 0 .5.5H4.5a.5.5 0 0 0 0-1H1.732l4.096-4.096a.5.5 0 0 0 0-.707m4.344 0a.5.5 0 0 1 .707 0l4.096 4.096V11.5a.5.5 0 1 1 1 0v3.975a.5.5 0 0 1-.5.5H11.5a.5.5 0 0 1 0-1h2.768l-4.096-4.096a.5.5 0 0 1 0-.707m0-4.344a.5.5 0 0 0 .707 0l4.096-4.096V4.5a.5.5 0 1 0 1 0V.525a.5.5 0 0 0-.5-.5H11.5a.5.5 0 0 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 0 .707m-4.344 0a.5.5 0 0 1-.707 0L1.025 1.732V4.5a.5.5 0 0 1-1 0V.525a.5.5 0 0 1 .5-.5H4.5a.5.5 0 0 1 0 1H1.732l4.096 4.096a.5.5 0 0 1 0 .707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrows-move.svg b/vendor/twbs/bootstrap-icons/icons/arrows-move.svg
new file mode 100644
index 000000000..ef2b885fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrows-move.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows-move" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.646.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 1.707V5.5a.5.5 0 0 1-1 0V1.707L6.354 2.854a.5.5 0 1 1-.708-.708zM8 10a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7.5 14.293V10.5A.5.5 0 0 1 8 10M.146 8.354a.5.5 0 0 1 0-.708l2-2a.5.5 0 1 1 .708.708L1.707 7.5H5.5a.5.5 0 0 1 0 1H1.707l1.147 1.146a.5.5 0 0 1-.708.708zM10 8a.5.5 0 0 1 .5-.5h3.793l-1.147-1.146a.5.5 0 0 1 .708-.708l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L14.293 8.5H10.5A.5.5 0 0 1 10 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrows-vertical.svg b/vendor/twbs/bootstrap-icons/icons/arrows-vertical.svg
new file mode 100644
index 000000000..22f60fdc4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrows-vertical.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows-vertical" viewBox="0 0 16 16">
+ <path d="M8.354 14.854a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7.5 13.293V2.707L6.354 3.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 2.707v10.586l1.146-1.147a.5.5 0 0 1 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/arrows.svg b/vendor/twbs/bootstrap-icons/icons/arrows.svg
new file mode 100644
index 000000000..a6bd3d758
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/arrows.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows" viewBox="0 0 16 16">
+ <path d="M1.146 8.354a.5.5 0 0 1 0-.708l2-2a.5.5 0 1 1 .708.708L2.707 7.5h10.586l-1.147-1.146a.5.5 0 0 1 .708-.708l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L13.293 8.5H2.707l1.147 1.146a.5.5 0 0 1-.708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/aspect-ratio-fill.svg b/vendor/twbs/bootstrap-icons/icons/aspect-ratio-fill.svg
new file mode 100644
index 000000000..6d6cb8dcb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/aspect-ratio-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-aspect-ratio-fill" viewBox="0 0 16 16">
+ <path d="M0 12.5v-9A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5M2.5 4a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 1 0V5h2.5a.5.5 0 0 0 0-1zm11 8a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-1 0V11h-2.5a.5.5 0 0 0 0 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/aspect-ratio.svg b/vendor/twbs/bootstrap-icons/icons/aspect-ratio.svg
new file mode 100644
index 000000000..ee634b01d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/aspect-ratio.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-aspect-ratio" viewBox="0 0 16 16">
+ <path d="M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5zM1.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5z"/>
+ <path d="M2 4.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1H3v2.5a.5.5 0 0 1-1 0zm12 7a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1 0-1H13V8.5a.5.5 0 0 1 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/asterisk.svg b/vendor/twbs/bootstrap-icons/icons/asterisk.svg
new file mode 100644
index 000000000..fbc13b7b2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/asterisk.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-asterisk" viewBox="0 0 16 16">
+ <path d="M8 0a1 1 0 0 1 1 1v5.268l4.562-2.634a1 1 0 1 1 1 1.732L10 8l4.562 2.634a1 1 0 1 1-1 1.732L9 9.732V15a1 1 0 1 1-2 0V9.732l-4.562 2.634a1 1 0 1 1-1-1.732L6 8 1.438 5.366a1 1 0 0 1 1-1.732L7 6.268V1a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/at.svg b/vendor/twbs/bootstrap-icons/icons/at.svg
new file mode 100644
index 000000000..3cab29e84
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/at.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-at" viewBox="0 0 16 16">
+ <path d="M13.106 7.222c0-2.967-2.249-5.032-5.482-5.032-3.35 0-5.646 2.318-5.646 5.702 0 3.493 2.235 5.708 5.762 5.708.862 0 1.689-.123 2.304-.335v-.862c-.43.199-1.354.328-2.29.328-2.926 0-4.813-1.88-4.813-4.798 0-2.844 1.921-4.881 4.594-4.881 2.735 0 4.608 1.688 4.608 4.156 0 1.682-.554 2.769-1.416 2.769-.492 0-.772-.28-.772-.76V5.206H8.923v.834h-.11c-.266-.595-.881-.964-1.6-.964-1.4 0-2.378 1.162-2.378 2.823 0 1.737.957 2.906 2.379 2.906.8 0 1.415-.39 1.709-1.087h.11c.081.67.703 1.148 1.503 1.148 1.572 0 2.57-1.415 2.57-3.643zm-7.177.704c0-1.197.54-1.907 1.456-1.907.93 0 1.524.738 1.524 1.907S8.308 9.84 7.371 9.84c-.895 0-1.442-.725-1.442-1.914"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/award-fill.svg b/vendor/twbs/bootstrap-icons/icons/award-fill.svg
new file mode 100644
index 000000000..f996790b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/award-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-award-fill" viewBox="0 0 16 16">
+ <path d="m8 0 1.669.864 1.858.282.842 1.68 1.337 1.32L13.4 6l.306 1.854-1.337 1.32-.842 1.68-1.858.282L8 12l-1.669-.864-1.858-.282-.842-1.68-1.337-1.32L2.6 6l-.306-1.854 1.337-1.32.842-1.68L6.331.864z"/>
+ <path d="M4 11.794V16l4-1 4 1v-4.206l-2.018.306L8 13.126 6.018 12.1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/award.svg b/vendor/twbs/bootstrap-icons/icons/award.svg
new file mode 100644
index 000000000..67c760b68
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/award.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-award" viewBox="0 0 16 16">
+ <path d="M9.669.864 8 0 6.331.864l-1.858.282-.842 1.68-1.337 1.32L2.6 6l-.306 1.854 1.337 1.32.842 1.68 1.858.282L8 12l1.669-.864 1.858-.282.842-1.68 1.337-1.32L13.4 6l.306-1.854-1.337-1.32-.842-1.68zm1.196 1.193.684 1.365 1.086 1.072L12.387 6l.248 1.506-1.086 1.072-.684 1.365-1.51.229L8 10.874l-1.355-.702-1.51-.229-.684-1.365-1.086-1.072L3.614 6l-.25-1.506 1.087-1.072.684-1.365 1.51-.229L8 1.126l1.356.702z"/>
+ <path d="M4 11.794V16l4-1 4 1v-4.206l-2.018.306L8 13.126 6.018 12.1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/back.svg b/vendor/twbs/bootstrap-icons/icons/back.svg
new file mode 100644
index 000000000..9f5534000
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/back.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-back" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backpack-fill.svg b/vendor/twbs/bootstrap-icons/icons/backpack-fill.svg
new file mode 100644
index 000000000..ec737a946
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backpack-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backpack-fill" viewBox="0 0 16 16">
+ <path d="M5 13v-3h4v.5a.5.5 0 0 0 1 0V10h1v3z"/>
+ <path d="M6 2v.341C3.67 3.165 2 5.388 2 8v5.5A2.5 2.5 0 0 0 4.5 16h7a2.5 2.5 0 0 0 2.5-2.5V8a6 6 0 0 0-4-5.659V2a2 2 0 1 0-4 0m2-1a1 1 0 0 1 1 1v.083a6 6 0 0 0-2 0V2a1 1 0 0 1 1-1m0 3a4 4 0 0 1 3.96 3.43.5.5 0 1 1-.99.14 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.14A4 4 0 0 1 8 4M4.5 9h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backpack.svg b/vendor/twbs/bootstrap-icons/icons/backpack.svg
new file mode 100644
index 000000000..819aa29de
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backpack.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backpack" viewBox="0 0 16 16">
+ <path d="M4.04 7.43a4 4 0 0 1 7.92 0 .5.5 0 1 1-.99.14 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.14M4 9.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm1 .5v3h6v-3h-1v.5a.5.5 0 0 1-1 0V10z"/>
+ <path d="M6 2.341V2a2 2 0 1 1 4 0v.341c2.33.824 4 3.047 4 5.659v5.5a2.5 2.5 0 0 1-2.5 2.5h-7A2.5 2.5 0 0 1 2 13.5V8a6 6 0 0 1 4-5.659M7 2v.083a6 6 0 0 1 2 0V2a1 1 0 0 0-2 0m1 1a5 5 0 0 0-5 5v5.5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5V8a5 5 0 0 0-5-5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backpack2-fill.svg b/vendor/twbs/bootstrap-icons/icons/backpack2-fill.svg
new file mode 100644
index 000000000..3c9b4dac4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backpack2-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backpack2-fill" viewBox="0 0 16 16">
+ <path d="M5 13h6v-3h-1v.5a.5.5 0 0 1-1 0V10H5z"/>
+ <path d="M6 2v.341C3.67 3.165 2 5.388 2 8v1.191l-1.17.585A1.5 1.5 0 0 0 0 11.118V13.5A1.5 1.5 0 0 0 1.5 15h1c.456.607 1.182 1 2 1h7c.818 0 1.544-.393 2-1h1a1.5 1.5 0 0 0 1.5-1.5v-2.382a1.5 1.5 0 0 0-.83-1.342L14 9.191V8a6 6 0 0 0-4-5.659V2a2 2 0 1 0-4 0m2-1a1 1 0 0 1 1 1v.083a6 6 0 0 0-2 0V2a1 1 0 0 1 1-1m0 3a4 4 0 0 1 3.96 3.43.5.5 0 1 1-.99.14 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.14A4 4 0 0 1 8 4M4.5 9h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backpack2.svg b/vendor/twbs/bootstrap-icons/icons/backpack2.svg
new file mode 100644
index 000000000..e0e4fe598
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backpack2.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backpack2" viewBox="0 0 16 16">
+ <path d="M4.04 7.43a4 4 0 0 1 7.92 0 .5.5 0 1 1-.99.14 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.14"/>
+ <path fill-rule="evenodd" d="M4 9.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm1 .5v3h6v-3h-1v.5a.5.5 0 0 1-1 0V10z"/>
+ <path d="M6 2.341V2a2 2 0 1 1 4 0v.341c2.33.824 4 3.047 4 5.659v1.191l1.17.585a1.5 1.5 0 0 1 .83 1.342V13.5a1.5 1.5 0 0 1-1.5 1.5h-1c-.456.607-1.182 1-2 1h-7a2.5 2.5 0 0 1-2-1h-1A1.5 1.5 0 0 1 0 13.5v-2.382a1.5 1.5 0 0 1 .83-1.342L2 9.191V8a6 6 0 0 1 4-5.659M7 2v.083a6 6 0 0 1 2 0V2a1 1 0 0 0-2 0M3 13.5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5V8A5 5 0 0 0 3 8zm-1-3.19-.724.362a.5.5 0 0 0-.276.447V13.5a.5.5 0 0 0 .5.5H2zm12 0V14h.5a.5.5 0 0 0 .5-.5v-2.382a.5.5 0 0 0-.276-.447L14 10.309Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backpack3-fill.svg b/vendor/twbs/bootstrap-icons/icons/backpack3-fill.svg
new file mode 100644
index 000000000..4583c4f25
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backpack3-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backpack3-fill" viewBox="0 0 16 16">
+ <path d="M5 10v3h6v-3h-1v.5a.5.5 0 0 1-1 0V10z"/>
+ <path d="M6 2v.341a6 6 0 0 0-1.308.653l-.416-1.247a1 1 0 0 0-1.749-.284l-.77 1.027a1 1 0 0 0-.149.917l.803 2.407A6 6 0 0 0 2 8v5.5A2.5 2.5 0 0 0 4.5 16h7a2.5 2.5 0 0 0 2.5-2.5V8c0-.771-.146-1.509-.41-2.186l.801-2.407a1 1 0 0 0-.148-.917l-.77-1.027a1 1 0 0 0-1.75.284l-.415 1.247A6 6 0 0 0 10 2.34V2a2 2 0 1 0-4 0m1 0a1 1 0 0 1 2 0v.083a6 6 0 0 0-2 0zm5.941 2.595a6 6 0 0 0-.8-.937l.531-1.595.77 1.027zM3.86 3.658a6 6 0 0 0-.8.937L2.557 3.09l.77-1.027zm.18 3.772a4 4 0 0 1 7.92 0 .5.5 0 1 1-.99.142 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.142M4 9.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backpack3.svg b/vendor/twbs/bootstrap-icons/icons/backpack3.svg
new file mode 100644
index 000000000..819f8dfce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backpack3.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backpack3" viewBox="0 0 16 16">
+ <path d="M4.04 7.43a4 4 0 0 1 7.92 0 .5.5 0 1 1-.99.14 3 3 0 0 0-5.94 0 .5.5 0 1 1-.99-.14M4 9.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm1 .5v3h6v-3h-1v.5a.5.5 0 0 1-1 0V10z"/>
+ <path d="M6 2.341V2a2 2 0 1 1 4 0v.341c.465.165.904.385 1.308.653l.416-1.247a1 1 0 0 1 1.748-.284l.77 1.027a1 1 0 0 1 .15.917l-.803 2.407C13.854 6.49 14 7.229 14 8v5.5a2.5 2.5 0 0 1-2.5 2.5h-7A2.5 2.5 0 0 1 2 13.5V8c0-.771.146-1.509.41-2.186l-.802-2.407a1 1 0 0 1 .15-.917l.77-1.027a1 1 0 0 1 1.748.284l.416 1.247A6 6 0 0 1 6 2.34ZM7 2v.083a6 6 0 0 1 2 0V2a1 1 0 1 0-2 0m5.941 2.595.502-1.505-.77-1.027-.532 1.595q.447.427.8.937M3.86 3.658l-.532-1.595-.77 1.027.502 1.505q.352-.51.8-.937M8 3a5 5 0 0 0-5 5v5.5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5V8a5 5 0 0 0-5-5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backpack4-fill.svg b/vendor/twbs/bootstrap-icons/icons/backpack4-fill.svg
new file mode 100644
index 000000000..a3bba3a26
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backpack4-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backpack4-fill" viewBox="0 0 16 16">
+ <path d="M8 0a2 2 0 0 0-2 2H3.5a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h4v.5a.5.5 0 0 0 1 0V7h4a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H10a2 2 0 0 0-2-2m1 2a1 1 0 0 0-2 0zm-4 9v2h6v-2h-1v.5a.5.5 0 0 1-1 0V11z"/>
+ <path d="M14 7.599A3 3 0 0 1 12.5 8H9.415a1.5 1.5 0 0 1-2.83 0H3.5A3 3 0 0 1 2 7.599V14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM4 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backpack4.svg b/vendor/twbs/bootstrap-icons/icons/backpack4.svg
new file mode 100644
index 000000000..140a12da2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backpack4.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backpack4" viewBox="0 0 16 16">
+ <path d="M4 9.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm1 .5v3h6v-3h-1v.5a.5.5 0 0 1-1 0V10z"/>
+ <path d="M8 0a2 2 0 0 0-2 2H3.5a2 2 0 0 0-2 2v1c0 .52.198.993.523 1.349A.5.5 0 0 0 2 6.5V14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V6.5a.5.5 0 0 0-.023-.151c.325-.356.523-.83.523-1.349V4a2 2 0 0 0-2-2H10a2 2 0 0 0-2-2m0 1a1 1 0 0 0-1 1h2a1 1 0 0 0-1-1M3 14V6.937q.24.062.5.063h4v.5a.5.5 0 0 0 1 0V7h4q.26 0 .5-.063V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1m9.5-11a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backspace-fill.svg b/vendor/twbs/bootstrap-icons/icons/backspace-fill.svg
new file mode 100644
index 000000000..078757864
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backspace-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backspace-fill" viewBox="0 0 16 16">
+ <path d="M15.683 3a2 2 0 0 0-2-2h-7.08a2 2 0 0 0-1.519.698L.241 7.35a1 1 0 0 0 0 1.302l4.843 5.65A2 2 0 0 0 6.603 15h7.08a2 2 0 0 0 2-2zM5.829 5.854a.5.5 0 1 1 .707-.708l2.147 2.147 2.146-2.147a.5.5 0 1 1 .707.708L9.39 8l2.146 2.146a.5.5 0 0 1-.707.708L8.683 8.707l-2.147 2.147a.5.5 0 0 1-.707-.708L7.976 8z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backspace-reverse-fill.svg b/vendor/twbs/bootstrap-icons/icons/backspace-reverse-fill.svg
new file mode 100644
index 000000000..41c8dbbd0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backspace-reverse-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backspace-reverse-fill" viewBox="0 0 16 16">
+ <path d="M0 3a2 2 0 0 1 2-2h7.08a2 2 0 0 1 1.519.698l4.843 5.651a1 1 0 0 1 0 1.302L10.6 14.3a2 2 0 0 1-1.52.7H2a2 2 0 0 1-2-2zm9.854 2.854a.5.5 0 0 0-.708-.708L7 7.293 4.854 5.146a.5.5 0 1 0-.708.708L6.293 8l-2.147 2.146a.5.5 0 0 0 .708.708L7 8.707l2.146 2.147a.5.5 0 0 0 .708-.708L7.707 8z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backspace-reverse.svg b/vendor/twbs/bootstrap-icons/icons/backspace-reverse.svg
new file mode 100644
index 000000000..7b3fafd08
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backspace-reverse.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backspace-reverse" viewBox="0 0 16 16">
+ <path d="M9.854 5.146a.5.5 0 0 1 0 .708L7.707 8l2.147 2.146a.5.5 0 0 1-.708.708L7 8.707l-2.146 2.147a.5.5 0 0 1-.708-.708L6.293 8 4.146 5.854a.5.5 0 1 1 .708-.708L7 7.293l2.146-2.147a.5.5 0 0 1 .708 0"/>
+ <path d="M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h7.08a2 2 0 0 0 1.519-.698l4.843-5.651a1 1 0 0 0 0-1.302L10.6 1.7A2 2 0 0 0 9.08 1zm7.08 1a1 1 0 0 1 .76.35L14.682 8l-4.844 5.65a1 1 0 0 1-.759.35H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/backspace.svg b/vendor/twbs/bootstrap-icons/icons/backspace.svg
new file mode 100644
index 000000000..39b688f1d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/backspace.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backspace" viewBox="0 0 16 16">
+ <path d="M5.83 5.146a.5.5 0 0 0 0 .708L7.975 8l-2.147 2.146a.5.5 0 0 0 .707.708l2.147-2.147 2.146 2.147a.5.5 0 0 0 .707-.708L9.39 8l2.146-2.146a.5.5 0 0 0-.707-.708L8.683 7.293 6.536 5.146a.5.5 0 0 0-.707 0z"/>
+ <path d="M13.683 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-7.08a2 2 0 0 1-1.519-.698L.241 8.65a1 1 0 0 1 0-1.302L5.084 1.7A2 2 0 0 1 6.603 1zm-7.08 1a1 1 0 0 0-.76.35L1 8l4.844 5.65a1 1 0 0 0 .759.35h7.08a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-3d-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-3d-fill.svg
new file mode 100644
index 000000000..750598c35
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-3d-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-3d-fill" viewBox="0 0 16 16">
+ <path d="M10.157 5.968h-.844v4.06h.844c1.116 0 1.621-.667 1.621-2.02 0-1.354-.51-2.04-1.621-2.04"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.184 4.368c.646 0 1.055.378 1.06.9.008.537-.427.919-1.086.919-.598-.004-1.037-.325-1.068-.756H3c.03.914.791 1.688 2.153 1.688 1.24 0 2.285-.66 2.272-1.798-.013-.953-.747-1.38-1.292-1.432v-.062c.44-.07 1.125-.527 1.108-1.375-.013-.906-.8-1.57-2.053-1.565-1.31.005-2.043.734-2.074 1.67h1.103c.022-.391.383-.751.936-.751.532 0 .928.33.928.813.004.479-.383.835-.928.835h-.632v.914zM8.126 11h2.189C12.125 11 13 9.893 13 7.985c0-1.894-.861-2.984-2.685-2.984H8.126z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-3d.svg b/vendor/twbs/bootstrap-icons/icons/badge-3d.svg
new file mode 100644
index 000000000..b3153f2a7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-3d.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-3d" viewBox="0 0 16 16">
+ <path d="M4.52 8.368h.664c.646 0 1.055.378 1.06.9.008.537-.427.919-1.086.919-.598-.004-1.037-.325-1.068-.756H3c.03.914.791 1.688 2.153 1.688 1.24 0 2.285-.66 2.272-1.798-.013-.953-.747-1.38-1.292-1.432v-.062c.44-.07 1.125-.527 1.108-1.375-.013-.906-.8-1.57-2.053-1.565-1.31.005-2.043.734-2.074 1.67h1.103c.022-.391.383-.751.936-.751.532 0 .928.33.928.813.004.479-.383.835-.928.835h-.632v.914zm3.606-3.367V11h2.189C12.125 11 13 9.893 13 7.985c0-1.894-.861-2.984-2.685-2.984zm1.187.967h.844c1.112 0 1.621.686 1.621 2.04 0 1.353-.505 2.02-1.621 2.02h-.844z"/>
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-4k-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-4k-fill.svg
new file mode 100644
index 000000000..72f34b9b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-4k-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-4k-fill" viewBox="0 0 16 16">
+ <path d="M3.577 8.9v.03h1.828V5.898h-.062a47 47 0 0 0-1.766 3.001z"/>
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm2.372 3.715.435-.714h1.71v3.93h.733v.957h-.733V11H5.405V9.888H2.5v-.971c.574-1.077 1.225-2.142 1.872-3.202m7.73-.714h1.306l-2.14 2.584L13.5 11h-1.428l-1.679-2.624-.615.7V11H8.59V5.001h1.187v2.686h.057L12.102 5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-4k.svg b/vendor/twbs/bootstrap-icons/icons/badge-4k.svg
new file mode 100644
index 000000000..3dfc9b1d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-4k.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-4k" viewBox="0 0 16 16">
+ <path d="M4.807 5.001C4.021 6.298 3.203 7.6 2.5 8.917v.971h2.905V11h1.112V9.888h.733V8.93h-.733V5.001zm-1.23 3.93v-.032a47 47 0 0 1 1.766-3.001h.062V8.93zm9.831-3.93h-1.306L9.835 7.687h-.057V5H8.59v6h1.187V9.075l.615-.699L12.072 11H13.5l-2.232-3.415z"/>
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-8k-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-8k-fill.svg
new file mode 100644
index 000000000..4bd9b8012
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-8k-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-8k-fill" viewBox="0 0 16 16">
+ <path d="M3.9 6.605c0 .51.405.866.95.866s.945-.356.945-.866-.4-.852-.945-.852-.95.343-.95.852m-.192 2.668c0 .589.492.984 1.142.984.646 0 1.143-.395 1.143-.984S5.496 8.28 4.85 8.28c-.65 0-1.142.404-1.142.993"/>
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm5.17 7.348c0 1.041-.927 1.766-2.333 1.766s-2.312-.72-2.312-1.762c0-.954.712-1.384 1.257-1.494v-.053c-.51-.154-1.02-.558-1.02-1.331 0-.914.831-1.587 2.088-1.587 1.253 0 2.083.673 2.083 1.587 0 .782-.523 1.182-1.02 1.331v.053c.545.11 1.257.545 1.257 1.49M12.102 5h1.306l-2.14 2.584 2.232 3.415h-1.428l-1.679-2.624-.615.699v1.925H8.59V5h1.187v2.685h.057z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-8k.svg b/vendor/twbs/bootstrap-icons/icons/badge-8k.svg
new file mode 100644
index 000000000..d11f82d71
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-8k.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-8k" viewBox="0 0 16 16">
+ <path d="M4.837 11.114c1.406 0 2.333-.725 2.333-1.766 0-.945-.712-1.38-1.256-1.49v-.053c.496-.15 1.02-.55 1.02-1.331 0-.914-.831-1.587-2.084-1.587-1.257 0-2.087.673-2.087 1.587 0 .773.51 1.177 1.02 1.331v.053c-.546.11-1.258.54-1.258 1.494 0 1.042.906 1.762 2.312 1.762m.013-3.643c-.545 0-.95-.356-.95-.866s.405-.852.95-.852.945.343.945.852c0 .51-.4.866-.945.866m0 2.786c-.65 0-1.142-.395-1.142-.984S4.2 8.28 4.85 8.28c.646 0 1.143.404 1.143.993s-.497.984-1.143.984M13.408 5h-1.306L9.835 7.685h-.057V5H8.59v5.998h1.187V9.075l.615-.699 1.679 2.623H13.5l-2.232-3.414z"/>
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-ad-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-ad-fill.svg
new file mode 100644
index 000000000..023f2102a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-ad-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-ad-fill" viewBox="0 0 16 16">
+ <path d="M11.35 8.337c0-.699-.42-1.138-1.001-1.138-.584 0-.954.444-.954 1.239v.453c0 .8.374 1.248.972 1.248.588 0 .984-.44.984-1.2zm-5.413.237-.734-2.426H5.15l-.734 2.426h1.52z"/>
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm6.209 6.32c0-1.28.694-2.044 1.753-2.044.655 0 1.156.294 1.336.769h.053v-2.36h1.16V11h-1.138v-.747h-.057c-.145.474-.69.804-1.367.804-1.055 0-1.74-.764-1.74-2.043v-.695zm-4.04 1.138L3.7 11H2.5l2.013-5.999H5.9L7.905 11H6.644l-.47-1.542H4.17z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-ad.svg b/vendor/twbs/bootstrap-icons/icons/badge-ad.svg
new file mode 100644
index 000000000..616ad74d4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-ad.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-ad" viewBox="0 0 16 16">
+ <path d="m3.7 11 .47-1.542h2.004L6.644 11h1.261L5.901 5.001H4.513L2.5 11zm1.503-4.852.734 2.426H4.416l.734-2.426zm4.759.128c-1.059 0-1.753.765-1.753 2.043v.695c0 1.279.685 2.043 1.74 2.043.677 0 1.222-.33 1.367-.804h.057V11h1.138V4.685h-1.16v2.36h-.053c-.18-.475-.68-.77-1.336-.77zm.387.923c.58 0 1.002.44 1.002 1.138v.602c0 .76-.396 1.2-.984 1.2-.598 0-.972-.449-.972-1.248v-.453c0-.795.37-1.24.954-1.24z"/>
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-ar-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-ar-fill.svg
new file mode 100644
index 000000000..48aee0fb2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-ar-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-ar-fill" viewBox="0 0 16 16">
+ <path d="m6.031 8.574-.734-2.426h-.052L4.51 8.574h1.52zm3.642-2.641v1.938h1.033c.66 0 1.068-.316 1.068-.95 0-.64-.422-.988-1.05-.988z"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm4.265 5.458h2.004L6.739 11H8L5.996 5.001H4.607L2.595 11h1.2zM8.5 5v6h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-ar.svg b/vendor/twbs/bootstrap-icons/icons/badge-ar.svg
new file mode 100644
index 000000000..0fc197541
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-ar.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-ar" viewBox="0 0 16 16">
+ <path d="m3.794 11 .47-1.542H6.27L6.739 11H8L5.996 5.001H4.607L2.595 11zm1.503-4.852.734 2.426h-1.52l.734-2.426zm5.598-1.147H8.5V11h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9zm-1.222 2.87V5.933h1.05c.63 0 1.05.347 1.05.989 0 .633-.408.95-1.067.95z"/>
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-cc-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-cc-fill.svg
new file mode 100644
index 000000000..0f3d1f944
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-cc-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-cc-fill" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm3.027 4.002c-.83 0-1.319.642-1.319 1.753v.743c0 1.107.48 1.727 1.319 1.727.69 0 1.138-.435 1.186-1.05H7.36v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747C2.5 6.051 3.414 5 5.018 5c1.318 0 2.29.813 2.342 2v.11H6.213c-.048-.638-.505-1.108-1.186-1.108m6.14 0c-.831 0-1.319.642-1.319 1.753v.743c0 1.107.48 1.727 1.318 1.727.69 0 1.139-.435 1.187-1.05H13.5v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.751 2.518-2.751 1.318 0 2.29.813 2.342 2v.11h-1.147c-.048-.638-.505-1.108-1.187-1.108z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-cc.svg b/vendor/twbs/bootstrap-icons/icons/badge-cc.svg
new file mode 100644
index 000000000..d5f42e185
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-cc.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-cc" viewBox="0 0 16 16">
+ <path d="M3.708 7.755c0-1.111.488-1.753 1.319-1.753.681 0 1.138.47 1.186 1.107H7.36V7c-.052-1.186-1.024-2-2.342-2C3.414 5 2.5 6.05 2.5 7.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114H6.213c-.048.615-.496 1.05-1.186 1.05-.84 0-1.319-.62-1.319-1.727zm6.14 0c0-1.111.488-1.753 1.318-1.753.682 0 1.139.47 1.187 1.107H13.5V7c-.053-1.186-1.024-2-2.342-2C9.554 5 8.64 6.05 8.64 7.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114h-1.147c-.048.615-.497 1.05-1.187 1.05-.839 0-1.318-.62-1.318-1.727z"/>
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-hd-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-hd-fill.svg
new file mode 100644
index 000000000..96f087580
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-hd-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-hd-fill" viewBox="0 0 16 16">
+ <path d="M10.53 5.968h-.843v4.06h.843c1.117 0 1.622-.667 1.622-2.02 0-1.354-.51-2.04-1.622-2.04"/>
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm5.396 3.001V11H6.209V8.43H3.687V11H2.5V5.001h1.187v2.44h2.522V5h1.187zM8.5 11V5.001h2.188c1.824 0 2.685 1.09 2.685 2.984C13.373 9.893 12.5 11 10.69 11z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-hd.svg b/vendor/twbs/bootstrap-icons/icons/badge-hd.svg
new file mode 100644
index 000000000..5689042f2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-hd.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-hd" viewBox="0 0 16 16">
+ <path d="M7.396 11V5.001H6.209v2.44H3.687V5H2.5v6h1.187V8.43h2.522V11zM8.5 5.001V11h2.188c1.811 0 2.685-1.107 2.685-3.015 0-1.894-.86-2.984-2.684-2.984zm1.187.967h.843c1.112 0 1.622.686 1.622 2.04 0 1.353-.505 2.02-1.622 2.02h-.843z"/>
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-sd-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-sd-fill.svg
new file mode 100644
index 000000000..a37154a2d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-sd-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-sd-fill" viewBox="0 0 16 16">
+ <path d="M10.338 5.968h-.844v4.06h.844c1.116 0 1.622-.667 1.622-2.02 0-1.354-.51-2.04-1.622-2.04"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.077 7.114c1.521 0 2.378-.764 2.378-1.88 0-1.007-.642-1.473-1.613-1.692l-.932-.216c-.527-.114-.821-.351-.821-.712 0-.466.39-.804 1.046-.804.637 0 1.028.33 1.103.76h1.125c-.058-.923-.849-1.692-2.22-1.692-1.322 0-2.24.717-2.24 1.815 0 .91.588 1.446 1.52 1.657l.927.215c.624.145.923.36.923.778 0 .492-.391.83-1.13.83-.707 0-1.155-.342-1.234-.808H2.762c.052.95.79 1.75 2.315 1.75ZM8.307 11h2.19c1.81 0 2.684-1.107 2.684-3.015 0-1.894-.861-2.984-2.685-2.984H8.308z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-sd.svg b/vendor/twbs/bootstrap-icons/icons/badge-sd.svg
new file mode 100644
index 000000000..df8d02954
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-sd.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-sd" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.077 7.114c-1.524 0-2.263-.8-2.315-1.749h1.147c.079.466.527.809 1.234.809.739 0 1.13-.339 1.13-.83 0-.418-.3-.634-.923-.779l-.927-.215c-.932-.21-1.52-.747-1.52-1.657 0-1.098.918-1.815 2.24-1.815 1.371 0 2.162.77 2.22 1.692H6.238c-.075-.43-.466-.76-1.103-.76-.655 0-1.046.338-1.046.804 0 .36.294.598.821.712l.932.216c.971.22 1.613.685 1.613 1.691 0 1.117-.857 1.881-2.378 1.881M8.307 11V5.001h2.19c1.823 0 2.684 1.09 2.684 2.984 0 1.908-.874 3.015-2.685 3.015zm2.031-5.032h-.844v4.06h.844c1.116 0 1.622-.667 1.622-2.02 0-1.354-.51-2.04-1.622-2.04"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-tm-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-tm-fill.svg
new file mode 100644
index 000000000..632b56971
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-tm-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-tm-fill" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm3.295 3.995V11H4.104V5.995h-1.7V5H7v.994H5.295zM8.692 7.01V11H7.633V5.001h1.209l1.71 3.894h.039l1.71-3.894H13.5V11h-1.072V7.01h-.057l-1.42 3.239h-.773L8.75 7.008h-.058z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-tm.svg b/vendor/twbs/bootstrap-icons/icons/badge-tm.svg
new file mode 100644
index 000000000..33de5c24a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-tm.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-tm" viewBox="0 0 16 16">
+ <path d="M5.295 11V5.995H7V5H2.403v.994h1.701V11zm3.397 0V7.01h.058l1.428 3.239h.773l1.42-3.24h.057V11H13.5V5.001h-1.2l-1.71 3.894h-.039l-1.71-3.894H7.634V11h1.06z"/>
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-vo-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-vo-fill.svg
new file mode 100644
index 000000000..1d27b0740
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-vo-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-vo-fill" viewBox="0 0 16 16">
+ <path d="M12.296 8.394v-.782c0-1.156-.571-1.736-1.362-1.736-.796 0-1.363.58-1.363 1.736v.782c0 1.156.567 1.732 1.363 1.732.79 0 1.362-.576 1.362-1.732"/>
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm11.5 5.62v.77c0 1.691-.962 2.724-2.566 2.724S8.363 10.081 8.363 8.39v-.77c0-1.704.967-2.733 2.57-2.733 1.605 0 2.567 1.037 2.567 2.734zM5.937 11H4.508L2.5 5.001h1.375L5.22 9.708h.057L6.61 5.001h1.318z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-vo.svg b/vendor/twbs/bootstrap-icons/icons/badge-vo.svg
new file mode 100644
index 000000000..f5e2ecea3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-vo.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-vo" viewBox="0 0 16 16">
+ <path d="M4.508 11h1.429l1.99-5.999H6.61L5.277 9.708H5.22L3.875 5.001H2.5zM13.5 8.39v-.77c0-1.696-.962-2.733-2.566-2.733S8.363 5.916 8.363 7.621v.769c0 1.691.967 2.724 2.57 2.724 1.605 0 2.567-1.033 2.567-2.724m-1.204-.778v.782c0 1.156-.571 1.732-1.362 1.732-.796 0-1.363-.576-1.363-1.732v-.782c0-1.156.567-1.736 1.363-1.736.79 0 1.362.58 1.362 1.736"/>
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-vr-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-vr-fill.svg
new file mode 100644
index 000000000..e614af6fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-vr-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-vr-fill" viewBox="0 0 16 16">
+ <path d="M9.673 5.933v1.938h1.033c.66 0 1.068-.316 1.068-.95 0-.64-.422-.988-1.05-.988z"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.937 7 1.99-5.999H6.61L5.277 9.708H5.22L3.875 5.001H2.5L4.508 11zM8.5 5.001V11h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9H8.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-vr.svg b/vendor/twbs/bootstrap-icons/icons/badge-vr.svg
new file mode 100644
index 000000000..c1c73dc28
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-vr.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-vr" viewBox="0 0 16 16">
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+ <path d="M4.508 11h1.429l1.99-5.999H6.61L5.277 9.708H5.22L3.875 5.001H2.5zm6.387-5.999H8.5V11h1.173V8.763h1.064L11.787 11h1.327L11.91 8.583C12.455 8.373 13 7.779 13 6.9c0-1.147-.773-1.9-2.105-1.9zm-1.222 2.87V5.933h1.05c.63 0 1.05.347 1.05.989 0 .633-.408.95-1.067.95z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-wc-fill.svg b/vendor/twbs/bootstrap-icons/icons/badge-wc-fill.svg
new file mode 100644
index 000000000..d16436aaa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-wc-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-wc-fill" viewBox="0 0 16 16">
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm11.666 1.89c.682 0 1.139.47 1.187 1.107H14v-.11c-.053-1.187-1.024-2-2.342-2-1.604 0-2.518 1.05-2.518 2.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114h-1.147c-.048.615-.497 1.05-1.187 1.05-.839 0-1.318-.62-1.318-1.727v-.742c0-1.112.488-1.754 1.318-1.754zm-6.188.926h.044L6.542 11h1.006L9 5.001H7.818l-.82 4.355h-.056L5.97 5.001h-.94l-.972 4.355h-.053l-.827-4.355H2L3.452 11h1.005z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/badge-wc.svg b/vendor/twbs/bootstrap-icons/icons/badge-wc.svg
new file mode 100644
index 000000000..ea459bab4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/badge-wc.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-badge-wc" viewBox="0 0 16 16">
+ <path d="M10.348 7.643c0-1.112.488-1.754 1.318-1.754.682 0 1.139.47 1.187 1.108H14v-.11c-.053-1.187-1.024-2-2.342-2-1.604 0-2.518 1.05-2.518 2.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114h-1.147c-.048.615-.497 1.05-1.187 1.05-.839 0-1.318-.62-1.318-1.727zM4.457 11l1.02-4.184h.045L6.542 11h1.006L9 5.001H7.818l-.82 4.355h-.056L5.97 5.001h-.94l-.972 4.355h-.053l-.827-4.355H2L3.452 11z"/>
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/bag-check-fill.svg
new file mode 100644
index 000000000..9976d5c5c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag-check-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag-check-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0m-.646 5.354a.5.5 0 0 0-.708-.708L7.5 10.793 6.354 9.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag-check.svg b/vendor/twbs/bootstrap-icons/icons/bag-check.svg
new file mode 100644
index 000000000..a4e327857
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag-check" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.854 8.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708 0"/>
+ <path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag-dash-fill.svg b/vendor/twbs/bootstrap-icons/icons/bag-dash-fill.svg
new file mode 100644
index 000000000..ccb5589c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag-dash-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag-dash-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0M6 9.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag-dash.svg b/vendor/twbs/bootstrap-icons/icons/bag-dash.svg
new file mode 100644
index 000000000..0997f332d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag-dash" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5.5 10a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+ <path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag-fill.svg b/vendor/twbs/bootstrap-icons/icons/bag-fill.svg
new file mode 100644
index 000000000..812fcfcc8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag-fill" viewBox="0 0 16 16">
+ <path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/bag-heart-fill.svg
new file mode 100644
index 000000000..4938b838a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag-heart-fill" viewBox="0 0 16 16">
+ <path d="M11.5 4v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m0 6.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag-heart.svg b/vendor/twbs/bootstrap-icons/icons/bag-heart.svg
new file mode 100644
index 000000000..e7b906a18
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag-heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag-heart" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0M14 14V5H2v9a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1M8 7.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/bag-plus-fill.svg
new file mode 100644
index 000000000..b98f6b219
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag-plus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag-plus-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0M8.5 8a.5.5 0 0 0-1 0v1.5H6a.5.5 0 0 0 0 1h1.5V12a.5.5 0 0 0 1 0v-1.5H10a.5.5 0 0 0 0-1H8.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag-plus.svg b/vendor/twbs/bootstrap-icons/icons/bag-plus.svg
new file mode 100644
index 000000000..0d7ddc61a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag-plus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 7.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0v-1.5H6a.5.5 0 0 1 0-1h1.5V8a.5.5 0 0 1 .5-.5"/>
+ <path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/bag-x-fill.svg
new file mode 100644
index 000000000..cbe77df72
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag-x-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag-x-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.5 3.5a2.5 2.5 0 0 0-5 0V4h5zm1 0V4H15v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4h3.5v-.5a3.5 3.5 0 1 1 7 0M6.854 8.146a.5.5 0 1 0-.708.708L7.293 10l-1.147 1.146a.5.5 0 0 0 .708.708L8 10.707l1.146 1.147a.5.5 0 0 0 .708-.708L8.707 10l1.147-1.146a.5.5 0 0 0-.708-.708L8 9.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag-x.svg b/vendor/twbs/bootstrap-icons/icons/bag-x.svg
new file mode 100644
index 000000000..4f380082d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag-x" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.146 8.146a.5.5 0 0 1 .708 0L8 9.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 10l1.147 1.146a.5.5 0 0 1-.708.708L8 10.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 10 6.146 8.854a.5.5 0 0 1 0-.708"/>
+ <path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bag.svg b/vendor/twbs/bootstrap-icons/icons/bag.svg
new file mode 100644
index 000000000..acd028733
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bag.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bag" viewBox="0 0 16 16">
+ <path d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1m3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/balloon-fill.svg b/vendor/twbs/bootstrap-icons/icons/balloon-fill.svg
new file mode 100644
index 000000000..2d57e2d88
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/balloon-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-balloon-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8.48 10.901C11.211 10.227 13 7.837 13 5A5 5 0 0 0 3 5c0 2.837 1.789 5.227 4.52 5.901l-.244.487a.25.25 0 1 0 .448.224l.04-.08c.009.17.024.315.051.45.068.344.208.622.448 1.102l.013.028c.212.422.182.85.05 1.246-.135.402-.366.751-.534 1.003a.25.25 0 0 0 .416.278l.004-.007c.166-.248.431-.646.588-1.115.16-.479.212-1.051-.076-1.629-.258-.515-.365-.732-.419-1.004a2 2 0 0 1-.037-.289l.008.017a.25.25 0 1 0 .448-.224zM4.352 3.356a4 4 0 0 1 3.15-2.325C7.774.997 8 1.224 8 1.5s-.226.496-.498.542c-.95.162-1.749.78-2.173 1.617a.6.6 0 0 1-.52.341c-.346 0-.599-.329-.457-.644"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/balloon-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/balloon-heart-fill.svg
new file mode 100644
index 000000000..ab17865c4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/balloon-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-balloon-heart-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8.49 10.92C19.412 3.382 11.28-2.387 8 .986 4.719-2.387-3.413 3.382 7.51 10.92l-.234.468a.25.25 0 1 0 .448.224l.04-.08c.009.17.024.315.051.45.068.344.208.622.448 1.102l.013.028c.212.422.182.85.05 1.246-.135.402-.366.751-.534 1.003a.25.25 0 0 0 .416.278l.004-.007c.166-.248.431-.646.588-1.115.16-.479.212-1.051-.076-1.629-.258-.515-.365-.732-.419-1.004a2 2 0 0 1-.037-.289l.008.017a.25.25 0 1 0 .448-.224l-.235-.468ZM6.726 1.269c-1.167-.61-2.8-.142-3.454 1.135-.237.463-.36 1.08-.202 1.85.055.27.467.197.527-.071.285-1.256 1.177-2.462 2.989-2.528.234-.008.348-.278.14-.386"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/balloon-heart.svg b/vendor/twbs/bootstrap-icons/icons/balloon-heart.svg
new file mode 100644
index 000000000..0e056cb0e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/balloon-heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-balloon-heart" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="m8 2.42-.717-.737c-1.13-1.161-3.243-.777-4.01.72-.35.685-.451 1.707.236 3.062C4.16 6.753 5.52 8.32 8 10.042c2.479-1.723 3.839-3.29 4.491-4.577.687-1.355.587-2.377.236-3.061-.767-1.498-2.88-1.882-4.01-.721zm-.49 8.5c-10.78-7.44-3-13.155.359-10.063q.068.062.132.129.065-.067.132-.129c3.36-3.092 11.137 2.624.357 10.063l.235.468a.25.25 0 1 1-.448.224l-.008-.017c.008.11.02.202.037.29.054.27.161.488.419 1.003.288.578.235 1.15.076 1.629-.157.469-.422.867-.588 1.115l-.004.007a.25.25 0 1 1-.416-.278c.168-.252.4-.6.533-1.003.133-.396.163-.824-.049-1.246l-.013-.028c-.24-.48-.38-.758-.448-1.102a3 3 0 0 1-.052-.45l-.04.08a.25.25 0 1 1-.447-.224l.235-.468ZM6.013 2.06c-.649-.18-1.483.083-1.85.798-.131.258-.245.689-.08 1.335.063.244.414.198.487-.043.21-.697.627-1.447 1.359-1.692.217-.073.304-.337.084-.398"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/balloon.svg b/vendor/twbs/bootstrap-icons/icons/balloon.svg
new file mode 100644
index 000000000..6906cb397
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/balloon.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-balloon" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 9.984C10.403 9.506 12 7.48 12 5a4 4 0 0 0-8 0c0 2.48 1.597 4.506 4 4.984M13 5c0 2.837-1.789 5.227-4.52 5.901l.244.487a.25.25 0 1 1-.448.224l-.008-.017c.008.11.02.202.037.29.054.27.161.488.419 1.003.288.578.235 1.15.076 1.629-.157.469-.422.867-.588 1.115l-.004.007a.25.25 0 1 1-.416-.278c.168-.252.4-.6.533-1.003.133-.396.163-.824-.049-1.246l-.013-.028c-.24-.48-.38-.758-.448-1.102a3 3 0 0 1-.052-.45l-.04.08a.25.25 0 1 1-.447-.224l.244-.487C4.789 10.227 3 7.837 3 5a5 5 0 0 1 10 0m-6.938-.495a2 2 0 0 1 1.443-1.443C7.773 2.994 8 2.776 8 2.5s-.226-.504-.498-.459a3 3 0 0 0-2.46 2.461c-.046.272.182.498.458.498s.494-.227.562-.495"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ban-fill.svg b/vendor/twbs/bootstrap-icons/icons/ban-fill.svg
new file mode 100644
index 000000000..0bb7df0e3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ban-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ban-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M2.71 12.584q.328.378.706.707l9.875-9.875a7 7 0 0 0-.707-.707l-9.875 9.875Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ban.svg b/vendor/twbs/bootstrap-icons/icons/ban.svg
new file mode 100644
index 000000000..5acfd4193
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ban.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ban" viewBox="0 0 16 16">
+ <path d="M15 8a6.97 6.97 0 0 0-1.71-4.584l-9.874 9.875A7 7 0 0 0 15 8M2.71 12.584l9.874-9.875a7 7 0 0 0-9.874 9.874ZM16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bandaid-fill.svg b/vendor/twbs/bootstrap-icons/icons/bandaid-fill.svg
new file mode 100644
index 000000000..052ad7375
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bandaid-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bandaid-fill" viewBox="0 0 16 16">
+ <path d="m2.68 7.676 6.49-6.504a4 4 0 0 1 5.66 5.653l-1.477 1.529-5.006 5.006-1.523 1.472a4 4 0 0 1-5.653-5.66l.001-.002 1.505-1.492.001-.002Zm5.71-2.858a.5.5 0 1 0-.708.707.5.5 0 0 0 .707-.707ZM6.974 6.939a.5.5 0 1 0-.707-.707.5.5 0 0 0 .707.707M5.56 8.354a.5.5 0 1 0-.707-.708.5.5 0 0 0 .707.708m2.828 2.828a.5.5 0 1 0-.707-.707.5.5 0 0 0 .707.707m1.414-2.121a.5.5 0 1 0-.707.707.5.5 0 0 0 .707-.707m1.414-.707a.5.5 0 1 0-.706-.708.5.5 0 0 0 .707.708Zm-4.242.707a.5.5 0 1 0-.707.707.5.5 0 0 0 .707-.707m1.414-.707a.5.5 0 1 0-.707-.708.5.5 0 0 0 .707.708m1.414-2.122a.5.5 0 1 0-.707.707.5.5 0 0 0 .707-.707M8.646 3.354l4 4 .708-.708-4-4zm-1.292 9.292-4-4-.708.708 4 4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bandaid.svg b/vendor/twbs/bootstrap-icons/icons/bandaid.svg
new file mode 100644
index 000000000..e09850e0a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bandaid.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bandaid" viewBox="0 0 16 16">
+ <path d="M14.121 1.879a3 3 0 0 0-4.242 0L8.733 3.026l4.261 4.26 1.127-1.165a3 3 0 0 0 0-4.242M12.293 8 8.027 3.734 3.738 8.031 8 12.293zm-5.006 4.994L3.03 8.737 1.879 9.88a3 3 0 0 0 4.241 4.24l.006-.006 1.16-1.121ZM2.679 7.676l6.492-6.504a4 4 0 0 1 5.66 5.653l-1.477 1.529-5.006 5.006-1.523 1.472a4 4 0 0 1-5.653-5.66l.001-.002 1.505-1.492z"/>
+ <path d="M5.56 7.646a.5.5 0 1 1-.706.708.5.5 0 0 1 .707-.708Zm1.415-1.414a.5.5 0 1 1-.707.707.5.5 0 0 1 .707-.707M8.39 4.818a.5.5 0 1 1-.708.707.5.5 0 0 1 .707-.707Zm0 5.657a.5.5 0 1 1-.708.707.5.5 0 0 1 .707-.707ZM9.803 9.06a.5.5 0 1 1-.707.708.5.5 0 0 1 .707-.707Zm1.414-1.414a.5.5 0 1 1-.706.708.5.5 0 0 1 .707-.708ZM6.975 9.06a.5.5 0 1 1-.707.708.5.5 0 0 1 .707-.707ZM8.39 7.646a.5.5 0 1 1-.708.708.5.5 0 0 1 .707-.708Zm1.413-1.414a.5.5 0 1 1-.707.707.5.5 0 0 1 .707-.707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bank.svg b/vendor/twbs/bootstrap-icons/icons/bank.svg
new file mode 100644
index 000000000..2e7f4f07a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bank.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bank" viewBox="0 0 16 16">
+ <path d="m8 0 6.61 3h.89a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H15v7a.5.5 0 0 1 .485.38l.5 2a.498.498 0 0 1-.485.62H.5a.498.498 0 0 1-.485-.62l.5-2A.5.5 0 0 1 1 13V6H.5a.5.5 0 0 1-.5-.5v-2A.5.5 0 0 1 .5 3h.89zM3.777 3h8.447L8 1zM2 6v7h1V6zm2 0v7h2.5V6zm3.5 0v7h1V6zm2 0v7H12V6zM13 6v7h1V6zm2-1V4H1v1zm-.39 9H1.39l-.25 1h13.72z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bank2.svg b/vendor/twbs/bootstrap-icons/icons/bank2.svg
new file mode 100644
index 000000000..acc8ef9a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bank2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bank2" viewBox="0 0 16 16">
+ <path d="M8.277.084a.5.5 0 0 0-.554 0l-7.5 5A.5.5 0 0 0 .5 6h1.875v7H1.5a.5.5 0 0 0 0 1h13a.5.5 0 1 0 0-1h-.875V6H15.5a.5.5 0 0 0 .277-.916zM12.375 6v7h-1.25V6zm-2.5 0v7h-1.25V6zm-2.5 0v7h-1.25V6zm-2.5 0v7h-1.25V6zM8 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2M.5 15a.5.5 0 0 0 0 1h15a.5.5 0 1 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bar-chart-fill.svg b/vendor/twbs/bootstrap-icons/icons/bar-chart-fill.svg
new file mode 100644
index 000000000..7e4ebee2f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bar-chart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bar-chart-fill" viewBox="0 0 16 16">
+ <path d="M1 11a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5-4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5-5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bar-chart-line-fill.svg b/vendor/twbs/bootstrap-icons/icons/bar-chart-line-fill.svg
new file mode 100644
index 000000000..6808e6f6a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bar-chart-line-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bar-chart-line-fill" viewBox="0 0 16 16">
+ <path d="M11 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v12h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h1V7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7h1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bar-chart-line.svg b/vendor/twbs/bootstrap-icons/icons/bar-chart-line.svg
new file mode 100644
index 000000000..567a80866
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bar-chart-line.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bar-chart-line" viewBox="0 0 16 16">
+ <path d="M11 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v12h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h1V7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7h1zm1 12h2V2h-2zm-3 0V7H7v7zm-5 0v-3H2v3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bar-chart-steps.svg b/vendor/twbs/bootstrap-icons/icons/bar-chart-steps.svg
new file mode 100644
index 000000000..346e97be6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bar-chart-steps.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bar-chart-steps" viewBox="0 0 16 16">
+ <path d="M.5 0a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-1 0V.5A.5.5 0 0 1 .5 0M2 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5zm2 4a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm2 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1-.5-.5zm2 4a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bar-chart.svg b/vendor/twbs/bootstrap-icons/icons/bar-chart.svg
new file mode 100644
index 000000000..8e57c801d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bar-chart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bar-chart" viewBox="0 0 16 16">
+ <path d="M4 11H2v3h2zm5-4H7v7h2zm5-5v12h-2V2zm-2-1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM6 7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm-5 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/basket-fill.svg b/vendor/twbs/bootstrap-icons/icons/basket-fill.svg
new file mode 100644
index 000000000..b2e01f5ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/basket-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket-fill" viewBox="0 0 16 16">
+ <path d="M5.071 1.243a.5.5 0 0 1 .858.514L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H15v5a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V9H.5a.5.5 0 0 1-.5-.5v-2A.5.5 0 0 1 .5 6h1.717zM3.5 10.5a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/basket.svg b/vendor/twbs/bootstrap-icons/icons/basket.svg
new file mode 100644
index 000000000..418a5f948
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/basket.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket" viewBox="0 0 16 16">
+ <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1v4.5a2.5 2.5 0 0 1-2.5 2.5h-9A2.5 2.5 0 0 1 1 13.5V9a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h1.217L5.07 1.243a.5.5 0 0 1 .686-.172zM2 9v4.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V9zM1 7v1h14V7zm3 3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3A.5.5 0 0 1 4 10m2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3A.5.5 0 0 1 6 10m2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3A.5.5 0 0 1 8 10m2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 .5-.5m2 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/basket2-fill.svg b/vendor/twbs/bootstrap-icons/icons/basket2-fill.svg
new file mode 100644
index 000000000..03c707955
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/basket2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket2-fill" viewBox="0 0 16 16">
+ <path d="M5.929 1.757a.5.5 0 1 0-.858-.514L2.217 6H.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h.623l1.844 6.456A.75.75 0 0 0 3.69 15h8.622a.75.75 0 0 0 .722-.544L14.877 8h.623a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1.717L10.93 1.243a.5.5 0 1 0-.858.514L12.617 6H3.383zM4 10a1 1 0 0 1 2 0v2a1 1 0 1 1-2 0zm3 0a1 1 0 0 1 2 0v2a1 1 0 1 1-2 0zm4-1a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0v-2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/basket2.svg b/vendor/twbs/bootstrap-icons/icons/basket2.svg
new file mode 100644
index 000000000..9b78be2d6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/basket2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket2" viewBox="0 0 16 16">
+ <path d="M4 10a1 1 0 0 1 2 0v2a1 1 0 0 1-2 0zm3 0a1 1 0 0 1 2 0v2a1 1 0 0 1-2 0zm3 0a1 1 0 1 1 2 0v2a1 1 0 0 1-2 0z"/>
+ <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-.623l-1.844 6.456a.75.75 0 0 1-.722.544H3.69a.75.75 0 0 1-.722-.544L1.123 8H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM2.163 8l1.714 6h8.246l1.714-6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/basket3-fill.svg b/vendor/twbs/bootstrap-icons/icons/basket3-fill.svg
new file mode 100644
index 000000000..e26f0ee62
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/basket3-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3-fill" viewBox="0 0 16 16">
+ <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM2.468 15.426.943 9h14.114l-1.525 6.426a.75.75 0 0 1-.729.574H3.197a.75.75 0 0 1-.73-.574z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/basket3.svg b/vendor/twbs/bootstrap-icons/icons/basket3.svg
new file mode 100644
index 000000000..57fa6a024
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/basket3.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16">
+ <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/battery-charging.svg b/vendor/twbs/bootstrap-icons/icons/battery-charging.svg
new file mode 100644
index 000000000..4ae74d2d3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/battery-charging.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-battery-charging" viewBox="0 0 16 16">
+ <path d="M9.585 2.568a.5.5 0 0 1 .226.58L8.677 6.832h1.99a.5.5 0 0 1 .364.843l-5.334 5.667a.5.5 0 0 1-.842-.49L5.99 9.167H4a.5.5 0 0 1-.364-.843l5.333-5.667a.5.5 0 0 1 .616-.09z"/>
+ <path d="M2 4h4.332l-.94 1H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h2.38l-.308 1H2a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2"/>
+ <path d="M2 6h2.45L2.908 7.639A1.5 1.5 0 0 0 3.313 10H2zm8.595-2-.308 1H12a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H9.276l-.942 1H12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z"/>
+ <path d="M12 10h-1.783l1.542-1.639q.146-.156.241-.34zm0-3.354V6h-.646a1.5 1.5 0 0 1 .646.646M16 8a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/battery-full.svg b/vendor/twbs/bootstrap-icons/icons/battery-full.svg
new file mode 100644
index 000000000..bff6a3f1b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/battery-full.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-battery-full" viewBox="0 0 16 16">
+ <path d="M2 6h10v4H2z"/>
+ <path d="M2 4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm10 1a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm4 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/battery-half.svg b/vendor/twbs/bootstrap-icons/icons/battery-half.svg
new file mode 100644
index 000000000..de57848bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/battery-half.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-battery-half" viewBox="0 0 16 16">
+ <path d="M2 6h5v4H2z"/>
+ <path d="M2 4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm10 1a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm4 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/battery.svg b/vendor/twbs/bootstrap-icons/icons/battery.svg
new file mode 100644
index 000000000..2bacfa836
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/battery.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-battery" viewBox="0 0 16 16">
+ <path d="M0 6a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm14 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/behance.svg b/vendor/twbs/bootstrap-icons/icons/behance.svg
new file mode 100644
index 000000000..805f142f0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/behance.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-behance" viewBox="0 0 16 16">
+ <path d="M4.654 3c.461 0 .887.035 1.278.14.39.07.711.216.996.391s.497.426.641.747c.14.32.216.711.216 1.137 0 .496-.106.922-.356 1.242-.215.32-.566.606-.997.817.606.176 1.067.496 1.348.922s.461.957.461 1.563c0 .496-.105.922-.285 1.278a2.3 2.3 0 0 1-.782.887c-.32.215-.711.39-1.137.496a5.3 5.3 0 0 1-1.278.176L0 12.803V3zm-.285 3.978c.39 0 .71-.105.957-.285.246-.18.355-.497.355-.887 0-.216-.035-.426-.105-.567a1 1 0 0 0-.32-.355 1.8 1.8 0 0 0-.461-.176c-.176-.035-.356-.035-.567-.035H2.17v2.31c0-.005 2.2-.005 2.2-.005zm.105 4.193c.215 0 .426-.035.606-.07.176-.035.356-.106.496-.216s.25-.215.356-.39c.07-.176.14-.391.14-.641 0-.496-.14-.852-.426-1.102-.285-.215-.676-.32-1.137-.32H2.17v2.734h2.305zm6.858-.035q.428.427 1.278.426c.39 0 .746-.106 1.032-.286q.426-.32.53-.64h1.74c-.286.851-.712 1.457-1.278 1.848-.566.355-1.243.566-2.06.566a4.1 4.1 0 0 1-1.527-.285 2.8 2.8 0 0 1-1.137-.782 2.85 2.85 0 0 1-.712-1.172c-.175-.461-.25-.957-.25-1.528 0-.531.07-1.032.25-1.493.18-.46.426-.852.747-1.207.32-.32.711-.606 1.137-.782a4 4 0 0 1 1.493-.285c.606 0 1.137.105 1.598.355.46.25.817.532 1.102.958.285.39.496.851.641 1.348.07.496.105.996.07 1.563h-5.15c0 .58.21 1.11.496 1.396m2.24-3.732c-.25-.25-.642-.391-1.103-.391-.32 0-.566.07-.781.176s-.356.25-.496.39a.96.96 0 0 0-.25.497c-.036.175-.07.32-.07.46h3.196c-.07-.526-.25-.882-.497-1.132zm-3.127-3.728h3.978v.957h-3.978z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bell-fill.svg b/vendor/twbs/bootstrap-icons/icons/bell-fill.svg
new file mode 100644
index 000000000..a537c3a0a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bell-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bell-fill" viewBox="0 0 16 16">
+ <path d="M8 16a2 2 0 0 0 2-2H6a2 2 0 0 0 2 2m.995-14.901a1 1 0 1 0-1.99 0A5 5 0 0 0 3 6c0 1.098-.5 6-2 7h14c-1.5-1-2-5.902-2-7 0-2.42-1.72-4.44-4.005-4.901"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bell-slash-fill.svg b/vendor/twbs/bootstrap-icons/icons/bell-slash-fill.svg
new file mode 100644
index 000000000..534dd13ee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bell-slash-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bell-slash-fill" viewBox="0 0 16 16">
+ <path d="M5.164 14H15c-1.5-1-2-5.902-2-7q0-.396-.06-.776zm6.288-10.617A5 5 0 0 0 8.995 2.1a1 1 0 1 0-1.99 0A5 5 0 0 0 3 7c0 .898-.335 4.342-1.278 6.113zM10 15a2 2 0 1 1-4 0zm-9.375.625a.53.53 0 0 0 .75.75l14.75-14.75a.53.53 0 0 0-.75-.75z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bell-slash.svg b/vendor/twbs/bootstrap-icons/icons/bell-slash.svg
new file mode 100644
index 000000000..7817e2b47
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bell-slash.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bell-slash" viewBox="0 0 16 16">
+ <path d="M5.164 14H15c-.299-.199-.557-.553-.78-1-.9-1.8-1.22-5.12-1.22-6q0-.396-.06-.776l-.938.938c.02.708.157 2.154.457 3.58.161.767.377 1.566.663 2.258H6.164zm5.581-9.91a4 4 0 0 0-1.948-1.01L8 2.917l-.797.161A4 4 0 0 0 4 7c0 .628-.134 2.197-.459 3.742q-.075.358-.166.718l-1.653 1.653q.03-.055.059-.113C2.679 11.2 3 7.88 3 7c0-2.42 1.72-4.44 4.005-4.901a1 1 0 1 1 1.99 0c.942.19 1.788.645 2.457 1.284zM10 15a2 2 0 1 1-4 0zm-9.375.625a.53.53 0 0 0 .75.75l14.75-14.75a.53.53 0 0 0-.75-.75z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bell.svg b/vendor/twbs/bootstrap-icons/icons/bell.svg
new file mode 100644
index 000000000..a71eba308
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bell.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bell" viewBox="0 0 16 16">
+ <path d="M8 16a2 2 0 0 0 2-2H6a2 2 0 0 0 2 2M8 1.918l-.797.161A4 4 0 0 0 4 6c0 .628-.134 2.197-.459 3.742-.16.767-.376 1.566-.663 2.258h10.244c-.287-.692-.502-1.49-.663-2.258C12.134 8.197 12 6.628 12 6a4 4 0 0 0-3.203-3.92zM14.22 12c.223.447.481.801.78 1H1c.299-.199.557-.553.78-1C2.68 10.2 3 6.88 3 6c0-2.42 1.72-4.44 4.005-4.901a1 1 0 1 1 1.99 0A5 5 0 0 1 13 6c0 .88.32 4.2 1.22 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bezier.svg b/vendor/twbs/bootstrap-icons/icons/bezier.svg
new file mode 100644
index 000000000..075b721d9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bezier.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bezier" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 10.5A1.5 1.5 0 0 1 1.5 9h1A1.5 1.5 0 0 1 4 10.5v1A1.5 1.5 0 0 1 2.5 13h-1A1.5 1.5 0 0 1 0 11.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm10.5.5A1.5 1.5 0 0 1 13.5 9h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM6 4.5A1.5 1.5 0 0 1 7.5 3h1A1.5 1.5 0 0 1 10 4.5v1A1.5 1.5 0 0 1 8.5 7h-1A1.5 1.5 0 0 1 6 5.5zM7.5 4a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M6 4.5H1.866a1 1 0 1 0 0 1h2.668A6.52 6.52 0 0 0 1.814 9H2.5q.186 0 .358.043a5.52 5.52 0 0 1 3.185-3.185A1.5 1.5 0 0 1 6 5.5zm3.957 1.358A1.5 1.5 0 0 0 10 5.5v-1h4.134a1 1 0 1 1 0 1h-2.668a6.52 6.52 0 0 1 2.72 3.5H13.5q-.185 0-.358.043a5.52 5.52 0 0 0-3.185-3.185"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bezier2.svg b/vendor/twbs/bootstrap-icons/icons/bezier2.svg
new file mode 100644
index 000000000..8a59238a4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bezier2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bezier2" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 2.5A1.5 1.5 0 0 1 2.5 1h1A1.5 1.5 0 0 1 5 2.5h4.134a1 1 0 1 1 0 1h-2.01q.269.27.484.605C8.246 5.097 8.5 6.459 8.5 8c0 1.993.257 3.092.713 3.7.356.476.895.721 1.787.784A1.5 1.5 0 0 1 12.5 11h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5H6.866a1 1 0 1 1 0-1h1.711a3 3 0 0 1-.165-.2C7.743 11.407 7.5 10.007 7.5 8c0-1.46-.246-2.597-.733-3.355-.39-.605-.952-1-1.767-1.112A1.5 1.5 0 0 1 3.5 5h-1A1.5 1.5 0 0 1 1 3.5zM2.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm10 10a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bicycle.svg b/vendor/twbs/bootstrap-icons/icons/bicycle.svg
new file mode 100644
index 000000000..395654512
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bicycle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bicycle" viewBox="0 0 16 16">
+ <path d="M4 4.5a.5.5 0 0 1 .5-.5H6a.5.5 0 0 1 0 1v.5h4.14l.386-1.158A.5.5 0 0 1 11 4h1a.5.5 0 0 1 0 1h-.64l-.311.935.807 1.29a3 3 0 1 1-.848.53l-.508-.812-2.076 3.322A.5.5 0 0 1 8 10.5H5.959a3 3 0 1 1-1.815-3.274L5 5.856V5h-.5a.5.5 0 0 1-.5-.5m1.5 2.443-.508.814c.5.444.85 1.054.967 1.743h1.139zM8 9.057 9.598 6.5H6.402zM4.937 9.5a2 2 0 0 0-.487-.877l-.548.877zM3.603 8.092A2 2 0 1 0 4.937 10.5H3a.5.5 0 0 1-.424-.765zm7.947.53a2 2 0 1 0 .848-.53l1.026 1.643a.5.5 0 1 1-.848.53z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bing.svg b/vendor/twbs/bootstrap-icons/icons/bing.svg
new file mode 100644
index 000000000..9368917d6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bing.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bing" viewBox="0 0 16 16">
+ <path d="M8.35 5.046a.615.615 0 0 0-.54.575c-.009.13-.006.14.289.899.67 1.727.833 2.142.86 2.2q.101.215.277.395c.089.092.148.141.247.208.176.117.262.15.944.351.664.197 1.026.327 1.338.482.405.201.688.43.866.7.128.195.242.544.291.896.02.137.02.44 0 .564-.041.27-.124.495-.252.684-.067.1-.044.084.055-.039.278-.346.562-.938.707-1.475a4.42 4.42 0 0 0-2.14-5.028 70 70 0 0 0-.888-.465l-.53-.277-.353-.184c-.16-.082-.266-.138-.345-.18-.368-.192-.523-.27-.568-.283a1 1 0 0 0-.194-.03z"/>
+ <path d="M9.152 11.493a3 3 0 0 0-.135.083 320 320 0 0 0-1.513.934l-.8.496c-.012.01-.587.367-.876.543a1.9 1.9 0 0 1-.732.257c-.12.017-.349.017-.47 0a1.9 1.9 0 0 1-.884-.358 2.5 2.5 0 0 1-.365-.364 1.9 1.9 0 0 1-.34-.76 1 1 0 0 0-.027-.121c-.005-.006.004.092.022.22.018.132.057.324.098.489a4.1 4.1 0 0 0 2.487 2.796c.359.142.72.23 1.114.275.147.016.566.023.72.011a4.1 4.1 0 0 0 1.956-.661l.235-.149.394-.248.258-.163 1.164-.736c.51-.32.663-.433.9-.665.099-.097.248-.262.255-.283.002-.005.028-.046.059-.091a1.64 1.64 0 0 0 .25-.682c.02-.124.02-.427 0-.565a3 3 0 0 0-.213-.758c-.15-.314-.47-.6-.928-.83a2 2 0 0 0-.273-.12c-.006 0-.433.26-.948.58l-1.113.687z"/>
+ <path d="m3.004 12.184.03.129c.089.402.245.693.515.963a1.82 1.82 0 0 0 1.312.543c.361 0 .673-.09.994-.287l.472-.29.373-.23V5.334c0-1.537-.003-2.45-.008-2.521a1.82 1.82 0 0 0-.535-1.177c-.097-.096-.18-.16-.427-.33L4.183.24c-.239-.163-.258-.175-.33-.2a.63.63 0 0 0-.842.464c-.009.042-.01.603-.01 3.646l.003 8.035Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/binoculars-fill.svg b/vendor/twbs/bootstrap-icons/icons/binoculars-fill.svg
new file mode 100644
index 000000000..d6d6dc0a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/binoculars-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-binoculars-fill" viewBox="0 0 16 16">
+ <path d="M4.5 1A1.5 1.5 0 0 0 3 2.5V3h4v-.5A1.5 1.5 0 0 0 5.5 1zM7 4v1h2V4h4v.882a.5.5 0 0 0 .276.447l.895.447A1.5 1.5 0 0 1 15 7.118V13H9v-1.5a.5.5 0 0 1 .146-.354l.854-.853V9.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v.793l.854.853A.5.5 0 0 1 7 11.5V13H1V7.118a1.5 1.5 0 0 1 .83-1.342l.894-.447A.5.5 0 0 0 3 4.882V4zM1 14v.5A1.5 1.5 0 0 0 2.5 16h3A1.5 1.5 0 0 0 7 14.5V14zm8 0v.5a1.5 1.5 0 0 0 1.5 1.5h3a1.5 1.5 0 0 0 1.5-1.5V14zm4-11H9v-.5A1.5 1.5 0 0 1 10.5 1h1A1.5 1.5 0 0 1 13 2.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/binoculars.svg b/vendor/twbs/bootstrap-icons/icons/binoculars.svg
new file mode 100644
index 000000000..015d62234
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/binoculars.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-binoculars" viewBox="0 0 16 16">
+ <path d="M3 2.5A1.5 1.5 0 0 1 4.5 1h1A1.5 1.5 0 0 1 7 2.5V5h2V2.5A1.5 1.5 0 0 1 10.5 1h1A1.5 1.5 0 0 1 13 2.5v2.382a.5.5 0 0 0 .276.447l.895.447A1.5 1.5 0 0 1 15 7.118V14.5a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 14.5v-3a.5.5 0 0 1 .146-.354l.854-.853V9.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v.793l.854.853A.5.5 0 0 1 7 11.5v3A1.5 1.5 0 0 1 5.5 16h-3A1.5 1.5 0 0 1 1 14.5V7.118a1.5 1.5 0 0 1 .83-1.342l.894-.447A.5.5 0 0 0 3 4.882zM4.5 2a.5.5 0 0 0-.5.5V3h2v-.5a.5.5 0 0 0-.5-.5zM6 4H4v.882a1.5 1.5 0 0 1-.83 1.342l-.894.447A.5.5 0 0 0 2 7.118V13h4v-1.293l-.854-.853A.5.5 0 0 1 5 10.5v-1A1.5 1.5 0 0 1 6.5 8h3A1.5 1.5 0 0 1 11 9.5v1a.5.5 0 0 1-.146.354l-.854.853V13h4V7.118a.5.5 0 0 0-.276-.447l-.895-.447A1.5 1.5 0 0 1 12 4.882V4h-2v1.5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm4-1h2v-.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 11h-4v.5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5zm-8 0H2v.5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/blockquote-left.svg b/vendor/twbs/bootstrap-icons/icons/blockquote-left.svg
new file mode 100644
index 000000000..f8b6b2d8b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/blockquote-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-blockquote-left" viewBox="0 0 16 16">
+ <path d="M2.5 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1zm5 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm-5 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1zm.79-5.373q.168-.117.444-.275L3.524 6q-.183.111-.452.287-.27.176-.51.428a2.4 2.4 0 0 0-.398.562Q2 7.587 2 7.969q0 .54.217.873.217.328.72.328.322 0 .504-.211a.7.7 0 0 0 .188-.463q0-.345-.211-.521-.205-.182-.568-.182h-.282q.036-.305.123-.498a1.4 1.4 0 0 1 .252-.37 2 2 0 0 1 .346-.298zm2.167 0q.17-.117.445-.275L5.692 6q-.183.111-.452.287-.27.176-.51.428a2.4 2.4 0 0 0-.398.562q-.165.31-.164.692 0 .54.217.873.217.328.72.328.322 0 .504-.211a.7.7 0 0 0 .188-.463q0-.345-.211-.521-.205-.182-.568-.182h-.282a1.8 1.8 0 0 1 .118-.492q.087-.194.257-.375a2 2 0 0 1 .346-.3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/blockquote-right.svg b/vendor/twbs/bootstrap-icons/icons/blockquote-right.svg
new file mode 100644
index 000000000..afc81c95c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/blockquote-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-blockquote-right" viewBox="0 0 16 16">
+ <path d="M2.5 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1zm10.113-5.373a7 7 0 0 0-.445-.275l.21-.352q.183.111.452.287.27.176.51.428.234.246.398.562.164.31.164.692 0 .54-.216.873-.217.328-.721.328-.322 0-.504-.211a.7.7 0 0 1-.188-.463q0-.345.211-.521.205-.182.569-.182h.281a1.7 1.7 0 0 0-.123-.498 1.4 1.4 0 0 0-.252-.37 2 2 0 0 0-.346-.298m-2.168 0A7 7 0 0 0 10 6.352L10.21 6q.183.111.452.287.27.176.51.428.234.246.398.562.164.31.164.692 0 .54-.216.873-.217.328-.721.328-.322 0-.504-.211a.7.7 0 0 1-.188-.463q0-.345.211-.521.206-.182.569-.182h.281a1.8 1.8 0 0 0-.117-.492 1.4 1.4 0 0 0-.258-.375 2 2 0 0 0-.346-.3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bluetooth.svg b/vendor/twbs/bootstrap-icons/icons/bluetooth.svg
new file mode 100644
index 000000000..8726e225d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bluetooth.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bluetooth" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="m8.543 3.948 1.316 1.316L8.543 6.58zm0 8.104 1.316-1.316L8.543 9.42zm-1.41-4.043L4.275 5.133l.827-.827L7.377 6.58V1.128l4.137 4.136L8.787 8.01l2.745 2.745-4.136 4.137V9.42l-2.294 2.274-.827-.827zM7.903 16c3.498 0 5.904-1.655 5.904-8.01 0-6.335-2.406-7.99-5.903-7.99S2 1.655 2 8.01C2 14.344 4.407 16 7.904 16Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/body-text.svg b/vendor/twbs/bootstrap-icons/icons/body-text.svg
new file mode 100644
index 000000000..fd5e4358a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/body-text.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-body-text" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 .5A.5.5 0 0 1 .5 0h4a.5.5 0 0 1 0 1h-4A.5.5 0 0 1 0 .5m0 2A.5.5 0 0 1 .5 2h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m9 0a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m-9 2A.5.5 0 0 1 .5 4h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m5 0a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m7 0a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m-12 2A.5.5 0 0 1 .5 6h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m8 0a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m-8 2A.5.5 0 0 1 .5 8h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m7 0a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-7 2a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/book-fill.svg b/vendor/twbs/bootstrap-icons/icons/book-fill.svg
new file mode 100644
index 000000000..ddb00006c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/book-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-book-fill" viewBox="0 0 16 16">
+ <path d="M8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/book-half.svg b/vendor/twbs/bootstrap-icons/icons/book-half.svg
new file mode 100644
index 000000000..8eabe817c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/book-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-book-half" viewBox="0 0 16 16">
+ <path d="M8.5 2.687c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/book.svg b/vendor/twbs/bootstrap-icons/icons/book.svg
new file mode 100644
index 000000000..302acf09e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/book.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-book" viewBox="0 0 16 16">
+ <path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-check-fill.svg
new file mode 100644
index 000000000..325fbde1e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-check-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-check-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5m8.854-9.646a.5.5 0 0 0-.708-.708L7.5 7.793 6.354 6.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-check.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-check.svg
new file mode 100644
index 000000000..f4c91496a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-check" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.854 5.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 7.793l2.646-2.647a.5.5 0 0 1 .708 0"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-dash-fill.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-dash-fill.svg
new file mode 100644
index 000000000..dbf9cc1b2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-dash-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-dash-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5M6 6a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-dash.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-dash.svg
new file mode 100644
index 000000000..115b44878
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-dash" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5.5 6.5A.5.5 0 0 1 6 6h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-fill.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-fill.svg
new file mode 100644
index 000000000..3c237a9ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-fill" viewBox="0 0 16 16">
+ <path d="M2 2v13.5a.5.5 0 0 0 .74.439L8 13.069l5.26 2.87A.5.5 0 0 0 14 15.5V2a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-heart-fill.svg
new file mode 100644
index 000000000..6647b7c4c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-heart-fill" viewBox="0 0 16 16">
+ <path d="M2 15.5a.5.5 0 0 0 .74.439L8 13.069l5.26 2.87A.5.5 0 0 0 14 15.5V2a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2zM8 4.41c1.387-1.425 4.854 1.07 0 4.277C3.146 5.48 6.613 2.986 8 4.412z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-heart.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-heart.svg
new file mode 100644
index 000000000..c368f5dd6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-heart.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-heart" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 4.41c1.387-1.425 4.854 1.07 0 4.277C3.146 5.48 6.613 2.986 8 4.412z"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-plus-fill.svg
new file mode 100644
index 000000000..41e073381
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-plus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-plus-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5m6.5-11a.5.5 0 0 0-1 0V6H6a.5.5 0 0 0 0 1h1.5v1.5a.5.5 0 0 0 1 0V7H10a.5.5 0 0 0 0-1H8.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-plus.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-plus.svg
new file mode 100644
index 000000000..37b137c28
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-plus" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/>
+ <path d="M8 4a.5.5 0 0 1 .5.5V6H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V7H6a.5.5 0 0 1 0-1h1.5V4.5A.5.5 0 0 1 8 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-star-fill.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-star-fill.svg
new file mode 100644
index 000000000..89fd33593
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-star-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-star-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5M8.16 4.1a.178.178 0 0 0-.32 0l-.634 1.285a.18.18 0 0 1-.134.098l-1.42.206a.178.178 0 0 0-.098.303L6.58 6.993c.042.041.061.1.051.158L6.39 8.565a.178.178 0 0 0 .258.187l1.27-.668a.18.18 0 0 1 .165 0l1.27.668a.178.178 0 0 0 .257-.187L9.368 7.15a.18.18 0 0 1 .05-.158l1.028-1.001a.178.178 0 0 0-.098-.303l-1.42-.206a.18.18 0 0 1-.134-.098z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-star.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-star.svg
new file mode 100644
index 000000000..2f792deb7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-star.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-star" viewBox="0 0 16 16">
+ <path d="M7.84 4.1a.178.178 0 0 1 .32 0l.634 1.285a.18.18 0 0 0 .134.098l1.42.206c.145.021.204.2.098.303L9.42 6.993a.18.18 0 0 0-.051.158l.242 1.414a.178.178 0 0 1-.258.187l-1.27-.668a.18.18 0 0 0-.165 0l-1.27.668a.178.178 0 0 1-.257-.187l.242-1.414a.18.18 0 0 0-.05-.158l-1.03-1.001a.178.178 0 0 1 .098-.303l1.42-.206a.18.18 0 0 0 .134-.098z"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-x-fill.svg
new file mode 100644
index 000000000..acac0cf2c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-x-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-x-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5M6.854 5.146a.5.5 0 1 0-.708.708L7.293 7 6.146 8.146a.5.5 0 1 0 .708.708L8 7.707l1.146 1.147a.5.5 0 1 0 .708-.708L8.707 7l1.147-1.146a.5.5 0 0 0-.708-.708L8 6.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark-x.svg b/vendor/twbs/bootstrap-icons/icons/bookmark-x.svg
new file mode 100644
index 000000000..eb85c76ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark-x" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.146 5.146a.5.5 0 0 1 .708 0L8 6.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 7l1.147 1.146a.5.5 0 0 1-.708.708L8 7.707 6.854 8.854a.5.5 0 1 1-.708-.708L7.293 7 6.146 5.854a.5.5 0 0 1 0-.708"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmark.svg b/vendor/twbs/bootstrap-icons/icons/bookmark.svg
new file mode 100644
index 000000000..a21b14b0c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmark.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmark" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmarks-fill.svg b/vendor/twbs/bootstrap-icons/icons/bookmarks-fill.svg
new file mode 100644
index 000000000..abf580008
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmarks-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmarks-fill" viewBox="0 0 16 16">
+ <path d="M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5z"/>
+ <path d="M4.268 1A2 2 0 0 1 6 0h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L13 13.768V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookmarks.svg b/vendor/twbs/bootstrap-icons/icons/bookmarks.svg
new file mode 100644
index 000000000..ceb92bb11
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookmarks.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookmarks" viewBox="0 0 16 16">
+ <path d="M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5zm2-1a1 1 0 0 0-1 1v10.566l3.723-2.482a.5.5 0 0 1 .554 0L11 14.566V4a1 1 0 0 0-1-1z"/>
+ <path d="M4.268 1H12a1 1 0 0 1 1 1v11.768l.223.148A.5.5 0 0 0 14 13.5V2a2 2 0 0 0-2-2H6a2 2 0 0 0-1.732 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bookshelf.svg b/vendor/twbs/bootstrap-icons/icons/bookshelf.svg
new file mode 100644
index 000000000..7f435d5d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bookshelf.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bookshelf" viewBox="0 0 16 16">
+ <path d="M2.5 0a.5.5 0 0 1 .5.5V2h10V.5a.5.5 0 0 1 1 0v15a.5.5 0 0 1-1 0V15H3v.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 .5-.5M3 14h10v-3H3zm0-4h10V7H3zm0-4h10V3H3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/boombox-fill.svg b/vendor/twbs/bootstrap-icons/icons/boombox-fill.svg
new file mode 100644
index 000000000..299e95ed0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/boombox-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-boombox-fill" viewBox="0 0 16 16">
+ <path d="M14 0a.5.5 0 0 1 .5.5V2h.5a1 1 0 0 1 1 1v2H0V3a1 1 0 0 1 1-1h12.5V.5A.5.5 0 0 1 14 0M2 3.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m2 0a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m7.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1.5-.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0M9.5 3h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1M6 10.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-1.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m7 1a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m.5-1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+ <path d="M0 6h16v8a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm2 4.5a2.5 2.5 0 1 0 5 0 2.5 2.5 0 0 0-5 0m7 0a2.5 2.5 0 1 0 5 0 2.5 2.5 0 0 0-5 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/boombox.svg b/vendor/twbs/bootstrap-icons/icons/boombox.svg
new file mode 100644
index 000000000..35af8072a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/boombox.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-boombox" viewBox="0 0 16 16">
+ <path d="M2.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m7.5-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m-7-1a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm5.5 6.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+ <path d="M11.5 13a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5m0-1a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3M5 10.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+ <path d="M7 10.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0m-1 0a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+ <path d="M14 0a.5.5 0 0 1 .5.5V2h.5a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h12.5V.5A.5.5 0 0 1 14 0M1 3v3h14V3zm14 4H1v7h14z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bootstrap-fill.svg b/vendor/twbs/bootstrap-icons/icons/bootstrap-fill.svg
new file mode 100644
index 000000000..21253b0a9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bootstrap-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bootstrap-fill" viewBox="0 0 16 16">
+ <path d="M6.375 7.125V4.658h1.78c.973 0 1.542.457 1.542 1.237 0 .802-.604 1.23-1.764 1.23zm0 3.762h1.898c1.184 0 1.81-.48 1.81-1.377 0-.885-.65-1.348-1.886-1.348H6.375z"/>
+ <path d="M4.002 0a4 4 0 0 0-4 4v8a4 4 0 0 0 4 4h8a4 4 0 0 0 4-4V4a4 4 0 0 0-4-4zm1.06 12V3.545h3.399c1.587 0 2.543.809 2.543 2.11 0 .884-.65 1.675-1.483 1.816v.1c1.143.117 1.904.931 1.904 2.033 0 1.488-1.084 2.396-2.888 2.396z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bootstrap-reboot.svg b/vendor/twbs/bootstrap-icons/icons/bootstrap-reboot.svg
new file mode 100644
index 000000000..8d2103052
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bootstrap-reboot.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bootstrap-reboot" viewBox="0 0 16 16">
+ <path d="M1.161 8a6.84 6.84 0 1 0 6.842-6.84.58.58 0 1 1 0-1.16 8 8 0 1 1-6.556 3.412l-.663-.577a.58.58 0 0 1 .227-.997l2.52-.69a.58.58 0 0 1 .728.633l-.332 2.592a.58.58 0 0 1-.956.364l-.643-.56A6.8 6.8 0 0 0 1.16 8z"/>
+ <path d="M6.641 11.671V8.843h1.57l1.498 2.828h1.314L9.377 8.665c.897-.3 1.427-1.106 1.427-2.1 0-1.37-.943-2.246-2.456-2.246H5.5v7.352zm0-3.75V5.277h1.57c.881 0 1.416.499 1.416 1.32 0 .84-.504 1.324-1.386 1.324z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bootstrap.svg b/vendor/twbs/bootstrap-icons/icons/bootstrap.svg
new file mode 100644
index 000000000..089e31f94
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bootstrap.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bootstrap" viewBox="0 0 16 16">
+ <path d="M5.062 12h3.475c1.804 0 2.888-.908 2.888-2.396 0-1.102-.761-1.916-1.904-2.034v-.1c.832-.14 1.482-.93 1.482-1.816 0-1.3-.955-2.11-2.542-2.11H5.062zm1.313-4.875V4.658h1.78c.973 0 1.542.457 1.542 1.237 0 .802-.604 1.23-1.764 1.23zm0 3.762V8.162h1.822c1.236 0 1.887.463 1.887 1.348 0 .896-.627 1.377-1.811 1.377z"/>
+ <path d="M0 4a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4zm4-3a3 3 0 0 0-3 3v8a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border-all.svg b/vendor/twbs/bootstrap-icons/icons/border-all.svg
new file mode 100644
index 000000000..19128f2ea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border-all.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-all" viewBox="0 0 16 16">
+ <path d="M0 0h16v16H0zm1 1v6.5h6.5V1zm7.5 0v6.5H15V1zM15 8.5H8.5V15H15zM7.5 15V8.5H1V15z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border-bottom.svg b/vendor/twbs/bootstrap-icons/icons/border-bottom.svg
new file mode 100644
index 000000000..84edccac8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border-bottom.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-bottom" viewBox="0 0 16 16">
+ <path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969zm.937 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469zM9.406 1h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031zM1 2.844v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5zm1.406 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031zM0 9.406v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zM0 15h16v1H0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border-center.svg b/vendor/twbs/bootstrap-icons/icons/border-center.svg
new file mode 100644
index 000000000..a9cf9c458
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border-center.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-center" viewBox="0 0 16 16">
+ <path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969zm.937 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469zM9.406 1h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031zM1 2.844v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM0 8.5v-1h16v1zm0 .906v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0zm1.906 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469zm1.875.5h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border-inner.svg b/vendor/twbs/bootstrap-icons/icons/border-inner.svg
new file mode 100644
index 000000000..63690070e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border-inner.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-inner" viewBox="0 0 16 16">
+ <path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969zm.937 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938z"/>
+ <path d="M8.5 7.5H16v1H8.5V16h-1V8.5H0v-1h7.5V0h1z"/>
+ <path d="M9.406 1h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031zM1 2.844v-.938H0v.938zm14-.938v.938h1v-.938zM1 4.719V3.78H0v.938h1zm14-.938v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm14-.938v.938h1v-.938zM0 9.406v.938h1v-.938zm16 .938v-.938h-1v.938zm-16 .937v.938h1v-.938zm16 .938v-.938h-1v.938zm-16 .937v.938h1v-.938zm16 .938v-.938h-1v.938zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0zm1.906 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm3.75 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border-left.svg b/vendor/twbs/bootstrap-icons/icons/border-left.svg
new file mode 100644
index 000000000..483c804ff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-left" viewBox="0 0 16 16">
+ <path d="M0 0v16h1V0zm1.906 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469zM9.406 1h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031zM7.5 1.906v.938h1v-.938zm7.5 0v.938h1v-.938zM7.5 3.781v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM7.5 5.656v.938h1v-.938zm7.5 0v.938h1v-.938zM1.906 8.5h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031zM7.5 9.406v.938h1v-.938zm8.5.938v-.938h-1v.938zm-8.5.937v.938h1v-.938zm8.5.938v-.938h-1v.938zm-8.5.937v.938h1v-.938zm8.5.938v-.938h-1v.938zM1.906 16h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469zm1.875.5h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border-middle.svg b/vendor/twbs/bootstrap-icons/icons/border-middle.svg
new file mode 100644
index 000000000..c9de407cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border-middle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-middle" viewBox="0 0 16 16">
+ <path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969zm.937 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938zM8.5 16h-1V0h1zm.906-15h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031zM1 2.844v-.938H0v.938zm14-.938v.938h1v-.938zM1 4.719V3.78H0v.938h1zm14-.938v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm14-.938v.938h1v-.938zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5zm1.406 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm3.75 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031zM0 9.406v.938h1v-.938zm16 .938v-.938h-1v.938zm-16 .937v.938h1v-.938zm16 .938v-.938h-1v.938zm-16 .937v.938h1v-.938zm16 .938v-.938h-1v.938zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0zm1.906 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm3.75 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border-outer.svg b/vendor/twbs/bootstrap-icons/icons/border-outer.svg
new file mode 100644
index 000000000..4791bcb71
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border-outer.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-outer" viewBox="0 0 16 16">
+ <path d="M7.5 1.906v.938h1v-.938zm0 1.875v.938h1V3.78h-1zm0 1.875v.938h1v-.938zM1.906 8.5h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zM7.5 9.406v.938h1v-.938zm0 1.875v.938h1v-.938zm0 1.875v.938h1v-.938z"/>
+ <path d="M0 0v16h16V0zm1 1h14v14H1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border-right.svg b/vendor/twbs/bootstrap-icons/icons/border-right.svg
new file mode 100644
index 000000000..23e09dc65
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-right" viewBox="0 0 16 16">
+ <path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969zm.937 1h.938V0h-.938zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469zM9.406 1h.938V0h-.938zm1.875 0h.938V0h-.938zm1.875 0h.938V0h-.938zM16 0h-1v16h1zM1 2.844v-.938H0v.938zm6.5-.938v.938h1v-.938zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm6.5-.938v.938h1v-.938zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5zm1.406 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zM0 9.406v.938h1v-.938zm7.5 0v.938h1v-.938zM0 11.281v.938h1v-.938zm7.5 0v.938h1v-.938zM0 13.156v.938h1v-.938zm7.5 0v.938h1v-.938zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0zm1.906 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469zm1.875.5h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border-style.svg b/vendor/twbs/bootstrap-icons/icons/border-style.svg
new file mode 100644
index 000000000..cec3fef54
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border-style.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-style" viewBox="0 0 16 16">
+ <path d="M1 3.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm8 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-4 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm8 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-4-4a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border-top.svg b/vendor/twbs/bootstrap-icons/icons/border-top.svg
new file mode 100644
index 000000000..77189dfd7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border-top.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-top" viewBox="0 0 16 16">
+ <path d="M0 0v1h16V0zm1 2.844v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938zm6.5-.938v.938h1v-.938zm7.5 0v.938h1v-.938zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5zm1.406 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031zM0 9.406v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zm-16 .937v.938h1v-.938zm7.5 0v.938h1v-.938zm8.5.938v-.938h-1v.938zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0zm1.906 0h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469zm1.875.5h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border-width.svg b/vendor/twbs/bootstrap-icons/icons/border-width.svg
new file mode 100644
index 000000000..61753269c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border-width.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-width" viewBox="0 0 16 16">
+ <path d="M0 3.5A.5.5 0 0 1 .5 3h15a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5zm0 5A.5.5 0 0 1 .5 8h15a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h15a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/border.svg b/vendor/twbs/bootstrap-icons/icons/border.svg
new file mode 100644
index 000000000..a6390f9d4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/border.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border" viewBox="0 0 16 16">
+ <path d="M0 0h.969v.5H1v.469H.969V1H.5V.969H0zm2.844 1h-.938V0h.938zm1.875 0H3.78V0h.938v1zm1.875 0h-.938V0h.938zm.937 0V.969H7.5V.5h.031V0h.938v.5H8.5v.469h-.031V1zm2.813 0h-.938V0h.938zm1.875 0h-.938V0h.938zm1.875 0h-.938V0h.938zM15.5 1h-.469V.969H15V.5h.031V0H16v.969h-.5zM1 1.906v.938H0v-.938zm6.5.938v-.938h1v.938zm7.5 0v-.938h1v.938zM1 3.78v.938H0V3.78zm6.5.938V3.78h1v.938zm7.5 0V3.78h1v.938zM1 5.656v.938H0v-.938zm6.5.938v-.938h1v.938zm7.5 0v-.938h1v.938zM.969 8.5H.5v-.031H0V7.53h.5V7.5h.469v.031H1v.938H.969zm1.875 0h-.938v-1h.938zm1.875 0H3.78v-1h.938v1zm1.875 0h-.938v-1h.938zm1.875-.031V8.5H7.53v-.031H7.5V7.53h.031V7.5h.938v.031H8.5v.938zm1.875.031h-.938v-1h.938zm1.875 0h-.938v-1h.938zm1.875 0h-.938v-1h.938zm1.406 0h-.469v-.031H15V7.53h.031V7.5h.469v.031h.5v.938h-.5zM0 10.344v-.938h1v.938zm7.5 0v-.938h1v.938zm8.5-.938v.938h-1v-.938zM0 12.22v-.938h1v.938zm7.5 0v-.938h1v.938zm8.5-.938v.938h-1v-.938zM0 14.094v-.938h1v.938zm7.5 0v-.938h1v.938zm8.5-.938v.938h-1v-.938zM.969 16H0v-.969h.5V15h.469v.031H1v.469H.969zm1.875 0h-.938v-1h.938zm1.875 0H3.78v-1h.938v1zm1.875 0h-.938v-1h.938zm.937 0v-.5H7.5v-.469h.031V15h.938v.031H8.5v.469h-.031v.5zm2.813 0h-.938v-1h.938zm1.875 0h-.938v-1h.938zm1.875 0h-.938v-1h.938zm.937 0v-.5H15v-.469h.031V15h.469v.031h.5V16z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bounding-box-circles.svg b/vendor/twbs/bootstrap-icons/icons/bounding-box-circles.svg
new file mode 100644
index 000000000..02113ba73
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bounding-box-circles.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bounding-box-circles" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2M0 2a2 2 0 0 1 3.937-.5h8.126A2 2 0 1 1 14.5 3.937v8.126a2 2 0 1 1-2.437 2.437H3.937A2 2 0 1 1 1.5 12.063V3.937A2 2 0 0 1 0 2m2.5 1.937v8.126c.703.18 1.256.734 1.437 1.437h8.126a2 2 0 0 1 1.437-1.437V3.937A2 2 0 0 1 12.063 2.5H3.937A2 2 0 0 1 2.5 3.937M14 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2M2 13a1 1 0 1 0 0 2 1 1 0 0 0 0-2m12 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bounding-box.svg b/vendor/twbs/bootstrap-icons/icons/bounding-box.svg
new file mode 100644
index 000000000..e8be147fa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bounding-box.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bounding-box" viewBox="0 0 16 16">
+ <path d="M5 2V0H0v5h2v6H0v5h5v-2h6v2h5v-5h-2V5h2V0h-5v2zm6 1v2h2v6h-2v2H5v-2H3V5h2V3zm1-2h3v3h-3zm3 11v3h-3v-3zM4 15H1v-3h3zM1 4V1h3v3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-down-left.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-down-left.svg
new file mode 100644
index 000000000..20ffed9dc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-down-left.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-down-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.364 12.5a.5.5 0 0 0 .5.5H14.5a1.5 1.5 0 0 0 1.5-1.5v-10A1.5 1.5 0 0 0 14.5 0h-10A1.5 1.5 0 0 0 3 1.5v6.636a.5.5 0 1 0 1 0V1.5a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v10a.5.5 0 0 1-.5.5H7.864a.5.5 0 0 0-.5.5"/>
+ <path fill-rule="evenodd" d="M0 15.5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 0-1H1.707l8.147-8.146a.5.5 0 0 0-.708-.708L1 14.293V10.5a.5.5 0 0 0-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-down-right.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-down-right.svg
new file mode 100644
index 000000000..33780ef24
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-down-right.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-down-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8.636 12.5a.5.5 0 0 1-.5.5H1.5A1.5 1.5 0 0 1 0 11.5v-10A1.5 1.5 0 0 1 1.5 0h10A1.5 1.5 0 0 1 13 1.5v6.636a.5.5 0 0 1-1 0V1.5a.5.5 0 0 0-.5-.5h-10a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h6.636a.5.5 0 0 1 .5.5"/>
+ <path fill-rule="evenodd" d="M16 15.5a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1 0-1h3.793L6.146 6.854a.5.5 0 1 1 .708-.708L15 14.293V10.5a.5.5 0 0 1 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-down.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-down.svg
new file mode 100644
index 000000000..bf33d5140
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.5 10a.5.5 0 0 1-.5-.5v-8a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 0 0 1h2A1.5 1.5 0 0 0 14 9.5v-8A1.5 1.5 0 0 0 12.5 0h-9A1.5 1.5 0 0 0 2 1.5v8A1.5 1.5 0 0 0 3.5 11h2a.5.5 0 0 0 0-1z"/>
+ <path fill-rule="evenodd" d="M7.646 15.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 14.293V5.5a.5.5 0 0 0-1 0v8.793l-2.146-2.147a.5.5 0 0 0-.708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-in-down-left.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-down-left.svg
new file mode 100644
index 000000000..fe3c57985
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-down-left.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-down-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M9.636 2.5a.5.5 0 0 0-.5-.5H2.5A1.5 1.5 0 0 0 1 3.5v10A1.5 1.5 0 0 0 2.5 15h10a1.5 1.5 0 0 0 1.5-1.5V6.864a.5.5 0 0 0-1 0V13.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5"/>
+ <path fill-rule="evenodd" d="M5 10.5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 0-1H6.707l8.147-8.146a.5.5 0 0 0-.708-.708L6 9.293V5.5a.5.5 0 0 0-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-in-down-right.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-down-right.svg
new file mode 100644
index 000000000..07082eb9d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-down-right.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-down-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.364 2.5a.5.5 0 0 1 .5-.5H13.5A1.5 1.5 0 0 1 15 3.5v10a1.5 1.5 0 0 1-1.5 1.5h-10A1.5 1.5 0 0 1 2 13.5V6.864a.5.5 0 1 1 1 0V13.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5v-10a.5.5 0 0 0-.5-.5H6.864a.5.5 0 0 1-.5-.5"/>
+ <path fill-rule="evenodd" d="M11 10.5a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1 0-1h3.793L1.146 1.854a.5.5 0 1 1 .708-.708L10 9.293V5.5a.5.5 0 0 1 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-in-down.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-down.svg
new file mode 100644
index 000000000..3b185d643
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.5 6a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 1 0-1h2A1.5 1.5 0 0 1 14 6.5v8a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-8A1.5 1.5 0 0 1 3.5 5h2a.5.5 0 0 1 0 1z"/>
+ <path fill-rule="evenodd" d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-in-left.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-left.svg
new file mode 100644
index 000000000..1e1bc9a1f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-left.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10 3.5a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 1 1 0v2A1.5 1.5 0 0 1 9.5 14h-8A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2h8A1.5 1.5 0 0 1 11 3.5v2a.5.5 0 0 1-1 0z"/>
+ <path fill-rule="evenodd" d="M4.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H14.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-in-right.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-right.svg
new file mode 100644
index 000000000..5d78def3c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-right.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 3.5a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 0-1 0v2A1.5 1.5 0 0 0 6.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-8A1.5 1.5 0 0 0 5 3.5v2a.5.5 0 0 0 1 0z"/>
+ <path fill-rule="evenodd" d="M11.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H1.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-in-up-left.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-up-left.svg
new file mode 100644
index 000000000..8401c433a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-up-left.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-up-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M9.636 13.5a.5.5 0 0 1-.5.5H2.5A1.5 1.5 0 0 1 1 12.5v-10A1.5 1.5 0 0 1 2.5 1h10A1.5 1.5 0 0 1 14 2.5v6.636a.5.5 0 0 1-1 0V2.5a.5.5 0 0 0-.5-.5h-10a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h6.636a.5.5 0 0 1 .5.5"/>
+ <path fill-rule="evenodd" d="M5 5.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1H6.707l8.147 8.146a.5.5 0 0 1-.708.708L6 6.707V10.5a.5.5 0 0 1-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-in-up-right.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-up-right.svg
new file mode 100644
index 000000000..8a95e0020
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-up-right.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-up-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.364 13.5a.5.5 0 0 0 .5.5H13.5a1.5 1.5 0 0 0 1.5-1.5v-10A1.5 1.5 0 0 0 13.5 1h-10A1.5 1.5 0 0 0 2 2.5v6.636a.5.5 0 1 0 1 0V2.5a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v10a.5.5 0 0 1-.5.5H6.864a.5.5 0 0 0-.5.5"/>
+ <path fill-rule="evenodd" d="M11 5.5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793l-8.147 8.146a.5.5 0 0 0 .708.708L10 6.707V10.5a.5.5 0 0 0 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-in-up.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-up.svg
new file mode 100644
index 000000000..6197bc34e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-in-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.5 10a.5.5 0 0 1-.5-.5v-8a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 0 0 1h2A1.5 1.5 0 0 0 14 9.5v-8A1.5 1.5 0 0 0 12.5 0h-9A1.5 1.5 0 0 0 2 1.5v8A1.5 1.5 0 0 0 3.5 11h2a.5.5 0 0 0 0-1z"/>
+ <path fill-rule="evenodd" d="M7.646 4.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V14.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-left.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-left.svg
new file mode 100644
index 000000000..5d142b473
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-left.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 12.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v2a.5.5 0 0 1-1 0v-2A1.5 1.5 0 0 1 6.5 2h8A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 5 12.5v-2a.5.5 0 0 1 1 0z"/>
+ <path fill-rule="evenodd" d="M.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L1.707 7.5H10.5a.5.5 0 0 1 0 1H1.707l2.147 2.146a.5.5 0 0 1-.708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-right.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-right.svg
new file mode 100644
index 000000000..682e03357
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-right.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10 12.5a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v2a.5.5 0 0 0 1 0v-2A1.5 1.5 0 0 0 9.5 2h-8A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-2a.5.5 0 0 0-1 0z"/>
+ <path fill-rule="evenodd" d="M15.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L14.293 7.5H5.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-up-left.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-up-left.svg
new file mode 100644
index 000000000..7dec12d01
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-up-left.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-up-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.364 3.5a.5.5 0 0 1 .5-.5H14.5A1.5 1.5 0 0 1 16 4.5v10a1.5 1.5 0 0 1-1.5 1.5h-10A1.5 1.5 0 0 1 3 14.5V7.864a.5.5 0 1 1 1 0V14.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5v-10a.5.5 0 0 0-.5-.5H7.864a.5.5 0 0 1-.5-.5"/>
+ <path fill-rule="evenodd" d="M0 .5A.5.5 0 0 1 .5 0h5a.5.5 0 0 1 0 1H1.707l8.147 8.146a.5.5 0 0 1-.708.708L1 1.707V5.5a.5.5 0 0 1-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-up-right.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-up-right.svg
new file mode 100644
index 000000000..03f68d558
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-up-right.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-up-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5"/>
+ <path fill-rule="evenodd" d="M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-arrow-up.svg b/vendor/twbs/bootstrap-icons/icons/box-arrow-up.svg
new file mode 100644
index 000000000..8f768920d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-arrow-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.5 6a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 1 0-1h2A1.5 1.5 0 0 1 14 6.5v8a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-8A1.5 1.5 0 0 1 3.5 5h2a.5.5 0 0 1 0 1z"/>
+ <path fill-rule="evenodd" d="M7.646.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 1.707V10.5a.5.5 0 0 1-1 0V1.707L5.354 3.854a.5.5 0 1 1-.708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-fill.svg b/vendor/twbs/bootstrap-icons/icons/box-fill.svg
new file mode 100644
index 000000000..b1fe40778
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15.528 2.973a.75.75 0 0 1 .472.696v8.662a.75.75 0 0 1-.472.696l-7.25 2.9a.75.75 0 0 1-.557 0l-7.25-2.9A.75.75 0 0 1 0 12.331V3.669a.75.75 0 0 1 .471-.696L7.443.184l.004-.001.274-.11a.75.75 0 0 1 .558 0l.274.11.004.001zm-1.374.527L8 5.962 1.846 3.5 1 3.839v.4l6.5 2.6v7.922l.5.2.5-.2V6.84l6.5-2.6v-.4l-.846-.339Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-seam-fill.svg b/vendor/twbs/bootstrap-icons/icons/box-seam-fill.svg
new file mode 100644
index 000000000..b9283c7f0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-seam-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-seam-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15.528 2.973a.75.75 0 0 1 .472.696v8.662a.75.75 0 0 1-.472.696l-7.25 2.9a.75.75 0 0 1-.557 0l-7.25-2.9A.75.75 0 0 1 0 12.331V3.669a.75.75 0 0 1 .471-.696L7.443.184l.01-.003.268-.108a.75.75 0 0 1 .558 0l.269.108.01.003zM10.404 2 4.25 4.461 1.846 3.5 1 3.839v.4l6.5 2.6v7.922l.5.2.5-.2V6.84l6.5-2.6v-.4l-.846-.339L8 5.961 5.596 5l6.154-2.461z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box-seam.svg b/vendor/twbs/bootstrap-icons/icons/box-seam.svg
new file mode 100644
index 000000000..ec2cb8adc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box-seam.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-seam" viewBox="0 0 16 16">
+ <path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5l2.404.961L10.404 2zm3.564 1.426L5.596 5 8 5.961 14.154 3.5zm3.25 1.7-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box.svg b/vendor/twbs/bootstrap-icons/icons/box.svg
new file mode 100644
index 000000000..01b34c763
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box" viewBox="0 0 16 16">
+ <path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5 8 5.961 14.154 3.5zM15 4.239l-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box2-fill.svg b/vendor/twbs/bootstrap-icons/icons/box2-fill.svg
new file mode 100644
index 000000000..78e75838a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box2-fill" viewBox="0 0 16 16">
+ <path d="M3.75 0a1 1 0 0 0-.8.4L.1 4.2a.5.5 0 0 0-.1.3V15a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V4.5a.5.5 0 0 0-.1-.3L13.05.4a1 1 0 0 0-.8-.4zM15 4.667V5H1v-.333L1.5 4h6V1h1v3h6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box2-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/box2-heart-fill.svg
new file mode 100644
index 000000000..49da4861d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box2-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box2-heart-fill" viewBox="0 0 16 16">
+ <path d="M3.75 0a1 1 0 0 0-.8.4L.1 4.2a.5.5 0 0 0-.1.3V15a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V4.5a.5.5 0 0 0-.1-.3L13.05.4a1 1 0 0 0-.8-.4zM8.5 4h6l.5.667V5H1v-.333L1.5 4h6V1h1zM8 7.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box2-heart.svg b/vendor/twbs/bootstrap-icons/icons/box2-heart.svg
new file mode 100644
index 000000000..a5e413a75
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box2-heart.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box2-heart" viewBox="0 0 16 16">
+ <path d="M8 7.982C9.664 6.309 13.825 9.236 8 13 2.175 9.236 6.336 6.31 8 7.982"/>
+ <path d="M3.75 0a1 1 0 0 0-.8.4L.1 4.2a.5.5 0 0 0-.1.3V15a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V4.5a.5.5 0 0 0-.1-.3L13.05.4a1 1 0 0 0-.8-.4zm0 1H7.5v3h-6zM8.5 4V1h3.75l2.25 3zM15 5v10H1V5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/box2.svg b/vendor/twbs/bootstrap-icons/icons/box2.svg
new file mode 100644
index 000000000..bfeb554c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/box2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box2" viewBox="0 0 16 16">
+ <path d="M2.95.4a1 1 0 0 1 .8-.4h8.5a1 1 0 0 1 .8.4l2.85 3.8a.5.5 0 0 1 .1.3V15a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V4.5a.5.5 0 0 1 .1-.3zM7.5 1H3.75L1.5 4h6zm1 0v3h6l-2.25-3zM15 5H1v10h14z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/boxes.svg b/vendor/twbs/bootstrap-icons/icons/boxes.svg
new file mode 100644
index 000000000..af0d1d0a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/boxes.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-boxes" viewBox="0 0 16 16">
+ <path d="M7.752.066a.5.5 0 0 1 .496 0l3.75 2.143a.5.5 0 0 1 .252.434v3.995l3.498 2A.5.5 0 0 1 16 9.07v4.286a.5.5 0 0 1-.252.434l-3.75 2.143a.5.5 0 0 1-.496 0l-3.502-2-3.502 2.001a.5.5 0 0 1-.496 0l-3.75-2.143A.5.5 0 0 1 0 13.357V9.071a.5.5 0 0 1 .252-.434L3.75 6.638V2.643a.5.5 0 0 1 .252-.434zM4.25 7.504 1.508 9.071l2.742 1.567 2.742-1.567zM7.5 9.933l-2.75 1.571v3.134l2.75-1.571zm1 3.134 2.75 1.571v-3.134L8.5 9.933zm.508-3.996 2.742 1.567 2.742-1.567-2.742-1.567zm2.242-2.433V3.504L8.5 5.076V8.21zM7.5 8.21V5.076L4.75 3.504v3.134zM5.258 2.643 8 4.21l2.742-1.567L8 1.076zM15 9.933l-2.75 1.571v3.134L15 13.067zM3.75 14.638v-3.134L1 9.933v3.134z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/braces-asterisk.svg b/vendor/twbs/bootstrap-icons/icons/braces-asterisk.svg
new file mode 100644
index 000000000..e159e9c36
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/braces-asterisk.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-braces-asterisk" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.114 8.063V7.9c1.005-.102 1.497-.615 1.497-1.6V4.503c0-1.094.39-1.538 1.354-1.538h.273V2h-.376C2.25 2 1.49 2.759 1.49 4.352v1.524c0 1.094-.376 1.456-1.49 1.456v1.299c1.114 0 1.49.362 1.49 1.456v1.524c0 1.593.759 2.352 2.372 2.352h.376v-.964h-.273c-.964 0-1.354-.444-1.354-1.538V9.663c0-.984-.492-1.497-1.497-1.6M14.886 7.9v.164c-1.005.103-1.497.616-1.497 1.6v1.798c0 1.094-.39 1.538-1.354 1.538h-.273v.964h.376c1.613 0 2.372-.759 2.372-2.352v-1.524c0-1.094.376-1.456 1.49-1.456v-1.3c-1.114 0-1.49-.362-1.49-1.456V4.352C14.51 2.759 13.75 2 12.138 2h-.376v.964h.273c.964 0 1.354.444 1.354 1.538V6.3c0 .984.492 1.497 1.497 1.6M7.5 11.5V9.207l-1.621 1.621-.707-.707L6.792 8.5H4.5v-1h2.293L5.172 5.879l.707-.707L7.5 6.792V4.5h1v2.293l1.621-1.621.707.707L9.208 7.5H11.5v1H9.207l1.621 1.621-.707.707L8.5 9.208V11.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/braces.svg b/vendor/twbs/bootstrap-icons/icons/braces.svg
new file mode 100644
index 000000000..d345d3b56
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/braces.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-braces" viewBox="0 0 16 16">
+ <path d="M2.114 8.063V7.9c1.005-.102 1.497-.615 1.497-1.6V4.503c0-1.094.39-1.538 1.354-1.538h.273V2h-.376C3.25 2 2.49 2.759 2.49 4.352v1.524c0 1.094-.376 1.456-1.49 1.456v1.299c1.114 0 1.49.362 1.49 1.456v1.524c0 1.593.759 2.352 2.372 2.352h.376v-.964h-.273c-.964 0-1.354-.444-1.354-1.538V9.663c0-.984-.492-1.497-1.497-1.6M13.886 7.9v.163c-1.005.103-1.497.616-1.497 1.6v1.798c0 1.094-.39 1.538-1.354 1.538h-.273v.964h.376c1.613 0 2.372-.759 2.372-2.352v-1.524c0-1.094.376-1.456 1.49-1.456V7.332c-1.114 0-1.49-.362-1.49-1.456V4.352C13.51 2.759 12.75 2 11.138 2h-.376v.964h.273c.964 0 1.354.444 1.354 1.538V6.3c0 .984.492 1.497 1.497 1.6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bricks.svg b/vendor/twbs/bootstrap-icons/icons/bricks.svg
new file mode 100644
index 000000000..23c2c3697
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bricks.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bricks" viewBox="0 0 16 16">
+ <path d="M0 .5A.5.5 0 0 1 .5 0h15a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H14v2h1.5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H14v2h1.5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5H2v-2H.5a.5.5 0 0 1-.5-.5v-3A.5.5 0 0 1 .5 6H2V4H.5a.5.5 0 0 1-.5-.5zM3 4v2h4.5V4zm5.5 0v2H13V4zM3 10v2h4.5v-2zm5.5 0v2H13v-2zM1 1v2h3.5V1zm4.5 0v2h5V1zm6 0v2H15V1zM1 7v2h3.5V7zm4.5 0v2h5V7zm6 0v2H15V7zM1 13v2h3.5v-2zm4.5 0v2h5v-2zm6 0v2H15v-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/briefcase-fill.svg b/vendor/twbs/bootstrap-icons/icons/briefcase-fill.svg
new file mode 100644
index 000000000..b37f2be52
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/briefcase-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-briefcase-fill" viewBox="0 0 16 16">
+ <path d="M6.5 1A1.5 1.5 0 0 0 5 2.5V3H1.5A1.5 1.5 0 0 0 0 4.5v1.384l7.614 2.03a1.5 1.5 0 0 0 .772 0L16 5.884V4.5A1.5 1.5 0 0 0 14.5 3H11v-.5A1.5 1.5 0 0 0 9.5 1zm0 1h3a.5.5 0 0 1 .5.5V3H6v-.5a.5.5 0 0 1 .5-.5"/>
+ <path d="M0 12.5A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5V6.85L8.129 8.947a.5.5 0 0 1-.258 0L0 6.85z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/briefcase.svg b/vendor/twbs/bootstrap-icons/icons/briefcase.svg
new file mode 100644
index 000000000..712998d36
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/briefcase.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-briefcase" viewBox="0 0 16 16">
+ <path d="M6.5 1A1.5 1.5 0 0 0 5 2.5V3H1.5A1.5 1.5 0 0 0 0 4.5v8A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-8A1.5 1.5 0 0 0 14.5 3H11v-.5A1.5 1.5 0 0 0 9.5 1zm0 1h3a.5.5 0 0 1 .5.5V3H6v-.5a.5.5 0 0 1 .5-.5m1.886 6.914L15 7.151V12.5a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5V7.15l6.614 1.764a1.5 1.5 0 0 0 .772 0M1.5 4h13a.5.5 0 0 1 .5.5v1.616L8.129 7.948a.5.5 0 0 1-.258 0L1 6.116V4.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/brightness-alt-high-fill.svg b/vendor/twbs/bootstrap-icons/icons/brightness-alt-high-fill.svg
new file mode 100644
index 000000000..06f7d0c38
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/brightness-alt-high-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brightness-alt-high-fill" viewBox="0 0 16 16">
+ <path d="M8 3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 3m8 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5m-13.5.5a.5.5 0 0 0 0-1h-2a.5.5 0 0 0 0 1zm11.157-6.157a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m-9.9 2.121a.5.5 0 0 0 .707-.707L3.05 5.343a.5.5 0 1 0-.707.707zM8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/brightness-alt-high.svg b/vendor/twbs/bootstrap-icons/icons/brightness-alt-high.svg
new file mode 100644
index 000000000..e519ca742
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/brightness-alt-high.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brightness-alt-high" viewBox="0 0 16 16">
+ <path d="M8 3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 3m8 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5m-13.5.5a.5.5 0 0 0 0-1h-2a.5.5 0 0 0 0 1zm11.157-6.157a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m-9.9 2.121a.5.5 0 0 0 .707-.707L3.05 5.343a.5.5 0 1 0-.707.707zM8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4m0 1a3 3 0 0 1 2.959 2.5H5.04A3 3 0 0 1 8 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/brightness-alt-low-fill.svg b/vendor/twbs/bootstrap-icons/icons/brightness-alt-low-fill.svg
new file mode 100644
index 000000000..ab308376d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/brightness-alt-low-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brightness-alt-low-fill" viewBox="0 0 16 16">
+ <path d="M8.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m5 6a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1M2 11a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m10.243-3.536a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m-8.486-.707a.5.5 0 1 0 .707.707.5.5 0 0 0-.707-.707M8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/brightness-alt-low.svg b/vendor/twbs/bootstrap-icons/icons/brightness-alt-low.svg
new file mode 100644
index 000000000..58bf6ed87
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/brightness-alt-low.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brightness-alt-low" viewBox="0 0 16 16">
+ <path d="M8.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m5 6a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1M2 11a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m10.243-3.536a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m-8.486-.707a.5.5 0 1 0 .707.707.5.5 0 0 0-.707-.707M8 7a4 4 0 0 0-4 4 .5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5 4 4 0 0 0-4-4m0 1a3 3 0 0 1 2.959 2.5H5.04A3 3 0 0 1 8 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/brightness-high-fill.svg b/vendor/twbs/bootstrap-icons/icons/brightness-high-fill.svg
new file mode 100644
index 000000000..b759b046f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/brightness-high-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brightness-high-fill" viewBox="0 0 16 16">
+ <path d="M12 8a4 4 0 1 1-8 0 4 4 0 0 1 8 0M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/brightness-high.svg b/vendor/twbs/bootstrap-icons/icons/brightness-high.svg
new file mode 100644
index 000000000..f00d05096
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/brightness-high.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brightness-high" viewBox="0 0 16 16">
+ <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/brightness-low-fill.svg b/vendor/twbs/bootstrap-icons/icons/brightness-low-fill.svg
new file mode 100644
index 000000000..fc556807a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/brightness-low-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brightness-low-fill" viewBox="0 0 16 16">
+ <path d="M12 8a4 4 0 1 1-8 0 4 4 0 0 1 8 0M8.5 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 11a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m5-5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m-11 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m9.743-4.036a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m-7.779 7.779a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m7.072 0a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707M3.757 4.464a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/brightness-low.svg b/vendor/twbs/bootstrap-icons/icons/brightness-low.svg
new file mode 100644
index 000000000..317918e6f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/brightness-low.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brightness-low" viewBox="0 0 16 16">
+ <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8m.5-9.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 11a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m5-5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m-11 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m9.743-4.036a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m-7.779 7.779a.5.5 0 1 1-.707-.707.5.5 0 0 1 .707.707m7.072 0a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707M3.757 4.464a.5.5 0 1 1 .707-.707.5.5 0 0 1-.707.707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/brilliance.svg b/vendor/twbs/bootstrap-icons/icons/brilliance.svg
new file mode 100644
index 000000000..f6b5da676
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/brilliance.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brilliance" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16M1 8a7 7 0 0 0 7 7 3.5 3.5 0 1 0 0-7 3.5 3.5 0 1 1 0-7 7 7 0 0 0-7 7"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/broadcast-pin.svg b/vendor/twbs/bootstrap-icons/icons/broadcast-pin.svg
new file mode 100644
index 000000000..9c5f4a6c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/broadcast-pin.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-broadcast-pin" viewBox="0 0 16 16">
+ <path d="M3.05 3.05a7 7 0 0 0 0 9.9.5.5 0 0 1-.707.707 8 8 0 0 1 0-11.314.5.5 0 0 1 .707.707m2.122 2.122a4 4 0 0 0 0 5.656.5.5 0 1 1-.708.708 5 5 0 0 1 0-7.072.5.5 0 0 1 .708.708m5.656-.708a.5.5 0 0 1 .708 0 5 5 0 0 1 0 7.072.5.5 0 1 1-.708-.708 4 4 0 0 0 0-5.656.5.5 0 0 1 0-.708m2.122-2.12a.5.5 0 0 1 .707 0 8 8 0 0 1 0 11.313.5.5 0 0 1-.707-.707 7 7 0 0 0 0-9.9.5.5 0 0 1 0-.707zM6 8a2 2 0 1 1 2.5 1.937V15.5a.5.5 0 0 1-1 0V9.937A2 2 0 0 1 6 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/broadcast.svg b/vendor/twbs/bootstrap-icons/icons/broadcast.svg
new file mode 100644
index 000000000..b420a0b5e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/broadcast.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-broadcast" viewBox="0 0 16 16">
+ <path d="M3.05 3.05a7 7 0 0 0 0 9.9.5.5 0 0 1-.707.707 8 8 0 0 1 0-11.314.5.5 0 0 1 .707.707m2.122 2.122a4 4 0 0 0 0 5.656.5.5 0 1 1-.708.708 5 5 0 0 1 0-7.072.5.5 0 0 1 .708.708m5.656-.708a.5.5 0 0 1 .708 0 5 5 0 0 1 0 7.072.5.5 0 1 1-.708-.708 4 4 0 0 0 0-5.656.5.5 0 0 1 0-.708m2.122-2.12a.5.5 0 0 1 .707 0 8 8 0 0 1 0 11.313.5.5 0 0 1-.707-.707 7 7 0 0 0 0-9.9.5.5 0 0 1 0-.707zM10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/browser-chrome.svg b/vendor/twbs/bootstrap-icons/icons/browser-chrome.svg
new file mode 100644
index 000000000..63c344ba7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/browser-chrome.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-browser-chrome" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M16 8a8 8 0 0 1-7.022 7.94l1.902-7.098a3 3 0 0 0 .05-1.492A3 3 0 0 0 10.237 6h5.511A8 8 0 0 1 16 8M0 8a8 8 0 0 0 7.927 8l1.426-5.321a3 3 0 0 1-.723.255 3 3 0 0 1-1.743-.147 3 3 0 0 1-1.043-.7L.633 4.876A8 8 0 0 0 0 8m5.004-.167L1.108 3.936A8.003 8.003 0 0 1 15.418 5H8.066a3 3 0 0 0-1.252.243 2.99 2.99 0 0 0-1.81 2.59M8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/browser-edge.svg b/vendor/twbs/bootstrap-icons/icons/browser-edge.svg
new file mode 100644
index 000000000..ed1dc7cfe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/browser-edge.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-browser-edge" viewBox="0 0 16 16">
+ <path d="M9.482 9.341c-.069.062-.17.153-.17.309 0 .162.107.325.3.456.877.613 2.521.54 2.592.538h.002c.667 0 1.32-.18 1.894-.519A3.84 3.84 0 0 0 16 6.819c.018-1.316-.44-2.218-.666-2.664l-.04-.08C13.963 1.487 11.106 0 8 0A8 8 0 0 0 .473 5.29C1.488 4.048 3.183 3.262 5 3.262c2.83 0 5.01 1.885 5.01 4.797h-.004v.002c0 .338-.168.832-.487 1.244l.006-.006z"/>
+ <path d="M.01 7.753a8.14 8.14 0 0 0 .753 3.641 8 8 0 0 0 6.495 4.564 5 5 0 0 1-.785-.377h-.01l-.12-.075a5.5 5.5 0 0 1-1.56-1.463A5.543 5.543 0 0 1 6.81 5.8l.01-.004.025-.012c.208-.098.62-.292 1.167-.285q.194.001.384.033a4 4 0 0 0-.993-.698l-.01-.005C6.348 4.282 5.199 4.263 5 4.263c-2.44 0-4.824 1.634-4.99 3.49m10.263 7.912q.133-.04.265-.084-.153.047-.307.086z"/>
+ <path d="M10.228 15.667a5 5 0 0 0 .303-.086l.082-.025a8.02 8.02 0 0 0 4.162-3.3.25.25 0 0 0-.331-.35q-.322.168-.663.294a6.4 6.4 0 0 1-2.243.4c-2.957 0-5.532-2.031-5.532-4.644q.003-.203.046-.399a4.54 4.54 0 0 0-.46 5.898l.003.005c.315.441.707.821 1.158 1.121h.003l.144.09c.877.55 1.721 1.078 3.328.996"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/browser-firefox.svg b/vendor/twbs/bootstrap-icons/icons/browser-firefox.svg
new file mode 100644
index 000000000..ce0eabb09
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/browser-firefox.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-browser-firefox" viewBox="0 0 16 16">
+ <path d="M13.384 3.408c.535.276 1.22 1.152 1.556 1.963a8 8 0 0 1 .503 3.897l-.009.077-.026.224A7.758 7.758 0 0 1 .006 8.257v-.04q.025-.545.114-1.082c.01-.074.075-.42.09-.489l.01-.051a6.6 6.6 0 0 1 1.041-2.35q.327-.465.725-.87.35-.358.758-.65a1.5 1.5 0 0 1 .26-.137c-.018.268-.04 1.553.268 1.943h.003a5.7 5.7 0 0 1 1.868-1.443 3.6 3.6 0 0 0 .021 1.896q.105.07.2.152c.107.09.226.207.454.433l.068.066.009.009a2 2 0 0 0 .213.18c.383.287.943.563 1.306.741.201.1.342.168.359.193l.004.008c-.012.193-.695.858-.933.858-2.206 0-2.564 1.335-2.564 1.335.087.997.714 1.839 1.517 2.357a4 4 0 0 0 .439.241q.114.05.228.094c.325.115.665.18 1.01.194 3.043.143 4.155-2.804 3.129-4.745v-.001a3 3 0 0 0-.731-.9 3 3 0 0 0-.571-.37l-.003-.002a2.68 2.68 0 0 1 1.87.454 3.92 3.92 0 0 0-3.396-1.983q-.116.001-.23.01l-.042.003V4.31h-.002a4 4 0 0 0-.8.14 7 7 0 0 0-.333-.314 2 2 0 0 0-.2-.152 4 4 0 0 1-.088-.383 5 5 0 0 1 1.352-.289l.05-.003c.052-.004.125-.01.205-.012C7.996 2.212 8.733.843 10.17.002l-.003.005.003-.001.002-.002h.002l.002-.002h.015a.02.02 0 0 1 .012.007 2.4 2.4 0 0 0 .206.48q.09.153.183.297c.49.774 1.023 1.379 1.543 1.968.771.874 1.512 1.715 2.036 3.02l-.001-.013a8 8 0 0 0-.786-2.353"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/browser-safari.svg b/vendor/twbs/bootstrap-icons/icons/browser-safari.svg
new file mode 100644
index 000000000..8c0129698
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/browser-safari.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-browser-safari" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.25-14.75v1.5a.25.25 0 0 1-.5 0v-1.5a.25.25 0 0 1 .5 0m0 12v1.5a.25.25 0 1 1-.5 0v-1.5a.25.25 0 1 1 .5 0M4.5 1.938a.25.25 0 0 1 .342.091l.75 1.3a.25.25 0 0 1-.434.25l-.75-1.3a.25.25 0 0 1 .092-.341m6 10.392a.25.25 0 0 1 .341.092l.75 1.299a.25.25 0 1 1-.432.25l-.75-1.3a.25.25 0 0 1 .091-.34ZM2.28 4.408l1.298.75a.25.25 0 0 1-.25.434l-1.299-.75a.25.25 0 0 1 .25-.434Zm10.392 6 1.299.75a.25.25 0 1 1-.25.434l-1.3-.75a.25.25 0 0 1 .25-.434ZM1 8a.25.25 0 0 1 .25-.25h1.5a.25.25 0 0 1 0 .5h-1.5A.25.25 0 0 1 1 8m12 0a.25.25 0 0 1 .25-.25h1.5a.25.25 0 1 1 0 .5h-1.5A.25.25 0 0 1 13 8M2.03 11.159l1.298-.75a.25.25 0 0 1 .25.432l-1.299.75a.25.25 0 0 1-.25-.432Zm10.392-6 1.299-.75a.25.25 0 1 1 .25.433l-1.3.75a.25.25 0 0 1-.25-.434ZM4.5 14.061a.25.25 0 0 1-.092-.341l.75-1.3a.25.25 0 0 1 .434.25l-.75 1.3a.25.25 0 0 1-.342.091m6-10.392a.25.25 0 0 1-.091-.342l.75-1.299a.25.25 0 1 1 .432.25l-.75 1.3a.25.25 0 0 1-.341.09ZM6.494 1.415l.13.483a.25.25 0 1 1-.483.13l-.13-.483a.25.25 0 0 1 .483-.13M9.86 13.972l.13.483a.25.25 0 1 1-.483.13l-.13-.483a.25.25 0 0 1 .483-.13M3.05 3.05a.25.25 0 0 1 .354 0l.353.354a.25.25 0 0 1-.353.353l-.354-.353a.25.25 0 0 1 0-.354m9.193 9.193a.25.25 0 0 1 .353 0l.354.353a.25.25 0 1 1-.354.354l-.353-.354a.25.25 0 0 1 0-.353M1.545 6.01l.483.13a.25.25 0 1 1-.13.483l-.483-.13a.25.25 0 1 1 .13-.482Zm12.557 3.365.483.13a.25.25 0 1 1-.13.483l-.483-.13a.25.25 0 1 1 .13-.483m-12.863.436a.25.25 0 0 1 .176-.306l.483-.13a.25.25 0 1 1 .13.483l-.483.13a.25.25 0 0 1-.306-.177m12.557-3.365a.25.25 0 0 1 .176-.306l.483-.13a.25.25 0 1 1 .13.483l-.483.13a.25.25 0 0 1-.306-.177M3.045 12.944a.3.3 0 0 1-.029-.376l3.898-5.592a.3.3 0 0 1 .062-.062l5.602-3.884a.278.278 0 0 1 .392.392L9.086 9.024a.3.3 0 0 1-.062.062l-5.592 3.898a.3.3 0 0 1-.382-.034zm3.143 1.817a.25.25 0 0 1-.176-.306l.129-.483a.25.25 0 0 1 .483.13l-.13.483a.25.25 0 0 1-.306.176M9.553 2.204a.25.25 0 0 1-.177-.306l.13-.483a.25.25 0 1 1 .483.13l-.13.483a.25.25 0 0 1-.306.176"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/brush-fill.svg b/vendor/twbs/bootstrap-icons/icons/brush-fill.svg
new file mode 100644
index 000000000..db776150d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/brush-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brush-fill" viewBox="0 0 16 16">
+ <path d="M15.825.12a.5.5 0 0 1 .132.584c-1.53 3.43-4.743 8.17-7.095 10.64a6.1 6.1 0 0 1-2.373 1.534c-.018.227-.06.538-.16.868-.201.659-.667 1.479-1.708 1.74a8.1 8.1 0 0 1-3.078.132 4 4 0 0 1-.562-.135 1.4 1.4 0 0 1-.466-.247.7.7 0 0 1-.204-.288.62.62 0 0 1 .004-.443c.095-.245.316-.38.461-.452.394-.197.625-.453.867-.826.095-.144.184-.297.287-.472l.117-.198c.151-.255.326-.54.546-.848.528-.739 1.201-.925 1.746-.896q.19.012.348.048c.062-.172.142-.38.238-.608.261-.619.658-1.419 1.187-2.069 2.176-2.67 6.18-6.206 9.117-8.104a.5.5 0 0 1 .596.04"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/brush.svg b/vendor/twbs/bootstrap-icons/icons/brush.svg
new file mode 100644
index 000000000..86d88ef39
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/brush.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brush" viewBox="0 0 16 16">
+ <path d="M15.825.12a.5.5 0 0 1 .132.584c-1.53 3.43-4.743 8.17-7.095 10.64a6.1 6.1 0 0 1-2.373 1.534c-.018.227-.06.538-.16.868-.201.659-.667 1.479-1.708 1.74a8.1 8.1 0 0 1-3.078.132 4 4 0 0 1-.562-.135 1.4 1.4 0 0 1-.466-.247.7.7 0 0 1-.204-.288.62.62 0 0 1 .004-.443c.095-.245.316-.38.461-.452.394-.197.625-.453.867-.826.095-.144.184-.297.287-.472l.117-.198c.151-.255.326-.54.546-.848.528-.739 1.201-.925 1.746-.896q.19.012.348.048c.062-.172.142-.38.238-.608.261-.619.658-1.419 1.187-2.069 2.176-2.67 6.18-6.206 9.117-8.104a.5.5 0 0 1 .596.04M4.705 11.912a1.2 1.2 0 0 0-.419-.1c-.246-.013-.573.05-.879.479-.197.275-.355.532-.5.777l-.105.177c-.106.181-.213.362-.32.528a3.4 3.4 0 0 1-.76.861c.69.112 1.736.111 2.657-.12.559-.139.843-.569.993-1.06a3 3 0 0 0 .126-.75zm1.44.026c.12-.04.277-.1.458-.183a5.1 5.1 0 0 0 1.535-1.1c1.9-1.996 4.412-5.57 6.052-8.631-2.59 1.927-5.566 4.66-7.302 6.792-.442.543-.795 1.243-1.042 1.826-.121.288-.214.54-.275.72v.001l.575.575zm-4.973 3.04.007-.005zm3.582-3.043.002.001h-.002z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bucket-fill.svg b/vendor/twbs/bootstrap-icons/icons/bucket-fill.svg
new file mode 100644
index 000000000..c0c95ab73
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bucket-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bucket-fill" viewBox="0 0 16 16">
+ <path d="M2.522 5H2a.5.5 0 0 0-.494.574l1.372 9.149A1.5 1.5 0 0 0 4.36 16h7.278a1.5 1.5 0 0 0 1.483-1.277l1.373-9.149A.5.5 0 0 0 14 5h-.522A5.5 5.5 0 0 0 2.522 5m1.005 0a4.5 4.5 0 0 1 8.945 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bucket.svg b/vendor/twbs/bootstrap-icons/icons/bucket.svg
new file mode 100644
index 000000000..252e75bfd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bucket.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bucket" viewBox="0 0 16 16">
+ <path d="M2.522 5H2a.5.5 0 0 0-.494.574l1.372 9.149A1.5 1.5 0 0 0 4.36 16h7.278a1.5 1.5 0 0 0 1.483-1.277l1.373-9.149A.5.5 0 0 0 14 5h-.522A5.5 5.5 0 0 0 2.522 5m1.005 0a4.5 4.5 0 0 1 8.945 0zm9.892 1-1.286 8.574a.5.5 0 0 1-.494.426H4.36a.5.5 0 0 1-.494-.426L2.58 6h10.838z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bug-fill.svg b/vendor/twbs/bootstrap-icons/icons/bug-fill.svg
new file mode 100644
index 000000000..a36ff3747
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bug-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bug-fill" viewBox="0 0 16 16">
+ <path d="M4.978.855a.5.5 0 1 0-.956.29l.41 1.352A5 5 0 0 0 3 6h10a5 5 0 0 0-1.432-3.503l.41-1.352a.5.5 0 1 0-.956-.29l-.291.956A5 5 0 0 0 8 1a5 5 0 0 0-2.731.811l-.29-.956z"/>
+ <path d="M13 6v1H8.5v8.975A5 5 0 0 0 13 11h.5a.5.5 0 0 1 .5.5v.5a.5.5 0 1 0 1 0v-.5a1.5 1.5 0 0 0-1.5-1.5H13V9h1.5a.5.5 0 0 0 0-1H13V7h.5A1.5 1.5 0 0 0 15 5.5V5a.5.5 0 0 0-1 0v.5a.5.5 0 0 1-.5.5zm-5.5 9.975V7H3V6h-.5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 0-1 0v.5A1.5 1.5 0 0 0 2.5 7H3v1H1.5a.5.5 0 0 0 0 1H3v1h-.5A1.5 1.5 0 0 0 1 11.5v.5a.5.5 0 1 0 1 0v-.5a.5.5 0 0 1 .5-.5H3a5 5 0 0 0 4.5 4.975"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bug.svg b/vendor/twbs/bootstrap-icons/icons/bug.svg
new file mode 100644
index 000000000..296ef3247
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bug.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bug" viewBox="0 0 16 16">
+ <path d="M4.355.522a.5.5 0 0 1 .623.333l.291.956A5 5 0 0 1 8 1c1.007 0 1.946.298 2.731.811l.29-.956a.5.5 0 1 1 .957.29l-.41 1.352A5 5 0 0 1 13 6h.5a.5.5 0 0 0 .5-.5V5a.5.5 0 0 1 1 0v.5A1.5 1.5 0 0 1 13.5 7H13v1h1.5a.5.5 0 0 1 0 1H13v1h.5a1.5 1.5 0 0 1 1.5 1.5v.5a.5.5 0 1 1-1 0v-.5a.5.5 0 0 0-.5-.5H13a5 5 0 0 1-10 0h-.5a.5.5 0 0 0-.5.5v.5a.5.5 0 1 1-1 0v-.5A1.5 1.5 0 0 1 2.5 10H3V9H1.5a.5.5 0 0 1 0-1H3V7h-.5A1.5 1.5 0 0 1 1 5.5V5a.5.5 0 0 1 1 0v.5a.5.5 0 0 0 .5.5H3c0-1.364.547-2.601 1.432-3.503l-.41-1.352a.5.5 0 0 1 .333-.623M4 7v4a4 4 0 0 0 3.5 3.97V7zm4.5 0v7.97A4 4 0 0 0 12 11V7zM12 6a4 4 0 0 0-1.334-2.982A3.98 3.98 0 0 0 8 2a3.98 3.98 0 0 0-2.667 1.018A4 4 0 0 0 4 6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-add.svg b/vendor/twbs/bootstrap-icons/icons/building-add.svg
new file mode 100644
index 000000000..c2c367004
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-add.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-add" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/>
+ <path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-check.svg b/vendor/twbs/bootstrap-icons/icons/building-check.svg
new file mode 100644
index 000000000..95c3c54bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-check.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-check" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/>
+ <path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-dash.svg b/vendor/twbs/bootstrap-icons/icons/building-dash.svg
new file mode 100644
index 000000000..1e1634bad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-dash.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-dash" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/>
+ <path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-down.svg b/vendor/twbs/bootstrap-icons/icons/building-down.svg
new file mode 100644
index 000000000..8538cf6ee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-down.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-down" viewBox="0 0 16 16">
+ <path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/>
+ <path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/building-exclamation.svg
new file mode 100644
index 000000000..ebfc7091f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-exclamation.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-exclamation" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/>
+ <path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm8.5 4.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-fill-add.svg b/vendor/twbs/bootstrap-icons/icons/building-fill-add.svg
new file mode 100644
index 000000000..6bbe56727
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-fill-add.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-fill-add" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-fill-check.svg b/vendor/twbs/bootstrap-icons/icons/building-fill-check.svg
new file mode 100644
index 000000000..c4f188178
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-fill-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-fill-check" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-fill-dash.svg b/vendor/twbs/bootstrap-icons/icons/building-fill-dash.svg
new file mode 100644
index 000000000..1ce28a655
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-fill-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-fill-dash" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-fill-down.svg b/vendor/twbs/bootstrap-icons/icons/building-fill-down.svg
new file mode 100644
index 000000000..b1c55cd9c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-fill-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-fill-down" viewBox="0 0 16 16">
+ <path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-fill-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/building-fill-exclamation.svg
new file mode 100644
index 000000000..3491f245c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-fill-exclamation.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-fill-exclamation" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-fill-gear.svg b/vendor/twbs/bootstrap-icons/icons/building-fill-gear.svg
new file mode 100644
index 000000000..747a1bc7d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-fill-gear.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-fill-gear" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M11.886 9.46c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-fill-lock.svg b/vendor/twbs/bootstrap-icons/icons/building-fill-lock.svg
new file mode 100644
index 000000000..be73a4130
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-fill-lock.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-fill-lock" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.764a3 3 0 0 0-4.989 2.497 2 2 0 0 0-.743.739H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5"/>
+ <path d="M9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-fill-slash.svg b/vendor/twbs/bootstrap-icons/icons/building-fill-slash.svg
new file mode 100644
index 000000000..d8673092b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-fill-slash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-fill-slash" viewBox="0 0 16 16">
+ <path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95Z"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-fill-up.svg b/vendor/twbs/bootstrap-icons/icons/building-fill-up.svg
new file mode 100644
index 000000000..d8cc4bcec
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-fill-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-fill-up" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-fill-x.svg b/vendor/twbs/bootstrap-icons/icons/building-fill-x.svg
new file mode 100644
index 000000000..236aae34b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-fill-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-fill-x" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7.256A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-3.59 1.787A.5.5 0 0 0 9 9.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .39-.187A4.5 4.5 0 0 0 8.027 12H6.5a.5.5 0 0 0-.5.5V16H3a1 1 0 0 1-1-1zm2 1.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-fill.svg b/vendor/twbs/bootstrap-icons/icons/building-fill.svg
new file mode 100644
index 000000000..6924b41d6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-fill" viewBox="0 0 16 16">
+ <path d="M3 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h3v-3.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5V16h3a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm1 2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5M4 5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM7.5 5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5m2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM4.5 8h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5m2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-gear.svg b/vendor/twbs/bootstrap-icons/icons/building-gear.svg
new file mode 100644
index 000000000..eabe79099
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-gear.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-gear" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/>
+ <path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm4.386 1.46c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-lock.svg b/vendor/twbs/bootstrap-icons/icons/building-lock.svg
new file mode 100644
index 000000000..591a2e963
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-lock.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-lock" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/>
+ <path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-slash.svg b/vendor/twbs/bootstrap-icons/icons/building-slash.svg
new file mode 100644
index 000000000..c3f77877c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-slash.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-slash" viewBox="0 0 16 16">
+ <path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95Z"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/>
+ <path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-up.svg b/vendor/twbs/bootstrap-icons/icons/building-up.svg
new file mode 100644
index 000000000..ff2d5d964
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-up.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-up" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/>
+ <path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building-x.svg b/vendor/twbs/bootstrap-icons/icons/building-x.svg
new file mode 100644
index 000000000..70e67a397
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building-x" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6.5a.5.5 0 0 1-1 0V1H3v14h3v-2.5a.5.5 0 0 1 .5-.5H8v4H3a1 1 0 0 1-1-1z"/>
+ <path d="M4.5 2a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-6 3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm5 8a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/building.svg b/vendor/twbs/bootstrap-icons/icons/building.svg
new file mode 100644
index 000000000..916b04947
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/building.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-building" viewBox="0 0 16 16">
+ <path d="M4 2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM7.5 5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zM4.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm2.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zm11 0H3v14h3v-2.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5V15h3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/buildings-fill.svg b/vendor/twbs/bootstrap-icons/icons/buildings-fill.svg
new file mode 100644
index 000000000..6aea68df4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/buildings-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-buildings-fill" viewBox="0 0 16 16">
+ <path d="M15 .5a.5.5 0 0 0-.724-.447l-8 4A.5.5 0 0 0 6 4.5v3.14L.342 9.526A.5.5 0 0 0 0 10v5.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5V14h1v1.5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5zM2 11h1v1H2zm2 0h1v1H4zm-1 2v1H2v-1zm1 0h1v1H4zm9-10v1h-1V3zM8 5h1v1H8zm1 2v1H8V7zM8 9h1v1H8zm2 0h1v1h-1zm-1 2v1H8v-1zm1 0h1v1h-1zm3-2v1h-1V9zm-1 2h1v1h-1zm-2-4h1v1h-1zm3 0v1h-1V7zm-2-2v1h-1V5zm1 0h1v1h-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/buildings.svg b/vendor/twbs/bootstrap-icons/icons/buildings.svg
new file mode 100644
index 000000000..3028498bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/buildings.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-buildings" viewBox="0 0 16 16">
+ <path d="M14.763.075A.5.5 0 0 1 15 .5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5V14h-1v1.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V10a.5.5 0 0 1 .342-.474L6 7.64V4.5a.5.5 0 0 1 .276-.447l8-4a.5.5 0 0 1 .487.022M6 8.694 1 10.36V15h5zM7 15h2v-1.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5V15h2V1.309l-7 3.5z"/>
+ <path d="M2 11h1v1H2zm2 0h1v1H4zm-2 2h1v1H2zm2 0h1v1H4zm4-4h1v1H8zm2 0h1v1h-1zm-2 2h1v1H8zm2 0h1v1h-1zm2-2h1v1h-1zm0 2h1v1h-1zM8 7h1v1H8zm2 0h1v1h-1zm2 0h1v1h-1zM8 5h1v1H8zm2 0h1v1h-1zm2 0h1v1h-1zm0-2h1v1h-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bullseye.svg b/vendor/twbs/bootstrap-icons/icons/bullseye.svg
new file mode 100644
index 000000000..16c220726
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bullseye.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bullseye" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M8 13A5 5 0 1 1 8 3a5 5 0 0 1 0 10m0 1A6 6 0 1 0 8 2a6 6 0 0 0 0 12"/>
+ <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8"/>
+ <path d="M9.5 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bus-front-fill.svg b/vendor/twbs/bootstrap-icons/icons/bus-front-fill.svg
new file mode 100644
index 000000000..de21228dd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bus-front-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bus-front-fill" viewBox="0 0 16 16">
+ <path d="M16 7a1 1 0 0 1-1 1v3.5c0 .818-.393 1.544-1 2v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5V14H5v1.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-2a2.5 2.5 0 0 1-1-2V8a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1V2.64C1 1.452 1.845.408 3.064.268A44 44 0 0 1 8 0c2.1 0 3.792.136 4.936.268C14.155.408 15 1.452 15 2.64V4a1 1 0 0 1 1 1zM3.552 3.22A43 43 0 0 1 8 3c1.837 0 3.353.107 4.448.22a.5.5 0 0 0 .104-.994A44 44 0 0 0 8 2c-1.876 0-3.426.109-4.552.226a.5.5 0 1 0 .104.994M8 4c-1.876 0-3.426.109-4.552.226A.5.5 0 0 0 3 4.723v3.554a.5.5 0 0 0 .448.497C4.574 8.891 6.124 9 8 9s3.426-.109 4.552-.226A.5.5 0 0 0 13 8.277V4.723a.5.5 0 0 0-.448-.497A44 44 0 0 0 8 4m-3 7a1 1 0 1 0-2 0 1 1 0 0 0 2 0m8 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m-7 0a1 1 0 0 0 1 1h2a1 1 0 1 0 0-2H7a1 1 0 0 0-1 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/bus-front.svg b/vendor/twbs/bootstrap-icons/icons/bus-front.svg
new file mode 100644
index 000000000..95c5df5fe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/bus-front.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bus-front" viewBox="0 0 16 16">
+ <path d="M5 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0m8 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-6-1a1 1 0 1 0 0 2h2a1 1 0 1 0 0-2zm1-6c-1.876 0-3.426.109-4.552.226A.5.5 0 0 0 3 4.723v3.554a.5.5 0 0 0 .448.497C4.574 8.891 6.124 9 8 9s3.426-.109 4.552-.226A.5.5 0 0 0 13 8.277V4.723a.5.5 0 0 0-.448-.497A44 44 0 0 0 8 4m0-1c-1.837 0-3.353.107-4.448.22a.5.5 0 1 1-.104-.994A44 44 0 0 1 8 2c1.876 0 3.426.109 4.552.226a.5.5 0 1 1-.104.994A43 43 0 0 0 8 3"/>
+ <path d="M15 8a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1V2.64c0-1.188-.845-2.232-2.064-2.372A44 44 0 0 0 8 0C5.9 0 4.208.136 3.064.268 1.845.408 1 1.452 1 2.64V4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1v3.5c0 .818.393 1.544 1 2v2a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5V14h6v1.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-2c.607-.456 1-1.182 1-2zM8 1c2.056 0 3.71.134 4.822.261.676.078 1.178.66 1.178 1.379v8.86a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 11.5V2.64c0-.72.502-1.301 1.178-1.379A43 43 0 0 1 8 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/c-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/c-circle-fill.svg
new file mode 100644
index 000000000..c0adc1863
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/c-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-c-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.146 4.992c.961 0 1.641.633 1.729 1.512h1.295v-.088c-.094-1.518-1.348-2.572-3.03-2.572-2.068 0-3.269 1.377-3.269 3.638v1.073c0 2.267 1.178 3.603 3.27 3.603 1.675 0 2.93-1.02 3.029-2.467v-.093H9.875c-.088.832-.75 1.418-1.729 1.418-1.224 0-1.927-.891-1.927-2.461v-1.06c0-1.583.715-2.503 1.927-2.503"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/c-circle.svg b/vendor/twbs/bootstrap-icons/icons/c-circle.svg
new file mode 100644
index 000000000..ac3dfacd9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/c-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-c-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.146 4.992c-1.212 0-1.927.92-1.927 2.502v1.06c0 1.571.703 2.462 1.927 2.462.979 0 1.641-.586 1.729-1.418h1.295v.093c-.1 1.448-1.354 2.467-3.03 2.467-2.091 0-3.269-1.336-3.269-3.603V7.482c0-2.261 1.201-3.638 3.27-3.638 1.681 0 2.935 1.054 3.029 2.572v.088H9.875c-.088-.879-.768-1.512-1.729-1.512"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/c-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/c-square-fill.svg
new file mode 100644
index 000000000..b26a27e7a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/c-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-c-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.146 4.992c-1.212 0-1.927.92-1.927 2.502v1.06c0 1.571.703 2.462 1.927 2.462.979 0 1.641-.586 1.729-1.418h1.295v.093c-.1 1.448-1.354 2.467-3.03 2.467-2.091 0-3.269-1.336-3.269-3.603V7.482c0-2.261 1.201-3.638 3.27-3.638 1.681 0 2.935 1.054 3.029 2.572v.088H9.875c-.088-.879-.768-1.512-1.729-1.512"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/c-square.svg b/vendor/twbs/bootstrap-icons/icons/c-square.svg
new file mode 100644
index 000000000..cdd74a3e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/c-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-c-square" viewBox="0 0 16 16">
+ <path d="M8.146 4.992c-1.212 0-1.927.92-1.927 2.502v1.06c0 1.571.703 2.462 1.927 2.462.979 0 1.641-.586 1.729-1.418h1.295v.093c-.1 1.448-1.354 2.467-3.03 2.467-2.091 0-3.269-1.336-3.269-3.603V7.482c0-2.261 1.201-3.638 3.27-3.638 1.681 0 2.935 1.054 3.029 2.572v.088H9.875c-.088-.879-.768-1.512-1.729-1.512"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cake-fill.svg b/vendor/twbs/bootstrap-icons/icons/cake-fill.svg
new file mode 100644
index 000000000..4370e02f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cake-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cake-fill" viewBox="0 0 16 16">
+ <path d="m7.399.804.595-.792.598.79A.747.747 0 0 1 8.5 1.806V4H11a2 2 0 0 1 2 2v3h1a2 2 0 0 1 2 2v4a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1v-4a2 2 0 0 1 2-2h1V6a2 2 0 0 1 2-2h2.5V1.813a.747.747 0 0 1-.101-1.01ZM12 6.414a.9.9 0 0 1-.646-.268 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0A.9.9 0 0 1 4 6.414v1c.49 0 .98-.187 1.354-.56a.914.914 0 0 1 1.292 0c.748.747 1.96.747 2.708 0a.914.914 0 0 1 1.292 0c.374.373.864.56 1.354.56zm2.646 5.732a.914.914 0 0 1-1.293 0 1.914 1.914 0 0 0-2.707 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0L1 11.793v1.34c.737.452 1.715.36 2.354-.28a.914.914 0 0 1 1.292 0c.748.748 1.96.748 2.708 0a.914.914 0 0 1 1.292 0c.748.748 1.96.748 2.707 0a.914.914 0 0 1 1.293 0 1.915 1.915 0 0 0 2.354.28v-1.34z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cake.svg b/vendor/twbs/bootstrap-icons/icons/cake.svg
new file mode 100644
index 000000000..500747be6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cake.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cake" viewBox="0 0 16 16">
+ <path d="m7.994.013-.595.79a.747.747 0 0 0 .101 1.01V4H5a2 2 0 0 0-2 2v3H2a2 2 0 0 0-2 2v4a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-4a2 2 0 0 0-2-2h-1V6a2 2 0 0 0-2-2H8.5V1.806A.747.747 0 0 0 8.592.802zM4 6a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v.414a.9.9 0 0 1-.646-.268 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0A.9.9 0 0 1 4 6.414zm0 1.414c.49 0 .98-.187 1.354-.56a.914.914 0 0 1 1.292 0c.748.747 1.96.747 2.708 0a.914.914 0 0 1 1.292 0c.374.373.864.56 1.354.56V9H4zM1 11a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.793l-.354.354a.914.914 0 0 1-1.293 0 1.914 1.914 0 0 0-2.707 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0 1.914 1.914 0 0 0-2.708 0 .914.914 0 0 1-1.292 0L1 11.793zm11.646 1.854a1.915 1.915 0 0 0 2.354.279V15H1v-1.867c.737.452 1.715.36 2.354-.28a.914.914 0 0 1 1.292 0c.748.748 1.96.748 2.708 0a.914.914 0 0 1 1.292 0c.748.748 1.96.748 2.707 0a.914.914 0 0 1 1.293 0Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cake2-fill.svg b/vendor/twbs/bootstrap-icons/icons/cake2-fill.svg
new file mode 100644
index 000000000..1ed25f755
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cake2-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cake2-fill" viewBox="0 0 16 16">
+ <path d="m2.899.804.595-.792.598.79A.747.747 0 0 1 4 1.806v4.886q-.532-.09-1-.201V1.813a.747.747 0 0 1-.1-1.01ZM13 1.806v4.685a15 15 0 0 1-1 .201v-4.88a.747.747 0 0 1-.1-1.007l.595-.792.598.79A.746.746 0 0 1 13 1.806m-3 0a.746.746 0 0 0 .092-1.004l-.598-.79-.595.792A.747.747 0 0 0 9 1.813v5.17q.512-.02 1-.055zm-3 0v5.176q-.512-.018-1-.054V1.813a.747.747 0 0 1-.1-1.01l.595-.79.598.789A.747.747 0 0 1 7 1.806"/>
+ <path d="M4.5 6.988V4.226a23 23 0 0 1 1-.114V7.16c0 .131.101.24.232.25l.231.017q.498.037 1.02.055l.258.01a.25.25 0 0 0 .26-.25V4.003a29 29 0 0 1 1 0V7.24a.25.25 0 0 0 .258.25l.259-.009q.52-.018 1.019-.055l.231-.017a.25.25 0 0 0 .232-.25V4.112q.518.047 1 .114v2.762a.25.25 0 0 0 .292.246l.291-.049q.547-.091 1.033-.208l.192-.046a.25.25 0 0 0 .192-.243V4.621c.672.184 1.251.409 1.677.678.415.261.823.655.823 1.2V13.5c0 .546-.408.94-.823 1.201-.44.278-1.043.51-1.745.696-1.41.376-3.33.603-5.432.603s-4.022-.227-5.432-.603c-.702-.187-1.305-.418-1.745-.696C.408 14.44 0 14.046 0 13.5v-7c0-.546.408-.94.823-1.201.426-.269 1.005-.494 1.677-.678v2.067c0 .116.08.216.192.243l.192.046q.486.116 1.033.208l.292.05a.25.25 0 0 0 .291-.247M1 8.82v1.659a1.935 1.935 0 0 0 2.298.43.935.935 0 0 1 1.08.175l.348.349a2 2 0 0 0 2.615.185l.059-.044a1 1 0 0 1 1.2 0l.06.044a2 2 0 0 0 2.613-.185l.348-.348a.94.94 0 0 1 1.082-.175c.781.39 1.718.208 2.297-.426V8.833l-.68.907a.94.94 0 0 1-1.17.276 1.94 1.94 0 0 0-2.236.363l-.348.348a1 1 0 0 1-1.307.092l-.06-.044a2 2 0 0 0-2.399 0l-.06.044a1 1 0 0 1-1.306-.092l-.35-.35a1.935 1.935 0 0 0-2.233-.362.935.935 0 0 1-1.168-.277z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cake2.svg b/vendor/twbs/bootstrap-icons/icons/cake2.svg
new file mode 100644
index 000000000..a10dc806d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cake2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cake2" viewBox="0 0 16 16">
+ <path d="m3.494.013-.595.79A.747.747 0 0 0 3 1.814v2.683q-.224.051-.432.107c-.702.187-1.305.418-1.745.696C.408 5.56 0 5.954 0 6.5v7c0 .546.408.94.823 1.201.44.278 1.043.51 1.745.696C3.978 15.773 5.898 16 8 16s4.022-.227 5.432-.603c.701-.187 1.305-.418 1.745-.696.415-.261.823-.655.823-1.201v-7c0-.546-.408-.94-.823-1.201-.44-.278-1.043-.51-1.745-.696A12 12 0 0 0 13 4.496v-2.69a.747.747 0 0 0 .092-1.004l-.598-.79-.595.792A.747.747 0 0 0 12 1.813V4.3a22 22 0 0 0-2-.23V1.806a.747.747 0 0 0 .092-1.004l-.598-.79-.595.792A.747.747 0 0 0 9 1.813v2.204a29 29 0 0 0-2 0V1.806A.747.747 0 0 0 7.092.802l-.598-.79-.595.792A.747.747 0 0 0 6 1.813V4.07c-.71.05-1.383.129-2 .23V1.806A.747.747 0 0 0 4.092.802zm-.668 5.556L3 5.524v.967q.468.111 1 .201V5.315a21 21 0 0 1 2-.242v1.855q.488.036 1 .054V5.018a28 28 0 0 1 2 0v1.964q.512-.018 1-.054V5.073c.72.054 1.393.137 2 .242v1.377q.532-.09 1-.201v-.967l.175.045c.655.175 1.15.374 1.469.575.344.217.356.35.356.356s-.012.139-.356.356c-.319.2-.814.4-1.47.575C11.87 7.78 10.041 8 8 8c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575C1.012 6.639 1 6.506 1 6.5s.012-.139.356-.356c.319-.2.814-.4 1.47-.575M15 7.806v1.027l-.68.907a.94.94 0 0 1-1.17.276 1.94 1.94 0 0 0-2.236.363l-.348.348a1 1 0 0 1-1.307.092l-.06-.044a2 2 0 0 0-2.399 0l-.06.044a1 1 0 0 1-1.306-.092l-.35-.35a1.935 1.935 0 0 0-2.233-.362.935.935 0 0 1-1.168-.277L1 8.82V7.806c.42.232.956.428 1.568.591C3.978 8.773 5.898 9 8 9s4.022-.227 5.432-.603c.612-.163 1.149-.36 1.568-.591m0 2.679V13.5c0 .006-.012.139-.356.355-.319.202-.814.401-1.47.576C11.87 14.78 10.041 15 8 15c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575-.344-.217-.356-.35-.356-.356v-3.02a1.935 1.935 0 0 0 2.298.43.935.935 0 0 1 1.08.175l.348.349a2 2 0 0 0 2.615.185l.059-.044a1 1 0 0 1 1.2 0l.06.044a2 2 0 0 0 2.613-.185l.348-.348a.94.94 0 0 1 1.082-.175c.781.39 1.718.208 2.297-.426"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calculator-fill.svg b/vendor/twbs/bootstrap-icons/icons/calculator-fill.svg
new file mode 100644
index 000000000..293341963
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calculator-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calculator-fill" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm2 .5v2a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-7a.5.5 0 0 0-.5.5m0 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M4.5 9a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM4 12.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5M7.5 6a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM7 9.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m.5 2.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM10 6.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m.5 2.5a.5.5 0 0 0-.5.5v4a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calculator.svg b/vendor/twbs/bootstrap-icons/icons/calculator.svg
new file mode 100644
index 000000000..cc9761ebb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calculator.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calculator" viewBox="0 0 16 16">
+ <path d="M12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M4 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-check-fill.svg
new file mode 100644
index 000000000..967d18293
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-check-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-check-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2m-5.146-5.146-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-check.svg b/vendor/twbs/bootstrap-icons/icons/calendar-check.svg
new file mode 100644
index 000000000..f778cd2ff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-check" viewBox="0 0 16 16">
+ <path d="M10.854 7.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708 0"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-date-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-date-fill.svg
new file mode 100644
index 000000000..59b31f2c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-date-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-date-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zm5.402 9.746c.625 0 1.184-.484 1.184-1.18 0-.832-.527-1.23-1.16-1.23-.586 0-1.168.387-1.168 1.21 0 .817.543 1.2 1.144 1.2"/>
+ <path d="M16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2m-6.664-1.21c-1.11 0-1.656-.767-1.703-1.407h.683c.043.37.387.82 1.051.82.844 0 1.301-.848 1.305-2.164h-.027c-.153.414-.637.79-1.383.79-.852 0-1.676-.61-1.676-1.77 0-1.137.871-1.809 1.797-1.809 1.172 0 1.953.734 1.953 2.668 0 1.805-.742 2.871-2 2.871zm-2.89-5.435v5.332H5.77V8.079h-.012c-.29.156-.883.52-1.258.777V8.16a13 13 0 0 1 1.313-.805h.632z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-date.svg b/vendor/twbs/bootstrap-icons/icons/calendar-date.svg
new file mode 100644
index 000000000..b73c8f509
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-date.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-date" viewBox="0 0 16 16">
+ <path d="M6.445 11.688V6.354h-.633A13 13 0 0 0 4.5 7.16v.695c.375-.257.969-.62 1.258-.777h.012v4.61zm1.188-1.305c.047.64.594 1.406 1.703 1.406 1.258 0 2-1.066 2-2.871 0-1.934-.781-2.668-1.953-2.668-.926 0-1.797.672-1.797 1.809 0 1.16.824 1.77 1.676 1.77.746 0 1.23-.376 1.383-.79h.027c-.004 1.316-.461 2.164-1.305 2.164-.664 0-1.008-.45-1.05-.82zm2.953-2.317c0 .696-.559 1.18-1.184 1.18-.601 0-1.144-.383-1.144-1.2 0-.823.582-1.21 1.168-1.21.633 0 1.16.398 1.16 1.23"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-day-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-day-fill.svg
new file mode 100644
index 000000000..b9bcbf87c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-day-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-day-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5h16zm-4.785-6.145a.428.428 0 1 0 0-.855.426.426 0 0 0-.43.43c0 .238.192.425.43.425m.336.563h-.672v4.105h.672zm-6.867 4.105v-2.3h2.261v-.61H4.684V7.801h2.464v-.61H4v5.332zm3.296 0h.676V9.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a2 2 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-day.svg b/vendor/twbs/bootstrap-icons/icons/calendar-day.svg
new file mode 100644
index 000000000..6f8d871b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-day.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-day" viewBox="0 0 16 16">
+ <path d="M4.684 11.523v-2.3h2.261v-.61H4.684V6.801h2.464v-.61H4v5.332zm3.296 0h.676V8.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a2 2 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98zm2.805-5.093c0 .238.192.425.43.425a.428.428 0 1 0 0-.855.426.426 0 0 0-.43.43m.094 5.093h.672V7.418h-.672z"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-event-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-event-fill.svg
new file mode 100644
index 000000000..5b09eeab6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-event-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-event-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2m-3.5-7h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-event.svg b/vendor/twbs/bootstrap-icons/icons/calendar-event.svg
new file mode 100644
index 000000000..57c734bfc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-event.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-event" viewBox="0 0 16 16">
+ <path d="M11 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-fill.svg
new file mode 100644
index 000000000..789eb8bfb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-fill" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5h16V4H0V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-heart-fill.svg
new file mode 100644
index 000000000..63d9e4c2c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-heart-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M8 7.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-heart.svg b/vendor/twbs/bootstrap-icons/icons/calendar-heart.svg
new file mode 100644
index 000000000..8ed9c381d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-heart" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM1 14V4h14v10a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1m7-6.507c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-minus-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-minus-fill.svg
new file mode 100644
index 000000000..8dad6e19b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-minus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-minus-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-minus.svg b/vendor/twbs/bootstrap-icons/icons/calendar-minus.svg
new file mode 100644
index 000000000..ecd4e97c4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-minus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-minus" viewBox="0 0 16 16">
+ <path d="M5.5 9.5A.5.5 0 0 1 6 9h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-month-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-month-fill.svg
new file mode 100644
index 000000000..d8d56fe6e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-month-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-month-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zm.104 7.305L4.9 10.18H3.284l.8-2.375zm9.074 2.297c0-.832-.414-1.36-1.062-1.36-.692 0-1.098.492-1.098 1.36v.253c0 .852.406 1.364 1.098 1.364.671 0 1.062-.516 1.062-1.364z"/>
+ <path d="M16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M2.56 12.332h-.71L3.748 7h.696l1.898 5.332h-.719l-.539-1.602H3.1zm7.29-4.105v4.105h-.668v-.539h-.027c-.145.324-.532.605-1.188.605-.847 0-1.453-.484-1.453-1.425V8.227h.676v2.554c0 .766.441 1.012.98 1.012.59 0 1.004-.371 1.004-1.023V8.227zm1.273 4.41c.075.332.422.636.985.636.648 0 1.07-.378 1.07-1.023v-.605h-.02c-.163.355-.613.648-1.171.648-.957 0-1.64-.672-1.64-1.902v-.34c0-1.207.675-1.887 1.64-1.887.558 0 1.004.293 1.195.64h.02v-.577h.648v4.03c0 1.052-.816 1.579-1.746 1.579-1.043 0-1.574-.516-1.668-1.2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-month.svg b/vendor/twbs/bootstrap-icons/icons/calendar-month.svg
new file mode 100644
index 000000000..95b64197f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-month.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-month" viewBox="0 0 16 16">
+ <path d="M2.56 11.332 3.1 9.73h1.984l.54 1.602h.718L4.444 6h-.696L1.85 11.332zm1.544-4.527L4.9 9.18H3.284l.8-2.375zm5.746.422h-.676V9.77c0 .652-.414 1.023-1.004 1.023-.539 0-.98-.246-.98-1.012V7.227h-.676v2.746c0 .941.606 1.425 1.453 1.425.656 0 1.043-.28 1.188-.605h.027v.539h.668zm2.258 5.046c-.563 0-.91-.304-.985-.636h-.687c.094.683.625 1.199 1.668 1.199.93 0 1.746-.527 1.746-1.578V7.227h-.649v.578h-.019c-.191-.348-.637-.64-1.195-.64-.965 0-1.64.679-1.64 1.886v.34c0 1.23.683 1.902 1.64 1.902.558 0 1.008-.293 1.172-.648h.02v.605c0 .645-.423 1.023-1.071 1.023m.008-4.53c.648 0 1.062.527 1.062 1.359v.253c0 .848-.39 1.364-1.062 1.364-.692 0-1.098-.512-1.098-1.364v-.253c0-.868.406-1.36 1.098-1.36z"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-plus-fill.svg
new file mode 100644
index 000000000..0ed0c8364
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-plus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-plus-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M8.5 8.5V10H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V11H6a.5.5 0 0 1 0-1h1.5V8.5a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-plus.svg b/vendor/twbs/bootstrap-icons/icons/calendar-plus.svg
new file mode 100644
index 000000000..189b15271
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-plus" viewBox="0 0 16 16">
+ <path d="M8 7a.5.5 0 0 1 .5.5V9H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V10H6a.5.5 0 0 1 0-1h1.5V7.5A.5.5 0 0 1 8 7"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-range-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-range-fill.svg
new file mode 100644
index 000000000..324def020
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-range-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-range-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 7V5H0v5h5a1 1 0 1 1 0 2H0v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9h-6a1 1 0 1 1 0-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-range.svg b/vendor/twbs/bootstrap-icons/icons/calendar-range.svg
new file mode 100644
index 000000000..7db09471e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-range.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-range" viewBox="0 0 16 16">
+ <path d="M9 7a1 1 0 0 1 1-1h5v2h-5a1 1 0 0 1-1-1M1 9h4a1 1 0 0 1 0 2H1z"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-week-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-week-fill.svg
new file mode 100644
index 000000000..ab2128d2c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-week-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-week-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M9.5 7h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5m3 0h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5M2 10.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3.5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-week.svg b/vendor/twbs/bootstrap-icons/icons/calendar-week.svg
new file mode 100644
index 000000000..b5dbcc9af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-week.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-week" viewBox="0 0 16 16">
+ <path d="M11 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar-x-fill.svg
new file mode 100644
index 000000000..450e114a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-x-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-x-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v1h16V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM16 14V5H0v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M6.854 8.146 8 9.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 10l1.147 1.146a.5.5 0 0 1-.708.708L8 10.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 10 6.146 8.854a.5.5 0 1 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar-x.svg b/vendor/twbs/bootstrap-icons/icons/calendar-x.svg
new file mode 100644
index 000000000..dc85a91ad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-x" viewBox="0 0 16 16">
+ <path d="M6.146 7.146a.5.5 0 0 1 .708 0L8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 0 1 0-.708"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar.svg b/vendor/twbs/bootstrap-icons/icons/calendar.svg
new file mode 100644
index 000000000..d32ebe7ea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-check-fill.svg
new file mode 100644
index 000000000..a0c36c5d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-check-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-check-fill" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5m-2.6 5.854a.5.5 0 0 0-.708-.708L7.5 10.793 6.354 9.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-check.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-check.svg
new file mode 100644
index 000000000..54298422a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-check.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-check" viewBox="0 0 16 16">
+ <path d="M10.854 8.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708 0"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+ <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-date-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-date-fill.svg
new file mode 100644
index 000000000..93b3941ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-date-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-date-fill" viewBox="0 0 16 16">
+ <path d="M9.402 10.246c.625 0 1.184-.484 1.184-1.18 0-.832-.527-1.23-1.16-1.23-.586 0-1.168.387-1.168 1.21 0 .817.543 1.2 1.144 1.2"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5m-4.118 9.79c1.258 0 2-1.067 2-2.872 0-1.934-.781-2.668-1.953-2.668-.926 0-1.797.672-1.797 1.809 0 1.16.824 1.77 1.676 1.77.746 0 1.23-.376 1.383-.79h.027c-.004 1.316-.461 2.164-1.305 2.164-.664 0-1.008-.45-1.05-.82h-.684c.047.64.594 1.406 1.703 1.406zm-2.89-5.435h-.633A13 13 0 0 0 4.5 8.16v.695c.375-.257.969-.62 1.258-.777h.012v4.61h.675V7.354z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-date.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-date.svg
new file mode 100644
index 000000000..61193cdf2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-date.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-date" viewBox="0 0 16 16">
+ <path d="M6.445 12.688V7.354h-.633A13 13 0 0 0 4.5 8.16v.695c.375-.257.969-.62 1.258-.777h.012v4.61zm1.188-1.305c.047.64.594 1.406 1.703 1.406 1.258 0 2-1.066 2-2.871 0-1.934-.781-2.668-1.953-2.668-.926 0-1.797.672-1.797 1.809 0 1.16.824 1.77 1.676 1.77.746 0 1.23-.376 1.383-.79h.027c-.004 1.316-.461 2.164-1.305 2.164-.664 0-1.008-.45-1.05-.82zm2.953-2.317c0 .696-.559 1.18-1.184 1.18-.601 0-1.144-.383-1.144-1.2 0-.823.582-1.21 1.168-1.21.633 0 1.16.398 1.16 1.23"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+ <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-day-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-day-fill.svg
new file mode 100644
index 000000000..b60545387
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-day-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-day-fill" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5m-2.24 4.855a.428.428 0 1 0 0-.855.426.426 0 0 0-.429.43c0 .238.192.425.43.425zm.337.563h-.672v4.105h.672zm-6.867 4.105v-2.3h2.261v-.61H4.684V7.801h2.464v-.61H4v5.332zm3.296 0h.676V9.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a2 2 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-day.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-day.svg
new file mode 100644
index 000000000..ce59878a3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-day.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-day" viewBox="0 0 16 16">
+ <path d="M4.684 12.523v-2.3h2.261v-.61H4.684V7.801h2.464v-.61H4v5.332zm3.296 0h.676V9.98c0-.554.227-1.007.953-1.007.125 0 .258.004.329.015v-.613a2 2 0 0 0-.254-.02c-.582 0-.891.32-1.012.567h-.02v-.504H7.98zm2.805-5.093c0 .238.192.425.43.425a.428.428 0 1 0 0-.855.426.426 0 0 0-.43.43m.094 5.093h.672V8.418h-.672z"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+ <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-event-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-event-fill.svg
new file mode 100644
index 000000000..2b245d1ba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-event-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-event-fill" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5M11.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-event.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-event.svg
new file mode 100644
index 000000000..36910dd7a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-event.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-event" viewBox="0 0 16 16">
+ <path d="M11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+ <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-fill.svg
new file mode 100644
index 000000000..b28e594cd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM2.545 3h10.91c.3 0 .545.224.545.5v1c0 .276-.244.5-.546.5H2.545C2.245 5 2 4.776 2 4.5v-1c0-.276.244-.5.545-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-heart-fill.svg
new file mode 100644
index 000000000..f3723cd99
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-heart-fill" viewBox="0 0 16 16">
+ <path d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zm-2 4v-1c0-.276.244-.5.545-.5h10.91c.3 0 .545.224.545.5v1c0 .276-.244.5-.546.5H2.545C2.245 5 2 4.776 2 4.5m6 3.493c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-heart.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-heart.svg
new file mode 100644
index 000000000..995d9b8cd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-heart" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4 .5a.5.5 0 0 0-1 0V1H2a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-1 0V1H4zM1 3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm2 .5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V4a.5.5 0 0 0-.5-.5zm5 4.493c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-minus-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-minus-fill.svg
new file mode 100644
index 000000000..bf52a36a7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-minus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-minus-fill" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5M6 10a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-minus.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-minus.svg
new file mode 100644
index 000000000..62e6bbc34
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-minus.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-minus" viewBox="0 0 16 16">
+ <path d="M5.5 10.5A.5.5 0 0 1 6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+ <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-month-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-month-fill.svg
new file mode 100644
index 000000000..24b9c69ef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-month-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-month-fill" viewBox="0 0 16 16">
+ <path d="M4.104 7.805 4.9 10.18H3.284l.8-2.375zm9.074 2.297c0-.832-.414-1.36-1.062-1.36-.692 0-1.098.492-1.098 1.36v.253c0 .852.406 1.364 1.098 1.364.671 0 1.062-.516 1.062-1.364z"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5M2.561 12.332 3.1 10.73h1.984l.54 1.602h.718L4.444 7h-.696L1.85 12.332zM9.85 8.227h-.676v2.543c0 .652-.414 1.023-1.004 1.023-.539 0-.98-.246-.98-1.012V8.227h-.676v2.746c0 .941.606 1.425 1.453 1.425.656 0 1.043-.28 1.188-.605h.027v.539h.668zm1.273 4.41h-.687c.094.683.625 1.199 1.668 1.199.93 0 1.746-.527 1.746-1.578V8.227h-.649v.578h-.019c-.191-.348-.637-.64-1.195-.64-.965 0-1.64.679-1.64 1.886v.34c0 1.23.683 1.902 1.64 1.902.558 0 1.008-.293 1.172-.648h.02v.605c0 .645-.423 1.023-1.071 1.023-.563 0-.91-.304-.985-.636"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-month.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-month.svg
new file mode 100644
index 000000000..65d8295f0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-month.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-month" viewBox="0 0 16 16">
+ <path d="m2.56 12.332.54-1.602h1.984l.54 1.602h.718L4.444 7h-.696L1.85 12.332zm1.544-4.527L4.9 10.18H3.284l.8-2.375zm5.746.422h-.676v2.543c0 .652-.414 1.023-1.004 1.023-.539 0-.98-.246-.98-1.012V8.227h-.676v2.746c0 .941.606 1.425 1.453 1.425.656 0 1.043-.28 1.188-.605h.027v.539h.668zm2.258 5.046c-.563 0-.91-.304-.985-.636h-.687c.094.683.625 1.199 1.668 1.199.93 0 1.746-.527 1.746-1.578V8.227h-.649v.578h-.019c-.191-.348-.637-.64-1.195-.64-.965 0-1.64.679-1.64 1.886v.34c0 1.23.683 1.902 1.64 1.902.558 0 1.008-.293 1.172-.648h.02v.605c0 .645-.423 1.023-1.071 1.023m.008-4.53c.648 0 1.062.527 1.062 1.359v.253c0 .848-.39 1.364-1.062 1.364-.692 0-1.098-.512-1.098-1.364v-.253c0-.868.406-1.36 1.098-1.36z"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+ <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-plus-fill.svg
new file mode 100644
index 000000000..26a20477d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-plus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-plus-fill" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 3.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5H2.545c-.3 0-.545.224-.545.5m6.5 5a.5.5 0 0 0-1 0V10H6a.5.5 0 0 0 0 1h1.5v1.5a.5.5 0 0 0 1 0V11H10a.5.5 0 0 0 0-1H8.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-plus.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-plus.svg
new file mode 100644
index 000000000..728148fbd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-plus" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+ <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5zM8 8a.5.5 0 0 1 .5.5V10H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V11H6a.5.5 0 0 1 0-1h1.5V8.5A.5.5 0 0 1 8 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-range-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-range-fill.svg
new file mode 100644
index 000000000..1ba46b6a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-range-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-range-fill" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5M10 7a1 1 0 0 0 0 2h5V7zm-4 4a1 1 0 0 0-1-1H1v2h4a1 1 0 0 0 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-range.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-range.svg
new file mode 100644
index 000000000..9a657f409
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-range.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-range" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+ <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5zM9 8a1 1 0 0 1 1-1h5v2h-5a1 1 0 0 1-1-1m-8 2h4a1 1 0 1 1 0 2H1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-week-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-week-fill.svg
new file mode 100644
index 000000000..f3586679f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-week-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-week-fill" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5M8.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM3 10.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5m3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-week.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-week.svg
new file mode 100644
index 000000000..07906a9e9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-week.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-week" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+ <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5zM11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-x-fill.svg
new file mode 100644
index 000000000..def799dd2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-x-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-x-fill" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5m9.954 3H2.545c-.3 0-.545.224-.545.5v1c0 .276.244.5.545.5h10.91c.3 0 .545-.224.545-.5v-1c0-.276-.244-.5-.546-.5m-6.6 5.146a.5.5 0 1 0-.708.708L7.293 10l-1.147 1.146a.5.5 0 0 0 .708.708L8 10.707l1.146 1.147a.5.5 0 0 0 .708-.708L8.707 10l1.147-1.146a.5.5 0 0 0-.708-.708L8 9.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2-x.svg b/vendor/twbs/bootstrap-icons/icons/calendar2-x.svg
new file mode 100644
index 000000000..d6f9e6f85
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2-x.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-x" viewBox="0 0 16 16">
+ <path d="M6.146 8.146a.5.5 0 0 1 .708 0L8 9.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 10l1.147 1.146a.5.5 0 0 1-.708.708L8 10.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 10 6.146 8.854a.5.5 0 0 1 0-.708"/>
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+ <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar2.svg b/vendor/twbs/bootstrap-icons/icons/calendar2.svg
new file mode 100644
index 000000000..957f99363
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+ <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar3-event-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar3-event-fill.svg
new file mode 100644
index 000000000..d228ccbdc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar3-event-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar3-event-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 0a2 2 0 0 0-2 2h16a2 2 0 0 0-2-2zM0 14V3h16v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m12-8a1 1 0 1 0 2 0 1 1 0 0 0-2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar3-event.svg b/vendor/twbs/bootstrap-icons/icons/calendar3-event.svg
new file mode 100644
index 000000000..f702c3629
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar3-event.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar3-event" viewBox="0 0 16 16">
+ <path d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857z"/>
+ <path d="M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar3-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar3-fill.svg
new file mode 100644
index 000000000..f3bc116cb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar3-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar3-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2zm0 1v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar3-range-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar3-range-fill.svg
new file mode 100644
index 000000000..e21d0eefd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar3-range-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar3-range-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 0a2 2 0 0 0-2 2h16a2 2 0 0 0-2-2zM0 8V3h16v2h-6a1 1 0 1 0 0 2h6v7a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-4h6a1 1 0 1 0 0-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar3-range.svg b/vendor/twbs/bootstrap-icons/icons/calendar3-range.svg
new file mode 100644
index 000000000..c19d9ca94
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar3-range.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar3-range" viewBox="0 0 16 16">
+ <path d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857z"/>
+ <path d="M7 10a1 1 0 0 0 0-2H1v2zm2-3h6V5H9a1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar3-week-fill.svg b/vendor/twbs/bootstrap-icons/icons/calendar3-week-fill.svg
new file mode 100644
index 000000000..d828d85bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar3-week-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar3-week-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 0a2 2 0 0 0-2 2h16a2 2 0 0 0-2-2zM0 14V3h16v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m12-8a1 1 0 1 0 2 0 1 1 0 0 0-2 0M5 9a1 1 0 1 0 2 0 1 1 0 0 0-2 0m5-2a1 1 0 1 1 0-2 1 1 0 0 1 0 2M2 9a1 1 0 1 0 2 0 1 1 0 0 0-2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar3-week.svg b/vendor/twbs/bootstrap-icons/icons/calendar3-week.svg
new file mode 100644
index 000000000..6d577b7ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar3-week.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar3-week" viewBox="0 0 16 16">
+ <path d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857z"/>
+ <path d="M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2m-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m2-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar3.svg b/vendor/twbs/bootstrap-icons/icons/calendar3.svg
new file mode 100644
index 000000000..8e2aedfc7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar3.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar3" viewBox="0 0 16 16">
+ <path d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857z"/>
+ <path d="M6.5 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2m3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar4-event.svg b/vendor/twbs/bootstrap-icons/icons/calendar4-event.svg
new file mode 100644
index 000000000..0d29c0c6c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar4-event.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar4-event" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+ <path d="M11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar4-range.svg b/vendor/twbs/bootstrap-icons/icons/calendar4-range.svg
new file mode 100644
index 000000000..b260479fe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar4-range.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar4-range" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+ <path d="M9 7.5a.5.5 0 0 1 .5-.5H15v2H9.5a.5.5 0 0 1-.5-.5zm-2 3v1a.5.5 0 0 1-.5.5H1v-2h5.5a.5.5 0 0 1 .5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar4-week.svg b/vendor/twbs/bootstrap-icons/icons/calendar4-week.svg
new file mode 100644
index 000000000..d934881f0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar4-week.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar4-week" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+ <path d="M11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-2 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/calendar4.svg b/vendor/twbs/bootstrap-icons/icons/calendar4.svg
new file mode 100644
index 000000000..69c474c03
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/calendar4.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar4" viewBox="0 0 16 16">
+ <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5M2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/camera-fill.svg b/vendor/twbs/bootstrap-icons/icons/camera-fill.svg
new file mode 100644
index 000000000..6aa02409c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/camera-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-camera-fill" viewBox="0 0 16 16">
+ <path d="M10.5 8.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0"/>
+ <path d="M2 4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-1.172a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 9.172 2H6.828a2 2 0 0 0-1.414.586l-.828.828A2 2 0 0 1 3.172 4zm.5 2a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m9 2.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/camera-reels-fill.svg b/vendor/twbs/bootstrap-icons/icons/camera-reels-fill.svg
new file mode 100644
index 000000000..6bd48dec9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/camera-reels-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-camera-reels-fill" viewBox="0 0 16 16">
+ <path d="M6 3a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+ <path d="M9 6a3 3 0 1 1 0-6 3 3 0 0 1 0 6"/>
+ <path d="M9 6h.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 7.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 16H2a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/camera-reels.svg b/vendor/twbs/bootstrap-icons/icons/camera-reels.svg
new file mode 100644
index 000000000..0c6eca8c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/camera-reels.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-camera-reels" viewBox="0 0 16 16">
+ <path d="M6 3a3 3 0 1 1-6 0 3 3 0 0 1 6 0M1 3a2 2 0 1 0 4 0 2 2 0 0 0-4 0"/>
+ <path d="M9 6h.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 7.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 16H2a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2zm6 8.73V7.27l-3.5 1.555v4.35zM1 8v6a1 1 0 0 0 1 1h7.5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1"/>
+ <path d="M9 6a3 3 0 1 0 0-6 3 3 0 0 0 0 6M7 3a2 2 0 1 1 4 0 2 2 0 0 1-4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/camera-video-fill.svg b/vendor/twbs/bootstrap-icons/icons/camera-video-fill.svg
new file mode 100644
index 000000000..72dee3759
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/camera-video-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-camera-video-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 5a2 2 0 0 1 2-2h7.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 4.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 13H2a2 2 0 0 1-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/camera-video-off-fill.svg b/vendor/twbs/bootstrap-icons/icons/camera-video-off-fill.svg
new file mode 100644
index 000000000..290dc19ce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/camera-video-off-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-camera-video-off-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.961 12.365a2 2 0 0 0 .522-1.103l3.11 1.382A1 1 0 0 0 16 11.731V4.269a1 1 0 0 0-1.406-.913l-3.111 1.382A2 2 0 0 0 9.5 3H4.272zm-10.114-9A2 2 0 0 0 0 5v6a2 2 0 0 0 2 2h5.728zm9.746 11.925-10-14 .814-.58 10 14z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/camera-video-off.svg b/vendor/twbs/bootstrap-icons/icons/camera-video-off.svg
new file mode 100644
index 000000000..c9eb587da
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/camera-video-off.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-camera-video-off" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.961 12.365a2 2 0 0 0 .522-1.103l3.11 1.382A1 1 0 0 0 16 11.731V4.269a1 1 0 0 0-1.406-.913l-3.111 1.382A2 2 0 0 0 9.5 3H4.272l.714 1H9.5a1 1 0 0 1 1 1v6a1 1 0 0 1-.144.518zM1.428 4.18A1 1 0 0 0 1 5v6a1 1 0 0 0 1 1h5.014l.714 1H2a2 2 0 0 1-2-2V5c0-.675.334-1.272.847-1.634zM15 11.73l-3.5-1.555v-4.35L15 4.269zm-4.407 3.56-10-14 .814-.58 10 14z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/camera-video.svg b/vendor/twbs/bootstrap-icons/icons/camera-video.svg
new file mode 100644
index 000000000..a042d1aa2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/camera-video.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-camera-video" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 5a2 2 0 0 1 2-2h7.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 4.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 13H2a2 2 0 0 1-2-2zm11.5 5.175 3.5 1.556V4.269l-3.5 1.556zM2 4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h7.5a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/camera.svg b/vendor/twbs/bootstrap-icons/icons/camera.svg
new file mode 100644
index 000000000..3a926d537
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/camera.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-camera" viewBox="0 0 16 16">
+ <path d="M15 12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h1.172a3 3 0 0 0 2.12-.879l.83-.828A1 1 0 0 1 6.827 3h2.344a1 1 0 0 1 .707.293l.828.828A3 3 0 0 0 12.828 5H14a1 1 0 0 1 1 1zM2 4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-1.172a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 9.172 2H6.828a2 2 0 0 0-1.414.586l-.828.828A2 2 0 0 1 3.172 4z"/>
+ <path d="M8 11a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5m0 1a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M3 6.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/camera2.svg b/vendor/twbs/bootstrap-icons/icons/camera2.svg
new file mode 100644
index 000000000..ba9521e11
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/camera2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-camera2" viewBox="0 0 16 16">
+ <path d="M5 8c0-1.657 2.343-3 4-3V4a4 4 0 0 0-4 4"/>
+ <path d="M12.318 3h2.015C15.253 3 16 3.746 16 4.667v6.666c0 .92-.746 1.667-1.667 1.667h-2.015A5.97 5.97 0 0 1 9 14a5.97 5.97 0 0 1-3.318-1H1.667C.747 13 0 12.254 0 11.333V4.667C0 3.747.746 3 1.667 3H2a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1h.682A5.97 5.97 0 0 1 9 2c1.227 0 2.367.368 3.318 1M2 4.5a.5.5 0 1 0-1 0 .5.5 0 0 0 1 0M14 8A5 5 0 1 0 4 8a5 5 0 0 0 10 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/capslock-fill.svg b/vendor/twbs/bootstrap-icons/icons/capslock-fill.svg
new file mode 100644
index 000000000..f1c0bab0d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/capslock-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-capslock-fill" viewBox="0 0 16 16">
+ <path d="M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-1H1.654C.78 9.5.326 8.455.924 7.816zM4.5 13.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/capslock.svg b/vendor/twbs/bootstrap-icons/icons/capslock.svg
new file mode 100644
index 000000000..b0b894a83
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/capslock.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-capslock" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-1H1.654C.78 9.5.326 8.455.924 7.816zM14.346 8.5 8 1.731 1.654 8.5H4.5a1 1 0 0 1 1 1v1h5v-1a1 1 0 0 1 1-1zm-9.846 5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1zm6 0h-5v1h5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/capsule-pill.svg b/vendor/twbs/bootstrap-icons/icons/capsule-pill.svg
new file mode 100644
index 000000000..b9f3b5483
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/capsule-pill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-capsule-pill" viewBox="0 0 16 16">
+ <path d="M11.02 5.364a3 3 0 0 0-4.242-4.243L1.121 6.778a3 3 0 1 0 4.243 4.243l5.657-5.657Zm-6.413-.657 2.878-2.879a2 2 0 1 1 2.829 2.829L7.435 7.536zM12 8a4 4 0 1 1 0 8 4 4 0 0 1 0-8m-.5 1.042a3 3 0 0 0 0 5.917zm1 5.917a3 3 0 0 0 0-5.917z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/capsule.svg b/vendor/twbs/bootstrap-icons/icons/capsule.svg
new file mode 100644
index 000000000..53d1a66ea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/capsule.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-capsule" viewBox="0 0 16 16">
+ <path d="M1.828 8.9 8.9 1.827a4 4 0 1 1 5.657 5.657l-7.07 7.071A4 4 0 1 1 1.827 8.9Zm9.128.771 2.893-2.893a3 3 0 1 0-4.243-4.242L6.713 5.429z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/car-front-fill.svg b/vendor/twbs/bootstrap-icons/icons/car-front-fill.svg
new file mode 100644
index 000000000..a47a8705a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/car-front-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-car-front-fill" viewBox="0 0 16 16">
+ <path d="M2.52 3.515A2.5 2.5 0 0 1 4.82 2h6.362c1 0 1.904.596 2.298 1.515l.792 1.848c.075.175.21.319.38.404.5.25.855.715.965 1.262l.335 1.679q.05.242.049.49v.413c0 .814-.39 1.543-1 1.997V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.338c-1.292.048-2.745.088-4 .088s-2.708-.04-4-.088V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.892c-.61-.454-1-1.183-1-1.997v-.413a2.5 2.5 0 0 1 .049-.49l.335-1.68c.11-.546.465-1.012.964-1.261a.8.8 0 0 0 .381-.404l.792-1.848ZM3 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2m10 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2M6 8a1 1 0 0 0 0 2h4a1 1 0 1 0 0-2zM2.906 5.189a.51.51 0 0 0 .497.731c.91-.073 3.35-.17 4.597-.17s3.688.097 4.597.17a.51.51 0 0 0 .497-.731l-.956-1.913A.5.5 0 0 0 11.691 3H4.309a.5.5 0 0 0-.447.276L2.906 5.19Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/car-front.svg b/vendor/twbs/bootstrap-icons/icons/car-front.svg
new file mode 100644
index 000000000..890e4cf4c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/car-front.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-car-front" viewBox="0 0 16 16">
+ <path d="M4 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0m10 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M6 8a1 1 0 0 0 0 2h4a1 1 0 1 0 0-2zM4.862 4.276 3.906 6.19a.51.51 0 0 0 .497.731c.91-.073 2.35-.17 3.597-.17s2.688.097 3.597.17a.51.51 0 0 0 .497-.731l-.956-1.913A.5.5 0 0 0 10.691 4H5.309a.5.5 0 0 0-.447.276"/>
+ <path d="M2.52 3.515A2.5 2.5 0 0 1 4.82 2h6.362c1 0 1.904.596 2.298 1.515l.792 1.848c.075.175.21.319.38.404.5.25.855.715.965 1.262l.335 1.679q.05.242.049.49v.413c0 .814-.39 1.543-1 1.997V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.338c-1.292.048-2.745.088-4 .088s-2.708-.04-4-.088V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.892c-.61-.454-1-1.183-1-1.997v-.413a2.5 2.5 0 0 1 .049-.49l.335-1.68c.11-.546.465-1.012.964-1.261a.8.8 0 0 0 .381-.404l.792-1.848ZM4.82 3a1.5 1.5 0 0 0-1.379.91l-.792 1.847a1.8 1.8 0 0 1-.853.904.8.8 0 0 0-.43.564L1.03 8.904a1.5 1.5 0 0 0-.03.294v.413c0 .796.62 1.448 1.408 1.484 1.555.07 3.786.155 5.592.155s4.037-.084 5.592-.155A1.48 1.48 0 0 0 15 9.611v-.413q0-.148-.03-.294l-.335-1.68a.8.8 0 0 0-.43-.563 1.8 1.8 0 0 1-.853-.904l-.792-1.848A1.5 1.5 0 0 0 11.18 3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/card-checklist.svg b/vendor/twbs/bootstrap-icons/icons/card-checklist.svg
new file mode 100644
index 000000000..3044e686a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/card-checklist.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-card-checklist" viewBox="0 0 16 16">
+ <path d="M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2z"/>
+ <path d="M7 5.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m-1.496-.854a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0M7 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m-1.496-.854a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 0 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/card-heading.svg b/vendor/twbs/bootstrap-icons/icons/card-heading.svg
new file mode 100644
index 000000000..a6be8739b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/card-heading.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-card-heading" viewBox="0 0 16 16">
+ <path d="M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2z"/>
+ <path d="M3 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0-5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/card-image.svg b/vendor/twbs/bootstrap-icons/icons/card-image.svg
new file mode 100644
index 000000000..7343f7785
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/card-image.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-card-image" viewBox="0 0 16 16">
+ <path d="M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+ <path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zm13 1a.5.5 0 0 1 .5.5v6l-3.775-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12v.54L1 12.5v-9a.5.5 0 0 1 .5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/card-list.svg b/vendor/twbs/bootstrap-icons/icons/card-list.svg
new file mode 100644
index 000000000..62708023a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/card-list.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-card-list" viewBox="0 0 16 16">
+ <path d="M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2z"/>
+ <path d="M5 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 5 8m0-2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0 5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-1-5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M4 8a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/card-text.svg b/vendor/twbs/bootstrap-icons/icons/card-text.svg
new file mode 100644
index 000000000..8f7470c25
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/card-text.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-card-text" viewBox="0 0 16 16">
+ <path d="M14.5 3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2z"/>
+ <path d="M3 5.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3 8a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 8m0 2.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-down-fill.svg b/vendor/twbs/bootstrap-icons/icons/caret-down-fill.svg
new file mode 100644
index 000000000..d7c3990eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-down-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-down-fill" viewBox="0 0 16 16">
+ <path d="M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-down-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/caret-down-square-fill.svg
new file mode 100644
index 000000000..63199bb4d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-down-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-down-square-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm4 4a.5.5 0 0 0-.374.832l4 4.5a.5.5 0 0 0 .748 0l4-4.5A.5.5 0 0 0 12 6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-down-square.svg b/vendor/twbs/bootstrap-icons/icons/caret-down-square.svg
new file mode 100644
index 000000000..037262514
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-down-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-down-square" viewBox="0 0 16 16">
+ <path d="M3.626 6.832A.5.5 0 0 1 4 6h8a.5.5 0 0 1 .374.832l-4 4.5a.5.5 0 0 1-.748 0z"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-down.svg b/vendor/twbs/bootstrap-icons/icons/caret-down.svg
new file mode 100644
index 000000000..627258a46
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-down" viewBox="0 0 16 16">
+ <path d="M3.204 5h9.592L8 10.481zm-.753.659 4.796 5.48a1 1 0 0 0 1.506 0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 0 0-.753 1.659"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-left-fill.svg b/vendor/twbs/bootstrap-icons/icons/caret-left-fill.svg
new file mode 100644
index 000000000..d989dff93
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-left-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-left-fill" viewBox="0 0 16 16">
+ <path d="m3.86 8.753 5.482 4.796c.646.566 1.658.106 1.658-.753V3.204a1 1 0 0 0-1.659-.753l-5.48 4.796a1 1 0 0 0 0 1.506z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-left-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/caret-left-square-fill.svg
new file mode 100644
index 000000000..cc7e3a81c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-left-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-left-square-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm10.5 10V4a.5.5 0 0 0-.832-.374l-4.5 4a.5.5 0 0 0 0 .748l4.5 4A.5.5 0 0 0 10.5 12"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-left-square.svg b/vendor/twbs/bootstrap-icons/icons/caret-left-square.svg
new file mode 100644
index 000000000..5e8cb2067
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-left-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-left-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M10.205 12.456A.5.5 0 0 0 10.5 12V4a.5.5 0 0 0-.832-.374l-4.5 4a.5.5 0 0 0 0 .748l4.5 4a.5.5 0 0 0 .537.082"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-left.svg b/vendor/twbs/bootstrap-icons/icons/caret-left.svg
new file mode 100644
index 000000000..4415336d4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-left" viewBox="0 0 16 16">
+ <path d="M10 12.796V3.204L4.519 8zm-.659.753-5.48-4.796a1 1 0 0 1 0-1.506l5.48-4.796A1 1 0 0 1 11 3.204v9.592a1 1 0 0 1-1.659.753"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-right-fill.svg b/vendor/twbs/bootstrap-icons/icons/caret-right-fill.svg
new file mode 100644
index 000000000..b44555181
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-right-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-right-fill" viewBox="0 0 16 16">
+ <path d="m12.14 8.753-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-right-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/caret-right-square-fill.svg
new file mode 100644
index 000000000..2aded36f1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-right-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-right-square-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.5 10a.5.5 0 0 0 .832.374l4.5-4a.5.5 0 0 0 0-.748l-4.5-4A.5.5 0 0 0 5.5 4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-right-square.svg b/vendor/twbs/bootstrap-icons/icons/caret-right-square.svg
new file mode 100644
index 000000000..a3a44e2c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-right-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-right-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M5.795 12.456A.5.5 0 0 1 5.5 12V4a.5.5 0 0 1 .832-.374l4.5 4a.5.5 0 0 1 0 .748l-4.5 4a.5.5 0 0 1-.537.082"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-right.svg b/vendor/twbs/bootstrap-icons/icons/caret-right.svg
new file mode 100644
index 000000000..7bcd8bba6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-right" viewBox="0 0 16 16">
+ <path d="M6 12.796V3.204L11.481 8zm.659.753 5.48-4.796a1 1 0 0 0 0-1.506L6.66 2.451C6.011 1.885 5 2.345 5 3.204v9.592a1 1 0 0 0 1.659.753"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-up-fill.svg b/vendor/twbs/bootstrap-icons/icons/caret-up-fill.svg
new file mode 100644
index 000000000..a87820e6e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-up-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-up-fill" viewBox="0 0 16 16">
+ <path d="m7.247 4.86-4.796 5.481c-.566.647-.106 1.659.753 1.659h9.592a1 1 0 0 0 .753-1.659l-4.796-5.48a1 1 0 0 0-1.506 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-up-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/caret-up-square-fill.svg
new file mode 100644
index 000000000..348fcf290
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-up-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-up-square-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm4 9h8a.5.5 0 0 0 .374-.832l-4-4.5a.5.5 0 0 0-.748 0l-4 4.5A.5.5 0 0 0 4 11"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-up-square.svg b/vendor/twbs/bootstrap-icons/icons/caret-up-square.svg
new file mode 100644
index 000000000..8ac2af450
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-up-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-up-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M3.544 10.705A.5.5 0 0 0 4 11h8a.5.5 0 0 0 .374-.832l-4-4.5a.5.5 0 0 0-.748 0l-4 4.5a.5.5 0 0 0-.082.537"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/caret-up.svg b/vendor/twbs/bootstrap-icons/icons/caret-up.svg
new file mode 100644
index 000000000..8e3351903
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/caret-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-up" viewBox="0 0 16 16">
+ <path d="M3.204 11h9.592L8 5.519zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/cart-check-fill.svg
new file mode 100644
index 000000000..612358c53
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart-check-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart-check-fill" viewBox="0 0 16 16">
+ <path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-1.646-7.646-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L8 8.293l2.646-2.647a.5.5 0 0 1 .708.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart-check.svg b/vendor/twbs/bootstrap-icons/icons/cart-check.svg
new file mode 100644
index 000000000..68301dbcd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart-check" viewBox="0 0 16 16">
+ <path d="M11.354 6.354a.5.5 0 0 0-.708-.708L8 8.293 6.854 7.146a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/>
+ <path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zm3.915 10L3.102 4h10.796l-1.313 7zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart-dash-fill.svg b/vendor/twbs/bootstrap-icons/icons/cart-dash-fill.svg
new file mode 100644
index 000000000..a335b0779
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart-dash-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart-dash-fill" viewBox="0 0 16 16">
+ <path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M6.5 7h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart-dash.svg b/vendor/twbs/bootstrap-icons/icons/cart-dash.svg
new file mode 100644
index 000000000..9c97c3b66
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart-dash" viewBox="0 0 16 16">
+ <path d="M6.5 7a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/>
+ <path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zm3.915 10L3.102 4h10.796l-1.313 7zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart-fill.svg b/vendor/twbs/bootstrap-icons/icons/cart-fill.svg
new file mode 100644
index 000000000..974fc295f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart-fill" viewBox="0 0 16 16">
+ <path d="M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 13 12H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5M5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4m7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4m-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2m7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/cart-plus-fill.svg
new file mode 100644
index 000000000..59e46e489
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart-plus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart-plus-fill" viewBox="0 0 16 16">
+ <path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M9 5.5V7h1.5a.5.5 0 0 1 0 1H9v1.5a.5.5 0 0 1-1 0V8H6.5a.5.5 0 0 1 0-1H8V5.5a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart-plus.svg b/vendor/twbs/bootstrap-icons/icons/cart-plus.svg
new file mode 100644
index 000000000..2baaae461
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart-plus" viewBox="0 0 16 16">
+ <path d="M9 5.5a.5.5 0 0 0-1 0V7H6.5a.5.5 0 0 0 0 1H8v1.5a.5.5 0 0 0 1 0V8h1.5a.5.5 0 0 0 0-1H9z"/>
+ <path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zm3.915 10L3.102 4h10.796l-1.313 7zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/cart-x-fill.svg
new file mode 100644
index 000000000..7ca0688c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart-x-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart-x-fill" viewBox="0 0 16 16">
+ <path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7.354 5.646 8.5 6.793l1.146-1.147a.5.5 0 0 1 .708.708L9.207 7.5l1.147 1.146a.5.5 0 0 1-.708.708L8.5 8.207 7.354 9.354a.5.5 0 1 1-.708-.708L7.793 7.5 6.646 6.354a.5.5 0 1 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart-x.svg b/vendor/twbs/bootstrap-icons/icons/cart-x.svg
new file mode 100644
index 000000000..2d8f213b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart-x" viewBox="0 0 16 16">
+ <path d="M7.354 5.646a.5.5 0 1 0-.708.708L7.793 7.5 6.646 8.646a.5.5 0 1 0 .708.708L8.5 8.207l1.146 1.147a.5.5 0 0 0 .708-.708L9.207 7.5l1.147-1.146a.5.5 0 0 0-.708-.708L8.5 6.793z"/>
+ <path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zm3.915 10L3.102 4h10.796l-1.313 7zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart.svg b/vendor/twbs/bootstrap-icons/icons/cart.svg
new file mode 100644
index 000000000..0e0f96cea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart" viewBox="0 0 16 16">
+ <path d="M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 13 12H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5M3.102 4l1.313 7h8.17l1.313-7zM5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4m7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4m-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2m7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart2.svg b/vendor/twbs/bootstrap-icons/icons/cart2.svg
new file mode 100644
index 000000000..ea7f69647
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart2" viewBox="0 0 16 16">
+ <path d="M0 2.5A.5.5 0 0 1 .5 2H2a.5.5 0 0 1 .485.379L2.89 4H14.5a.5.5 0 0 1 .485.621l-1.5 6A.5.5 0 0 1 13 11H4a.5.5 0 0 1-.485-.379L1.61 3H.5a.5.5 0 0 1-.5-.5M3.14 5l1.25 5h8.22l1.25-5zM5 13a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0m9-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart3.svg b/vendor/twbs/bootstrap-icons/icons/cart3.svg
new file mode 100644
index 000000000..af1b3c539
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart3.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart3" viewBox="0 0 16 16">
+ <path d="M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .49.598l-1 5a.5.5 0 0 1-.465.401l-9.397.472L4.415 11H13a.5.5 0 0 1 0 1H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5M3.102 4l.84 4.479 9.144-.459L13.89 4zM5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4m7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4m-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2m7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cart4.svg b/vendor/twbs/bootstrap-icons/icons/cart4.svg
new file mode 100644
index 000000000..4631ac9f1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cart4.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cart4" viewBox="0 0 16 16">
+ <path d="M0 2.5A.5.5 0 0 1 .5 2H2a.5.5 0 0 1 .485.379L2.89 4H14.5a.5.5 0 0 1 .485.621l-1.5 6A.5.5 0 0 1 13 11H4a.5.5 0 0 1-.485-.379L1.61 3H.5a.5.5 0 0 1-.5-.5M3.14 5l.5 2H5V5zM6 5v2h2V5zm3 0v2h2V5zm3 0v2h1.36l.5-2zm1.11 3H12v2h.61zM11 8H9v2h2zM8 8H6v2h2zM5 8H3.89l.5 2H5zm0 5a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0m9-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cash-coin.svg b/vendor/twbs/bootstrap-icons/icons/cash-coin.svg
new file mode 100644
index 000000000..2904f15e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cash-coin.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cash-coin" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8m5-4a5 5 0 1 1-10 0 5 5 0 0 1 10 0"/>
+ <path d="M9.438 11.944c.047.596.518 1.06 1.363 1.116v.44h.375v-.443c.875-.061 1.386-.529 1.386-1.207 0-.618-.39-.936-1.09-1.1l-.296-.07v-1.2c.376.043.614.248.671.532h.658c-.047-.575-.54-1.024-1.329-1.073V8.5h-.375v.45c-.747.073-1.255.522-1.255 1.158 0 .562.378.92 1.007 1.066l.248.061v1.272c-.384-.058-.639-.27-.696-.563h-.668zm1.36-1.354c-.369-.085-.569-.26-.569-.522 0-.294.216-.514.572-.578v1.1zm.432.746c.449.104.655.272.655.569 0 .339-.257.571-.709.614v-1.195z"/>
+ <path d="M1 0a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4.083q.088-.517.258-1H3a2 2 0 0 0-2-2V3a2 2 0 0 0 2-2h10a2 2 0 0 0 2 2v3.528c.38.34.717.728 1 1.154V1a1 1 0 0 0-1-1z"/>
+ <path d="M9.998 5.083 10 5a2 2 0 1 0-3.132 1.65 6 6 0 0 1 3.13-1.567"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cash-stack.svg b/vendor/twbs/bootstrap-icons/icons/cash-stack.svg
new file mode 100644
index 000000000..fc8c282f9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cash-stack.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cash-stack" viewBox="0 0 16 16">
+ <path d="M1 3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1zm7 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+ <path d="M0 5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm3 0a2 2 0 0 1-2 2v4a2 2 0 0 1 2 2h10a2 2 0 0 1 2-2V7a2 2 0 0 1-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cash.svg b/vendor/twbs/bootstrap-icons/icons/cash.svg
new file mode 100644
index 000000000..18cbff3a4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cash" viewBox="0 0 16 16">
+ <path d="M8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+ <path d="M0 4a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm3 0a2 2 0 0 1-2 2v4a2 2 0 0 1 2 2h10a2 2 0 0 1 2-2V6a2 2 0 0 1-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cassette-fill.svg b/vendor/twbs/bootstrap-icons/icons/cassette-fill.svg
new file mode 100644
index 000000000..18fd5e42e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cassette-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cassette-fill" viewBox="0 0 16 16">
+ <path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h.191l1.862-3.724A.5.5 0 0 1 4 10h8a.5.5 0 0 1 .447.276L14.31 14h.191a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zM4 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2m8 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2M6 6a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2H7a1 1 0 0 1-1-1"/>
+ <path d="m13.191 14-1.5-3H4.309l-1.5 3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cassette.svg b/vendor/twbs/bootstrap-icons/icons/cassette.svg
new file mode 100644
index 000000000..2effe7165
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cassette.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cassette" viewBox="0 0 16 16">
+ <path d="M4 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2m9-1a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7 6a1 1 0 0 0 0 2h2a1 1 0 1 0 0-2z"/>
+ <path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zM1 3.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-.691l-1.362-2.724A.5.5 0 0 0 12 10H4a.5.5 0 0 0-.447.276L2.19 13H1.5a.5.5 0 0 1-.5-.5zM11.691 11l1 2H3.309l1-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cast.svg b/vendor/twbs/bootstrap-icons/icons/cast.svg
new file mode 100644
index 000000000..01a979506
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cast.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cast" viewBox="0 0 16 16">
+ <path d="m7.646 9.354-3.792 3.792a.5.5 0 0 0 .353.854h7.586a.5.5 0 0 0 .354-.854L8.354 9.354a.5.5 0 0 0-.708 0"/>
+ <path d="M11.414 11H14.5a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.5-.5h-13a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5h3.086l-1 1H1.5A1.5 1.5 0 0 1 0 10.5v-7A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v7a1.5 1.5 0 0 1-1.5 1.5h-2.086z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cc-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/cc-circle-fill.svg
new file mode 100644
index 000000000..483d90cfc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cc-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cc-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.408 5.89c.681 0 1.138.47 1.187 1.107h1.147v-.11c-.053-1.187-1.024-2-2.343-2-1.604 0-2.518 1.05-2.518 2.751v.747c0 1.7.906 2.73 2.518 2.73 1.314 0 2.285-.792 2.343-1.939v-.114H6.595c-.049.615-.497 1.05-1.187 1.05-.84 0-1.318-.62-1.318-1.727v-.742c0-1.112.488-1.754 1.318-1.754Zm5.404 0c.68 0 1.138.47 1.186 1.107h1.147v-.11c-.053-1.187-1.024-2-2.342-2-1.604 0-2.518 1.05-2.518 2.751v.747c0 1.7.905 2.73 2.518 2.73 1.314 0 2.285-.792 2.342-1.939v-.114h-1.147c-.048.615-.496 1.05-1.186 1.05-.84 0-1.319-.62-1.319-1.727v-.742c0-1.112.488-1.754 1.319-1.754Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cc-circle.svg b/vendor/twbs/bootstrap-icons/icons/cc-circle.svg
new file mode 100644
index 000000000..2dc2b4b36
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cc-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cc-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.408 5.89c-.83 0-1.318.64-1.318 1.753v.742c0 1.108.479 1.727 1.318 1.727.69 0 1.138-.435 1.187-1.05h1.147v.114c-.058 1.147-1.029 1.938-2.343 1.938-1.612 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.319 0 2.29.812 2.343 1.999v.11H6.595c-.049-.638-.506-1.108-1.187-1.108Zm5.404 0c-.831 0-1.319.64-1.319 1.753v.742c0 1.108.48 1.727 1.319 1.727.69 0 1.138-.435 1.186-1.05h1.147v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.318 0 2.29.812 2.342 1.999v.11h-1.147c-.048-.638-.505-1.108-1.186-1.108Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cc-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/cc-square-fill.svg
new file mode 100644
index 000000000..b0a835029
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cc-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cc-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.408 5.89c-.83 0-1.318.64-1.318 1.753v.742c0 1.108.479 1.727 1.318 1.727.69 0 1.138-.435 1.187-1.05h1.147v.114c-.058 1.147-1.029 1.938-2.343 1.938-1.612 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.319 0 2.29.812 2.343 1.999v.11H6.595c-.049-.638-.506-1.108-1.187-1.108Zm5.404 0c-.831 0-1.319.64-1.319 1.753v.742c0 1.108.48 1.727 1.319 1.727.69 0 1.138-.435 1.186-1.05h1.147v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.318 0 2.29.812 2.342 1.999v.11h-1.147c-.048-.638-.505-1.108-1.186-1.108Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cc-square.svg b/vendor/twbs/bootstrap-icons/icons/cc-square.svg
new file mode 100644
index 000000000..b0f05b619
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cc-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cc-square" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.408 3.89c-.83 0-1.318.64-1.318 1.753v.742c0 1.108.479 1.727 1.318 1.727.69 0 1.138-.435 1.187-1.05h1.147v.114c-.058 1.147-1.029 1.938-2.343 1.938-1.612 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.319 0 2.29.812 2.343 1.999v.11H6.595c-.049-.638-.506-1.108-1.187-1.108Zm5.404 0c-.831 0-1.319.64-1.319 1.753v.742c0 1.108.48 1.727 1.319 1.727.69 0 1.138-.435 1.186-1.05h1.147v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.318 0 2.29.812 2.342 1.999v.11h-1.147c-.048-.638-.505-1.108-1.186-1.108Z"/>
+ <path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.408 3.89c-.83 0-1.318.64-1.318 1.753v.742c0 1.108.479 1.727 1.318 1.727.69 0 1.138-.435 1.187-1.05h1.147v.114c-.058 1.147-1.029 1.938-2.343 1.938-1.612 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.319 0 2.29.812 2.343 1.999v.11H6.595c-.049-.638-.506-1.108-1.187-1.108Zm5.404 0c-.831 0-1.319.64-1.319 1.753v.742c0 1.108.48 1.727 1.319 1.727.69 0 1.138-.435 1.186-1.05h1.147v.114c-.057 1.147-1.028 1.938-2.342 1.938-1.613 0-2.518-1.028-2.518-2.729v-.747c0-1.7.914-2.75 2.518-2.75 1.318 0 2.29.812 2.342 1.999v.11h-1.147c-.048-.638-.505-1.108-1.186-1.108Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-dots-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-dots-fill.svg
new file mode 100644
index 000000000..5f74345ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-dots-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-dots-fill" viewBox="0 0 16 16">
+ <path d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M5 8a1 1 0 1 0-2 0 1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-dots.svg b/vendor/twbs/bootstrap-icons/icons/chat-dots.svg
new file mode 100644
index 000000000..20137cc18
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-dots.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-dots" viewBox="0 0 16 16">
+ <path d="M5 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+ <path d="m2.165 15.803.02-.004c1.83-.363 2.948-.842 3.468-1.105A9 9 0 0 0 8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6a10.4 10.4 0 0 1-.524 2.318l-.003.011a11 11 0 0 1-.244.637c-.079.186.074.394.273.362a22 22 0 0 0 .693-.125m.8-3.108a1 1 0 0 0-.287-.801C1.618 10.83 1 9.468 1 8c0-3.192 3.004-6 7-6s7 2.808 7 6-3.004 6-7 6a8 8 0 0 1-2.088-.272 1 1 0 0 0-.711.074c-.387.196-1.24.57-2.634.893a11 11 0 0 0 .398-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-fill.svg
new file mode 100644
index 000000000..c89693900
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-fill" viewBox="0 0 16 16">
+ <path d="M8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6-.097 1.016-.417 2.13-.771 2.966-.079.186.074.394.273.362 2.256-.37 3.597-.938 4.18-1.234A9 9 0 0 0 8 15"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-heart-fill.svg
new file mode 100644
index 000000000..ea01c34d5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-heart-fill" viewBox="0 0 16 16">
+ <path d="M8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6-.097 1.016-.417 2.13-.771 2.966-.079.186.074.394.273.362 2.256-.37 3.597-.938 4.18-1.234A9 9 0 0 0 8 15m0-9.007c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-heart.svg b/vendor/twbs/bootstrap-icons/icons/chat-heart.svg
new file mode 100644
index 000000000..8ea104ea8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-heart" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2.965 12.695a1 1 0 0 0-.287-.801C1.618 10.83 1 9.468 1 8c0-3.192 3.004-6 7-6s7 2.808 7 6-3.004 6-7 6a8 8 0 0 1-2.088-.272 1 1 0 0 0-.711.074c-.387.196-1.24.57-2.634.893a11 11 0 0 0 .398-2m-.8 3.108.02-.004c1.83-.363 2.948-.842 3.468-1.105A9 9 0 0 0 8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6a10.4 10.4 0 0 1-.524 2.318l-.003.011a11 11 0 0 1-.244.637c-.079.186.074.394.273.362a22 22 0 0 0 .693-.125M8 5.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-left-dots-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-left-dots-fill.svg
new file mode 100644
index 000000000..a6614c3f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-left-dots-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left-dots-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4.414a1 1 0 0 0-.707.293L.854 15.146A.5.5 0 0 1 0 14.793zm5 4a1 1 0 1 0-2 0 1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-left-dots.svg b/vendor/twbs/bootstrap-icons/icons/chat-left-dots.svg
new file mode 100644
index 000000000..35f466a10
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-left-dots.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left-dots" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-left-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-left-fill.svg
new file mode 100644
index 000000000..0de6e13ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-left-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-left-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-left-heart-fill.svg
new file mode 100644
index 000000000..cc9502ca0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-left-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left-heart-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-left-heart.svg b/vendor/twbs/bootstrap-icons/icons/chat-left-heart.svg
new file mode 100644
index 000000000..ec11692e7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-left-heart.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left-heart" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M8 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-left-quote-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-left-quote-fill.svg
new file mode 100644
index 000000000..d634a126a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-left-quote-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left-quote-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4.414a1 1 0 0 0-.707.293L.854 15.146A.5.5 0 0 1 0 14.793zm7.194 2.766a1.7 1.7 0 0 0-.227-.272 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 5.734 4C4.776 4 4 4.746 4 5.667c0 .92.776 1.666 1.734 1.666.343 0 .662-.095.931-.26-.137.389-.39.804-.81 1.22a.405.405 0 0 0 .011.59c.173.16.447.155.614-.01 1.334-1.329 1.37-2.758.941-3.706a2.5 2.5 0 0 0-.227-.4zM11 7.073c-.136.389-.39.804-.81 1.22a.405.405 0 0 0 .012.59c.172.16.446.155.613-.01 1.334-1.329 1.37-2.758.942-3.706a2.5 2.5 0 0 0-.228-.4 1.7 1.7 0 0 0-.227-.273 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 10.07 4c-.957 0-1.734.746-1.734 1.667 0 .92.777 1.666 1.734 1.666.343 0 .662-.095.931-.26z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-left-quote.svg b/vendor/twbs/bootstrap-icons/icons/chat-left-quote.svg
new file mode 100644
index 000000000..376ceb19b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-left-quote.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left-quote" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M7.066 4.76A1.665 1.665 0 0 0 4 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-left-text-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-left-text-fill.svg
new file mode 100644
index 000000000..a78e3437c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-left-text-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left-text-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4.414a1 1 0 0 0-.707.293L.854 15.146A.5.5 0 0 1 0 14.793zm3.5 1a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-left-text.svg b/vendor/twbs/bootstrap-icons/icons/chat-left-text.svg
new file mode 100644
index 000000000..88d190672
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-left-text.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left-text" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M3 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3 6a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 6m0 2.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-left.svg b/vendor/twbs/bootstrap-icons/icons/chat-left.svg
new file mode 100644
index 000000000..d93f0af77
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-quote-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-quote-fill.svg
new file mode 100644
index 000000000..7150c44d2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-quote-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-quote-fill" viewBox="0 0 16 16">
+ <path d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M7.194 6.766a1.7 1.7 0 0 0-.227-.272 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 5.734 6C4.776 6 4 6.746 4 7.667c0 .92.776 1.666 1.734 1.666.343 0 .662-.095.931-.26-.137.389-.39.804-.81 1.22a.405.405 0 0 0 .011.59c.173.16.447.155.614-.01 1.334-1.329 1.37-2.758.941-3.706a2.5 2.5 0 0 0-.227-.4zM11 9.073c-.136.389-.39.804-.81 1.22a.405.405 0 0 0 .012.59c.172.16.446.155.613-.01 1.334-1.329 1.37-2.758.942-3.706a2.5 2.5 0 0 0-.228-.4 1.7 1.7 0 0 0-.227-.273 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 10.07 6c-.957 0-1.734.746-1.734 1.667 0 .92.777 1.666 1.734 1.666.343 0 .662-.095.931-.26z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-quote.svg b/vendor/twbs/bootstrap-icons/icons/chat-quote.svg
new file mode 100644
index 000000000..aa0edc4e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-quote.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-quote" viewBox="0 0 16 16">
+ <path d="M2.678 11.894a1 1 0 0 1 .287.801 11 11 0 0 1-.398 2c1.395-.323 2.247-.697 2.634-.893a1 1 0 0 1 .71-.074A8 8 0 0 0 8 14c3.996 0 7-2.807 7-6s-3.004-6-7-6-7 2.808-7 6c0 1.468.617 2.83 1.678 3.894m-.493 3.905a22 22 0 0 1-.713.129c-.2.032-.352-.176-.273-.362a10 10 0 0 0 .244-.637l.003-.01c.248-.72.45-1.548.524-2.319C.743 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.52.263-1.639.742-3.468 1.105"/>
+ <path d="M7.066 6.76A1.665 1.665 0 0 0 4 7.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 0 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 7.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 0 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-right-dots-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-right-dots-fill.svg
new file mode 100644
index 000000000..1020581b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-right-dots-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-right-dots-fill" viewBox="0 0 16 16">
+ <path d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353zM5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 1a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-right-dots.svg b/vendor/twbs/bootstrap-icons/icons/chat-right-dots.svg
new file mode 100644
index 000000000..d9b8bd238
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-right-dots.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-right-dots" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/>
+ <path d="M5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-right-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-right-fill.svg
new file mode 100644
index 000000000..6381ddcfa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-right-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-right-fill" viewBox="0 0 16 16">
+ <path d="M14 0a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-right-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-right-heart-fill.svg
new file mode 100644
index 000000000..cf4abfe32
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-right-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-right-heart-fill" viewBox="0 0 16 16">
+ <path d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353zM8 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-right-heart.svg b/vendor/twbs/bootstrap-icons/icons/chat-right-heart.svg
new file mode 100644
index 000000000..e6b388042
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-right-heart.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-right-heart" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/>
+ <path d="M8 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-right-quote-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-right-quote-fill.svg
new file mode 100644
index 000000000..1c4e5360b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-right-quote-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-right-quote-fill" viewBox="0 0 16 16">
+ <path d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353zM7.194 4.766q.13.188.227.401c.428.948.393 2.377-.942 3.706a.446.446 0 0 1-.612.01.405.405 0 0 1-.011-.59c.419-.416.672-.831.809-1.22-.269.165-.588.26-.93.26C4.775 7.333 4 6.587 4 5.667S4.776 4 5.734 4c.271 0 .528.06.756.166l.008.004c.169.07.327.182.469.324q.128.125.227.272M11 7.073c-.269.165-.588.26-.93.26-.958 0-1.735-.746-1.735-1.666S9.112 4 10.069 4c.271 0 .528.06.756.166l.008.004c.17.07.327.182.469.324q.128.125.227.272.131.188.228.401c.428.948.392 2.377-.942 3.706a.446.446 0 0 1-.613.01.405.405 0 0 1-.011-.59c.42-.416.672-.831.81-1.22z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-right-quote.svg b/vendor/twbs/bootstrap-icons/icons/chat-right-quote.svg
new file mode 100644
index 000000000..e9091bcf1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-right-quote.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-right-quote" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/>
+ <path d="M7.066 4.76A1.665 1.665 0 0 0 4 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-right-text-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-right-text-fill.svg
new file mode 100644
index 000000000..3455983b8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-right-text-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-right-text-fill" viewBox="0 0 16 16">
+ <path d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9.586a1 1 0 0 1 .707.293l2.853 2.853a.5.5 0 0 0 .854-.353zM3.5 3h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1 0-1m0 2.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1 0-1m0 2.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-right-text.svg b/vendor/twbs/bootstrap-icons/icons/chat-right-text.svg
new file mode 100644
index 000000000..88341afa3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-right-text.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-right-text" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/>
+ <path d="M3 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3 6a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 6m0 2.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-right.svg b/vendor/twbs/bootstrap-icons/icons/chat-right.svg
new file mode 100644
index 000000000..a930c9a58
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-right" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-square-dots-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-square-dots-fill.svg
new file mode 100644
index 000000000..09c97d1d6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-square-dots-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-square-dots-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.5a1 1 0 0 0-.8.4l-1.9 2.533a1 1 0 0 1-1.6 0L5.3 12.4a1 1 0 0 0-.8-.4H2a2 2 0 0 1-2-2zm5 4a1 1 0 1 0-2 0 1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-square-dots.svg b/vendor/twbs/bootstrap-icons/icons/chat-square-dots.svg
new file mode 100644
index 000000000..b06c02ff9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-square-dots.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-square-dots" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M5 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m4 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-square-fill.svg
new file mode 100644
index 000000000..4688831a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-square-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-square-heart-fill.svg
new file mode 100644
index 000000000..902e0b5aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-square-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-square-heart-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-square-heart.svg b/vendor/twbs/bootstrap-icons/icons/chat-square-heart.svg
new file mode 100644
index 000000000..6ba687e45
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-square-heart.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-square-heart" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M8 3.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-square-quote-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-square-quote-fill.svg
new file mode 100644
index 000000000..2496b7008
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-square-quote-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-square-quote-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.5a1 1 0 0 0-.8.4l-1.9 2.533a1 1 0 0 1-1.6 0L5.3 12.4a1 1 0 0 0-.8-.4H2a2 2 0 0 1-2-2zm7.194 2.766a1.7 1.7 0 0 0-.227-.272 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 5.734 4C4.776 4 4 4.746 4 5.667c0 .92.776 1.666 1.734 1.666.343 0 .662-.095.931-.26-.137.389-.39.804-.81 1.22a.405.405 0 0 0 .011.59c.173.16.447.155.614-.01 1.334-1.329 1.37-2.758.941-3.706a2.5 2.5 0 0 0-.227-.4zM11 7.073c-.136.389-.39.804-.81 1.22a.405.405 0 0 0 .012.59c.172.16.446.155.613-.01 1.334-1.329 1.37-2.758.942-3.706a2.5 2.5 0 0 0-.228-.4 1.7 1.7 0 0 0-.227-.273 1.5 1.5 0 0 0-.469-.324l-.008-.004A1.8 1.8 0 0 0 10.07 4c-.957 0-1.734.746-1.734 1.667 0 .92.777 1.666 1.734 1.666.343 0 .662-.095.931-.26z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-square-quote.svg b/vendor/twbs/bootstrap-icons/icons/chat-square-quote.svg
new file mode 100644
index 000000000..a8f6b0990
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-square-quote.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-square-quote" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M7.066 4.76A1.665 1.665 0 0 0 4 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112zm4 0A1.665 1.665 0 0 0 8 5.668a1.667 1.667 0 0 0 2.561 1.406c-.131.389-.375.804-.777 1.22a.417.417 0 1 0 .6.58c1.486-1.54 1.293-3.214.682-4.112z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-square-text-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-square-text-fill.svg
new file mode 100644
index 000000000..6ebf567d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-square-text-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-square-text-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.5a1 1 0 0 0-.8.4l-1.9 2.533a1 1 0 0 1-1.6 0L5.3 12.4a1 1 0 0 0-.8-.4H2a2 2 0 0 1-2-2zm3.5 1a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-square-text.svg b/vendor/twbs/bootstrap-icons/icons/chat-square-text.svg
new file mode 100644
index 000000000..1296f9225
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-square-text.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-square-text" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M3 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3 6a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 3 6m0 2.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-square.svg b/vendor/twbs/bootstrap-icons/icons/chat-square.svg
new file mode 100644
index 000000000..4e13ae827
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-text-fill.svg b/vendor/twbs/bootstrap-icons/icons/chat-text-fill.svg
new file mode 100644
index 000000000..93639f128
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-text-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-text-fill" viewBox="0 0 16 16">
+ <path d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M4.5 5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 2.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat-text.svg b/vendor/twbs/bootstrap-icons/icons/chat-text.svg
new file mode 100644
index 000000000..f64f43fe5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat-text.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-text" viewBox="0 0 16 16">
+ <path d="M2.678 11.894a1 1 0 0 1 .287.801 11 11 0 0 1-.398 2c1.395-.323 2.247-.697 2.634-.893a1 1 0 0 1 .71-.074A8 8 0 0 0 8 14c3.996 0 7-2.807 7-6s-3.004-6-7-6-7 2.808-7 6c0 1.468.617 2.83 1.678 3.894m-.493 3.905a22 22 0 0 1-.713.129c-.2.032-.352-.176-.273-.362a10 10 0 0 0 .244-.637l.003-.01c.248-.72.45-1.548.524-2.319C.743 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.52.263-1.639.742-3.468 1.105"/>
+ <path d="M4 5.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8m0 2.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chat.svg b/vendor/twbs/bootstrap-icons/icons/chat.svg
new file mode 100644
index 000000000..487d142ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chat.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat" viewBox="0 0 16 16">
+ <path d="M2.678 11.894a1 1 0 0 1 .287.801 11 11 0 0 1-.398 2c1.395-.323 2.247-.697 2.634-.893a1 1 0 0 1 .71-.074A8 8 0 0 0 8 14c3.996 0 7-2.807 7-6s-3.004-6-7-6-7 2.808-7 6c0 1.468.617 2.83 1.678 3.894m-.493 3.905a22 22 0 0 1-.713.129c-.2.032-.352-.176-.273-.362a10 10 0 0 0 .244-.637l.003-.01c.248-.72.45-1.548.524-2.319C.743 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.52.263-1.639.742-3.468 1.105"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/check-all.svg b/vendor/twbs/bootstrap-icons/icons/check-all.svg
new file mode 100644
index 000000000..f91fd7701
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/check-all.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check-all" viewBox="0 0 16 16">
+ <path d="M8.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L2.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093L8.95 4.992zm-.92 5.14.92.92a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 1 0-1.091-1.028L9.477 9.417l-.485-.486z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/check-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/check-circle-fill.svg
new file mode 100644
index 000000000..0b7f41265
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/check-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/check-circle.svg b/vendor/twbs/bootstrap-icons/icons/check-circle.svg
new file mode 100644
index 000000000..016f6072a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/check-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="m10.97 4.97-.02.022-3.473 4.425-2.093-2.094a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-1.071-1.05"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/check-lg.svg b/vendor/twbs/bootstrap-icons/icons/check-lg.svg
new file mode 100644
index 000000000..63a8a3df9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/check-lg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check-lg" viewBox="0 0 16 16">
+ <path d="M12.736 3.97a.733.733 0 0 1 1.047 0c.286.289.29.756.01 1.05L7.88 12.01a.733.733 0 0 1-1.065.02L3.217 8.384a.757.757 0 0 1 0-1.06.733.733 0 0 1 1.047 0l3.052 3.093 5.4-6.425z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/check-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/check-square-fill.svg
new file mode 100644
index 000000000..cbb56edc1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/check-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm10.03 4.97a.75.75 0 0 1 .011 1.05l-3.992 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.75.75 0 0 1 1.08-.022z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/check-square.svg b/vendor/twbs/bootstrap-icons/icons/check-square.svg
new file mode 100644
index 000000000..b7d11160c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/check-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M10.97 4.97a.75.75 0 0 1 1.071 1.05l-3.992 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/check.svg b/vendor/twbs/bootstrap-icons/icons/check.svg
new file mode 100644
index 000000000..11ab54741
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/check.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check" viewBox="0 0 16 16">
+ <path d="M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/check2-all.svg b/vendor/twbs/bootstrap-icons/icons/check2-all.svg
new file mode 100644
index 000000000..cccc0b7b0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/check2-all.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check2-all" viewBox="0 0 16 16">
+ <path d="M12.354 4.354a.5.5 0 0 0-.708-.708L5 10.293 1.854 7.146a.5.5 0 1 0-.708.708l3.5 3.5a.5.5 0 0 0 .708 0zm-4.208 7-.896-.897.707-.707.543.543 6.646-6.647a.5.5 0 0 1 .708.708l-7 7a.5.5 0 0 1-.708 0"/>
+ <path d="m5.354 7.146.896.897-.707.707-.897-.896a.5.5 0 1 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/check2-circle.svg b/vendor/twbs/bootstrap-icons/icons/check2-circle.svg
new file mode 100644
index 000000000..166e6612d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/check2-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check2-circle" viewBox="0 0 16 16">
+ <path d="M2.5 8a5.5 5.5 0 0 1 8.25-4.764.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0 5.5 5.5 0 1 1-11 0"/>
+ <path d="M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/check2-square.svg b/vendor/twbs/bootstrap-icons/icons/check2-square.svg
new file mode 100644
index 000000000..64c3669d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/check2-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check2-square" viewBox="0 0 16 16">
+ <path d="M3 14.5A1.5 1.5 0 0 1 1.5 13V3A1.5 1.5 0 0 1 3 1.5h8a.5.5 0 0 1 0 1H3a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V8a.5.5 0 0 1 1 0v5a1.5 1.5 0 0 1-1.5 1.5z"/>
+ <path d="m8.354 10.354 7-7a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/check2.svg b/vendor/twbs/bootstrap-icons/icons/check2.svg
new file mode 100644
index 000000000..87168de30
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/check2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check2" viewBox="0 0 16 16">
+ <path d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-bar-contract.svg b/vendor/twbs/bootstrap-icons/icons/chevron-bar-contract.svg
new file mode 100644
index 000000000..52ec3f629
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-bar-contract.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-bar-contract" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.646 14.854a.5.5 0 0 0 .708 0L8 11.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708m0-13.708a.5.5 0 0 1 .708 0L8 4.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-bar-down.svg b/vendor/twbs/bootstrap-icons/icons/chevron-bar-down.svg
new file mode 100644
index 000000000..8c10216a7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-bar-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-bar-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.646 4.146a.5.5 0 0 1 .708 0L8 7.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708M1 11.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-bar-expand.svg b/vendor/twbs/bootstrap-icons/icons/chevron-bar-expand.svg
new file mode 100644
index 000000000..1260a2056
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-bar-expand.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-bar-expand" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.646 10.146a.5.5 0 0 1 .708 0L8 13.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708m0-4.292a.5.5 0 0 0 .708 0L8 2.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-bar-left.svg b/vendor/twbs/bootstrap-icons/icons/chevron-bar-left.svg
new file mode 100644
index 000000000..36afeb766
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-bar-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-bar-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11.854 3.646a.5.5 0 0 1 0 .708L8.207 8l3.647 3.646a.5.5 0 0 1-.708.708l-4-4a.5.5 0 0 1 0-.708l4-4a.5.5 0 0 1 .708 0M4.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-bar-right.svg b/vendor/twbs/bootstrap-icons/icons/chevron-bar-right.svg
new file mode 100644
index 000000000..b71e040de
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-bar-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-bar-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4.146 3.646a.5.5 0 0 0 0 .708L7.793 8l-3.647 3.646a.5.5 0 0 0 .708.708l4-4a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708 0M11.5 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-bar-up.svg b/vendor/twbs/bootstrap-icons/icons/chevron-bar-up.svg
new file mode 100644
index 000000000..c5da17526
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-bar-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-bar-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.646 11.854a.5.5 0 0 0 .708 0L8 8.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708M2.4 5.2c0 .22.18.4.4.4h10.4a.4.4 0 0 0 0-.8H2.8a.4.4 0 0 0-.4.4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-compact-down.svg b/vendor/twbs/bootstrap-icons/icons/chevron-compact-down.svg
new file mode 100644
index 000000000..53d9d9a3d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-compact-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-compact-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.553 6.776a.5.5 0 0 1 .67-.223L8 9.44l5.776-2.888a.5.5 0 1 1 .448.894l-6 3a.5.5 0 0 1-.448 0l-6-3a.5.5 0 0 1-.223-.67"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-compact-left.svg b/vendor/twbs/bootstrap-icons/icons/chevron-compact-left.svg
new file mode 100644
index 000000000..277ddd897
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-compact-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-compact-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M9.224 1.553a.5.5 0 0 1 .223.67L6.56 8l2.888 5.776a.5.5 0 1 1-.894.448l-3-6a.5.5 0 0 1 0-.448l3-6a.5.5 0 0 1 .67-.223"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-compact-right.svg b/vendor/twbs/bootstrap-icons/icons/chevron-compact-right.svg
new file mode 100644
index 000000000..24b530907
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-compact-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-compact-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.776 1.553a.5.5 0 0 1 .671.223l3 6a.5.5 0 0 1 0 .448l-3 6a.5.5 0 1 1-.894-.448L9.44 8 6.553 2.224a.5.5 0 0 1 .223-.671"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-compact-up.svg b/vendor/twbs/bootstrap-icons/icons/chevron-compact-up.svg
new file mode 100644
index 000000000..2a4f35410
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-compact-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-compact-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.776 5.553a.5.5 0 0 1 .448 0l6 3a.5.5 0 1 1-.448.894L8 6.56 2.224 9.447a.5.5 0 1 1-.448-.894z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-contract.svg b/vendor/twbs/bootstrap-icons/icons/chevron-contract.svg
new file mode 100644
index 000000000..354ee863b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-contract.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-contract" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.646 13.854a.5.5 0 0 0 .708 0L8 10.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708m0-11.708a.5.5 0 0 1 .708 0L8 5.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-double-down.svg b/vendor/twbs/bootstrap-icons/icons/chevron-double-down.svg
new file mode 100644
index 000000000..bc99e59bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-double-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-double-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.646 6.646a.5.5 0 0 1 .708 0L8 12.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/>
+ <path fill-rule="evenodd" d="M1.646 2.646a.5.5 0 0 1 .708 0L8 8.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-double-left.svg b/vendor/twbs/bootstrap-icons/icons/chevron-double-left.svg
new file mode 100644
index 000000000..c4cd7f238
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-double-left.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-double-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8.354 1.646a.5.5 0 0 1 0 .708L2.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0"/>
+ <path fill-rule="evenodd" d="M12.354 1.646a.5.5 0 0 1 0 .708L6.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-double-right.svg b/vendor/twbs/bootstrap-icons/icons/chevron-double-right.svg
new file mode 100644
index 000000000..dccd6c582
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-double-right.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-double-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708"/>
+ <path fill-rule="evenodd" d="M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-double-up.svg b/vendor/twbs/bootstrap-icons/icons/chevron-double-up.svg
new file mode 100644
index 000000000..ad7ba127a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-double-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-double-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.646 2.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 3.707 2.354 9.354a.5.5 0 1 1-.708-.708z"/>
+ <path fill-rule="evenodd" d="M7.646 6.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 7.707l-5.646 5.647a.5.5 0 0 1-.708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-down.svg b/vendor/twbs/bootstrap-icons/icons/chevron-down.svg
new file mode 100644
index 000000000..a2819073a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-expand.svg b/vendor/twbs/bootstrap-icons/icons/chevron-expand.svg
new file mode 100644
index 000000000..33e4ad810
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-expand.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-expand" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.646 9.146a.5.5 0 0 1 .708 0L8 12.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708m0-2.292a.5.5 0 0 0 .708 0L8 3.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-left.svg b/vendor/twbs/bootstrap-icons/icons/chevron-left.svg
new file mode 100644
index 000000000..5bcc1bb5e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-right.svg b/vendor/twbs/bootstrap-icons/icons/chevron-right.svg
new file mode 100644
index 000000000..ab39af834
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/chevron-up.svg b/vendor/twbs/bootstrap-icons/icons/chevron-up.svg
new file mode 100644
index 000000000..4f3c7a015
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/chevron-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/circle-fill.svg
new file mode 100644
index 000000000..e0d1b5157
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-circle-fill" viewBox="0 0 16 16">
+ <circle cx="8" cy="8" r="8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/circle-half.svg b/vendor/twbs/bootstrap-icons/icons/circle-half.svg
new file mode 100644
index 000000000..497f6b72e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/circle-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-circle-half" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 0 8 1zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/circle-square.svg b/vendor/twbs/bootstrap-icons/icons/circle-square.svg
new file mode 100644
index 000000000..c0f62b748
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/circle-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-circle-square" viewBox="0 0 16 16">
+ <path d="M0 6a6 6 0 1 1 12 0A6 6 0 0 1 0 6"/>
+ <path d="M12.93 5h1.57a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-1.57a7 7 0 0 1-1-.22v1.79A1.5 1.5 0 0 0 5.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 4h-1.79q.145.486.22 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/circle.svg b/vendor/twbs/bootstrap-icons/icons/circle.svg
new file mode 100644
index 000000000..9bbabcae3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-check-fill.svg
new file mode 100644
index 000000000..598e85072
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-check-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check-fill" viewBox="0 0 16 16">
+ <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/>
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-check.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-check.svg
new file mode 100644
index 000000000..cb9d8a200
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-check.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.854 7.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708 0"/>
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/>
+ <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-data-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-data-fill.svg
new file mode 100644
index 000000000..e4a9425a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-data-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-data-fill" viewBox="0 0 16 16">
+ <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/>
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zM10 8a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0zm-6 4a1 1 0 1 1 2 0v1a1 1 0 1 1-2 0zm4-3a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0v-3a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-data.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-data.svg
new file mode 100644
index 000000000..622acbfbf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-data.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-data" viewBox="0 0 16 16">
+ <path d="M4 11a1 1 0 1 1 2 0v1a1 1 0 1 1-2 0zm6-4a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0zM7 9a1 1 0 0 1 2 0v3a1 1 0 1 1-2 0z"/>
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/>
+ <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-fill.svg
new file mode 100644
index 000000000..176c5e42b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10 1.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5zm-5 0A1.5 1.5 0 0 1 6.5 0h3A1.5 1.5 0 0 1 11 1.5v1A1.5 1.5 0 0 1 9.5 4h-3A1.5 1.5 0 0 1 5 2.5zm-2 0h1v1A2.5 2.5 0 0 0 6.5 5h3A2.5 2.5 0 0 0 12 2.5v-1h1a2 2 0 0 1 2 2V14a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3.5a2 2 0 0 1 2-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-heart-fill.svg
new file mode 100644
index 000000000..92de0a8fa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-heart-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-heart-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/>
+ <path fill-rule="evenodd" d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zm4 5.982c1.664-1.673 5.825 1.254 0 5.018-5.825-3.764-1.664-6.69 0-5.018"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-heart.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-heart.svg
new file mode 100644
index 000000000..c430ed2cc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-heart.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-heart" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5 1.5A1.5 1.5 0 0 1 6.5 0h3A1.5 1.5 0 0 1 11 1.5v1A1.5 1.5 0 0 1 9.5 4h-3A1.5 1.5 0 0 1 5 2.5zm5 0a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5z"/>
+ <path d="M3 1.5h1v1H3a1 1 0 0 0-1 1V14a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3.5a1 1 0 0 0-1-1h-1v-1h1a2 2 0 0 1 2 2V14a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3.5a2 2 0 0 1 2-2"/>
+ <path d="M8 6.982C9.664 5.309 13.825 8.236 8 12 2.175 8.236 6.336 5.31 8 6.982"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-minus-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-minus-fill.svg
new file mode 100644
index 000000000..e47f43fad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-minus-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-minus-fill" viewBox="0 0 16 16">
+ <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/>
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zM6 9h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-minus.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-minus.svg
new file mode 100644
index 000000000..d3675c40a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-minus.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-minus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5.5 9.5A.5.5 0 0 1 6 9h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/>
+ <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-plus-fill.svg
new file mode 100644
index 000000000..8140aa84c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-plus-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-plus-fill" viewBox="0 0 16 16">
+ <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/>
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zm4.5 6V9H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V10H6a.5.5 0 0 1 0-1h1.5V7.5a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-plus.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-plus.svg
new file mode 100644
index 000000000..1d095d73f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-plus.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-plus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 7a.5.5 0 0 1 .5.5V9H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V10H6a.5.5 0 0 1 0-1h1.5V7.5A.5.5 0 0 1 8 7"/>
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/>
+ <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-pulse.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-pulse.svg
new file mode 100644
index 000000000..a357209bc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-pulse.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-pulse" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10 1.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5zm-5 0A1.5 1.5 0 0 1 6.5 0h3A1.5 1.5 0 0 1 11 1.5v1A1.5 1.5 0 0 1 9.5 4h-3A1.5 1.5 0 0 1 5 2.5zm-2 0h1v1H3a1 1 0 0 0-1 1V14a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3.5a1 1 0 0 0-1-1h-1v-1h1a2 2 0 0 1 2 2V14a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3.5a2 2 0 0 1 2-2m6.979 3.856a.5.5 0 0 0-.968.04L7.92 10.49l-.94-3.135a.5.5 0 0 0-.895-.133L4.232 10H3.5a.5.5 0 0 0 0 1h1a.5.5 0 0 0 .416-.223l1.41-2.115 1.195 3.982a.5.5 0 0 0 .968-.04L9.58 7.51l.94 3.135A.5.5 0 0 0 11 11h1.5a.5.5 0 0 0 0-1h-1.128z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-x-fill.svg
new file mode 100644
index 000000000..10fba82c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-x-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-x-fill" viewBox="0 0 16 16">
+ <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/>
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5zm4 7.793 1.146-1.147a.5.5 0 1 1 .708.708L8.707 10l1.147 1.146a.5.5 0 0 1-.708.708L8 10.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 10 6.146 8.854a.5.5 0 1 1 .708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard-x.svg b/vendor/twbs/bootstrap-icons/icons/clipboard-x.svg
new file mode 100644
index 000000000..46df235ad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard-x.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-x" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.146 7.146a.5.5 0 0 1 .708 0L8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 0 1 0-.708"/>
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/>
+ <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard.svg b/vendor/twbs/bootstrap-icons/icons/clipboard.svg
new file mode 100644
index 000000000..b92f42a5b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16">
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/>
+ <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-check-fill.svg
new file mode 100644
index 000000000..b64043280
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-check-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-check-fill" viewBox="0 0 16 16">
+ <path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/>
+ <path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5m6.769 6.854-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-check.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-check.svg
new file mode 100644
index 000000000..aba15bfa5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-check.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-check" viewBox="0 0 16 16">
+ <path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/>
+ <path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/>
+ <path d="M10.854 7.854a.5.5 0 0 0-.708-.708L7.5 9.793 6.354 8.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-data-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-data-fill.svg
new file mode 100644
index 000000000..56c127ed8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-data-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-data-fill" viewBox="0 0 16 16">
+ <path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/>
+ <path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5M10 7a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0zm-6 4a1 1 0 1 1 2 0v1a1 1 0 1 1-2 0zm4-3a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0V9a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-data.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-data.svg
new file mode 100644
index 000000000..75ac6c688
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-data.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-data" viewBox="0 0 16 16">
+ <path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/>
+ <path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/>
+ <path d="M10 7a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0zm-6 4a1 1 0 1 1 2 0v1a1 1 0 1 1-2 0zm4-3a1 1 0 0 0-1 1v3a1 1 0 1 0 2 0V9a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-fill.svg
new file mode 100644
index 000000000..6898571f8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-fill" viewBox="0 0 16 16">
+ <path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/>
+ <path d="M3.5 1h.585A1.5 1.5 0 0 0 4 1.5V2a1.5 1.5 0 0 0 1.5 1.5h5A1.5 1.5 0 0 0 12 2v-.5q-.001-.264-.085-.5h.585A1.5 1.5 0 0 1 14 2.5v12a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-12A1.5 1.5 0 0 1 3.5 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-heart-fill.svg
new file mode 100644
index 000000000..ce98945bc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-heart-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-heart-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.058.501a.5.5 0 0 0-.5-.501h-2.98c-.276 0-.5.225-.5.501A.5.5 0 0 1 5.582 1a.497.497 0 0 0-.497.497V2a.5.5 0 0 0 .5.5h4.968a.5.5 0 0 0 .5-.5v-.503A.497.497 0 0 0 10.555 1a.5.5 0 0 1-.497-.499"/>
+ <path fill-rule="evenodd" d="M4.174 1h-.57a1.5 1.5 0 0 0-1.5 1.5v12a1.5 1.5 0 0 0 1.5 1.5h9a1.5 1.5 0 0 0 1.5-1.5v-12a1.5 1.5 0 0 0-1.5-1.5h-.642q.084.236.085.5V2c0 .828-.668 1.5-1.492 1.5H5.581A1.496 1.496 0 0 1 4.09 2v-.5q.001-.264.085-.5Zm3.894 5.482c1.656-1.673 5.795 1.254 0 5.018-5.795-3.764-1.656-6.69 0-5.018"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-heart.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-heart.svg
new file mode 100644
index 000000000..879fef215
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-heart.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-heart" viewBox="0 0 16 16">
+ <path d="M10.058.501a.5.5 0 0 0-.5-.501h-2.98c-.276 0-.5.225-.5.501A.5.5 0 0 1 5.582 1a.497.497 0 0 0-.497.497V2a.5.5 0 0 0 .5.5h4.968a.5.5 0 0 0 .5-.5v-.503A.497.497 0 0 0 10.555 1a.5.5 0 0 1-.497-.499"/>
+ <path d="M3.605 2a.5.5 0 0 0-.5.5v12a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-12a.5.5 0 0 0-.5-.5h-.5a.5.5 0 0 1 0-1h.5a1.5 1.5 0 0 1 1.5 1.5v12a1.5 1.5 0 0 1-1.5 1.5h-9a1.5 1.5 0 0 1-1.5-1.5v-12a1.5 1.5 0 0 1 1.5-1.5h.5a.5.5 0 0 1 0 1z"/>
+ <path d="M8.068 6.482c1.656-1.673 5.795 1.254 0 5.018-5.795-3.764-1.656-6.69 0-5.018"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-minus-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-minus-fill.svg
new file mode 100644
index 000000000..fcd4b561c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-minus-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-minus-fill" viewBox="0 0 16 16">
+ <path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/>
+ <path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5M6 8h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-minus.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-minus.svg
new file mode 100644
index 000000000..f8c10e3c1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-minus.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-minus" viewBox="0 0 16 16">
+ <path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/>
+ <path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/>
+ <path d="M6 8a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-plus-fill.svg
new file mode 100644
index 000000000..be310e526
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-plus-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-plus-fill" viewBox="0 0 16 16">
+ <path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/>
+ <path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5M8.5 6.5V8H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V9H6a.5.5 0 0 1 0-1h1.5V6.5a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-plus.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-plus.svg
new file mode 100644
index 000000000..33eaa289c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-plus.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-plus" viewBox="0 0 16 16">
+ <path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/>
+ <path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/>
+ <path d="M8.5 6.5a.5.5 0 0 0-1 0V8H6a.5.5 0 0 0 0 1h1.5v1.5a.5.5 0 0 0 1 0V9H10a.5.5 0 0 0 0-1H8.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-pulse-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-pulse-fill.svg
new file mode 100644
index 000000000..bc7d6b319
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-pulse-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-pulse-fill" viewBox="0 0 16 16">
+ <path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/>
+ <path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5M9.98 5.356 11.372 10h.128a.5.5 0 0 1 0 1H11a.5.5 0 0 1-.479-.356l-.94-3.135-1.092 5.096a.5.5 0 0 1-.968.039L6.383 8.85l-.936 1.873A.5.5 0 0 1 5 11h-.5a.5.5 0 0 1 0-1h.191l1.362-2.724a.5.5 0 0 1 .926.08l.94 3.135 1.092-5.096a.5.5 0 0 1 .968-.039Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-pulse.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-pulse.svg
new file mode 100644
index 000000000..c641c6158
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-pulse.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-pulse" viewBox="0 0 16 16">
+ <path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/>
+ <path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/>
+ <path d="M9.979 5.356a.5.5 0 0 0-.968.04L7.92 10.49l-.94-3.135a.5.5 0 0 0-.926-.08L4.69 10H4.5a.5.5 0 0 0 0 1H5a.5.5 0 0 0 .447-.276l.936-1.873 1.138 3.793a.5.5 0 0 0 .968-.04L9.58 7.51l.94 3.135A.5.5 0 0 0 11 11h.5a.5.5 0 0 0 0-1h-.128z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-x-fill.svg
new file mode 100644
index 000000000..08828c6ee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-x-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-x-fill" viewBox="0 0 16 16">
+ <path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/>
+ <path d="M4.085 1H3.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1h-.585q.084.236.085.5V2a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 2v-.5q.001-.264.085-.5M8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 1 1 .708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2-x.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2-x.svg
new file mode 100644
index 000000000..06832cc96
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2-x.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2-x" viewBox="0 0 16 16">
+ <path d="M9.5 0a.5.5 0 0 1 .5.5.5.5 0 0 0 .5.5.5.5 0 0 1 .5.5V2a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 2v-.5a.5.5 0 0 1 .5-.5.5.5 0 0 0 .5-.5.5.5 0 0 1 .5-.5z"/>
+ <path d="M3 2.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 0 0-1h-.5A1.5 1.5 0 0 0 2 2.5v12A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 12.5 1H12a.5.5 0 0 0 0 1h.5a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5z"/>
+ <path d="M8 8.293 6.854 7.146a.5.5 0 1 0-.708.708L7.293 9l-1.147 1.146a.5.5 0 0 0 .708.708L8 9.707l1.146 1.147a.5.5 0 0 0 .708-.708L8.707 9l1.147-1.146a.5.5 0 0 0-.708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clipboard2.svg b/vendor/twbs/bootstrap-icons/icons/clipboard2.svg
new file mode 100644
index 000000000..d0f452975
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clipboard2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard2" viewBox="0 0 16 16">
+ <path d="M3.5 2a.5.5 0 0 0-.5.5v12a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-12a.5.5 0 0 0-.5-.5H12a.5.5 0 0 1 0-1h.5A1.5 1.5 0 0 1 14 2.5v12a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-12A1.5 1.5 0 0 1 3.5 1H4a.5.5 0 0 1 0 1z"/>
+ <path d="M10 .5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5.5.5 0 0 1-.5.5.5.5 0 0 0-.5.5V2a.5.5 0 0 0 .5.5h5A.5.5 0 0 0 11 2v-.5a.5.5 0 0 0-.5-.5.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clock-fill.svg b/vendor/twbs/bootstrap-icons/icons/clock-fill.svg
new file mode 100644
index 000000000..148abcf1c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clock-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clock-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clock-history.svg b/vendor/twbs/bootstrap-icons/icons/clock-history.svg
new file mode 100644
index 000000000..f685e10a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clock-history.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clock-history" viewBox="0 0 16 16">
+ <path d="M8.515 1.019A7 7 0 0 0 8 1V0a8 8 0 0 1 .589.022zm2.004.45a7 7 0 0 0-.985-.299l.219-.976q.576.129 1.126.342zm1.37.71a7 7 0 0 0-.439-.27l.493-.87a8 8 0 0 1 .979.654l-.615.789a7 7 0 0 0-.418-.302zm1.834 1.79a7 7 0 0 0-.653-.796l.724-.69q.406.429.747.91zm.744 1.352a7 7 0 0 0-.214-.468l.893-.45a8 8 0 0 1 .45 1.088l-.95.313a7 7 0 0 0-.179-.483m.53 2.507a7 7 0 0 0-.1-1.025l.985-.17q.1.58.116 1.17zm-.131 1.538q.05-.254.081-.51l.993.123a8 8 0 0 1-.23 1.155l-.964-.267q.069-.247.12-.501m-.952 2.379q.276-.436.486-.908l.914.405q-.24.54-.555 1.038zm-.964 1.205q.183-.183.35-.378l.758.653a8 8 0 0 1-.401.432z"/>
+ <path d="M8 1a7 7 0 1 0 4.95 11.95l.707.707A8.001 8.001 0 1 1 8 0z"/>
+ <path d="M7.5 3a.5.5 0 0 1 .5.5v5.21l3.248 1.856a.5.5 0 0 1-.496.868l-3.5-2A.5.5 0 0 1 7 9V3.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clock.svg b/vendor/twbs/bootstrap-icons/icons/clock.svg
new file mode 100644
index 000000000..31c3c64cd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clock.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clock" viewBox="0 0 16 16">
+ <path d="M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71z"/>
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-arrow-down-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-arrow-down-fill.svg
new file mode 100644
index 000000000..1b23dc967
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-arrow-down-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-arrow-down-fill" viewBox="0 0 16 16">
+ <path d="M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2m2.354 6.854-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5a.5.5 0 0 1 1 0v3.793l1.146-1.147a.5.5 0 0 1 .708.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-arrow-down.svg b/vendor/twbs/bootstrap-icons/icons/cloud-arrow-down.svg
new file mode 100644
index 000000000..bb79bbe72
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-arrow-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-arrow-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.646 10.854a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 9.293V5.5a.5.5 0 0 0-1 0v3.793L6.354 8.146a.5.5 0 1 0-.708.708z"/>
+ <path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-arrow-up-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-arrow-up-fill.svg
new file mode 100644
index 000000000..8366f05b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-arrow-up-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-arrow-up-fill" viewBox="0 0 16 16">
+ <path d="M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2m2.354 5.146a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0V6.707L6.354 7.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-arrow-up.svg b/vendor/twbs/bootstrap-icons/icons/cloud-arrow-up.svg
new file mode 100644
index 000000000..704756b0e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-arrow-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-arrow-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.646 5.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0V6.707L6.354 7.854a.5.5 0 1 1-.708-.708z"/>
+ <path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-check-fill.svg
new file mode 100644
index 000000000..a71feee5d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-check-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-check-fill" viewBox="0 0 16 16">
+ <path d="M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2m2.354 4.854-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-check.svg b/vendor/twbs/bootstrap-icons/icons/cloud-check.svg
new file mode 100644
index 000000000..d7599e990
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-check" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.354 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708 0"/>
+ <path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-download-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-download-fill.svg
new file mode 100644
index 000000000..c8a44badd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-download-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-download-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 0a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 4.095 0 5.555 0 7.318 0 9.366 1.708 11 3.781 11H7.5V5.5a.5.5 0 0 1 1 0V11h4.188C14.502 11 16 9.57 16 7.773c0-1.636-1.242-2.969-2.834-3.194C12.923 1.999 10.69 0 8 0m-.354 15.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 14.293V11h-1v3.293l-2.146-2.147a.5.5 0 0 0-.708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-download.svg b/vendor/twbs/bootstrap-icons/icons/cloud-download.svg
new file mode 100644
index 000000000..b71d7d722
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-download.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-download" viewBox="0 0 16 16">
+ <path d="M4.406 1.342A5.53 5.53 0 0 1 8 0c2.69 0 4.923 2 5.166 4.579C14.758 4.804 16 6.137 16 7.773 16 9.569 14.502 11 12.687 11H10a.5.5 0 0 1 0-1h2.688C13.979 10 15 8.988 15 7.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 2.825 10.328 1 8 1a4.53 4.53 0 0 0-2.941 1.1c-.757.652-1.153 1.438-1.153 2.055v.448l-.445.049C2.064 4.805 1 5.952 1 7.318 1 8.785 2.23 10 3.781 10H6a.5.5 0 0 1 0 1H3.781C1.708 11 0 9.366 0 7.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383"/>
+ <path d="M7.646 15.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 14.293V5.5a.5.5 0 0 0-1 0v8.793l-2.146-2.147a.5.5 0 0 0-.708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-drizzle-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-drizzle-fill.svg
new file mode 100644
index 000000000..0d381ae7f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-drizzle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-drizzle-fill" viewBox="0 0 16 16">
+ <path d="M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m-3.5 1.5a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m.747-8.498a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-drizzle.svg b/vendor/twbs/bootstrap-icons/icons/cloud-drizzle.svg
new file mode 100644
index 000000000..f3c859931
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-drizzle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-drizzle" viewBox="0 0 16 16">
+ <path d="M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m-3.5 1.5a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m.747-8.498a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973M8.5 2a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-fill.svg
new file mode 100644
index 000000000..8849faa38
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-fill" viewBox="0 0 16 16">
+ <path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-fog-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-fog-fill.svg
new file mode 100644
index 000000000..214cabad1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-fog-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-fog-fill" viewBox="0 0 16 16">
+ <path d="M3 13.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m10.405-9.473a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 12H13a3 3 0 0 0 .405-5.973"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-fog.svg b/vendor/twbs/bootstrap-icons/icons/cloud-fog.svg
new file mode 100644
index 000000000..26a574aff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-fog.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-fog" viewBox="0 0 16 16">
+ <path d="M3 13.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m10.405-9.473a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 12H13a3 3 0 0 0 .405-5.973M8.5 3a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-fog2-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-fog2-fill.svg
new file mode 100644
index 000000000..8f67deadc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-fog2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-fog2-fill" viewBox="0 0 16 16">
+ <path d="M8.5 3a5 5 0 0 1 4.905 4.027A3 3 0 0 1 13 13h-1.5a.5.5 0 0 0 0-1H1.05a3.5 3.5 0 0 1-.713-1H9.5a.5.5 0 0 0 0-1H.035a3.5 3.5 0 0 1 0-1H7.5a.5.5 0 0 0 0-1H.337a3.5 3.5 0 0 1 3.57-1.977A5 5 0 0 1 8.5 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-fog2.svg b/vendor/twbs/bootstrap-icons/icons/cloud-fog2.svg
new file mode 100644
index 000000000..9b0664ff0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-fog2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-fog2" viewBox="0 0 16 16">
+ <path d="M8.5 4a4 4 0 0 0-3.8 2.745.5.5 0 1 1-.949-.313 5.002 5.002 0 0 1 9.654.595A3 3 0 0 1 13 13H.5a.5.5 0 0 1 0-1H13a2 2 0 0 0 .001-4h-.026a.5.5 0 0 1-.5-.445A4 4 0 0 0 8.5 4M0 8.5A.5.5 0 0 1 .5 8h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-hail-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-hail-fill.svg
new file mode 100644
index 000000000..0fa737f38
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-hail-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-hail-fill" viewBox="0 0 16 16">
+ <path d="M3.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316M7.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m3.592 3.724a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m1.247-6.999a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.5H13a3 3 0 0 0 .405-5.973"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-hail.svg b/vendor/twbs/bootstrap-icons/icons/cloud-hail.svg
new file mode 100644
index 000000000..3206a027c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-hail.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-hail" viewBox="0 0 16 16">
+ <path d="M13.405 4.527a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.5H13a3 3 0 0 0 .405-5.973M8.5 1.5a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1-.001 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1.5M3.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316M7.75 15.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m3.592 3.724a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m.408-3.724a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-haze-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-haze-fill.svg
new file mode 100644
index 000000000..aa16c2cc5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-haze-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-haze-fill" viewBox="0 0 16 16">
+ <path d="M4 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-3 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m2 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-haze.svg b/vendor/twbs/bootstrap-icons/icons/cloud-haze.svg
new file mode 100644
index 000000000..578a56524
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-haze.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-haze" viewBox="0 0 16 16">
+ <path d="M4 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-3 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m2 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973M8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-haze2-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-haze2-fill.svg
new file mode 100644
index 000000000..3e22656a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-haze2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-haze2-fill" viewBox="0 0 16 16">
+ <path d="M8.5 2a5 5 0 0 1 4.905 4.027A3 3 0 0 1 13 12H3.5A3.5 3.5 0 0 1 .035 9H5.5a.5.5 0 0 0 0-1H.035a3.5 3.5 0 0 1 3.871-2.977A5 5 0 0 1 8.5 2m-6 8a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zM0 13.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-haze2.svg b/vendor/twbs/bootstrap-icons/icons/cloud-haze2.svg
new file mode 100644
index 000000000..c43d91ce9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-haze2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-haze2" viewBox="0 0 16 16">
+ <path d="M8.5 3a4 4 0 0 0-3.8 2.745.5.5 0 1 1-.949-.313 5.002 5.002 0 0 1 9.654.595A3 3 0 0 1 13 12H4.5a.5.5 0 0 1 0-1H13a2 2 0 0 0 .001-4h-.026a.5.5 0 0 1-.5-.445A4 4 0 0 0 8.5 3M0 7.5A.5.5 0 0 1 .5 7h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m2 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-2 4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-lightning-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-lightning-fill.svg
new file mode 100644
index 000000000..88fd930b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-lightning-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-lightning-fill" viewBox="0 0 16 16">
+ <path d="M7.053 11.276A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724zm6.352-7.249a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-lightning-rain-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-lightning-rain-fill.svg
new file mode 100644
index 000000000..f5cd8458e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-lightning-rain-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-lightning-rain-fill" viewBox="0 0 16 16">
+ <path d="M2.658 11.026a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m-7.5 1.5a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m-7.105-1.25A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724zm6.352-7.249a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-lightning-rain.svg b/vendor/twbs/bootstrap-icons/icons/cloud-lightning-rain.svg
new file mode 100644
index 000000000..588b2745d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-lightning-rain.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-lightning-rain" viewBox="0 0 16 16">
+ <path d="M2.658 11.026a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m-7.5 1.5a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316m-.753-8.499a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973M8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1M7.053 11.276A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-lightning.svg b/vendor/twbs/bootstrap-icons/icons/cloud-lightning.svg
new file mode 100644
index 000000000..20c268093
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-lightning.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-lightning" viewBox="0 0 16 16">
+ <path d="M13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973M8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1M7.053 11.276A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-minus-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-minus-fill.svg
new file mode 100644
index 000000000..2fcc2bb69
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-minus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-minus-fill" viewBox="0 0 16 16">
+ <path d="M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2M6 7.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-minus.svg b/vendor/twbs/bootstrap-icons/icons/cloud-minus.svg
new file mode 100644
index 000000000..54f47b204
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-minus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-minus" viewBox="0 0 16 16">
+ <path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>
+ <path d="M6 7.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-moon-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-moon-fill.svg
new file mode 100644
index 000000000..232dd4e24
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-moon-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-moon-fill" viewBox="0 0 16 16">
+ <path d="M11.473 11a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5z"/>
+ <path d="M11.286 1.778a.5.5 0 0 0-.565-.755 4.595 4.595 0 0 0-3.18 5.003 5.5 5.5 0 0 1 1.055.209A3.6 3.6 0 0 1 9.83 2.617a4.593 4.593 0 0 0 4.31 5.744 3.58 3.58 0 0 1-2.241.634q.244.477.394 1a4.59 4.59 0 0 0 3.624-2.04.5.5 0 0 0-.565-.755 3.593 3.593 0 0 1-4.065-5.422z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-moon.svg b/vendor/twbs/bootstrap-icons/icons/cloud-moon.svg
new file mode 100644
index 000000000..cc91617c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-moon.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-moon" viewBox="0 0 16 16">
+ <path d="M7 8a3.5 3.5 0 0 1 3.5 3.555.5.5 0 0 0 .625.492A1.503 1.503 0 0 1 13 13.5a1.5 1.5 0 0 1-1.5 1.5H3a2 2 0 1 1 .1-3.998.5.5 0 0 0 .509-.375A3.5 3.5 0 0 1 7 8m4.473 3a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5z"/>
+ <path d="M11.286 1.778a.5.5 0 0 0-.565-.755 4.595 4.595 0 0 0-3.18 5.003 5.5 5.5 0 0 1 1.055.209A3.6 3.6 0 0 1 9.83 2.617a4.593 4.593 0 0 0 4.31 5.744 3.58 3.58 0 0 1-2.241.634q.244.477.394 1a4.59 4.59 0 0 0 3.624-2.04.5.5 0 0 0-.565-.755 3.593 3.593 0 0 1-4.065-5.422z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-plus-fill.svg
new file mode 100644
index 000000000..5337dc428
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-plus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-plus-fill" viewBox="0 0 16 16">
+ <path d="M8 2a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13h8.906C14.502 13 16 11.57 16 9.773c0-1.636-1.242-2.969-2.834-3.194C12.923 3.999 10.69 2 8 2m.5 4v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-plus.svg b/vendor/twbs/bootstrap-icons/icons/cloud-plus.svg
new file mode 100644
index 000000000..9448796bc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-plus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 5.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 .5-.5"/>
+ <path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-rain-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-rain-fill.svg
new file mode 100644
index 000000000..3ffee56b1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-rain-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-rain-fill" viewBox="0 0 16 16">
+ <path d="M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 1 1-.948-.316l1-3a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 1 1-.948-.316l1-3a.5.5 0 0 1 .632-.317m.247-6.998a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-rain-heavy-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-rain-heavy-fill.svg
new file mode 100644
index 000000000..d92411b52
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-rain-heavy-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-rain-heavy-fill" viewBox="0 0 16 16">
+ <path d="M4.176 11.032a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m.229-7.005a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-rain-heavy.svg b/vendor/twbs/bootstrap-icons/icons/cloud-rain-heavy.svg
new file mode 100644
index 000000000..ee9ef8587
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-rain-heavy.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-rain-heavy" viewBox="0 0 16 16">
+ <path d="M4.176 11.032a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 1 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 1 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 1 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m3 0a.5.5 0 0 1 .292.643l-1.5 4a.5.5 0 0 1-.936-.35l1.5-4a.5.5 0 0 1 .644-.293m.229-7.005a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973M8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-rain.svg b/vendor/twbs/bootstrap-icons/icons/cloud-rain.svg
new file mode 100644
index 000000000..e22f16c52
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-rain.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-rain" viewBox="0 0 16 16">
+ <path d="M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 0 1-.948-.316l1-3a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m3 0a.5.5 0 0 1 .316.633l-1 3a.5.5 0 1 1-.948-.316l1-3a.5.5 0 0 1 .632-.317m.247-6.998a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973M8.5 2a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-slash-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-slash-fill.svg
new file mode 100644
index 000000000..08a709b94
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-slash-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-slash-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.112 5.112a3 3 0 0 0-.17.613C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13H11zm11.372 7.372L4.937 2.937A5.5 5.5 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773a3.2 3.2 0 0 1-1.516 2.711m-.838 1.87-12-12 .708-.708 12 12z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-slash.svg b/vendor/twbs/bootstrap-icons/icons/cloud-slash.svg
new file mode 100644
index 000000000..d7b680cb3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-slash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-slash" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.112 5.112a3 3 0 0 0-.17.613C1.266 6.095 0 7.555 0 9.318 0 11.366 1.708 13 3.781 13H11l-1-1H3.781C2.231 12 1 10.785 1 9.318c0-1.365 1.064-2.513 2.46-2.666l.446-.05v-.447q0-.113.018-.231zm2.55-1.45-.725-.725A5.5 5.5 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773a3.2 3.2 0 0 1-1.516 2.711l-.733-.733C14.498 11.378 15 10.626 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3c-.875 0-1.678.26-2.339.661z"/>
+ <path d="m13.646 14.354-12-12 .708-.708 12 12z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-sleet-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-sleet-fill.svg
new file mode 100644
index 000000000..1df3f33bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-sleet-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-sleet-fill" viewBox="0 0 16 16">
+ <path d="M2.375 13.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 1 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 1 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 0 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zM6.375 13.5a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 1 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 1 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 0 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zm2.151 2.447a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 1 1-.248.434l-.501-.286v.569a.25.25 0 0 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 1 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zm1.181-7.026a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-sleet.svg b/vendor/twbs/bootstrap-icons/icons/cloud-sleet.svg
new file mode 100644
index 000000000..edc48c6d5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-sleet.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-sleet" viewBox="0 0 16 16">
+ <path d="M13.405 4.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973M8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1M2.375 13.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zM6.375 13.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223zm2.151 2.447a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m1.849-2.447a.5.5 0 0 1 .223.67l-.5 1a.5.5 0 1 1-.894-.447l.5-1a.5.5 0 0 1 .67-.223z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-snow-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-snow-fill.svg
new file mode 100644
index 000000000..32cda8dcf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-snow-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-snow-fill" viewBox="0 0 16 16">
+ <path d="M2.625 11.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m2.75 2a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m5.5 0a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 0 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m-2.75-2a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m5.5 0a.25.25 0 0 1 .25.25v.57l.5-.287a.25.25 0 0 1 .249.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 0 1-.5 0v-.57l-.501.287a.25.25 0 1 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m-.22-7.223a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.25H13a3 3 0 0 0 .405-5.973"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-snow.svg b/vendor/twbs/bootstrap-icons/icons/cloud-snow.svg
new file mode 100644
index 000000000..26150c4c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-snow.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-snow" viewBox="0 0 16 16">
+ <path d="M13.405 4.277a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10.25H13a3 3 0 0 0 .405-5.973M8.5 1.25a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1-.001 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 1.25M2.625 11.5a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m2.75 2a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m5.5 0a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m-2.75-2a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25m5.5 0a.25.25 0 0 1 .25.25v.57l.501-.287a.25.25 0 0 1 .248.434l-.495.283.495.283a.25.25 0 0 1-.248.434l-.501-.286v.569a.25.25 0 1 1-.5 0v-.57l-.501.287a.25.25 0 0 1-.248-.434l.495-.283-.495-.283a.25.25 0 0 1 .248-.434l.501.286v-.569a.25.25 0 0 1 .25-.25"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-sun-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-sun-fill.svg
new file mode 100644
index 000000000..da5ecac0a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-sun-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-sun-fill" viewBox="0 0 16 16">
+ <path d="M11.473 11a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5z"/>
+ <path d="M10.5 1.5a.5.5 0 0 0-1 0v1a.5.5 0 0 0 1 0zm3.743 1.964a.5.5 0 1 0-.707-.707l-.708.707a.5.5 0 0 0 .708.708zm-7.779-.707a.5.5 0 0 0-.707.707l.707.708a.5.5 0 1 0 .708-.708zm1.734 3.374a2 2 0 1 1 3.296 2.198q.3.423.516.898a3 3 0 1 0-4.84-3.225q.529.017 1.028.129m4.484 4.074c.6.215 1.125.59 1.522 1.072a.5.5 0 0 0 .039-.742l-.707-.707a.5.5 0 0 0-.854.377M14.5 6.5a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-sun.svg b/vendor/twbs/bootstrap-icons/icons/cloud-sun.svg
new file mode 100644
index 000000000..caa95e935
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-sun.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-sun" viewBox="0 0 16 16">
+ <path d="M7 8a3.5 3.5 0 0 1 3.5 3.555.5.5 0 0 0 .624.492A1.503 1.503 0 0 1 13 13.5a1.5 1.5 0 0 1-1.5 1.5H3a2 2 0 1 1 .1-3.998.5.5 0 0 0 .51-.375A3.5 3.5 0 0 1 7 8m4.473 3a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5z"/>
+ <path d="M10.5 1.5a.5.5 0 0 0-1 0v1a.5.5 0 0 0 1 0zm3.743 1.964a.5.5 0 1 0-.707-.707l-.708.707a.5.5 0 0 0 .708.708zm-7.779-.707a.5.5 0 0 0-.707.707l.707.708a.5.5 0 1 0 .708-.708zm1.734 3.374a2 2 0 1 1 3.296 2.198q.3.423.516.898a3 3 0 1 0-4.84-3.225q.529.017 1.028.129m4.484 4.074c.6.215 1.125.59 1.522 1.072a.5.5 0 0 0 .039-.742l-.707-.707a.5.5 0 0 0-.854.377M14.5 6.5a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-upload-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloud-upload-fill.svg
new file mode 100644
index 000000000..2d0df59f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-upload-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-upload-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 0a5.53 5.53 0 0 0-3.594 1.342c-.766.66-1.321 1.52-1.464 2.383C1.266 4.095 0 5.555 0 7.318 0 9.366 1.708 11 3.781 11H7.5V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V11h4.188C14.502 11 16 9.57 16 7.773c0-1.636-1.242-2.969-2.834-3.194C12.923 1.999 10.69 0 8 0m-.5 14.5V11h1v3.5a.5.5 0 0 1-1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud-upload.svg b/vendor/twbs/bootstrap-icons/icons/cloud-upload.svg
new file mode 100644
index 000000000..e5ca56e4a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud-upload.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-upload" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4.406 1.342A5.53 5.53 0 0 1 8 0c2.69 0 4.923 2 5.166 4.579C14.758 4.804 16 6.137 16 7.773 16 9.569 14.502 11 12.687 11H10a.5.5 0 0 1 0-1h2.688C13.979 10 15 8.988 15 7.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 2.825 10.328 1 8 1a4.53 4.53 0 0 0-2.941 1.1c-.757.652-1.153 1.438-1.153 2.055v.448l-.445.049C2.064 4.805 1 5.952 1 7.318 1 8.785 2.23 10 3.781 10H6a.5.5 0 0 1 0 1H3.781C1.708 11 0 9.366 0 7.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383"/>
+ <path fill-rule="evenodd" d="M7.646 4.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V14.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloud.svg b/vendor/twbs/bootstrap-icons/icons/cloud.svg
new file mode 100644
index 000000000..de877ab3e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloud.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud" viewBox="0 0 16 16">
+ <path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clouds-fill.svg b/vendor/twbs/bootstrap-icons/icons/clouds-fill.svg
new file mode 100644
index 000000000..d70e81711
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clouds-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clouds-fill" viewBox="0 0 16 16">
+ <path d="M11.473 9a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 14h8.5a2.5 2.5 0 1 0-.027-5"/>
+ <path d="M14.544 9.772a3.5 3.5 0 0 0-2.225-1.676 5.5 5.5 0 0 0-6.337-4.002 4.002 4.002 0 0 1 7.392.91 2.5 2.5 0 0 1 1.17 4.769z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/clouds.svg b/vendor/twbs/bootstrap-icons/icons/clouds.svg
new file mode 100644
index 000000000..7e253e761
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/clouds.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clouds" viewBox="0 0 16 16">
+ <path d="M16 7.5a2.5 2.5 0 0 1-1.456 2.272 3.5 3.5 0 0 0-.65-.824 1.5 1.5 0 0 0-.789-2.896.5.5 0 0 1-.627-.421 3 3 0 0 0-5.22-1.625 5.6 5.6 0 0 0-1.276.088 4.002 4.002 0 0 1 7.392.91A2.5 2.5 0 0 1 16 7.5"/>
+ <path d="M7 5a4.5 4.5 0 0 1 4.473 4h.027a2.5 2.5 0 0 1 0 5H3a3 3 0 0 1-.247-5.99A4.5 4.5 0 0 1 7 5m3.5 4.5a3.5 3.5 0 0 0-6.89-.873.5.5 0 0 1-.51.375A2 2 0 1 0 3 13h8.5a1.5 1.5 0 1 0-.376-2.953.5.5 0 0 1-.624-.492z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloudy-fill.svg b/vendor/twbs/bootstrap-icons/icons/cloudy-fill.svg
new file mode 100644
index 000000000..7bf27b782
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloudy-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloudy-fill" viewBox="0 0 16 16">
+ <path d="M13.405 7.027a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 13H13a3 3 0 0 0 .405-5.973"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cloudy.svg b/vendor/twbs/bootstrap-icons/icons/cloudy.svg
new file mode 100644
index 000000000..87c20175b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cloudy.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloudy" viewBox="0 0 16 16">
+ <path d="M13.405 8.527a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 14.5H13a3 3 0 0 0 .405-5.973M8.5 5.5a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1-.001 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/code-slash.svg b/vendor/twbs/bootstrap-icons/icons/code-slash.svg
new file mode 100644
index 000000000..51a5c570f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/code-slash.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-code-slash" viewBox="0 0 16 16">
+ <path d="M10.478 1.647a.5.5 0 1 0-.956-.294l-4 13a.5.5 0 0 0 .956.294zM4.854 4.146a.5.5 0 0 1 0 .708L1.707 8l3.147 3.146a.5.5 0 0 1-.708.708l-3.5-3.5a.5.5 0 0 1 0-.708l3.5-3.5a.5.5 0 0 1 .708 0m6.292 0a.5.5 0 0 0 0 .708L14.293 8l-3.147 3.146a.5.5 0 0 0 .708.708l3.5-3.5a.5.5 0 0 0 0-.708l-3.5-3.5a.5.5 0 0 0-.708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/code-square.svg b/vendor/twbs/bootstrap-icons/icons/code-square.svg
new file mode 100644
index 000000000..30fdef306
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/code-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-code-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M6.854 4.646a.5.5 0 0 1 0 .708L4.207 8l2.647 2.646a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 0 1 .708 0m2.292 0a.5.5 0 0 0 0 .708L11.793 8l-2.647 2.646a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/code.svg b/vendor/twbs/bootstrap-icons/icons/code.svg
new file mode 100644
index 000000000..c0760e979
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/code.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-code" viewBox="0 0 16 16">
+ <path d="M5.854 4.854a.5.5 0 1 0-.708-.708l-3.5 3.5a.5.5 0 0 0 0 .708l3.5 3.5a.5.5 0 0 0 .708-.708L2.707 8zm4.292 0a.5.5 0 0 1 .708-.708l3.5 3.5a.5.5 0 0 1 0 .708l-3.5 3.5a.5.5 0 0 1-.708-.708L13.293 8z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/coin.svg b/vendor/twbs/bootstrap-icons/icons/coin.svg
new file mode 100644
index 000000000..fb94cc564
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/coin.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-coin" viewBox="0 0 16 16">
+ <path d="M5.5 9.511c.076.954.83 1.697 2.182 1.785V12h.6v-.709c1.4-.098 2.218-.846 2.218-1.932 0-.987-.626-1.496-1.745-1.76l-.473-.112V5.57c.6.068.982.396 1.074.85h1.052c-.076-.919-.864-1.638-2.126-1.716V4h-.6v.719c-1.195.117-2.01.836-2.01 1.853 0 .9.606 1.472 1.613 1.707l.397.098v2.034c-.615-.093-1.022-.43-1.114-.9zm2.177-2.166c-.59-.137-.91-.416-.91-.836 0-.47.345-.822.915-.925v1.76h-.005zm.692 1.193c.717.166 1.048.435 1.048.91 0 .542-.412.914-1.135.982V8.518z"/>
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M8 13.5a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11m0 .5A6 6 0 1 0 8 2a6 6 0 0 0 0 12"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/collection-fill.svg b/vendor/twbs/bootstrap-icons/icons/collection-fill.svg
new file mode 100644
index 000000000..4e5fbce03
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/collection-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-collection-fill" viewBox="0 0 16 16">
+ <path d="M0 13a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 16 13V6a1.5 1.5 0 0 0-1.5-1.5h-13A1.5 1.5 0 0 0 0 6zM2 3a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 0-1h-11A.5.5 0 0 0 2 3m2-2a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7A.5.5 0 0 0 4 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/collection-play-fill.svg b/vendor/twbs/bootstrap-icons/icons/collection-play-fill.svg
new file mode 100644
index 000000000..b6820d077
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/collection-play-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-collection-play-fill" viewBox="0 0 16 16">
+ <path d="M2.5 3.5a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1zm2-2a.5.5 0 0 1 0-1h7a.5.5 0 0 1 0 1zM0 13a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 16 13V6a1.5 1.5 0 0 0-1.5-1.5h-13A1.5 1.5 0 0 0 0 6zm6.258-6.437a.5.5 0 0 1 .507.013l4 2.5a.5.5 0 0 1 0 .848l-4 2.5A.5.5 0 0 1 6 12V7a.5.5 0 0 1 .258-.437"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/collection-play.svg b/vendor/twbs/bootstrap-icons/icons/collection-play.svg
new file mode 100644
index 000000000..0c59f5d97
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/collection-play.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-collection-play" viewBox="0 0 16 16">
+ <path d="M2 3a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 0-1h-11A.5.5 0 0 0 2 3m2-2a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7A.5.5 0 0 0 4 1m2.765 5.576A.5.5 0 0 0 6 7v5a.5.5 0 0 0 .765.424l4-2.5a.5.5 0 0 0 0-.848z"/>
+ <path d="M1.5 14.5A1.5 1.5 0 0 1 0 13V6a1.5 1.5 0 0 1 1.5-1.5h13A1.5 1.5 0 0 1 16 6v7a1.5 1.5 0 0 1-1.5 1.5zm13-1a.5.5 0 0 0 .5-.5V6a.5.5 0 0 0-.5-.5h-13A.5.5 0 0 0 1 6v7a.5.5 0 0 0 .5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/collection.svg b/vendor/twbs/bootstrap-icons/icons/collection.svg
new file mode 100644
index 000000000..8b5d5fdfe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/collection.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-collection" viewBox="0 0 16 16">
+ <path d="M2.5 3.5a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1zm2-2a.5.5 0 0 1 0-1h7a.5.5 0 0 1 0 1zM0 13a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 16 13V6a1.5 1.5 0 0 0-1.5-1.5h-13A1.5 1.5 0 0 0 0 6zm1.5.5A.5.5 0 0 1 1 13V6a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/columns-gap.svg b/vendor/twbs/bootstrap-icons/icons/columns-gap.svg
new file mode 100644
index 000000000..8b4bb4e7c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/columns-gap.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-columns-gap" viewBox="0 0 16 16">
+ <path d="M6 1v3H1V1zM1 0a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm14 12v3h-5v-3zm-5-1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1zM6 8v7H1V8zM1 7a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1zm14-6v7h-5V1zm-5-1a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/columns.svg b/vendor/twbs/bootstrap-icons/icons/columns.svg
new file mode 100644
index 000000000..17632df7e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/columns.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-columns" viewBox="0 0 16 16">
+ <path d="M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm8.5 0v8H15V2zm0 9v3H15v-3zm-1-9H1v3h6.5zM1 14h6.5V6H1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/command.svg b/vendor/twbs/bootstrap-icons/icons/command.svg
new file mode 100644
index 000000000..64fa00ba3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/command.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-command" viewBox="0 0 16 16">
+ <path d="M3.5 2A1.5 1.5 0 0 1 5 3.5V5H3.5a1.5 1.5 0 1 1 0-3M6 5V3.5A2.5 2.5 0 1 0 3.5 6H5v4H3.5A2.5 2.5 0 1 0 6 12.5V11h4v1.5a2.5 2.5 0 1 0 2.5-2.5H11V6h1.5A2.5 2.5 0 1 0 10 3.5V5zm4 1v4H6V6zm1-1V3.5A1.5 1.5 0 1 1 12.5 5zm0 6h1.5a1.5 1.5 0 1 1-1.5 1.5zm-6 0v1.5A1.5 1.5 0 1 1 3.5 11z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/compass-fill.svg b/vendor/twbs/bootstrap-icons/icons/compass-fill.svg
new file mode 100644
index 000000000..1396c1f08
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/compass-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-compass-fill" viewBox="0 0 16 16">
+ <path d="M15.5 8.516a7.5 7.5 0 1 1-9.462-7.24A1 1 0 0 1 7 0h2a1 1 0 0 1 .962 1.276 7.5 7.5 0 0 1 5.538 7.24m-3.61-3.905L6.94 7.439 4.11 12.39l4.95-2.828 2.828-4.95z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/compass.svg b/vendor/twbs/bootstrap-icons/icons/compass.svg
new file mode 100644
index 000000000..9b402f335
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/compass.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-compass" viewBox="0 0 16 16">
+ <path d="M8 16.016a7.5 7.5 0 0 0 1.962-14.74A1 1 0 0 0 9 0H7a1 1 0 0 0-.962 1.276A7.5 7.5 0 0 0 8 16.016m6.5-7.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0"/>
+ <path d="m6.94 7.44 4.95-2.83-2.83 4.95-4.949 2.83 2.828-4.95z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cone-striped.svg b/vendor/twbs/bootstrap-icons/icons/cone-striped.svg
new file mode 100644
index 000000000..28a9529b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cone-striped.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cone-striped" viewBox="0 0 16 16">
+ <path d="m9.97 4.88.953 3.811C10.159 8.878 9.14 9 8 9s-2.158-.122-2.923-.309L6.03 4.88C6.635 4.957 7.3 5 8 5s1.365-.043 1.97-.12m-.245-.978L8.97.88C8.718-.13 7.282-.13 7.03.88L6.275 3.9C6.8 3.965 7.382 4 8 4s1.2-.036 1.725-.098m4.396 8.613a.5.5 0 0 1 .037.96l-6 2a.5.5 0 0 1-.316 0l-6-2a.5.5 0 0 1 .037-.96l2.391-.598.565-2.257c.862.212 1.964.339 3.165.339s2.303-.127 3.165-.339l.565 2.257z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cone.svg b/vendor/twbs/bootstrap-icons/icons/cone.svg
new file mode 100644
index 000000000..b1a7d9722
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cone.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cone" viewBox="0 0 16 16">
+ <path d="M7.03 1.88c.252-1.01 1.688-1.01 1.94 0l2.905 11.62H14a.5.5 0 0 1 0 1H2a.5.5 0 0 1 0-1h2.125z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/controller.svg b/vendor/twbs/bootstrap-icons/icons/controller.svg
new file mode 100644
index 000000000..b7ceedb0d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/controller.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-controller" viewBox="0 0 16 16">
+ <path d="M11.5 6.027a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1.5 1.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2.5-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1.5 1.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m-6.5-3h1v1h1v1h-1v1h-1v-1h-1v-1h1z"/>
+ <path d="M3.051 3.26a.5.5 0 0 1 .354-.613l1.932-.518a.5.5 0 0 1 .62.39c.655-.079 1.35-.117 2.043-.117.72 0 1.443.041 2.12.126a.5.5 0 0 1 .622-.399l1.932.518a.5.5 0 0 1 .306.729q.211.136.373.297c.408.408.78 1.05 1.095 1.772.32.733.599 1.591.805 2.466s.34 1.78.364 2.606c.024.816-.059 1.602-.328 2.21a1.42 1.42 0 0 1-1.445.83c-.636-.067-1.115-.394-1.513-.773-.245-.232-.496-.526-.739-.808-.126-.148-.25-.292-.368-.423-.728-.804-1.597-1.527-3.224-1.527s-2.496.723-3.224 1.527c-.119.131-.242.275-.368.423-.243.282-.494.575-.739.808-.398.38-.877.706-1.513.773a1.42 1.42 0 0 1-1.445-.83c-.27-.608-.352-1.395-.329-2.21.024-.826.16-1.73.365-2.606.206-.875.486-1.733.805-2.466.315-.722.687-1.364 1.094-1.772a2.3 2.3 0 0 1 .433-.335l-.028-.079zm2.036.412c-.877.185-1.469.443-1.733.708-.276.276-.587.783-.885 1.465a14 14 0 0 0-.748 2.295 12.4 12.4 0 0 0-.339 2.406c-.022.755.062 1.368.243 1.776a.42.42 0 0 0 .426.24c.327-.034.61-.199.929-.502.212-.202.4-.423.615-.674.133-.156.276-.323.44-.504C4.861 9.969 5.978 9.027 8 9.027s3.139.942 3.965 1.855c.164.181.307.348.44.504.214.251.403.472.615.674.318.303.601.468.929.503a.42.42 0 0 0 .426-.241c.18-.408.265-1.02.243-1.776a12.4 12.4 0 0 0-.339-2.406 14 14 0 0 0-.748-2.295c-.298-.682-.61-1.19-.885-1.465-.264-.265-.856-.523-1.733-.708-.85-.179-1.877-.27-2.913-.27s-2.063.091-2.913.27"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cookie.svg b/vendor/twbs/bootstrap-icons/icons/cookie.svg
new file mode 100644
index 000000000..7a4b2fae2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cookie.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cookie" viewBox="0 0 16 16">
+ <path d="M6 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m4.5.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m-.5 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+ <path d="M8 0a7.96 7.96 0 0 0-4.075 1.114q-.245.102-.437.28A8 8 0 1 0 8 0m3.25 14.201a1.5 1.5 0 0 0-2.13.71A7 7 0 0 1 8 15a6.97 6.97 0 0 1-3.845-1.15 1.5 1.5 0 1 0-2.005-2.005A6.97 6.97 0 0 1 1 8c0-1.953.8-3.719 2.09-4.989a1.5 1.5 0 1 0 2.469-1.574A7 7 0 0 1 8 1c1.42 0 2.742.423 3.845 1.15a1.5 1.5 0 1 0 2.005 2.005A6.97 6.97 0 0 1 15 8c0 .596-.074 1.174-.214 1.727a1.5 1.5 0 1 0-1.025 2.25 7 7 0 0 1-2.51 2.224Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/copy.svg b/vendor/twbs/bootstrap-icons/icons/copy.svg
new file mode 100644
index 000000000..b59068028
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/copy.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-copy" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 5a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-1h1v1a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h1v1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cpu-fill.svg b/vendor/twbs/bootstrap-icons/icons/cpu-fill.svg
new file mode 100644
index 000000000..ce6e29424
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cpu-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cpu-fill" viewBox="0 0 16 16">
+ <path d="M6.5 6a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5z"/>
+ <path d="M5.5.5a.5.5 0 0 0-1 0V2A2.5 2.5 0 0 0 2 4.5H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2A2.5 2.5 0 0 0 4.5 14v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14a2.5 2.5 0 0 0 2.5-2.5h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14A2.5 2.5 0 0 0 11.5 2V.5a.5.5 0 0 0-1 0V2h-1V.5a.5.5 0 0 0-1 0V2h-1V.5a.5.5 0 0 0-1 0V2h-1zm1 4.5h3A1.5 1.5 0 0 1 11 6.5v3A1.5 1.5 0 0 1 9.5 11h-3A1.5 1.5 0 0 1 5 9.5v-3A1.5 1.5 0 0 1 6.5 5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cpu.svg b/vendor/twbs/bootstrap-icons/icons/cpu.svg
new file mode 100644
index 000000000..88c0d56c8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cpu.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cpu" viewBox="0 0 16 16">
+ <path d="M5 0a.5.5 0 0 1 .5.5V2h1V.5a.5.5 0 0 1 1 0V2h1V.5a.5.5 0 0 1 1 0V2h1V.5a.5.5 0 0 1 1 0V2A2.5 2.5 0 0 1 14 4.5h1.5a.5.5 0 0 1 0 1H14v1h1.5a.5.5 0 0 1 0 1H14v1h1.5a.5.5 0 0 1 0 1H14v1h1.5a.5.5 0 0 1 0 1H14a2.5 2.5 0 0 1-2.5 2.5v1.5a.5.5 0 0 1-1 0V14h-1v1.5a.5.5 0 0 1-1 0V14h-1v1.5a.5.5 0 0 1-1 0V14h-1v1.5a.5.5 0 0 1-1 0V14A2.5 2.5 0 0 1 2 11.5H.5a.5.5 0 0 1 0-1H2v-1H.5a.5.5 0 0 1 0-1H2v-1H.5a.5.5 0 0 1 0-1H2v-1H.5a.5.5 0 0 1 0-1H2A2.5 2.5 0 0 1 4.5 2V.5A.5.5 0 0 1 5 0m-.5 3A1.5 1.5 0 0 0 3 4.5v7A1.5 1.5 0 0 0 4.5 13h7a1.5 1.5 0 0 0 1.5-1.5v-7A1.5 1.5 0 0 0 11.5 3zM5 6.5A1.5 1.5 0 0 1 6.5 5h3A1.5 1.5 0 0 1 11 6.5v3A1.5 1.5 0 0 1 9.5 11h-3A1.5 1.5 0 0 1 5 9.5zM6.5 6a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/credit-card-2-back-fill.svg b/vendor/twbs/bootstrap-icons/icons/credit-card-2-back-fill.svg
new file mode 100644
index 000000000..032fb4a22
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/credit-card-2-back-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-credit-card-2-back-fill" viewBox="0 0 16 16">
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5H0zm11.5 1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM0 11v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/credit-card-2-back.svg b/vendor/twbs/bootstrap-icons/icons/credit-card-2-back.svg
new file mode 100644
index 000000000..b29419cbb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/credit-card-2-back.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-credit-card-2-back" viewBox="0 0 16 16">
+ <path d="M11 5.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5z"/>
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm13 2v5H1V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1m-1 9H2a1 1 0 0 1-1-1v-1h14v1a1 1 0 0 1-1 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/credit-card-2-front-fill.svg b/vendor/twbs/bootstrap-icons/icons/credit-card-2-front-fill.svg
new file mode 100644
index 000000000..06684d5df
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/credit-card-2-front-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-credit-card-2-front-fill" viewBox="0 0 16 16">
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2.5 1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm0 3a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm3 0a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm3 0a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm3 0a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/credit-card-2-front.svg b/vendor/twbs/bootstrap-icons/icons/credit-card-2-front.svg
new file mode 100644
index 000000000..0bbc290ae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/credit-card-2-front.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-credit-card-2-front" viewBox="0 0 16 16">
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+ <path d="M2 5.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/credit-card-fill.svg b/vendor/twbs/bootstrap-icons/icons/credit-card-fill.svg
new file mode 100644
index 000000000..a4f899aed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/credit-card-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-credit-card-fill" viewBox="0 0 16 16">
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1H0zm0 3v5a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7zm3 2h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/credit-card.svg b/vendor/twbs/bootstrap-icons/icons/credit-card.svg
new file mode 100644
index 000000000..406233dd5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/credit-card.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-credit-card" viewBox="0 0 16 16">
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v1h14V4a1 1 0 0 0-1-1zm13 4H1v5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+ <path d="M2 10a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/crop.svg b/vendor/twbs/bootstrap-icons/icons/crop.svg
new file mode 100644
index 000000000..3b4bb608b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/crop.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-crop" viewBox="0 0 16 16">
+ <path d="M3.5.5A.5.5 0 0 1 4 1v13h13a.5.5 0 0 1 0 1h-2v2a.5.5 0 0 1-1 0v-2H3.5a.5.5 0 0 1-.5-.5V4H1a.5.5 0 0 1 0-1h2V1a.5.5 0 0 1 .5-.5m2.5 3a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V4H6.5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/crosshair.svg b/vendor/twbs/bootstrap-icons/icons/crosshair.svg
new file mode 100644
index 000000000..13bed746f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/crosshair.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-crosshair" viewBox="0 0 16 16">
+ <path d="M8.5.5a.5.5 0 0 0-1 0v.518A7 7 0 0 0 1.018 7.5H.5a.5.5 0 0 0 0 1h.518A7 7 0 0 0 7.5 14.982v.518a.5.5 0 0 0 1 0v-.518A7 7 0 0 0 14.982 8.5h.518a.5.5 0 0 0 0-1h-.518A7 7 0 0 0 8.5 1.018zm-6.48 7A6 6 0 0 1 7.5 2.02v.48a.5.5 0 0 0 1 0v-.48a6 6 0 0 1 5.48 5.48h-.48a.5.5 0 0 0 0 1h.48a6 6 0 0 1-5.48 5.48v-.48a.5.5 0 0 0-1 0v.48A6 6 0 0 1 2.02 8.5h.48a.5.5 0 0 0 0-1zM8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/crosshair2.svg b/vendor/twbs/bootstrap-icons/icons/crosshair2.svg
new file mode 100644
index 000000000..3c2858601
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/crosshair2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-crosshair2" viewBox="0 0 16 16">
+ <path d="M8 0a.5.5 0 0 1 .5.5v.518A7 7 0 0 1 14.982 7.5h.518a.5.5 0 0 1 0 1h-.518A7 7 0 0 1 8.5 14.982v.518a.5.5 0 0 1-1 0v-.518A7 7 0 0 1 1.018 8.5H.5a.5.5 0 0 1 0-1h.518A7 7 0 0 1 7.5 1.018V.5A.5.5 0 0 1 8 0m-.5 2.02A6 6 0 0 0 2.02 7.5h1.005A5 5 0 0 1 7.5 3.025zm1 1.005A5 5 0 0 1 12.975 7.5h1.005A6 6 0 0 0 8.5 2.02zM12.975 8.5A5 5 0 0 1 8.5 12.975v1.005a6 6 0 0 0 5.48-5.48zM7.5 12.975A5 5 0 0 1 3.025 8.5H2.02a6 6 0 0 0 5.48 5.48zM10 8a2 2 0 1 0-4 0 2 2 0 0 0 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cup-fill.svg b/vendor/twbs/bootstrap-icons/icons/cup-fill.svg
new file mode 100644
index 000000000..7173787bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cup-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cup-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M.11 3.187A.5.5 0 0 1 .5 3h13a.5.5 0 0 1 .488.608l-.22.991a3.001 3.001 0 0 1-1.3 5.854l-.132.59A2.5 2.5 0 0 1 9.896 13H4.104a2.5 2.5 0 0 1-2.44-1.958L.012 3.608a.5.5 0 0 1 .098-.42Zm12.574 6.288a2 2 0 0 0 .866-3.899z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cup-hot-fill.svg b/vendor/twbs/bootstrap-icons/icons/cup-hot-fill.svg
new file mode 100644
index 000000000..9d7c465e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cup-hot-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cup-hot-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M.5 6a.5.5 0 0 0-.488.608l1.652 7.434A2.5 2.5 0 0 0 4.104 16h5.792a2.5 2.5 0 0 0 2.44-1.958l.131-.59a3 3 0 0 0 1.3-5.854l.221-.99A.5.5 0 0 0 13.5 6zM13 12.5a2 2 0 0 1-.316-.025l.867-3.898A2.001 2.001 0 0 1 13 12.5"/>
+ <path d="m4.4.8-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.253.382l-.018.025-.005.008-.002.002A.5.5 0 0 1 3.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 3.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 3 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 4.4.8m3 0-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.253.382l-.018.025-.005.008-.002.002A.5.5 0 0 1 6.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 6.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 6 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 7.4.8m3 0-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.252.382l-.019.025-.005.008-.002.002A.5.5 0 0 1 9.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 9.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 9 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 10.4.8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cup-hot.svg b/vendor/twbs/bootstrap-icons/icons/cup-hot.svg
new file mode 100644
index 000000000..a6f7e899c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cup-hot.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cup-hot" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M.5 6a.5.5 0 0 0-.488.608l1.652 7.434A2.5 2.5 0 0 0 4.104 16h5.792a2.5 2.5 0 0 0 2.44-1.958l.131-.59a3 3 0 0 0 1.3-5.854l.221-.99A.5.5 0 0 0 13.5 6zM13 12.5a2 2 0 0 1-.316-.025l.867-3.898A2.001 2.001 0 0 1 13 12.5M2.64 13.825 1.123 7h11.754l-1.517 6.825A1.5 1.5 0 0 1 9.896 15H4.104a1.5 1.5 0 0 1-1.464-1.175"/>
+ <path d="m4.4.8-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.253.382l-.018.025-.005.008-.002.002A.5.5 0 0 1 3.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 3.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 3 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 4.4.8m3 0-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.253.382l-.018.025-.005.008-.002.002A.5.5 0 0 1 6.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 6.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 6 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 7.4.8m3 0-.003.004-.014.019a4 4 0 0 0-.204.31 2 2 0 0 0-.141.267c-.026.06-.034.092-.037.103v.004a.6.6 0 0 0 .091.248c.075.133.178.272.308.445l.01.012c.118.158.26.347.37.543.112.2.22.455.22.745 0 .188-.065.368-.119.494a3 3 0 0 1-.202.388 5 5 0 0 1-.252.382l-.019.025-.005.008-.002.002A.5.5 0 0 1 9.6 4.2l.003-.004.014-.019a4 4 0 0 0 .204-.31 2 2 0 0 0 .141-.267c.026-.06.034-.092.037-.103a.6.6 0 0 0-.09-.252A4 4 0 0 0 9.6 2.8l-.01-.012a5 5 0 0 1-.37-.543A1.53 1.53 0 0 1 9 1.5c0-.188.065-.368.119-.494.059-.138.134-.274.202-.388a6 6 0 0 1 .253-.382l.025-.035A.5.5 0 0 1 10.4.8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cup-straw.svg b/vendor/twbs/bootstrap-icons/icons/cup-straw.svg
new file mode 100644
index 000000000..9388da968
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cup-straw.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cup-straw" viewBox="0 0 16 16">
+ <path d="M13.902.334a.5.5 0 0 1-.28.65l-2.254.902-.4 1.927c.376.095.715.215.972.367.228.135.56.396.56.82q0 .069-.011.132l-.962 9.068a1.28 1.28 0 0 1-.524.93c-.488.34-1.494.87-3.01.87s-2.522-.53-3.01-.87a1.28 1.28 0 0 1-.524-.93L3.51 5.132A1 1 0 0 1 3.5 5c0-.424.332-.685.56-.82.262-.154.607-.276.99-.372C5.824 3.614 6.867 3.5 8 3.5c.712 0 1.389.045 1.985.127l.464-2.215a.5.5 0 0 1 .303-.356l2.5-1a.5.5 0 0 1 .65.278M9.768 4.607A14 14 0 0 0 8 4.5c-1.076 0-2.033.11-2.707.278A3.3 3.3 0 0 0 4.645 5c.146.073.362.15.648.222C5.967 5.39 6.924 5.5 8 5.5c.571 0 1.109-.03 1.588-.085zm.292 1.756C9.445 6.45 8.742 6.5 8 6.5c-1.133 0-2.176-.114-2.95-.308a6 6 0 0 1-.435-.127l.838 8.03c.013.121.06.186.102.215.357.249 1.168.69 2.438.69s2.081-.441 2.438-.69c.042-.029.09-.094.102-.215l.852-8.03a6 6 0 0 1-.435.127 9 9 0 0 1-.89.17zM4.467 4.884s.003.002.005.006zm7.066 0-.005.006zM11.354 5a3 3 0 0 0-.604-.21l-.099.445.055-.013c.286-.072.502-.149.648-.222"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cup.svg b/vendor/twbs/bootstrap-icons/icons/cup.svg
new file mode 100644
index 000000000..2694ac8e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cup.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cup" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M.11 3.187A.5.5 0 0 1 .5 3h13a.5.5 0 0 1 .488.608l-.22.991a3.001 3.001 0 0 1-1.3 5.854l-.132.59A2.5 2.5 0 0 1 9.896 13H4.104a2.5 2.5 0 0 1-2.44-1.958L.012 3.608a.5.5 0 0 1 .098-.42Zm12.574 6.288a2 2 0 0 0 .866-3.899zM1.124 4l1.516 6.825A1.5 1.5 0 0 0 4.104 12h5.792a1.5 1.5 0 0 0 1.464-1.175L12.877 4H1.123Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/currency-bitcoin.svg b/vendor/twbs/bootstrap-icons/icons/currency-bitcoin.svg
new file mode 100644
index 000000000..0477ff898
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/currency-bitcoin.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-currency-bitcoin" viewBox="0 0 16 16">
+ <path d="M5.5 13v1.25c0 .138.112.25.25.25h1a.25.25 0 0 0 .25-.25V13h.5v1.25c0 .138.112.25.25.25h1a.25.25 0 0 0 .25-.25V13h.084c1.992 0 3.416-1.033 3.416-2.82 0-1.502-1.007-2.323-2.186-2.44v-.088c.97-.242 1.683-.974 1.683-2.19C11.997 3.93 10.847 3 9.092 3H9V1.75a.25.25 0 0 0-.25-.25h-1a.25.25 0 0 0-.25.25V3h-.573V1.75a.25.25 0 0 0-.25-.25H5.75a.25.25 0 0 0-.25.25V3l-1.998.011a.25.25 0 0 0-.25.25v.989c0 .137.11.25.248.25l.755-.005a.75.75 0 0 1 .745.75v5.505a.75.75 0 0 1-.75.75l-.748.011a.25.25 0 0 0-.25.25v1c0 .138.112.25.25.25zm1.427-8.513h1.719c.906 0 1.438.498 1.438 1.312 0 .871-.575 1.362-1.877 1.362h-1.28zm0 4.051h1.84c1.137 0 1.756.58 1.756 1.524 0 .953-.626 1.45-2.158 1.45H6.927z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/currency-dollar.svg b/vendor/twbs/bootstrap-icons/icons/currency-dollar.svg
new file mode 100644
index 000000000..7ead9a785
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/currency-dollar.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-currency-dollar" viewBox="0 0 16 16">
+ <path d="M4 10.781c.148 1.667 1.513 2.85 3.591 3.003V15h1.043v-1.216c2.27-.179 3.678-1.438 3.678-3.3 0-1.59-.947-2.51-2.956-3.028l-.722-.187V3.467c1.122.11 1.879.714 2.07 1.616h1.47c-.166-1.6-1.54-2.748-3.54-2.875V1H7.591v1.233c-1.939.23-3.27 1.472-3.27 3.156 0 1.454.966 2.483 2.661 2.917l.61.162v4.031c-1.149-.17-1.94-.8-2.131-1.718zm3.391-3.836c-1.043-.263-1.6-.825-1.6-1.616 0-.944.704-1.641 1.8-1.828v3.495l-.2-.05zm1.591 1.872c1.287.323 1.852.859 1.852 1.769 0 1.097-.826 1.828-2.2 1.939V8.73z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/currency-euro.svg b/vendor/twbs/bootstrap-icons/icons/currency-euro.svg
new file mode 100644
index 000000000..90c83d5f8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/currency-euro.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-currency-euro" viewBox="0 0 16 16">
+ <path d="M4 9.42h1.063C5.4 12.323 7.317 14 10.34 14c.622 0 1.167-.068 1.659-.185v-1.3c-.484.119-1.045.17-1.659.17-2.1 0-3.455-1.198-3.775-3.264h4.017v-.928H6.497v-.936q-.002-.165.008-.329h4.078v-.927H6.618c.388-1.898 1.719-2.985 3.723-2.985.614 0 1.175.05 1.659.177V2.194A6.6 6.6 0 0 0 10.341 2c-2.928 0-4.82 1.569-5.244 4.3H4v.928h1.01v1.265H4v.928z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/currency-exchange.svg b/vendor/twbs/bootstrap-icons/icons/currency-exchange.svg
new file mode 100644
index 000000000..e332aa785
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/currency-exchange.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-currency-exchange" viewBox="0 0 16 16">
+ <path d="M0 5a5 5 0 0 0 4.027 4.905 6.5 6.5 0 0 1 .544-2.073C3.695 7.536 3.132 6.864 3 5.91h-.5v-.426h.466V5.05q-.001-.07.004-.135H2.5v-.427h.511C3.236 3.24 4.213 2.5 5.681 2.5c.316 0 .59.031.819.085v.733a3.5 3.5 0 0 0-.815-.082c-.919 0-1.538.466-1.734 1.252h1.917v.427h-1.98q-.004.07-.003.147v.422h1.983v.427H3.93c.118.602.468 1.03 1.005 1.229a6.5 6.5 0 0 1 4.97-3.113A5.002 5.002 0 0 0 0 5m16 5.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0m-7.75 1.322c.069.835.746 1.485 1.964 1.562V14h.54v-.62c1.259-.086 1.996-.74 1.996-1.69 0-.865-.563-1.31-1.57-1.54l-.426-.1V8.374c.54.06.884.347.966.745h.948c-.07-.804-.779-1.433-1.914-1.502V7h-.54v.629c-1.076.103-1.808.732-1.808 1.622 0 .787.544 1.288 1.45 1.493l.358.085v1.78c-.554-.08-.92-.376-1.003-.787zm1.96-1.895c-.532-.12-.82-.364-.82-.732 0-.41.311-.719.824-.809v1.54h-.005zm.622 1.044c.645.145.943.38.943.796 0 .474-.37.8-1.02.86v-1.674z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/currency-pound.svg b/vendor/twbs/bootstrap-icons/icons/currency-pound.svg
new file mode 100644
index 000000000..465087600
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/currency-pound.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-currency-pound" viewBox="0 0 16 16">
+ <path d="M4 8.585h1.969c.115.465.186.939.186 1.43 0 1.385-.736 2.496-2.075 2.771V14H12v-1.24H6.492v-.129c.825-.525 1.135-1.446 1.135-2.694 0-.465-.07-.913-.168-1.352h3.29v-.972H7.22c-.186-.723-.372-1.455-.372-2.247 0-1.274 1.047-2.066 2.58-2.066a5.3 5.3 0 0 1 2.103.465V2.456A5.6 5.6 0 0 0 9.348 2C6.865 2 5.322 3.291 5.322 5.366c0 .775.195 1.515.399 2.247H4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/currency-rupee.svg b/vendor/twbs/bootstrap-icons/icons/currency-rupee.svg
new file mode 100644
index 000000000..4fdf9a2ba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/currency-rupee.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-currency-rupee" viewBox="0 0 16 16">
+ <path d="M4 3.06h2.726c1.22 0 2.12.575 2.325 1.724H4v1.051h5.051C8.855 7.001 8 7.558 6.788 7.558H4v1.317L8.437 14h2.11L6.095 8.884h.855c2.316-.018 3.465-1.476 3.688-3.049H12V4.784h-1.345c-.08-.778-.357-1.335-.793-1.732H12V2H4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/currency-yen.svg b/vendor/twbs/bootstrap-icons/icons/currency-yen.svg
new file mode 100644
index 000000000..5bbf1a2a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/currency-yen.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-currency-yen" viewBox="0 0 16 16">
+ <path d="M8.75 14v-2.629h2.446v-.967H8.75v-1.31h2.445v-.967H9.128L12.5 2h-1.699L8.047 7.327h-.086L5.207 2H3.5l3.363 6.127H4.778v.968H7.25v1.31H4.78v.966h2.47V14h1.502z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cursor-fill.svg b/vendor/twbs/bootstrap-icons/icons/cursor-fill.svg
new file mode 100644
index 000000000..093372b80
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cursor-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cursor-fill" viewBox="0 0 16 16">
+ <path d="M14.082 2.182a.5.5 0 0 1 .103.557L8.528 15.467a.5.5 0 0 1-.917-.007L5.57 10.694.803 8.652a.5.5 0 0 1-.006-.916l12.728-5.657a.5.5 0 0 1 .556.103z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cursor-text.svg b/vendor/twbs/bootstrap-icons/icons/cursor-text.svg
new file mode 100644
index 000000000..27c057b0d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cursor-text.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cursor-text" viewBox="0 0 16 16">
+ <path d="M5 2a.5.5 0 0 1 .5-.5c.862 0 1.573.287 2.06.566.174.099.321.198.44.286.119-.088.266-.187.44-.286A4.17 4.17 0 0 1 10.5 1.5a.5.5 0 0 1 0 1c-.638 0-1.177.213-1.564.434a3.5 3.5 0 0 0-.436.294V7.5H9a.5.5 0 0 1 0 1h-.5v4.272c.1.08.248.187.436.294.387.221.926.434 1.564.434a.5.5 0 0 1 0 1 4.17 4.17 0 0 1-2.06-.566A5 5 0 0 1 8 13.65a5 5 0 0 1-.44.285 4.17 4.17 0 0 1-2.06.566.5.5 0 0 1 0-1c.638 0 1.177-.213 1.564-.434.188-.107.335-.214.436-.294V8.5H7a.5.5 0 0 1 0-1h.5V3.228a3.5 3.5 0 0 0-.436-.294A3.17 3.17 0 0 0 5.5 2.5.5.5 0 0 1 5 2m2.648 10.645"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/cursor.svg b/vendor/twbs/bootstrap-icons/icons/cursor.svg
new file mode 100644
index 000000000..e23e3fda3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/cursor.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cursor" viewBox="0 0 16 16">
+ <path d="M14.082 2.182a.5.5 0 0 1 .103.557L8.528 15.467a.5.5 0 0 1-.917-.007L5.57 10.694.803 8.652a.5.5 0 0 1-.006-.916l12.728-5.657a.5.5 0 0 1 .556.103zM2.25 8.184l3.897 1.67a.5.5 0 0 1 .262.263l1.67 3.897L12.743 3.52z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dash-circle-dotted.svg b/vendor/twbs/bootstrap-icons/icons/dash-circle-dotted.svg
new file mode 100644
index 000000000..1c011e21b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dash-circle-dotted.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash-circle-dotted" viewBox="0 0 16 16">
+ <path d="M8 0q-.264 0-.523.017l.064.998a7 7 0 0 1 .918 0l.064-.998A8 8 0 0 0 8 0M6.44.152q-.52.104-1.012.27l.321.948q.43-.147.884-.237L6.44.153zm4.132.271a8 8 0 0 0-1.011-.27l-.194.98q.453.09.884.237zm1.873.925a8 8 0 0 0-.906-.524l-.443.896q.413.205.793.459zM4.46.824q-.471.233-.905.524l.556.83a7 7 0 0 1 .793-.458zM2.725 1.985q-.394.346-.74.74l.752.66q.303-.345.648-.648zm11.29.74a8 8 0 0 0-.74-.74l-.66.752q.346.303.648.648zm1.161 1.735a8 8 0 0 0-.524-.905l-.83.556q.254.38.458.793l.896-.443zM1.348 3.555q-.292.433-.524.906l.896.443q.205-.413.459-.793zM.423 5.428a8 8 0 0 0-.27 1.011l.98.194q.09-.453.237-.884zM15.848 6.44a8 8 0 0 0-.27-1.012l-.948.321q.147.43.237.884zM.017 7.477a8 8 0 0 0 0 1.046l.998-.064a7 7 0 0 1 0-.918zM16 8a8 8 0 0 0-.017-.523l-.998.064a7 7 0 0 1 0 .918l.998.064A8 8 0 0 0 16 8M.152 9.56q.104.52.27 1.012l.948-.321a7 7 0 0 1-.237-.884l-.98.194zm15.425 1.012q.168-.493.27-1.011l-.98-.194q-.09.453-.237.884zM.824 11.54a8 8 0 0 0 .524.905l.83-.556a7 7 0 0 1-.458-.793zm13.828.905q.292-.434.524-.906l-.896-.443q-.205.413-.459.793zm-12.667.83q.346.394.74.74l.66-.752a7 7 0 0 1-.648-.648zm11.29.74q.394-.346.74-.74l-.752-.66q-.302.346-.648.648zm-1.735 1.161q.471-.233.905-.524l-.556-.83a7 7 0 0 1-.793.458zm-7.985-.524q.434.292.906.524l.443-.896a7 7 0 0 1-.793-.459zm1.873.925q.493.168 1.011.27l.194-.98a7 7 0 0 1-.884-.237zm4.132.271a8 8 0 0 0 1.012-.27l-.321-.948a7 7 0 0 1-.884.237l.194.98zm-2.083.135a8 8 0 0 0 1.046 0l-.064-.998a7 7 0 0 1-.918 0zM4.5 7.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dash-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/dash-circle-fill.svg
new file mode 100644
index 000000000..ac4eae070
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dash-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M4.5 7.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dash-circle.svg b/vendor/twbs/bootstrap-icons/icons/dash-circle.svg
new file mode 100644
index 000000000..c4abdd215
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dash-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dash-lg.svg b/vendor/twbs/bootstrap-icons/icons/dash-lg.svg
new file mode 100644
index 000000000..454aa7d0c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dash-lg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash-lg" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 8a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11A.5.5 0 0 1 2 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dash-square-dotted.svg b/vendor/twbs/bootstrap-icons/icons/dash-square-dotted.svg
new file mode 100644
index 000000000..90886c358
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dash-square-dotted.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash-square-dotted" viewBox="0 0 16 16">
+ <path d="M2.5 0q-.25 0-.487.048l.194.98A1.5 1.5 0 0 1 2.5 1h.458V0zm2.292 0h-.917v1h.917zm1.833 0h-.917v1h.917zm1.833 0h-.916v1h.916zm1.834 0h-.917v1h.917zm1.833 0h-.917v1h.917zM13.5 0h-.458v1h.458q.151 0 .293.029l.194-.981A2.5 2.5 0 0 0 13.5 0m2.079 1.11a2.5 2.5 0 0 0-.69-.689l-.556.831q.248.167.415.415l.83-.556zM1.11.421a2.5 2.5 0 0 0-.689.69l.831.556c.11-.164.251-.305.415-.415zM16 2.5q0-.25-.048-.487l-.98.194q.027.141.028.293v.458h1zM.048 2.013A2.5 2.5 0 0 0 0 2.5v.458h1V2.5q0-.151.029-.293zM0 3.875v.917h1v-.917zm16 .917v-.917h-1v.917zM0 5.708v.917h1v-.917zm16 .917v-.917h-1v.917zM0 7.542v.916h1v-.916zm15 .916h1v-.916h-1zM0 9.375v.917h1v-.917zm16 .917v-.917h-1v.917zm-16 .916v.917h1v-.917zm16 .917v-.917h-1v.917zm-16 .917v.458q0 .25.048.487l.98-.194A1.5 1.5 0 0 1 1 13.5v-.458zm16 .458v-.458h-1v.458q0 .151-.029.293l.981.194Q16 13.75 16 13.5M.421 14.89c.183.272.417.506.69.689l.556-.831a1.5 1.5 0 0 1-.415-.415zm14.469.689c.272-.183.506-.417.689-.69l-.831-.556c-.11.164-.251.305-.415.415l.556.83zm-12.877.373Q2.25 16 2.5 16h.458v-1H2.5q-.151 0-.293-.029zM13.5 16q.25 0 .487-.048l-.194-.98A1.5 1.5 0 0 1 13.5 15h-.458v1zm-9.625 0h.917v-1h-.917zm1.833 0h.917v-1h-.917zm1.834 0h.916v-1h-.916zm1.833 0h.917v-1h-.917zm1.833 0h.917v-1h-.917zM4.5 7.5a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dash-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/dash-square-fill.svg
new file mode 100644
index 000000000..dbe0db2e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dash-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm2.5 7.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dash-square.svg b/vendor/twbs/bootstrap-icons/icons/dash-square.svg
new file mode 100644
index 000000000..9381872fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dash-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dash.svg b/vendor/twbs/bootstrap-icons/icons/dash.svg
new file mode 100644
index 000000000..c3834b409
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dash.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16">
+ <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-add.svg b/vendor/twbs/bootstrap-icons/icons/database-add.svg
new file mode 100644
index 000000000..5f7634045
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-add.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-add" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0"/>
+ <path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-check.svg b/vendor/twbs/bootstrap-icons/icons/database-check.svg
new file mode 100644
index 000000000..29c02b859
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-check" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514"/>
+ <path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-dash.svg b/vendor/twbs/bootstrap-icons/icons/database-dash.svg
new file mode 100644
index 000000000..184db0a08
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-dash" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1"/>
+ <path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-down.svg b/vendor/twbs/bootstrap-icons/icons/database-down.svg
new file mode 100644
index 000000000..e07745254
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-down" viewBox="0 0 16 16">
+ <path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0"/>
+ <path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/database-exclamation.svg
new file mode 100644
index 000000000..dbde50f22
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-exclamation.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-exclamation" viewBox="0 0 16 16">
+ <path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-fill-add.svg b/vendor/twbs/bootstrap-icons/icons/database-fill-add.svg
new file mode 100644
index 000000000..4273d5d53
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-fill-add.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-fill-add" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/>
+ <path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-fill-check.svg b/vendor/twbs/bootstrap-icons/icons/database-fill-check.svg
new file mode 100644
index 000000000..7690eed83
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-fill-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-fill-check" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/>
+ <path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-fill-dash.svg b/vendor/twbs/bootstrap-icons/icons/database-fill-dash.svg
new file mode 100644
index 000000000..48c468dff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-fill-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-fill-dash" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/>
+ <path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-fill-down.svg b/vendor/twbs/bootstrap-icons/icons/database-fill-down.svg
new file mode 100644
index 000000000..c3560d886
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-fill-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-fill-down" viewBox="0 0 16 16">
+ <path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/>
+ <path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-fill-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/database-fill-exclamation.svg
new file mode 100644
index 000000000..00073d070
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-fill-exclamation.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-fill-exclamation" viewBox="0 0 16 16">
+ <path d="M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/>
+ <path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-fill-gear.svg b/vendor/twbs/bootstrap-icons/icons/database-fill-gear.svg
new file mode 100644
index 000000000..94fc2e6d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-fill-gear.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-fill-gear" viewBox="0 0 16 16">
+ <path d="M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/>
+ <path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905m3.631-4.538c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-fill-lock.svg b/vendor/twbs/bootstrap-icons/icons/database-fill-lock.svg
new file mode 100644
index 000000000..a94820560
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-fill-lock.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-fill-lock" viewBox="0 0 16 16">
+ <path d="M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/>
+ <path d="M3.904 9.223C2.875 8.755 2 8.007 2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.5 4.5 0 0 0-1.364-.125 3 3 0 0 0-2.197.731 4.5 4.5 0 0 0-1.254 1.237A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777M8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16q.134 0 .266-.003A2 2 0 0 1 8 15zm0-1.5q0 .15.01.3A2 2 0 0 0 8 13c-1.573 0-3.022-.289-4.096-.777C2.875 11.755 2 11.007 2 10v-.839c.457.432 1.004.751 1.49.972C4.722 10.693 6.318 11 8 11q.13 0 .257-.002A4.5 4.5 0 0 0 8 12.5"/>
+ <path d="M9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-fill-slash.svg b/vendor/twbs/bootstrap-icons/icons/database-fill-slash.svg
new file mode 100644
index 000000000..467e6bbc7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-fill-slash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-fill-slash" viewBox="0 0 16 16">
+ <path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95ZM8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/>
+ <path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-fill-up.svg b/vendor/twbs/bootstrap-icons/icons/database-fill-up.svg
new file mode 100644
index 000000000..07f2d39dc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-fill-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-fill-up" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/>
+ <path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-fill-x.svg b/vendor/twbs/bootstrap-icons/icons/database-fill-x.svg
new file mode 100644
index 000000000..73ff26979
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-fill-x.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-fill-x" viewBox="0 0 16 16">
+ <path d="M8 1c-1.573 0-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4s.875 1.755 1.904 2.223C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777C13.125 5.755 14 5.007 14 4s-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1"/>
+ <path d="M2 7v-.839c.457.432 1.004.751 1.49.972C4.722 7.693 6.318 8 8 8s3.278-.307 4.51-.867c.486-.22 1.033-.54 1.49-.972V7c0 .424-.155.802-.411 1.133a4.51 4.51 0 0 0-4.815 1.843A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777C2.875 8.755 2 8.007 2 7m6.257 3.998L8 11c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13h.027a4.55 4.55 0 0 1 .23-2.002m-.002 3L8 14c-1.682 0-3.278-.307-4.51-.867-.486-.22-1.033-.54-1.49-.972V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-1.3-1.905"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-fill.svg b/vendor/twbs/bootstrap-icons/icons/database-fill.svg
new file mode 100644
index 000000000..860387433
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-fill.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-fill" viewBox="0 0 16 16">
+ <path d="M3.904 1.777C4.978 1.289 6.427 1 8 1s3.022.289 4.096.777C13.125 2.245 14 2.993 14 4s-.875 1.755-1.904 2.223C11.022 6.711 9.573 7 8 7s-3.022-.289-4.096-.777C2.875 5.755 2 5.007 2 4s.875-1.755 1.904-2.223"/>
+ <path d="M2 6.161V7c0 1.007.875 1.755 1.904 2.223C4.978 9.71 6.427 10 8 10s3.022-.289 4.096-.777C13.125 8.755 14 8.007 14 7v-.839c-.457.432-1.004.751-1.49.972C11.278 7.693 9.682 8 8 8s-3.278-.307-4.51-.867c-.486-.22-1.033-.54-1.49-.972"/>
+ <path d="M2 9.161V10c0 1.007.875 1.755 1.904 2.223C4.978 12.711 6.427 13 8 13s3.022-.289 4.096-.777C13.125 11.755 14 11.007 14 10v-.839c-.457.432-1.004.751-1.49.972-1.232.56-2.828.867-4.51.867s-3.278-.307-4.51-.867c-.486-.22-1.033-.54-1.49-.972"/>
+ <path d="M2 12.161V13c0 1.007.875 1.755 1.904 2.223C4.978 15.711 6.427 16 8 16s3.022-.289 4.096-.777C13.125 14.755 14 14.007 14 13v-.839c-.457.432-1.004.751-1.49.972-1.232.56-2.828.867-4.51.867s-3.278-.307-4.51-.867c-.486-.22-1.033-.54-1.49-.972"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-gear.svg b/vendor/twbs/bootstrap-icons/icons/database-gear.svg
new file mode 100644
index 000000000..451763ce3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-gear.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-gear" viewBox="0 0 16 16">
+ <path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/>
+ <path d="M11.886 9.46c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-lock.svg b/vendor/twbs/bootstrap-icons/icons/database-lock.svg
new file mode 100644
index 000000000..e150cd207
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-lock.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-lock" viewBox="0 0 16 16">
+ <path d="M13 5.698a5 5 0 0 1-.904.525C11.022 6.711 9.573 7 8 7s-3.022-.289-4.096-.777A5 5 0 0 1 3 5.698V7c0 .374.356.875 1.318 1.313C5.234 8.729 6.536 9 8 9c.666 0 1.298-.056 1.876-.156-.43.31-.804.693-1.102 1.132A12 12 0 0 1 8 10c-1.573 0-3.022-.289-4.096-.777A5 5 0 0 1 3 8.698V10c0 .374.356.875 1.318 1.313C5.234 11.729 6.536 12 8 12h.027a4.6 4.6 0 0 0-.017.8A2 2 0 0 0 8 13c-1.573 0-3.022-.289-4.096-.777A5 5 0 0 1 3 11.698V13c0 .374.356.875 1.318 1.313C5.234 14.729 6.536 15 8 15c0 .363.097.704.266.997Q8.134 16.001 8 16c-1.573 0-3.022-.289-4.096-.777C2.875 14.755 2 14.007 2 13V4c0-1.007.875-1.755 1.904-2.223C4.978 1.289 6.427 1 8 1s3.022.289 4.096.777C13.125 2.245 14 2.993 14 4v4.256a4.5 4.5 0 0 0-1.753-.249C12.787 7.654 13 7.289 13 7zm-8.682-3.01C3.356 3.124 3 3.625 3 4c0 .374.356.875 1.318 1.313C5.234 5.729 6.536 6 8 6s2.766-.27 3.682-.687C12.644 4.875 13 4.373 13 4c0-.374-.356-.875-1.318-1.313C10.766 2.271 9.464 2 8 2s-2.766.27-3.682.687Z"/>
+ <path d="M9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-slash.svg b/vendor/twbs/bootstrap-icons/icons/database-slash.svg
new file mode 100644
index 000000000..e0cc9f2e2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-slash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-slash" viewBox="0 0 16 16">
+ <path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95Z"/>
+ <path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-up.svg b/vendor/twbs/bootstrap-icons/icons/database-up.svg
new file mode 100644
index 000000000..63f7a1050
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-up" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0"/>
+ <path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database-x.svg b/vendor/twbs/bootstrap-icons/icons/database-x.svg
new file mode 100644
index 000000000..f97779bd1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database-x" viewBox="0 0 16 16">
+ <path d="M12.096 6.223A5 5 0 0 0 13 5.698V7c0 .289-.213.654-.753 1.007a4.5 4.5 0 0 1 1.753.25V4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16c.536 0 1.058-.034 1.555-.097a4.5 4.5 0 0 1-.813-.927Q8.378 15 8 15c-1.464 0-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13h.027a4.6 4.6 0 0 1 0-1H8c-1.464 0-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10q.393 0 .774-.024a4.5 4.5 0 0 1 1.102-1.132C9.298 8.944 8.666 9 8 9c-1.464 0-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777M3 4c0-.374.356-.875 1.318-1.313C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/database.svg b/vendor/twbs/bootstrap-icons/icons/database.svg
new file mode 100644
index 000000000..231c50cd4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/database.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-database" viewBox="0 0 16 16">
+ <path d="M4.318 2.687C5.234 2.271 6.536 2 8 2s2.766.27 3.682.687C12.644 3.125 13 3.627 13 4c0 .374-.356.875-1.318 1.313C10.766 5.729 9.464 6 8 6s-2.766-.27-3.682-.687C3.356 4.875 3 4.373 3 4c0-.374.356-.875 1.318-1.313M13 5.698V7c0 .374-.356.875-1.318 1.313C10.766 8.729 9.464 9 8 9s-2.766-.27-3.682-.687C3.356 7.875 3 7.373 3 7V5.698c.271.202.58.378.904.525C4.978 6.711 6.427 7 8 7s3.022-.289 4.096-.777A5 5 0 0 0 13 5.698M14 4c0-1.007-.875-1.755-1.904-2.223C11.022 1.289 9.573 1 8 1s-3.022.289-4.096.777C2.875 2.245 2 2.993 2 4v9c0 1.007.875 1.755 1.904 2.223C4.978 15.71 6.427 16 8 16s3.022-.289 4.096-.777C13.125 14.755 14 14.007 14 13zm-1 4.698V10c0 .374-.356.875-1.318 1.313C10.766 11.729 9.464 12 8 12s-2.766-.27-3.682-.687C3.356 10.875 3 10.373 3 10V8.698c.271.202.58.378.904.525C4.978 9.71 6.427 10 8 10s3.022-.289 4.096-.777A5 5 0 0 0 13 8.698m0 3V13c0 .374-.356.875-1.318 1.313C10.766 14.729 9.464 15 8 15s-2.766-.27-3.682-.687C3.356 13.875 3 13.373 3 13v-1.302c.271.202.58.378.904.525C4.978 12.71 6.427 13 8 13s3.022-.289 4.096-.777c.324-.147.633-.323.904-.525"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/device-hdd-fill.svg b/vendor/twbs/bootstrap-icons/icons/device-hdd-fill.svg
new file mode 100644
index 000000000..d5380c070
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/device-hdd-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-device-hdd-fill" viewBox="0 0 16 16">
+ <path d="M8.785 9.896A3.001 3.001 0 0 0 8 4a3 3 0 0 0-.891 5.865c.667-.44 1.396-.91 1.955-1.268.224-.144.483.115.34.34zM9 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm9 1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 13a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-9.5.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1M4 1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m2.882 11.177a1.102 1.102 0 0 1-1.56-1.559c.1-.098.396-.314.795-.588a4 4 0 1 1 1.946.47c-.537.813-1.02 1.515-1.181 1.677"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/device-hdd.svg b/vendor/twbs/bootstrap-icons/icons/device-hdd.svg
new file mode 100644
index 000000000..5163a585d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/device-hdd.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-device-hdd" viewBox="0 0 16 16">
+ <path d="M12 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 11a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-7.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M5 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M8 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+ <path d="M12 7a4 4 0 0 1-3.937 4c-.537.813-1.02 1.515-1.181 1.677a1.102 1.102 0 0 1-1.56-1.559c.1-.098.396-.314.795-.588A4 4 0 0 1 8 3a4 4 0 0 1 4 4m-1 0a3 3 0 1 0-3.891 2.865c.667-.44 1.396-.91 1.955-1.268.224-.144.483.115.34.34l-.62.96A3 3 0 0 0 11 7"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/device-ssd-fill.svg b/vendor/twbs/bootstrap-icons/icons/device-ssd-fill.svg
new file mode 100644
index 000000000..0d1f9c34d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/device-ssd-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-device-ssd-fill" viewBox="0 0 16 16">
+ <path d="M5 8V4h6v4z"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m9 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M3.5 11a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m9.5-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M4.75 3h6.5a.75.75 0 0 1 .75.75v4.5a.75.75 0 0 1-.75.75h-6.5A.75.75 0 0 1 4 8.25v-4.5A.75.75 0 0 1 4.75 3M5 12h6a1 1 0 0 1 1 1v2h-1v-2h-.75v2h-1v-2H8.5v2h-1v-2h-.75v2h-1v-2H5v2H4v-2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/device-ssd.svg b/vendor/twbs/bootstrap-icons/icons/device-ssd.svg
new file mode 100644
index 000000000..8405f21f8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/device-ssd.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-device-ssd" viewBox="0 0 16 16">
+ <path d="M4.75 4a.75.75 0 0 0-.75.75v3.5c0 .414.336.75.75.75h6.5a.75.75 0 0 0 .75-.75v-3.5a.75.75 0 0 0-.75-.75zM5 8V5h6v3zm0-5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m7 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M4.5 11a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m7 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm11 12V2a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1v-2a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2a1 1 0 0 0 1-1m-7.25 1v-2H5v2zm1.75 0v-2h-.75v2zm1.75 0v-2H8.5v2zM11 13h-.75v2H11z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/diagram-2-fill.svg b/vendor/twbs/bootstrap-icons/icons/diagram-2-fill.svg
new file mode 100644
index 000000000..397ae1534
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/diagram-2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-diagram-2-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H11a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 5 7h2.5V6A1.5 1.5 0 0 1 6 4.5zm-3 8A1.5 1.5 0 0 1 4.5 10h1A1.5 1.5 0 0 1 7 11.5v1A1.5 1.5 0 0 1 5.5 14h-1A1.5 1.5 0 0 1 3 12.5zm6 0a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1A1.5 1.5 0 0 1 9 12.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/diagram-2.svg b/vendor/twbs/bootstrap-icons/icons/diagram-2.svg
new file mode 100644
index 000000000..a6e5439e3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/diagram-2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-diagram-2" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H11a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 5 7h2.5V6A1.5 1.5 0 0 1 6 4.5zM8.5 5a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5zM3 11.5A1.5 1.5 0 0 1 4.5 10h1A1.5 1.5 0 0 1 7 11.5v1A1.5 1.5 0 0 1 5.5 14h-1A1.5 1.5 0 0 1 3 12.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm4.5.5a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1A1.5 1.5 0 0 1 9 12.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/diagram-3-fill.svg b/vendor/twbs/bootstrap-icons/icons/diagram-3-fill.svg
new file mode 100644
index 000000000..7e4742365
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/diagram-3-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-diagram-3-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H14a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 2 7h5.5V6A1.5 1.5 0 0 1 6 4.5zm-6 8A1.5 1.5 0 0 1 1.5 10h1A1.5 1.5 0 0 1 4 11.5v1A1.5 1.5 0 0 1 2.5 14h-1A1.5 1.5 0 0 1 0 12.5zm6 0A1.5 1.5 0 0 1 7.5 10h1a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5zm6 0a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/diagram-3.svg b/vendor/twbs/bootstrap-icons/icons/diagram-3.svg
new file mode 100644
index 000000000..ee3fd6f2d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/diagram-3.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-diagram-3" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H14a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 2 7h5.5V6A1.5 1.5 0 0 1 6 4.5zM8.5 5a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5zM0 11.5A1.5 1.5 0 0 1 1.5 10h1A1.5 1.5 0 0 1 4 11.5v1A1.5 1.5 0 0 1 2.5 14h-1A1.5 1.5 0 0 1 0 12.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm4.5.5A1.5 1.5 0 0 1 7.5 10h1a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm4.5.5a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/diamond-fill.svg b/vendor/twbs/bootstrap-icons/icons/diamond-fill.svg
new file mode 100644
index 000000000..1f86d1f7f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/diamond-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-diamond-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/diamond-half.svg b/vendor/twbs/bootstrap-icons/icons/diamond-half.svg
new file mode 100644
index 000000000..68254b644
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/diamond-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-diamond-half" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM8 .989c.127 0 .253.049.35.145l6.516 6.516a.495.495 0 0 1 0 .7L8.35 14.866a.5.5 0 0 1-.35.145z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/diamond.svg b/vendor/twbs/bootstrap-icons/icons/diamond.svg
new file mode 100644
index 000000000..44e2855c5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/diamond.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-diamond" viewBox="0 0 16 16">
+ <path d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-1-fill.svg b/vendor/twbs/bootstrap-icons/icons/dice-1-fill.svg
new file mode 100644
index 000000000..a32e2cf9f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-1-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-1-fill" viewBox="0 0 16 16">
+ <path d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3zm5 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-1.svg b/vendor/twbs/bootstrap-icons/icons/dice-1.svg
new file mode 100644
index 000000000..afc64b0e6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-1.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-1" viewBox="0 0 16 16">
+ <circle cx="8" cy="8" r="1.5"/>
+ <path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-2-fill.svg b/vendor/twbs/bootstrap-icons/icons/dice-2-fill.svg
new file mode 100644
index 000000000..131013e1f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-2-fill" viewBox="0 0 16 16">
+ <path d="M0 3a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3zm5.5 1a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0m6.5 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-2.svg b/vendor/twbs/bootstrap-icons/icons/dice-2.svg
new file mode 100644
index 000000000..ba1a79ce7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-2" viewBox="0 0 16 16">
+ <path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/>
+ <path d="M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-3-fill.svg b/vendor/twbs/bootstrap-icons/icons/dice-3-fill.svg
new file mode 100644
index 000000000..158065db3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-3-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-3-fill" viewBox="0 0 16 16">
+ <path d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3zm2.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M8 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-3.svg b/vendor/twbs/bootstrap-icons/icons/dice-3.svg
new file mode 100644
index 000000000..b64c675c1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-3.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-3" viewBox="0 0 16 16">
+ <path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/>
+ <path d="M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-4-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-4-fill.svg b/vendor/twbs/bootstrap-icons/icons/dice-4-fill.svg
new file mode 100644
index 000000000..7cf6e2c7a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-4-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-4-fill" viewBox="0 0 16 16">
+ <path d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3zm1 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m8 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m1.5 6.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M4 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-4.svg b/vendor/twbs/bootstrap-icons/icons/dice-4.svg
new file mode 100644
index 000000000..bd8bbf7c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-4.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-4" viewBox="0 0 16 16">
+ <path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/>
+ <path d="M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-5-fill.svg b/vendor/twbs/bootstrap-icons/icons/dice-5-fill.svg
new file mode 100644
index 000000000..289cb4592
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-5-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-5-fill" viewBox="0 0 16 16">
+ <path d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3zm2.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M8 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-5.svg b/vendor/twbs/bootstrap-icons/icons/dice-5.svg
new file mode 100644
index 000000000..cc96a3595
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-5.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-5" viewBox="0 0 16 16">
+ <path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/>
+ <path d="M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m4-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-6-fill.svg b/vendor/twbs/bootstrap-icons/icons/dice-6-fill.svg
new file mode 100644
index 000000000..9b3d652ea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-6-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-6-fill" viewBox="0 0 16 16">
+ <path d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3zm1 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m8 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m1.5 6.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M12 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M4 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dice-6.svg b/vendor/twbs/bootstrap-icons/icons/dice-6.svg
new file mode 100644
index 000000000..47ba0aac6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dice-6.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dice-6" viewBox="0 0 16 16">
+ <path d="M13 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3z"/>
+ <path d="M5.5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m8 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-8 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/disc-fill.svg b/vendor/twbs/bootstrap-icons/icons/disc-fill.svg
new file mode 100644
index 000000000..0d2d7f1e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/disc-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-disc-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-6 0a2 2 0 1 0-4 0 2 2 0 0 0 4 0M4 8a4 4 0 0 1 4-4 .5.5 0 0 0 0-1 5 5 0 0 0-5 5 .5.5 0 0 0 1 0m9 0a.5.5 0 1 0-1 0 4 4 0 0 1-4 4 .5.5 0 0 0 0 1 5 5 0 0 0 5-5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/disc.svg b/vendor/twbs/bootstrap-icons/icons/disc.svg
new file mode 100644
index 000000000..360034cf8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/disc.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-disc" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0M8 4a4 4 0 0 0-4 4 .5.5 0 0 1-1 0 5 5 0 0 1 5-5 .5.5 0 0 1 0 1m4.5 3.5a.5.5 0 0 1 .5.5 5 5 0 0 1-5 5 .5.5 0 0 1 0-1 4 4 0 0 0 4-4 .5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/discord.svg b/vendor/twbs/bootstrap-icons/icons/discord.svg
new file mode 100644
index 000000000..9905364b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/discord.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-discord" viewBox="0 0 16 16">
+ <path d="M13.545 2.907a13.2 13.2 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.2 12.2 0 0 0-3.658 0 8 8 0 0 0-.412-.833.05.05 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.04.04 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032q.003.022.021.037a13.3 13.3 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019q.463-.63.818-1.329a.05.05 0 0 0-.01-.059l-.018-.011a9 9 0 0 1-1.248-.595.05.05 0 0 1-.02-.066l.015-.019q.127-.095.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.05.05 0 0 1 .053.007q.121.1.248.195a.05.05 0 0 1-.004.085 8 8 0 0 1-1.249.594.05.05 0 0 0-.03.03.05.05 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.2 13.2 0 0 0 4.001-2.02.05.05 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.03.03 0 0 0-.02-.019m-8.198 7.307c-.789 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612m5.316 0c-.788 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/display-fill.svg b/vendor/twbs/bootstrap-icons/icons/display-fill.svg
new file mode 100644
index 000000000..ed8e17efc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/display-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-display-fill" viewBox="0 0 16 16">
+ <path d="M6 12q0 1-.25 1.5H5a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1h-.75Q10 13 10 12h4c2 0 2-2 2-2V4c0-2-2-2-2-2H2C0 2 0 4 0 4v6c0 2 2 2 2 2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/display.svg b/vendor/twbs/bootstrap-icons/icons/display.svg
new file mode 100644
index 000000000..40a7d4d52
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/display.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-display" viewBox="0 0 16 16">
+ <path d="M0 4s0-2 2-2h12s2 0 2 2v6s0 2-2 2h-4q0 1 .25 1.5H11a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1h.75Q6 13 6 12H2s-2 0-2-2zm1.398-.855a.76.76 0 0 0-.254.302A1.5 1.5 0 0 0 1 4.01V10c0 .325.078.502.145.602q.105.156.302.254a1.5 1.5 0 0 0 .538.143L2.01 11H14c.325 0 .502-.078.602-.145a.76.76 0 0 0 .254-.302 1.5 1.5 0 0 0 .143-.538L15 9.99V4c0-.325-.078-.502-.145-.602a.76.76 0 0 0-.302-.254A1.5 1.5 0 0 0 13.99 3H2c-.325 0-.502.078-.602.145"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/displayport-fill.svg b/vendor/twbs/bootstrap-icons/icons/displayport-fill.svg
new file mode 100644
index 000000000..503a96091
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/displayport-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-displayport-fill" viewBox="0 0 16 16">
+ <path d="M1 5a1 1 0 0 0-1 1v3.191a1 1 0 0 0 .553.894l1.618.81a1 1 0 0 0 .447.105H15a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm1.5 2h11a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8H3v.5a.5.5 0 0 1-1 0v-1a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/displayport.svg b/vendor/twbs/bootstrap-icons/icons/displayport.svg
new file mode 100644
index 000000000..6b9e0bfd3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/displayport.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-displayport" viewBox="0 0 16 16">
+ <path d="M2.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 1 0V8h10v.5a.5.5 0 0 0 1 0v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M1 5a1 1 0 0 0-1 1v3.191a1 1 0 0 0 .553.894l1.618.81a1 1 0 0 0 .447.105H15a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm0 1h14v4H2.618L1 9.191z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/distribute-horizontal.svg b/vendor/twbs/bootstrap-icons/icons/distribute-horizontal.svg
new file mode 100644
index 000000000..3f7044f0c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/distribute-horizontal.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-distribute-horizontal" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5m-13 0a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5"/>
+ <path d="M6 13a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/distribute-vertical.svg b/vendor/twbs/bootstrap-icons/icons/distribute-vertical.svg
new file mode 100644
index 000000000..cb77d1ef6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/distribute-vertical.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-distribute-vertical" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 1.5a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 0-1h-13a.5.5 0 0 0-.5.5m0 13a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 0-1h-13a.5.5 0 0 0-.5.5"/>
+ <path d="M2 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/door-closed-fill.svg b/vendor/twbs/bootstrap-icons/icons/door-closed-fill.svg
new file mode 100644
index 000000000..1cad66bb0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/door-closed-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-door-closed-fill" viewBox="0 0 16 16">
+ <path d="M12 1a1 1 0 0 1 1 1v13h1.5a.5.5 0 0 1 0 1h-13a.5.5 0 0 1 0-1H3V2a1 1 0 0 1 1-1zm-2 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/door-closed.svg b/vendor/twbs/bootstrap-icons/icons/door-closed.svg
new file mode 100644
index 000000000..e20b918fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/door-closed.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-door-closed" viewBox="0 0 16 16">
+ <path d="M3 2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v13h1.5a.5.5 0 0 1 0 1h-13a.5.5 0 0 1 0-1H3zm1 13h8V2H4z"/>
+ <path d="M9 9a1 1 0 1 0 2 0 1 1 0 0 0-2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/door-open-fill.svg b/vendor/twbs/bootstrap-icons/icons/door-open-fill.svg
new file mode 100644
index 000000000..38eaff070
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/door-open-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-door-open-fill" viewBox="0 0 16 16">
+ <path d="M1.5 15a.5.5 0 0 0 0 1h13a.5.5 0 0 0 0-1H13V2.5A1.5 1.5 0 0 0 11.5 1H11V.5a.5.5 0 0 0-.57-.495l-7 1A.5.5 0 0 0 3 1.5V15zM11 2h.5a.5.5 0 0 1 .5.5V15h-1zm-2.5 8c-.276 0-.5-.448-.5-1s.224-1 .5-1 .5.448.5 1-.224 1-.5 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/door-open.svg b/vendor/twbs/bootstrap-icons/icons/door-open.svg
new file mode 100644
index 000000000..328f35366
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/door-open.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-door-open" viewBox="0 0 16 16">
+ <path d="M8.5 10c-.276 0-.5-.448-.5-1s.224-1 .5-1 .5.448.5 1-.224 1-.5 1"/>
+ <path d="M10.828.122A.5.5 0 0 1 11 .5V1h.5A1.5 1.5 0 0 1 13 2.5V15h1.5a.5.5 0 0 1 0 1h-13a.5.5 0 0 1 0-1H3V1.5a.5.5 0 0 1 .43-.495l7-1a.5.5 0 0 1 .398.117M11.5 2H11v13h1V2.5a.5.5 0 0 0-.5-.5M4 1.934V15h6V1.077z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dot.svg b/vendor/twbs/bootstrap-icons/icons/dot.svg
new file mode 100644
index 000000000..edc674e52
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dot.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dot" viewBox="0 0 16 16">
+ <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/download.svg b/vendor/twbs/bootstrap-icons/icons/download.svg
new file mode 100644
index 000000000..90a34a3b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/download.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-download" viewBox="0 0 16 16">
+ <path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/>
+ <path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dpad-fill.svg b/vendor/twbs/bootstrap-icons/icons/dpad-fill.svg
new file mode 100644
index 000000000..1c1153a8f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dpad-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dpad-fill" viewBox="0 0 16 16">
+ <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v3a.5.5 0 0 1-.5.5h-3A1.5 1.5 0 0 0 0 6.5v3A1.5 1.5 0 0 0 1.5 11h3a.5.5 0 0 1 .5.5v3A1.5 1.5 0 0 0 6.5 16h3a1.5 1.5 0 0 0 1.5-1.5v-3a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 0 16 9.5v-3A1.5 1.5 0 0 0 14.5 5h-3a.5.5 0 0 1-.5-.5v-3A1.5 1.5 0 0 0 9.5 0zm1.288 2.34a.25.25 0 0 1 .424 0l.799 1.278A.25.25 0 0 1 8.799 4H7.201a.25.25 0 0 1-.212-.382zm0 11.32-.799-1.277A.25.25 0 0 1 7.201 12H8.8a.25.25 0 0 1 .212.383l-.799 1.278a.25.25 0 0 1-.424 0Zm-4.17-4.65-1.279-.798a.25.25 0 0 1 0-.424l1.279-.799A.25.25 0 0 1 4 7.201V8.8a.25.25 0 0 1-.382.212Zm10.043-.798-1.278.799A.25.25 0 0 1 12 8.799V7.2a.25.25 0 0 1 .383-.212l1.278.799a.25.25 0 0 1 0 .424Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dpad.svg b/vendor/twbs/bootstrap-icons/icons/dpad.svg
new file mode 100644
index 000000000..71ddb24bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dpad.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dpad" viewBox="0 0 16 16">
+ <path d="m7.788 2.34-.799 1.278A.25.25 0 0 0 7.201 4h1.598a.25.25 0 0 0 .212-.382l-.799-1.279a.25.25 0 0 0-.424 0Zm0 11.32-.799-1.277A.25.25 0 0 1 7.201 12h1.598a.25.25 0 0 1 .212.383l-.799 1.278a.25.25 0 0 1-.424 0ZM3.617 9.01 2.34 8.213a.25.25 0 0 1 0-.424l1.278-.799A.25.25 0 0 1 4 7.201V8.8a.25.25 0 0 1-.383.212Zm10.043-.798-1.277.799A.25.25 0 0 1 12 8.799V7.2a.25.25 0 0 1 .383-.212l1.278.799a.25.25 0 0 1 0 .424Z"/>
+ <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v3a.5.5 0 0 1-.5.5h-3A1.5 1.5 0 0 0 0 6.5v3A1.5 1.5 0 0 0 1.5 11h3a.5.5 0 0 1 .5.5v3A1.5 1.5 0 0 0 6.5 16h3a1.5 1.5 0 0 0 1.5-1.5v-3a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 0 16 9.5v-3A1.5 1.5 0 0 0 14.5 5h-3a.5.5 0 0 1-.5-.5v-3A1.5 1.5 0 0 0 9.5 0zM6 1.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v3A1.5 1.5 0 0 0 11.5 6h3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-3a1.5 1.5 0 0 0-1.5 1.5v3a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-3A1.5 1.5 0 0 0 4.5 10h-3a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 0 6 4.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dribbble.svg b/vendor/twbs/bootstrap-icons/icons/dribbble.svg
new file mode 100644
index 000000000..725ff7fe1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dribbble.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dribbble" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 0C3.584 0 0 3.584 0 8s3.584 8 8 8c4.408 0 8-3.584 8-8s-3.592-8-8-8m5.284 3.688a6.8 6.8 0 0 1 1.545 4.251c-.226-.043-2.482-.503-4.755-.217-.052-.112-.096-.234-.148-.355-.139-.33-.295-.668-.451-.99 2.516-1.023 3.662-2.498 3.81-2.69zM8 1.18c1.735 0 3.323.65 4.53 1.718-.122.174-1.155 1.553-3.584 2.464-1.12-2.056-2.36-3.74-2.551-4A7 7 0 0 1 8 1.18m-2.907.642A43 43 0 0 1 7.627 5.77c-3.193.85-6.013.833-6.317.833a6.87 6.87 0 0 1 3.783-4.78zM1.163 8.01V7.8c.295.01 3.61.053 7.02-.971.199.381.381.772.555 1.162l-.27.078c-3.522 1.137-5.396 4.243-5.553 4.504a6.82 6.82 0 0 1-1.752-4.564zM8 14.837a6.8 6.8 0 0 1-4.19-1.44c.12-.252 1.509-2.924 5.361-4.269.018-.009.026-.009.044-.017a28.3 28.3 0 0 1 1.457 5.18A6.7 6.7 0 0 1 8 14.837m3.81-1.171c-.07-.417-.435-2.412-1.328-4.868 2.143-.338 4.017.217 4.251.295a6.77 6.77 0 0 1-2.924 4.573z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/dropbox.svg b/vendor/twbs/bootstrap-icons/icons/dropbox.svg
new file mode 100644
index 000000000..d052f25a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/dropbox.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dropbox" viewBox="0 0 16 16">
+ <path d="M8.01 4.555 4.005 7.11 8.01 9.665 4.005 12.22 0 9.651l4.005-2.555L0 4.555 4.005 2zm-4.026 8.487 4.006-2.555 4.005 2.555-4.005 2.555zm4.026-3.39 4.005-2.556L8.01 4.555 11.995 2 16 4.555 11.995 7.11 16 9.665l-4.005 2.555z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/droplet-fill.svg b/vendor/twbs/bootstrap-icons/icons/droplet-fill.svg
new file mode 100644
index 000000000..85feddf95
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/droplet-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-droplet-fill" viewBox="0 0 16 16">
+ <path d="M8 16a6 6 0 0 0 6-6c0-1.655-1.122-2.904-2.432-4.362C10.254 4.176 8.75 2.503 8 0c0 0-6 5.686-6 10a6 6 0 0 0 6 6M6.646 4.646l.708.708c-.29.29-1.128 1.311-1.907 2.87l-.894-.448c.82-1.641 1.717-2.753 2.093-3.13"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/droplet-half.svg b/vendor/twbs/bootstrap-icons/icons/droplet-half.svg
new file mode 100644
index 000000000..bcd1c7637
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/droplet-half.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-droplet-half" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.21.8C7.69.295 8 0 8 0q.164.544.371 1.038c.812 1.946 2.073 3.35 3.197 4.6C12.878 7.096 14 8.345 14 10a6 6 0 0 1-12 0C2 6.668 5.58 2.517 7.21.8m.413 1.021A31 31 0 0 0 5.794 3.99c-.726.95-1.436 2.008-1.96 3.07C3.304 8.133 3 9.138 3 10c0 0 2.5 1.5 5 .5s5-.5 5-.5c0-1.201-.796-2.157-2.181-3.7l-.03-.032C9.75 5.11 8.5 3.72 7.623 1.82z"/>
+ <path fill-rule="evenodd" d="M4.553 7.776c.82-1.641 1.717-2.753 2.093-3.13l.708.708c-.29.29-1.128 1.311-1.907 2.87z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/droplet.svg b/vendor/twbs/bootstrap-icons/icons/droplet.svg
new file mode 100644
index 000000000..204ec672e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/droplet.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-droplet" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.21.8C7.69.295 8 0 8 0q.164.544.371 1.038c.812 1.946 2.073 3.35 3.197 4.6C12.878 7.096 14 8.345 14 10a6 6 0 0 1-12 0C2 6.668 5.58 2.517 7.21.8m.413 1.021A31 31 0 0 0 5.794 3.99c-.726.95-1.436 2.008-1.96 3.07C3.304 8.133 3 9.138 3 10a5 5 0 0 0 10 0c0-1.201-.796-2.157-2.181-3.7l-.03-.032C9.75 5.11 8.5 3.72 7.623 1.82z"/>
+ <path fill-rule="evenodd" d="M4.553 7.776c.82-1.641 1.717-2.753 2.093-3.13l.708.708c-.29.29-1.128 1.311-1.907 2.87z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/duffle-fill.svg b/vendor/twbs/bootstrap-icons/icons/duffle-fill.svg
new file mode 100644
index 000000000..885ee80d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/duffle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-duffle-fill" viewBox="0 0 16 16">
+ <path d="M5.007 4.097q.011-.146.027-.298c.05-.464.141-.979.313-1.45.169-.465.432-.933.853-1.249 1.115-.836 2.485-.836 3.6 0 .42.316.684.784.853 1.25.171.47.263.985.313 1.449q.016.15.027.298c1.401.194 2.65.531 3.525 1.012 2.126 1.169 1.446 6.095 1.089 8.018a.954.954 0 0 1-.95.772H1.343a.954.954 0 0 1-.95-.772c-.357-1.923-1.037-6.85 1.09-8.018.873-.48 2.123-.818 3.524-1.012M4.05 5.633a22 22 0 0 0-1.565.352l-.091.026-.034.01a.5.5 0 0 0 .282.959l.005-.002.02-.005.08-.023a21 21 0 0 1 1.486-.334A21 21 0 0 1 8 6.25c1.439 0 2.781.183 3.767.367a21 21 0 0 1 1.567.356l.02.005.004.001a.5.5 0 0 0 .283-.959h-.003l-.006-.002-.025-.007a15 15 0 0 0-.43-.113 22 22 0 0 0-1.226-.265A22 22 0 0 0 8 5.25c-1.518 0-2.926.192-3.95.383M6.8 1.9c-.203.153-.377.42-.513.791a5.3 5.3 0 0 0-.265 1.292 35 35 0 0 1 1.374-.076c.866-.022 1.742.003 2.584.076a5.3 5.3 0 0 0-.266-1.292c-.135-.372-.309-.638-.513-.791-.76-.57-1.64-.57-2.4 0Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/duffle.svg b/vendor/twbs/bootstrap-icons/icons/duffle.svg
new file mode 100644
index 000000000..1180de846
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/duffle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-duffle" viewBox="0 0 16 16">
+ <path d="M8 5.75c1.388 0 2.673.193 3.609.385a18 18 0 0 1 1.43.354l.112.034.002.001h.001a.5.5 0 0 1-.308.952l-.004-.002-.018-.005a17 17 0 0 0-1.417-.354A17.3 17.3 0 0 0 8 6.75a17.3 17.3 0 0 0-3.408.365 17 17 0 0 0-1.416.354l-.018.005-.003.001a.5.5 0 1 1-.308-.95A17.3 17.3 0 0 1 8 5.75"/>
+ <path d="M5.229 2.722c-.126.461-.19.945-.222 1.375-1.401.194-2.65.531-3.525 1.012C-.644 6.278.036 11.204.393 13.127a.954.954 0 0 0 .95.772h13.314a.954.954 0 0 0 .95-.772c.357-1.923 1.037-6.85-1.09-8.018-.873-.48-2.123-.818-3.524-1.012a7.4 7.4 0 0 0-.222-1.375c-.162-.593-.445-1.228-.971-1.622-1.115-.836-2.485-.836-3.6 0-.526.394-.81 1.03-.971 1.622M9.2 1.9c.26.195.466.57.606 1.085.088.322.142.667.173.998a23.3 23.3 0 0 0-3.958 0 6 6 0 0 1 .173-.998c.14-.515.346-.89.606-1.085.76-.57 1.64-.57 2.4 0M8 4.9c2.475 0 4.793.402 6.036 1.085.238.13.472.406.655.93.183.522.28 1.195.303 1.952.047 1.486-.189 3.088-.362 4.032H1.368c-.173-.944-.409-2.545-.362-4.032.024-.757.12-1.43.303-1.952.183-.524.417-.8.655-.93C3.207 5.302 5.525 4.9 8 4.9"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ear-fill.svg b/vendor/twbs/bootstrap-icons/icons/ear-fill.svg
new file mode 100644
index 000000000..2d135d6de
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ear-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ear-fill" viewBox="0 0 16 16">
+ <path d="M8.5 0A5.5 5.5 0 0 0 3 5.5v7.047a3.453 3.453 0 0 0 6.687 1.212l.51-1.363a4.6 4.6 0 0 1 .67-1.197l2.008-2.581A5.34 5.34 0 0 0 8.66 0zM7 5.5v2.695q.168-.09.332-.192c.327-.208.577-.44.72-.727a.5.5 0 1 1 .895.448c-.256.513-.673.865-1.079 1.123A9 9 0 0 1 7 9.313V11.5a.5.5 0 0 1-1 0v-6a2.5 2.5 0 0 1 5 0V6a.5.5 0 0 1-1 0v-.5a1.5 1.5 0 1 0-3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ear.svg b/vendor/twbs/bootstrap-icons/icons/ear.svg
new file mode 100644
index 000000000..061fe2f6b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ear.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ear" viewBox="0 0 16 16">
+ <path d="M8.5 1A4.5 4.5 0 0 0 4 5.5v7.047a2.453 2.453 0 0 0 4.75.861l.512-1.363a5.6 5.6 0 0 1 .816-1.46l2.008-2.581A4.34 4.34 0 0 0 8.66 1zM3 5.5A5.5 5.5 0 0 1 8.5 0h.16a5.34 5.34 0 0 1 4.215 8.618l-2.008 2.581a4.6 4.6 0 0 0-.67 1.197l-.51 1.363A3.453 3.453 0 0 1 3 12.547zM8.5 4A1.5 1.5 0 0 0 7 5.5v2.695q.168-.09.332-.192c.327-.208.577-.44.72-.727a.5.5 0 1 1 .895.448c-.256.513-.673.865-1.079 1.123A9 9 0 0 1 7 9.313V11.5a.5.5 0 0 1-1 0v-6a2.5 2.5 0 0 1 5 0V6a.5.5 0 0 1-1 0v-.5A1.5 1.5 0 0 0 8.5 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/earbuds.svg b/vendor/twbs/bootstrap-icons/icons/earbuds.svg
new file mode 100644
index 000000000..923bfca69
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/earbuds.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-earbuds" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.825 4.138c.596 2.141-.36 3.593-2.389 4.117a4.4 4.4 0 0 1-2.018.054c-.048-.01.9 2.778 1.522 4.61l.41 1.205a.52.52 0 0 1-.346.659l-.593.19a.55.55 0 0 1-.69-.34L.184 6.99c-.696-2.137.662-4.309 2.564-4.8 2.029-.523 3.402 0 4.076 1.948zm-.868 2.221c.43-.112.561-.993.292-1.969-.269-.975-.836-1.675-1.266-1.563s-.561.994-.292 1.969.836 1.675 1.266 1.563m3.218-2.221c-.596 2.141.36 3.593 2.389 4.117a4.4 4.4 0 0 0 2.018.054c.048-.01-.9 2.778-1.522 4.61l-.41 1.205a.52.52 0 0 0 .346.659l.593.19c.289.092.6-.06.69-.34l2.536-7.643c.696-2.137-.662-4.309-2.564-4.8-2.029-.523-3.402 0-4.076 1.948m.868 2.221c-.43-.112-.561-.993-.292-1.969.269-.975.836-1.675 1.266-1.563s.561.994.292 1.969-.836 1.675-1.266 1.563"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/easel-fill.svg b/vendor/twbs/bootstrap-icons/icons/easel-fill.svg
new file mode 100644
index 000000000..808650745
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/easel-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-easel-fill" viewBox="0 0 16 16">
+ <path d="M8.473.337a.5.5 0 0 0-.946 0L6.954 2H2a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h1.85l-1.323 3.837a.5.5 0 1 0 .946.326L4.908 11H7.5v2.5a.5.5 0 0 0 1 0V11h2.592l1.435 4.163a.5.5 0 0 0 .946-.326L12.15 11H14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H9.046z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/easel.svg b/vendor/twbs/bootstrap-icons/icons/easel.svg
new file mode 100644
index 000000000..5c0f5a2ad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/easel.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-easel" viewBox="0 0 16 16">
+ <path d="M8 0a.5.5 0 0 1 .473.337L9.046 2H14a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-1.85l1.323 3.837a.5.5 0 1 1-.946.326L11.092 11H8.5v3a.5.5 0 0 1-1 0v-3H4.908l-1.435 4.163a.5.5 0 1 1-.946-.326L3.85 11H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h4.954L7.527.337A.5.5 0 0 1 8 0M2 3v7h12V3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/easel2-fill.svg b/vendor/twbs/bootstrap-icons/icons/easel2-fill.svg
new file mode 100644
index 000000000..309b43896
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/easel2-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-easel2-fill" viewBox="0 0 16 16">
+ <path d="M8.447.276a.5.5 0 0 0-.894 0L7.19 1H2.5A1.5 1.5 0 0 0 1 2.5V10h14V2.5A1.5 1.5 0 0 0 13.5 1H8.809z"/>
+ <path fill-rule="evenodd" d="M.5 11a.5.5 0 0 0 0 1h2.86l-.845 3.379a.5.5 0 0 0 .97.242L3.89 14h8.22l.405 1.621a.5.5 0 0 0 .97-.242L12.64 12h2.86a.5.5 0 0 0 0-1zm3.64 2 .25-1h7.22l.25 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/easel2.svg b/vendor/twbs/bootstrap-icons/icons/easel2.svg
new file mode 100644
index 000000000..74372fb46
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/easel2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-easel2" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 0a.5.5 0 0 1 .447.276L8.81 1h4.69A1.5 1.5 0 0 1 15 2.5V11h.5a.5.5 0 0 1 0 1h-2.86l.845 3.379a.5.5 0 0 1-.97.242L12.11 14H3.89l-.405 1.621a.5.5 0 0 1-.97-.242L3.36 12H.5a.5.5 0 0 1 0-1H1V2.5A1.5 1.5 0 0 1 2.5 1h4.691l.362-.724A.5.5 0 0 1 8 0M2 11h12V2.5a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0-.5.5zm9.61 1H4.39l-.25 1h7.72z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/easel3-fill.svg b/vendor/twbs/bootstrap-icons/icons/easel3-fill.svg
new file mode 100644
index 000000000..fc547ea28
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/easel3-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-easel3-fill" viewBox="0 0 16 16">
+ <path d="M8.5 12v1.134a1 1 0 1 1-1 0V12h-5A1.5 1.5 0 0 1 1 10.5V3h14v7.5a1.5 1.5 0 0 1-1.5 1.5zm7-10a.5.5 0 0 0 0-1H.5a.5.5 0 0 0 0 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/easel3.svg b/vendor/twbs/bootstrap-icons/icons/easel3.svg
new file mode 100644
index 000000000..f06a8681b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/easel3.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-easel3" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8.5 13.134V12h5a1.5 1.5 0 0 0 1.5-1.5V2h.5a.5.5 0 0 0 0-1H.5a.5.5 0 0 0 0 1H1v8.5A1.5 1.5 0 0 0 2.5 12h5v1.134a1 1 0 1 0 1 0M2 2v8.5a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5V2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/egg-fill.svg b/vendor/twbs/bootstrap-icons/icons/egg-fill.svg
new file mode 100644
index 000000000..b70cf16e6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/egg-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-egg-fill" viewBox="0 0 16 16">
+ <path d="M14 10a6 6 0 0 1-12 0C2 5.686 5 0 8 0s6 5.686 6 10"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/egg-fried.svg b/vendor/twbs/bootstrap-icons/icons/egg-fried.svg
new file mode 100644
index 000000000..b0cefbc5b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/egg-fried.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-egg-fried" viewBox="0 0 16 16">
+ <path d="M8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
+ <path d="M13.997 5.17a5 5 0 0 0-8.101-4.09A5 5 0 0 0 1.28 9.342a5 5 0 0 0 8.336 5.109 3.5 3.5 0 0 0 5.201-4.065 3.001 3.001 0 0 0-.822-5.216zm-1-.034a1 1 0 0 0 .668.977 2.001 2.001 0 0 1 .547 3.478 1 1 0 0 0-.341 1.113 2.5 2.5 0 0 1-3.715 2.905 1 1 0 0 0-1.262.152 4 4 0 0 1-6.67-4.087 1 1 0 0 0-.2-1 4 4 0 0 1 3.693-6.61 1 1 0 0 0 .8-.2 4 4 0 0 1 6.48 3.273z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/egg.svg b/vendor/twbs/bootstrap-icons/icons/egg.svg
new file mode 100644
index 000000000..f23d8d45d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/egg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-egg" viewBox="0 0 16 16">
+ <path d="M8 15a5 5 0 0 1-5-5c0-1.956.69-4.286 1.742-6.12.524-.913 1.112-1.658 1.704-2.164C7.044 1.206 7.572 1 8 1s.956.206 1.554.716c.592.506 1.18 1.251 1.704 2.164C12.31 5.714 13 8.044 13 10a5 5 0 0 1-5 5m0 1a6 6 0 0 0 6-6c0-4.314-3-10-6-10S2 5.686 2 10a6 6 0 0 0 6 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/eject-fill.svg b/vendor/twbs/bootstrap-icons/icons/eject-fill.svg
new file mode 100644
index 000000000..9604988f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/eject-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eject-fill" viewBox="0 0 16 16">
+ <path d="M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H1.656C.78 9.5.326 8.455.926 7.816zM.5 11.5a1 1 0 0 1 1-1h13a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-13a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/eject.svg b/vendor/twbs/bootstrap-icons/icons/eject.svg
new file mode 100644
index 000000000..71a3ab66b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/eject.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eject" viewBox="0 0 16 16">
+ <path d="M7.27 1.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H1.656C.78 9.5.326 8.455.926 7.816zM14.346 8.5 8 1.731 1.654 8.5zM.5 11.5a1 1 0 0 1 1-1h13a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-13a1 1 0 0 1-1-1zm14 0h-13v1h13z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-angry-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-angry-fill.svg
new file mode 100644
index 000000000..d14d92d97
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-angry-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-angry-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M4.053 4.276a.5.5 0 0 1 .67-.223l2 1a.5.5 0 0 1 .166.76c.071.206.111.44.111.687C7 7.328 6.552 8 6 8s-1-.672-1-1.5c0-.408.109-.778.285-1.049l-1.009-.504a.5.5 0 0 1-.223-.67zm.232 8.157a.5.5 0 0 1-.183-.683A4.5 4.5 0 0 1 8 9.5a4.5 4.5 0 0 1 3.898 2.25.5.5 0 1 1-.866.5A3.5 3.5 0 0 0 8 10.5a3.5 3.5 0 0 0-3.032 1.75.5.5 0 0 1-.683.183M10 8c-.552 0-1-.672-1-1.5 0-.247.04-.48.11-.686a.502.502 0 0 1 .166-.761l2-1a.5.5 0 1 1 .448.894l-1.009.504c.176.27.285.64.285 1.049 0 .828-.448 1.5-1 1.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-angry.svg b/vendor/twbs/bootstrap-icons/icons/emoji-angry.svg
new file mode 100644
index 000000000..ee925fe3d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-angry.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-angry" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M4.285 12.433a.5.5 0 0 0 .683-.183A3.5 3.5 0 0 1 8 10.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.5 4.5 0 0 0 8 9.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683m6.991-8.38a.5.5 0 1 1 .448.894l-1.009.504c.176.27.285.64.285 1.049 0 .828-.448 1.5-1 1.5s-1-.672-1-1.5c0-.247.04-.48.11-.686a.502.502 0 0 1 .166-.761zm-6.552 0a.5.5 0 0 0-.448.894l1.009.504A1.94 1.94 0 0 0 5 6.5C5 7.328 5.448 8 6 8s1-.672 1-1.5c0-.247-.04-.48-.11-.686a.502.502 0 0 0-.166-.761z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-astonished-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-astonished-fill.svg
new file mode 100644
index 000000000..22a566f72
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-astonished-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-astonished-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-4.884-3.978a2.1 2.1 0 0 1 .53.332.5.5 0 0 0 .708-.708h-.001v-.001a2 2 0 0 0-.237-.197 3 3 0 0 0-.606-.345 3 3 0 0 0-2.168-.077.5.5 0 1 0 .316.948 2 2 0 0 1 1.458.048m-4.774-.048a.5.5 0 0 0 .316-.948 3 3 0 0 0-2.167.077 3.1 3.1 0 0 0-.773.478q-.036.03-.07.064l-.002.001a.5.5 0 1 0 .728.689 2 2 0 0 1 .51-.313 2 2 0 0 1 1.458-.048M7 6.5C7 5.672 6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8s1-.672 1-1.5m4 0c0-.828-.448-1.5-1-1.5s-1 .672-1 1.5S9.448 8 10 8s1-.672 1-1.5m-5.247 4.746c-.383.478.08 1.06.687.98q1.56-.202 3.12 0c.606.08 1.07-.502.687-.98C9.747 10.623 8.998 10 8 10s-1.747.623-2.247 1.246"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-astonished.svg b/vendor/twbs/bootstrap-icons/icons/emoji-astonished.svg
new file mode 100644
index 000000000..13f7cdd58
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-astonished.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-astonished" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5M4.884 4.022a2 2 0 0 1 1.458-.048.5.5 0 0 0 .316-.948 3 3 0 0 0-2.167.077 3.1 3.1 0 0 0-.773.478q-.036.03-.07.064l-.002.001a.5.5 0 0 0 .707.708l-.001.002.001-.002a2 2 0 0 1 .122-.1 2 2 0 0 1 .41-.232Zm6.232 0a2 2 0 0 0-1.458-.048.5.5 0 1 1-.316-.948 3 3 0 0 1 2.168.077 3 3 0 0 1 .773.478l.07.064v.001a.5.5 0 0 1-.706.708l.002.002-.002-.002a2 2 0 0 0-.122-.1 2 2 0 0 0-.41-.232ZM8 10c-.998 0-1.747.623-2.247 1.246-.383.478.08 1.06.687.98q1.56-.202 3.12 0c.606.08 1.07-.502.687-.98C9.747 10.623 8.998 10 8 10"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-dizzy-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-dizzy-fill.svg
new file mode 100644
index 000000000..98ab490f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-dizzy-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-dizzy-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M4.146 5.146a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 1 1 .708.708l-.647.646.647.646a.5.5 0 1 1-.708.708L5.5 7.207l-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708m5 0a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708M8 13a2 2 0 1 1 0-4 2 2 0 0 1 0 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-dizzy.svg b/vendor/twbs/bootstrap-icons/icons/emoji-dizzy.svg
new file mode 100644
index 000000000..fcef6027a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-dizzy.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-dizzy" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M9.146 5.146a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708m-5 0a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 1 1 .708.708l-.647.646.647.646a.5.5 0 1 1-.708.708L5.5 7.207l-.646.647a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708M10 11a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-expressionless-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-expressionless-fill.svg
new file mode 100644
index 000000000..17ac34874
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-expressionless-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-expressionless-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M4.5 6h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1m5 0h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1m-5 4h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-expressionless.svg b/vendor/twbs/bootstrap-icons/icons/emoji-expressionless.svg
new file mode 100644
index 000000000..8d7f68fa2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-expressionless.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-expressionless" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M4 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m5 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-frown-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-frown-fill.svg
new file mode 100644
index 000000000..7a16dfb9e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-frown-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-frown-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m-2.715 5.933a.5.5 0 0 1-.183-.683A4.5 4.5 0 0 1 8 9.5a4.5 4.5 0 0 1 3.898 2.25.5.5 0 0 1-.866.5A3.5 3.5 0 0 0 8 10.5a3.5 3.5 0 0 0-3.032 1.75.5.5 0 0 1-.683.183M10 8c-.552 0-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5S10.552 8 10 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-frown.svg b/vendor/twbs/bootstrap-icons/icons/emoji-frown.svg
new file mode 100644
index 000000000..696031b2a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-frown.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-frown" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M4.285 12.433a.5.5 0 0 0 .683-.183A3.5 3.5 0 0 1 8 10.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.5 4.5 0 0 0 8 9.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-grimace-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-grimace-fill.svg
new file mode 100644
index 000000000..6cabf8094
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-grimace-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-grimace-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M7 6.25C7 5.56 6.552 5 6 5s-1 .56-1 1.25.448 1.25 1 1.25 1-.56 1-1.25m3 1.25c.552 0 1-.56 1-1.25S10.552 5 10 5s-1 .56-1 1.25.448 1.25 1 1.25m1.5 4.5a1.5 1.5 0 0 0 1.48-1.25v-.003a1.5 1.5 0 0 0 0-.497A1.5 1.5 0 0 0 11.5 9h-7a1.5 1.5 0 0 0-1.48 1.25v.003a1.5 1.5 0 0 0 0 .497A1.5 1.5 0 0 0 4.5 12zm-7.969-1.25a1 1 0 0 0 .969.75h.25v-.75zm8.938 0a1 1 0 0 1-.969.75h-.25v-.75zM11.5 9.5a1 1 0 0 1 .969.75H11.25V9.5zm-7.969.75A1 1 0 0 1 4.5 9.5h.25v.75zM5.25 11.5h1v-.75h-1zm2.5 0h-1v-.75h1zm1.5 0h-1v-.75h1zm1.5 0h-1v-.75h1zm-1-2h1v.75h-1zm-1.5 0h1v.75h-1zm-1.5 0h1v.75h-1zm-1.5 0h1v.75h-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-grimace.svg b/vendor/twbs/bootstrap-icons/icons/emoji-grimace.svg
new file mode 100644
index 000000000..75a2a09a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-grimace.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-grimace" viewBox="0 0 16 16">
+ <path d="M7 6.25c0 .69-.448 1.25-1 1.25s-1-.56-1-1.25S5.448 5 6 5s1 .56 1 1.25m3 1.25c.552 0 1-.56 1-1.25S10.552 5 10 5s-1 .56-1 1.25.448 1.25 1 1.25m2.98 3.25A1.5 1.5 0 0 1 11.5 12h-7a1.5 1.5 0 0 1-1.48-1.747v-.003A1.5 1.5 0 0 1 4.5 9h7a1.5 1.5 0 0 1 1.48 1.747zm-8.48.75h.25v-.75H3.531a1 1 0 0 0 .969.75m7 0a1 1 0 0 0 .969-.75H11.25v.75zm.969-1.25a1 1 0 0 0-.969-.75h-.25v.75zM4.5 9.5a1 1 0 0 0-.969.75H4.75V9.5zm1.75 2v-.75h-1v.75zm.5 0h1v-.75h-1zm1.5 0h1v-.75h-1zm1.5 0h1v-.75h-1zm1-2h-1v.75h1zm-1.5 0h-1v.75h1zm-1.5 0h-1v.75h1zm-1.5 0h-1v.75h1z"/>
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m0-1A7 7 0 1 1 8 1a7 7 0 0 1 0 14"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-grin-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-grin-fill.svg
new file mode 100644
index 000000000..08c675e69
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-grin-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-grin-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M6.488 7c-.23-.598-.661-1-1.155-1-.493 0-.924.402-1.155 1A2.8 2.8 0 0 1 4 6c0-1.105.597-2 1.333-2 .737 0 1.334.895 1.334 2 0 .364-.065.706-.179 1m5.334 0c-.23-.598-.662-1-1.155-1-.494 0-.925.402-1.155 1a2.8 2.8 0 0 1-.179-1c0-1.105.597-2 1.334-2C11.403 4 12 4.895 12 6c0 .364-.065.706-.178 1M2.696 8.756a.48.48 0 0 1 .382-.118C4.348 8.786 6.448 9 8 9c1.553 0 3.653-.214 4.922-.362a.48.48 0 0 1 .383.118.3.3 0 0 1 .096.29c-.09.47-.242.921-.445 1.342-.263.035-.576.075-.929.115A37 37 0 0 1 8 10.75c-1.475 0-2.934-.123-4.027-.247-.353-.04-.666-.08-.93-.115A5.5 5.5 0 0 1 2.6 9.045a.3.3 0 0 1 .097-.29ZM8 13.5a5.49 5.49 0 0 1-4.256-2.017l.116.014c1.115.126 2.615.253 4.14.253s3.025-.127 4.14-.253l.117-.014A5.49 5.49 0 0 1 8 13.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-grin.svg b/vendor/twbs/bootstrap-icons/icons/emoji-grin.svg
new file mode 100644
index 000000000..32bbf519d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-grin.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-grin" viewBox="0 0 16 16">
+ <path d="M12.946 11.398A6.002 6.002 0 0 1 2.108 9.14c-.114-.595.426-1.068 1.028-.997C4.405 8.289 6.48 8.5 8 8.5s3.595-.21 4.864-.358c.602-.07 1.142.402 1.028.998a5.95 5.95 0 0 1-.946 2.258m-.078-2.25C11.588 9.295 9.539 9.5 8 9.5s-3.589-.205-4.868-.352c.11.468.286.91.517 1.317A37 37 0 0 0 8 10.75a37 37 0 0 0 4.351-.285c.231-.407.407-.85.517-1.317m-1.36 2.416c-1.02.1-2.255.186-3.508.186s-2.488-.086-3.507-.186A5 5 0 0 0 8 13a5 5 0 0 0 3.507-1.436ZM6.488 7c.114-.294.179-.636.179-1 0-1.105-.597-2-1.334-2C4.597 4 4 4.895 4 6c0 .364.065.706.178 1 .23-.598.662-1 1.155-1 .494 0 .925.402 1.155 1M12 6c0 .364-.065.706-.178 1-.23-.598-.662-1-1.155-1-.494 0-.925.402-1.155 1a2.8 2.8 0 0 1-.179-1c0-1.105.597-2 1.334-2C11.403 4 12 4.895 12 6"/>
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m0-1A7 7 0 1 1 8 1a7 7 0 0 1 0 14"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-heart-eyes-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-heart-eyes-fill.svg
new file mode 100644
index 000000000..d34f6e876
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-heart-eyes-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-heart-eyes-fill" viewBox="0 0 16 16">
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M4.756 4.566c.763-1.424 4.02-.12.952 3.434-4.496-1.596-2.35-4.298-.952-3.434m6.559 5.448a.5.5 0 0 1 .548.736A4.5 4.5 0 0 1 7.965 13a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .548-.736h.005l.017.005.067.015.252.055c.215.046.515.108.857.169.693.124 1.522.242 2.152.242s1.46-.118 2.152-.242a27 27 0 0 0 1.109-.224l.067-.015.017-.004.005-.002zm-.07-5.448c1.397-.864 3.543 1.838-.953 3.434-3.067-3.554.19-4.858.952-3.434z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-heart-eyes.svg b/vendor/twbs/bootstrap-icons/icons/emoji-heart-eyes.svg
new file mode 100644
index 000000000..58328228f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-heart-eyes.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-heart-eyes" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M11.315 10.014a.5.5 0 0 1 .548.736A4.5 4.5 0 0 1 7.965 13a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .548-.736h.005l.017.005.067.015.252.055c.215.046.515.108.857.169.693.124 1.522.242 2.152.242s1.46-.118 2.152-.242a27 27 0 0 0 1.109-.224l.067-.015.017-.004.005-.002zM4.756 4.566c.763-1.424 4.02-.12.952 3.434-4.496-1.596-2.35-4.298-.952-3.434m6.488 0c1.398-.864 3.544 1.838-.952 3.434-3.067-3.554.19-4.858.952-3.434"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-kiss-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-kiss-fill.svg
new file mode 100644
index 000000000..15a9cdd3f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-kiss-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-kiss-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M16 8a8 8 0 1 0-2.697 5.99c-.972-.665-1.632-1.356-1.99-2.062-.388-.766-.419-1.561-.075-2.23.496-.97 1.73-1.466 2.762-1.05.65-.262 1.38-.162 1.957.19Q16 8.425 16 8M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m1.512 3.647c-.347.08-.737.198-1.107.319a.5.5 0 1 1-.31-.95c.38-.125.802-.254 1.192-.343.37-.086.78-.153 1.103-.108.16.022.394.085.561.286.188.226.187.497.131.705a1.9 1.9 0 0 1-.31.593q-.115.16-.275.343.16.186.276.347c.142.197.256.397.31.595.055.208.056.479-.132.706-.168.2-.404.262-.563.284-.323.043-.733-.027-1.102-.113a15 15 0 0 1-1.191-.345.5.5 0 1 1 .31-.95c.371.12.761.24 1.109.321q.264.062.446.084a6 6 0 0 0-.502-.584.5.5 0 0 1 .002-.695 5.5 5.5 0 0 0 .5-.577 5 5 0 0 0-.448.082m.766-.086-.006-.002zm.002 1.867-.005.001.006-.002Zm.157-4.685a.5.5 0 0 1-.874-.486A1.93 1.93 0 0 1 10.25 5.75c.73 0 1.356.412 1.687 1.007a.5.5 0 1 1-.874.486.93.93 0 0 0-.813-.493.93.93 0 0 0-.813.493M14 9.828c1.11-1.14 3.884.856 0 3.422-3.884-2.566-1.11-4.562 0-3.421Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-kiss.svg b/vendor/twbs/bootstrap-icons/icons/emoji-kiss.svg
new file mode 100644
index 000000000..2348d9712
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-kiss.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-kiss" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M12.493 13.368a7 7 0 1 1 2.489-4.858c.344.033.68.147.975.328a8 8 0 1 0-2.654 5.152 9 9 0 0 1-.81-.622m-3.731-3.22a13 13 0 0 0-1.107.318.5.5 0 1 1-.31-.95c.38-.125.802-.254 1.192-.343.37-.086.78-.153 1.103-.108.16.022.394.085.561.286.188.226.187.497.131.705a1.9 1.9 0 0 1-.31.593q-.115.16-.275.343.16.186.276.347c.142.197.256.397.31.595.055.208.056.479-.132.706-.168.2-.404.262-.563.284-.323.043-.733-.027-1.102-.113a15 15 0 0 1-1.191-.345.5.5 0 1 1 .31-.95c.371.12.761.24 1.109.321q.264.062.446.084a6 6 0 0 0-.502-.584.5.5 0 0 1 .002-.695 5.5 5.5 0 0 0 .5-.577 5 5 0 0 0-.448.082Zm.766-.087-.003-.001-.003-.001zm.002 1.867-.006.001zM6 8c.552 0 1-.672 1-1.5S6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8m2.757-.563a.5.5 0 0 0 .68-.194.93.93 0 0 1 .813-.493c.339 0 .645.19.813.493a.5.5 0 0 0 .874-.486A1.93 1.93 0 0 0 10.25 5.75c-.73 0-1.356.412-1.687 1.007a.5.5 0 0 0 .194.68M14 9.828c1.11-1.14 3.884.856 0 3.422-3.884-2.566-1.11-4.562 0-3.421Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-laughing-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-laughing-fill.svg
new file mode 100644
index 000000000..0130bf438
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-laughing-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-laughing-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M7 6.5c0 .501-.164.396-.415.235C6.42 6.629 6.218 6.5 6 6.5s-.42.13-.585.235C5.164 6.896 5 7 5 6.5 5 5.672 5.448 5 6 5s1 .672 1 1.5m5.331 3a1 1 0 0 1 0 1A5 5 0 0 1 8 13a5 5 0 0 1-4.33-2.5A1 1 0 0 1 4.535 9h6.93a1 1 0 0 1 .866.5m-1.746-2.765C10.42 6.629 10.218 6.5 10 6.5s-.42.13-.585.235C9.164 6.896 9 7 9 6.5c0-.828.448-1.5 1-1.5s1 .672 1 1.5c0 .501-.164.396-.415.235"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-laughing.svg b/vendor/twbs/bootstrap-icons/icons/emoji-laughing.svg
new file mode 100644
index 000000000..76b87f509
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-laughing.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-laughing" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M12.331 9.5a1 1 0 0 1 0 1A5 5 0 0 1 8 13a5 5 0 0 1-4.33-2.5A1 1 0 0 1 4.535 9h6.93a1 1 0 0 1 .866.5M7 6.5c0 .828-.448 0-1 0s-1 .828-1 0S5.448 5 6 5s1 .672 1 1.5m4 0c0 .828-.448 0-1 0s-1 .828-1 0S9.448 5 10 5s1 .672 1 1.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-neutral-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-neutral-fill.svg
new file mode 100644
index 000000000..662603a27
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-neutral-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-neutral-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m-3 4a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5M10 8c-.552 0-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5S10.552 8 10 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-neutral.svg b/vendor/twbs/bootstrap-icons/icons/emoji-neutral.svg
new file mode 100644
index 000000000..d6b60f855
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-neutral.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-neutral" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M4 10.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5m3-4C7 5.672 6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8s1-.672 1-1.5m4 0c0-.828-.448-1.5-1-1.5s-1 .672-1 1.5S9.448 8 10 8s1-.672 1-1.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-smile-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-smile-fill.svg
new file mode 100644
index 000000000..439dff0ef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-smile-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-smile-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5M4.285 9.567a.5.5 0 0 1 .683.183A3.5 3.5 0 0 0 8 11.5a3.5 3.5 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .183-.683M10 8c-.552 0-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5S10.552 8 10 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-smile-upside-down-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-smile-upside-down-fill.svg
new file mode 100644
index 000000000..2d6acca97
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-smile-upside-down-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-smile-upside-down-fill" viewBox="0 0 16 16">
+ <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M7 9.5C7 8.672 6.552 8 6 8s-1 .672-1 1.5.448 1.5 1 1.5 1-.672 1-1.5M4.285 6.433a.5.5 0 0 0 .683-.183A3.5 3.5 0 0 1 8 4.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.5 4.5 0 0 0 8 3.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683M10 8c-.552 0-1 .672-1 1.5s.448 1.5 1 1.5 1-.672 1-1.5S10.552 8 10 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-smile-upside-down.svg b/vendor/twbs/bootstrap-icons/icons/emoji-smile-upside-down.svg
new file mode 100644
index 000000000..d2d93edb2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-smile-upside-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-smile-upside-down" viewBox="0 0 16 16">
+ <path d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1m0-1a8 8 0 1 1 0 16A8 8 0 0 1 8 0"/>
+ <path d="M4.285 6.433a.5.5 0 0 0 .683-.183A3.5 3.5 0 0 1 8 4.5c1.295 0 2.426.703 3.032 1.75a.5.5 0 0 0 .866-.5A4.5 4.5 0 0 0 8 3.5a4.5 4.5 0 0 0-3.898 2.25.5.5 0 0 0 .183.683M7 9.5C7 8.672 6.552 8 6 8s-1 .672-1 1.5.448 1.5 1 1.5 1-.672 1-1.5m4 0c0-.828-.448-1.5-1-1.5s-1 .672-1 1.5.448 1.5 1 1.5 1-.672 1-1.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-smile.svg b/vendor/twbs/bootstrap-icons/icons/emoji-smile.svg
new file mode 100644
index 000000000..bba78dabd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-smile.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-smile" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M4.285 9.567a.5.5 0 0 1 .683.183A3.5 3.5 0 0 0 8 11.5a3.5 3.5 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .183-.683M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-sunglasses-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-sunglasses-fill.svg
new file mode 100644
index 000000000..a1318c228
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-sunglasses-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-sunglasses-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M2.31 5.243A1 1 0 0 1 3.28 4H6a1 1 0 0 1 1 1v.116A4.2 4.2 0 0 1 8 5c.35 0 .69.04 1 .116V5a1 1 0 0 1 1-1h2.72a1 1 0 0 1 .97 1.243l-.311 1.242A2 2 0 0 1 11.439 8H11a2 2 0 0 1-1.994-1.839A3 3 0 0 0 8 6c-.393 0-.74.064-1.006.161A2 2 0 0 1 5 8h-.438a2 2 0 0 1-1.94-1.515zM4.969 9.75A3.5 3.5 0 0 0 8 11.5a3.5 3.5 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .866-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-sunglasses.svg b/vendor/twbs/bootstrap-icons/icons/emoji-sunglasses.svg
new file mode 100644
index 000000000..188b56cc7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-sunglasses.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-sunglasses" viewBox="0 0 16 16">
+ <path d="M4.968 9.75a.5.5 0 1 0-.866.5A4.5 4.5 0 0 0 8 12.5a4.5 4.5 0 0 0 3.898-2.25.5.5 0 1 0-.866-.5A3.5 3.5 0 0 1 8 11.5a3.5 3.5 0 0 1-3.032-1.75M7 5.116V5a1 1 0 0 0-1-1H3.28a1 1 0 0 0-.97 1.243l.311 1.242A2 2 0 0 0 4.561 8H5a2 2 0 0 0 1.994-1.839A3 3 0 0 1 8 6c.393 0 .74.064 1.006.161A2 2 0 0 0 11 8h.438a2 2 0 0 0 1.94-1.515l.311-1.242A1 1 0 0 0 12.72 4H10a1 1 0 0 0-1 1v.116A4.2 4.2 0 0 0 8 5c-.35 0-.69.04-1 .116"/>
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-1 0A7 7 0 1 0 1 8a7 7 0 0 0 14 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-surprise-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-surprise-fill.svg
new file mode 100644
index 000000000..9f6f620e6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-surprise-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-surprise-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M7 5.5C7 4.672 6.552 4 6 4s-1 .672-1 1.5S5.448 7 6 7s1-.672 1-1.5m4 0c0-.828-.448-1.5-1-1.5s-1 .672-1 1.5S9.448 7 10 7s1-.672 1-1.5M8 13a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-surprise.svg b/vendor/twbs/bootstrap-icons/icons/emoji-surprise.svg
new file mode 100644
index 000000000..af246bf8a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-surprise.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-surprise" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M7 5.5C7 6.328 6.552 7 6 7s-1-.672-1-1.5S5.448 4 6 4s1 .672 1 1.5m4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 4 10 4s1 .672 1 1.5M10 11a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-tear-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-tear-fill.svg
new file mode 100644
index 000000000..3ccf87d4c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-tear-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-tear-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.5 3.5a.5.5 0 0 0 .5.5c.838 0 1.65.416 2.053 1.224a.5.5 0 1 0 .894-.448C12.351 3.584 11.162 3 10 3a.5.5 0 0 0-.5.5M7 6.5C7 5.672 6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8s1-.672 1-1.5M4.5 13c.828 0 1.5-.746 1.5-1.667 0-.706-.882-2.29-1.294-2.99a.238.238 0 0 0-.412 0C3.882 9.044 3 10.628 3 11.334 3 12.253 3.672 13 4.5 13M8 11.197c.916 0 1.607.408 2.25.826.212.138.424-.069.282-.277-.564-.83-1.558-2.049-2.532-2.049-.53 0-1.066.361-1.536.824q.126.27.232.535.069.174.135.373A3.1 3.1 0 0 1 8 11.197M10 8c.552 0 1-.672 1-1.5S10.552 5 10 5s-1 .672-1 1.5S9.448 8 10 8M6.5 3c-1.162 0-2.35.584-2.947 1.776a.5.5 0 1 0 .894.448C4.851 4.416 5.662 4 6.5 4a.5.5 0 0 0 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-tear.svg b/vendor/twbs/bootstrap-icons/icons/emoji-tear.svg
new file mode 100644
index 000000000..31b6597c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-tear.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-tear" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M6.831 11.43A3.1 3.1 0 0 1 8 11.196c.916 0 1.607.408 2.25.826.212.138.424-.069.282-.277-.564-.83-1.558-2.049-2.532-2.049-.53 0-1.066.361-1.536.824q.126.27.232.535.069.174.135.373ZM6 11.333C6 12.253 5.328 13 4.5 13S3 12.254 3 11.333c0-.706.882-2.29 1.294-2.99a.238.238 0 0 1 .412 0c.412.7 1.294 2.284 1.294 2.99M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m4 0c0 .828-.448 1.5-1 1.5s-1-.672-1-1.5S9.448 5 10 5s1 .672 1 1.5m-1.5-3A.5.5 0 0 1 10 3c1.162 0 2.35.584 2.947 1.776a.5.5 0 1 1-.894.448C11.649 4.416 10.838 4 10 4a.5.5 0 0 1-.5-.5M7 3.5a.5.5 0 0 0-.5-.5c-1.162 0-2.35.584-2.947 1.776a.5.5 0 1 0 .894.448C4.851 4.416 5.662 4 6.5 4a.5.5 0 0 0 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-wink-fill.svg b/vendor/twbs/bootstrap-icons/icons/emoji-wink-fill.svg
new file mode 100644
index 000000000..2f3e480f9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-wink-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-wink-fill" viewBox="0 0 16 16">
+ <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M7 6.5C7 5.672 6.552 5 6 5s-1 .672-1 1.5S5.448 8 6 8s1-.672 1-1.5M4.285 9.567a.5.5 0 0 0-.183.683A4.5 4.5 0 0 0 8 12.5a4.5 4.5 0 0 0 3.898-2.25.5.5 0 1 0-.866-.5A3.5 3.5 0 0 1 8 11.5a3.5 3.5 0 0 1-3.032-1.75.5.5 0 0 0-.683-.183m5.152-3.31a.5.5 0 0 0-.874.486c.33.595.958 1.007 1.687 1.007s1.356-.412 1.687-1.007a.5.5 0 0 0-.874-.486.93.93 0 0 1-.813.493.93.93 0 0 1-.813-.493"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/emoji-wink.svg b/vendor/twbs/bootstrap-icons/icons/emoji-wink.svg
new file mode 100644
index 000000000..7fe9116f3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/emoji-wink.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-emoji-wink" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M4.285 9.567a.5.5 0 0 1 .683.183A3.5 3.5 0 0 0 8 11.5a3.5 3.5 0 0 0 3.032-1.75.5.5 0 1 1 .866.5A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1-3.898-2.25.5.5 0 0 1 .183-.683M7 6.5C7 7.328 6.552 8 6 8s-1-.672-1-1.5S5.448 5 6 5s1 .672 1 1.5m1.757-.437a.5.5 0 0 1 .68.194.93.93 0 0 0 .813.493c.339 0 .645-.19.813-.493a.5.5 0 1 1 .874.486A1.93 1.93 0 0 1 10.25 7.75c-.73 0-1.356-.412-1.687-1.007a.5.5 0 0 1 .194-.68"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-arrow-down-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-arrow-down-fill.svg
new file mode 100644
index 000000000..a5160e79a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-arrow-down-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-arrow-down-fill" viewBox="0 0 16 16">
+ <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zm.192 8.159 6.57-4.027L8 9.586l1.239-.757.367.225A4.49 4.49 0 0 0 8 12.5c0 .526.09 1.03.256 1.5H2a2 2 0 0 1-1.808-1.144M16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-1.646a.5.5 0 0 1-.722-.016l-1.149-1.25a.5.5 0 1 1 .737-.676l.28.305V11a.5.5 0 0 1 1 0v1.793l.396-.397a.5.5 0 0 1 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-arrow-down.svg b/vendor/twbs/bootstrap-icons/icons/envelope-arrow-down.svg
new file mode 100644
index 000000000..36b6f5406
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-arrow-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-arrow-down" viewBox="0 0 16 16">
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4.5a.5.5 0 0 1-1 0V5.383l-7 4.2-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-1.99zm1 7.105 4.708-2.897L1 5.383zM1 4v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-1.646a.5.5 0 0 1-.722-.016l-1.149-1.25a.5.5 0 1 1 .737-.676l.28.305V11a.5.5 0 0 1 1 0v1.793l.396-.397a.5.5 0 0 1 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-arrow-up-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-arrow-up-fill.svg
new file mode 100644
index 000000000..2757974e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-arrow-up-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-arrow-up-fill" viewBox="0 0 16 16">
+ <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zm.192 8.159 6.57-4.027L8 9.586l1.239-.757.367.225A4.49 4.49 0 0 0 8 12.5c0 .526.09 1.03.256 1.5H2a2 2 0 0 1-1.808-1.144M16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.354 1.25 1.25a.5.5 0 0 1-.708.708L13 12.207V14a.5.5 0 0 1-1 0v-1.717l-.28.305a.5.5 0 0 1-.737-.676l1.149-1.25a.5.5 0 0 1 .722-.016"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-arrow-up.svg b/vendor/twbs/bootstrap-icons/icons/envelope-arrow-up.svg
new file mode 100644
index 000000000..ff2fae0d5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-arrow-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-arrow-up" viewBox="0 0 16 16">
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4.5a.5.5 0 0 1-1 0V5.383l-7 4.2-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-1.99zm1 7.105 4.708-2.897L1 5.383zM1 4v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.354 1.25 1.25a.5.5 0 0 1-.708.708L13 12.207V14a.5.5 0 0 1-1 0v-1.717l-.28.305a.5.5 0 0 1-.737-.676l1.149-1.25a.5.5 0 0 1 .722-.016"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-at-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-at-fill.svg
new file mode 100644
index 000000000..e39ff3870
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-at-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-at-fill" viewBox="0 0 16 16">
+ <path d="M2 2A2 2 0 0 0 .05 3.555L8 8.414l7.95-4.859A2 2 0 0 0 14 2zm-2 9.8V4.698l5.803 3.546zm6.761-2.97-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 9.671V4.697l-5.803 3.546.338.208A4.5 4.5 0 0 1 12.5 8c1.414 0 2.675.652 3.5 1.671"/>
+ <path d="M15.834 12.244c0 1.168-.577 2.025-1.587 2.025-.503 0-1.002-.228-1.12-.648h-.043c-.118.416-.543.643-1.015.643-.77 0-1.259-.542-1.259-1.434v-.529c0-.844.481-1.4 1.26-1.4.585 0 .87.333.953.63h.03v-.568h.905v2.19c0 .272.18.42.411.42.315 0 .639-.415.639-1.39v-.118c0-1.277-.95-2.326-2.484-2.326h-.04c-1.582 0-2.64 1.067-2.64 2.724v.157c0 1.867 1.237 2.654 2.57 2.654h.045c.507 0 .935-.07 1.18-.18v.731c-.219.1-.643.175-1.237.175h-.044C10.438 16 9 14.82 9 12.646v-.214C9 10.36 10.421 9 12.485 9h.035c2.12 0 3.314 1.43 3.314 3.034zm-4.04.21v.227c0 .586.227.8.581.8.31 0 .564-.17.564-.743v-.367c0-.516-.275-.708-.572-.708-.346 0-.573.245-.573.791"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-at.svg b/vendor/twbs/bootstrap-icons/icons/envelope-at.svg
new file mode 100644
index 000000000..163c3bafe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-at.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-at" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/>
+ <path d="M14.247 14.269c1.01 0 1.587-.857 1.587-2.025v-.21C15.834 10.43 14.64 9 12.52 9h-.035C10.42 9 9 10.36 9 12.432v.214C9 14.82 10.438 16 12.358 16h.044c.594 0 1.018-.074 1.237-.175v-.73c-.245.11-.673.18-1.18.18h-.044c-1.334 0-2.571-.788-2.571-2.655v-.157c0-1.657 1.058-2.724 2.64-2.724h.04c1.535 0 2.484 1.05 2.484 2.326v.118c0 .975-.324 1.39-.639 1.39-.232 0-.41-.148-.41-.42v-2.19h-.906v.569h-.03c-.084-.298-.368-.63-.954-.63-.778 0-1.259.555-1.259 1.4v.528c0 .892.49 1.434 1.26 1.434.471 0 .896-.227 1.014-.643h.043c.118.42.617.648 1.12.648m-2.453-1.588v-.227c0-.546.227-.791.573-.791.297 0 .572.192.572.708v.367c0 .573-.253.744-.564.744-.354 0-.581-.215-.581-.8Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-check-fill.svg
new file mode 100644
index 000000000..26d753a77
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-check-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-check-fill" viewBox="0 0 16 16">
+ <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-1.993-1.679a.5.5 0 0 0-.686.172l-1.17 1.95-.547-.547a.5.5 0 0 0-.708.708l.774.773a.75.75 0 0 0 1.174-.144l1.335-2.226a.5.5 0 0 0-.172-.686"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-check.svg b/vendor/twbs/bootstrap-icons/icons/envelope-check.svg
new file mode 100644
index 000000000..fbc765b86
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-check" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-1.993-1.679a.5.5 0 0 0-.686.172l-1.17 1.95-.547-.547a.5.5 0 0 0-.708.708l.774.773a.75.75 0 0 0 1.174-.144l1.335-2.226a.5.5 0 0 0-.172-.686"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-dash-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-dash-fill.svg
new file mode 100644
index 000000000..6e9e745bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-dash-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-dash-fill" viewBox="0 0 16 16">
+ <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-dash.svg b/vendor/twbs/bootstrap-icons/icons/envelope-dash.svg
new file mode 100644
index 000000000..d6457cf9b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-dash" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-exclamation-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-exclamation-fill.svg
new file mode 100644
index 000000000..e14f047a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-exclamation-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-exclamation-fill" viewBox="0 0 16 16">
+ <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1.5a.5.5 0 0 1-1 0V11a.5.5 0 0 1 1 0m0 3a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/envelope-exclamation.svg
new file mode 100644
index 000000000..4aca0a9cd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-exclamation.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-exclamation" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1.5a.5.5 0 0 1-1 0V11a.5.5 0 0 1 1 0m0 3a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-fill.svg
new file mode 100644
index 000000000..966ef94a4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-fill" viewBox="0 0 16 16">
+ <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.027A2 2 0 0 0 2 14h12a2 2 0 0 0 1.808-1.144l-6.57-4.027L8 9.586zm3.436-.586L16 11.801V4.697z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-heart-fill.svg
new file mode 100644
index 000000000..41588417c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-heart-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-heart-fill" viewBox="0 0 16 16">
+ <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555l-4.2 2.568-.051-.105c-.666-1.3-2.363-1.917-3.699-1.25-1.336-.667-3.033-.05-3.699 1.25l-.05.105zM11.584 8.91l-.073.139L16 11.8V4.697l-4.003 2.447c.027.562-.107 1.163-.413 1.767Zm-4.135 3.05c-1.048-.693-1.84-1.39-2.398-2.082L.19 12.856A2 2 0 0 0 2 14h12a2 2 0 0 0 1.808-1.144L10.95 9.878c-.559.692-1.35 1.389-2.398 2.081L8 12.324l-.551-.365ZM4.416 8.91c-.306-.603-.44-1.204-.413-1.766L0 4.697v7.104l4.49-2.752z"/>
+ <path d="M8 5.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-heart.svg b/vendor/twbs/bootstrap-icons/icons/envelope-heart.svg
new file mode 100644
index 000000000..c886df2fa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-heart" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v.217l3.235 1.94a2.8 2.8 0 0 0-.233 1.027L1 5.384v5.721l3.453-2.124q.219.416.55.835l-3.97 2.443A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741l-3.968-2.442q.33-.421.55-.836L15 11.105V5.383l-3.002 1.801a2.8 2.8 0 0 0-.233-1.026L15 4.217V4a1 1 0 0 0-1-1zm6 2.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-open-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-open-fill.svg
new file mode 100644
index 000000000..972d0e342
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-open-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-open-fill" viewBox="0 0 16 16">
+ <path d="M8.941.435a2 2 0 0 0-1.882 0l-6 3.2A2 2 0 0 0 0 5.4v.314l6.709 3.932L8 8.928l1.291.718L16 5.714V5.4a2 2 0 0 0-1.059-1.765zM16 6.873l-5.693 3.337L16 13.372v-6.5Zm-.059 7.611L8 10.072.059 14.484A2 2 0 0 0 2 16h12a2 2 0 0 0 1.941-1.516M0 13.373l5.693-3.163L0 6.873z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-open-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-open-heart-fill.svg
new file mode 100644
index 000000000..13263fa94
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-open-heart-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-open-heart-fill" viewBox="0 0 16 16">
+ <path d="M8.941.435a2 2 0 0 0-1.882 0l-6 3.2A2 2 0 0 0 0 5.4v.313l4.222 2.475q.035-.087.08-.17c.665-1.3 2.362-1.917 3.698-1.25 1.336-.667 3.033-.05 3.699 1.25a3 3 0 0 1 .08.17L16 5.713V5.4a2 2 0 0 0-1.059-1.765zM0 6.873l4 2.344c-.012.542.124 1.117.416 1.694l.004.006L0 13.372v-6.5Zm.059 7.611 4.9-2.723c.563.73 1.383 1.467 2.49 2.198l.551.365.551-.365c1.107-.73 1.927-1.467 2.49-2.198l4.9 2.723A2 2 0 0 1 14 16H2a2 2 0 0 1-1.941-1.516M16 13.372l-4.42-2.455.004-.006c.292-.577.428-1.152.415-1.694L16 6.873v6.5Z"/>
+ <path d="M8 7.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-open-heart.svg b/vendor/twbs/bootstrap-icons/icons/envelope-open-heart.svg
new file mode 100644
index 000000000..701811619
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-open-heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-open-heart" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8.47 1.318a1 1 0 0 0-.94 0l-6 3.2A1 1 0 0 0 1 5.4v.817l3.235 1.94a2.8 2.8 0 0 0-.233 1.027L1 7.384v5.733l3.479-2.087q.224.414.558.83l-4.002 2.402A1 1 0 0 0 2 15h12a1 1 0 0 0 .965-.738l-4.002-2.401q.334-.418.558-.831L15 13.117V7.383l-3.002 1.801a2.8 2.8 0 0 0-.233-1.026L15 6.217V5.4a1 1 0 0 0-.53-.882zM7.06.435a2 2 0 0 1 1.882 0l6 3.2A2 2 0 0 1 16 5.4V14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5.4a2 2 0 0 1 1.059-1.765zM8 7.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-open.svg b/vendor/twbs/bootstrap-icons/icons/envelope-open.svg
new file mode 100644
index 000000000..3daa2ebc1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-open.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-open" viewBox="0 0 16 16">
+ <path d="M8.47 1.318a1 1 0 0 0-.94 0l-6 3.2A1 1 0 0 0 1 5.4v.817l5.75 3.45L8 8.917l1.25.75L15 6.217V5.4a1 1 0 0 0-.53-.882zM15 7.383l-4.778 2.867L15 13.117zm-.035 6.88L8 10.082l-6.965 4.18A1 1 0 0 0 2 15h12a1 1 0 0 0 .965-.738ZM1 13.116l4.778-2.867L1 7.383v5.734ZM7.059.435a2 2 0 0 1 1.882 0l6 3.2A2 2 0 0 1 16 5.4V14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5.4a2 2 0 0 1 1.059-1.765z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-paper-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-paper-fill.svg
new file mode 100644
index 000000000..c8a187c7e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-paper-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-paper-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.5 9.5 3 7.5v-6A1.5 1.5 0 0 1 4.5 0h7A1.5 1.5 0 0 1 13 1.5v6l-3.5 2L8 8.75zM1.059 3.635 2 3.133v3.753L0 5.713V5.4a2 2 0 0 1 1.059-1.765M16 5.713l-2 1.173V3.133l.941.502A2 2 0 0 1 16 5.4zm0 1.16-5.693 3.337L16 13.372v-6.5Zm-8 3.199 7.941 4.412A2 2 0 0 1 14 16H2a2 2 0 0 1-1.941-1.516zm-8 3.3 5.693-3.162L0 6.873v6.5Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-paper-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-paper-heart-fill.svg
new file mode 100644
index 000000000..7f58d571d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-paper-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-paper-heart-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="m3 7.5 3.5 2L8 8.75l1.5.75 3.5-2v-6A1.5 1.5 0 0 0 11.5 0h-7A1.5 1.5 0 0 0 3 1.5zM2 3.133l-.941.502A2 2 0 0 0 0 5.4v.313l2 1.173zm12 3.753 2-1.173V5.4a2 2 0 0 0-1.059-1.765L14 3.133zm-3.693 3.324L16 6.873v6.5zm5.634 4.274L8 10.072.059 14.484A2 2 0 0 0 2 16h12a2 2 0 0 0 1.941-1.516M5.693 10.21 0 13.372v-6.5zM8 1.982C9.664.309 13.825 3.236 8 7 2.175 3.236 6.336.31 8 1.982"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-paper-heart.svg b/vendor/twbs/bootstrap-icons/icons/envelope-paper-heart.svg
new file mode 100644
index 000000000..73b91d9e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-paper-heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-paper-heart" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v1.133l.941.502A2 2 0 0 1 16 5.4V14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5.4a2 2 0 0 1 1.059-1.765L2 3.133zm0 2.267-.47.25A1 1 0 0 0 1 5.4v.817l1 .6zm1 3.15 3.75 2.25L8 8.917l1.25.75L13 7.417V2a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1zm11-.6 1-.6V5.4a1 1 0 0 0-.53-.882L14 4.267zM8 2.982C9.664 1.309 13.825 4.236 8 8 2.175 4.236 6.336 1.31 8 2.982m7 4.401-4.778 2.867L15 13.117zm-.035 6.88L8 10.082l-6.965 4.18A1 1 0 0 0 2 15h12a1 1 0 0 0 .965-.738ZM1 13.116l4.778-2.867L1 7.383v5.734Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-paper.svg b/vendor/twbs/bootstrap-icons/icons/envelope-paper.svg
new file mode 100644
index 000000000..20fcc2ac1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-paper.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-paper" viewBox="0 0 16 16">
+ <path d="M4 0a2 2 0 0 0-2 2v1.133l-.941.502A2 2 0 0 0 0 5.4V14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5.4a2 2 0 0 0-1.059-1.765L14 3.133V2a2 2 0 0 0-2-2zm10 4.267.47.25A1 1 0 0 1 15 5.4v.817l-1 .6zm-1 3.15-3.75 2.25L8 8.917l-1.25.75L3 7.417V2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1zm-11-.6-1-.6V5.4a1 1 0 0 1 .53-.882L2 4.267zm13 .566v5.734l-4.778-2.867zm-.035 6.88A1 1 0 0 1 14 15H2a1 1 0 0 1-.965-.738L8 10.083zM1 13.116V7.383l4.778 2.867L1 13.117Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-plus-fill.svg
new file mode 100644
index 000000000..453a9fdc1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-plus-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-plus-fill" viewBox="0 0 16 16">
+ <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-plus.svg b/vendor/twbs/bootstrap-icons/icons/envelope-plus.svg
new file mode 100644
index 000000000..7e960a05e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-plus" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-slash-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-slash-fill.svg
new file mode 100644
index 000000000..90eb7ef04
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-slash-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-slash-fill" viewBox="0 0 16 16">
+ <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/>
+ <path d="M14.975 10.025a3.5 3.5 0 1 0-4.95 4.95 3.5 3.5 0 0 0 4.95-4.95m-4.243.707a2.5 2.5 0 0 1 3.147-.318l-3.465 3.465a2.5 2.5 0 0 1 .318-3.147m.39 3.854 3.464-3.465a2.501 2.501 0 0 1-3.465 3.465Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-slash.svg b/vendor/twbs/bootstrap-icons/icons/envelope-slash.svg
new file mode 100644
index 000000000..65cb167f9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-slash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-slash" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/>
+ <path d="M14.975 10.025a3.5 3.5 0 1 0-4.95 4.95 3.5 3.5 0 0 0 4.95-4.95m-4.243.707a2.5 2.5 0 0 1 3.147-.318l-3.465 3.465a2.5 2.5 0 0 1 .318-3.147m.39 3.854 3.464-3.465a2.501 2.501 0 0 1-3.465 3.465Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/envelope-x-fill.svg
new file mode 100644
index 000000000..8f6a79c4e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-x-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-x-fill" viewBox="0 0 16 16">
+ <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.026A2 2 0 0 0 2 14h6.256A4.5 4.5 0 0 1 8 12.5a4.49 4.49 0 0 1 1.606-3.446l-.367-.225L8 9.586zM16 4.697v4.974A4.5 4.5 0 0 0 12.5 8a4.5 4.5 0 0 0-1.965.45l-.338-.207z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope-x.svg b/vendor/twbs/bootstrap-icons/icons/envelope-x.svg
new file mode 100644
index 000000000..ea74027a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-x" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v8.01A2 2 0 0 0 2 14h5.5a.5.5 0 0 0 0-1H2a1 1 0 0 1-.966-.741l5.64-3.471L8 9.583l7-4.2V8.5a.5.5 0 0 0 1 0V4a2 2 0 0 0-2-2zm3.708 6.208L1 11.105V5.383zM1 4.217V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v.217l-7 4.2z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/envelope.svg b/vendor/twbs/bootstrap-icons/icons/envelope.svg
new file mode 100644
index 000000000..78bf1ded1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/envelope.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1zm13 2.383-4.708 2.825L15 11.105zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741M1 11.105l4.708-2.897L1 5.383z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/eraser-fill.svg b/vendor/twbs/bootstrap-icons/icons/eraser-fill.svg
new file mode 100644
index 000000000..c3866e15c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/eraser-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eraser-fill" viewBox="0 0 16 16">
+ <path d="M8.086 2.207a2 2 0 0 1 2.828 0l3.879 3.879a2 2 0 0 1 0 2.828l-5.5 5.5A2 2 0 0 1 7.879 15H5.12a2 2 0 0 1-1.414-.586l-2.5-2.5a2 2 0 0 1 0-2.828zm.66 11.34L3.453 8.254 1.914 9.793a1 1 0 0 0 0 1.414l2.5 2.5a1 1 0 0 0 .707.293H7.88a1 1 0 0 0 .707-.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/eraser.svg b/vendor/twbs/bootstrap-icons/icons/eraser.svg
new file mode 100644
index 000000000..fe62336f8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/eraser.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eraser" viewBox="0 0 16 16">
+ <path d="M8.086 2.207a2 2 0 0 1 2.828 0l3.879 3.879a2 2 0 0 1 0 2.828l-5.5 5.5A2 2 0 0 1 7.879 15H5.12a2 2 0 0 1-1.414-.586l-2.5-2.5a2 2 0 0 1 0-2.828zm2.121.707a1 1 0 0 0-1.414 0L4.16 7.547l5.293 5.293 4.633-4.633a1 1 0 0 0 0-1.414zM8.746 13.547 3.453 8.254 1.914 9.793a1 1 0 0 0 0 1.414l2.5 2.5a1 1 0 0 0 .707.293H7.88a1 1 0 0 0 .707-.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/escape.svg b/vendor/twbs/bootstrap-icons/icons/escape.svg
new file mode 100644
index 000000000..66176b662
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/escape.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-escape" viewBox="0 0 16 16">
+ <path d="M8.538 1.02a.5.5 0 1 0-.076.998 6 6 0 1 1-6.445 6.444.5.5 0 0 0-.997.076A7 7 0 1 0 8.538 1.02"/>
+ <path d="M7.096 7.828a.5.5 0 0 0 .707-.707L2.707 2.025h2.768a.5.5 0 1 0 0-1H1.5a.5.5 0 0 0-.5.5V5.5a.5.5 0 0 0 1 0V2.732z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ethernet.svg b/vendor/twbs/bootstrap-icons/icons/ethernet.svg
new file mode 100644
index 000000000..739a2de74
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ethernet.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ethernet" viewBox="0 0 16 16">
+ <path d="M14 13.5v-7a.5.5 0 0 0-.5-.5H12V4.5a.5.5 0 0 0-.5-.5h-1v-.5A.5.5 0 0 0 10 3H6a.5.5 0 0 0-.5.5V4h-1a.5.5 0 0 0-.5.5V6H2.5a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5M3.75 11h.5a.25.25 0 0 1 .25.25v1.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-1.5a.25.25 0 0 1 .25-.25m2 0h.5a.25.25 0 0 1 .25.25v1.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-1.5a.25.25 0 0 1 .25-.25m1.75.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v1.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zM9.75 11h.5a.25.25 0 0 1 .25.25v1.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-1.5a.25.25 0 0 1 .25-.25m1.75.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v1.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25z"/>
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 2a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ev-front-fill.svg b/vendor/twbs/bootstrap-icons/icons/ev-front-fill.svg
new file mode 100644
index 000000000..53b947d46
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ev-front-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ev-front-fill" viewBox="0 0 16 16">
+ <path d="M2.52 3.515A2.5 2.5 0 0 1 4.82 2h6.362c1 0 1.904.596 2.298 1.515l.792 1.848c.075.175.21.319.38.404.5.25.855.715.965 1.262l.335 1.679q.05.242.049.49v.413c0 .814-.39 1.543-1 1.997V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.338c-1.292.048-2.745.088-4 .088s-2.708-.04-4-.088V13.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-1.892c-.61-.454-1-1.183-1-1.997v-.413a2.5 2.5 0 0 1 .049-.49l.335-1.68c.11-.546.465-1.012.964-1.261a.8.8 0 0 0 .381-.404l.792-1.848Zm6.75.51a.186.186 0 0 0-.23.034L6.05 7.246a.188.188 0 0 0 .137.316h1.241l-.673 2.195a.19.19 0 0 0 .085.218c.075.043.17.03.23-.034l2.88-3.187a.188.188 0 0 0-.137-.316H8.572l.782-2.195a.19.19 0 0 0-.085-.218Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ev-front.svg b/vendor/twbs/bootstrap-icons/icons/ev-front.svg
new file mode 100644
index 000000000..7f053a576
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ev-front.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ev-front" viewBox="0 0 16 16">
+ <path d="M9.354 4.243a.19.19 0 0 0-.085-.218.186.186 0 0 0-.23.034L6.051 7.246a.188.188 0 0 0 .136.316h1.241l-.673 2.195a.19.19 0 0 0 .085.218c.075.043.17.03.23-.034l2.88-3.187a.188.188 0 0 0-.137-.316H8.572z"/>
+ <path d="M4.819 2A2.5 2.5 0 0 0 2.52 3.515l-.792 1.848a.8.8 0 0 1-.38.404c-.5.25-.855.715-.965 1.262L.05 8.708a2.5 2.5 0 0 0-.049.49v.413c0 .814.39 1.543 1 1.997V13.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.338c1.292.048 2.745.088 4 .088s2.708-.04 4-.088V13.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.892c.61-.454 1-1.183 1-1.997v-.413q0-.248-.049-.49l-.335-1.68a1.8 1.8 0 0 0-.964-1.261.8.8 0 0 1-.381-.404l-.792-1.848A2.5 2.5 0 0 0 11.181 2H4.82ZM3.44 3.91A1.5 1.5 0 0 1 4.82 3h6.362a1.5 1.5 0 0 1 1.379.91l.792 1.847a1.8 1.8 0 0 0 .853.904c.222.112.381.32.43.564l.336 1.679q.03.146.029.294v.413a1.48 1.48 0 0 1-1.408 1.484c-1.555.07-3.786.155-5.592.155s-4.037-.084-5.592-.155A1.48 1.48 0 0 1 1 9.611v-.413q0-.148.03-.294l.335-1.68a.8.8 0 0 1 .43-.563c.383-.19.685-.511.853-.904z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ev-station-fill.svg b/vendor/twbs/bootstrap-icons/icons/ev-station-fill.svg
new file mode 100644
index 000000000..a1ad0071d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ev-station-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ev-station-fill" viewBox="0 0 16 16">
+ <path d="M1 2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v8a2 2 0 0 1 2 2v.5a.5.5 0 0 0 1 0V9c0-.258-.104-.377-.357-.635l-.007-.008C13.379 8.096 13 7.71 13 7V4a.5.5 0 0 1 .146-.354l.5-.5a.5.5 0 0 1 .708 0l.5.5A.5.5 0 0 1 15 4v8.5a1.5 1.5 0 1 1-3 0V12a1 1 0 0 0-1-1v4h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1zm2 .5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5m2.631 9.96H4.14v-.893h1.403v-.505H4.14v-.855h1.49v-.54H3.485V13h2.146zm1.316.54h.794l1.106-3.333h-.733l-.74 2.615h-.031l-.747-2.615h-.764z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ev-station.svg b/vendor/twbs/bootstrap-icons/icons/ev-station.svg
new file mode 100644
index 000000000..90470f637
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ev-station.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ev-station" viewBox="0 0 16 16">
+ <path d="M3.5 2a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5zm2.131 10.46H4.14v-.893h1.403v-.505H4.14v-.855h1.49v-.54H3.485V13h2.146zm1.316.54h.794l1.106-3.333h-.733l-.74 2.615h-.031l-.747-2.615h-.764z"/>
+ <path d="M3 0a2 2 0 0 0-2 2v13H.5a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1H11v-4a1 1 0 0 1 1 1v.5a1.5 1.5 0 0 0 3 0V4a.5.5 0 0 0-.146-.354l-.5-.5a.5.5 0 0 0-.707 0l-.5.5A.5.5 0 0 0 13 4v3c0 .71.38 1.096.636 1.357l.007.008c.253.258.357.377.357.635v3.5a.5.5 0 1 1-1 0V12a2 2 0 0 0-2-2V2a2 2 0 0 0-2-2zm7 2v13H2V2a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/exclamation-circle-fill.svg
new file mode 100644
index 000000000..13ce7ab6b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4m.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation-circle.svg b/vendor/twbs/bootstrap-icons/icons/exclamation-circle.svg
new file mode 100644
index 000000000..f3befe03d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation-diamond-fill.svg b/vendor/twbs/bootstrap-icons/icons/exclamation-diamond-fill.svg
new file mode 100644
index 000000000..cb14aee9e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation-diamond-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-diamond-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM8 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation-diamond.svg b/vendor/twbs/bootstrap-icons/icons/exclamation-diamond.svg
new file mode 100644
index 000000000..4881e6d24
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation-diamond.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-diamond" viewBox="0 0 16 16">
+ <path d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134z"/>
+ <path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation-lg.svg b/vendor/twbs/bootstrap-icons/icons/exclamation-lg.svg
new file mode 100644
index 000000000..18f6a8736
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation-lg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-lg" viewBox="0 0 16 16">
+ <path d="M7.005 3.1a1 1 0 1 1 1.99 0l-.388 6.35a.61.61 0 0 1-1.214 0zM7 12a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation-octagon-fill.svg b/vendor/twbs/bootstrap-icons/icons/exclamation-octagon-fill.svg
new file mode 100644
index 000000000..494010b4e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation-octagon-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-octagon-fill" viewBox="0 0 16 16">
+ <path d="M11.46.146A.5.5 0 0 0 11.107 0H4.893a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353zM8 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation-octagon.svg b/vendor/twbs/bootstrap-icons/icons/exclamation-octagon.svg
new file mode 100644
index 000000000..7f2593813
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation-octagon.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-octagon" viewBox="0 0 16 16">
+ <path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/>
+ <path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/exclamation-square-fill.svg
new file mode 100644
index 000000000..d80a4e92a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation-square.svg b/vendor/twbs/bootstrap-icons/icons/exclamation-square.svg
new file mode 100644
index 000000000..2a0f2aed4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation-triangle-fill.svg b/vendor/twbs/bootstrap-icons/icons/exclamation-triangle-fill.svg
new file mode 100644
index 000000000..52fd50886
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation-triangle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-triangle-fill" viewBox="0 0 16 16">
+ <path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation-triangle.svg b/vendor/twbs/bootstrap-icons/icons/exclamation-triangle.svg
new file mode 100644
index 000000000..506b7774a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation-triangle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-triangle" viewBox="0 0 16 16">
+ <path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016.15.15 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.2.2 0 0 1-.054.06.1.1 0 0 1-.066.017H1.146a.1.1 0 0 1-.066-.017.2.2 0 0 1-.054-.06.18.18 0 0 1 .002-.183L7.884 2.073a.15.15 0 0 1 .054-.057m1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767z"/>
+ <path d="M7.002 12a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclamation.svg b/vendor/twbs/bootstrap-icons/icons/exclamation.svg
new file mode 100644
index 000000000..d39cb9590
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclamation.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation" viewBox="0 0 16 16">
+ <path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.553.553 0 0 1-1.1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exclude.svg b/vendor/twbs/bootstrap-icons/icons/exclude.svg
new file mode 100644
index 000000000..ef18355eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exclude.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclude" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm12 2H5a1 1 0 0 0-1 1v7h7a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/explicit-fill.svg b/vendor/twbs/bootstrap-icons/icons/explicit-fill.svg
new file mode 100644
index 000000000..c0cb6f02e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/explicit-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-explicit-fill" viewBox="0 0 16 16">
+ <path d="M2.5 0A2.5 2.5 0 0 0 0 2.5v11A2.5 2.5 0 0 0 2.5 16h11a2.5 2.5 0 0 0 2.5-2.5v-11A2.5 2.5 0 0 0 13.5 0zm4.326 10.88H10.5V12h-5V4.002h5v1.12H6.826V7.4h3.457v1.073H6.826z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/explicit.svg b/vendor/twbs/bootstrap-icons/icons/explicit.svg
new file mode 100644
index 000000000..a7ffae701
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/explicit.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-explicit" viewBox="0 0 16 16">
+ <path d="M6.826 10.88H10.5V12h-5V4.002h5v1.12H6.826V7.4h3.457v1.073H6.826z"/>
+ <path d="M2.5 0A2.5 2.5 0 0 0 0 2.5v11A2.5 2.5 0 0 0 2.5 16h11a2.5 2.5 0 0 0 2.5-2.5v-11A2.5 2.5 0 0 0 13.5 0zM1 2.5A1.5 1.5 0 0 1 2.5 1h11A1.5 1.5 0 0 1 15 2.5v11a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 13.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/exposure.svg b/vendor/twbs/bootstrap-icons/icons/exposure.svg
new file mode 100644
index 000000000..9de0e64f1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/exposure.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exposure" viewBox="0 0 16 16">
+ <path d="M8.5 4a.5.5 0 0 0-1 0v2h-2a.5.5 0 0 0 0 1h2v2a.5.5 0 0 0 1 0V7h2a.5.5 0 0 0 0-1h-2zm-3 7a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/>
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M1 8a7 7 0 1 1 14 0A7 7 0 0 1 1 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/eye-fill.svg b/vendor/twbs/bootstrap-icons/icons/eye-fill.svg
new file mode 100644
index 000000000..288d2eb03
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/eye-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye-fill" viewBox="0 0 16 16">
+ <path d="M10.5 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0"/>
+ <path d="M0 8s3-5.5 8-5.5S16 8 16 8s-3 5.5-8 5.5S0 8 0 8m8 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/eye-slash-fill.svg b/vendor/twbs/bootstrap-icons/icons/eye-slash-fill.svg
new file mode 100644
index 000000000..10cca7435
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/eye-slash-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye-slash-fill" viewBox="0 0 16 16">
+ <path d="m10.79 12.912-1.614-1.615a3.5 3.5 0 0 1-4.474-4.474l-2.06-2.06C.938 6.278 0 8 0 8s3 5.5 8 5.5a7 7 0 0 0 2.79-.588M5.21 3.088A7 7 0 0 1 8 2.5c5 0 8 5.5 8 5.5s-.939 1.721-2.641 3.238l-2.062-2.062a3.5 3.5 0 0 0-4.474-4.474z"/>
+ <path d="M5.525 7.646a2.5 2.5 0 0 0 2.829 2.829zm4.95.708-2.829-2.83a2.5 2.5 0 0 1 2.829 2.829zm3.171 6-12-12 .708-.708 12 12z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/eye-slash.svg b/vendor/twbs/bootstrap-icons/icons/eye-slash.svg
new file mode 100644
index 000000000..359c270fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/eye-slash.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye-slash" viewBox="0 0 16 16">
+ <path d="M13.359 11.238C15.06 9.72 16 8 16 8s-3-5.5-8-5.5a7 7 0 0 0-2.79.588l.77.771A6 6 0 0 1 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755q-.247.248-.517.486z"/>
+ <path d="M11.297 9.176a3.5 3.5 0 0 0-4.474-4.474l.823.823a2.5 2.5 0 0 1 2.829 2.829zm-2.943 1.299.822.822a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829"/>
+ <path d="M3.35 5.47q-.27.24-.518.487A13 13 0 0 0 1.172 8l.195.288c.335.48.83 1.12 1.465 1.755C4.121 11.332 5.881 12.5 8 12.5c.716 0 1.39-.133 2.02-.36l.77.772A7 7 0 0 1 8 13.5C3 13.5 0 8 0 8s.939-1.721 2.641-3.238l.708.709zm10.296 8.884-12-12 .708-.708 12 12z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/eye.svg b/vendor/twbs/bootstrap-icons/icons/eye.svg
new file mode 100644
index 000000000..393b485db
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/eye.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye" viewBox="0 0 16 16">
+ <path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8M1.173 8a13 13 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5s3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5s-3.879-1.168-5.168-2.457A13 13 0 0 1 1.172 8z"/>
+ <path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/eyedropper.svg b/vendor/twbs/bootstrap-icons/icons/eyedropper.svg
new file mode 100644
index 000000000..457988852
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/eyedropper.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eyedropper" viewBox="0 0 16 16">
+ <path d="M13.354.646a1.207 1.207 0 0 0-1.708 0L8.5 3.793l-.646-.647a.5.5 0 1 0-.708.708L8.293 5l-7.147 7.146A.5.5 0 0 0 1 12.5v1.793l-.854.853a.5.5 0 1 0 .708.707L1.707 15H3.5a.5.5 0 0 0 .354-.146L11 7.707l1.146 1.147a.5.5 0 0 0 .708-.708l-.647-.646 3.147-3.146a1.207 1.207 0 0 0 0-1.708zM2 12.707l7-7L10.293 7l-7 7H2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/eyeglasses.svg b/vendor/twbs/bootstrap-icons/icons/eyeglasses.svg
new file mode 100644
index 000000000..6b2eb970a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/eyeglasses.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eyeglasses" viewBox="0 0 16 16">
+ <path d="M4 6a2 2 0 1 1 0 4 2 2 0 0 1 0-4m2.625.547a3 3 0 0 0-5.584.953H.5a.5.5 0 0 0 0 1h.541A3 3 0 0 0 7 8a1 1 0 0 1 2 0 3 3 0 0 0 5.959.5h.541a.5.5 0 0 0 0-1h-.541a3 3 0 0 0-5.584-.953A2 2 0 0 0 8 6c-.532 0-1.016.208-1.375.547M14 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/facebook.svg b/vendor/twbs/bootstrap-icons/icons/facebook.svg
new file mode 100644
index 000000000..5fc7cec17
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/facebook.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-facebook" viewBox="0 0 16 16">
+ <path d="M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fan.svg b/vendor/twbs/bootstrap-icons/icons/fan.svg
new file mode 100644
index 000000000..ec8fe2020
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fan.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fan" viewBox="0 0 16 16">
+ <path d="M10 3c0 1.313-.304 2.508-.8 3.4a2 2 0 0 0-1.484-.38c-.28-.982-.91-2.04-1.838-2.969a8 8 0 0 0-.491-.454A6 6 0 0 1 8 2c.691 0 1.355.117 1.973.332Q10 2.661 10 3m0 5q0 .11-.012.217c1.018-.019 2.2-.353 3.331-1.006a8 8 0 0 0 .57-.361 6 6 0 0 0-2.53-3.823 9 9 0 0 1-.145.64c-.34 1.269-.944 2.346-1.656 3.079.277.343.442.78.442 1.254m-.137.728a2 2 0 0 1-1.07 1.109c.525.87 1.405 1.725 2.535 2.377q.3.174.605.317a6 6 0 0 0 2.053-4.111q-.311.11-.641.199c-1.264.339-2.493.356-3.482.11ZM8 10c-.45 0-.866-.149-1.2-.4-.494.89-.796 2.082-.796 3.391q0 .346.027.678A6 6 0 0 0 8 14c.94 0 1.83-.216 2.623-.602a8 8 0 0 1-.497-.458c-.925-.926-1.555-1.981-1.836-2.96Q8.149 10 8 10M6 8q0-.12.014-.239c-1.02.017-2.205.351-3.34 1.007a8 8 0 0 0-.568.359 6 6 0 0 0 2.525 3.839 8 8 0 0 1 .148-.653c.34-1.267.94-2.342 1.65-3.075A2 2 0 0 1 6 8m-3.347-.632c1.267-.34 2.498-.355 3.488-.107.196-.494.583-.89 1.07-1.1-.524-.874-1.406-1.733-2.541-2.388a8 8 0 0 0-.594-.312 6 6 0 0 0-2.06 4.106q.309-.11.637-.199M8 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fast-forward-btn-fill.svg b/vendor/twbs/bootstrap-icons/icons/fast-forward-btn-fill.svg
new file mode 100644
index 000000000..fd750fed2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fast-forward-btn-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fast-forward-btn-fill" viewBox="0 0 16 16">
+ <path d="M0 4v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2m4.271 1.055a.5.5 0 0 1 .52.038L8 7.386V5.5a.5.5 0 0 1 .79-.407l3.5 2.5a.5.5 0 0 1 0 .814l-3.5 2.5A.5.5 0 0 1 8 10.5V8.614l-3.21 2.293A.5.5 0 0 1 4 10.5v-5a.5.5 0 0 1 .271-.445"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fast-forward-btn.svg b/vendor/twbs/bootstrap-icons/icons/fast-forward-btn.svg
new file mode 100644
index 000000000..5e68554a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fast-forward-btn.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fast-forward-btn" viewBox="0 0 16 16">
+ <path d="M8.79 5.093A.5.5 0 0 0 8 5.5v1.886L4.79 5.093A.5.5 0 0 0 4 5.5v5a.5.5 0 0 0 .79.407L8 8.614V10.5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814z"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fast-forward-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/fast-forward-circle-fill.svg
new file mode 100644
index 000000000..3946fa392
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fast-forward-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fast-forward-circle-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M4.79 5.093 8 7.386V5.5a.5.5 0 0 1 .79-.407l3.5 2.5a.5.5 0 0 1 0 .814l-3.5 2.5A.5.5 0 0 1 8 10.5V8.614l-3.21 2.293A.5.5 0 0 1 4 10.5v-5a.5.5 0 0 1 .79-.407"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fast-forward-circle.svg b/vendor/twbs/bootstrap-icons/icons/fast-forward-circle.svg
new file mode 100644
index 000000000..e7f71581a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fast-forward-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fast-forward-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M4.271 5.055a.5.5 0 0 1 .52.038L8 7.386V5.5a.5.5 0 0 1 .79-.407l3.5 2.5a.5.5 0 0 1 0 .814l-3.5 2.5A.5.5 0 0 1 8 10.5V8.614l-3.21 2.293A.5.5 0 0 1 4 10.5v-5a.5.5 0 0 1 .271-.445"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fast-forward-fill.svg b/vendor/twbs/bootstrap-icons/icons/fast-forward-fill.svg
new file mode 100644
index 000000000..ae17a7eb8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fast-forward-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fast-forward-fill" viewBox="0 0 16 16">
+ <path d="M7.596 7.304a.802.802 0 0 1 0 1.392l-6.363 3.692C.713 12.69 0 12.345 0 11.692V4.308c0-.653.713-.998 1.233-.696z"/>
+ <path d="M15.596 7.304a.802.802 0 0 1 0 1.392l-6.363 3.692C8.713 12.69 8 12.345 8 11.692V4.308c0-.653.713-.998 1.233-.696z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fast-forward.svg b/vendor/twbs/bootstrap-icons/icons/fast-forward.svg
new file mode 100644
index 000000000..2142979fe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fast-forward.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fast-forward" viewBox="0 0 16 16">
+ <path d="M6.804 8 1 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C.713 12.69 0 12.345 0 11.692V4.308c0-.653.713-.998 1.233-.696z"/>
+ <path d="M14.804 8 9 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C8.713 12.69 8 12.345 8 11.692V4.308c0-.653.713-.998 1.233-.696z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/feather.svg b/vendor/twbs/bootstrap-icons/icons/feather.svg
new file mode 100644
index 000000000..f0462c2a6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/feather.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-feather" viewBox="0 0 16 16">
+ <path d="M15.807.531c-.174-.177-.41-.289-.64-.363a3.8 3.8 0 0 0-.833-.15c-.62-.049-1.394 0-2.252.175C10.365.545 8.264 1.415 6.315 3.1S3.147 6.824 2.557 8.523c-.294.847-.44 1.634-.429 2.268.005.316.05.62.154.88q.025.061.056.122A68 68 0 0 0 .08 15.198a.53.53 0 0 0 .157.72.504.504 0 0 0 .705-.16 68 68 0 0 1 2.158-3.26c.285.141.616.195.958.182.513-.02 1.098-.188 1.723-.49 1.25-.605 2.744-1.787 4.303-3.642l1.518-1.55a.53.53 0 0 0 0-.739l-.729-.744 1.311.209a.5.5 0 0 0 .443-.15l.663-.684c.663-.68 1.292-1.325 1.763-1.892.314-.378.585-.752.754-1.107.163-.345.278-.773.112-1.188a.5.5 0 0 0-.112-.172M3.733 11.62C5.385 9.374 7.24 7.215 9.309 5.394l1.21 1.234-1.171 1.196-.027.03c-1.5 1.789-2.891 2.867-3.977 3.393-.544.263-.99.378-1.324.39a1.3 1.3 0 0 1-.287-.018Zm6.769-7.22c1.31-1.028 2.7-1.914 4.172-2.6a7 7 0 0 1-.4.523c-.442.533-1.028 1.134-1.681 1.804l-.51.524zm3.346-3.357C9.594 3.147 6.045 6.8 3.149 10.678c.007-.464.121-1.086.37-1.806.533-1.535 1.65-3.415 3.455-4.976 1.807-1.561 3.746-2.36 5.31-2.68a8 8 0 0 1 1.564-.173"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/feather2.svg b/vendor/twbs/bootstrap-icons/icons/feather2.svg
new file mode 100644
index 000000000..badc17ac2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/feather2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-feather2" viewBox="0 0 16 16">
+ <path d="M7.5 1.063v9.556L6 8.819V3a2 2 0 0 1 1.5-1.937M8 0a3 3 0 0 0-3 3v6a.5.5 0 0 0 .116.32L7.5 12.181V15.5a.5.5 0 0 0 1 0v-3.319l2.384-2.86A.5.5 0 0 0 11 9V3a3 3 0 0 0-3-3m.5 1.063A2 2 0 0 1 10 3v.293l-1.5 1.5zM10 4.707V8.82l-1.5 1.8V6.207z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-arrow-down-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-arrow-down-fill.svg
new file mode 100644
index 000000000..5b5c55227
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-arrow-down-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-arrow-down-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M8 5a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5A.5.5 0 0 1 8 5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-arrow-down.svg b/vendor/twbs/bootstrap-icons/icons/file-arrow-down.svg
new file mode 100644
index 000000000..f504b982a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-arrow-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-arrow-down" viewBox="0 0 16 16">
+ <path d="M8 5a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5A.5.5 0 0 1 8 5"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-arrow-up-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-arrow-up-fill.svg
new file mode 100644
index 000000000..ef5619994
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-arrow-up-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-arrow-up-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M7.5 6.707 6.354 7.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-arrow-up.svg b/vendor/twbs/bootstrap-icons/icons/file-arrow-up.svg
new file mode 100644
index 000000000..9c8846751
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-arrow-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-arrow-up" viewBox="0 0 16 16">
+ <path d="M8 11a.5.5 0 0 0 .5-.5V6.707l1.146 1.147a.5.5 0 0 0 .708-.708l-2-2a.5.5 0 0 0-.708 0l-2 2a.5.5 0 1 0 .708.708L7.5 6.707V10.5a.5.5 0 0 0 .5.5"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-bar-graph-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-bar-graph-fill.svg
new file mode 100644
index 000000000..686b60b8e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-bar-graph-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-bar-graph-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-2 11.5v-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5m-2.5.5a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5zm-3 0a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-bar-graph.svg b/vendor/twbs/bootstrap-icons/icons/file-bar-graph.svg
new file mode 100644
index 000000000..f953927ec
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-bar-graph.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-bar-graph" viewBox="0 0 16 16">
+ <path d="M4.5 12a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5zm3 0a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5zm3 0a.5.5 0 0 1-.5-.5v-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5z"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-binary-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-binary-fill.svg
new file mode 100644
index 000000000..920c2a756
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-binary-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-binary-fill" viewBox="0 0 16 16">
+ <path d="M5.526 9.273c-.542 0-.832.563-.832 1.612q0 .133.006.252l1.56-1.143c-.126-.474-.375-.72-.733-.72zm-.732 2.508c.126.472.372.718.732.718.54 0 .83-.563.83-1.614q0-.129-.006-.25z"/>
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M7.05 10.885c0 1.415-.548 2.206-1.524 2.206C4.548 13.09 4 12.3 4 10.885c0-1.412.548-2.203 1.526-2.203.976 0 1.524.79 1.524 2.203m3.805 1.52V13h-3v-.595h1.181V9.5h-.05l-1.136.747v-.688l1.19-.786h.69v3.633z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-binary.svg b/vendor/twbs/bootstrap-icons/icons/file-binary.svg
new file mode 100644
index 000000000..0ecece7a9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-binary.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-binary" viewBox="0 0 16 16">
+ <path d="M5.526 13.09c.976 0 1.524-.79 1.524-2.205 0-1.412-.548-2.203-1.524-2.203-.978 0-1.526.79-1.526 2.203 0 1.415.548 2.206 1.526 2.206zm-.832-2.205c0-1.05.29-1.612.832-1.612.358 0 .607.247.733.721L4.7 11.137a7 7 0 0 1-.006-.252m.832 1.614c-.36 0-.606-.246-.732-.718l1.556-1.145q.005.12.005.249c0 1.052-.29 1.614-.829 1.614m5.329.501v-.595H9.73V8.772h-.69l-1.19.786v.688L8.986 9.5h.05v2.906h-1.18V13h3z"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-break-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-break-fill.svg
new file mode 100644
index 000000000..bdbe1b967
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-break-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-break-fill" viewBox="0 0 16 16">
+ <path d="M4 0h8a2 2 0 0 1 2 2v7H2V2a2 2 0 0 1 2-2M2 12h12v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zM.5 10a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-break.svg b/vendor/twbs/bootstrap-icons/icons/file-break.svg
new file mode 100644
index 000000000..e94b3a333
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-break.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-break" viewBox="0 0 16 16">
+ <path d="M0 10.5a.5.5 0 0 1 .5-.5h15a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5M12 0H4a2 2 0 0 0-2 2v7h1V2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v7h1V2a2 2 0 0 0-2-2m2 12h-1v2a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-2H2v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-check-fill.svg
new file mode 100644
index 000000000..cf165d319
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-check-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-check-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-1.146 6.854-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 8.793l2.646-2.647a.5.5 0 0 1 .708.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-check.svg b/vendor/twbs/bootstrap-icons/icons/file-check.svg
new file mode 100644
index 000000000..10863e1ad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-check" viewBox="0 0 16 16">
+ <path d="M10.854 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 8.793l2.646-2.647a.5.5 0 0 1 .708 0"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-code-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-code-fill.svg
new file mode 100644
index 000000000..912ed0c79
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-code-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-code-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0 2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 1 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-code.svg b/vendor/twbs/bootstrap-icons/icons/file-code.svg
new file mode 100644
index 000000000..58b00142f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-code.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
+ <path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-diff-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-diff-fill.svg
new file mode 100644
index 000000000..c108b8797
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-diff-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-diff-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M8.5 4.5V6H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V7H6a.5.5 0 0 1 0-1h1.5V4.5a.5.5 0 0 1 1 0M6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-diff.svg b/vendor/twbs/bootstrap-icons/icons/file-diff.svg
new file mode 100644
index 000000000..088c6de71
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-diff.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-diff" viewBox="0 0 16 16">
+ <path d="M8 4a.5.5 0 0 1 .5.5V6H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V7H6a.5.5 0 0 1 0-1h1.5V4.5A.5.5 0 0 1 8 4m-2.5 6.5A.5.5 0 0 1 6 10h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-down-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-down-fill.svg
new file mode 100644
index 000000000..3941f1f31
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-down-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-arrow-down-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m-1 4v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7.5 11.293V7.5a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-down.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-down.svg
new file mode 100644
index 000000000..37c4cd5dd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-arrow-down" viewBox="0 0 16 16">
+ <path d="M8.5 6.5a.5.5 0 0 0-1 0v3.793L6.354 9.146a.5.5 0 1 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 10.293z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-up-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-up-fill.svg
new file mode 100644
index 000000000..97a339d51
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-up-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-arrow-up-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M6.354 9.854a.5.5 0 0 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 8.707V12.5a.5.5 0 0 1-1 0V8.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-up.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-up.svg
new file mode 100644
index 000000000..1c827e916
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-arrow-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-arrow-up" viewBox="0 0 16 16">
+ <path d="M8.5 11.5a.5.5 0 0 1-1 0V7.707L6.354 8.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 7.707z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-bar-graph-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-bar-graph-fill.svg
new file mode 100644
index 000000000..a4c69b5c2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-bar-graph-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-bar-graph-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m.5 10v-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5m-2.5.5a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5zm-3 0a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-bar-graph.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-bar-graph.svg
new file mode 100644
index 000000000..d367eca20
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-bar-graph.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-bar-graph" viewBox="0 0 16 16">
+ <path d="M10 13.5a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-6a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-2.5.5a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5zm-3 0a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-binary-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-binary-fill.svg
new file mode 100644
index 000000000..a1f99334a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-binary-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-binary-fill" viewBox="0 0 16 16">
+ <path d="M5.526 10.273c-.542 0-.832.563-.832 1.612q0 .133.006.252l1.559-1.143c-.126-.474-.375-.72-.733-.72zm-.732 2.508c.126.472.372.718.732.718.54 0 .83-.563.83-1.614q0-.129-.006-.25z"/>
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m-2.45 8.385c0 1.415-.548 2.206-1.524 2.206C4.548 14.09 4 13.3 4 11.885c0-1.412.548-2.203 1.526-2.203.976 0 1.524.79 1.524 2.203m3.805 1.52V14h-3v-.595h1.181V10.5h-.05l-1.136.747v-.688l1.19-.786h.69v3.633z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-binary.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-binary.svg
new file mode 100644
index 000000000..1528578a6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-binary.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-binary" viewBox="0 0 16 16">
+ <path d="M7.05 11.885c0 1.415-.548 2.206-1.524 2.206C4.548 14.09 4 13.3 4 11.885c0-1.412.548-2.203 1.526-2.203.976 0 1.524.79 1.524 2.203m-1.524-1.612c-.542 0-.832.563-.832 1.612q0 .133.006.252l1.559-1.143c-.126-.474-.375-.72-.733-.72zm-.732 2.508c.126.472.372.718.732.718.54 0 .83-.563.83-1.614q0-.129-.006-.25zm6.061.624V14h-3v-.595h1.181V10.5h-.05l-1.136.747v-.688l1.19-.786h.69v3.633z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-break-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-break-fill.svg
new file mode 100644
index 000000000..e9aadce47
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-break-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-break-fill" viewBox="0 0 16 16">
+ <path d="M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V9H2V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2zM2 12h12v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zM.5 10a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-break.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-break.svg
new file mode 100644
index 000000000..48747151b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-break.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-break" viewBox="0 0 16 16">
+ <path d="M14 4.5V9h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v7H2V2a2 2 0 0 1 2-2h5.5zM13 12h1v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-2h1v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1zM.5 10a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-check-fill.svg
new file mode 100644
index 000000000..f3e9eb386
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-check-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-check-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m1.354 4.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-check.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-check.svg
new file mode 100644
index 000000000..dc36963b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-check" viewBox="0 0 16 16">
+ <path d="M10.854 7.854a.5.5 0 0 0-.708-.708L7.5 9.793 6.354 8.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-code-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-code-fill.svg
new file mode 100644
index 000000000..2c154fa56
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-code-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-code-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M6.646 7.646a.5.5 0 1 1 .708.708L5.707 10l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0 2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 10 8.646 8.354a.5.5 0 1 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-code.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-code.svg
new file mode 100644
index 000000000..ccd352887
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-code.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-code" viewBox="0 0 16 16">
+ <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/>
+ <path d="M8.646 6.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 9 8.646 7.354a.5.5 0 0 1 0-.708m-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 9l1.647-1.646a.5.5 0 0 0 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-diff-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-diff-fill.svg
new file mode 100644
index 000000000..3b71e66ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-diff-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-diff-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M8 6a.5.5 0 0 1 .5.5V8H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V9H6a.5.5 0 0 1 0-1h1.5V6.5A.5.5 0 0 1 8 6m-2.5 6.5A.5.5 0 0 1 6 12h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-diff.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-diff.svg
new file mode 100644
index 000000000..97dfc0b97
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-diff.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-diff" viewBox="0 0 16 16">
+ <path d="M8 5a.5.5 0 0 1 .5.5V7H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V8H6a.5.5 0 0 1 0-1h1.5V5.5A.5.5 0 0 1 8 5m-2.5 6.5A.5.5 0 0 1 6 11h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-easel-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-easel-fill.svg
new file mode 100644
index 000000000..e74c97426
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-easel-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-easel-fill" viewBox="0 0 16 16">
+ <path d="M5 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/>
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M8.5 6h2A1.5 1.5 0 0 1 12 7.5v2a1.5 1.5 0 0 1-1.5 1.5h-.473l.447 1.342a.5.5 0 0 1-.948.316L8.973 11H8.5v1a.5.5 0 0 1-1 0v-1h-.473l-.553 1.658a.5.5 0 1 1-.948-.316L5.973 11H5.5A1.5 1.5 0 0 1 4 9.5v-2A1.5 1.5 0 0 1 5.5 6h2a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-easel.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-easel.svg
new file mode 100644
index 000000000..2feeabc28
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-easel.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-easel" viewBox="0 0 16 16">
+ <path d="M8.5 6a.5.5 0 1 0-1 0h-2A1.5 1.5 0 0 0 4 7.5v2A1.5 1.5 0 0 0 5.5 11h.473l-.447 1.342a.5.5 0 1 0 .948.316L7.027 11H7.5v1a.5.5 0 0 0 1 0v-1h.473l.553 1.658a.5.5 0 1 0 .948-.316L10.027 11h.473A1.5 1.5 0 0 0 12 9.5v-2A1.5 1.5 0 0 0 10.5 6zM5 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-excel-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-excel-fill.svg
new file mode 100644
index 000000000..405a572a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-excel-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-excel-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M5.884 6.68 8 9.219l2.116-2.54a.5.5 0 1 1 .768.641L8.651 10l2.233 2.68a.5.5 0 0 1-.768.64L8 10.781l-2.116 2.54a.5.5 0 0 1-.768-.641L7.349 10 5.116 7.32a.5.5 0 1 1 .768-.64"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-excel.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-excel.svg
new file mode 100644
index 000000000..5432bcff1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-excel.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-excel" viewBox="0 0 16 16">
+ <path d="M5.884 6.68a.5.5 0 1 0-.768.64L7.349 10l-2.233 2.68a.5.5 0 0 0 .768.64L8 10.781l2.116 2.54a.5.5 0 0 0 .768-.641L8.651 10l2.233-2.68a.5.5 0 0 0-.768-.64L8 9.219l-2.116-2.54z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-fill.svg
new file mode 100644
index 000000000..2f3ef6c5f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-fill" viewBox="0 0 16 16">
+ <path d="M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-font-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-font-fill.svg
new file mode 100644
index 000000000..d3014bf86
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-font-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-font-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M5.057 6h5.886L11 8h-.5c-.18-1.096-.356-1.192-1.694-1.235l-.298-.01v5.09c0 .47.1.582.903.655v.5H6.59v-.5c.799-.073.898-.184.898-.654V6.755l-.293.01C5.856 6.808 5.68 6.905 5.5 8H5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-font.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-font.svg
new file mode 100644
index 000000000..c9864cd0e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-font.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-font" viewBox="0 0 16 16">
+ <path d="M10.943 6H5.057L5 8h.5c.18-1.096.356-1.192 1.694-1.235l.293-.01v5.09c0 .47-.1.582-.898.655v.5H9.41v-.5c-.803-.073-.903-.184-.903-.654V6.755l.298.01c1.338.043 1.514.14 1.694 1.235h.5l-.057-2z"/>
+ <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-image-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-image-fill.svg
new file mode 100644
index 000000000..3ec76dc97
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-image-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-image-fill" viewBox="0 0 16 16">
+ <path d="M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707v5.586l-2.73-2.73a1 1 0 0 0-1.52.127l-1.889 2.644-1.769-1.062a1 1 0 0 0-1.222.15L2 12.292V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2zm-1.498 4a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+ <path d="M10.564 8.27 14 11.708V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-.293l3.578-3.577 2.56 1.536 2.426-3.395z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-image.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-image.svg
new file mode 100644
index 000000000..1c3815d8a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-image.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-image" viewBox="0 0 16 16">
+ <path d="M6.502 7a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/>
+ <path d="M14 14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zM4 1a1 1 0 0 0-1 1v10l2.224-2.224a.5.5 0 0 1 .61-.075L8 11l2.157-3.02a.5.5 0 0 1 .76-.063L13 10V4.5h-2A1.5 1.5 0 0 1 9.5 3V1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-lock-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-lock-fill.svg
new file mode 100644
index 000000000..4c45a615f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-lock-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-lock-fill" viewBox="0 0 16 16">
+ <path d="M7 7a1 1 0 0 1 2 0v1H7zM6 9.3c0-.042.02-.107.105-.175A.64.64 0 0 1 6.5 9h3a.64.64 0 0 1 .395.125c.085.068.105.133.105.175v2.4c0 .042-.02.107-.105.175A.64.64 0 0 1 9.5 12h-3a.64.64 0 0 1-.395-.125C6.02 11.807 6 11.742 6 11.7z"/>
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-lock.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-lock.svg
new file mode 100644
index 000000000..c8319a62d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-lock.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-lock" viewBox="0 0 16 16">
+ <path d="M10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0M7 7v1h2V7a1 1 0 0 0-2 0M6 9.3v2.4c0 .042.02.107.105.175A.64.64 0 0 0 6.5 12h3a.64.64 0 0 0 .395-.125c.085-.068.105-.133.105-.175V9.3c0-.042-.02-.107-.105-.175A.64.64 0 0 0 9.5 9h-3a.64.64 0 0 0-.395.125C6.02 9.193 6 9.258 6 9.3"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-lock2-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-lock2-fill.svg
new file mode 100644
index 000000000..76e8bd8af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-lock2-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-lock2-fill" viewBox="0 0 16 16">
+ <path d="M7 7a1 1 0 0 1 2 0v1H7z"/>
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-lock2.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-lock2.svg
new file mode 100644
index 000000000..bd8f592d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-lock2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-lock2" viewBox="0 0 16 16">
+ <path d="M10 7v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V9.3c0-.627.46-1.058 1-1.224V7a2 2 0 1 1 4 0M7 7v1h2V7a1 1 0 0 0-2 0"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-medical-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-medical-fill.svg
new file mode 100644
index 000000000..42a0581c1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-medical-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-medical-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m-3 2v.634l.549-.317a.5.5 0 1 1 .5.866L7 7l.549.317a.5.5 0 1 1-.5.866L6.5 7.866V8.5a.5.5 0 0 1-1 0v-.634l-.549.317a.5.5 0 1 1-.5-.866L5 7l-.549-.317a.5.5 0 0 1 .5-.866l.549.317V5.5a.5.5 0 1 1 1 0m-2 4.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1m0 2h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-medical.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-medical.svg
new file mode 100644
index 000000000..e24c90c4a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-medical.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-medical" viewBox="0 0 16 16">
+ <path d="M7.5 5.5a.5.5 0 0 0-1 0v.634l-.549-.317a.5.5 0 1 0-.5.866L6 7l-.549.317a.5.5 0 1 0 .5.866l.549-.317V8.5a.5.5 0 1 0 1 0v-.634l.549.317a.5.5 0 1 0 .5-.866L8 7l.549-.317a.5.5 0 1 0-.5-.866l-.549.317zm-2 4.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-minus-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-minus-fill.svg
new file mode 100644
index 000000000..a5dca2dfc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-minus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-minus-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M6 8.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-minus.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-minus.svg
new file mode 100644
index 000000000..cdc00262e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-minus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-minus" viewBox="0 0 16 16">
+ <path d="M5.5 9a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+ <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-music-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-music-fill.svg
new file mode 100644
index 000000000..b865e4eb7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-music-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-music-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M11 6.64v1.75l-2 .5v3.61c0 .495-.301.883-.662 1.123C7.974 13.866 7.499 14 7 14s-.974-.134-1.338-.377C5.302 13.383 5 12.995 5 12.5s.301-.883.662-1.123C6.026 11.134 6.501 11 7 11c.356 0 .7.068 1 .196V6.89a1 1 0 0 1 .757-.97l1-.25A1 1 0 0 1 11 6.64"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-music.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-music.svg
new file mode 100644
index 000000000..e18ec8551
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-music.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-music" viewBox="0 0 16 16">
+ <path d="M11 6.64a1 1 0 0 0-1.243-.97l-1 .25A1 1 0 0 0 8 6.89v4.306A2.6 2.6 0 0 0 7 11c-.5 0-.974.134-1.338.377-.36.24-.662.628-.662 1.123s.301.883.662 1.123c.364.243.839.377 1.338.377s.974-.134 1.338-.377c.36-.24.662-.628.662-1.123V8.89l2-.5z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-pdf-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-pdf-fill.svg
new file mode 100644
index 000000000..219c5a31a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-pdf-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-pdf-fill" viewBox="0 0 16 16">
+ <path d="M5.523 12.424q.21-.124.459-.238a8 8 0 0 1-.45.606c-.28.337-.498.516-.635.572l-.035.012a.3.3 0 0 1-.026-.044c-.056-.11-.054-.216.04-.36.106-.165.319-.354.647-.548m2.455-1.647q-.178.037-.356.078a21 21 0 0 0 .5-1.05 12 12 0 0 0 .51.858q-.326.048-.654.114m2.525.939a4 4 0 0 1-.435-.41q.344.007.612.054c.317.057.466.147.518.209a.1.1 0 0 1 .026.064.44.44 0 0 1-.06.2.3.3 0 0 1-.094.124.1.1 0 0 1-.069.015c-.09-.003-.258-.066-.498-.256M8.278 6.97c-.04.244-.108.524-.2.829a5 5 0 0 1-.089-.346c-.076-.353-.087-.63-.046-.822.038-.177.11-.248.196-.283a.5.5 0 0 1 .145-.04c.013.03.028.092.032.198q.008.183-.038.465z"/>
+ <path fill-rule="evenodd" d="M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2zM4.165 13.668c.09.18.23.343.438.419.207.075.412.04.58-.03.318-.13.635-.436.926-.786.333-.401.683-.927 1.021-1.51a11.7 11.7 0 0 1 1.997-.406c.3.383.61.713.91.95.28.22.603.403.934.417a.86.86 0 0 0 .51-.138c.155-.101.27-.247.354-.416.09-.181.145-.37.138-.563a.84.84 0 0 0-.2-.518c-.226-.27-.596-.4-.96-.465a5.8 5.8 0 0 0-1.335-.05 11 11 0 0 1-.98-1.686c.25-.66.437-1.284.52-1.794.036-.218.055-.426.048-.614a1.24 1.24 0 0 0-.127-.538.7.7 0 0 0-.477-.365c-.202-.043-.41 0-.601.077-.377.15-.576.47-.651.823-.073.34-.04.736.046 1.136.088.406.238.848.43 1.295a20 20 0 0 1-1.062 2.227 7.7 7.7 0 0 0-1.482.645c-.37.22-.699.48-.897.787-.21.326-.275.714-.08 1.103"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-pdf.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-pdf.svg
new file mode 100644
index 000000000..51b9975d9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-pdf.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-pdf" viewBox="0 0 16 16">
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+ <path d="M4.603 14.087a.8.8 0 0 1-.438-.42c-.195-.388-.13-.776.08-1.102.198-.307.526-.568.897-.787a7.7 7.7 0 0 1 1.482-.645 20 20 0 0 0 1.062-2.227 7.3 7.3 0 0 1-.43-1.295c-.086-.4-.119-.796-.046-1.136.075-.354.274-.672.65-.823.192-.077.4-.12.602-.077a.7.7 0 0 1 .477.365c.088.164.12.356.127.538.007.188-.012.396-.047.614-.084.51-.27 1.134-.52 1.794a11 11 0 0 0 .98 1.686 5.8 5.8 0 0 1 1.334.05c.364.066.734.195.96.465.12.144.193.32.2.518.007.192-.047.382-.138.563a1.04 1.04 0 0 1-.354.416.86.86 0 0 1-.51.138c-.331-.014-.654-.196-.933-.417a5.7 5.7 0 0 1-.911-.95 11.7 11.7 0 0 0-1.997.406 11.3 11.3 0 0 1-1.02 1.51c-.292.35-.609.656-.927.787a.8.8 0 0 1-.58.029m1.379-1.901q-.25.115-.459.238c-.328.194-.541.383-.647.547-.094.145-.096.25-.04.361q.016.032.026.044l.035-.012c.137-.056.355-.235.635-.572a8 8 0 0 0 .45-.606m1.64-1.33a13 13 0 0 1 1.01-.193 12 12 0 0 1-.51-.858 21 21 0 0 1-.5 1.05zm2.446.45q.226.245.435.41c.24.19.407.253.498.256a.1.1 0 0 0 .07-.015.3.3 0 0 0 .094-.125.44.44 0 0 0 .059-.2.1.1 0 0 0-.026-.063c-.052-.062-.2-.152-.518-.209a4 4 0 0 0-.612-.053zM8.078 7.8a7 7 0 0 0 .2-.828q.046-.282.038-.465a.6.6 0 0 0-.032-.198.5.5 0 0 0-.145.04c-.087.035-.158.106-.196.283-.04.192-.03.469.046.822q.036.167.09.346z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-person-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-person-fill.svg
new file mode 100644
index 000000000..49ceda6ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-person-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-person-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0m2 5.755V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-.245S4 12 8 12s5 1.755 5 1.755"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-person.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-person.svg
new file mode 100644
index 000000000..08a78cc49
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-person.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-person" viewBox="0 0 16 16">
+ <path d="M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2v9.255S12 12 8 12s-5 1.755-5 1.755V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-play-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-play-fill.svg
new file mode 100644
index 000000000..341eb37d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-play-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-play-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M6 6.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43V6.884z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-play.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-play.svg
new file mode 100644
index 000000000..abe215b09
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-play.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-play" viewBox="0 0 16 16">
+ <path d="M6 6.883v4.234a.5.5 0 0 0 .757.429l3.528-2.117a.5.5 0 0 0 0-.858L6.757 6.454a.5.5 0 0 0-.757.43z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-plus-fill.svg
new file mode 100644
index 000000000..ef99c8a4b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-plus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-plus-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M8.5 7v1.5H10a.5.5 0 0 1 0 1H8.5V11a.5.5 0 0 1-1 0V9.5H6a.5.5 0 0 1 0-1h1.5V7a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-plus.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-plus.svg
new file mode 100644
index 000000000..964e8556b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-plus" viewBox="0 0 16 16">
+ <path d="M8 6.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V11a.5.5 0 0 1-1 0V9.5H6a.5.5 0 0 1 0-1h1.5V7a.5.5 0 0 1 .5-.5"/>
+ <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-post-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-post-fill.svg
new file mode 100644
index 000000000..548773f1c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-post-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-post-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m-5-.5H7a.5.5 0 0 1 0 1H4.5a.5.5 0 0 1 0-1m0 3h7a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-post.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-post.svg
new file mode 100644
index 000000000..d9f44a161
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-post.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-post" viewBox="0 0 16 16">
+ <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/>
+ <path d="M4 6.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5H7a.5.5 0 0 1 0 1H4.5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-ppt-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-ppt-fill.svg
new file mode 100644
index 000000000..e96a4615f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-ppt-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-ppt-fill" viewBox="0 0 16 16">
+ <path d="M8.188 10H7V6.5h1.188a1.75 1.75 0 1 1 0 3.5"/>
+ <path d="M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2zM7 5.5a1 1 0 0 0-1 1V13a.5.5 0 0 0 1 0v-2h1.188a2.75 2.75 0 0 0 0-5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-ppt.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-ppt.svg
new file mode 100644
index 000000000..cab71bcaa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-ppt.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-ppt" viewBox="0 0 16 16">
+ <path d="M7 5.5a1 1 0 0 0-1 1V13a.5.5 0 0 0 1 0v-2h1.188a2.75 2.75 0 0 0 0-5.5zM8.188 10H7V6.5h1.188a1.75 1.75 0 1 1 0 3.5"/>
+ <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-richtext-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-richtext-fill.svg
new file mode 100644
index 000000000..55da25ce7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-richtext-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-richtext-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M7 6.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V9.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V9s1.54-1.274 1.639-1.208M5 11h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1m0 2h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-richtext.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-richtext.svg
new file mode 100644
index 000000000..3f3a6ad74
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-richtext.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-richtext" viewBox="0 0 16 16">
+ <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/>
+ <path d="M4.5 12.5A.5.5 0 0 1 5 12h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5m0-2A.5.5 0 0 1 5 10h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5m1.639-3.708 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V8.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V8s1.54-1.274 1.639-1.208M6.25 6a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-ruled-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-ruled-fill.svg
new file mode 100644
index 000000000..ee90c80ba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-ruled-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-ruled-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M3 9h10v1H6v2h7v1H6v2H5v-2H3v-1h2v-2H3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-ruled.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-ruled.svg
new file mode 100644
index 000000000..ebd617ecd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-ruled.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-ruled" viewBox="0 0 16 16">
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V9H3V2a1 1 0 0 1 1-1h5.5zM3 12v-2h2v2zm0 1h2v2H4a1 1 0 0 1-1-1zm3 2v-2h7v1a1 1 0 0 1-1 1zm7-3H6v-2h7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-slides-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-slides-fill.svg
new file mode 100644
index 000000000..e7f76f407
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-slides-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-slides-fill" viewBox="0 0 16 16">
+ <path d="M7 9.78V7.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 9.778z"/>
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M5 6h6a.5.5 0 0 1 .496.438l.5 4A.5.5 0 0 1 11.5 11h-3v2.016c.863.055 1.5.251 1.5.484 0 .276-.895.5-2 .5s-2-.224-2-.5c0-.233.637-.429 1.5-.484V11h-3a.5.5 0 0 1-.496-.562l.5-4A.5.5 0 0 1 5 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-slides.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-slides.svg
new file mode 100644
index 000000000..e643cd34c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-slides.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-slides" viewBox="0 0 16 16">
+ <path d="M5 6a.5.5 0 0 0-.496.438l-.5 4A.5.5 0 0 0 4.5 11h3v2.016c-.863.055-1.5.251-1.5.484 0 .276.895.5 2 .5s2-.224 2-.5c0-.233-.637-.429-1.5-.484V11h3a.5.5 0 0 0 .496-.562l-.5-4A.5.5 0 0 0 11 6zm2 3.78V7.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 9.778z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-spreadsheet-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-spreadsheet-fill.svg
new file mode 100644
index 000000000..02ac9ec15
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-spreadsheet-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-spreadsheet-fill" viewBox="0 0 16 16">
+ <path d="M6 12v-2h3v2z"/>
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M3 9h10v1h-3v2h3v1h-3v2H9v-2H6v2H5v-2H3v-1h2v-2H3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-spreadsheet.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-spreadsheet.svg
new file mode 100644
index 000000000..a6bb6e4c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-spreadsheet.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-spreadsheet" viewBox="0 0 16 16">
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V9H3V2a1 1 0 0 1 1-1h5.5zM3 12v-2h2v2zm0 1h2v2H4a1 1 0 0 1-1-1zm3 2v-2h3v2zm4 0v-2h3v1a1 1 0 0 1-1 1zm3-3h-3v-2h3zm-7 0v-2h3v2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-text-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-text-fill.svg
new file mode 100644
index 000000000..bfedd6b3a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-text-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-text-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M4.5 9a.5.5 0 0 1 0-1h7a.5.5 0 0 1 0 1zM4 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m.5 2.5a.5.5 0 0 1 0-1h4a.5.5 0 0 1 0 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-text.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-text.svg
new file mode 100644
index 000000000..7ae53fc4a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-text.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-text" viewBox="0 0 16 16">
+ <path d="M5.5 7a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zM5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+ <path d="M9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5zm0 1v2A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-word-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-word-fill.svg
new file mode 100644
index 000000000..259e7673d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-word-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-word-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M5.485 6.879l1.036 4.144.997-3.655a.5.5 0 0 1 .964 0l.997 3.655 1.036-4.144a.5.5 0 0 1 .97.242l-1.5 6a.5.5 0 0 1-.967.01L8 9.402l-1.018 3.73a.5.5 0 0 1-.967-.01l-1.5-6a.5.5 0 1 1 .97-.242z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-word.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-word.svg
new file mode 100644
index 000000000..ef4727cd1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-word.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-word" viewBox="0 0 16 16">
+ <path d="M5.485 6.879a.5.5 0 1 0-.97.242l1.5 6a.5.5 0 0 0 .967.01L8 9.402l1.018 3.73a.5.5 0 0 0 .967-.01l1.5-6a.5.5 0 0 0-.97-.242l-1.036 4.144-.997-3.655a.5.5 0 0 0-.964 0l-.997 3.655L5.485 6.88z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-x-fill.svg
new file mode 100644
index 000000000..f683966e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-x-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-x-fill" viewBox="0 0 16 16">
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M6.854 7.146 8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 1 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-x.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-x.svg
new file mode 100644
index 000000000..4dd9da98f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-x" viewBox="0 0 16 16">
+ <path d="M6.854 7.146a.5.5 0 1 0-.708.708L7.293 9l-1.147 1.146a.5.5 0 0 0 .708.708L8 9.707l1.146 1.147a.5.5 0 0 0 .708-.708L8.707 9l1.147-1.146a.5.5 0 0 0-.708-.708L8 8.293z"/>
+ <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2M9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-zip-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-zip-fill.svg
new file mode 100644
index 000000000..a17fa9ee9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-zip-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-zip-fill" viewBox="0 0 16 16">
+ <path d="M5.5 9.438V8.5h1v.938a1 1 0 0 0 .03.243l.4 1.598-.93.62-.93-.62.4-1.598a1 1 0 0 0 .03-.243"/>
+ <path d="M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1m-4-.5V2h-1V1H6v1h1v1H6v1h1v1H6v1h1v1H5.5V6h-1V5h1V4h-1V3zm0 4.5h1a1 1 0 0 1 1 1v.938l.4 1.599a1 1 0 0 1-.416 1.074l-.93.62a1 1 0 0 1-1.109 0l-.93-.62a1 1 0 0 1-.415-1.074l.4-1.599V8.5a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark-zip.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark-zip.svg
new file mode 100644
index 000000000..f5f8ccc0e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark-zip.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-zip" viewBox="0 0 16 16">
+ <path d="M5 7.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v.938l.4 1.599a1 1 0 0 1-.416 1.074l-.93.62a1 1 0 0 1-1.11 0l-.929-.62a1 1 0 0 1-.415-1.074L5 8.438zm2 0H6v.938a1 1 0 0 1-.03.243l-.4 1.598.93.62.929-.62-.4-1.598A1 1 0 0 1 7 8.438z"/>
+ <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1h-2v1h-1v1h1v1h-1v1h1v1H6V5H5V4h1V3H5V2h1V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-earmark.svg b/vendor/twbs/bootstrap-icons/icons/file-earmark.svg
new file mode 100644
index 000000000..d8d8774d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-earmark.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark" viewBox="0 0 16 16">
+ <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-easel-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-easel-fill.svg
new file mode 100644
index 000000000..fa9f91585
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-easel-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-easel-fill" viewBox="0 0 16 16">
+ <path d="M5 6.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/>
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M8.5 5h2A1.5 1.5 0 0 1 12 6.5v2a1.5 1.5 0 0 1-1.5 1.5h-.473l.447 1.342a.5.5 0 0 1-.948.316L8.973 10H8.5v1a.5.5 0 0 1-1 0v-1h-.473l-.553 1.658a.5.5 0 1 1-.948-.316L5.973 10H5.5A1.5 1.5 0 0 1 4 8.5v-2A1.5 1.5 0 0 1 5.5 5h2a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-easel.svg b/vendor/twbs/bootstrap-icons/icons/file-easel.svg
new file mode 100644
index 000000000..6366bc085
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-easel.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-easel" viewBox="0 0 16 16">
+ <path d="M8.5 5a.5.5 0 1 0-1 0h-2A1.5 1.5 0 0 0 4 6.5v2A1.5 1.5 0 0 0 5.5 10h.473l-.447 1.342a.5.5 0 1 0 .948.316L7.027 10H7.5v1a.5.5 0 0 0 1 0v-1h.473l.553 1.658a.5.5 0 1 0 .948-.316L10.027 10h.473A1.5 1.5 0 0 0 12 8.5v-2A1.5 1.5 0 0 0 10.5 5zM5 6.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-excel-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-excel-fill.svg
new file mode 100644
index 000000000..bddcea2be
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-excel-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-excel-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M5.884 4.68 8 7.219l2.116-2.54a.5.5 0 1 1 .768.641L8.651 8l2.233 2.68a.5.5 0 0 1-.768.64L8 8.781l-2.116 2.54a.5.5 0 0 1-.768-.641L7.349 8 5.116 5.32a.5.5 0 1 1 .768-.64"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-excel.svg b/vendor/twbs/bootstrap-icons/icons/file-excel.svg
new file mode 100644
index 000000000..8bf2f5e7b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-excel.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-excel" viewBox="0 0 16 16">
+ <path d="M5.18 4.616a.5.5 0 0 1 .704.064L8 7.219l2.116-2.54a.5.5 0 1 1 .768.641L8.651 8l2.233 2.68a.5.5 0 0 1-.768.64L8 8.781l-2.116 2.54a.5.5 0 0 1-.768-.641L7.349 8 5.116 5.32a.5.5 0 0 1 .064-.704"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-fill.svg
new file mode 100644
index 000000000..e5f8c4ae4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-font-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-font-fill.svg
new file mode 100644
index 000000000..6bda7b1d6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-font-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-font-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M5.057 4h5.886L11 6h-.5c-.18-1.096-.356-1.192-1.694-1.235l-.298-.01v6.09c0 .47.1.582.903.655v.5H6.59v-.5c.799-.073.898-.184.898-.654V4.755l-.293.01C5.856 4.808 5.68 4.905 5.5 6H5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-font.svg b/vendor/twbs/bootstrap-icons/icons/file-font.svg
new file mode 100644
index 000000000..b75f9a4ba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-font.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-font" viewBox="0 0 16 16">
+ <path d="M10.943 4H5.057L5 6h.5c.18-1.096.356-1.192 1.694-1.235l.293-.01v6.09c0 .47-.1.582-.898.655v.5H9.41v-.5c-.803-.073-.903-.184-.903-.654V4.755l.298.01c1.338.043 1.514.14 1.694 1.235h.5l-.057-2z"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-image-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-image-fill.svg
new file mode 100644
index 000000000..7c73ece46
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-image-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-image-fill" viewBox="0 0 16 16">
+ <path d="M4 0h8a2 2 0 0 1 2 2v8.293l-2.73-2.73a1 1 0 0 0-1.52.127l-1.889 2.644-1.769-1.062a1 1 0 0 0-1.222.15L2 12.292V2a2 2 0 0 1 2-2m4.002 5.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+ <path d="M10.564 8.27 14 11.708V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-.293l3.578-3.577 2.56 1.536 2.426-3.395z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-image.svg b/vendor/twbs/bootstrap-icons/icons/file-image.svg
new file mode 100644
index 000000000..b063628bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-image.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-image" viewBox="0 0 16 16">
+ <path d="M8.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M3 2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v8l-2.083-2.083a.5.5 0 0 0-.76.063L8 11 5.835 9.7a.5.5 0 0 0-.611.076L3 12z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-lock-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-lock-fill.svg
new file mode 100644
index 000000000..1f7c3f228
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-lock-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-lock-fill" viewBox="0 0 16 16">
+ <path d="M7 6a1 1 0 0 1 2 0v1H7zM6 8.3c0-.042.02-.107.105-.175A.64.64 0 0 1 6.5 8h3a.64.64 0 0 1 .395.125c.085.068.105.133.105.175v2.4c0 .042-.02.107-.105.175A.64.64 0 0 1 9.5 11h-3a.64.64 0 0 1-.395-.125C6.02 10.807 6 10.742 6 10.7z"/>
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-2 6v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V8.3c0-.627.46-1.058 1-1.224V6a2 2 0 1 1 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-lock.svg b/vendor/twbs/bootstrap-icons/icons/file-lock.svg
new file mode 100644
index 000000000..195deefc4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-lock.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-lock" viewBox="0 0 16 16">
+ <path d="M8 5a1 1 0 0 1 1 1v1H7V6a1 1 0 0 1 1-1m2 2.076V6a2 2 0 1 0-4 0v1.076c-.54.166-1 .597-1 1.224v2.4c0 .816.781 1.3 1.5 1.3h3c.719 0 1.5-.484 1.5-1.3V8.3c0-.627-.46-1.058-1-1.224M6.105 8.125A.64.64 0 0 1 6.5 8h3a.64.64 0 0 1 .395.125c.085.068.105.133.105.175v2.4c0 .042-.02.107-.105.175A.64.64 0 0 1 9.5 11h-3a.64.64 0 0 1-.395-.125C6.02 10.807 6 10.742 6 10.7V8.3c0-.042.02-.107.105-.175"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-lock2-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-lock2-fill.svg
new file mode 100644
index 000000000..82426e8f8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-lock2-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-lock2-fill" viewBox="0 0 16 16">
+ <path d="M7 6a1 1 0 0 1 2 0v1H7z"/>
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-2 6v1.076c.54.166 1 .597 1 1.224v2.4c0 .816-.781 1.3-1.5 1.3h-3c-.719 0-1.5-.484-1.5-1.3V8.3c0-.627.46-1.058 1-1.224V6a2 2 0 1 1 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-lock2.svg b/vendor/twbs/bootstrap-icons/icons/file-lock2.svg
new file mode 100644
index 000000000..125a74771
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-lock2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-lock2" viewBox="0 0 16 16">
+ <path d="M8 5a1 1 0 0 1 1 1v1H7V6a1 1 0 0 1 1-1m2 2.076V6a2 2 0 1 0-4 0v1.076c-.54.166-1 .597-1 1.224v2.4c0 .816.781 1.3 1.5 1.3h3c.719 0 1.5-.484 1.5-1.3V8.3c0-.627-.46-1.058-1-1.224"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-medical-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-medical-fill.svg
new file mode 100644
index 000000000..2f4d3b2b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-medical-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-medical-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M8.5 4.5v.634l.549-.317a.5.5 0 1 1 .5.866L9 6l.549.317a.5.5 0 1 1-.5.866L8.5 6.866V7.5a.5.5 0 0 1-1 0v-.634l-.549.317a.5.5 0 1 1-.5-.866L7 6l-.549-.317a.5.5 0 0 1 .5-.866l.549.317V4.5a.5.5 0 1 1 1 0M5.5 9h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1m0 2h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-medical.svg b/vendor/twbs/bootstrap-icons/icons/file-medical.svg
new file mode 100644
index 000000000..07e84957b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-medical.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-medical" viewBox="0 0 16 16">
+ <path d="M8.5 4.5a.5.5 0 0 0-1 0v.634l-.549-.317a.5.5 0 1 0-.5.866L7 6l-.549.317a.5.5 0 1 0 .5.866l.549-.317V7.5a.5.5 0 1 0 1 0v-.634l.549.317a.5.5 0 1 0 .5-.866L9 6l.549-.317a.5.5 0 1 0-.5-.866l-.549.317zM5.5 9a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-minus-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-minus-fill.svg
new file mode 100644
index 000000000..99f7d53dd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-minus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-minus-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M6 7.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-minus.svg b/vendor/twbs/bootstrap-icons/icons/file-minus.svg
new file mode 100644
index 000000000..880409b0d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-minus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-minus" viewBox="0 0 16 16">
+ <path d="M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-music-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-music-fill.svg
new file mode 100644
index 000000000..38099f33e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-music-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-music-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-.5 4.11v1.8l-2.5.5v5.09c0 .495-.301.883-.662 1.123C7.974 12.866 7.499 13 7 13s-.974-.134-1.338-.377C5.302 12.383 5 11.995 5 11.5s.301-.883.662-1.123C6.026 10.134 6.501 10 7 10c.356 0 .7.068 1 .196V4.41a1 1 0 0 1 .804-.98l1.5-.3a1 1 0 0 1 1.196.98"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-music.svg b/vendor/twbs/bootstrap-icons/icons/file-music.svg
new file mode 100644
index 000000000..a24d41e4c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-music.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-music" viewBox="0 0 16 16">
+ <path d="M10.304 3.13a1 1 0 0 1 1.196.98v1.8l-2.5.5v5.09c0 .495-.301.883-.662 1.123C7.974 12.866 7.499 13 7 13s-.974-.134-1.338-.377C5.302 12.383 5 11.995 5 11.5s.301-.883.662-1.123C6.026 10.134 6.501 10 7 10c.356 0 .7.068 1 .196V4.41a1 1 0 0 1 .804-.98z"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-pdf-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-pdf-fill.svg
new file mode 100644
index 000000000..c88d1b855
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-pdf-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-pdf-fill" viewBox="0 0 16 16">
+ <path d="M5.523 10.424q.21-.124.459-.238a8 8 0 0 1-.45.606c-.28.337-.498.516-.635.572l-.035.012a.3.3 0 0 1-.026-.044c-.056-.11-.054-.216.04-.36.106-.165.319-.354.647-.548m2.455-1.647q-.178.037-.356.078a21 21 0 0 0 .5-1.05 12 12 0 0 0 .51.858q-.326.048-.654.114m2.525.939a4 4 0 0 1-.435-.41q.344.007.612.054c.317.057.466.147.518.209a.1.1 0 0 1 .026.064.44.44 0 0 1-.06.2.3.3 0 0 1-.094.124.1.1 0 0 1-.069.015c-.09-.003-.258-.066-.498-.256M8.278 4.97c-.04.244-.108.524-.2.829a5 5 0 0 1-.089-.346c-.076-.353-.087-.63-.046-.822.038-.177.11-.248.196-.283a.5.5 0 0 1 .145-.04c.013.03.028.092.032.198q.008.183-.038.465z"/>
+ <path fill-rule="evenodd" d="M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m.165 11.668c.09.18.23.343.438.419.207.075.412.04.58-.03.318-.13.635-.436.926-.786.333-.401.683-.927 1.021-1.51a11.6 11.6 0 0 1 1.997-.406c.3.383.61.713.91.95.28.22.603.403.934.417a.86.86 0 0 0 .51-.138c.155-.101.27-.247.354-.416.09-.181.145-.37.138-.563a.84.84 0 0 0-.2-.518c-.226-.27-.596-.4-.96-.465a5.8 5.8 0 0 0-1.335-.05 11 11 0 0 1-.98-1.686c.25-.66.437-1.284.52-1.794.036-.218.055-.426.048-.614a1.24 1.24 0 0 0-.127-.538.7.7 0 0 0-.477-.365c-.202-.043-.41 0-.601.077-.377.15-.576.47-.651.823-.073.34-.04.736.046 1.136.088.406.238.848.43 1.295a20 20 0 0 1-1.062 2.227 7.7 7.7 0 0 0-1.482.645c-.37.22-.699.48-.897.787-.21.326-.275.714-.08 1.103"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-pdf.svg b/vendor/twbs/bootstrap-icons/icons/file-pdf.svg
new file mode 100644
index 000000000..e7bdcbab8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-pdf.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-pdf" viewBox="0 0 16 16">
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+ <path d="M4.603 12.087a.8.8 0 0 1-.438-.42c-.195-.388-.13-.776.08-1.102.198-.307.526-.568.897-.787a7.7 7.7 0 0 1 1.482-.645 20 20 0 0 0 1.062-2.227 7.3 7.3 0 0 1-.43-1.295c-.086-.4-.119-.796-.046-1.136.075-.354.274-.672.65-.823.192-.077.4-.12.602-.077a.7.7 0 0 1 .477.365c.088.164.12.356.127.538.007.187-.012.395-.047.614-.084.51-.27 1.134-.52 1.794a11 11 0 0 0 .98 1.686 5.8 5.8 0 0 1 1.334.05c.364.065.734.195.96.465.12.144.193.32.2.518.007.192-.047.382-.138.563a1.04 1.04 0 0 1-.354.416.86.86 0 0 1-.51.138c-.331-.014-.654-.196-.933-.417a5.7 5.7 0 0 1-.911-.95 11.6 11.6 0 0 0-1.997.406 11.3 11.3 0 0 1-1.021 1.51c-.29.35-.608.655-.926.787a.8.8 0 0 1-.58.029m1.379-1.901q-.25.115-.459.238c-.328.194-.541.383-.647.547-.094.145-.096.25-.04.361q.016.032.026.044l.035-.012c.137-.056.355-.235.635-.572a8 8 0 0 0 .45-.606m1.64-1.33a13 13 0 0 1 1.01-.193 12 12 0 0 1-.51-.858 21 21 0 0 1-.5 1.05zm2.446.45q.226.244.435.41c.24.19.407.253.498.256a.1.1 0 0 0 .07-.015.3.3 0 0 0 .094-.125.44.44 0 0 0 .059-.2.1.1 0 0 0-.026-.063c-.052-.062-.2-.152-.518-.209a4 4 0 0 0-.612-.053zM8.078 5.8a7 7 0 0 0 .2-.828q.046-.282.038-.465a.6.6 0 0 0-.032-.198.5.5 0 0 0-.145.04c-.087.035-.158.106-.196.283-.04.192-.03.469.046.822q.036.167.09.346z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-person-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-person-fill.svg
new file mode 100644
index 000000000..c212b00f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-person-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-person-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-1 7a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-3 4c2.623 0 4.146.826 5 1.755V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1.245C3.854 11.825 5.377 11 8 11"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-person.svg b/vendor/twbs/bootstrap-icons/icons/file-person.svg
new file mode 100644
index 000000000..e102abf67
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-person.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-person" viewBox="0 0 16 16">
+ <path d="M12 1a1 1 0 0 1 1 1v10.755S12 11 8 11s-5 1.755-5 1.755V2a1 1 0 0 1 1-1zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M8 10a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-play-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-play-fill.svg
new file mode 100644
index 000000000..a6dce8a1e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-play-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-play-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M6 5.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43V5.884z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-play.svg b/vendor/twbs/bootstrap-icons/icons/file-play.svg
new file mode 100644
index 000000000..d5505e332
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-play.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-play" viewBox="0 0 16 16">
+ <path d="M6 10.117V5.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43z"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-plus-fill.svg
new file mode 100644
index 000000000..bdb7ee034
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-plus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-plus-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M8.5 6v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-plus.svg b/vendor/twbs/bootstrap-icons/icons/file-plus.svg
new file mode 100644
index 000000000..af41ae161
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-plus" viewBox="0 0 16 16">
+ <path d="M8.5 6a.5.5 0 0 0-1 0v1.5H6a.5.5 0 0 0 0 1h1.5V10a.5.5 0 0 0 1 0V8.5H10a.5.5 0 0 0 0-1H8.5z"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-post-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-post-fill.svg
new file mode 100644
index 000000000..336f21942
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-post-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-post-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M4.5 3h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1m0 2h7a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-8a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-post.svg b/vendor/twbs/bootstrap-icons/icons/file-post.svg
new file mode 100644
index 000000000..6807724b1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-post.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-post" viewBox="0 0 16 16">
+ <path d="M4 3.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5z"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-ppt-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-ppt-fill.svg
new file mode 100644
index 000000000..b8c397345
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-ppt-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-ppt-fill" viewBox="0 0 16 16">
+ <path d="M8.188 8.5H7V5h1.188a1.75 1.75 0 1 1 0 3.5"/>
+ <path d="M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m3 4a1 1 0 0 0-1 1v6.5a.5.5 0 0 0 1 0v-2h1.188a2.75 2.75 0 0 0 0-5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-ppt.svg b/vendor/twbs/bootstrap-icons/icons/file-ppt.svg
new file mode 100644
index 000000000..bee27d41a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-ppt.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-ppt" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
+ <path d="M6 5a1 1 0 0 1 1-1h1.188a2.75 2.75 0 0 1 0 5.5H7v2a.5.5 0 0 1-1 0zm1 3.5h1.188a1.75 1.75 0 1 0 0-3.5H7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-richtext-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-richtext-fill.svg
new file mode 100644
index 000000000..a98e5d742
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-richtext-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-richtext-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M7 4.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V7.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V7s1.54-1.274 1.639-1.208M5 9h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1m0 2h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-richtext.svg b/vendor/twbs/bootstrap-icons/icons/file-richtext.svg
new file mode 100644
index 000000000..3ceb42037
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-richtext.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-richtext" viewBox="0 0 16 16">
+ <path d="M7 4.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V7.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V7s1.54-1.274 1.639-1.208M5 9a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-ruled-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-ruled-fill.svg
new file mode 100644
index 000000000..8bfe72621
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-ruled-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-ruled-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v4h12V2a2 2 0 0 0-2-2m2 7H6v2h8zm0 3H6v2h8zm0 3H6v3h6a2 2 0 0 0 2-2zm-9 3v-3H2v1a2 2 0 0 0 2 2zm-3-4h3v-2H2zm0-3h3V7H2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-ruled.svg b/vendor/twbs/bootstrap-icons/icons/file-ruled.svg
new file mode 100644
index 000000000..7236cfcd0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-ruled.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-ruled" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v4h10V2a1 1 0 0 0-1-1zm9 6H6v2h7zm0 3H6v2h7zm0 3H6v2h6a1 1 0 0 0 1-1zm-8 2v-2H3v1a1 1 0 0 0 1 1zm-2-3h2v-2H3zm0-3h2V7H3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-slides-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-slides-fill.svg
new file mode 100644
index 000000000..b75d3f75a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-slides-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-slides-fill" viewBox="0 0 16 16">
+ <path d="M7 7.78V5.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 7.778z"/>
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M5 4h6a.5.5 0 0 1 .496.438l.5 4A.5.5 0 0 1 11.5 9h-3v2.016c.863.055 1.5.251 1.5.484 0 .276-.895.5-2 .5s-2-.224-2-.5c0-.233.637-.429 1.5-.484V9h-3a.5.5 0 0 1-.496-.562l.5-4A.5.5 0 0 1 5 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-slides.svg b/vendor/twbs/bootstrap-icons/icons/file-slides.svg
new file mode 100644
index 000000000..0e63548f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-slides.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-slides" viewBox="0 0 16 16">
+ <path d="M5 4a.5.5 0 0 0-.496.438l-.5 4A.5.5 0 0 0 4.5 9h3v2.016c-.863.055-1.5.251-1.5.484 0 .276.895.5 2 .5s2-.224 2-.5c0-.233-.637-.429-1.5-.484V9h3a.5.5 0 0 0 .496-.562l-.5-4A.5.5 0 0 0 11 4zm2 3.78V5.22c0-.096.106-.156.19-.106l2.13 1.279a.125.125 0 0 1 0 .214l-2.13 1.28A.125.125 0 0 1 7 7.778z"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-spreadsheet-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-spreadsheet-fill.svg
new file mode 100644
index 000000000..6db7eb6db
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-spreadsheet-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-spreadsheet-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v4h12V2a2 2 0 0 0-2-2m2 7h-4v2h4zm0 3h-4v2h4zm0 3h-4v3h2a2 2 0 0 0 2-2zm-5 3v-3H6v3zm-4 0v-3H2v1a2 2 0 0 0 2 2zm-3-4h3v-2H2zm0-3h3V7H2zm4 0V7h3v2zm0 1h3v2H6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-spreadsheet.svg b/vendor/twbs/bootstrap-icons/icons/file-spreadsheet.svg
new file mode 100644
index 000000000..55b53ecde
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-spreadsheet.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-spreadsheet" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v4h10V2a1 1 0 0 0-1-1zm9 6h-3v2h3zm0 3h-3v2h3zm0 3h-3v2h2a1 1 0 0 0 1-1zm-4 2v-2H6v2zm-4 0v-2H3v1a1 1 0 0 0 1 1zm-2-3h2v-2H3zm0-3h2V7H3zm3-2v2h3V7zm3 3H6v2h3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-text-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-text-fill.svg
new file mode 100644
index 000000000..6da36b2ce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-text-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-text-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M5 4h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1m-.5 2.5A.5.5 0 0 1 5 6h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5M5 8h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1m0 2h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-text.svg b/vendor/twbs/bootstrap-icons/icons/file-text.svg
new file mode 100644
index 000000000..95dc704ff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-text.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-text" viewBox="0 0 16 16">
+ <path d="M5 4a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm-.5 2.5A.5.5 0 0 1 5 6h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5M5 8a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-word-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-word-fill.svg
new file mode 100644
index 000000000..6f578f0a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-word-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-word-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M5.485 4.879l1.036 4.144.997-3.655a.5.5 0 0 1 .964 0l.997 3.655 1.036-4.144a.5.5 0 0 1 .97.242l-1.5 6a.5.5 0 0 1-.967.01L8 7.402l-1.018 3.73a.5.5 0 0 1-.967-.01l-1.5-6a.5.5 0 1 1 .97-.242z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-word.svg b/vendor/twbs/bootstrap-icons/icons/file-word.svg
new file mode 100644
index 000000000..732b59a81
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-word.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-word" viewBox="0 0 16 16">
+ <path d="M4.879 4.515a.5.5 0 0 1 .606.364l1.036 4.144.997-3.655a.5.5 0 0 1 .964 0l.997 3.655 1.036-4.144a.5.5 0 0 1 .97.242l-1.5 6a.5.5 0 0 1-.967.01L8 7.402l-1.018 3.73a.5.5 0 0 1-.967-.01l-1.5-6a.5.5 0 0 1 .364-.606z"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-x-fill.svg
new file mode 100644
index 000000000..04556592c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-x-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-x-fill" viewBox="0 0 16 16">
+ <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2M6.854 6.146 8 7.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 8l1.147 1.146a.5.5 0 0 1-.708.708L8 8.707 6.854 9.854a.5.5 0 0 1-.708-.708L7.293 8 6.146 6.854a.5.5 0 1 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-x.svg b/vendor/twbs/bootstrap-icons/icons/file-x.svg
new file mode 100644
index 000000000..5ab0b486b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-x" viewBox="0 0 16 16">
+ <path d="M6.146 6.146a.5.5 0 0 1 .708 0L8 7.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 8l1.147 1.146a.5.5 0 0 1-.708.708L8 8.707 6.854 9.854a.5.5 0 0 1-.708-.708L7.293 8 6.146 6.854a.5.5 0 0 1 0-.708"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-zip-fill.svg b/vendor/twbs/bootstrap-icons/icons/file-zip-fill.svg
new file mode 100644
index 000000000..1d803662e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-zip-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-zip-fill" viewBox="0 0 16 16">
+ <path d="M8.5 9.438V8.5h-1v.938a1 1 0 0 1-.03.243l-.4 1.598.93.62.93-.62-.4-1.598a1 1 0 0 1-.03-.243"/>
+ <path d="M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m2.5 8.5v.938l-.4 1.599a1 1 0 0 0 .416 1.074l.93.62a1 1 0 0 0 1.109 0l.93-.62a1 1 0 0 0 .415-1.074l-.4-1.599V8.5a1 1 0 0 0-1-1h-1a1 1 0 0 0-1 1m1-5.5h-1v1h1v1h-1v1h1v1H9V6H8V5h1V4H8V3h1V2H8V1H6.5v1h1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file-zip.svg b/vendor/twbs/bootstrap-icons/icons/file-zip.svg
new file mode 100644
index 000000000..e3b633e8f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file-zip.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-zip" viewBox="0 0 16 16">
+ <path d="M6.5 7.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v.938l.4 1.599a1 1 0 0 1-.416 1.074l-.93.62a1 1 0 0 1-1.109 0l-.93-.62a1 1 0 0 1-.415-1.074l.4-1.599zm2 0h-1v.938a1 1 0 0 1-.03.243l-.4 1.598.93.62.93-.62-.4-1.598a1 1 0 0 1-.03-.243z"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm5.5-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H9v1H8v1h1v1H8v1h1v1H7.5V5h-1V4h1V3h-1V2h1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/file.svg b/vendor/twbs/bootstrap-icons/icons/file.svg
new file mode 100644
index 000000000..4a5dd731d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/file.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file" viewBox="0 0 16 16">
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/files-alt.svg b/vendor/twbs/bootstrap-icons/icons/files-alt.svg
new file mode 100644
index 000000000..b42d764cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/files-alt.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-files-alt" viewBox="0 0 16 16">
+ <path d="M11 0H3a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2 2 2 0 0 0 2-2V4a2 2 0 0 0-2-2 2 2 0 0 0-2-2m2 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1zM2 2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/files.svg b/vendor/twbs/bootstrap-icons/icons/files.svg
new file mode 100644
index 000000000..6170ab5c8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/files.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-files" viewBox="0 0 16 16">
+ <path d="M13 0H6a2 2 0 0 0-2 2 2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h7a2 2 0 0 0 2-2 2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m0 13V4a2 2 0 0 0-2-2H5a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1M3 4a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-aac.svg b/vendor/twbs/bootstrap-icons/icons/filetype-aac.svg
new file mode 100644
index 000000000..b6a5c47b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-aac.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-aac" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-5.808 8.554a1.7 1.7 0 0 0-.103.633v.495q0 .369.103.627a.83.83 0 0 0 .299.393.85.85 0 0 0 .477.131.9.9 0 0 0 .402-.088.7.7 0 0 0 .272-.248.8.8 0 0 0 .117-.364h.765v.076a1.27 1.27 0 0 1-.226.674q-.204.29-.55.454a1.8 1.8 0 0 1-.785.164q-.54 0-.915-.216a1.4 1.4 0 0 1-.57-.627q-.195-.408-.194-.976v-.498q0-.568.196-.978.195-.411.571-.633.378-.223.912-.223.327 0 .606.097.28.093.49.272a1.33 1.33 0 0 1 .465.964v.073h-.765a.85.85 0 0 0-.12-.38.7.7 0 0 0-.272-.261.8.8 0 0 0-.399-.097.8.8 0 0 0-.474.138.87.87 0 0 0-.302.398M.8 15.925l.313-1.028H2.45l.314 1.028h.84l-1.335-3.999h-.926l-1.342 4zm1.002-3.234.489 1.617H1.277l.49-1.617zm2.63 3.234.313-1.028H6.08l.313 1.028h.841L5.9 11.926h-.926l-1.341 4zm1.001-3.234.49 1.617H4.909l.49-1.617z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-ai.svg b/vendor/twbs/bootstrap-icons/icons/filetype-ai.svg
new file mode 100644
index 000000000..fe2bcaac6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-ai.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-ai" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H6v-1h6a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.113 14.82.8 15.85H0l1.342-3.999h.926l1.336 3.999h-.841l-.314-1.028H1.113Zm1.178-.588-.49-1.617h-.034l-.49 1.617zm2.425-2.382v3.999h-.791V11.85h.79Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-bmp.svg b/vendor/twbs/bootstrap-icons/icons/filetype-bmp.svg
new file mode 100644
index 000000000..587381ca1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-bmp.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-bmp" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM0 15.849h1.664q.408 0 .72-.132.315-.135.493-.386.18-.253.179-.61a1 1 0 0 0-.123-.51.85.85 0 0 0-.323-.325 1.1 1.1 0 0 0-.445-.14v-.036a1 1 0 0 0 .352-.16.8.8 0 0 0 .243-.294.9.9 0 0 0 .09-.422q0-.463-.322-.723-.322-.261-.858-.261H0zm.785-3.404h.7q.28 0 .431.14.155.138.155.384a.5.5 0 0 1-.082.296.5.5 0 0 1-.249.185 1.2 1.2 0 0 1-.433.064H.785zm0 1.62h.75q.231 0 .393.073a.5.5 0 0 1 .24.211.6.6 0 0 1 .082.325q0 .284-.205.434-.205.146-.671.146H.785zm3.474 1.784v-2.66h.038l.952 2.16h.515l.947-2.16h.038v2.66h.715V11.85h-.8l-1.14 2.596h-.026l-1.14-2.596h-.805v3.999zm3.918-3.999h1.6q.434 0 .732.179.302.176.46.477.159.302.159.677t-.162.677q-.158.299-.462.474a1.45 1.45 0 0 1-.733.173h-.803v1.342h-.79zm2.06 1.714a.8.8 0 0 0 .085-.381q0-.34-.185-.521-.185-.182-.512-.182h-.66v1.406h.66a.8.8 0 0 0 .375-.082.57.57 0 0 0 .237-.24"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-cs.svg b/vendor/twbs/bootstrap-icons/icons/filetype-cs.svg
new file mode 100644
index 000000000..90ed8de42
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-cs.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-cs" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H8v-1h4a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.629 15.29a1.2 1.2 0 0 1-.112-.449h.765a.58.58 0 0 0 .255.384q.105.073.249.114t.32.041q.245 0 .412-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.152-.326q-.153-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.54-.214 1 1 0 0 1-.35-.367 1.1 1.1 0 0 1-.124-.524q0-.366.19-.639.191-.272.528-.422t.776-.149q.458 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.246-.181.9.9 0 0 0-.37-.068q-.324 0-.512.152a.47.47 0 0 0-.185.384q0 .18.144.3a1 1 0 0 0 .404.175l.621.143q.325.075.566.211t.375.358.134.56q0 .37-.187.656a1.2 1.2 0 0 1-.54.439q-.351.158-.858.158a2.2 2.2 0 0 1-.665-.09 1.4 1.4 0 0 1-.477-.252 1.1 1.1 0 0 1-.29-.375m-2.72-2.23a1.7 1.7 0 0 0-.103.633v.495q0 .369.102.627a.83.83 0 0 0 .299.392.85.85 0 0 0 .478.132.86.86 0 0 0 .4-.088.7.7 0 0 0 .273-.249.8.8 0 0 0 .118-.363h.764v.076a1.27 1.27 0 0 1-.225.674q-.205.29-.551.454a1.8 1.8 0 0 1-.785.164q-.54 0-.914-.217a1.4 1.4 0 0 1-.572-.626Q0 14.756 0 14.188v-.498q0-.569.196-.979a1.44 1.44 0 0 1 .572-.633q.378-.222.91-.222.33 0 .607.097.281.093.49.272a1.32 1.32 0 0 1 .465.964v.073h-.764a.85.85 0 0 0-.12-.38.7.7 0 0 0-.273-.261.8.8 0 0 0-.398-.097.8.8 0 0 0-.475.138.87.87 0 0 0-.302.398Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-css.svg b/vendor/twbs/bootstrap-icons/icons/filetype-css.svg
new file mode 100644
index 000000000..8f0864ff6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-css.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-css" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.397 14.841a1.13 1.13 0 0 0 .401.823q.195.162.478.252.284.091.665.091.507 0 .859-.158.354-.158.539-.44.187-.284.187-.656 0-.336-.134-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.566-.21l-.621-.144a1 1 0 0 1-.404-.176.37.37 0 0 1-.144-.299q0-.234.185-.384.188-.152.512-.152.214 0 .37.068a.6.6 0 0 1 .246.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.439 0-.776.15-.337.149-.527.421-.19.273-.19.639 0 .302.122.524.124.223.352.367.228.143.539.213l.618.144q.31.073.463.193a.39.39 0 0 1 .152.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.167.07-.413.07-.175 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zM.806 13.693q0-.373.102-.633a.87.87 0 0 1 .302-.399.8.8 0 0 1 .475-.137q.225 0 .398.097a.7.7 0 0 1 .272.26.85.85 0 0 1 .12.381h.765v-.072a1.33 1.33 0 0 0-.466-.964 1.4 1.4 0 0 0-.489-.272 1.8 1.8 0 0 0-.606-.097q-.534 0-.911.223-.375.222-.572.632-.195.41-.196.979v.498q0 .568.193.976.197.407.572.626.375.217.914.217.439 0 .785-.164t.55-.454a1.27 1.27 0 0 0 .226-.674v-.076h-.764a.8.8 0 0 1-.118.363.7.7 0 0 1-.272.25.9.9 0 0 1-.401.087.85.85 0 0 1-.478-.132.83.83 0 0 1-.299-.392 1.7 1.7 0 0 1-.102-.627zM6.78 15.29a1.2 1.2 0 0 1-.111-.449h.764a.58.58 0 0 0 .255.384q.106.073.25.114.142.041.319.041.245 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.152-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.527-.422t.777-.149q.456 0 .779.152.326.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.246-.181.9.9 0 0 0-.37-.068q-.324 0-.512.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .404.175l.621.143q.326.075.566.211t.375.358.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-csv.svg b/vendor/twbs/bootstrap-icons/icons/filetype-csv.svg
new file mode 100644
index 000000000..fa097aa99
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-csv.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-csv" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.517 14.841a1.13 1.13 0 0 0 .401.823q.195.162.478.252.284.091.665.091.507 0 .859-.158.354-.158.539-.44.187-.284.187-.656 0-.336-.134-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.566-.21l-.621-.144a1 1 0 0 1-.404-.176.37.37 0 0 1-.144-.299q0-.234.185-.384.188-.152.512-.152.214 0 .37.068a.6.6 0 0 1 .246.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.439 0-.776.15-.337.149-.527.421-.19.273-.19.639 0 .302.122.524.124.223.352.367.228.143.539.213l.618.144q.31.073.463.193a.39.39 0 0 1 .152.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.167.07-.413.07-.175 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zM.806 13.693q0-.373.102-.633a.87.87 0 0 1 .302-.399.8.8 0 0 1 .475-.137q.225 0 .398.097a.7.7 0 0 1 .272.26.85.85 0 0 1 .12.381h.765v-.072a1.33 1.33 0 0 0-.466-.964 1.4 1.4 0 0 0-.489-.272 1.8 1.8 0 0 0-.606-.097q-.534 0-.911.223-.375.222-.572.632-.195.41-.196.979v.498q0 .568.193.976.197.407.572.626.375.217.914.217.439 0 .785-.164t.55-.454a1.27 1.27 0 0 0 .226-.674v-.076h-.764a.8.8 0 0 1-.118.363.7.7 0 0 1-.272.25.9.9 0 0 1-.401.087.85.85 0 0 1-.478-.132.83.83 0 0 1-.299-.392 1.7 1.7 0 0 1-.102-.627zm8.239 2.238h-.953l-1.338-3.999h.917l.896 3.138h.038l.888-3.138h.879z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-doc.svg b/vendor/twbs/bootstrap-icons/icons/filetype-doc.svg
new file mode 100644
index 000000000..f75847fa3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-doc.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-doc" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-7.839 9.166v.522q0 .384-.117.641a.86.86 0 0 1-.322.387.9.9 0 0 1-.469.126.9.9 0 0 1-.471-.126.87.87 0 0 1-.32-.386 1.55 1.55 0 0 1-.117-.642v-.522q0-.386.117-.641a.87.87 0 0 1 .32-.387.87.87 0 0 1 .471-.129q.264 0 .469.13a.86.86 0 0 1 .322.386q.117.255.117.641m.803.519v-.513q0-.565-.205-.972a1.46 1.46 0 0 0-.589-.63q-.381-.22-.917-.22-.533 0-.92.22a1.44 1.44 0 0 0-.589.627q-.204.406-.205.975v.513q0 .563.205.973.205.406.59.627.386.216.92.216.535 0 .916-.216.383-.22.59-.627.204-.41.204-.973M0 11.926v4h1.459q.603 0 .999-.238a1.45 1.45 0 0 0 .595-.689q.196-.45.196-1.084 0-.63-.196-1.075a1.43 1.43 0 0 0-.59-.68q-.395-.234-1.004-.234zm.791.645h.563q.371 0 .609.152a.9.9 0 0 1 .354.454q.118.302.118.753a2.3 2.3 0 0 1-.068.592 1.1 1.1 0 0 1-.196.422.8.8 0 0 1-.334.252 1.3 1.3 0 0 1-.483.082H.79V12.57Zm7.422.483a1.7 1.7 0 0 0-.103.633v.495q0 .369.103.627a.83.83 0 0 0 .298.393.85.85 0 0 0 .478.131.9.9 0 0 0 .401-.088.7.7 0 0 0 .273-.248.8.8 0 0 0 .117-.364h.765v.076a1.27 1.27 0 0 1-.226.674q-.205.29-.55.454a1.8 1.8 0 0 1-.786.164q-.54 0-.914-.216a1.4 1.4 0 0 1-.571-.627q-.194-.408-.194-.976v-.498q0-.568.197-.978.195-.411.571-.633.378-.223.911-.223.328 0 .607.097.28.093.489.272a1.33 1.33 0 0 1 .466.964v.073H9.78a.85.85 0 0 0-.12-.38.7.7 0 0 0-.273-.261.8.8 0 0 0-.398-.097.8.8 0 0 0-.475.138.87.87 0 0 0-.301.398"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-docx.svg b/vendor/twbs/bootstrap-icons/icons/filetype-docx.svg
new file mode 100644
index 000000000..1b6c17292
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-docx.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-docx" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-6.839 9.688v-.522a1.5 1.5 0 0 0-.117-.641.86.86 0 0 0-.322-.387.86.86 0 0 0-.469-.129.87.87 0 0 0-.471.13.87.87 0 0 0-.32.386 1.5 1.5 0 0 0-.117.641v.522q0 .384.117.641a.87.87 0 0 0 .32.387.9.9 0 0 0 .471.126.9.9 0 0 0 .469-.126.86.86 0 0 0 .322-.386 1.55 1.55 0 0 0 .117-.642m.803-.516v.513q0 .563-.205.973a1.47 1.47 0 0 1-.589.627q-.381.216-.917.216a1.86 1.86 0 0 1-.92-.216 1.46 1.46 0 0 1-.589-.627 2.15 2.15 0 0 1-.205-.973v-.513q0-.569.205-.975.205-.411.59-.627.386-.22.92-.22.535 0 .916.22.383.219.59.63.204.406.204.972M1 15.925v-3.999h1.459q.609 0 1.005.235.396.233.589.68.196.445.196 1.074 0 .634-.196 1.084-.197.451-.595.689-.396.237-.999.237zm1.354-3.354H1.79v2.707h.563q.277 0 .483-.082a.8.8 0 0 0 .334-.252q.132-.17.196-.422a2.3 2.3 0 0 0 .068-.592q0-.45-.118-.753a.9.9 0 0 0-.354-.454q-.237-.152-.61-.152Zm6.756 1.116q0-.373.103-.633a.87.87 0 0 1 .301-.398.8.8 0 0 1 .475-.138q.225 0 .398.097a.7.7 0 0 1 .273.26.85.85 0 0 1 .12.381h.765v-.073a1.33 1.33 0 0 0-.466-.964 1.4 1.4 0 0 0-.49-.272 1.8 1.8 0 0 0-.606-.097q-.534 0-.911.223-.375.222-.571.633-.197.41-.197.978v.498q0 .568.194.976.195.406.571.627.375.216.914.216.44 0 .785-.164t.551-.454a1.27 1.27 0 0 0 .226-.674v-.076h-.765a.8.8 0 0 1-.117.364.7.7 0 0 1-.273.248.9.9 0 0 1-.401.088.85.85 0 0 1-.478-.131.83.83 0 0 1-.298-.393 1.7 1.7 0 0 1-.103-.627zm5.092-1.76h.894l-1.275 2.006 1.254 1.992h-.908l-.85-1.415h-.035l-.852 1.415h-.862l1.24-2.015-1.228-1.984h.932l.832 1.439h.035z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-exe.svg b/vendor/twbs/bootstrap-icons/icons/filetype-exe.svg
new file mode 100644
index 000000000..cdafeb199
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-exe.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-exe" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM2.575 15.202H.785v-1.073H2.47v-.606H.785v-1.025h1.79v-.648H0v3.999h2.575zM6.31 11.85h-.893l-.823 1.439h-.036l-.832-1.439h-.931l1.227 1.983-1.239 2.016h.861l.853-1.415h.035l.85 1.415h.908l-1.254-1.992zm1.025 3.352h1.79v.647H6.548V11.85h2.576v.648h-1.79v1.025h1.684v.606H7.334v1.073Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-gif.svg b/vendor/twbs/bootstrap-icons/icons/filetype-gif.svg
new file mode 100644
index 000000000..b39234f3c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-gif.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-gif" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H9v-1h3a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.278 13.124a1.4 1.4 0 0 0-.14-.492 1.3 1.3 0 0 0-.314-.407 1.5 1.5 0 0 0-.48-.275 1.9 1.9 0 0 0-.636-.1q-.542 0-.926.229a1.5 1.5 0 0 0-.583.632 2.1 2.1 0 0 0-.199.95v.506q0 .408.105.745.105.336.32.58.213.243.533.377.323.132.753.132.402 0 .697-.111a1.29 1.29 0 0 0 .788-.77q.097-.261.097-.551v-.797H1.717v.589h.823v.255q0 .199-.09.363a.67.67 0 0 1-.273.264 1 1 0 0 1-.457.096.87.87 0 0 1-.519-.146.9.9 0 0 1-.305-.413 1.8 1.8 0 0 1-.096-.615v-.499q0-.547.234-.85.237-.3.665-.301a1 1 0 0 1 .3.044q.136.044.236.126a.7.7 0 0 1 .17.19.8.8 0 0 1 .097.25zm1.353 2.801v-3.999H3.84v4h.79Zm1.493-1.59v1.59h-.791v-3.999H7.88v.653H6.124v1.117h1.605v.638z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-heic.svg b/vendor/twbs/bootstrap-icons/icons/filetype-heic.svg
new file mode 100644
index 000000000..a022060eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-heic.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-heic" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-4.637 8.554a1.7 1.7 0 0 0-.103.633v.495q0 .369.103.627a.83.83 0 0 0 .299.393.85.85 0 0 0 .477.131.9.9 0 0 0 .401-.088.7.7 0 0 0 .273-.248.8.8 0 0 0 .117-.364h.765v.076a1.27 1.27 0 0 1-.226.674q-.205.29-.55.454a1.8 1.8 0 0 1-.786.164q-.54 0-.914-.216a1.4 1.4 0 0 1-.571-.627q-.194-.408-.194-.976v-.498q0-.568.197-.978.196-.411.571-.633.378-.223.911-.223.328 0 .607.097.28.093.489.272a1.32 1.32 0 0 1 .466.964v.073h-.765a.85.85 0 0 0-.12-.38.7.7 0 0 0-.273-.261.8.8 0 0 0-.398-.097.8.8 0 0 0-.475.138.87.87 0 0 0-.301.398m-6.1-1.128v4h-.79V14.21H.79v1.714H0v-3.999h.791v1.626h1.682v-1.626zm1.488 3.352h1.79v.647H3.966v-3.999H6.54v.648H4.75v1.025h1.684v.607H4.751zm3.163.647v-3.999h-.791v4h.79Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-html.svg b/vendor/twbs/bootstrap-icons/icons/filetype-html.svg
new file mode 100644
index 000000000..1661a94d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-html.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-html" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-9.736 7.35v3.999h-.791v-1.714H1.79v1.714H1V11.85h.791v1.626h1.682V11.85h.79Zm2.251.662v3.337h-.794v-3.337H4.588v-.662h3.064v.662zm2.176 3.337v-2.66h.038l.952 2.159h.516l.946-2.16h.038v2.661h.715V11.85h-.8l-1.14 2.596H9.93L8.79 11.85h-.805v3.999zm4.71-.674h1.696v.674H12.61V11.85h.79v3.325Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-java.svg b/vendor/twbs/bootstrap-icons/icons/filetype-java.svg
new file mode 100644
index 000000000..eeeab41a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-java.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-java" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.521 15.175a1.3 1.3 0 0 1-.082-.466h.765a.6.6 0 0 0 .073.27.5.5 0 0 0 .454.246q.285 0 .422-.164.138-.165.138-.466V11.85h.79v2.725q0 .66-.357 1.005-.354.345-.984.345a1.6 1.6 0 0 1-.568-.094 1.1 1.1 0 0 1-.408-.266 1.1 1.1 0 0 1-.243-.39m3.972-.354-.314 1.028h-.8l1.342-3.999h.926l1.336 3.999h-.84l-.314-1.028zm1.178-.59-.49-1.616h-.035l-.49 1.617zm2.342 1.618h.952l1.327-3.999h-.878l-.888 3.138h-.038L8.59 11.85h-.917zm3.087-1.028-.314 1.028h-.8l1.342-3.999h.926l1.336 3.999h-.84l-.314-1.028zm1.178-.59-.49-1.616h-.035l-.49 1.617z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-jpg.svg b/vendor/twbs/bootstrap-icons/icons/filetype-jpg.svg
new file mode 100644
index 000000000..7d939ec18
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-jpg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-jpg" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-4.34 8.132q.114.23.14.492h-.776a.8.8 0 0 0-.097-.249.7.7 0 0 0-.17-.19.7.7 0 0 0-.237-.126 1 1 0 0 0-.299-.044q-.428 0-.665.302-.234.301-.234.85v.498q0 .351.097.615a.9.9 0 0 0 .304.413.87.87 0 0 0 .519.146 1 1 0 0 0 .457-.096.67.67 0 0 0 .272-.264q.09-.164.091-.363v-.255H8.24v-.59h1.576v.798q0 .29-.097.55a1.3 1.3 0 0 1-.293.458 1.4 1.4 0 0 1-.495.313q-.296.111-.697.111a2 2 0 0 1-.753-.132 1.45 1.45 0 0 1-.533-.377 1.6 1.6 0 0 1-.32-.58 2.5 2.5 0 0 1-.105-.745v-.506q0-.543.2-.95.201-.406.582-.633.384-.228.926-.228.357 0 .636.1.28.1.48.275t.314.407ZM0 14.786q0 .246.082.465.083.22.243.39.165.17.407.267.246.093.569.093.63 0 .984-.345.357-.346.358-1.005v-2.725h-.791v2.745q0 .303-.138.466t-.422.164a.5.5 0 0 1-.454-.246.6.6 0 0 1-.073-.27H0Zm4.92-2.86H3.322v4h.791v-1.343h.803q.43 0 .732-.172.305-.177.463-.475.162-.302.161-.677 0-.374-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179Zm.546 1.333a.8.8 0 0 1-.085.381.57.57 0 0 1-.238.24.8.8 0 0 1-.375.082H4.11v-1.406h.66q.327 0 .512.182.185.181.185.521Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-js.svg b/vendor/twbs/bootstrap-icons/icons/filetype-js.svg
new file mode 100644
index 000000000..4f4a00ccf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-js.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-js" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H8v-1h4a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.186 15.29a1.2 1.2 0 0 1-.111-.449h.765a.58.58 0 0 0 .255.384q.105.073.249.114.143.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.151-.12-.462-.193l-.619-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.528-.422.336-.15.776-.149.457 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.247-.181.9.9 0 0 0-.369-.068q-.325 0-.513.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .405.175l.62.143q.327.075.566.211.24.136.375.358t.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375m-3.104-.033A1.3 1.3 0 0 1 0 14.791h.765a.6.6 0 0 0 .073.27.5.5 0 0 0 .454.246q.285 0 .422-.164.138-.165.138-.466v-2.745h.79v2.725q0 .66-.357 1.005-.354.345-.984.345a1.6 1.6 0 0 1-.569-.094 1.15 1.15 0 0 1-.407-.266 1.1 1.1 0 0 1-.243-.39"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-json.svg b/vendor/twbs/bootstrap-icons/icons/filetype-json.svg
new file mode 100644
index 000000000..a4cccedc9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-json.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-json" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM4.151 15.29a1.2 1.2 0 0 1-.111-.449h.764a.58.58 0 0 0 .255.384q.105.073.25.114.142.041.319.041.245 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .084-.29.39.39 0 0 0-.152-.326q-.152-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.352-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.192-.272.528-.422.337-.15.777-.149.456 0 .779.152.326.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.246-.181.9.9 0 0 0-.37-.068q-.324 0-.512.152a.47.47 0 0 0-.185.384q0 .18.144.3a1 1 0 0 0 .404.175l.621.143q.326.075.566.211a1 1 0 0 1 .375.358q.135.222.135.56 0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375m-3.104-.033a1.3 1.3 0 0 1-.082-.466h.764a.6.6 0 0 0 .074.27.5.5 0 0 0 .454.246q.285 0 .422-.164.137-.165.137-.466v-2.745h.791v2.725q0 .66-.357 1.005-.355.345-.985.345a1.6 1.6 0 0 1-.568-.094 1.15 1.15 0 0 1-.407-.266 1.1 1.1 0 0 1-.243-.39m9.091-1.585v.522q0 .384-.117.641a.86.86 0 0 1-.322.387.9.9 0 0 1-.47.126.9.9 0 0 1-.47-.126.87.87 0 0 1-.32-.387 1.55 1.55 0 0 1-.117-.641v-.522q0-.386.117-.641a.87.87 0 0 1 .32-.387.87.87 0 0 1 .47-.129q.265 0 .47.129a.86.86 0 0 1 .322.387q.117.255.117.641m.803.519v-.513q0-.565-.205-.973a1.46 1.46 0 0 0-.59-.63q-.38-.22-.916-.22-.534 0-.92.22a1.44 1.44 0 0 0-.589.628q-.205.407-.205.975v.513q0 .562.205.973.205.407.589.626.386.217.92.217.536 0 .917-.217.384-.22.589-.626.204-.41.205-.973m1.29-.935v2.675h-.746v-3.999h.662l1.752 2.66h.032v-2.66h.75v4h-.656l-1.761-2.676z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-jsx.svg b/vendor/twbs/bootstrap-icons/icons/filetype-jsx.svg
new file mode 100644
index 000000000..256b5c534
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-jsx.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-jsx" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.075 14.841a1.13 1.13 0 0 0 .401.823q.194.162.478.252.284.091.665.091.507 0 .858-.158.355-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.565-.21l-.621-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.188-.152.513-.152.214 0 .37.068a.6.6 0 0 1 .245.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.199-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.776.15-.337.149-.528.421-.19.273-.19.639 0 .302.123.524t.351.367q.229.143.54.213l.618.144q.31.073.462.193a.39.39 0 0 1 .153.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.167.07-.413.07-.176 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zM0 14.791q0 .247.082.466.083.22.243.39.165.17.407.267.246.093.569.093.63 0 .984-.346.357-.345.358-1.004v-2.725h-.791v2.745q0 .302-.138.466t-.422.164a.5.5 0 0 1-.454-.246.6.6 0 0 1-.073-.27zm8.907-2.859H9.8l-1.274 2.007L9.78 15.93h-.908l-.85-1.415h-.035l-.853 1.415h-.861l1.24-2.016-1.228-1.983h.931l.832 1.438h.036l.823-1.438Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-key.svg b/vendor/twbs/bootstrap-icons/icons/filetype-key.svg
new file mode 100644
index 000000000..d164bc879
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-key.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-key" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.21 11.85h-.87L.83 13.64H.79v-1.79H0v3.999h.791v-1.283l.41-.466 1.12 1.749h.951l-1.488-2.276 1.427-1.723Zm2.903 3.352h-1.79v-1.073h1.685v-.606H4.323v-1.025h1.79v-.648H3.538v3.999h2.575zm2.243-.888v1.535h-.794v-1.52L6.223 11.85H7.1l.853 1.696h.032l.855-1.696h.856z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-m4p.svg b/vendor/twbs/bootstrap-icons/icons/filetype-m4p.svg
new file mode 100644
index 000000000..ae8f611fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-m4p.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-m4p" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.706 15.849v-2.66h.038l.952 2.16h.516l.946-2.16h.038v2.66h.715V11.85h-.8l-1.14 2.596h-.026L.805 11.85H0v3.999zm5.237-3.999q-.393.65-.79 1.3t-.748 1.31v.648h1.937v.741h.74v-.741h.49v-.639h-.49V11.85H5.944Zm-.82 2.62v-.021q.27-.51.571-1.017.304-.507.607-.984h.04v2.021H5.124Zm2.893-2.62h1.6q.434 0 .732.179.302.175.46.477t.158.677-.16.677q-.159.298-.464.474a1.45 1.45 0 0 1-.732.173h-.803v1.342h-.79zm2.06 1.714a.8.8 0 0 0 .085-.381q0-.34-.185-.521-.184-.183-.513-.182h-.659v1.406h.66a.8.8 0 0 0 .374-.082.57.57 0 0 0 .238-.24"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-md.svg b/vendor/twbs/bootstrap-icons/icons/filetype-md.svg
new file mode 100644
index 000000000..40e5139b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-md.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-md" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H9v-1h3a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.706 13.189v2.66H0V11.85h.806l1.14 2.596h.026l1.14-2.596h.8v3.999h-.716v-2.66h-.038l-.946 2.159h-.516l-.952-2.16H.706Zm3.919 2.66V11.85h1.459q.609 0 1.005.234t.589.68q.195.445.196 1.075 0 .634-.196 1.084-.197.451-.595.689-.396.237-1 .237H4.626Zm1.353-3.354h-.562v2.707h.562q.279 0 .484-.082a.8.8 0 0 0 .334-.252 1.1 1.1 0 0 0 .196-.422q.067-.252.067-.592a2.1 2.1 0 0 0-.117-.753.9.9 0 0 0-.354-.454q-.238-.152-.61-.152"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-mdx.svg b/vendor/twbs/bootstrap-icons/icons/filetype-mdx.svg
new file mode 100644
index 000000000..43a91538b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-mdx.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-mdx" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.706 15.849v-2.66h.038l.952 2.159h.516l.946-2.16h.038v2.661h.715V11.85h-.8l-1.14 2.596h-.026L.805 11.85H0v3.999zm3.559-3.999v3.999h1.459q.603 0 .999-.237a1.45 1.45 0 0 0 .595-.689q.195-.45.196-1.084 0-.63-.196-1.075a1.43 1.43 0 0 0-.59-.68q-.395-.234-1.004-.234zm.79.645h.563q.372 0 .61.152a.9.9 0 0 1 .354.454q.117.302.117.753 0 .34-.067.592a1.1 1.1 0 0 1-.196.422.8.8 0 0 1-.334.252 1.3 1.3 0 0 1-.484.082h-.562v-2.707Zm4.787-.645h.894L9.46 13.857l1.254 1.992h-.908l-.85-1.415h-.035l-.852 1.415h-.862l1.24-2.016L7.22 11.85h.932l.832 1.439h.035z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-mov.svg b/vendor/twbs/bootstrap-icons/icons/filetype-mov.svg
new file mode 100644
index 000000000..27e639132
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-mov.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-mov" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-6.914 9.166v.522q0 .384-.117.641a.86.86 0 0 1-.323.387.9.9 0 0 1-.468.126.9.9 0 0 1-.472-.126.87.87 0 0 1-.32-.386 1.55 1.55 0 0 1-.117-.642v-.522q0-.386.118-.641a.87.87 0 0 1 .319-.387.87.87 0 0 1 .472-.129q.263 0 .468.13a.86.86 0 0 1 .323.386q.117.255.117.641m.802.519v-.513q0-.565-.205-.972a1.46 1.46 0 0 0-.588-.63q-.381-.22-.917-.22-.534 0-.92.22a1.44 1.44 0 0 0-.59.627q-.204.406-.204.975v.513q0 .563.205.973.205.406.589.627.386.216.92.216.536 0 .917-.216.383-.22.588-.627.205-.41.205-.973m-7.182 1.74v-2.66h.038l.952 2.16h.516l.946-2.16h.038v2.66h.715v-3.999h-.8l-1.14 2.596h-.026l-1.14-2.596H0v4zm9.54 0h-.952l-1.34-3.999h.918l.896 3.138h.038l.888-3.138h.879z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-mp3.svg b/vendor/twbs/bootstrap-icons/icons/filetype-mp3.svg
new file mode 100644
index 000000000..f25e6a85b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-mp3.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-mp3" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-4.911 9.67h-.443v-.609h.422a.7.7 0 0 0 .322-.073.56.56 0 0 0 .22-.2.5.5 0 0 0 .076-.284.49.49 0 0 0-.176-.392.65.65 0 0 0-.442-.15.7.7 0 0 0-.252.041.6.6 0 0 0-.193.112.5.5 0 0 0-.179.349H7.71q.009-.235.102-.437.094-.202.27-.352.176-.152.428-.237.255-.085.583-.088.418-.003.723.132.304.135.472.372a.9.9 0 0 1 .173.539.83.83 0 0 1-.12.478.96.96 0 0 1-.619.439v.041a1 1 0 0 1 .718.434.9.9 0 0 1 .144.521q.003.285-.117.507a1.1 1.1 0 0 1-.329.378q-.21.152-.486.234-.273.08-.583.08-.451 0-.77-.153a1.2 1.2 0 0 1-.487-.41 1.1 1.1 0 0 1-.178-.563h.726a.46.46 0 0 0 .106.258.7.7 0 0 0 .249.179 1 1 0 0 0 .357.067.9.9 0 0 0 .384-.076.6.6 0 0 0 .252-.217.56.56 0 0 0 .088-.319.56.56 0 0 0-.334-.522.8.8 0 0 0-.372-.079ZM.706 15.925v-2.66h.038l.952 2.16h.516l.946-2.16h.038v2.66h.715v-3.999h-.8l-1.14 2.596h-.026l-1.14-2.596H0v4zm5.458-3.999h-1.6v4h.792v-1.342h.803q.43 0 .732-.173.304-.177.463-.475a1.4 1.4 0 0 0 .161-.677q0-.374-.158-.677a1.2 1.2 0 0 0-.46-.477 1.4 1.4 0 0 0-.733-.179m.545 1.333a.8.8 0 0 1-.085.381.57.57 0 0 1-.237.24.8.8 0 0 1-.375.082h-.66v-1.406h.66q.328 0 .513.182.184.181.184.521"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-mp4.svg b/vendor/twbs/bootstrap-icons/icons/filetype-mp4.svg
new file mode 100644
index 000000000..d27e9ffee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-mp4.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-mp4" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.706 15.849v-2.66h.038l.952 2.16h.516l.946-2.16h.038v2.66h.715V11.85h-.8l-1.14 2.596h-.026L.805 11.85H0v3.999zm5.278-3.999h-1.6v3.999h.792v-1.342h.803q.43 0 .732-.173.304-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477 1.4 1.4 0 0 0-.733-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.237.241.8.8 0 0 1-.375.082h-.66V12.48h.66q.329 0 .513.181.184.183.184.522m1.505-.032q.4-.65.791-1.301h1.14v2.62h.49v.638h-.49v.741h-.741v-.741H7.287v-.648q.353-.66.747-1.31Zm-.029 1.298v.02h1.219v-2.021h-.041q-.302.477-.607.984-.3.507-.571 1.017"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-otf.svg b/vendor/twbs/bootstrap-icons/icons/filetype-otf.svg
new file mode 100644
index 000000000..f16eb619c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-otf.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-otf" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM2.622 13.666v.522q0 .384-.117.641a.86.86 0 0 1-.322.387.9.9 0 0 1-.47.126.9.9 0 0 1-.47-.126.87.87 0 0 1-.32-.386 1.55 1.55 0 0 1-.117-.642v-.522q0-.386.117-.641a.87.87 0 0 1 .32-.387.87.87 0 0 1 .47-.129q.265 0 .47.13a.86.86 0 0 1 .322.386q.117.255.117.641m.803.519v-.513q0-.565-.205-.972a1.46 1.46 0 0 0-.59-.63q-.38-.22-.916-.22-.534 0-.92.22a1.44 1.44 0 0 0-.589.627Q0 13.103 0 13.672v.513q0 .563.205.973.205.406.589.627.386.216.92.216.536 0 .917-.216a1.47 1.47 0 0 0 .589-.627q.204-.41.205-.973m2 1.74v-3.337H6.56v-.662H3.497v.662H4.63v3.337h.794Zm2.251-1.59v1.59h-.79v-3.999h2.548v.653H7.676v1.117h1.606v.638z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-pdf.svg b/vendor/twbs/bootstrap-icons/icons/filetype-pdf.svg
new file mode 100644
index 000000000..e8bb77250
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-pdf.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-pdf" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.6 11.85H0v3.999h.791v-1.342h.803q.43 0 .732-.173.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.238.241.8.8 0 0 1-.375.082H.788V12.48h.66q.327 0 .512.181.185.183.185.522m1.217-1.333v3.999h1.46q.602 0 .998-.237a1.45 1.45 0 0 0 .595-.689q.196-.45.196-1.084 0-.63-.196-1.075a1.43 1.43 0 0 0-.589-.68q-.396-.234-1.005-.234zm.791.645h.563q.371 0 .609.152a.9.9 0 0 1 .354.454q.118.302.118.753a2.3 2.3 0 0 1-.068.592 1.1 1.1 0 0 1-.196.422.8.8 0 0 1-.334.252 1.3 1.3 0 0 1-.483.082h-.563zm3.743 1.763v1.591h-.79V11.85h2.548v.653H7.896v1.117h1.606v.638z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-php.svg b/vendor/twbs/bootstrap-icons/icons/filetype-php.svg
new file mode 100644
index 000000000..4d532dfd1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-php.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-php" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.6 11.85H0v3.999h.791v-1.342h.803q.43 0 .732-.173.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.238.241.8.8 0 0 1-.375.082H.788V12.48h.66q.327 0 .512.181.185.182.185.522m4.48 2.666V11.85h-.79v1.626H4.153V11.85h-.79v3.999h.79v-1.714h1.682v1.714zm.703-3.999h1.6q.433 0 .732.179.3.175.46.477.158.302.158.677t-.161.677q-.159.299-.463.474a1.45 1.45 0 0 1-.733.173H8.12v1.342h-.791zm2.06 1.714a.8.8 0 0 0 .084-.381q0-.34-.184-.521-.184-.182-.513-.182h-.66v1.406h.66a.8.8 0 0 0 .375-.082.57.57 0 0 0 .237-.24Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-png.svg b/vendor/twbs/bootstrap-icons/icons/filetype-png.svg
new file mode 100644
index 000000000..659e26686
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-png.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-png" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-3.76 8.132q.114.23.14.492h-.776a.8.8 0 0 0-.097-.249.7.7 0 0 0-.17-.19.7.7 0 0 0-.237-.126 1 1 0 0 0-.299-.044q-.427 0-.665.302-.234.301-.234.85v.498q0 .351.097.615a.9.9 0 0 0 .304.413.87.87 0 0 0 .519.146 1 1 0 0 0 .457-.096.67.67 0 0 0 .272-.264q.09-.164.091-.363v-.255H8.82v-.59h1.576v.798q0 .29-.097.55a1.3 1.3 0 0 1-.293.458 1.4 1.4 0 0 1-.495.313q-.296.111-.697.111a2 2 0 0 1-.753-.132 1.45 1.45 0 0 1-.533-.377 1.6 1.6 0 0 1-.32-.58 2.5 2.5 0 0 1-.105-.745v-.506q0-.543.2-.95.201-.406.582-.633.384-.228.926-.228.357 0 .636.1.281.1.48.275.2.176.314.407Zm-8.64-.706H0v4h.791v-1.343h.803q.43 0 .732-.172.305-.177.463-.475a1.4 1.4 0 0 0 .161-.677q0-.374-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.381.57.57 0 0 1-.238.24.8.8 0 0 1-.375.082H.788v-1.406h.66q.327 0 .512.182.185.181.185.521m1.964 2.666V13.25h.032l1.761 2.675h.656v-3.999h-.75v2.66h-.032l-1.752-2.66h-.662v4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-ppt.svg b/vendor/twbs/bootstrap-icons/icons/filetype-ppt.svg
new file mode 100644
index 000000000..e53b1ece6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-ppt.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-ppt" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.6 11.85H0v3.999h.791v-1.342h.803q.43 0 .732-.173.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.238.241.8.8 0 0 1-.375.082H.788V12.48h.66q.327 0 .512.181.185.183.185.522m2.817-1.333h-1.6v3.999h.791v-1.342h.803q.43 0 .732-.173.305-.175.463-.474.162-.302.161-.677 0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.238.241.8.8 0 0 1-.375.082H4.15V12.48h.66q.327 0 .512.181.185.183.185.522m2.767-.67v3.336H7.48v-3.337H6.346v-.662h3.065v.662z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-pptx.svg b/vendor/twbs/bootstrap-icons/icons/filetype-pptx.svg
new file mode 100644
index 000000000..f68e939fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-pptx.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-pptx" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.5 11.85h1.6q.434 0 .732.179.302.175.46.477t.158.677-.16.677q-.159.299-.464.474a1.45 1.45 0 0 1-.732.173H2.29v1.342H1.5zm2.06 1.714a.8.8 0 0 0 .085-.381q0-.34-.185-.521-.185-.182-.513-.182h-.659v1.406h.66a.8.8 0 0 0 .374-.082.57.57 0 0 0 .238-.24m1.302-1.714h1.6q.434 0 .732.179.302.175.46.477t.158.677-.16.677q-.158.299-.464.474a1.45 1.45 0 0 1-.732.173h-.803v1.342h-.79zm2.06 1.714a.8.8 0 0 0 .085-.381q0-.34-.185-.521-.184-.182-.513-.182H5.65v1.406h.66a.8.8 0 0 0 .374-.082.57.57 0 0 0 .238-.24m2.852 2.285v-3.337h1.137v-.662H7.846v.662H8.98v3.337zm3.796-3.999h.893l-1.274 2.007 1.254 1.992h-.908l-.85-1.415h-.035l-.853 1.415h-.861l1.24-2.016-1.228-1.983h.931l.832 1.439h.035z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-psd.svg b/vendor/twbs/bootstrap-icons/icons/filetype-psd.svg
new file mode 100644
index 000000000..6fefd088f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-psd.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-psd" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-.5v-1h.5a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.116 14.841a1.13 1.13 0 0 0 .401.823q.194.162.478.252.284.091.665.091.507 0 .858-.158.355-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.565-.21l-.621-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.188-.152.513-.152.214 0 .37.068a.6.6 0 0 1 .245.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.199-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.776.15-.337.149-.528.421-.19.273-.19.639 0 .302.123.524t.351.367q.229.143.54.213l.618.144q.31.073.462.193a.39.39 0 0 1 .153.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.167.07-.413.07-.176 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zM1.6 11.932H0v4h.791v-1.343h.803q.43 0 .732-.173.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.238.241.8.8 0 0 1-.375.082H.788v-1.406h.66q.327 0 .512.182.185.181.185.521m4.609 2.666v-3.999h1.459q.609 0 1.004.234.396.235.59.68.195.445.195 1.075 0 .634-.196 1.084t-.594.689q-.396.237-1 .237H6.755Zm1.353-3.354h-.562v2.707h.562q.279 0 .483-.082a.8.8 0 0 0 .334-.252 1.1 1.1 0 0 0 .197-.422q.067-.252.067-.592a2.1 2.1 0 0 0-.117-.753.9.9 0 0 0-.355-.454q-.236-.152-.609-.152"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-py.svg b/vendor/twbs/bootstrap-icons/icons/filetype-py.svg
new file mode 100644
index 000000000..14fd4ef71
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-py.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-py" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H7v-1h5a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM0 11.85h1.6q.434 0 .732.179.302.175.46.477t.158.677-.16.677q-.158.299-.464.474a1.45 1.45 0 0 1-.732.173H.79v1.342H0zm2.06 1.714a.8.8 0 0 0 .085-.381q0-.34-.185-.521-.185-.182-.513-.182H.788v1.406h.66a.8.8 0 0 0 .374-.082.57.57 0 0 0 .238-.24m2.963.75v1.535H4.23v-1.52L2.89 11.85h.876l.853 1.696h.032l.856-1.696h.855z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-raw.svg b/vendor/twbs/bootstrap-icons/icons/filetype-raw.svg
new file mode 100644
index 000000000..da98185a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-raw.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-raw" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.597 11.85H0v3.999h.782v-1.491h.71l.7 1.491h1.651l.313-1.028h1.336l.314 1.028h.84L5.31 11.85h-.925l-1.329 3.96-.783-1.572A1.18 1.18 0 0 0 3 13.116q0-.384-.167-.668a1.1 1.1 0 0 0-.478-.44 1.7 1.7 0 0 0-.758-.158m-.815 1.913v-1.292h.7a.74.74 0 0 1 .507.17q.194.17.194.49 0 .315-.194.474-.19.158-.518.158zm4.063-1.148.489 1.617H4.32l.49-1.617zm4.006.445-.74 2.789h-.73L6.326 11.85h.855l.601 2.903h.038l.706-2.903h.683l.706 2.903h.04l.596-2.903h.858l-1.055 3.999h-.73l-.74-2.789H8.85Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-rb.svg b/vendor/twbs/bootstrap-icons/icons/filetype-rb.svg
new file mode 100644
index 000000000..3466a1f49
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-rb.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-rb" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H8v-1h4a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM0 11.85h1.597q.446 0 .758.158.315.155.478.44.167.284.167.668a1.18 1.18 0 0 1-.727 1.122l.803 1.611h-.885l-.7-1.491H.782v1.491H0zm.782.621v1.292h.689q.327 0 .518-.158.195-.159.194-.475 0-.32-.194-.489a.74.74 0 0 0-.507-.17zm4.426 3.378H3.544V11.85h1.67q.536 0 .858.26.322.262.322.724a.94.94 0 0 1-.09.422.8.8 0 0 1-.244.293 1 1 0 0 1-.351.161v.035q.243.024.445.141a.85.85 0 0 1 .322.325 1 1 0 0 1 .123.51q0 .357-.178.61-.18.25-.492.386a1.9 1.9 0 0 1-.721.132m-.179-3.404h-.7v1.07h.521q.267 0 .434-.065a.5.5 0 0 0 .249-.185.5.5 0 0 0 .082-.296.49.49 0 0 0-.155-.384q-.153-.14-.43-.14Zm.05 1.62h-.75v1.19h.589q.466 0 .67-.147a.5.5 0 0 0 .206-.434.6.6 0 0 0-.082-.325.5.5 0 0 0-.24-.21.95.95 0 0 0-.393-.074"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-sass.svg b/vendor/twbs/bootstrap-icons/icons/filetype-sass.svg
new file mode 100644
index 000000000..363266277
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-sass.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-sass" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.41 15.29a1.2 1.2 0 0 1-.111-.449h.764a.58.58 0 0 0 .255.384.8.8 0 0 0 .25.114q.142.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .084-.29.39.39 0 0 0-.152-.326q-.152-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.352-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.192-.272.528-.422.338-.15.777-.149.456 0 .779.152.326.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.246-.181.9.9 0 0 0-.37-.068q-.324 0-.512.152a.47.47 0 0 0-.185.384q0 .18.144.3a1 1 0 0 0 .404.175l.621.143q.326.075.566.211t.375.358.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375m4.188-.387-.313 1.028h-.8l1.342-3.999h.926l1.335 4h-.84l-.314-1.03zm1.178-.59-.49-1.616h-.034l-.49 1.617zm1.352.528a1.13 1.13 0 0 0 .401.823q.195.162.478.252.284.091.665.091.507 0 .859-.158.354-.158.539-.44.187-.284.187-.656 0-.336-.134-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.566-.21l-.621-.144a1 1 0 0 1-.404-.176.37.37 0 0 1-.144-.299q0-.234.185-.384.188-.152.512-.152.214 0 .37.068a.6.6 0 0 1 .246.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.776.15-.337.149-.527.421-.19.273-.19.639 0 .302.122.524.123.223.352.367.228.143.539.213l.618.144q.31.073.463.193a.39.39 0 0 1 .152.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.167.07-.413.07-.175 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zm3.503.449a1.2 1.2 0 0 1-.111-.449h.764a.58.58 0 0 0 .255.384q.105.073.25.114.142.041.319.041.245 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.152-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.527-.422.338-.15.777-.149.456 0 .779.152.326.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.246-.181.9.9 0 0 0-.37-.068q-.324 0-.512.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .404.175l.621.143q.326.075.566.211t.375.358.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158a2.2 2.2 0 0 1-.665-.09 1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-scss.svg b/vendor/twbs/bootstrap-icons/icons/filetype-scss.svg
new file mode 100644
index 000000000..8d1935fb4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-scss.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-scss" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.356 15.29a1.2 1.2 0 0 1-.111-.449h.765a.58.58 0 0 0 .255.384q.105.073.249.114.143.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.151-.12-.462-.193l-.619-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.528-.422.336-.15.776-.149.457 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.247-.181.9.9 0 0 0-.369-.068q-.325 0-.513.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .405.175l.62.143q.326.075.566.211t.375.358.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375m4.274-2.23a1.7 1.7 0 0 0-.103.633v.495q0 .369.103.627a.83.83 0 0 0 .298.392.85.85 0 0 0 .478.132.9.9 0 0 0 .401-.088.7.7 0 0 0 .273-.249.8.8 0 0 0 .117-.363h.765v.076a1.27 1.27 0 0 1-.226.674 1.4 1.4 0 0 1-.55.454 1.8 1.8 0 0 1-.786.164q-.54 0-.914-.217a1.4 1.4 0 0 1-.571-.626q-.195-.408-.194-.976v-.498q0-.569.197-.979a1.44 1.44 0 0 1 .57-.633q.38-.222.912-.222.328 0 .607.097.28.093.489.272a1.32 1.32 0 0 1 .466.964v.073h-.765a.85.85 0 0 0-.12-.38.7.7 0 0 0-.273-.261.8.8 0 0 0-.398-.097.8.8 0 0 0-.475.138.87.87 0 0 0-.301.398m2.609 1.781a1.13 1.13 0 0 0 .401.823q.193.162.478.252.284.091.665.091.507 0 .858-.158.354-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.566-.21l-.62-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.188-.152.513-.152.213 0 .369.068a.6.6 0 0 1 .246.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.438 0-.776.15-.336.149-.527.421-.19.273-.19.639 0 .302.123.524t.351.367q.228.143.54.213l.617.144q.311.073.463.193a.39.39 0 0 1 .153.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193 1.1 1.1 0 0 1-.413.07q-.177 0-.32-.04a.8.8 0 0 1-.249-.115.58.58 0 0 1-.255-.384zm3.502.449a1.2 1.2 0 0 1-.11-.449h.764a.58.58 0 0 0 .255.384q.105.073.249.114.143.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.152-.326q-.153-.12-.463-.193l-.618-.143a1.7 1.7 0 0 1-.54-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.528-.422.336-.15.776-.149.458 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.247-.181.9.9 0 0 0-.369-.068q-.325 0-.512.152a.47.47 0 0 0-.185.384q0 .18.143.3a1 1 0 0 0 .405.175l.62.143q.326.075.566.211t.375.358.135.56q0 .37-.187.656a1.2 1.2 0 0 1-.54.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-sh.svg b/vendor/twbs/bootstrap-icons/icons/filetype-sh.svg
new file mode 100644
index 000000000..592c40816
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-sh.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-sh" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H8v-1h4a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.111 15.29A1.2 1.2 0 0 1 0 14.84h.765a.58.58 0 0 0 .255.384q.105.073.249.114.143.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.151-.12-.462-.193l-.619-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.528-.422.336-.15.776-.149.457 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.247-.181.9.9 0 0 0-.369-.068q-.326 0-.513.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .405.175l.62.143q.327.075.566.211.24.136.375.358t.135.56q0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375Zm6.67-3.358v4h-.79v-1.715H4.308v1.714h-.792v-3.999h.792v1.626H5.99v-1.626z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-sql.svg b/vendor/twbs/bootstrap-icons/icons/filetype-sql.svg
new file mode 100644
index 000000000..814137d8b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-sql.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-sql" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM0 14.841a1.13 1.13 0 0 0 .401.823q.194.162.478.252c.284.09.411.091.665.091q.507 0 .858-.158.355-.159.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.565-.21l-.621-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.187-.152.513-.152.214 0 .37.068a.6.6 0 0 1 .245.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.199-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.776.15-.337.149-.528.421-.19.273-.19.639 0 .302.123.524t.351.367q.229.143.54.213l.618.144q.31.073.462.193a.39.39 0 0 1 .153.325q0 .165-.085.29A.56.56 0 0 1 2 15.31q-.167.07-.413.07-.176 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zm6.878 1.489-.507-.739q.264-.243.401-.6.138-.358.138-.806v-.501q0-.556-.208-.967a1.5 1.5 0 0 0-.589-.636q-.383-.225-.917-.225-.527 0-.914.225-.384.223-.592.636a2.14 2.14 0 0 0-.205.967v.5q0 .554.205.965.208.41.592.636a1.8 1.8 0 0 0 .914.222 1.8 1.8 0 0 0 .6-.1l.294.422h.788ZM4.262 14.2v-.522q0-.369.114-.63a.9.9 0 0 1 .325-.398.9.9 0 0 1 .495-.138q.288 0 .495.138a.9.9 0 0 1 .325.398q.115.261.115.63v.522q0 .246-.053.445-.053.196-.155.34l-.106-.14-.105-.147h-.733l.451.65a.6.6 0 0 1-.251.047.87.87 0 0 1-.487-.147.9.9 0 0 1-.32-.404 1.7 1.7 0 0 1-.11-.644m3.986 1.057h1.696v.674H7.457v-3.999h.79z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-svg.svg b/vendor/twbs/bootstrap-icons/icons/filetype-svg.svg
new file mode 100644
index 000000000..222d9ac08
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-svg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-svg" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM0 14.841a1.13 1.13 0 0 0 .401.823q.194.162.478.252.285.091.665.091.507 0 .858-.158.355-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.565-.21l-.621-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.187-.152.513-.152.214 0 .37.068a.6.6 0 0 1 .245.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.199-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.776.15-.337.149-.528.421-.19.273-.19.639 0 .302.123.524t.351.367q.229.143.54.213l.618.144q.31.073.462.193a.39.39 0 0 1 .153.326.5.5 0 0 1-.085.29.56.56 0 0 1-.256.193q-.167.07-.413.07-.176 0-.32-.04a.8.8 0 0 1-.248-.115.58.58 0 0 1-.255-.384zm4.575 1.09h.952l1.327-3.999h-.879l-.887 3.138H5.05l-.897-3.138h-.917zm5.483-3.293q.114.228.14.492h-.776a.8.8 0 0 0-.096-.249.7.7 0 0 0-.17-.19.7.7 0 0 0-.237-.126 1 1 0 0 0-.3-.044q-.427 0-.664.302-.235.3-.235.85v.497q0 .352.097.616a.9.9 0 0 0 .305.413.87.87 0 0 0 .518.146 1 1 0 0 0 .457-.097.67.67 0 0 0 .273-.263q.09-.164.09-.364v-.254h-.823v-.59h1.576v.798q0 .29-.096.55a1.3 1.3 0 0 1-.293.457 1.4 1.4 0 0 1-.495.314q-.296.111-.698.111a2 2 0 0 1-.752-.132 1.45 1.45 0 0 1-.534-.377 1.6 1.6 0 0 1-.319-.58 2.5 2.5 0 0 1-.105-.745v-.507q0-.54.199-.949.202-.406.583-.633.383-.228.926-.228.357 0 .635.1.282.1.48.275.2.176.314.407"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-tiff.svg b/vendor/twbs/bootstrap-icons/icons/filetype-tiff.svg
new file mode 100644
index 000000000..e101575f1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-tiff.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-tiff" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.928 12.512v3.337h-.794v-3.337H0v-.662h3.064v.662zm2.131-.662v3.999h-.79V11.85zm1.373 3.999v-1.59h1.606v-.64H5.432v-1.116H7.19v-.653H4.641v3.999zm2.868-1.59v1.59h-.791V11.85h2.548v.653H8.3v1.117h1.605v.638z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-tsx.svg b/vendor/twbs/bootstrap-icons/icons/filetype-tsx.svg
new file mode 100644
index 000000000..73dd6435c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-tsx.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-tsx" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.172 14.841a1.13 1.13 0 0 0 .401.823q.193.162.478.252.283.091.665.091.507 0 .858-.158.354-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.566-.21l-.62-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.144-.299q0-.234.185-.384.188-.152.513-.152.213 0 .369.068a.6.6 0 0 1 .246.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.438 0-.776.15-.336.149-.527.421-.19.273-.19.639 0 .302.122.524.124.223.352.367.228.143.54.213l.617.144q.311.073.463.193a.39.39 0 0 1 .152.326.5.5 0 0 1-.084.29.56.56 0 0 1-.255.193 1.1 1.1 0 0 1-.413.07q-.177 0-.32-.04a.8.8 0 0 1-.249-.115.58.58 0 0 1-.255-.384zm-1.244 1.09v-3.337h1.136v-.662H0v.662h1.134v3.337zm7.076-3.999h.893l-1.274 2.007 1.254 1.992h-.909l-.85-1.415h-.034l-.853 1.415H6.37l1.239-2.016-1.228-1.983h.932l.832 1.438h.035z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-ttf.svg b/vendor/twbs/bootstrap-icons/icons/filetype-ttf.svg
new file mode 100644
index 000000000..9c93584c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-ttf.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-ttf" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-2v-1h2a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.928 15.849v-3.337h2.269v3.337h.794v-3.337h1.137v-.662H0v.662h1.134v3.337zm5.315-1.59v1.59h-.791V11.85H9v.653H7.243v1.117h1.605v.638z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-txt.svg b/vendor/twbs/bootstrap-icons/icons/filetype-txt.svg
new file mode 100644
index 000000000..1e27bcf2a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-txt.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-txt" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-2v-1h2a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.928 15.849v-3.337h1.136v-.662H0v.662h1.134v3.337zm4.689-3.999h-.894L4.9 13.289h-.035l-.832-1.439h-.932l1.228 1.983-1.24 2.016h.862l.853-1.415h.035l.85 1.415h.907l-1.253-1.992zm1.93.662v3.337h-.794v-3.337H6.619v-.662h3.064v.662H8.546Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-wav.svg b/vendor/twbs/bootstrap-icons/icons/filetype-wav.svg
new file mode 100644
index 000000000..6725640f0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-wav.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-wav" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.784 15.849l.741-2.789h.033l.74 2.789h.73l1.055-3.999h-.858l-.595 2.903h-.041l-.706-2.903H2.2l-.706 2.903h-.038l-.6-2.903H0l1.055 3.999zm3.715 0 .314-1.028h1.336l.313 1.028h.841L6.967 11.85h-.926L4.7 15.849h.8Zm1.002-3.234.49 1.617H5.977l.49-1.617H6.5Zm3.604 3.234h-.952L7.814 11.85h.917l.897 3.138h.038l.888-3.138h.879z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-woff.svg b/vendor/twbs/bootstrap-icons/icons/filetype-woff.svg
new file mode 100644
index 000000000..f29a4b162
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-woff.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-woff" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-5.464 9.688v-.522q0-.386-.117-.641a.86.86 0 0 0-.323-.387.86.86 0 0 0-.468-.129.87.87 0 0 0-.472.13.87.87 0 0 0-.32.386q-.116.255-.116.641v.522q0 .384.117.641a.87.87 0 0 0 .319.387.9.9 0 0 0 .472.126.9.9 0 0 0 .468-.126.86.86 0 0 0 .323-.386 1.55 1.55 0 0 0 .117-.642m.803-.516v.513q0 .563-.205.973-.205.406-.59.627-.38.216-.916.216-.534 0-.92-.216a1.46 1.46 0 0 1-.59-.627 2.15 2.15 0 0 1-.204-.973v-.513q0-.569.205-.975.205-.411.589-.627.386-.22.92-.22.536 0 .917.22.384.219.589.63.204.406.205.972m-6.064-.536-.74 2.79h-.73l-1.055-4h.855l.601 2.903h.038l.706-2.903h.683l.706 2.903h.04l.596-2.903h.858l-1.055 4h-.73l-.74-2.79zm7.398 2.79v-1.592h1.606v-.638h-1.606v-1.117h1.758v-.653H9.882v4zm2.988-1.592v1.591h-.791v-3.999h2.548v.653h-1.757v1.117h1.605v.638z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-xls.svg b/vendor/twbs/bootstrap-icons/icons/filetype-xls.svg
new file mode 100644
index 000000000..5f79b1621
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-xls.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-xls" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM6.472 15.29a1.2 1.2 0 0 1-.111-.449h.765a.58.58 0 0 0 .254.384q.106.073.25.114.143.041.319.041.246 0 .413-.07a.56.56 0 0 0 .255-.193.5.5 0 0 0 .085-.29.39.39 0 0 0-.153-.326q-.152-.12-.462-.193l-.619-.143a1.7 1.7 0 0 1-.539-.214 1 1 0 0 1-.351-.367 1.1 1.1 0 0 1-.123-.524q0-.366.19-.639.19-.272.527-.422.338-.15.777-.149.457 0 .78.152.324.153.5.41.18.255.2.566h-.75a.56.56 0 0 0-.12-.258.6.6 0 0 0-.247-.181.9.9 0 0 0-.369-.068q-.325 0-.513.152a.47.47 0 0 0-.184.384q0 .18.143.3a1 1 0 0 0 .405.175l.62.143q.326.075.566.211a1 1 0 0 1 .375.358q.135.222.135.56 0 .37-.188.656a1.2 1.2 0 0 1-.539.439q-.351.158-.858.158-.381 0-.665-.09a1.4 1.4 0 0 1-.478-.252 1.1 1.1 0 0 1-.29-.375m-2.945-3.358h-.893L1.81 13.37h-.036l-.832-1.438h-.93l1.227 1.983L0 15.931h.861l.853-1.415h.035l.85 1.415h.908L2.253 13.94zm2.727 3.325H4.557v-3.325h-.79v4h2.487z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-xlsx.svg b/vendor/twbs/bootstrap-icons/icons/filetype-xlsx.svg
new file mode 100644
index 000000000..5202bf784
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-xlsx.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-xlsx" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM7.86 14.841a1.13 1.13 0 0 0 .401.823q.195.162.479.252.284.091.665.091.507 0 .858-.158.355-.158.54-.44a1.17 1.17 0 0 0 .187-.656q0-.336-.135-.56a1 1 0 0 0-.375-.357 2 2 0 0 0-.565-.21l-.621-.144a1 1 0 0 1-.405-.176.37.37 0 0 1-.143-.299q0-.234.184-.384.188-.152.513-.152.214 0 .37.068a.6.6 0 0 1 .245.181.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.199-.566 1.2 1.2 0 0 0-.5-.41 1.8 1.8 0 0 0-.78-.152q-.44 0-.777.15-.336.149-.527.421-.19.273-.19.639 0 .302.123.524t.351.367q.229.143.54.213l.618.144q.31.073.462.193a.39.39 0 0 1 .153.326.5.5 0 0 1-.085.29.56.56 0 0 1-.255.193q-.168.07-.413.07-.176 0-.32-.04a.8.8 0 0 1-.249-.115.58.58 0 0 1-.255-.384zm-3.726-2.909h.893l-1.274 2.007 1.254 1.992h-.908l-.85-1.415h-.035l-.853 1.415H1.5l1.24-2.016-1.228-1.983h.931l.832 1.438h.036zm1.923 3.325h1.697v.674H5.266v-3.999h.791zm7.636-3.325h.893l-1.274 2.007 1.254 1.992h-.908l-.85-1.415h-.035l-.853 1.415h-.861l1.24-2.016-1.228-1.983h.931l.832 1.438h.036z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-xml.svg b/vendor/twbs/bootstrap-icons/icons/filetype-xml.svg
new file mode 100644
index 000000000..ba9ffb6a7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-xml.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-xml" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.527 11.85h-.893l-.823 1.439h-.036L.943 11.85H.012l1.227 1.983L0 15.85h.861l.853-1.415h.035l.85 1.415h.908l-1.254-1.992zm.954 3.999v-2.66h.038l.952 2.159h.516l.946-2.16h.038v2.661h.715V11.85h-.8l-1.14 2.596h-.025L4.58 11.85h-.806v3.999zm4.71-.674h1.696v.674H8.4V11.85h.791z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filetype-yml.svg b/vendor/twbs/bootstrap-icons/icons/filetype-yml.svg
new file mode 100644
index 000000000..17a9ebeb2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filetype-yml.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-yml" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM2.133 15.849v-1.535l1.339-2.464h-.856l-.855 1.696h-.032L.876 11.85H0l1.339 2.479v1.52zm2.287 0v-2.66h.038l.952 2.159h.516l.946-2.16h.038v2.661h.715V11.85h-.8l-1.14 2.596H5.66L4.52 11.85h-.805v3.999zm4.71-.674h1.696v.674H8.338V11.85h.791v3.325Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/film.svg b/vendor/twbs/bootstrap-icons/icons/film.svg
new file mode 100644
index 000000000..40c2eb9da
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/film.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-film" viewBox="0 0 16 16">
+ <path d="M0 1a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm4 0v6h8V1zm8 8H4v6h8zM1 1v2h2V1zm2 3H1v2h2zM1 7v2h2V7zm2 3H1v2h2zm-2 3v2h2v-2zM15 1h-2v2h2zm-2 3v2h2V4zm2 3h-2v2h2zm-2 3v2h2v-2zm2 3h-2v2h2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filter-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/filter-circle-fill.svg
new file mode 100644
index 000000000..1aa0f399b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filter-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filter-circle-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M3.5 5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1 0-1M5 8.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m2 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filter-circle.svg b/vendor/twbs/bootstrap-icons/icons/filter-circle.svg
new file mode 100644
index 000000000..42c1b8442
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filter-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filter-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M7 11.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filter-left.svg b/vendor/twbs/bootstrap-icons/icons/filter-left.svg
new file mode 100644
index 000000000..bb1ee92a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filter-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filter-left" viewBox="0 0 16 16">
+ <path d="M2 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filter-right.svg b/vendor/twbs/bootstrap-icons/icons/filter-right.svg
new file mode 100644
index 000000000..6a5083c05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filter-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filter-right" viewBox="0 0 16 16">
+ <path d="M14 10.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 .5-.5m0-3a.5.5 0 0 0-.5-.5h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 .5-.5m0-3a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0 0 1h11a.5.5 0 0 0 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filter-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/filter-square-fill.svg
new file mode 100644
index 000000000..438b8c227
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filter-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filter-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm.5 5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1 0-1M4 8.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m2 3a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filter-square.svg b/vendor/twbs/bootstrap-icons/icons/filter-square.svg
new file mode 100644
index 000000000..d243b0bac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filter-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filter-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M6 11.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/filter.svg b/vendor/twbs/bootstrap-icons/icons/filter.svg
new file mode 100644
index 000000000..a7d7daca0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/filter.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filter" viewBox="0 0 16 16">
+ <path d="M6 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fingerprint.svg b/vendor/twbs/bootstrap-icons/icons/fingerprint.svg
new file mode 100644
index 000000000..08252bbdd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fingerprint.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fingerprint" viewBox="0 0 16 16">
+ <path d="M8.06 6.5a.5.5 0 0 1 .5.5v.776a11.5 11.5 0 0 1-.552 3.519l-1.331 4.14a.5.5 0 0 1-.952-.305l1.33-4.141a10.5 10.5 0 0 0 .504-3.213V7a.5.5 0 0 1 .5-.5Z"/>
+ <path d="M6.06 7a2 2 0 1 1 4 0 .5.5 0 1 1-1 0 1 1 0 1 0-2 0v.332q0 .613-.066 1.221A.5.5 0 0 1 6 8.447q.06-.555.06-1.115zm3.509 1a.5.5 0 0 1 .487.513 11.5 11.5 0 0 1-.587 3.339l-1.266 3.8a.5.5 0 0 1-.949-.317l1.267-3.8a10.5 10.5 0 0 0 .535-3.048A.5.5 0 0 1 9.569 8m-3.356 2.115a.5.5 0 0 1 .33.626L5.24 14.939a.5.5 0 1 1-.955-.296l1.303-4.199a.5.5 0 0 1 .625-.329"/>
+ <path d="M4.759 5.833A3.501 3.501 0 0 1 11.559 7a.5.5 0 0 1-1 0 2.5 2.5 0 0 0-4.857-.833.5.5 0 1 1-.943-.334m.3 1.67a.5.5 0 0 1 .449.546 10.7 10.7 0 0 1-.4 2.031l-1.222 4.072a.5.5 0 1 1-.958-.287L4.15 9.793a9.7 9.7 0 0 0 .363-1.842.5.5 0 0 1 .546-.449Zm6 .647a.5.5 0 0 1 .5.5c0 1.28-.213 2.552-.632 3.762l-1.09 3.145a.5.5 0 0 1-.944-.327l1.089-3.145c.382-1.105.578-2.266.578-3.435a.5.5 0 0 1 .5-.5Z"/>
+ <path d="M3.902 4.222a5 5 0 0 1 5.202-2.113.5.5 0 0 1-.208.979 4 4 0 0 0-4.163 1.69.5.5 0 0 1-.831-.556m6.72-.955a.5.5 0 0 1 .705-.052A4.99 4.99 0 0 1 13.059 7v1.5a.5.5 0 1 1-1 0V7a3.99 3.99 0 0 0-1.386-3.028.5.5 0 0 1-.051-.705M3.68 5.842a.5.5 0 0 1 .422.568q-.044.289-.044.59c0 .71-.1 1.417-.298 2.1l-1.14 3.923a.5.5 0 1 1-.96-.279L2.8 8.821A6.5 6.5 0 0 0 3.058 7q0-.375.054-.736a.5.5 0 0 1 .568-.422m8.882 3.66a.5.5 0 0 1 .456.54c-.084 1-.298 1.986-.64 2.934l-.744 2.068a.5.5 0 0 1-.941-.338l.745-2.07a10.5 10.5 0 0 0 .584-2.678.5.5 0 0 1 .54-.456"/>
+ <path d="M4.81 1.37A6.5 6.5 0 0 1 14.56 7a.5.5 0 1 1-1 0 5.5 5.5 0 0 0-8.25-4.765.5.5 0 0 1-.5-.865m-.89 1.257a.5.5 0 0 1 .04.706A5.48 5.48 0 0 0 2.56 7a.5.5 0 0 1-1 0c0-1.664.626-3.184 1.655-4.333a.5.5 0 0 1 .706-.04ZM1.915 8.02a.5.5 0 0 1 .346.616l-.779 2.767a.5.5 0 1 1-.962-.27l.778-2.767a.5.5 0 0 1 .617-.346m12.15.481a.5.5 0 0 1 .49.51c-.03 1.499-.161 3.025-.727 4.533l-.07.187a.5.5 0 0 1-.936-.351l.07-.187c.506-1.35.634-2.74.663-4.202a.5.5 0 0 1 .51-.49"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fire.svg b/vendor/twbs/bootstrap-icons/icons/fire.svg
new file mode 100644
index 000000000..a58e6dda0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fire.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fire" viewBox="0 0 16 16">
+ <path d="M8 16c3.314 0 6-2 6-5.5 0-1.5-.5-4-2.5-6 .25 1.5-1.25 2-1.25 2C11 4 9 .5 6 0c.357 2 .5 4-2 6-1.25 1-2 2.729-2 4.5C2 14 4.686 16 8 16m0-1c-1.657 0-3-1-3-2.75 0-.75.25-2 1.25-3C6.125 10 7 10.5 7 10.5c-.375-1.25.5-3.25 2-3.5-.179 1-.25 2 1 3 .625.5 1 1.364 1 2.25C11 14 9.657 15 8 15"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/flag-fill.svg b/vendor/twbs/bootstrap-icons/icons/flag-fill.svg
new file mode 100644
index 000000000..8b92331eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/flag-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-flag-fill" viewBox="0 0 16 16">
+ <path d="M14.778.085A.5.5 0 0 1 15 .5V8a.5.5 0 0 1-.314.464L14.5 8l.186.464-.003.001-.006.003-.023.009a12 12 0 0 1-.397.15c-.264.095-.631.223-1.047.35-.816.252-1.879.523-2.71.523-.847 0-1.548-.28-2.158-.525l-.028-.01C7.68 8.71 7.14 8.5 6.5 8.5c-.7 0-1.638.23-2.437.477A20 20 0 0 0 3 9.342V15.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 1 0v.282c.226-.079.496-.17.79-.26C4.606.272 5.67 0 6.5 0c.84 0 1.524.277 2.121.519l.043.018C9.286.788 9.828 1 10.5 1c.7 0 1.638-.23 2.437-.477a20 20 0 0 0 1.349-.476l.019-.007.004-.002h.001"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/flag.svg b/vendor/twbs/bootstrap-icons/icons/flag.svg
new file mode 100644
index 000000000..f8b6daba0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/flag.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-flag" viewBox="0 0 16 16">
+ <path d="M14.778.085A.5.5 0 0 1 15 .5V8a.5.5 0 0 1-.314.464L14.5 8l.186.464-.003.001-.006.003-.023.009a12 12 0 0 1-.397.15c-.264.095-.631.223-1.047.35-.816.252-1.879.523-2.71.523-.847 0-1.548-.28-2.158-.525l-.028-.01C7.68 8.71 7.14 8.5 6.5 8.5c-.7 0-1.638.23-2.437.477A20 20 0 0 0 3 9.342V15.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 1 0v.282c.226-.079.496-.17.79-.26C4.606.272 5.67 0 6.5 0c.84 0 1.524.277 2.121.519l.043.018C9.286.788 9.828 1 10.5 1c.7 0 1.638-.23 2.437-.477a20 20 0 0 0 1.349-.476l.019-.007.004-.002h.001M14 1.221c-.22.078-.48.167-.766.255-.81.252-1.872.523-2.734.523-.886 0-1.592-.286-2.203-.534l-.008-.003C7.662 1.21 7.139 1 6.5 1c-.669 0-1.606.229-2.415.478A21 21 0 0 0 3 1.845v6.433c.22-.078.48-.167.766-.255C4.576 7.77 5.638 7.5 6.5 7.5c.847 0 1.548.28 2.158.525l.028.01C9.32 8.29 9.86 8.5 10.5 8.5c.668 0 1.606-.229 2.415-.478A21 21 0 0 0 14 7.655V1.222z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/floppy-fill.svg b/vendor/twbs/bootstrap-icons/icons/floppy-fill.svg
new file mode 100644
index 000000000..87a43ce97
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/floppy-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-floppy-fill" viewBox="0 0 16 16">
+ <path d="M0 1.5A1.5 1.5 0 0 1 1.5 0H3v5.5A1.5 1.5 0 0 0 4.5 7h7A1.5 1.5 0 0 0 13 5.5V0h.086a1.5 1.5 0 0 1 1.06.44l1.415 1.414A1.5 1.5 0 0 1 16 2.914V14.5a1.5 1.5 0 0 1-1.5 1.5H14v-5.5A1.5 1.5 0 0 0 12.5 9h-9A1.5 1.5 0 0 0 2 10.5V16h-.5A1.5 1.5 0 0 1 0 14.5z"/>
+ <path d="M3 16h10v-5.5a.5.5 0 0 0-.5-.5h-9a.5.5 0 0 0-.5.5zm9-16H4v5.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5zM9 1h2v4H9z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/floppy.svg b/vendor/twbs/bootstrap-icons/icons/floppy.svg
new file mode 100644
index 000000000..65ae562d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/floppy.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-floppy" viewBox="0 0 16 16">
+ <path d="M11 2H9v3h2z"/>
+ <path d="M1.5 0h11.586a1.5 1.5 0 0 1 1.06.44l1.415 1.414A1.5 1.5 0 0 1 16 2.914V14.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5v-13A1.5 1.5 0 0 1 1.5 0M1 1.5v13a.5.5 0 0 0 .5.5H2v-4.5A1.5 1.5 0 0 1 3.5 9h9a1.5 1.5 0 0 1 1.5 1.5V15h.5a.5.5 0 0 0 .5-.5V2.914a.5.5 0 0 0-.146-.353l-1.415-1.415A.5.5 0 0 0 13.086 1H13v4.5A1.5 1.5 0 0 1 11.5 7h-7A1.5 1.5 0 0 1 3 5.5V1H1.5a.5.5 0 0 0-.5.5m3 4a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5V1H4zM3 15h10v-4.5a.5.5 0 0 0-.5-.5h-9a.5.5 0 0 0-.5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/floppy2-fill.svg b/vendor/twbs/bootstrap-icons/icons/floppy2-fill.svg
new file mode 100644
index 000000000..61a6cdb4d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/floppy2-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-floppy2-fill" viewBox="0 0 16 16">
+ <path d="M12 2h-2v3h2z"/>
+ <path d="M1.5 0A1.5 1.5 0 0 0 0 1.5v13A1.5 1.5 0 0 0 1.5 16h13a1.5 1.5 0 0 0 1.5-1.5V2.914a1.5 1.5 0 0 0-.44-1.06L14.147.439A1.5 1.5 0 0 0 13.086 0zM4 6a1 1 0 0 1-1-1V1h10v4a1 1 0 0 1-1 1zM3 9h10a1 1 0 0 1 1 1v5H2v-5a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/floppy2.svg b/vendor/twbs/bootstrap-icons/icons/floppy2.svg
new file mode 100644
index 000000000..241238914
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/floppy2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-floppy2" viewBox="0 0 16 16">
+ <path d="M1.5 0h11.586a1.5 1.5 0 0 1 1.06.44l1.415 1.414A1.5 1.5 0 0 1 16 2.914V14.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5v-13A1.5 1.5 0 0 1 1.5 0M1 1.5v13a.5.5 0 0 0 .5.5H2v-4.5A1.5 1.5 0 0 1 3.5 9h9a1.5 1.5 0 0 1 1.5 1.5V15h.5a.5.5 0 0 0 .5-.5V2.914a.5.5 0 0 0-.146-.353l-1.415-1.415A.5.5 0 0 0 13.086 1H13v3.5A1.5 1.5 0 0 1 11.5 6h-7A1.5 1.5 0 0 1 3 4.5V1H1.5a.5.5 0 0 0-.5.5m9.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/flower1.svg b/vendor/twbs/bootstrap-icons/icons/flower1.svg
new file mode 100644
index 000000000..3495858ae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/flower1.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-flower1" viewBox="0 0 16 16">
+ <path d="M6.174 1.184a2 2 0 0 1 3.652 0A2 2 0 0 1 12.99 3.01a2 2 0 0 1 1.826 3.164 2 2 0 0 1 0 3.652 2 2 0 0 1-1.826 3.164 2 2 0 0 1-3.164 1.826 2 2 0 0 1-3.652 0A2 2 0 0 1 3.01 12.99a2 2 0 0 1-1.826-3.164 2 2 0 0 1 0-3.652A2 2 0 0 1 3.01 3.01a2 2 0 0 1 3.164-1.826M8 1a1 1 0 0 0-.998 1.03l.01.091q.017.116.054.296c.049.241.122.542.213.887.182.688.428 1.513.676 2.314L8 5.762l.045-.144c.248-.8.494-1.626.676-2.314.091-.345.164-.646.213-.887a5 5 0 0 0 .064-.386L9 2a1 1 0 0 0-1-1M2 9l.03-.002.091-.01a5 5 0 0 0 .296-.054c.241-.049.542-.122.887-.213a61 61 0 0 0 2.314-.676L5.762 8l-.144-.045a61 61 0 0 0-2.314-.676 17 17 0 0 0-.887-.213 5 5 0 0 0-.386-.064L2 7a1 1 0 1 0 0 2m7 5-.002-.03a5 5 0 0 0-.064-.386 16 16 0 0 0-.213-.888 61 61 0 0 0-.676-2.314L8 10.238l-.045.144c-.248.8-.494 1.626-.676 2.314-.091.345-.164.646-.213.887a5 5 0 0 0-.064.386L7 14a1 1 0 1 0 2 0m-5.696-2.134.025-.017a5 5 0 0 0 .303-.248c.184-.164.408-.377.661-.629A61 61 0 0 0 5.96 9.23l.103-.111-.147.033a61 61 0 0 0-2.343.572c-.344.093-.64.18-.874.258a5 5 0 0 0-.367.138l-.027.014a1 1 0 1 0 1 1.732zM4.5 14.062a1 1 0 0 0 1.366-.366l.014-.027q.014-.03.036-.084a5 5 0 0 0 .102-.283c.078-.233.165-.53.258-.874a61 61 0 0 0 .572-2.343l.033-.147-.11.102a61 61 0 0 0-1.743 1.667 17 17 0 0 0-.629.66 5 5 0 0 0-.248.304l-.017.025a1 1 0 0 0 .366 1.366m9.196-8.196a1 1 0 0 0-1-1.732l-.025.017a5 5 0 0 0-.303.248 17 17 0 0 0-.661.629A61 61 0 0 0 10.04 6.77l-.102.111.147-.033a61 61 0 0 0 2.342-.572c.345-.093.642-.18.875-.258a5 5 0 0 0 .367-.138zM11.5 1.938a1 1 0 0 0-1.366.366l-.014.027q-.014.03-.036.084a5 5 0 0 0-.102.283c-.078.233-.165.53-.258.875a61 61 0 0 0-.572 2.342l-.033.147.11-.102a61 61 0 0 0 1.743-1.667c.252-.253.465-.477.629-.66a5 5 0 0 0 .248-.304l.017-.025a1 1 0 0 0-.366-1.366M14 9a1 1 0 0 0 0-2l-.03.002a5 5 0 0 0-.386.064c-.242.049-.543.122-.888.213-.688.182-1.513.428-2.314.676L10.238 8l.144.045c.8.248 1.626.494 2.314.676.345.091.646.164.887.213a5 5 0 0 0 .386.064zM1.938 4.5a1 1 0 0 0 .393 1.38l.084.035q.108.045.283.103c.233.078.53.165.874.258a61 61 0 0 0 2.343.572l.147.033-.103-.111a61 61 0 0 0-1.666-1.742 17 17 0 0 0-.66-.629 5 5 0 0 0-.304-.248l-.025-.017a1 1 0 0 0-1.366.366m2.196-1.196.017.025a5 5 0 0 0 .248.303c.164.184.377.408.629.661A61 61 0 0 0 6.77 5.96l.111.102-.033-.147a61 61 0 0 0-.572-2.342c-.093-.345-.18-.642-.258-.875a5 5 0 0 0-.138-.367l-.014-.027a1 1 0 1 0-1.732 1m9.928 8.196a1 1 0 0 0-.366-1.366l-.027-.014a5 5 0 0 0-.367-.138c-.233-.078-.53-.165-.875-.258a61 61 0 0 0-2.342-.572l-.147-.033.102.111a61 61 0 0 0 1.667 1.742c.253.252.477.465.66.629a5 5 0 0 0 .304.248l.025.017a1 1 0 0 0 1.366-.366m-3.928 2.196a1 1 0 0 0 1.732-1l-.017-.025a5 5 0 0 0-.248-.303 17 17 0 0 0-.629-.661A61 61 0 0 0 9.23 10.04l-.111-.102.033.147a61 61 0 0 0 .572 2.342c.093.345.18.642.258.875a5 5 0 0 0 .138.367zM8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/flower2.svg b/vendor/twbs/bootstrap-icons/icons/flower2.svg
new file mode 100644
index 000000000..664a9c226
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/flower2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-flower2" viewBox="0 0 16 16">
+ <path d="M8 16a4 4 0 0 0 4-4 4 4 0 0 0 0-8 4 4 0 0 0-8 0 4 4 0 1 0 0 8 4 4 0 0 0 4 4m3-12q0 .11-.03.247c-.544.241-1.091.638-1.598 1.084A3 3 0 0 0 8 5c-.494 0-.96.12-1.372.331-.507-.446-1.054-.843-1.597-1.084A1 1 0 0 1 5 4a3 3 0 0 1 6 0m-.812 6.052A3 3 0 0 0 11 8a3 3 0 0 0-.812-2.052c.215-.18.432-.346.647-.487C11.34 5.131 11.732 5 12 5a3 3 0 1 1 0 6c-.268 0-.66-.13-1.165-.461a7 7 0 0 1-.647-.487m-3.56.617a3 3 0 0 0 2.744 0c.507.446 1.054.842 1.598 1.084q.03.137.03.247a3 3 0 1 1-6 0q0-.11.03-.247c.544-.242 1.091-.638 1.598-1.084m-.816-4.721A3 3 0 0 0 5 8c0 .794.308 1.516.812 2.052a7 7 0 0 1-.647.487C4.66 10.869 4.268 11 4 11a3 3 0 0 1 0-6c.268 0 .66.13 1.165.461.215.141.432.306.647.487M8 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/flower3.svg b/vendor/twbs/bootstrap-icons/icons/flower3.svg
new file mode 100644
index 000000000..66845c35e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/flower3.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-flower3" viewBox="0 0 16 16">
+ <path d="M11.424 8c.437-.052.811-.136 1.04-.268a2 2 0 0 0-2-3.464c-.229.132-.489.414-.752.767C9.886 4.63 10 4.264 10 4a2 2 0 1 0-4 0c0 .264.114.63.288 1.035-.263-.353-.523-.635-.752-.767a2 2 0 0 0-2 3.464c.229.132.603.216 1.04.268-.437.052-.811.136-1.04.268a2 2 0 1 0 2 3.464c.229-.132.489-.414.752-.767C6.114 11.37 6 11.736 6 12a2 2 0 1 0 4 0c0-.264-.114-.63-.288-1.035.263.353.523.635.752.767a2 2 0 1 0 2-3.464c-.229-.132-.603-.216-1.04-.268M9 4a2 2 0 0 1-.045.205q-.059.2-.183.484a13 13 0 0 1-.637 1.223L8 6.142l-.135-.23a13 13 0 0 1-.637-1.223 4 4 0 0 1-.183-.484A2 2 0 0 1 7 4a1 1 0 1 1 2 0M3.67 5.5a1 1 0 0 1 1.366-.366 2 2 0 0 1 .156.142q.142.15.326.4c.245.333.502.747.742 1.163l.13.232-.265.002a13 13 0 0 1-1.379-.06 4 4 0 0 1-.51-.083 2 2 0 0 1-.2-.064A1 1 0 0 1 3.67 5.5m1.366 5.366a1 1 0 0 1-1-1.732l.047-.02q.055-.02.153-.044.202-.048.51-.083a13 13 0 0 1 1.379-.06q.135 0 .266.002l-.131.232c-.24.416-.497.83-.742 1.163a4 4 0 0 1-.327.4 2 2 0 0 1-.155.142M9 12a1 1 0 0 1-2 0 2 2 0 0 1 .045-.206q.058-.198.183-.483c.166-.378.396-.808.637-1.223L8 9.858l.135.23c.241.415.47.845.637 1.223q.124.285.183.484A1.3 1.3 0 0 1 9 12m3.33-6.5a1 1 0 0 1-.366 1.366 2 2 0 0 1-.2.064q-.202.048-.51.083c-.412.045-.898.061-1.379.06q-.135 0-.266-.002l.131-.232c.24-.416.497-.83.742-1.163a4 4 0 0 1 .327-.4q.07-.074.114-.11l.041-.032a1 1 0 0 1 1.366.366m-1.366 5.366a2 2 0 0 1-.155-.141 4 4 0 0 1-.327-.4A13 13 0 0 1 9.74 9.16l-.13-.232.265-.002c.48-.001.967.015 1.379.06q.308.035.51.083.098.024.153.044l.048.02a1 1 0 1 1-1 1.732zM8 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/folder-check.svg b/vendor/twbs/bootstrap-icons/icons/folder-check.svg
new file mode 100644
index 000000000..57c6466b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/folder-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder-check" viewBox="0 0 16 16">
+ <path d="m.5 3 .04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2m5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98z"/>
+ <path d="M15.854 10.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.707 0l-1.5-1.5a.5.5 0 0 1 .707-.708l1.146 1.147 2.646-2.647a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/folder-fill.svg b/vendor/twbs/bootstrap-icons/icons/folder-fill.svg
new file mode 100644
index 000000000..113350c0f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/folder-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder-fill" viewBox="0 0 16 16">
+ <path d="M9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.825a2 2 0 0 1-1.991-1.819l-.637-7a2 2 0 0 1 .342-1.31L.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3m-8.322.12q.322-.119.684-.12h5.396l-.707-.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/folder-minus.svg b/vendor/twbs/bootstrap-icons/icons/folder-minus.svg
new file mode 100644
index 000000000..41db30bb7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/folder-minus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder-minus" viewBox="0 0 16 16">
+ <path d="m.5 3 .04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2m5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98z"/>
+ <path d="M11 11.5a.5.5 0 0 1 .5-.5h4a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/folder-plus.svg b/vendor/twbs/bootstrap-icons/icons/folder-plus.svg
new file mode 100644
index 000000000..85b5a18d3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/folder-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder-plus" viewBox="0 0 16 16">
+ <path d="m.5 3 .04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2m5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98z"/>
+ <path d="M13.5 9a.5.5 0 0 1 .5.5V11h1.5a.5.5 0 1 1 0 1H14v1.5a.5.5 0 1 1-1 0V12h-1.5a.5.5 0 0 1 0-1H13V9.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/folder-symlink-fill.svg b/vendor/twbs/bootstrap-icons/icons/folder-symlink-fill.svg
new file mode 100644
index 000000000..64074007f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/folder-symlink-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder-symlink-fill" viewBox="0 0 16 16">
+ <path d="M13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2l.04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14h10.348a2 2 0 0 0 1.991-1.819l.637-7A2 2 0 0 0 13.81 3M2.19 3q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98h3.672a1 1 0 0 1 .707.293L7.586 3zm9.608 5.271-3.182 1.97c-.27.166-.616-.036-.616-.372V9.1s-2.571-.3-4 2.4c.571-4.8 3.143-4.8 4-4.8v-.769c0-.336.346-.538.616-.371l3.182 1.969c.27.166.27.576 0 .742"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/folder-symlink.svg b/vendor/twbs/bootstrap-icons/icons/folder-symlink.svg
new file mode 100644
index 000000000..7137637e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/folder-symlink.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder-symlink" viewBox="0 0 16 16">
+ <path d="m11.798 8.271-3.182 1.97c-.27.166-.616-.036-.616-.372V9.1s-2.571-.3-4 2.4c.571-4.8 3.143-4.8 4-4.8v-.769c0-.336.346-.538.616-.371l3.182 1.969c.27.166.27.576 0 .742"/>
+ <path d="m.5 3 .04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14h10.348a2 2 0 0 0 1.991-1.819l.637-7A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2m.694 2.09A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09l-.636 7a1 1 0 0 1-.996.91H2.826a1 1 0 0 1-.995-.91zM6.172 2a1 1 0 0 1 .707.293L7.586 3H2.19q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/folder-x.svg b/vendor/twbs/bootstrap-icons/icons/folder-x.svg
new file mode 100644
index 000000000..a6ed34194
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/folder-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder-x" viewBox="0 0 16 16">
+ <path d="M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181L15.546 8H14.54l.265-2.91A1 1 0 0 0 13.81 4H2.19a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91H9v1H2.826a2 2 0 0 1-1.991-1.819l-.637-7a2 2 0 0 1 .342-1.31zm6.339-1.577A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139q.323-.119.684-.12h5.396z"/>
+ <path d="M11.854 10.146a.5.5 0 0 0-.707.708L12.293 12l-1.146 1.146a.5.5 0 0 0 .707.708L13 12.707l1.146 1.147a.5.5 0 0 0 .708-.708L13.707 12l1.147-1.146a.5.5 0 0 0-.707-.708L13 11.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/folder.svg b/vendor/twbs/bootstrap-icons/icons/folder.svg
new file mode 100644
index 000000000..a30c45227
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/folder.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder" viewBox="0 0 16 16">
+ <path d="M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.826a2 2 0 0 1-1.991-1.819l-.637-7a2 2 0 0 1 .342-1.31zM2.19 4a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91h10.348a1 1 0 0 0 .995-.91l.637-7A1 1 0 0 0 13.81 4zm4.69-1.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139q.323-.119.684-.12h5.396z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/folder2-open.svg b/vendor/twbs/bootstrap-icons/icons/folder2-open.svg
new file mode 100644
index 000000000..7ffbb5492
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/folder2-open.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder2-open" viewBox="0 0 16 16">
+ <path d="M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C7.985 3.648 8.48 4 9 4h4.5A1.5 1.5 0 0 1 15 5.5v.64c.57.265.94.876.856 1.546l-.64 5.124A2.5 2.5 0 0 1 12.733 15H3.266a2.5 2.5 0 0 1-2.481-2.19l-.64-5.124A1.5 1.5 0 0 1 1 6.14zM2 6h12v-.5a.5.5 0 0 0-.5-.5H9c-.964 0-1.71-.629-2.174-1.154C6.374 3.334 5.82 3 5.264 3H2.5a.5.5 0 0 0-.5.5zm-.367 1a.5.5 0 0 0-.496.562l.64 5.124A1.5 1.5 0 0 0 3.266 14h9.468a1.5 1.5 0 0 0 1.489-1.314l.64-5.124A.5.5 0 0 0 14.367 7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/folder2.svg b/vendor/twbs/bootstrap-icons/icons/folder2.svg
new file mode 100644
index 000000000..ce6a1af27
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/folder2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder2" viewBox="0 0 16 16">
+ <path d="M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C7.985 3.648 8.48 4 9 4h4.5A1.5 1.5 0 0 1 15 5.5v7a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 12.5zM2.5 3a.5.5 0 0 0-.5.5V6h12v-.5a.5.5 0 0 0-.5-.5H9c-.964 0-1.71-.629-2.174-1.154C6.374 3.334 5.82 3 5.264 3zM14 7H2v5.5a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fonts.svg b/vendor/twbs/bootstrap-icons/icons/fonts.svg
new file mode 100644
index 000000000..5e1f3c31b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fonts.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fonts" viewBox="0 0 16 16">
+ <path d="M12.258 3h-8.51l-.083 2.46h.479c.26-1.544.758-1.783 2.693-1.845l.424-.013v7.827c0 .663-.144.82-1.3.923v.52h4.082v-.52c-1.162-.103-1.306-.26-1.306-.923V3.602l.431.013c1.934.062 2.434.301 2.693 1.846h.479z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/forward-fill.svg b/vendor/twbs/bootstrap-icons/icons/forward-fill.svg
new file mode 100644
index 000000000..27462e23b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/forward-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-forward-fill" viewBox="0 0 16 16">
+ <path d="m9.77 12.11 4.012-2.953a.647.647 0 0 0 0-1.114L9.771 5.09a.644.644 0 0 0-.971.557V6.65H2v3.9h6.8v1.003c0 .505.545.808.97.557"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/forward.svg b/vendor/twbs/bootstrap-icons/icons/forward.svg
new file mode 100644
index 000000000..ffe887cd7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/forward.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-forward" viewBox="0 0 16 16">
+ <path d="M9.502 5.513a.144.144 0 0 0-.202.134V6.65a.5.5 0 0 1-.5.5H2.5v2.9h6.3a.5.5 0 0 1 .5.5v1.003c0 .108.11.176.202.134l3.984-2.933.042-.028a.147.147 0 0 0 0-.252l-.042-.028zM8.3 5.647a1.144 1.144 0 0 1 1.767-.96l3.994 2.94a1.147 1.147 0 0 1 0 1.946l-3.994 2.94a1.144 1.144 0 0 1-1.767-.96v-.503H2a.5.5 0 0 1-.5-.5v-3.9a.5.5 0 0 1 .5-.5h6.3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/front.svg b/vendor/twbs/bootstrap-icons/icons/front.svg
new file mode 100644
index 000000000..59d854e72
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/front.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-front" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm5 10v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2v5a2 2 0 0 1-2 2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fuel-pump-diesel-fill.svg b/vendor/twbs/bootstrap-icons/icons/fuel-pump-diesel-fill.svg
new file mode 100644
index 000000000..997d6f890
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fuel-pump-diesel-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fuel-pump-diesel-fill" viewBox="0 0 16 16">
+ <path d="M4.974 9.806h.692q.459 0 .75.19.297.191.437.568.144.377.144.941 0 .425-.083.74-.08.315-.241.528a1 1 0 0 1-.412.315 1.6 1.6 0 0 1-.595.103h-.692z"/>
+ <path d="M1 2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v8a2 2 0 0 1 2 2v.5a.5.5 0 0 0 1 0V8h-.5a.5.5 0 0 1-.5-.5V4.375a.5.5 0 0 1 .5-.5h1.495c-.011-.476-.053-.894-.201-1.222a.97.97 0 0 0-.394-.458c-.184-.11-.464-.195-.9-.195a.5.5 0 0 1 0-1q.846-.002 1.412.336c.383.228.634.551.794.907.295.655.294 1.465.294 2.081V7.5a.5.5 0 0 1-.5.5H15v4.5a1.5 1.5 0 0 1-3 0V12a1 1 0 0 0-1-1v4h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1zm2 .5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5M4 9v5h1.796q.744 0 1.23-.297.49-.296.732-.86T8 11.487q0-.788-.242-1.344a1.78 1.78 0 0 0-.725-.85Q6.547 9 5.796 9z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fuel-pump-diesel.svg b/vendor/twbs/bootstrap-icons/icons/fuel-pump-diesel.svg
new file mode 100644
index 000000000..e170eebb4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fuel-pump-diesel.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fuel-pump-diesel" viewBox="0 0 16 16">
+ <path d="M3.5 2a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5zM4 14V9h1.796q.75 0 1.237.293t.725.85Q8 10.7 8 11.487q0 .792-.242 1.355a1.8 1.8 0 0 1-.732.861Q6.54 14 5.796 14zm1.666-4.194h-.692v3.385h.692q.343 0 .595-.103a1 1 0 0 0 .412-.315q.162-.213.241-.528.084-.314.083-.74 0-.565-.144-.94a1.1 1.1 0 0 0-.436-.569q-.293-.19-.75-.19Z"/>
+ <path d="M3 0a2 2 0 0 0-2 2v13H.5a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1H11v-4a1 1 0 0 1 1 1v.5a1.5 1.5 0 0 0 3 0V8h.5a.5.5 0 0 0 .5-.5V4.324c0-.616 0-1.426-.294-2.081a1.97 1.97 0 0 0-.794-.907Q14.345.999 13.5 1a.5.5 0 0 0 0 1c.436 0 .716.086.9.195a.97.97 0 0 1 .394.458c.147.328.19.746.201 1.222H13.5a.5.5 0 0 0-.5.5V7.5a.5.5 0 0 0 .5.5h.5v4.5a.5.5 0 0 1-1 0V12a2 2 0 0 0-2-2V2a2 2 0 0 0-2-2zm7 2v13H2V2a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fuel-pump-fill.svg b/vendor/twbs/bootstrap-icons/icons/fuel-pump-fill.svg
new file mode 100644
index 000000000..46f92c394
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fuel-pump-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fuel-pump-fill" viewBox="0 0 16 16">
+ <path d="M1 2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v8a2 2 0 0 1 2 2v.5a.5.5 0 0 0 1 0V8h-.5a.5.5 0 0 1-.5-.5V4.375a.5.5 0 0 1 .5-.5h1.495c-.011-.476-.053-.894-.201-1.222a.97.97 0 0 0-.394-.458c-.184-.11-.464-.195-.9-.195a.5.5 0 0 1 0-1q.846-.002 1.412.336c.383.228.634.551.794.907.295.655.294 1.465.294 2.081V7.5a.5.5 0 0 1-.5.5H15v4.5a1.5 1.5 0 0 1-3 0V12a1 1 0 0 0-1-1v4h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1zm2.5 0a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fuel-pump.svg b/vendor/twbs/bootstrap-icons/icons/fuel-pump.svg
new file mode 100644
index 000000000..1704a6fa7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fuel-pump.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fuel-pump" viewBox="0 0 16 16">
+ <path d="M3 2.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/>
+ <path d="M1 2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v8a2 2 0 0 1 2 2v.5a.5.5 0 0 0 1 0V8h-.5a.5.5 0 0 1-.5-.5V4.375a.5.5 0 0 1 .5-.5h1.495c-.011-.476-.053-.894-.201-1.222a.97.97 0 0 0-.394-.458c-.184-.11-.464-.195-.9-.195a.5.5 0 0 1 0-1q.846-.002 1.412.336c.383.228.634.551.794.907.295.655.294 1.465.294 2.081v3.175a.5.5 0 0 1-.5.501H15v4.5a1.5 1.5 0 0 1-3 0V12a1 1 0 0 0-1-1v4h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1zm9 0a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v13h8z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fullscreen-exit.svg b/vendor/twbs/bootstrap-icons/icons/fullscreen-exit.svg
new file mode 100644
index 000000000..cfde3a3cb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fullscreen-exit.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fullscreen-exit" viewBox="0 0 16 16">
+ <path d="M5.5 0a.5.5 0 0 1 .5.5v4A1.5 1.5 0 0 1 4.5 6h-4a.5.5 0 0 1 0-1h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 1 .5-.5m5 0a.5.5 0 0 1 .5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 10 4.5v-4a.5.5 0 0 1 .5-.5M0 10.5a.5.5 0 0 1 .5-.5h4A1.5 1.5 0 0 1 6 11.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 0-.5-.5h-4a.5.5 0 0 1-.5-.5m10 1a1.5 1.5 0 0 1 1.5-1.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 0-.5.5v4a.5.5 0 0 1-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/fullscreen.svg b/vendor/twbs/bootstrap-icons/icons/fullscreen.svg
new file mode 100644
index 000000000..d4f8a8382
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/fullscreen.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fullscreen" viewBox="0 0 16 16">
+ <path d="M1.5 1a.5.5 0 0 0-.5.5v4a.5.5 0 0 1-1 0v-4A1.5 1.5 0 0 1 1.5 0h4a.5.5 0 0 1 0 1zM10 .5a.5.5 0 0 1 .5-.5h4A1.5 1.5 0 0 1 16 1.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 0-.5-.5h-4a.5.5 0 0 1-.5-.5M.5 10a.5.5 0 0 1 .5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 0 14.5v-4a.5.5 0 0 1 .5-.5m15 0a.5.5 0 0 1 .5.5v4a1.5 1.5 0 0 1-1.5 1.5h-4a.5.5 0 0 1 0-1h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/funnel-fill.svg b/vendor/twbs/bootstrap-icons/icons/funnel-fill.svg
new file mode 100644
index 000000000..04d31a626
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/funnel-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-funnel-fill" viewBox="0 0 16 16">
+ <path d="M1.5 1.5A.5.5 0 0 1 2 1h12a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.128.334L10 8.692V13.5a.5.5 0 0 1-.342.474l-3 1A.5.5 0 0 1 6 14.5V8.692L1.628 3.834A.5.5 0 0 1 1.5 3.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/funnel.svg b/vendor/twbs/bootstrap-icons/icons/funnel.svg
new file mode 100644
index 000000000..28bfcf230
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/funnel.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-funnel" viewBox="0 0 16 16">
+ <path d="M1.5 1.5A.5.5 0 0 1 2 1h12a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.128.334L10 8.692V13.5a.5.5 0 0 1-.342.474l-3 1A.5.5 0 0 1 6 14.5V8.692L1.628 3.834A.5.5 0 0 1 1.5 3.5zm1 .5v1.308l4.372 4.858A.5.5 0 0 1 7 8.5v5.306l2-.666V8.5a.5.5 0 0 1 .128-.334L13.5 3.308V2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gear-fill.svg b/vendor/twbs/bootstrap-icons/icons/gear-fill.svg
new file mode 100644
index 000000000..ba8e2c55c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gear-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gear-fill" viewBox="0 0 16 16">
+ <path d="M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 0 1 .872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 0 1-2.105-.872zM8 10.93a2.929 2.929 0 1 1 0-5.86 2.929 2.929 0 0 1 0 5.858z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gear-wide-connected.svg b/vendor/twbs/bootstrap-icons/icons/gear-wide-connected.svg
new file mode 100644
index 000000000..19ddda9ae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gear-wide-connected.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gear-wide-connected" viewBox="0 0 16 16">
+ <path d="M7.068.727c.243-.97 1.62-.97 1.864 0l.071.286a.96.96 0 0 0 1.622.434l.205-.211c.695-.719 1.888-.03 1.613.931l-.08.284a.96.96 0 0 0 1.187 1.187l.283-.081c.96-.275 1.65.918.931 1.613l-.211.205a.96.96 0 0 0 .434 1.622l.286.071c.97.243.97 1.62 0 1.864l-.286.071a.96.96 0 0 0-.434 1.622l.211.205c.719.695.03 1.888-.931 1.613l-.284-.08a.96.96 0 0 0-1.187 1.187l.081.283c.275.96-.918 1.65-1.613.931l-.205-.211a.96.96 0 0 0-1.622.434l-.071.286c-.243.97-1.62.97-1.864 0l-.071-.286a.96.96 0 0 0-1.622-.434l-.205.211c-.695.719-1.888.03-1.613-.931l.08-.284a.96.96 0 0 0-1.186-1.187l-.284.081c-.96.275-1.65-.918-.931-1.613l.211-.205a.96.96 0 0 0-.434-1.622l-.286-.071c-.97-.243-.97-1.62 0-1.864l.286-.071a.96.96 0 0 0 .434-1.622l-.211-.205c-.719-.695-.03-1.888.931-1.613l.284.08a.96.96 0 0 0 1.187-1.186l-.081-.284c-.275-.96.918-1.65 1.613-.931l.205.211a.96.96 0 0 0 1.622-.434zM12.973 8.5H8.25l-2.834 3.779A4.998 4.998 0 0 0 12.973 8.5m0-1a4.998 4.998 0 0 0-7.557-3.779l2.834 3.78zM5.048 3.967l-.087.065zm-.431.355A4.98 4.98 0 0 0 3.002 8c0 1.455.622 2.765 1.615 3.678L7.375 8zm.344 7.646.087.065z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gear-wide.svg b/vendor/twbs/bootstrap-icons/icons/gear-wide.svg
new file mode 100644
index 000000000..c5de5678e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gear-wide.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gear-wide" viewBox="0 0 16 16">
+ <path d="M8.932.727c-.243-.97-1.62-.97-1.864 0l-.071.286a.96.96 0 0 1-1.622.434l-.205-.211c-.695-.719-1.888-.03-1.613.931l.08.284a.96.96 0 0 1-1.186 1.187l-.284-.081c-.96-.275-1.65.918-.931 1.613l.211.205a.96.96 0 0 1-.434 1.622l-.286.071c-.97.243-.97 1.62 0 1.864l.286.071a.96.96 0 0 1 .434 1.622l-.211.205c-.719.695-.03 1.888.931 1.613l.284-.08a.96.96 0 0 1 1.187 1.187l-.081.283c-.275.96.918 1.65 1.613.931l.205-.211a.96.96 0 0 1 1.622.434l.071.286c.243.97 1.62.97 1.864 0l.071-.286a.96.96 0 0 1 1.622-.434l.205.211c.695.719 1.888.03 1.613-.931l-.08-.284a.96.96 0 0 1 1.187-1.187l.283.081c.96.275 1.65-.918.931-1.613l-.211-.205a.96.96 0 0 1 .434-1.622l.286-.071c.97-.243.97-1.62 0-1.864l-.286-.071a.96.96 0 0 1-.434-1.622l.211-.205c.719-.695.03-1.888-.931-1.613l-.284.08a.96.96 0 0 1-1.187-1.186l.081-.284c.275-.96-.918-1.65-1.613-.931l-.205.211a.96.96 0 0 1-1.622-.434zM8 12.997a4.998 4.998 0 1 1 0-9.995 4.998 4.998 0 0 1 0 9.996z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gear.svg b/vendor/twbs/bootstrap-icons/icons/gear.svg
new file mode 100644
index 000000000..30cfaa386
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gear.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gear" viewBox="0 0 16 16">
+ <path d="M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492M5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0"/>
+ <path d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gem.svg b/vendor/twbs/bootstrap-icons/icons/gem.svg
new file mode 100644
index 000000000..f56d87128
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gem.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gem" viewBox="0 0 16 16">
+ <path d="M3.1.7a.5.5 0 0 1 .4-.2h9a.5.5 0 0 1 .4.2l2.976 3.974c.149.185.156.45.01.644L8.4 15.3a.5.5 0 0 1-.8 0L.1 5.3a.5.5 0 0 1 0-.6zm11.386 3.785-1.806-2.41-.776 2.413zm-3.633.004.961-2.989H4.186l.963 2.995zM5.47 5.495 8 13.366l2.532-7.876zm-1.371-.999-.78-2.422-1.818 2.425zM1.499 5.5l5.113 6.817-2.192-6.82zm7.889 6.817 5.123-6.83-2.928.002z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gender-ambiguous.svg b/vendor/twbs/bootstrap-icons/icons/gender-ambiguous.svg
new file mode 100644
index 000000000..674c52660
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gender-ambiguous.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gender-ambiguous" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11.5 1a.5.5 0 0 1 0-1h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-3.45 3.45A4 4 0 0 1 8.5 10.97V13H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V14H6a.5.5 0 0 1 0-1h1.5v-2.03a4 4 0 1 1 3.471-6.648L14.293 1zm-.997 4.346a3 3 0 1 0-5.006 3.309 3 3 0 0 0 5.006-3.31z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gender-female.svg b/vendor/twbs/bootstrap-icons/icons/gender-female.svg
new file mode 100644
index 000000000..ae6dc2784
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gender-female.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gender-female" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 1a4 4 0 1 0 0 8 4 4 0 0 0 0-8M3 5a5 5 0 1 1 5.5 4.975V12h2a.5.5 0 0 1 0 1h-2v2.5a.5.5 0 0 1-1 0V13h-2a.5.5 0 0 1 0-1h2V9.975A5 5 0 0 1 3 5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gender-male.svg b/vendor/twbs/bootstrap-icons/icons/gender-male.svg
new file mode 100644
index 000000000..393192199
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gender-male.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gender-male" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M9.5 2a.5.5 0 0 1 0-1h5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-1 0V2.707L9.871 6.836a5 5 0 1 1-.707-.707L13.293 2zM6 6a4 4 0 1 0 0 8 4 4 0 0 0 0-8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gender-neuter.svg b/vendor/twbs/bootstrap-icons/icons/gender-neuter.svg
new file mode 100644
index 000000000..133db1a0c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gender-neuter.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gender-neuter" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 1a4 4 0 1 0 0 8 4 4 0 0 0 0-8M3 5a5 5 0 1 1 5.5 4.975V15.5a.5.5 0 0 1-1 0V9.975A5 5 0 0 1 3 5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gender-trans.svg b/vendor/twbs/bootstrap-icons/icons/gender-trans.svg
new file mode 100644
index 000000000..005e6f805
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gender-trans.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gender-trans" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 .5A.5.5 0 0 1 .5 0h3a.5.5 0 0 1 0 1H1.707L3.5 2.793l.646-.647a.5.5 0 1 1 .708.708l-.647.646.822.822A4 4 0 0 1 8 3c1.18 0 2.239.51 2.971 1.322L14.293 1H11.5a.5.5 0 0 1 0-1h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-3.45 3.45A4 4 0 0 1 8.5 10.97V13H10a.5.5 0 0 1 0 1H8.5v1.5a.5.5 0 0 1-1 0V14H6a.5.5 0 0 1 0-1h1.5v-2.03a4 4 0 0 1-3.05-5.814l-.95-.949-.646.647a.5.5 0 1 1-.708-.708l.647-.646L1 1.707V3.5a.5.5 0 0 1-1 0zm5.49 4.856a3 3 0 1 0 5.02 3.288 3 3 0 0 0-5.02-3.288"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/geo-alt-fill.svg b/vendor/twbs/bootstrap-icons/icons/geo-alt-fill.svg
new file mode 100644
index 000000000..77f0478a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/geo-alt-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-geo-alt-fill" viewBox="0 0 16 16">
+ <path d="M8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10m0-7a3 3 0 1 1 0-6 3 3 0 0 1 0 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/geo-alt.svg b/vendor/twbs/bootstrap-icons/icons/geo-alt.svg
new file mode 100644
index 000000000..20e18ba1f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/geo-alt.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-geo-alt" viewBox="0 0 16 16">
+ <path d="M12.166 8.94c-.524 1.062-1.234 2.12-1.96 3.07A32 32 0 0 1 8 14.58a32 32 0 0 1-2.206-2.57c-.726-.95-1.436-2.008-1.96-3.07C3.304 7.867 3 6.862 3 6a5 5 0 0 1 10 0c0 .862-.305 1.867-.834 2.94M8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10"/>
+ <path d="M8 8a2 2 0 1 1 0-4 2 2 0 0 1 0 4m0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/geo-fill.svg b/vendor/twbs/bootstrap-icons/icons/geo-fill.svg
new file mode 100644
index 000000000..9678fa081
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/geo-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-geo-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999zm2.493 8.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.3 1.3 0 0 0-.37.265.3.3 0 0 0-.057.09V14l.002.008.016.033a.6.6 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.6.6 0 0 0 .146-.15l.015-.033L12 14v-.004a.3.3 0 0 0-.057-.09 1.3 1.3 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465s-2.462-.172-3.34-.465c-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/geo.svg b/vendor/twbs/bootstrap-icons/icons/geo.svg
new file mode 100644
index 000000000..2382b9138
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/geo.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-geo" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999zm2.493 8.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.3 1.3 0 0 0-.37.265.3.3 0 0 0-.057.09V14l.002.008.016.033a.6.6 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.6.6 0 0 0 .146-.15l.015-.033L12 14v-.004a.3.3 0 0 0-.057-.09 1.3 1.3 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465s-2.462-.172-3.34-.465c-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gift-fill.svg b/vendor/twbs/bootstrap-icons/icons/gift-fill.svg
new file mode 100644
index 000000000..bd78a8cab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gift-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gift-fill" viewBox="0 0 16 16">
+ <path d="M3 2.5a2.5 2.5 0 0 1 5 0 2.5 2.5 0 0 1 5 0v.006c0 .07 0 .27-.038.494H15a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h2.038A3 3 0 0 1 3 2.506zm1.068.5H7v-.5a1.5 1.5 0 1 0-3 0c0 .085.002.274.045.43zM9 3h2.932l.023-.07c.043-.156.045-.345.045-.43a1.5 1.5 0 0 0-3 0zm6 4v7.5a1.5 1.5 0 0 1-1.5 1.5H9V7zM2.5 16A1.5 1.5 0 0 1 1 14.5V7h6v9z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gift.svg b/vendor/twbs/bootstrap-icons/icons/gift.svg
new file mode 100644
index 000000000..592150779
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gift.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gift" viewBox="0 0 16 16">
+ <path d="M3 2.5a2.5 2.5 0 0 1 5 0 2.5 2.5 0 0 1 5 0v.006c0 .07 0 .27-.038.494H15a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v7.5a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 14.5V7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h2.038A3 3 0 0 1 3 2.506zm1.068.5H7v-.5a1.5 1.5 0 1 0-3 0c0 .085.002.274.045.43zM9 3h2.932l.023-.07c.043-.156.045-.345.045-.43a1.5 1.5 0 0 0-3 0zM1 4v2h6V4zm8 0v2h6V4zm5 3H9v8h4.5a.5.5 0 0 0 .5-.5zm-7 8V7H2v7.5a.5.5 0 0 0 .5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/git.svg b/vendor/twbs/bootstrap-icons/icons/git.svg
new file mode 100644
index 000000000..0979cdb0f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/git.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-git" viewBox="0 0 16 16">
+ <path d="M15.698 7.287 8.712.302a1.03 1.03 0 0 0-1.457 0l-1.45 1.45 1.84 1.84a1.223 1.223 0 0 1 1.55 1.56l1.773 1.774a1.224 1.224 0 0 1 1.267 2.025 1.226 1.226 0 0 1-2.002-1.334L8.58 5.963v4.353a1.226 1.226 0 1 1-1.008-.036V5.887a1.226 1.226 0 0 1-.666-1.608L5.093 2.465l-4.79 4.79a1.03 1.03 0 0 0 0 1.457l6.986 6.986a1.03 1.03 0 0 0 1.457 0l6.953-6.953a1.03 1.03 0 0 0 0-1.457"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/github.svg b/vendor/twbs/bootstrap-icons/icons/github.svg
new file mode 100644
index 000000000..013e02532
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/github.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
+ <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gitlab.svg b/vendor/twbs/bootstrap-icons/icons/gitlab.svg
new file mode 100644
index 000000000..f8875f8d4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gitlab.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gitlab" viewBox="0 0 16 16">
+ <path d="m15.734 6.1-.022-.058L13.534.358a.57.57 0 0 0-.563-.356.6.6 0 0 0-.328.122.6.6 0 0 0-.193.294l-1.47 4.499H5.025l-1.47-4.5A.572.572 0 0 0 2.47.358L.289 6.04l-.022.057A4.044 4.044 0 0 0 1.61 10.77l.007.006.02.014 3.318 2.485 1.64 1.242 1 .755a.67.67 0 0 0 .814 0l1-.755 1.64-1.242 3.338-2.5.009-.007a4.05 4.05 0 0 0 1.34-4.668Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/globe-americas.svg b/vendor/twbs/bootstrap-icons/icons/globe-americas.svg
new file mode 100644
index 000000000..5dcc7b279
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/globe-americas.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-globe-americas" viewBox="0 0 16 16">
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M2.04 4.326c.325 1.329 2.532 2.54 3.717 3.19.48.263.793.434.743.484q-.121.12-.242.234c-.416.396-.787.749-.758 1.266.035.634.618.824 1.214 1.017.577.188 1.168.38 1.286.983.082.417-.075.988-.22 1.52-.215.782-.406 1.48.22 1.48 1.5-.5 3.798-3.186 4-5 .138-1.243-2-2-3.5-2.5-.478-.16-.755.081-.99.284-.172.15-.322.279-.51.216-.445-.148-2.5-2-1.5-2.5.78-.39.952-.171 1.227.182.078.099.163.208.273.318.609.304.662-.132.723-.633.039-.322.081-.671.277-.867.434-.434 1.265-.791 2.028-1.12.712-.306 1.365-.587 1.579-.88A7 7 0 1 1 2.04 4.327Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/globe-asia-australia.svg b/vendor/twbs/bootstrap-icons/icons/globe-asia-australia.svg
new file mode 100644
index 000000000..8c27539bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/globe-asia-australia.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-globe-asia-australia" viewBox="0 0 16 16">
+ <path d="m10.495 6.92 1.278-.619a.483.483 0 0 0 .126-.782c-.252-.244-.682-.139-.932.107-.23.226-.513.373-.816.53l-.102.054c-.338.178-.264.626.1.736a.48.48 0 0 0 .346-.027ZM7.741 9.808V9.78a.413.413 0 1 1 .783.183l-.22.443a.6.6 0 0 1-.12.167l-.193.185a.36.36 0 1 1-.5-.516l.112-.108a.45.45 0 0 0 .138-.326M5.672 12.5l.482.233A.386.386 0 1 0 6.32 12h-.416a.7.7 0 0 1-.419-.139l-.277-.206a.302.302 0 1 0-.298.52z"/>
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M1.612 10.867l.756-1.288a1 1 0 0 1 1.545-.225l1.074 1.005a.986.986 0 0 0 1.36-.011l.038-.037a.88.88 0 0 0 .26-.755c-.075-.548.37-1.033.92-1.099.728-.086 1.587-.324 1.728-.957.086-.386-.114-.83-.361-1.2-.207-.312 0-.8.374-.8.123 0 .24-.055.318-.15l.393-.474c.196-.237.491-.368.797-.403.554-.064 1.407-.277 1.583-.973.098-.391-.192-.634-.484-.88-.254-.212-.51-.426-.515-.741a7 7 0 0 1 3.425 7.692 1 1 0 0 0-.087-.063l-.316-.204a1 1 0 0 0-.977-.06l-.169.082a1 1 0 0 1-.741.051l-1.021-.329A1 1 0 0 0 11.205 9h-.165a1 1 0 0 0-.945.674l-.172.499a1 1 0 0 1-.404.514l-.802.518a1 1 0 0 0-.458.84v.455a1 1 0 0 0 1 1h.257a1 1 0 0 1 .542.16l.762.49a1 1 0 0 0 .283.126 7 7 0 0 1-9.49-3.409Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/globe-central-south-asia.svg b/vendor/twbs/bootstrap-icons/icons/globe-central-south-asia.svg
new file mode 100644
index 000000000..80a13c164
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/globe-central-south-asia.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-globe-central-south-asia" viewBox="0 0 16 16">
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M4.882 1.731a.48.48 0 0 0 .14.291.487.487 0 0 1-.126.78l-.291.146a.7.7 0 0 0-.188.135l-.48.48a1 1 0 0 1-1.023.242l-.02-.007a1 1 0 0 0-.462-.04 7 7 0 0 1 2.45-2.027m-3 9.674.86-.216a1 1 0 0 0 .758-.97v-.184a1 1 0 0 1 .445-.832l.04-.026a1 1 0 0 0 .152-1.54L3.121 6.621a.414.414 0 0 1 .542-.624l1.09.818a.5.5 0 0 0 .523.047.5.5 0 0 1 .724.447v.455a.8.8 0 0 0 .131.433l.795 1.192a1 1 0 0 1 .116.238l.73 2.19a1 1 0 0 0 .949.683h.058a1 1 0 0 0 .949-.684l.73-2.189a1 1 0 0 1 .116-.238l.791-1.187A.45.45 0 0 1 11.743 8c.16 0 .306.084.392.218.557.875 1.63 2.282 2.365 2.282l.04-.001a7.003 7.003 0 0 1-12.658.905Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/globe-europe-africa.svg b/vendor/twbs/bootstrap-icons/icons/globe-europe-africa.svg
new file mode 100644
index 000000000..c1c5dcbb9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/globe-europe-africa.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-globe-europe-africa" viewBox="0 0 16 16">
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M3.668 2.501l-.288.646a.847.847 0 0 0 1.479.815l.245-.368a.81.81 0 0 1 1.034-.275.81.81 0 0 0 .724 0l.261-.13a1 1 0 0 1 .775-.05l.984.34q.118.04.243.054c.784.093.855.377.694.801-.155.41-.616.617-1.035.487l-.01-.003C8.274 4.663 7.748 4.5 6 4.5 4.8 4.5 3.5 5.62 3.5 7c0 1.96.826 2.166 1.696 2.382.46.115.935.233 1.304.618.449.467.393 1.181.339 1.877C6.755 12.96 6.674 14 8.5 14c1.75 0 3-3.5 3-4.5 0-.262.208-.468.444-.7.396-.392.87-.86.556-1.8-.097-.291-.396-.568-.641-.756-.174-.133-.207-.396-.052-.551a.33.33 0 0 1 .42-.042l1.085.724c.11.072.255.058.348-.035.15-.15.415-.083.489.117.16.43.445 1.05.849 1.357L15 8A7 7 0 1 1 3.668 2.501"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/globe.svg b/vendor/twbs/bootstrap-icons/icons/globe.svg
new file mode 100644
index 000000000..835ff663f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/globe.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-globe" viewBox="0 0 16 16">
+ <path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m7.5-6.923c-.67.204-1.335.82-1.887 1.855A8 8 0 0 0 5.145 4H7.5zM4.09 4a9.3 9.3 0 0 1 .64-1.539 7 7 0 0 1 .597-.933A7.03 7.03 0 0 0 2.255 4zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a7 7 0 0 0-.656 2.5zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5zM8.5 5v2.5h2.99a12.5 12.5 0 0 0-.337-2.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5V8.5zm3.99 0V11h2.653c.187-.765.306-1.608.338-2.5zM5.145 12q.208.58.468 1.068c.552 1.035 1.218 1.65 1.887 1.855V12zm.182 2.472a7 7 0 0 1-.597-.933A9.3 9.3 0 0 1 4.09 12H2.255a7 7 0 0 0 3.072 2.472M3.82 11a13.7 13.7 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5zm6.853 3.472A7 7 0 0 0 13.745 12H11.91a9.3 9.3 0 0 1-.64 1.539 7 7 0 0 1-.597.933M8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855q.26-.487.468-1.068zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.7 13.7 0 0 1-.312 2.5m2.802-3.5a7 7 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5zM11.27 2.461c.247.464.462.98.64 1.539h1.835a7 7 0 0 0-3.072-2.472c.218.284.418.598.597.933M10.855 4a8 8 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/globe2.svg b/vendor/twbs/bootstrap-icons/icons/globe2.svg
new file mode 100644
index 000000000..b30206376
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/globe2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-globe2" viewBox="0 0 16 16">
+ <path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m7.5-6.923c-.67.204-1.335.82-1.887 1.855q-.215.403-.395.872c.705.157 1.472.257 2.282.287zM4.249 3.539q.214-.577.481-1.078a7 7 0 0 1 .597-.933A7 7 0 0 0 3.051 3.05q.544.277 1.198.49zM3.509 7.5c.036-1.07.188-2.087.436-3.008a9 9 0 0 1-1.565-.667A6.96 6.96 0 0 0 1.018 7.5zm1.4-2.741a12.3 12.3 0 0 0-.4 2.741H7.5V5.091c-.91-.03-1.783-.145-2.591-.332M8.5 5.09V7.5h2.99a12.3 12.3 0 0 0-.399-2.741c-.808.187-1.681.301-2.591.332zM4.51 8.5c.035.987.176 1.914.399 2.741A13.6 13.6 0 0 1 7.5 10.91V8.5zm3.99 0v2.409c.91.03 1.783.145 2.591.332.223-.827.364-1.754.4-2.741zm-3.282 3.696q.18.469.395.872c.552 1.035 1.218 1.65 1.887 1.855V11.91c-.81.03-1.577.13-2.282.287zm.11 2.276a7 7 0 0 1-.598-.933 9 9 0 0 1-.481-1.079 8.4 8.4 0 0 0-1.198.49 7 7 0 0 0 2.276 1.522zm-1.383-2.964A13.4 13.4 0 0 1 3.508 8.5h-2.49a6.96 6.96 0 0 0 1.362 3.675c.47-.258.995-.482 1.565-.667m6.728 2.964a7 7 0 0 0 2.275-1.521 8.4 8.4 0 0 0-1.197-.49 9 9 0 0 1-.481 1.078 7 7 0 0 1-.597.933M8.5 11.909v3.014c.67-.204 1.335-.82 1.887-1.855q.216-.403.395-.872A12.6 12.6 0 0 0 8.5 11.91zm3.555-.401c.57.185 1.095.409 1.565.667A6.96 6.96 0 0 0 14.982 8.5h-2.49a13.4 13.4 0 0 1-.437 3.008M14.982 7.5a6.96 6.96 0 0 0-1.362-3.675c-.47.258-.995.482-1.565.667.248.92.4 1.938.437 3.008zM11.27 2.461q.266.502.482 1.078a8.4 8.4 0 0 0 1.196-.49 7 7 0 0 0-2.275-1.52c.218.283.418.597.597.932m-.488 1.343a8 8 0 0 0-.395-.872C9.835 1.897 9.17 1.282 8.5 1.077V4.09c.81-.03 1.577-.13 2.282-.287z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/google-play.svg b/vendor/twbs/bootstrap-icons/icons/google-play.svg
new file mode 100644
index 000000000..0751c9004
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/google-play.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-google-play" viewBox="0 0 16 16">
+ <path d="M14.222 9.374c1.037-.61 1.037-2.137 0-2.748L11.528 5.04 8.32 8l3.207 2.96zm-3.595 2.116L7.583 8.68 1.03 14.73c.201 1.029 1.36 1.61 2.303 1.055zM1 13.396V2.603L6.846 8zM1.03 1.27l6.553 6.05 3.044-2.81L3.333.215C2.39-.341 1.231.24 1.03 1.27"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/google.svg b/vendor/twbs/bootstrap-icons/icons/google.svg
new file mode 100644
index 000000000..9f603de0b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/google.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-google" viewBox="0 0 16 16">
+ <path d="M15.545 6.558a9.4 9.4 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.7 7.7 0 0 1 5.352 2.082l-2.284 2.284A4.35 4.35 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.8 4.8 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.7 3.7 0 0 0 1.599-2.431H8v-3.08z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/gpu-card.svg b/vendor/twbs/bootstrap-icons/icons/gpu-card.svg
new file mode 100644
index 000000000..6ec31522c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/gpu-card.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-gpu-card" viewBox="0 0 16 16">
+ <path d="M4 8a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0m7.5-1.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3"/>
+ <path d="M0 1.5A.5.5 0 0 1 .5 1h1a.5.5 0 0 1 .5.5V4h13.5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5H2v2.5a.5.5 0 0 1-1 0V2H.5a.5.5 0 0 1-.5-.5m5.5 4a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M9 8a2.5 2.5 0 1 0 5 0 2.5 2.5 0 0 0-5 0"/>
+ <path d="M3 12.5h3.5v1a.5.5 0 0 1-.5.5H3.5a.5.5 0 0 1-.5-.5zm4 1v-1h4v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/graph-down-arrow.svg b/vendor/twbs/bootstrap-icons/icons/graph-down-arrow.svg
new file mode 100644
index 000000000..d811884d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/graph-down-arrow.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-graph-down-arrow" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 0h1v15h15v1H0zm10 11.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 0-1 0v2.6l-3.613-4.417a.5.5 0 0 0-.74-.037L7.06 8.233 3.404 3.206a.5.5 0 0 0-.808.588l4 5.5a.5.5 0 0 0 .758.06l2.609-2.61L13.445 11H10.5a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/graph-down.svg b/vendor/twbs/bootstrap-icons/icons/graph-down.svg
new file mode 100644
index 000000000..47dd64772
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/graph-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-graph-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 0h1v15h15v1H0zm14.817 11.887a.5.5 0 0 0 .07-.704l-4.5-5.5a.5.5 0 0 0-.74-.037L7.06 8.233 3.404 3.206a.5.5 0 0 0-.808.588l4 5.5a.5.5 0 0 0 .758.06l2.609-2.61 4.15 5.073a.5.5 0 0 0 .704.07"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/graph-up-arrow.svg b/vendor/twbs/bootstrap-icons/icons/graph-up-arrow.svg
new file mode 100644
index 000000000..7eda5f41c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/graph-up-arrow.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-graph-up-arrow" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 0h1v15h15v1H0zm10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4.9l-3.613 4.417a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61L13.445 4H10.5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/graph-up.svg b/vendor/twbs/bootstrap-icons/icons/graph-up.svg
new file mode 100644
index 000000000..15e0bbf90
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/graph-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-graph-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 0h1v15h15v1H0zm14.817 3.113a.5.5 0 0 1 .07.704l-4.5 5.5a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61 4.15-5.073a.5.5 0 0 1 .704-.07"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grid-1x2-fill.svg b/vendor/twbs/bootstrap-icons/icons/grid-1x2-fill.svg
new file mode 100644
index 000000000..cc568cbb0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grid-1x2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-1x2-fill" viewBox="0 0 16 16">
+ <path d="M0 1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm9 0a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1zm0 9a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grid-1x2.svg b/vendor/twbs/bootstrap-icons/icons/grid-1x2.svg
new file mode 100644
index 000000000..69ec79f07
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grid-1x2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-1x2" viewBox="0 0 16 16">
+ <path d="M6 1H1v14h5zm9 0h-5v5h5zm0 9v5h-5v-5zM0 1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm9 0a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1zm1 8a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grid-3x2-gap-fill.svg b/vendor/twbs/bootstrap-icons/icons/grid-3x2-gap-fill.svg
new file mode 100644
index 000000000..9c0e855d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grid-3x2-gap-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-3x2-gap-fill" viewBox="0 0 16 16">
+ <path d="M1 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zM1 9a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grid-3x2-gap.svg b/vendor/twbs/bootstrap-icons/icons/grid-3x2-gap.svg
new file mode 100644
index 000000000..730ae6562
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grid-3x2-gap.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-3x2-gap" viewBox="0 0 16 16">
+ <path d="M4 4v2H2V4zm1 7V9a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m5 5V9a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V4a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1M9 4v2H7V4zm5 0h-2v2h2zM4 9v2H2V9zm5 0v2H7V9zm5 0v2h-2V9zm-3-5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zm1 4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grid-3x2.svg b/vendor/twbs/bootstrap-icons/icons/grid-3x2.svg
new file mode 100644
index 000000000..55ff9bb6a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grid-3x2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-3x2" viewBox="0 0 16 16">
+ <path d="M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v8a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5zM1.5 3a.5.5 0 0 0-.5.5V7h4V3zM5 8H1v3.5a.5.5 0 0 0 .5.5H5zm1 0v4h4V8zm4-1V3H6v4zm1 1v4h3.5a.5.5 0 0 0 .5-.5V8zm0-1h4V3.5a.5.5 0 0 0-.5-.5H11z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grid-3x3-gap-fill.svg b/vendor/twbs/bootstrap-icons/icons/grid-3x3-gap-fill.svg
new file mode 100644
index 000000000..982cb702a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grid-3x3-gap-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-3x3-gap-fill" viewBox="0 0 16 16">
+ <path d="M1 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zM1 7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zM1 12a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grid-3x3-gap.svg b/vendor/twbs/bootstrap-icons/icons/grid-3x3-gap.svg
new file mode 100644
index 000000000..bbf8ce4e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grid-3x3-gap.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-3x3-gap" viewBox="0 0 16 16">
+ <path d="M4 2v2H2V2zm1 12v-2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V7a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m5 10v-2a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V7a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1m0-5V2a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1M9 2v2H7V2zm5 0v2h-2V2zM4 7v2H2V7zm5 0v2H7V7zm5 0h-2v2h2zM4 12v2H2v-2zm5 0v2H7v-2zm5 0v2h-2v-2zM12 1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zm1 4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grid-3x3.svg b/vendor/twbs/bootstrap-icons/icons/grid-3x3.svg
new file mode 100644
index 000000000..d56aed778
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grid-3x3.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-3x3" viewBox="0 0 16 16">
+ <path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5zM1.5 1a.5.5 0 0 0-.5.5V5h4V1zM5 6H1v4h4zm1 4h4V6H6zm-1 1H1v3.5a.5.5 0 0 0 .5.5H5zm1 0v4h4v-4zm5 0v4h3.5a.5.5 0 0 0 .5-.5V11zm0-1h4V6h-4zm0-5h4V1.5a.5.5 0 0 0-.5-.5H11zm-1 0V1H6v4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grid-fill.svg b/vendor/twbs/bootstrap-icons/icons/grid-fill.svg
new file mode 100644
index 000000000..356cc8f4a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grid-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-fill" viewBox="0 0 16 16">
+ <path d="M1 2.5A1.5 1.5 0 0 1 2.5 1h3A1.5 1.5 0 0 1 7 2.5v3A1.5 1.5 0 0 1 5.5 7h-3A1.5 1.5 0 0 1 1 5.5zm8 0A1.5 1.5 0 0 1 10.5 1h3A1.5 1.5 0 0 1 15 2.5v3A1.5 1.5 0 0 1 13.5 7h-3A1.5 1.5 0 0 1 9 5.5zm-8 8A1.5 1.5 0 0 1 2.5 9h3A1.5 1.5 0 0 1 7 10.5v3A1.5 1.5 0 0 1 5.5 15h-3A1.5 1.5 0 0 1 1 13.5zm8 0A1.5 1.5 0 0 1 10.5 9h3a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 13.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grid.svg b/vendor/twbs/bootstrap-icons/icons/grid.svg
new file mode 100644
index 000000000..eebab7304
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grid.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid" viewBox="0 0 16 16">
+ <path d="M1 2.5A1.5 1.5 0 0 1 2.5 1h3A1.5 1.5 0 0 1 7 2.5v3A1.5 1.5 0 0 1 5.5 7h-3A1.5 1.5 0 0 1 1 5.5zM2.5 2a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5zm6.5.5A1.5 1.5 0 0 1 10.5 1h3A1.5 1.5 0 0 1 15 2.5v3A1.5 1.5 0 0 1 13.5 7h-3A1.5 1.5 0 0 1 9 5.5zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5zM1 10.5A1.5 1.5 0 0 1 2.5 9h3A1.5 1.5 0 0 1 7 10.5v3A1.5 1.5 0 0 1 5.5 15h-3A1.5 1.5 0 0 1 1 13.5zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5zm6.5.5A1.5 1.5 0 0 1 10.5 9h3a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 13.5zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grip-horizontal.svg b/vendor/twbs/bootstrap-icons/icons/grip-horizontal.svg
new file mode 100644
index 000000000..85f7e27c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grip-horizontal.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grip-horizontal" viewBox="0 0 16 16">
+ <path d="M2 8a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/grip-vertical.svg b/vendor/twbs/bootstrap-icons/icons/grip-vertical.svg
new file mode 100644
index 000000000..a8718ab1d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/grip-vertical.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grip-vertical" viewBox="0 0 16 16">
+ <path d="M7 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-3 3a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-3 3a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/h-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/h-circle-fill.svg
new file mode 100644
index 000000000..910647289
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/h-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-h-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5-3.998H9.67v3.322H6.33V4.002H5V12h1.33V8.455h3.34V12H11z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/h-circle.svg b/vendor/twbs/bootstrap-icons/icons/h-circle.svg
new file mode 100644
index 000000000..53c34b66f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/h-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-h-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5-3.998V12H9.67V8.455H6.33V12H5V4.002h1.33v3.322h3.34V4.002z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/h-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/h-square-fill.svg
new file mode 100644
index 000000000..06269e0f9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/h-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-h-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm9 4.002V12H9.67V8.455H6.33V12H5V4.002h1.33v3.322h3.34V4.002z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/h-square.svg b/vendor/twbs/bootstrap-icons/icons/h-square.svg
new file mode 100644
index 000000000..2c5ad2c98
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/h-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-h-square" viewBox="0 0 16 16">
+ <path d="M11 4.002V12H9.67V8.455H6.33V12H5V4.002h1.33v3.322h3.34V4.002z"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hammer.svg b/vendor/twbs/bootstrap-icons/icons/hammer.svg
new file mode 100644
index 000000000..8e07b5b09
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hammer.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hammer" viewBox="0 0 16 16">
+ <path d="M9.972 2.508a.5.5 0 0 0-.16-.556l-.178-.129a5 5 0 0 0-2.076-.783C6.215.862 4.504 1.229 2.84 3.133H1.786a.5.5 0 0 0-.354.147L.146 4.567a.5.5 0 0 0 0 .706l2.571 2.579a.5.5 0 0 0 .708 0l1.286-1.29a.5.5 0 0 0 .146-.353V5.57l8.387 8.873A.5.5 0 0 0 14 14.5l1.5-1.5a.5.5 0 0 0 .017-.689l-9.129-8.63c.747-.456 1.772-.839 3.112-.839a.5.5 0 0 0 .472-.334"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hand-index-fill.svg b/vendor/twbs/bootstrap-icons/icons/hand-index-fill.svg
new file mode 100644
index 000000000..b2a7d6463
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hand-index-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hand-index-fill" viewBox="0 0 16 16">
+ <path d="M8.5 4.466V1.75a1.75 1.75 0 1 0-3.5 0v5.34l-1.2.24a1.5 1.5 0 0 0-1.196 1.636l.345 3.106a2.5 2.5 0 0 0 .405 1.11l1.433 2.15A1.5 1.5 0 0 0 6.035 16h6.385a1.5 1.5 0 0 0 1.302-.756l1.395-2.441a3.5 3.5 0 0 0 .444-1.389l.271-2.715a2 2 0 0 0-1.99-2.199h-.581a5 5 0 0 0-.195-.248c-.191-.229-.51-.568-.88-.716-.364-.146-.846-.132-1.158-.108l-.132.012a1.26 1.26 0 0 0-.56-.642 2.6 2.6 0 0 0-.738-.288c-.31-.062-.739-.058-1.05-.046z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hand-index-thumb-fill.svg b/vendor/twbs/bootstrap-icons/icons/hand-index-thumb-fill.svg
new file mode 100644
index 000000000..774b18eda
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hand-index-thumb-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hand-index-thumb-fill" viewBox="0 0 16 16">
+ <path d="M8.5 1.75v2.716l.047-.002c.312-.012.742-.016 1.051.046.28.056.543.18.738.288.273.152.456.385.56.642l.132-.012c.312-.024.794-.038 1.158.108.37.148.689.487.88.716q.113.137.195.248h.582a2 2 0 0 1 1.99 2.199l-.272 2.715a3.5 3.5 0 0 1-.444 1.389l-1.395 2.441A1.5 1.5 0 0 1 12.42 16H6.118a1.5 1.5 0 0 1-1.342-.83l-1.215-2.43L1.07 8.589a1.517 1.517 0 0 1 2.373-1.852L5 8.293V1.75a1.75 1.75 0 0 1 3.5 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hand-index-thumb.svg b/vendor/twbs/bootstrap-icons/icons/hand-index-thumb.svg
new file mode 100644
index 000000000..13b5475d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hand-index-thumb.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hand-index-thumb" viewBox="0 0 16 16">
+ <path d="M6.75 1a.75.75 0 0 1 .75.75V8a.5.5 0 0 0 1 0V5.467l.086-.004c.317-.012.637-.008.816.027.134.027.294.096.448.182.077.042.15.147.15.314V8a.5.5 0 0 0 1 0V6.435l.106-.01c.316-.024.584-.01.708.04.118.046.3.207.486.43.081.096.15.19.2.259V8.5a.5.5 0 1 0 1 0v-1h.342a1 1 0 0 1 .995 1.1l-.271 2.715a2.5 2.5 0 0 1-.317.991l-1.395 2.442a.5.5 0 0 1-.434.252H6.118a.5.5 0 0 1-.447-.276l-1.232-2.465-2.512-4.185a.517.517 0 0 1 .809-.631l2.41 2.41A.5.5 0 0 0 6 9.5V1.75A.75.75 0 0 1 6.75 1M8.5 4.466V1.75a1.75 1.75 0 1 0-3.5 0v6.543L3.443 6.736A1.517 1.517 0 0 0 1.07 8.588l2.491 4.153 1.215 2.43A1.5 1.5 0 0 0 6.118 16h6.302a1.5 1.5 0 0 0 1.302-.756l1.395-2.441a3.5 3.5 0 0 0 .444-1.389l.271-2.715a2 2 0 0 0-1.99-2.199h-.581a5 5 0 0 0-.195-.248c-.191-.229-.51-.568-.88-.716-.364-.146-.846-.132-1.158-.108l-.132.012a1.26 1.26 0 0 0-.56-.642 2.6 2.6 0 0 0-.738-.288c-.31-.062-.739-.058-1.05-.046zm2.094 2.025"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hand-index.svg b/vendor/twbs/bootstrap-icons/icons/hand-index.svg
new file mode 100644
index 000000000..725757bfd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hand-index.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hand-index" viewBox="0 0 16 16">
+ <path d="M6.75 1a.75.75 0 0 1 .75.75V8a.5.5 0 0 0 1 0V5.467l.086-.004c.317-.012.637-.008.816.027.134.027.294.096.448.182.077.042.15.147.15.314V8a.5.5 0 1 0 1 0V6.435l.106-.01c.316-.024.584-.01.708.04.118.046.3.207.486.43.081.096.15.19.2.259V8.5a.5.5 0 0 0 1 0v-1h.342a1 1 0 0 1 .995 1.1l-.271 2.715a2.5 2.5 0 0 1-.317.991l-1.395 2.442a.5.5 0 0 1-.434.252H6.035a.5.5 0 0 1-.416-.223l-1.433-2.15a1.5 1.5 0 0 1-.243-.666l-.345-3.105a.5.5 0 0 1 .399-.546L5 8.11V9a.5.5 0 0 0 1 0V1.75A.75.75 0 0 1 6.75 1M8.5 4.466V1.75a1.75 1.75 0 1 0-3.5 0v5.34l-1.2.24a1.5 1.5 0 0 0-1.196 1.636l.345 3.106a2.5 2.5 0 0 0 .405 1.11l1.433 2.15A1.5 1.5 0 0 0 6.035 16h6.385a1.5 1.5 0 0 0 1.302-.756l1.395-2.441a3.5 3.5 0 0 0 .444-1.389l.271-2.715a2 2 0 0 0-1.99-2.199h-.581a5 5 0 0 0-.195-.248c-.191-.229-.51-.568-.88-.716-.364-.146-.846-.132-1.158-.108l-.132.012a1.26 1.26 0 0 0-.56-.642 2.6 2.6 0 0 0-.738-.288c-.31-.062-.739-.058-1.05-.046zm2.094 2.025"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hand-thumbs-down-fill.svg b/vendor/twbs/bootstrap-icons/icons/hand-thumbs-down-fill.svg
new file mode 100644
index 000000000..53584f3bc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hand-thumbs-down-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hand-thumbs-down-fill" viewBox="0 0 16 16">
+ <path d="M6.956 14.534c.065.936.952 1.659 1.908 1.42l.261-.065a1.38 1.38 0 0 0 1.012-.965c.22-.816.533-2.512.062-4.51q.205.03.443.051c.713.065 1.669.071 2.516-.211.518-.173.994-.68 1.2-1.272a1.9 1.9 0 0 0-.234-1.734c.058-.118.103-.242.138-.362.077-.27.113-.568.113-.856 0-.29-.036-.586-.113-.857a2 2 0 0 0-.16-.403c.169-.387.107-.82-.003-1.149a3.2 3.2 0 0 0-.488-.9c.054-.153.076-.313.076-.465a1.86 1.86 0 0 0-.253-.912C13.1.757 12.437.28 11.5.28H8c-.605 0-1.07.08-1.466.217a4.8 4.8 0 0 0-.97.485l-.048.029c-.504.308-.999.61-2.068.723C2.682 1.815 2 2.434 2 3.279v4c0 .851.685 1.433 1.357 1.616.849.232 1.574.787 2.132 1.41.56.626.914 1.28 1.039 1.638.199.575.356 1.54.428 2.591"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hand-thumbs-down.svg b/vendor/twbs/bootstrap-icons/icons/hand-thumbs-down.svg
new file mode 100644
index 000000000..f87f523ae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hand-thumbs-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hand-thumbs-down" viewBox="0 0 16 16">
+ <path d="M8.864 15.674c-.956.24-1.843-.484-1.908-1.42-.072-1.05-.23-2.015-.428-2.59-.125-.36-.479-1.012-1.04-1.638-.557-.624-1.282-1.179-2.131-1.41C2.685 8.432 2 7.85 2 7V3c0-.845.682-1.464 1.448-1.546 1.07-.113 1.564-.415 2.068-.723l.048-.029c.272-.166.578-.349.97-.484C6.931.08 7.395 0 8 0h3.5c.937 0 1.599.478 1.934 1.064.164.287.254.607.254.913 0 .152-.023.312-.077.464.201.262.38.577.488.9.11.33.172.762.004 1.15.069.13.12.268.159.403.077.27.113.567.113.856s-.036.586-.113.856c-.035.12-.08.244-.138.363.394.571.418 1.2.234 1.733-.206.592-.682 1.1-1.2 1.272-.847.283-1.803.276-2.516.211a10 10 0 0 1-.443-.05 9.36 9.36 0 0 1-.062 4.51c-.138.508-.55.848-1.012.964zM11.5 1H8c-.51 0-.863.068-1.14.163-.281.097-.506.229-.776.393l-.04.025c-.555.338-1.198.73-2.49.868-.333.035-.554.29-.554.55V7c0 .255.226.543.62.65 1.095.3 1.977.997 2.614 1.709.635.71 1.064 1.475 1.238 1.977.243.7.407 1.768.482 2.85.025.362.36.595.667.518l.262-.065c.16-.04.258-.144.288-.255a8.34 8.34 0 0 0-.145-4.726.5.5 0 0 1 .595-.643h.003l.014.004.058.013a9 9 0 0 0 1.036.157c.663.06 1.457.054 2.11-.163.175-.059.45-.301.57-.651.107-.308.087-.67-.266-1.021L12.793 7l.353-.354c.043-.042.105-.14.154-.315.048-.167.075-.37.075-.581s-.027-.414-.075-.581c-.05-.174-.111-.273-.154-.315l-.353-.354.353-.354c.047-.047.109-.176.005-.488a2.2 2.2 0 0 0-.505-.804l-.353-.354.353-.354c.006-.005.041-.05.041-.17a.9.9 0 0 0-.121-.415C12.4 1.272 12.063 1 11.5 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hand-thumbs-up-fill.svg b/vendor/twbs/bootstrap-icons/icons/hand-thumbs-up-fill.svg
new file mode 100644
index 000000000..c68bc07ff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hand-thumbs-up-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hand-thumbs-up-fill" viewBox="0 0 16 16">
+ <path d="M6.956 1.745C7.021.81 7.908.087 8.864.325l.261.066c.463.116.874.456 1.012.965.22.816.533 2.511.062 4.51a10 10 0 0 1 .443-.051c.713-.065 1.669-.072 2.516.21.518.173.994.681 1.2 1.273.184.532.16 1.162-.234 1.733q.086.18.138.363c.077.27.113.567.113.856s-.036.586-.113.856c-.039.135-.09.273-.16.404.169.387.107.819-.003 1.148a3.2 3.2 0 0 1-.488.901c.054.152.076.312.076.465 0 .305-.089.625-.253.912C13.1 15.522 12.437 16 11.5 16H8c-.605 0-1.07-.081-1.466-.218a4.8 4.8 0 0 1-.97-.484l-.048-.03c-.504-.307-.999-.609-2.068-.722C2.682 14.464 2 13.846 2 13V9c0-.85.685-1.432 1.357-1.615.849-.232 1.574-.787 2.132-1.41.56-.627.914-1.28 1.039-1.639.199-.575.356-1.539.428-2.59z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hand-thumbs-up.svg b/vendor/twbs/bootstrap-icons/icons/hand-thumbs-up.svg
new file mode 100644
index 000000000..dc46d4d96
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hand-thumbs-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hand-thumbs-up" viewBox="0 0 16 16">
+ <path d="M8.864.046C7.908-.193 7.02.53 6.956 1.466c-.072 1.051-.23 2.016-.428 2.59-.125.36-.479 1.013-1.04 1.639-.557.623-1.282 1.178-2.131 1.41C2.685 7.288 2 7.87 2 8.72v4.001c0 .845.682 1.464 1.448 1.545 1.07.114 1.564.415 2.068.723l.048.03c.272.165.578.348.97.484.397.136.861.217 1.466.217h3.5c.937 0 1.599-.477 1.934-1.064a1.86 1.86 0 0 0 .254-.912c0-.152-.023-.312-.077-.464.201-.263.38-.578.488-.901.11-.33.172-.762.004-1.149.069-.13.12-.269.159-.403.077-.27.113-.568.113-.857 0-.288-.036-.585-.113-.856a2 2 0 0 0-.138-.362 1.9 1.9 0 0 0 .234-1.734c-.206-.592-.682-1.1-1.2-1.272-.847-.282-1.803-.276-2.516-.211a10 10 0 0 0-.443.05 9.4 9.4 0 0 0-.062-4.509A1.38 1.38 0 0 0 9.125.111zM11.5 14.721H8c-.51 0-.863-.069-1.14-.164-.281-.097-.506-.228-.776-.393l-.04-.024c-.555-.339-1.198-.731-2.49-.868-.333-.036-.554-.29-.554-.55V8.72c0-.254.226-.543.62-.65 1.095-.3 1.977-.996 2.614-1.708.635-.71 1.064-1.475 1.238-1.978.243-.7.407-1.768.482-2.85.025-.362.36-.594.667-.518l.262.066c.16.04.258.143.288.255a8.34 8.34 0 0 1-.145 4.725.5.5 0 0 0 .595.644l.003-.001.014-.003.058-.014a9 9 0 0 1 1.036-.157c.663-.06 1.457-.054 2.11.164.175.058.45.3.57.65.107.308.087.67-.266 1.022l-.353.353.353.354c.043.043.105.141.154.315.048.167.075.37.075.581 0 .212-.027.414-.075.582-.05.174-.111.272-.154.315l-.353.353.353.354c.047.047.109.177.005.488a2.2 2.2 0 0 1-.505.805l-.353.353.353.354c.006.005.041.05.041.17a.9.9 0 0 1-.121.416c-.165.288-.503.56-1.066.56z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/handbag-fill.svg b/vendor/twbs/bootstrap-icons/icons/handbag-fill.svg
new file mode 100644
index 000000000..5f8f23f40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/handbag-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-handbag-fill" viewBox="0 0 16 16">
+ <path d="M8 1a2 2 0 0 0-2 2v2H5V3a3 3 0 1 1 6 0v2h-1V3a2 2 0 0 0-2-2M5 5H3.36a1.5 1.5 0 0 0-1.483 1.277L.85 13.13A2.5 2.5 0 0 0 3.322 16h9.355a2.5 2.5 0 0 0 2.473-2.87l-1.028-6.853A1.5 1.5 0 0 0 12.64 5H11v1.5a.5.5 0 0 1-1 0V5H6v1.5a.5.5 0 0 1-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/handbag.svg b/vendor/twbs/bootstrap-icons/icons/handbag.svg
new file mode 100644
index 000000000..c9ef87456
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/handbag.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-handbag" viewBox="0 0 16 16">
+ <path d="M8 1a2 2 0 0 1 2 2v2H6V3a2 2 0 0 1 2-2m3 4V3a3 3 0 1 0-6 0v2H3.36a1.5 1.5 0 0 0-1.483 1.277L.85 13.13A2.5 2.5 0 0 0 3.322 16h9.355a2.5 2.5 0 0 0 2.473-2.87l-1.028-6.853A1.5 1.5 0 0 0 12.64 5zm-1 1v1.5a.5.5 0 0 0 1 0V6h1.639a.5.5 0 0 1 .494.426l1.028 6.851A1.5 1.5 0 0 1 12.678 15H3.322a1.5 1.5 0 0 1-1.483-1.723l1.028-6.851A.5.5 0 0 1 3.36 6H5v1.5a.5.5 0 1 0 1 0V6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hash.svg b/vendor/twbs/bootstrap-icons/icons/hash.svg
new file mode 100644
index 000000000..f67d000db
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hash.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hash" viewBox="0 0 16 16">
+ <path d="M8.39 12.648a1 1 0 0 0-.015.18c0 .305.21.508.5.508.266 0 .492-.172.555-.477l.554-2.703h1.204c.421 0 .617-.234.617-.547 0-.312-.188-.53-.617-.53h-.985l.516-2.524h1.265c.43 0 .618-.227.618-.547 0-.313-.188-.524-.618-.524h-1.046l.476-2.304a1 1 0 0 0 .016-.164.51.51 0 0 0-.516-.516.54.54 0 0 0-.539.43l-.523 2.554H7.617l.477-2.304c.008-.04.015-.118.015-.164a.51.51 0 0 0-.523-.516.54.54 0 0 0-.531.43L6.53 5.484H5.414c-.43 0-.617.22-.617.532s.187.539.617.539h.906l-.515 2.523H4.609c-.421 0-.609.219-.609.531s.188.547.61.547h.976l-.516 2.492c-.008.04-.015.125-.015.18 0 .305.21.508.5.508.265 0 .492-.172.554-.477l.555-2.703h2.242zm-1-6.109h2.266l-.515 2.563H6.859l.532-2.563z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hdd-fill.svg b/vendor/twbs/bootstrap-icons/icons/hdd-fill.svg
new file mode 100644
index 000000000..dbeda24f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hdd-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hdd-fill" viewBox="0 0 16 16">
+ <path d="M0 10a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2.5 1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M.91 7.204A3 3 0 0 1 2 7h12c.384 0 .752.072 1.09.204l-1.867-3.422A1.5 1.5 0 0 0 11.906 3H4.094a1.5 1.5 0 0 0-1.317.782z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hdd-network-fill.svg b/vendor/twbs/bootstrap-icons/icons/hdd-network-fill.svg
new file mode 100644
index 000000000..a74874d94
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hdd-network-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hdd-network-fill" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h5.5v3A1.5 1.5 0 0 0 6 11.5H.5a.5.5 0 0 0 0 1H6A1.5 1.5 0 0 0 7.5 14h1a1.5 1.5 0 0 0 1.5-1.5h5.5a.5.5 0 0 0 0-1H10A1.5 1.5 0 0 0 8.5 10V7H14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hdd-network.svg b/vendor/twbs/bootstrap-icons/icons/hdd-network.svg
new file mode 100644
index 000000000..722354295
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hdd-network.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hdd-network" viewBox="0 0 16 16">
+ <path d="M4.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M3 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1a2 2 0 0 1-2 2H8.5v3a1.5 1.5 0 0 1 1.5 1.5h5.5a.5.5 0 0 1 0 1H10A1.5 1.5 0 0 1 8.5 14h-1A1.5 1.5 0 0 1 6 12.5H.5a.5.5 0 0 1 0-1H6A1.5 1.5 0 0 1 7.5 10V7H2a2 2 0 0 1-2-2zm1 0v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1m6 7.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hdd-rack-fill.svg b/vendor/twbs/bootstrap-icons/icons/hdd-rack-fill.svg
new file mode 100644
index 000000000..7c33aec5a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hdd-rack-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hdd-rack-fill" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h1v2H2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2h-1V7h1a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m-2 7a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1M12 7v2H4V7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hdd-rack.svg b/vendor/twbs/bootstrap-icons/icons/hdd-rack.svg
new file mode 100644
index 000000000..d19a5149a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hdd-rack.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hdd-rack" viewBox="0 0 16 16">
+ <path d="M4.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M3 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m2 7a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-2.5.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+ <path d="M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h1v2H2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2h-1V7h1a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm13 2v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1m0 7v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1m-3-4v2H4V7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hdd-stack-fill.svg b/vendor/twbs/bootstrap-icons/icons/hdd-stack-fill.svg
new file mode 100644
index 000000000..27e87196f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hdd-stack-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hdd-stack-fill" viewBox="0 0 16 16">
+ <path d="M2 9a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1M2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm.5 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m2 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hdd-stack.svg b/vendor/twbs/bootstrap-icons/icons/hdd-stack.svg
new file mode 100644
index 000000000..f9095e5d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hdd-stack.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hdd-stack" viewBox="0 0 16 16">
+ <path d="M14 10a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zM2 9a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2z"/>
+ <path d="M5 11.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-2 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M14 3a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+ <path d="M5 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-2 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hdd.svg b/vendor/twbs/bootstrap-icons/icons/hdd.svg
new file mode 100644
index 000000000..92358f734
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hdd.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hdd" viewBox="0 0 16 16">
+ <path d="M4.5 11a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M3 10.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+ <path d="M16 11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V9.51c0-.418.105-.83.305-1.197l2.472-4.531A1.5 1.5 0 0 1 4.094 3h7.812a1.5 1.5 0 0 1 1.317.782l2.472 4.53c.2.368.305.78.305 1.198zM3.655 4.26 1.592 8.043Q1.79 8 2 8h12q.21 0 .408.042L12.345 4.26a.5.5 0 0 0-.439-.26H4.094a.5.5 0 0 0-.44.26zM1 10v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hdmi-fill.svg b/vendor/twbs/bootstrap-icons/icons/hdmi-fill.svg
new file mode 100644
index 000000000..435b39d24
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hdmi-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hdmi-fill" viewBox="0 0 16 16">
+ <path d="M1 5a1 1 0 0 0-1 1v3.293c0 .39.317.707.707.707.188 0 .368.075.5.207l.5.5a1 1 0 0 0 .707.293h11.172a1 1 0 0 0 .707-.293l.5-.5a.7.7 0 0 1 .5-.207c.39 0 .707-.317.707-.707V6a1 1 0 0 0-1-1zm1.5 2h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hdmi.svg b/vendor/twbs/bootstrap-icons/icons/hdmi.svg
new file mode 100644
index 000000000..09d0849f4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hdmi.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hdmi" viewBox="0 0 16 16">
+ <path d="M2.5 7a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1z"/>
+ <path d="M1 5a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h.293l.707.707a1 1 0 0 0 .707.293h10.586a1 1 0 0 0 .707-.293l.707-.707H15a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm0 1h14v3h-.293a1 1 0 0 0-.707.293l-.707.707H2.707L2 9.293A1 1 0 0 0 1.293 9H1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/headphones.svg b/vendor/twbs/bootstrap-icons/icons/headphones.svg
new file mode 100644
index 000000000..d50b3ee15
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/headphones.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-headphones" viewBox="0 0 16 16">
+ <path d="M8 3a5 5 0 0 0-5 5v1h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V8a6 6 0 1 1 12 0v5a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h1V8a5 5 0 0 0-5-5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/headset-vr.svg b/vendor/twbs/bootstrap-icons/icons/headset-vr.svg
new file mode 100644
index 000000000..0498bd651
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/headset-vr.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-headset-vr" viewBox="0 0 16 16">
+ <path d="M8 1.248c1.857 0 3.526.641 4.65 1.794a5 5 0 0 1 2.518 1.09C13.907 1.482 11.295 0 8 0 4.75 0 2.12 1.48.844 4.122a5 5 0 0 1 2.289-1.047C4.236 1.872 5.974 1.248 8 1.248"/>
+ <path d="M12 12a4 4 0 0 1-2.786-1.13l-.002-.002a1.6 1.6 0 0 0-.276-.167A2.2 2.2 0 0 0 8 10.5c-.414 0-.729.103-.935.201a1.6 1.6 0 0 0-.277.167l-.002.002A4 4 0 1 1 4 4h8a4 4 0 0 1 0 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/headset.svg b/vendor/twbs/bootstrap-icons/icons/headset.svg
new file mode 100644
index 000000000..a921156c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/headset.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-headset" viewBox="0 0 16 16">
+ <path d="M8 1a5 5 0 0 0-5 5v1h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a6 6 0 1 1 12 0v6a2.5 2.5 0 0 1-2.5 2.5H9.366a1 1 0 0 1-.866.5h-1a1 1 0 1 1 0-2h1a1 1 0 0 1 .866.5H11.5A1.5 1.5 0 0 0 13 12h-1a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h1V6a5 5 0 0 0-5-5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/heart-arrow.svg b/vendor/twbs/bootstrap-icons/icons/heart-arrow.svg
new file mode 100644
index 000000000..45eb6a542
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/heart-arrow.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart-arrow" viewBox="0 0 16 16">
+ <path d="M6.707 9h4.364c-.536 1.573 2.028 3.806 4.929-.5-2.9-4.306-5.465-2.073-4.929-.5H6.707L4.854 6.146a.5.5 0 1 0-.708.708L5.293 8h-.586L2.854 6.146a.5.5 0 1 0-.708.708L3.293 8h-.586L.854 6.146a.5.5 0 1 0-.708.708L1.793 8.5.146 10.146a.5.5 0 0 0 .708.708L2.707 9h.586l-1.147 1.146a.5.5 0 0 0 .708.708L4.707 9h.586l-1.147 1.146a.5.5 0 0 0 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/heart-fill.svg
new file mode 100644
index 000000000..5e6b8ee54
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/heart-half.svg b/vendor/twbs/bootstrap-icons/icons/heart-half.svg
new file mode 100644
index 000000000..2e0dd31b2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/heart-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart-half" viewBox="0 0 16 16">
+ <path d="M8 2.748v11.047c3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143q.09.083.176.171a3 3 0 0 1 .176-.17C12.72-3.042 23.333 4.867 8 15"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/heart-pulse-fill.svg b/vendor/twbs/bootstrap-icons/icons/heart-pulse-fill.svg
new file mode 100644
index 000000000..fc5e21976
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/heart-pulse-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart-pulse-fill" viewBox="0 0 16 16">
+ <path d="M1.475 9C2.702 10.84 4.779 12.871 8 15c3.221-2.129 5.298-4.16 6.525-6H12a.5.5 0 0 1-.464-.314l-1.457-3.642-1.598 5.593a.5.5 0 0 1-.945.049L5.889 6.568l-1.473 2.21A.5.5 0 0 1 4 9z"/>
+ <path d="M.88 8C-2.427 1.68 4.41-2 7.823 1.143q.09.083.176.171a3 3 0 0 1 .176-.17C11.59-2 18.426 1.68 15.12 8h-2.783l-1.874-4.686a.5.5 0 0 0-.945.049L7.921 8.956 6.464 5.314a.5.5 0 0 0-.88-.091L3.732 8z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/heart-pulse.svg b/vendor/twbs/bootstrap-icons/icons/heart-pulse.svg
new file mode 100644
index 000000000..dd957b32a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/heart-pulse.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart-pulse" viewBox="0 0 16 16">
+ <path d="m8 2.748-.717-.737C5.6.281 2.514.878 1.4 3.053.918 3.995.78 5.323 1.508 7H.43c-2.128-5.697 4.165-8.83 7.394-5.857q.09.083.176.171a3 3 0 0 1 .176-.17c3.23-2.974 9.522.159 7.394 5.856h-1.078c.728-1.677.59-3.005.108-3.947C13.486.878 10.4.28 8.717 2.01zM2.212 10h1.315C4.593 11.183 6.05 12.458 8 13.795c1.949-1.337 3.407-2.612 4.473-3.795h1.315c-1.265 1.566-3.14 3.25-5.788 5-2.648-1.75-4.523-3.434-5.788-5"/>
+ <path d="M10.464 3.314a.5.5 0 0 0-.945.049L7.921 8.956 6.464 5.314a.5.5 0 0 0-.88-.091L3.732 8H.5a.5.5 0 0 0 0 1H4a.5.5 0 0 0 .416-.223l1.473-2.209 1.647 4.118a.5.5 0 0 0 .945-.049l1.598-5.593 1.457 3.642A.5.5 0 0 0 12 9h3.5a.5.5 0 0 0 0-1h-3.162z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/heart.svg b/vendor/twbs/bootstrap-icons/icons/heart.svg
new file mode 100644
index 000000000..cd8eeb1e3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart" viewBox="0 0 16 16">
+ <path d="m8 2.748-.717-.737C5.6.281 2.514.878 1.4 3.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143q.09.083.176.171a3 3 0 0 1 .176-.17C12.72-3.042 23.333 4.867 8 15"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/heartbreak-fill.svg b/vendor/twbs/bootstrap-icons/icons/heartbreak-fill.svg
new file mode 100644
index 000000000..335cb6a5e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/heartbreak-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heartbreak-fill" viewBox="0 0 16 16">
+ <path d="M8.931.586 7 3l1.5 4-2 3L8 15C22.534 5.396 13.757-2.21 8.931.586M7.358.77 5.5 3 7 7l-1.5 3 1.815 4.537C-6.533 4.96 2.685-2.467 7.358.77"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/heartbreak.svg b/vendor/twbs/bootstrap-icons/icons/heartbreak.svg
new file mode 100644
index 000000000..dcffc897b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/heartbreak.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heartbreak" viewBox="0 0 16 16">
+ <path d="M8.867 14.41c13.308-9.322 4.79-16.563.064-13.824L7 3l1.5 4-2 3L8 15a38 38 0 0 0 .867-.59m-.303-1.01-.971-3.237 1.74-2.608a1 1 0 0 0 .103-.906l-1.3-3.468 1.45-1.813c1.861-.948 4.446.002 5.197 2.11.691 1.94-.055 5.521-6.219 9.922m-1.25 1.137a36 36 0 0 1-1.522-1.116C-5.077 4.97 1.842-1.472 6.454.293c.314.12.618.279.904.477L5.5 3 7 7l-1.5 3zm-2.3-3.06-.442-1.106a1 1 0 0 1 .034-.818l1.305-2.61L4.564 3.35a1 1 0 0 1 .168-.991l1.032-1.24c-1.688-.449-3.7.398-4.456 2.128-.711 1.627-.413 4.55 3.706 8.229Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hearts.svg b/vendor/twbs/bootstrap-icons/icons/hearts.svg
new file mode 100644
index 000000000..ebd2dbb24
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hearts.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hearts" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4.931.481c1.627-1.671 5.692 1.254 0 5.015-5.692-3.76-1.626-6.686 0-5.015m6.84 1.794c1.084-1.114 3.795.836 0 3.343-3.795-2.507-1.084-4.457 0-3.343M7.84 7.642c2.71-2.786 9.486 2.09 0 8.358-9.487-6.268-2.71-11.144 0-8.358"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/heptagon-fill.svg b/vendor/twbs/bootstrap-icons/icons/heptagon-fill.svg
new file mode 100644
index 000000000..a339328ae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/heptagon-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heptagon-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.779.052a.5.5 0 0 1 .442 0l6.015 2.97a.5.5 0 0 1 .267.34l1.485 6.676a.5.5 0 0 1-.093.415l-4.162 5.354a.5.5 0 0 1-.395.193H4.662a.5.5 0 0 1-.395-.193L.105 10.453a.5.5 0 0 1-.093-.415l1.485-6.676a.5.5 0 0 1 .267-.34z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/heptagon-half.svg b/vendor/twbs/bootstrap-icons/icons/heptagon-half.svg
new file mode 100644
index 000000000..b4fadcf9a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/heptagon-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heptagon-half" viewBox="0 0 16 16">
+ <path d="M7.779.052a.5.5 0 0 1 .442 0l6.015 2.97a.5.5 0 0 1 .267.34l1.485 6.676a.5.5 0 0 1-.093.415l-4.162 5.354a.5.5 0 0 1-.395.193H4.662a.5.5 0 0 1-.395-.193L.105 10.453a.5.5 0 0 1-.093-.415l1.485-6.676a.5.5 0 0 1 .267-.34zM8 15h3.093l3.868-4.975-1.383-6.212L8 1.058z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/heptagon.svg b/vendor/twbs/bootstrap-icons/icons/heptagon.svg
new file mode 100644
index 000000000..3140b8b89
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/heptagon.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heptagon" viewBox="0 0 16 16">
+ <path d="M7.779.052a.5.5 0 0 1 .442 0l6.015 2.97a.5.5 0 0 1 .267.34l1.485 6.676a.5.5 0 0 1-.093.415l-4.162 5.354a.5.5 0 0 1-.395.193H4.662a.5.5 0 0 1-.395-.193L.105 10.453a.5.5 0 0 1-.093-.415l1.485-6.676a.5.5 0 0 1 .267-.34zM2.422 3.813l-1.383 6.212L4.907 15h6.186l3.868-4.975-1.383-6.212L8 1.058z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hexagon-fill.svg b/vendor/twbs/bootstrap-icons/icons/hexagon-fill.svg
new file mode 100644
index 000000000..50fdbfb9c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hexagon-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hexagon-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8.5.134a1 1 0 0 0-1 0l-6 3.577a1 1 0 0 0-.5.866v6.846a1 1 0 0 0 .5.866l6 3.577a1 1 0 0 0 1 0l6-3.577a1 1 0 0 0 .5-.866V4.577a1 1 0 0 0-.5-.866z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hexagon-half.svg b/vendor/twbs/bootstrap-icons/icons/hexagon-half.svg
new file mode 100644
index 000000000..452cb6ee6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hexagon-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hexagon-half" viewBox="0 0 16 16">
+ <path d="M14 4.577v6.846L8 15V1zM8.5.134a1 1 0 0 0-1 0l-6 3.577a1 1 0 0 0-.5.866v6.846a1 1 0 0 0 .5.866l6 3.577a1 1 0 0 0 1 0l6-3.577a1 1 0 0 0 .5-.866V4.577a1 1 0 0 0-.5-.866z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hexagon.svg b/vendor/twbs/bootstrap-icons/icons/hexagon.svg
new file mode 100644
index 000000000..6e839399e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hexagon.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hexagon" viewBox="0 0 16 16">
+ <path d="M14 4.577v6.846L8 15l-6-3.577V4.577L8 1zM8.5.134a1 1 0 0 0-1 0l-6 3.577a1 1 0 0 0-.5.866v6.846a1 1 0 0 0 .5.866l6 3.577a1 1 0 0 0 1 0l6-3.577a1 1 0 0 0 .5-.866V4.577a1 1 0 0 0-.5-.866z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/highlighter.svg b/vendor/twbs/bootstrap-icons/icons/highlighter.svg
new file mode 100644
index 000000000..e26f1f7b1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/highlighter.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-highlighter" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11.096.644a2 2 0 0 1 2.791.036l1.433 1.433a2 2 0 0 1 .035 2.791l-.413.435-8.07 8.995a.5.5 0 0 1-.372.166h-3a.5.5 0 0 1-.234-.058l-.412.412A.5.5 0 0 1 2.5 15h-2a.5.5 0 0 1-.354-.854l1.412-1.412A.5.5 0 0 1 1.5 12.5v-3a.5.5 0 0 1 .166-.372l8.995-8.07zm-.115 1.47L2.727 9.52l3.753 3.753 7.406-8.254zm3.585 2.17.064-.068a1 1 0 0 0-.017-1.396L13.18 1.387a1 1 0 0 0-1.396-.018l-.068.065zM5.293 13.5 2.5 10.707v1.586L3.707 13.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/highlights.svg b/vendor/twbs/bootstrap-icons/icons/highlights.svg
new file mode 100644
index 000000000..b43fca0f3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/highlights.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-highlights" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 0 0 8a8 8 0 0 0 16 0m-8 5v1H4.5a.5.5 0 0 0-.093.009A7 7 0 0 1 3.1 13zm0-1H2.255a7 7 0 0 1-.581-1H8zm-6.71-2a7 7 0 0 1-.22-1H8v1zM1 8q0-.51.07-1H8v1zm.29-2q.155-.519.384-1H8v1zm.965-2q.377-.54.846-1H8v1zm2.137-2A6.97 6.97 0 0 1 8 1v1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hospital-fill.svg b/vendor/twbs/bootstrap-icons/icons/hospital-fill.svg
new file mode 100644
index 000000000..55bde0f0a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hospital-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hospital-fill" viewBox="0 0 16 16">
+ <path d="M6 0a1 1 0 0 0-1 1v1a1 1 0 0 0-1 1v4H1a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h6v-2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5V16h6a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1h-3V3a1 1 0 0 0-1-1V1a1 1 0 0 0-1-1zm2.5 5.034v1.1l.953-.55.5.867L9 7l.953.55-.5.866-.953-.55v1.1h-1v-1.1l-.953.55-.5-.866L7 7l-.953-.55.5-.866.953.55v-1.1zM2.25 9h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 2 9.75v-.5A.25.25 0 0 1 2.25 9m0 2h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5a.25.25 0 0 1 .25-.25M2 13.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zM13.25 9h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5a.25.25 0 0 1 .25-.25M13 11.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm.25 1.75h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25v-.5a.25.25 0 0 1 .25-.25"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hospital.svg b/vendor/twbs/bootstrap-icons/icons/hospital.svg
new file mode 100644
index 000000000..f6bd0daab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hospital.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hospital" viewBox="0 0 16 16">
+ <path d="M8.5 5.034v1.1l.953-.55.5.867L9 7l.953.55-.5.866-.953-.55v1.1h-1v-1.1l-.953.55-.5-.866L7 7l-.953-.55.5-.866.953.55v-1.1zM13.25 9a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zM13 11.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm.25 1.75a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zm-11-4a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 3 9.75v-.5A.25.25 0 0 0 2.75 9zm0 2a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zM2 13.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25z"/>
+ <path d="M5 1a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v1a1 1 0 0 1 1 1v4h3a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h3V3a1 1 0 0 1 1-1zm2 14h2v-3H7zm3 0h1V3H5v12h1v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1zm0-14H6v1h4zm2 7v7h3V8zm-8 7V8H1v7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hourglass-bottom.svg b/vendor/twbs/bootstrap-icons/icons/hourglass-bottom.svg
new file mode 100644
index 000000000..946f8823d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hourglass-bottom.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hourglass-bottom" viewBox="0 0 16 16">
+ <path d="M2 1.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1-.5-.5m2.5.5v1a3.5 3.5 0 0 0 1.989 3.158c.533.256 1.011.791 1.011 1.491v.702s.18.149.5.149.5-.15.5-.15v-.7c0-.701.478-1.236 1.011-1.492A3.5 3.5 0 0 0 11.5 3V2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hourglass-split.svg b/vendor/twbs/bootstrap-icons/icons/hourglass-split.svg
new file mode 100644
index 000000000..a9d1c5106
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hourglass-split.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hourglass-split" viewBox="0 0 16 16">
+ <path d="M2.5 15a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1zm2-13v1c0 .537.12 1.045.337 1.5h6.326c.216-.455.337-.963.337-1.5V2zm3 6.35c0 .701-.478 1.236-1.011 1.492A3.5 3.5 0 0 0 4.5 13s.866-1.299 3-1.48zm1 0v3.17c2.134.181 3 1.48 3 1.48a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hourglass-top.svg b/vendor/twbs/bootstrap-icons/icons/hourglass-top.svg
new file mode 100644
index 000000000..6a8a4a3eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hourglass-top.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hourglass-top" viewBox="0 0 16 16">
+ <path d="M2 14.5a.5.5 0 0 0 .5.5h11a.5.5 0 1 0 0-1h-1v-1a4.5 4.5 0 0 0-2.557-4.06c-.29-.139-.443-.377-.443-.59v-.7c0-.213.154-.451.443-.59A4.5 4.5 0 0 0 12.5 3V2h1a.5.5 0 0 0 0-1h-11a.5.5 0 0 0 0 1h1v1a4.5 4.5 0 0 0 2.557 4.06c.29.139.443.377.443.59v.7c0 .213-.154.451-.443.59A4.5 4.5 0 0 0 3.5 13v1h-1a.5.5 0 0 0-.5.5m2.5-.5v-1a3.5 3.5 0 0 1 1.989-3.158c.533-.256 1.011-.79 1.011-1.491v-.702s.18.101.5.101.5-.1.5-.1v.7c0 .701.478 1.236 1.011 1.492A3.5 3.5 0 0 1 11.5 13v1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hourglass.svg b/vendor/twbs/bootstrap-icons/icons/hourglass.svg
new file mode 100644
index 000000000..44ede0a8d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hourglass.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hourglass" viewBox="0 0 16 16">
+ <path d="M2 1.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1-.5-.5m2.5.5v1a3.5 3.5 0 0 0 1.989 3.158c.533.256 1.011.791 1.011 1.491v.702c0 .7-.478 1.235-1.011 1.491A3.5 3.5 0 0 0 4.5 13v1h7v-1a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351v-.702c0-.7.478-1.235 1.011-1.491A3.5 3.5 0 0 0 11.5 3V2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-add-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-add-fill.svg
new file mode 100644
index 000000000..1e814ee97
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-add-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-add-fill" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 1 1-1 0v-1h-1a.5.5 0 1 1 0-1h1v-1a.5.5 0 0 1 1 0"/>
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/>
+ <path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-add.svg b/vendor/twbs/bootstrap-icons/icons/house-add.svg
new file mode 100644
index 000000000..2a89bbe9f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-add.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-add" viewBox="0 0 16 16">
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h4a.5.5 0 1 0 0-1h-4a.5.5 0 0 1-.5-.5V7.207l5-5 6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 1 0 1 0v-1h1a.5.5 0 1 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-check-fill.svg
new file mode 100644
index 000000000..f2ddeb92d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-check-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-check-fill" viewBox="0 0 16 16">
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/>
+ <path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.707l.547.547 1.17-1.951a.5.5 0 1 1 .858.514"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-check.svg b/vendor/twbs/bootstrap-icons/icons/house-check.svg
new file mode 100644
index 000000000..5bd790005
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-check" viewBox="0 0 16 16">
+ <path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.707l.547.547 1.17-1.951a.5.5 0 1 1 .858.514"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-dash-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-dash-fill.svg
new file mode 100644
index 000000000..2fa8c57c2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-dash-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-dash-fill" viewBox="0 0 16 16">
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/>
+ <path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 1 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-dash.svg b/vendor/twbs/bootstrap-icons/icons/house-dash.svg
new file mode 100644
index 000000000..b1cb83298
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-dash" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 1 1 0-1"/>
+ <path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-door-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-door-fill.svg
new file mode 100644
index 000000000..cf6d43940
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-door-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-door-fill" viewBox="0 0 16 16">
+ <path d="M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-door.svg b/vendor/twbs/bootstrap-icons/icons/house-door.svg
new file mode 100644
index 000000000..daa093bff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-door.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-door" viewBox="0 0 16 16">
+ <path d="M8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4.5a.5.5 0 0 0 .5-.5v-4h2v4a.5.5 0 0 0 .5.5H14a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM2.5 14V7.707l5.5-5.5 5.5 5.5V14H10v-4a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-down-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-down-fill.svg
new file mode 100644
index 000000000..351904fe1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-down-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-down-fill" viewBox="0 0 16 16">
+ <path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.707l-.646.646V10.5a.5.5 0 0 0-1 0v2.793l-.646-.646a.5.5 0 0 0-.708.707l1.5 1.5a.5.5 0 0 0 .708 0"/>
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/>
+ <path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-down.svg b/vendor/twbs/bootstrap-icons/icons/house-down.svg
new file mode 100644
index 000000000..4d1d905ae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-down" viewBox="0 0 16 16">
+ <path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/>
+ <path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.707l-.646.646V10.5a.5.5 0 0 0-1 0v2.793l-.646-.646a.5.5 0 0 0-.708.707l1.5 1.5a.5.5 0 0 0 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-exclamation-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-exclamation-fill.svg
new file mode 100644
index 000000000..52fc0ae2a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-exclamation-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-exclamation-fill" viewBox="0 0 16 16">
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/>
+ <path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 1 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/house-exclamation.svg
new file mode 100644
index 000000000..6d414f359
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-exclamation.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-exclamation" viewBox="0 0 16 16">
+ <path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 1 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-fill.svg
new file mode 100644
index 000000000..89db16446
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-fill" viewBox="0 0 16 16">
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/>
+ <path d="m8 3.293 6 6V13.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 13.5V9.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-gear-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-gear-fill.svg
new file mode 100644
index 000000000..9003152a3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-gear-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-gear-fill" viewBox="0 0 16 16">
+ <path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207 1.354 8.854a.5.5 0 1 1-.708-.708z"/>
+ <path d="M11.07 9.047a1.5 1.5 0 0 0-1.742.26l-.02.021a1.5 1.5 0 0 0-.261 1.742 1.5 1.5 0 0 0 0 2.86 1.5 1.5 0 0 0-.12 1.07H3.5A1.5 1.5 0 0 1 2 13.5V9.293l6-6 4.724 4.724a1.5 1.5 0 0 0-1.654 1.03"/>
+ <path d="m13.158 9.608-.043-.148c-.181-.613-1.049-.613-1.23 0l-.043.148a.64.64 0 0 1-.921.382l-.136-.074c-.561-.306-1.175.308-.87.869l.075.136a.64.64 0 0 1-.382.92l-.148.045c-.613.18-.613 1.048 0 1.229l.148.043a.64.64 0 0 1 .382.921l-.074.136c-.306.561.308 1.175.869.87l.136-.075a.64.64 0 0 1 .92.382l.045.149c.18.612 1.048.612 1.229 0l.043-.15a.64.64 0 0 1 .921-.38l.136.074c.561.305 1.175-.309.87-.87l-.075-.136a.64.64 0 0 1 .382-.92l.149-.044c.612-.181.612-1.049 0-1.23l-.15-.043a.64.64 0 0 1-.38-.921l.074-.136c.305-.561-.309-1.175-.87-.87l-.136.075a.64.64 0 0 1-.92-.382ZM12.5 14a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-gear.svg b/vendor/twbs/bootstrap-icons/icons/house-gear.svg
new file mode 100644
index 000000000..65b5abb7a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-gear.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-gear" viewBox="0 0 16 16">
+ <path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/>
+ <path d="M11.886 9.46c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.044c-.613-.181-.613-1.049 0-1.23l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-heart-fill.svg
new file mode 100644
index 000000000..be2e5f401
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-heart-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-heart-fill" viewBox="0 0 16 16">
+ <path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.707L8 2.207 1.354 8.853a.5.5 0 1 1-.708-.707z"/>
+ <path d="m14 9.293-6-6-6 6V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5zm-6-.811c1.664-1.673 5.825 1.254 0 5.018-5.825-3.764-1.664-6.691 0-5.018"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-heart.svg b/vendor/twbs/bootstrap-icons/icons/house-heart.svg
new file mode 100644
index 000000000..ece6c0616
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-heart.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-heart" viewBox="0 0 16 16">
+ <path d="M8 6.982C9.664 5.309 13.825 8.236 8 12 2.175 8.236 6.336 5.309 8 6.982"/>
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.707L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V8.207l.646.646a.5.5 0 0 0 .708-.707L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM13 7.207V13.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V7.207l5-5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-lock-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-lock-fill.svg
new file mode 100644
index 000000000..90cc8c715
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-lock-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-lock-fill" viewBox="0 0 16 16">
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/>
+ <path d="m8 3.293 4.72 4.72a3 3 0 0 0-2.709 3.248A2 2 0 0 0 9 13v2H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/>
+ <path d="M13 9a2 2 0 0 0-2 2v1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1v-1a2 2 0 0 0-2-2m0 1a1 1 0 0 1 1 1v1h-2v-1a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-lock.svg b/vendor/twbs/bootstrap-icons/icons/house-lock.svg
new file mode 100644
index 000000000..8dc5894ea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-lock.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-lock" viewBox="0 0 16 16">
+ <path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/>
+ <path d="M10 13a1 1 0 0 1 1-1v-1a2 2 0 0 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-slash-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-slash-fill.svg
new file mode 100644
index 000000000..df8d7c62b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-slash-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-slash-fill" viewBox="0 0 16 16">
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/>
+ <path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/>
+ <path d="M13.879 10.414a2.5 2.5 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-slash.svg b/vendor/twbs/bootstrap-icons/icons/house-slash.svg
new file mode 100644
index 000000000..a81b0ede6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-slash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-slash" viewBox="0 0 16 16">
+ <path d="M13.879 10.414a2.5 2.5 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95Z"/>
+ <path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-up-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-up-fill.svg
new file mode 100644
index 000000000..5e6a80157
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-up-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-up-fill" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 1 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.707l1.5-1.5a.5.5 0 0 1 .708 0Z"/>
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/>
+ <path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-up.svg b/vendor/twbs/bootstrap-icons/icons/house-up.svg
new file mode 100644
index 000000000..da183d27d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-up" viewBox="0 0 16 16">
+ <path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 1 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.707l1.5-1.5a.5.5 0 0 1 .708 0Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/house-x-fill.svg
new file mode 100644
index 000000000..729cdb5a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-x-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-x-fill" viewBox="0 0 16 16">
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"/>
+ <path d="m8 3.293 4.712 4.712A4.5 4.5 0 0 0 8.758 15H3.5A1.5 1.5 0 0 1 2 13.5V9.293z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.646a.5.5 0 0 1 .708.707l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.707l.647-.647-.647-.646a.5.5 0 0 1 .708-.707Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house-x.svg b/vendor/twbs/bootstrap-icons/icons/house-x.svg
new file mode 100644
index 000000000..68137c0bc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-x" viewBox="0 0 16 16">
+ <path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.708L8 2.207l-5 5V13.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 2 13.5V8.207l-.646.647a.5.5 0 1 1-.708-.708z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.646a.5.5 0 0 1 .708.707l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.707l.647-.647-.647-.646a.5.5 0 0 1 .708-.707Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/house.svg b/vendor/twbs/bootstrap-icons/icons/house.svg
new file mode 100644
index 000000000..cb57f687a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/house.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house" viewBox="0 0 16 16">
+ <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V8.207l.646.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM13 7.207V13.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V7.207l5-5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/houses-fill.svg b/vendor/twbs/bootstrap-icons/icons/houses-fill.svg
new file mode 100644
index 000000000..63047bbfd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/houses-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-houses-fill" viewBox="0 0 16 16">
+ <path d="M7.207 1a1 1 0 0 0-1.414 0L.146 6.646a.5.5 0 0 0 .708.708L1 7.207V12.5A1.5 1.5 0 0 0 2.5 14h.55a2.5 2.5 0 0 1-.05-.5V9.415a1.5 1.5 0 0 1-.56-2.475l5.353-5.354z"/>
+ <path d="M8.793 2a1 1 0 0 1 1.414 0L12 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l1.854 1.853a.5.5 0 0 1-.708.708L15 8.207V13.5a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 4 13.5V8.207l-.146.147a.5.5 0 1 1-.708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/houses.svg b/vendor/twbs/bootstrap-icons/icons/houses.svg
new file mode 100644
index 000000000..3a906bedc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/houses.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-houses" viewBox="0 0 16 16">
+ <path d="M5.793 1a1 1 0 0 1 1.414 0l.647.646a.5.5 0 1 1-.708.708L6.5 1.707 2 6.207V12.5a.5.5 0 0 0 .5.5.5.5 0 0 1 0 1A1.5 1.5 0 0 1 1 12.5V7.207l-.146.147a.5.5 0 0 1-.708-.708zm3 1a1 1 0 0 1 1.414 0L12 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l1.854 1.853a.5.5 0 0 1-.708.708L15 8.207V13.5a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 4 13.5V8.207l-.146.147a.5.5 0 1 1-.708-.708zm.707.707L5 7.207V13.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5V7.207z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hr.svg b/vendor/twbs/bootstrap-icons/icons/hr.svg
new file mode 100644
index 000000000..6e9fbd8c5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hr.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hr" viewBox="0 0 16 16">
+ <path d="M12 3H4a1 1 0 0 0-1 1v2.5H2V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2.5h-1V4a1 1 0 0 0-1-1M2 9.5h1V12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V9.5h1V12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm-1.5-2a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hurricane.svg b/vendor/twbs/bootstrap-icons/icons/hurricane.svg
new file mode 100644
index 000000000..5bd9ae1d8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hurricane.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hurricane" viewBox="0 0 16 16">
+ <path d="M6.999 2.6A5.5 5.5 0 0 1 15 7.5a.5.5 0 0 0 1 0 6.5 6.5 0 1 0-13 0 5 5 0 0 0 6.001 4.9A5.5 5.5 0 0 1 1 7.5a.5.5 0 0 0-1 0 6.5 6.5 0 1 0 13 0 5 5 0 0 0-6.001-4.9M10 7.5a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/hypnotize.svg b/vendor/twbs/bootstrap-icons/icons/hypnotize.svg
new file mode 100644
index 000000000..6a2899710
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/hypnotize.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hypnotize" viewBox="0 0 16 16">
+ <path d="m7.949 7.998.006-.003.003.009zm.025-.028v-.03l.018.01zm0 .015.04-.022.01.006v.04l-.029.016-.021-.012zm.049.057v-.014l-.008.01zm-.05-.008h.006l-.006.004z"/>
+ <path fill-rule="evenodd" d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M4.965 1.69a6.97 6.97 0 0 1 3.861-.642c.722.767 1.177 1.887 1.177 3.135 0 1.656-.802 3.088-1.965 3.766 1.263.24 2.655-.815 3.406-2.742.38-.975.537-2.023.492-2.996a7.03 7.03 0 0 1 2.488 3.003c-.303 1.01-1.046 1.966-2.128 2.59-1.44.832-3.09.85-4.26.173l.008.021.012-.006-.01.01c.42 1.218 2.032 1.9 4.08 1.586a7.4 7.4 0 0 0 2.856-1.081 6.96 6.96 0 0 1-1.358 3.662c-1.03.248-2.235.084-3.322-.544-1.433-.827-2.272-2.236-2.279-3.58l-.012-.003c-.845.972-.63 2.71.666 4.327a7.4 7.4 0 0 0 2.37 1.935 6.97 6.97 0 0 1-3.86.65c-.727-.767-1.186-1.892-1.186-3.146 0-1.658.804-3.091 1.969-3.768l-.002-.007c-1.266-.25-2.666.805-3.42 2.74a7.4 7.4 0 0 0-.49 3.012 7.03 7.03 0 0 1-2.49-3.018C1.87 9.757 2.613 8.8 3.696 8.174c1.438-.83 3.084-.85 4.253-.176l.005-.006C7.538 6.77 5.924 6.085 3.872 6.4c-1.04.16-2.03.55-2.853 1.08a6.96 6.96 0 0 1 1.372-3.667l-.002.003c1.025-.243 2.224-.078 3.306.547 1.43.826 2.269 2.23 2.28 3.573L8 7.941c.837-.974.62-2.706-.673-4.319a7.4 7.4 0 0 0-2.362-1.931Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/image-alt.svg b/vendor/twbs/bootstrap-icons/icons/image-alt.svg
new file mode 100644
index 000000000..e56ee2086
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/image-alt.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-image-alt" viewBox="0 0 16 16">
+ <path d="M7 2.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0m4.225 4.053a.5.5 0 0 0-.577.093l-3.71 4.71-2.66-2.772a.5.5 0 0 0-.63.062L.002 13v2a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-4.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/image-fill.svg b/vendor/twbs/bootstrap-icons/icons/image-fill.svg
new file mode 100644
index 000000000..db26ae8d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/image-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-image-fill" viewBox="0 0 16 16">
+ <path d="M.002 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-12a2 2 0 0 1-2-2zm1 9v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V9.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062zm5-6.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/image.svg b/vendor/twbs/bootstrap-icons/icons/image.svg
new file mode 100644
index 000000000..152c333ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/image.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-image" viewBox="0 0 16 16">
+ <path d="M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+ <path d="M2.002 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v6.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12V3a1 1 0 0 1 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/images.svg b/vendor/twbs/bootstrap-icons/icons/images.svg
new file mode 100644
index 000000000..adc7abfae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/images.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-images" viewBox="0 0 16 16">
+ <path d="M4.502 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/>
+ <path d="M14.002 13a2 2 0 0 1-2 2h-10a2 2 0 0 1-2-2V5A2 2 0 0 1 2 3a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v8a2 2 0 0 1-1.998 2M14 2H4a1 1 0 0 0-1 1h9.002a2 2 0 0 1 2 2v7A1 1 0 0 0 15 11V3a1 1 0 0 0-1-1M2.002 4a1 1 0 0 0-1 1v8l2.646-2.354a.5.5 0 0 1 .63-.062l2.66 1.773 3.71-3.71a.5.5 0 0 1 .577-.094l1.777 1.947V5a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/inbox-fill.svg b/vendor/twbs/bootstrap-icons/icons/inbox-fill.svg
new file mode 100644
index 000000000..7e4816df4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/inbox-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-inbox-fill" viewBox="0 0 16 16">
+ <path d="M4.98 4a.5.5 0 0 0-.39.188L1.54 8H6a.5.5 0 0 1 .5.5 1.5 1.5 0 1 0 3 0A.5.5 0 0 1 10 8h4.46l-3.05-3.812A.5.5 0 0 0 11.02 4zm-1.17-.437A1.5 1.5 0 0 1 4.98 3h6.04a1.5 1.5 0 0 1 1.17.563l3.7 4.625a.5.5 0 0 1 .106.374l-.39 3.124A1.5 1.5 0 0 1 14.117 13H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .106-.374z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/inbox.svg b/vendor/twbs/bootstrap-icons/icons/inbox.svg
new file mode 100644
index 000000000..b60e94960
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/inbox.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-inbox" viewBox="0 0 16 16">
+ <path d="M4.98 4a.5.5 0 0 0-.39.188L1.54 8H6a.5.5 0 0 1 .5.5 1.5 1.5 0 1 0 3 0A.5.5 0 0 1 10 8h4.46l-3.05-3.812A.5.5 0 0 0 11.02 4zm9.954 5H10.45a2.5 2.5 0 0 1-4.9 0H1.066l.32 2.562a.5.5 0 0 0 .497.438h12.234a.5.5 0 0 0 .496-.438zM3.809 3.563A1.5 1.5 0 0 1 4.981 3h6.038a1.5 1.5 0 0 1 1.172.563l3.7 4.625a.5.5 0 0 1 .105.374l-.39 3.124A1.5 1.5 0 0 1 14.117 13H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .106-.374z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/inboxes-fill.svg b/vendor/twbs/bootstrap-icons/icons/inboxes-fill.svg
new file mode 100644
index 000000000..4d8c5f786
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/inboxes-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-inboxes-fill" viewBox="0 0 16 16">
+ <path d="M4.98 1a.5.5 0 0 0-.39.188L1.54 5H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0A.5.5 0 0 1 10 5h4.46l-3.05-3.812A.5.5 0 0 0 11.02 1zM3.81.563A1.5 1.5 0 0 1 4.98 0h6.04a1.5 1.5 0 0 1 1.17.563l3.7 4.625a.5.5 0 0 1 .106.374l-.39 3.124A1.5 1.5 0 0 1 14.117 10H1.883A1.5 1.5 0 0 1 .394 8.686l-.39-3.124a.5.5 0 0 1 .106-.374zM.125 11.17A.5.5 0 0 1 .5 11H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0 .5.5 0 0 1 .5-.5h5.5a.5.5 0 0 1 .496.562l-.39 3.124A1.5 1.5 0 0 1 14.117 16H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .121-.393z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/inboxes.svg b/vendor/twbs/bootstrap-icons/icons/inboxes.svg
new file mode 100644
index 000000000..1a074aca8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/inboxes.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-inboxes" viewBox="0 0 16 16">
+ <path d="M4.98 1a.5.5 0 0 0-.39.188L1.54 5H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0A.5.5 0 0 1 10 5h4.46l-3.05-3.812A.5.5 0 0 0 11.02 1zm9.954 5H10.45a2.5 2.5 0 0 1-4.9 0H1.066l.32 2.562A.5.5 0 0 0 1.884 9h12.234a.5.5 0 0 0 .496-.438zM3.809.563A1.5 1.5 0 0 1 4.981 0h6.038a1.5 1.5 0 0 1 1.172.563l3.7 4.625a.5.5 0 0 1 .105.374l-.39 3.124A1.5 1.5 0 0 1 14.117 10H1.883A1.5 1.5 0 0 1 .394 8.686l-.39-3.124a.5.5 0 0 1 .106-.374zM.125 11.17A.5.5 0 0 1 .5 11H6a.5.5 0 0 1 .5.5 1.5 1.5 0 0 0 3 0 .5.5 0 0 1 .5-.5h5.5a.5.5 0 0 1 .496.562l-.39 3.124A1.5 1.5 0 0 1 14.117 16H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .121-.393zm.941.83.32 2.562a.5.5 0 0 0 .497.438h12.234a.5.5 0 0 0 .496-.438l.32-2.562H10.45a2.5 2.5 0 0 1-4.9 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/incognito.svg b/vendor/twbs/bootstrap-icons/icons/incognito.svg
new file mode 100644
index 000000000..f2c8f9d2f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/incognito.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-incognito" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="m4.736 1.968-.892 3.269-.014.058C2.113 5.568 1 6.006 1 6.5 1 7.328 4.134 8 8 8s7-.672 7-1.5c0-.494-1.113-.932-2.83-1.205l-.014-.058-.892-3.27c-.146-.533-.698-.849-1.239-.734C9.411 1.363 8.62 1.5 8 1.5s-1.411-.136-2.025-.267c-.541-.115-1.093.2-1.239.735m.015 3.867a.25.25 0 0 1 .274-.224c.9.092 1.91.143 2.975.143a30 30 0 0 0 2.975-.143.25.25 0 0 1 .05.498c-.918.093-1.944.145-3.025.145s-2.107-.052-3.025-.145a.25.25 0 0 1-.224-.274M3.5 10h2a.5.5 0 0 1 .5.5v1a1.5 1.5 0 0 1-3 0v-1a.5.5 0 0 1 .5-.5m-1.5.5q.001-.264.085-.5H2a.5.5 0 0 1 0-1h3.5a1.5 1.5 0 0 1 1.488 1.312 3.5 3.5 0 0 1 2.024 0A1.5 1.5 0 0 1 10.5 9H14a.5.5 0 0 1 0 1h-.085q.084.236.085.5v1a2.5 2.5 0 0 1-5 0v-.14l-.21-.07a2.5 2.5 0 0 0-1.58 0l-.21.07v.14a2.5 2.5 0 0 1-5 0zm8.5-.5h2a.5.5 0 0 1 .5.5v1a1.5 1.5 0 0 1-3 0v-1a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/indent.svg b/vendor/twbs/bootstrap-icons/icons/indent.svg
new file mode 100644
index 000000000..0065aba80
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/indent.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-indent" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3 8a.5.5 0 0 1 .5-.5h6.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H3.5A.5.5 0 0 1 3 8"/>
+ <path fill-rule="evenodd" d="M12.5 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/infinity.svg b/vendor/twbs/bootstrap-icons/icons/infinity.svg
new file mode 100644
index 000000000..3dca19b22
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/infinity.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-infinity" viewBox="0 0 16 16">
+ <path d="M5.68 5.792 7.345 7.75 5.681 9.708a2.75 2.75 0 1 1 0-3.916ZM8 6.978 6.416 5.113l-.014-.015a3.75 3.75 0 1 0 0 5.304l.014-.015L8 8.522l1.584 1.865.014.015a3.75 3.75 0 1 0 0-5.304l-.014.015zm.656.772 1.663-1.958a2.75 2.75 0 1 1 0 3.916z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/info-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/info-circle-fill.svg
new file mode 100644
index 000000000..d2e382b59
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/info-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-info-circle-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/info-circle.svg b/vendor/twbs/bootstrap-icons/icons/info-circle.svg
new file mode 100644
index 000000000..e2b50eb5f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/info-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-info-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/info-lg.svg b/vendor/twbs/bootstrap-icons/icons/info-lg.svg
new file mode 100644
index 000000000..ac064b928
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/info-lg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-info-lg" viewBox="0 0 16 16">
+ <path d="m9.708 6.075-3.024.379-.108.502.595.108c.387.093.464.232.38.619l-.975 4.577c-.255 1.183.14 1.74 1.067 1.74.72 0 1.554-.332 1.933-.789l.116-.549c-.263.232-.65.325-.905.325-.363 0-.494-.255-.402-.704zm.091-2.755a1.32 1.32 0 1 1-2.64 0 1.32 1.32 0 0 1 2.64 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/info-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/info-square-fill.svg
new file mode 100644
index 000000000..49196b459
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/info-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-info-square-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8.93 4.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM8 5.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/info-square.svg b/vendor/twbs/bootstrap-icons/icons/info-square.svg
new file mode 100644
index 000000000..b64cfa8e9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/info-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-info-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/info.svg b/vendor/twbs/bootstrap-icons/icons/info.svg
new file mode 100644
index 000000000..43dc24248
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/info.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-info" viewBox="0 0 16 16">
+ <path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/input-cursor-text.svg b/vendor/twbs/bootstrap-icons/icons/input-cursor-text.svg
new file mode 100644
index 000000000..fc910f3b5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/input-cursor-text.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-input-cursor-text" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5 2a.5.5 0 0 1 .5-.5c.862 0 1.573.287 2.06.566.174.099.321.198.44.286.119-.088.266-.187.44-.286A4.17 4.17 0 0 1 10.5 1.5a.5.5 0 0 1 0 1c-.638 0-1.177.213-1.564.434a3.5 3.5 0 0 0-.436.294V7.5H9a.5.5 0 0 1 0 1h-.5v4.272c.1.08.248.187.436.294.387.221.926.434 1.564.434a.5.5 0 0 1 0 1 4.17 4.17 0 0 1-2.06-.566A5 5 0 0 1 8 13.65a5 5 0 0 1-.44.285 4.17 4.17 0 0 1-2.06.566.5.5 0 0 1 0-1c.638 0 1.177-.213 1.564-.434.188-.107.335-.214.436-.294V8.5H7a.5.5 0 0 1 0-1h.5V3.228a3.5 3.5 0 0 0-.436-.294A3.17 3.17 0 0 0 5.5 2.5.5.5 0 0 1 5 2"/>
+ <path d="M10 5h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4v1h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4zM6 5V4H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v-1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/input-cursor.svg b/vendor/twbs/bootstrap-icons/icons/input-cursor.svg
new file mode 100644
index 000000000..de6a35fb3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/input-cursor.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-input-cursor" viewBox="0 0 16 16">
+ <path d="M10 5h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4v1h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4zM6 5V4H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v-1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1z"/>
+ <path fill-rule="evenodd" d="M8 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13A.5.5 0 0 1 8 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/instagram.svg b/vendor/twbs/bootstrap-icons/icons/instagram.svg
new file mode 100644
index 000000000..855e65377
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/instagram.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-instagram" viewBox="0 0 16 16">
+ <path d="M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.9 3.9 0 0 0-1.417.923A3.9 3.9 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.9 3.9 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.9 3.9 0 0 0-.923-1.417A3.9 3.9 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599s.453.546.598.92c.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.5 2.5 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.5 2.5 0 0 1-.92-.598 2.5 2.5 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233s.008-2.388.046-3.231c.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92s.546-.453.92-.598c.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92m-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217m0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/intersect.svg b/vendor/twbs/bootstrap-icons/icons/intersect.svg
new file mode 100644
index 000000000..220141d53
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/intersect.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-intersect" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm5 10v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2v5a2 2 0 0 1-2 2zm6-8V2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2V6a2 2 0 0 1 2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-album.svg b/vendor/twbs/bootstrap-icons/icons/journal-album.svg
new file mode 100644
index 000000000..de49ccc1f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-album.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-album" viewBox="0 0 16 16">
+ <path d="M5.5 4a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5zm1 7a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-arrow-down.svg b/vendor/twbs/bootstrap-icons/icons/journal-arrow-down.svg
new file mode 100644
index 000000000..d922f3ccc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-arrow-down.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-arrow-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 5a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 9.293V5.5A.5.5 0 0 1 8 5"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-arrow-up.svg b/vendor/twbs/bootstrap-icons/icons/journal-arrow-up.svg
new file mode 100644
index 000000000..7edc40006
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-arrow-up.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-arrow-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 11a.5.5 0 0 0 .5-.5V6.707l1.146 1.147a.5.5 0 0 0 .708-.708l-2-2a.5.5 0 0 0-.708 0l-2 2a.5.5 0 1 0 .708.708L7.5 6.707V10.5a.5.5 0 0 0 .5.5"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-bookmark-fill.svg b/vendor/twbs/bootstrap-icons/icons/journal-bookmark-fill.svg
new file mode 100644
index 000000000..8e2f17a6f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-bookmark-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-bookmark-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 1h6v7a.5.5 0 0 1-.757.429L9 7.083 6.757 8.43A.5.5 0 0 1 6 8z"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-bookmark.svg b/vendor/twbs/bootstrap-icons/icons/journal-bookmark.svg
new file mode 100644
index 000000000..4a8f4bbd8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-bookmark.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-bookmark" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 8V1h1v6.117L8.743 6.07a.5.5 0 0 1 .514 0L11 7.117V1h1v7a.5.5 0 0 1-.757.429L9 7.083 6.757 8.43A.5.5 0 0 1 6 8"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-check.svg b/vendor/twbs/bootstrap-icons/icons/journal-check.svg
new file mode 100644
index 000000000..eb398b935
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-check.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-check" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.854 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 8.793l2.646-2.647a.5.5 0 0 1 .708 0"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-code.svg b/vendor/twbs/bootstrap-icons/icons/journal-code.svg
new file mode 100644
index 000000000..41430d26d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-code.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-code" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8.646 5.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 0 1 0-.708m-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 8l1.647-1.646a.5.5 0 0 0 0-.708"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-medical.svg b/vendor/twbs/bootstrap-icons/icons/journal-medical.svg
new file mode 100644
index 000000000..fb6d94240
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-medical.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-medical" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 4a.5.5 0 0 1 .5.5v.634l.549-.317a.5.5 0 1 1 .5.866L9 6l.549.317a.5.5 0 1 1-.5.866L8.5 6.866V7.5a.5.5 0 0 1-1 0v-.634l-.549.317a.5.5 0 1 1-.5-.866L7 6l-.549-.317a.5.5 0 0 1 .5-.866l.549.317V4.5A.5.5 0 0 1 8 4M5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-minus.svg b/vendor/twbs/bootstrap-icons/icons/journal-minus.svg
new file mode 100644
index 000000000..cbdfdd7fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-minus.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-minus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-plus.svg b/vendor/twbs/bootstrap-icons/icons/journal-plus.svg
new file mode 100644
index 000000000..5cb82c3fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-plus.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-plus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 5.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 .5-.5"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-richtext.svg b/vendor/twbs/bootstrap-icons/icons/journal-richtext.svg
new file mode 100644
index 000000000..db92c70b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-richtext.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-richtext" viewBox="0 0 16 16">
+ <path d="M7.5 3.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m-.861 1.542 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047L11 4.75V7a.5.5 0 0 1-.5.5h-5A.5.5 0 0 1 5 7v-.5s1.54-1.274 1.639-1.208M5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-text.svg b/vendor/twbs/bootstrap-icons/icons/journal-text.svg
new file mode 100644
index 000000000..13c58bc11
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-text.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-text" viewBox="0 0 16 16">
+ <path d="M5 10.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal-x.svg b/vendor/twbs/bootstrap-icons/icons/journal-x.svg
new file mode 100644
index 000000000..fb3ea9f56
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal-x.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-x" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.146 6.146a.5.5 0 0 1 .708 0L8 7.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 8l1.147 1.146a.5.5 0 0 1-.708.708L8 8.707 6.854 9.854a.5.5 0 0 1-.708-.708L7.293 8 6.146 6.854a.5.5 0 0 1 0-.708"/>
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journal.svg b/vendor/twbs/bootstrap-icons/icons/journal.svg
new file mode 100644
index 000000000..4c166e216
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journal.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal" viewBox="0 0 16 16">
+ <path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2"/>
+ <path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/journals.svg b/vendor/twbs/bootstrap-icons/icons/journals.svg
new file mode 100644
index 000000000..6e5386a9c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/journals.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journals" viewBox="0 0 16 16">
+ <path d="M5 0h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2 2 2 0 0 1-2 2H3a2 2 0 0 1-2-2h1a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1H1a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v9a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1H3a2 2 0 0 1 2-2"/>
+ <path d="M1 6v-.5a.5.5 0 0 1 1 0V6h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 3v-.5a.5.5 0 0 1 1 0V9h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1zm0 2.5v.5H.5a.5.5 0 0 0 0 1h2a.5.5 0 0 0 0-1H2v-.5a.5.5 0 0 0-1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/joystick.svg b/vendor/twbs/bootstrap-icons/icons/joystick.svg
new file mode 100644
index 000000000..909369e49
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/joystick.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-joystick" viewBox="0 0 16 16">
+ <path d="M10 2a2 2 0 0 1-1.5 1.937v5.087c.863.083 1.5.377 1.5.726 0 .414-.895.75-2 .75s-2-.336-2-.75c0-.35.637-.643 1.5-.726V3.937A2 2 0 1 1 10 2"/>
+ <path d="M0 9.665v1.717a1 1 0 0 0 .553.894l6.553 3.277a2 2 0 0 0 1.788 0l6.553-3.277a1 1 0 0 0 .553-.894V9.665c0-.1-.06-.19-.152-.23L9.5 6.715v.993l5.227 2.178a.125.125 0 0 1 .001.23l-5.94 2.546a2 2 0 0 1-1.576 0l-5.94-2.546a.125.125 0 0 1 .001-.23L6.5 7.708l-.013-.988L.152 9.435a.25.25 0 0 0-.152.23"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/justify-left.svg b/vendor/twbs/bootstrap-icons/icons/justify-left.svg
new file mode 100644
index 000000000..17b45e4df
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/justify-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-justify-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/justify-right.svg b/vendor/twbs/bootstrap-icons/icons/justify-right.svg
new file mode 100644
index 000000000..4d96c43fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/justify-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-justify-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/justify.svg b/vendor/twbs/bootstrap-icons/icons/justify.svg
new file mode 100644
index 000000000..3eedc742a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/justify.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-justify" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 12.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/kanban-fill.svg b/vendor/twbs/bootstrap-icons/icons/kanban-fill.svg
new file mode 100644
index 000000000..a8ed5bb59
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/kanban-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-kanban-fill" viewBox="0 0 16 16">
+ <path d="M2.5 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5 2h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1m-5 1a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1zm9-1h1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/kanban.svg b/vendor/twbs/bootstrap-icons/icons/kanban.svg
new file mode 100644
index 000000000..cd13b3272
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/kanban.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-kanban" viewBox="0 0 16 16">
+ <path d="M13.5 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm-11-1a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M6.5 3a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1zm-4 0a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1zm8 0a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/key-fill.svg b/vendor/twbs/bootstrap-icons/icons/key-fill.svg
new file mode 100644
index 000000000..fdab8d6e6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/key-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-key-fill" viewBox="0 0 16 16">
+ <path d="M3.5 11.5a3.5 3.5 0 1 1 3.163-5H14L15.5 8 14 9.5l-1-1-1 1-1-1-1 1-1-1-1 1H6.663a3.5 3.5 0 0 1-3.163 2M2.5 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/key.svg b/vendor/twbs/bootstrap-icons/icons/key.svg
new file mode 100644
index 000000000..b0d1e16d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/key.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-key" viewBox="0 0 16 16">
+ <path d="M0 8a4 4 0 0 1 7.465-2H14a.5.5 0 0 1 .354.146l1.5 1.5a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0L13 9.207l-.646.647a.5.5 0 0 1-.708 0L11 9.207l-.646.647a.5.5 0 0 1-.708 0L9 9.207l-.646.647A.5.5 0 0 1 8 10h-.535A4 4 0 0 1 0 8m4-3a3 3 0 1 0 2.712 4.285A.5.5 0 0 1 7.163 9h.63l.853-.854a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.793-.793-1-1h-6.63a.5.5 0 0 1-.451-.285A3 3 0 0 0 4 5"/>
+ <path d="M4 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/keyboard-fill.svg b/vendor/twbs/bootstrap-icons/icons/keyboard-fill.svg
new file mode 100644
index 000000000..b46ad2d5e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/keyboard-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-keyboard-fill" viewBox="0 0 16 16">
+ <path d="M0 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm13 .25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5a.25.25 0 0 0-.25.25M2.25 8a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 3 8.75v-.5A.25.25 0 0 0 2.75 8zM4 8.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 5 8.75v-.5A.25.25 0 0 0 4.75 8h-.5a.25.25 0 0 0-.25.25M6.25 8a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 7 8.75v-.5A.25.25 0 0 0 6.75 8zM8 8.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 9 8.75v-.5A.25.25 0 0 0 8.75 8h-.5a.25.25 0 0 0-.25.25M13.25 8a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zm0 2a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zm-3-2a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h1.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zm.75 2.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5a.25.25 0 0 0-.25.25M11.25 6a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25zM9 6.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5A.25.25 0 0 0 9.75 6h-.5a.25.25 0 0 0-.25.25M7.25 6a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 8 6.75v-.5A.25.25 0 0 0 7.75 6zM5 6.25v.5c0 .138.112.25.25.25h.5A.25.25 0 0 0 6 6.75v-.5A.25.25 0 0 0 5.75 6h-.5a.25.25 0 0 0-.25.25M2.25 6a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h1.5A.25.25 0 0 0 4 6.75v-.5A.25.25 0 0 0 3.75 6zM2 10.25v.5c0 .138.112.25.25.25h.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25h-.5a.25.25 0 0 0-.25.25M4.25 10a.25.25 0 0 0-.25.25v.5c0 .138.112.25.25.25h5.5a.25.25 0 0 0 .25-.25v-.5a.25.25 0 0 0-.25-.25z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/keyboard.svg b/vendor/twbs/bootstrap-icons/icons/keyboard.svg
new file mode 100644
index 000000000..8ba49b623
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/keyboard.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-keyboard" viewBox="0 0 16 16">
+ <path d="M14 5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zM2 4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z"/>
+ <path d="M13 10.25a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm0-2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm-5 0A.25.25 0 0 1 8.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 8 8.75zm2 0a.25.25 0 0 1 .25-.25h1.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-1.5a.25.25 0 0 1-.25-.25zm1 2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm-5-2A.25.25 0 0 1 6.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 6 8.75zm-2 0A.25.25 0 0 1 4.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 4 8.75zm-2 0A.25.25 0 0 1 2.25 8h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 2 8.75zm11-2a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm-2 0a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm-2 0A.25.25 0 0 1 9.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 9 6.75zm-2 0A.25.25 0 0 1 7.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 7 6.75zm-2 0A.25.25 0 0 1 5.25 6h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5A.25.25 0 0 1 5 6.75zm-3 0A.25.25 0 0 1 2.25 6h1.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-1.5A.25.25 0 0 1 2 6.75zm0 4a.25.25 0 0 1 .25-.25h.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-.5a.25.25 0 0 1-.25-.25zm2 0a.25.25 0 0 1 .25-.25h5.5a.25.25 0 0 1 .25.25v.5a.25.25 0 0 1-.25.25h-5.5a.25.25 0 0 1-.25-.25z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ladder.svg b/vendor/twbs/bootstrap-icons/icons/ladder.svg
new file mode 100644
index 000000000..7c6864f7d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ladder.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ladder" viewBox="0 0 16 16">
+ <path d="M4.5 1a.5.5 0 0 1 .5.5V2h6v-.5a.5.5 0 0 1 1 0v14a.5.5 0 0 1-1 0V15H5v.5a.5.5 0 0 1-1 0v-14a.5.5 0 0 1 .5-.5M5 14h6v-2H5zm0-3h6V9H5zm0-3h6V6H5zm0-3h6V3H5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lamp-fill.svg b/vendor/twbs/bootstrap-icons/icons/lamp-fill.svg
new file mode 100644
index 000000000..836b0db7d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lamp-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lamp-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5.04.303A.5.5 0 0 1 5.5 0h5c.2 0 .38.12.46.303l3 7a.5.5 0 0 1-.363.687h-.002q-.225.044-.45.081a33 33 0 0 1-4.645.425V13.5a.5.5 0 1 1-1 0V8.495a33 33 0 0 1-4.645-.425q-.225-.036-.45-.08h-.003a.5.5 0 0 1-.362-.688l3-7Z"/>
+ <path d="M6.493 12.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.3 1.3 0 0 0-.37.265.3.3 0 0 0-.052.075l-.001.004-.004.01V14l.002.008.016.033a.6.6 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.6.6 0 0 0 .146-.15l.015-.033L12 14v-.004a.3.3 0 0 0-.057-.09 1.3 1.3 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465s-2.462-.172-3.34-.465c-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lamp.svg b/vendor/twbs/bootstrap-icons/icons/lamp.svg
new file mode 100644
index 000000000..b3fa1d68a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lamp.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lamp" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5.04.303A.5.5 0 0 1 5.5 0h5c.2 0 .38.12.46.303l3 7a.5.5 0 0 1-.363.687h-.002q-.225.044-.45.081a33 33 0 0 1-4.645.425V13.5a.5.5 0 1 1-1 0V8.495a33 33 0 0 1-4.645-.425q-.225-.036-.45-.08h-.003a.5.5 0 0 1-.362-.688l3-7ZM3.21 7.116A31 31 0 0 0 8 7.5a31 31 0 0 0 4.791-.384L10.171 1H5.83z"/>
+ <path d="M6.493 12.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.3 1.3 0 0 0-.37.265.3.3 0 0 0-.052.075l-.001.004-.004.01V14l.002.008.016.033a.6.6 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.6.6 0 0 0 .146-.15l.015-.033L12 14v-.004a.3.3 0 0 0-.057-.09 1.3 1.3 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465s-2.462-.172-3.34-.465c-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/laptop-fill.svg b/vendor/twbs/bootstrap-icons/icons/laptop-fill.svg
new file mode 100644
index 000000000..31e588032
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/laptop-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-laptop-fill" viewBox="0 0 16 16">
+ <path d="M2.5 2A1.5 1.5 0 0 0 1 3.5V12h14V3.5A1.5 1.5 0 0 0 13.5 2zM0 12.5h16a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/laptop.svg b/vendor/twbs/bootstrap-icons/icons/laptop.svg
new file mode 100644
index 000000000..8e71020cd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/laptop.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-laptop" viewBox="0 0 16 16">
+ <path d="M13.5 3a.5.5 0 0 1 .5.5V11H2V3.5a.5.5 0 0 1 .5-.5zm-11-1A1.5 1.5 0 0 0 1 3.5V12h14V3.5A1.5 1.5 0 0 0 13.5 2zM0 12.5h16a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layer-backward.svg b/vendor/twbs/bootstrap-icons/icons/layer-backward.svg
new file mode 100644
index 000000000..ed43c708a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layer-backward.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layer-backward" viewBox="0 0 16 16">
+ <path d="M8.354 15.854a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 0-.708l1-1a.5.5 0 0 1 .708 0l.646.647V4H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H9v7.793l.646-.647a.5.5 0 0 1 .708 0l1 1a.5.5 0 0 1 0 .708z"/>
+ <path d="M1 9a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h4.5a.5.5 0 0 1 0 1H1v2h4.5a.5.5 0 0 1 0 1zm9.5 0a.5.5 0 0 1 0-1H15V6h-4.5a.5.5 0 0 1 0-1H15a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layer-forward.svg b/vendor/twbs/bootstrap-icons/icons/layer-forward.svg
new file mode 100644
index 000000000..d0a4abfa1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layer-forward.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layer-forward" viewBox="0 0 16 16">
+ <path d="M8.354.146a.5.5 0 0 0-.708 0l-3 3a.5.5 0 0 0 0 .708l1 1a.5.5 0 0 0 .708 0L7 4.207V12H1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1H9V4.207l.646.647a.5.5 0 0 0 .708 0l1-1a.5.5 0 0 0 0-.708z"/>
+ <path d="M1 7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h4.5a.5.5 0 0 0 0-1H1V8h4.5a.5.5 0 0 0 0-1zm9.5 0a.5.5 0 0 0 0 1H15v2h-4.5a.5.5 0 0 0 0 1H15a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layers-fill.svg b/vendor/twbs/bootstrap-icons/icons/layers-fill.svg
new file mode 100644
index 000000000..3b6cdf642
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layers-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layers-fill" viewBox="0 0 16 16">
+ <path d="M7.765 1.559a.5.5 0 0 1 .47 0l7.5 4a.5.5 0 0 1 0 .882l-7.5 4a.5.5 0 0 1-.47 0l-7.5-4a.5.5 0 0 1 0-.882z"/>
+ <path d="m2.125 8.567-1.86.992a.5.5 0 0 0 0 .882l7.5 4a.5.5 0 0 0 .47 0l7.5-4a.5.5 0 0 0 0-.882l-1.86-.992-5.17 2.756a1.5 1.5 0 0 1-1.41 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layers-half.svg b/vendor/twbs/bootstrap-icons/icons/layers-half.svg
new file mode 100644
index 000000000..8ceaaad8c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layers-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layers-half" viewBox="0 0 16 16">
+ <path d="M8.235 1.559a.5.5 0 0 0-.47 0l-7.5 4a.5.5 0 0 0 0 .882L3.188 8 .264 9.559a.5.5 0 0 0 0 .882l7.5 4a.5.5 0 0 0 .47 0l7.5-4a.5.5 0 0 0 0-.882L12.813 8l2.922-1.559a.5.5 0 0 0 0-.882zM8 9.433 1.562 6 8 2.567 14.438 6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layers.svg b/vendor/twbs/bootstrap-icons/icons/layers.svg
new file mode 100644
index 000000000..52dbe792f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layers.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layers" viewBox="0 0 16 16">
+ <path d="M8.235 1.559a.5.5 0 0 0-.47 0l-7.5 4a.5.5 0 0 0 0 .882L3.188 8 .264 9.559a.5.5 0 0 0 0 .882l7.5 4a.5.5 0 0 0 .47 0l7.5-4a.5.5 0 0 0 0-.882L12.813 8l2.922-1.559a.5.5 0 0 0 0-.882zm3.515 7.008L14.438 10 8 13.433 1.562 10 4.25 8.567l3.515 1.874a.5.5 0 0 0 .47 0zM8 9.433 1.562 6 8 2.567 14.438 6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layout-sidebar-inset-reverse.svg b/vendor/twbs/bootstrap-icons/icons/layout-sidebar-inset-reverse.svg
new file mode 100644
index 000000000..0d8dc7fde
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layout-sidebar-inset-reverse.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layout-sidebar-inset-reverse" viewBox="0 0 16 16">
+ <path d="M2 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm12-1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2z"/>
+ <path d="M13 4a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layout-sidebar-inset.svg b/vendor/twbs/bootstrap-icons/icons/layout-sidebar-inset.svg
new file mode 100644
index 000000000..cc19c86b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layout-sidebar-inset.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layout-sidebar-inset" viewBox="0 0 16 16">
+ <path d="M14 2a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zM2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2z"/>
+ <path d="M3 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layout-sidebar-reverse.svg b/vendor/twbs/bootstrap-icons/icons/layout-sidebar-reverse.svg
new file mode 100644
index 000000000..7c03f730e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layout-sidebar-reverse.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layout-sidebar-reverse" viewBox="0 0 16 16">
+ <path d="M16 3a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zm-5-1v12H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zm1 0h2a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layout-sidebar.svg b/vendor/twbs/bootstrap-icons/icons/layout-sidebar.svg
new file mode 100644
index 000000000..ff4085859
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layout-sidebar.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layout-sidebar" viewBox="0 0 16 16">
+ <path d="M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5-1v12h9a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zM4 2H2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layout-split.svg b/vendor/twbs/bootstrap-icons/icons/layout-split.svg
new file mode 100644
index 000000000..4805b25b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layout-split.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layout-split" viewBox="0 0 16 16">
+ <path d="M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8.5-1v12H14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm-1 0H2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layout-text-sidebar-reverse.svg b/vendor/twbs/bootstrap-icons/icons/layout-text-sidebar-reverse.svg
new file mode 100644
index 000000000..917928531
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layout-text-sidebar-reverse.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layout-text-sidebar-reverse" viewBox="0 0 16 16">
+ <path d="M12.5 3a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1zm0 3a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1zm.5 3.5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 .5-.5m-.5 2.5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1z"/>
+ <path d="M16 2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zM4 1v14H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm1 0h9a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layout-text-sidebar.svg b/vendor/twbs/bootstrap-icons/icons/layout-text-sidebar.svg
new file mode 100644
index 000000000..6d89f67dc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layout-text-sidebar.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layout-text-sidebar" viewBox="0 0 16 16">
+ <path d="M3.5 3a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zM3 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m.5 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm12-1v14h2a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 0H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h9z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layout-text-window-reverse.svg b/vendor/twbs/bootstrap-icons/icons/layout-text-window-reverse.svg
new file mode 100644
index 000000000..8258ad328
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layout-text-window-reverse.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layout-text-window-reverse" viewBox="0 0 16 16">
+ <path d="M13 6.5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 .5-.5m0 3a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 .5-.5m-.5 2.5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1z"/>
+ <path d="M14 0a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zM2 1a1 1 0 0 0-1 1v1h14V2a1 1 0 0 0-1-1zM1 4v10a1 1 0 0 0 1 1h2V4zm4 0v11h9a1 1 0 0 0 1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layout-text-window.svg b/vendor/twbs/bootstrap-icons/icons/layout-text-window.svg
new file mode 100644
index 000000000..4d27cf908
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layout-text-window.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layout-text-window" viewBox="0 0 16 16">
+ <path d="M3 6.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 3a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m.5 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/>
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v1H1V2a1 1 0 0 1 1-1zm1 3v10a1 1 0 0 1-1 1h-2V4zm-4 0v11H2a1 1 0 0 1-1-1V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layout-three-columns.svg b/vendor/twbs/bootstrap-icons/icons/layout-three-columns.svg
new file mode 100644
index 000000000..7117f074f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layout-three-columns.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layout-three-columns" viewBox="0 0 16 16">
+ <path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5zM1.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5H5V1zM10 15V1H6v14zm1 0h3.5a.5.5 0 0 0 .5-.5v-13a.5.5 0 0 0-.5-.5H11z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/layout-wtf.svg b/vendor/twbs/bootstrap-icons/icons/layout-wtf.svg
new file mode 100644
index 000000000..fd8f5a1fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/layout-wtf.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layout-wtf" viewBox="0 0 16 16">
+ <path d="M5 1v8H1V1zM1 0a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm13 2v5H9V2zM9 1a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM5 13v2H3v-2zm-2-1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1zm12-1v2H9v-2zm-6-1a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/life-preserver.svg b/vendor/twbs/bootstrap-icons/icons/life-preserver.svg
new file mode 100644
index 000000000..7282baa2a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/life-preserver.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-life-preserver" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m6.43-5.228a7.03 7.03 0 0 1-3.658 3.658l-1.115-2.788a4 4 0 0 0 1.985-1.985zM5.228 14.43a7.03 7.03 0 0 1-3.658-3.658l2.788-1.115a4 4 0 0 0 1.985 1.985zm9.202-9.202-2.788 1.115a4 4 0 0 0-1.985-1.985l1.115-2.788a7.03 7.03 0 0 1 3.658 3.658m-8.087-.87a4 4 0 0 0-1.985 1.985L1.57 5.228A7.03 7.03 0 0 1 5.228 1.57zM8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lightbulb-fill.svg b/vendor/twbs/bootstrap-icons/icons/lightbulb-fill.svg
new file mode 100644
index 000000000..0ef90ea6b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lightbulb-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lightbulb-fill" viewBox="0 0 16 16">
+ <path d="M2 6a6 6 0 1 1 10.174 4.31c-.203.196-.359.4-.453.619l-.762 1.769A.5.5 0 0 1 10.5 13h-5a.5.5 0 0 1-.46-.302l-.761-1.77a2 2 0 0 0-.453-.618A5.98 5.98 0 0 1 2 6m3 8.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lightbulb-off-fill.svg b/vendor/twbs/bootstrap-icons/icons/lightbulb-off-fill.svg
new file mode 100644
index 000000000..e533739e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lightbulb-off-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lightbulb-off-fill" viewBox="0 0 16 16">
+ <path d="M2 6c0-.572.08-1.125.23-1.65l8.558 8.559A.5.5 0 0 1 10.5 13h-5a.5.5 0 0 1-.46-.302l-.761-1.77a2 2 0 0 0-.453-.618A5.98 5.98 0 0 1 2 6m10.303 4.181L3.818 1.697a6 6 0 0 1 8.484 8.484zM5 14.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1-.5-.5M2.354 1.646a.5.5 0 1 0-.708.708l12 12a.5.5 0 0 0 .708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lightbulb-off.svg b/vendor/twbs/bootstrap-icons/icons/lightbulb-off.svg
new file mode 100644
index 000000000..15e8200af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lightbulb-off.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lightbulb-off" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2.23 4.35A6 6 0 0 0 2 6c0 1.691.7 3.22 1.826 4.31.203.196.359.4.453.619l.762 1.769A.5.5 0 0 0 5.5 13a.5.5 0 0 0 0 1 .5.5 0 0 0 0 1l.224.447a1 1 0 0 0 .894.553h2.764a1 1 0 0 0 .894-.553L10.5 15a.5.5 0 0 0 0-1 .5.5 0 0 0 0-1 .5.5 0 0 0 .288-.091L9.878 12H5.83l-.632-1.467a3 3 0 0 0-.676-.941 4.98 4.98 0 0 1-1.455-4.405zm1.588-2.653.708.707a5 5 0 0 1 7.07 7.07l.707.707a6 6 0 0 0-8.484-8.484zm-2.172-.051a.5.5 0 0 1 .708 0l12 12a.5.5 0 0 1-.708.708l-12-12a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lightbulb.svg b/vendor/twbs/bootstrap-icons/icons/lightbulb.svg
new file mode 100644
index 000000000..67bf5bd8a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lightbulb.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lightbulb" viewBox="0 0 16 16">
+ <path d="M2 6a6 6 0 1 1 10.174 4.31c-.203.196-.359.4-.453.619l-.762 1.769A.5.5 0 0 1 10.5 13a.5.5 0 0 1 0 1 .5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1 0-1 .5.5 0 0 1 0-1 .5.5 0 0 1-.46-.302l-.761-1.77a2 2 0 0 0-.453-.618A5.98 5.98 0 0 1 2 6m6-5a5 5 0 0 0-3.479 8.592c.263.254.514.564.676.941L5.83 12h4.342l.632-1.467c.162-.377.413-.687.676-.941A5 5 0 0 0 8 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lightning-charge-fill.svg b/vendor/twbs/bootstrap-icons/icons/lightning-charge-fill.svg
new file mode 100644
index 000000000..5e197fb54
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lightning-charge-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lightning-charge-fill" viewBox="0 0 16 16">
+ <path d="M11.251.068a.5.5 0 0 1 .227.58L9.677 6.5H13a.5.5 0 0 1 .364.843l-8 8.5a.5.5 0 0 1-.842-.49L6.323 9.5H3a.5.5 0 0 1-.364-.843l8-8.5a.5.5 0 0 1 .615-.09z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lightning-charge.svg b/vendor/twbs/bootstrap-icons/icons/lightning-charge.svg
new file mode 100644
index 000000000..5352e723f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lightning-charge.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lightning-charge" viewBox="0 0 16 16">
+ <path d="M11.251.068a.5.5 0 0 1 .227.58L9.677 6.5H13a.5.5 0 0 1 .364.843l-8 8.5a.5.5 0 0 1-.842-.49L6.323 9.5H3a.5.5 0 0 1-.364-.843l8-8.5a.5.5 0 0 1 .615-.09zM4.157 8.5H7a.5.5 0 0 1 .478.647L6.11 13.59l5.732-6.09H9a.5.5 0 0 1-.478-.647L9.89 2.41z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lightning-fill.svg b/vendor/twbs/bootstrap-icons/icons/lightning-fill.svg
new file mode 100644
index 000000000..b98af6864
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lightning-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lightning-fill" viewBox="0 0 16 16">
+ <path d="M5.52.359A.5.5 0 0 1 6 0h4a.5.5 0 0 1 .474.658L8.694 6H12.5a.5.5 0 0 1 .395.807l-7 9a.5.5 0 0 1-.873-.454L6.823 9.5H3.5a.5.5 0 0 1-.48-.641z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lightning.svg b/vendor/twbs/bootstrap-icons/icons/lightning.svg
new file mode 100644
index 000000000..d2faa0fbf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lightning.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lightning" viewBox="0 0 16 16">
+ <path d="M5.52.359A.5.5 0 0 1 6 0h4a.5.5 0 0 1 .474.658L8.694 6H12.5a.5.5 0 0 1 .395.807l-7 9a.5.5 0 0 1-.873-.454L6.823 9.5H3.5a.5.5 0 0 1-.48-.641zM6.374 1 4.168 8.5H7.5a.5.5 0 0 1 .478.647L6.78 13.04 11.478 7H8a.5.5 0 0 1-.474-.658L9.306 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/line.svg b/vendor/twbs/bootstrap-icons/icons/line.svg
new file mode 100644
index 000000000..3e4bfd3b8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/line.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-line" viewBox="0 0 16 16">
+ <path d="M8 0c4.411 0 8 2.912 8 6.492 0 1.433-.555 2.723-1.715 3.994-1.678 1.932-5.431 4.285-6.285 4.645-.83.35-.734-.197-.696-.413l.003-.018.114-.685c.027-.204.055-.521-.026-.723-.09-.223-.444-.339-.704-.395C2.846 12.39 0 9.701 0 6.492 0 2.912 3.59 0 8 0M5.022 7.686H3.497V4.918a.156.156 0 0 0-.155-.156H2.78a.156.156 0 0 0-.156.156v3.486c0 .041.017.08.044.107v.001l.002.002.002.002a.15.15 0 0 0 .108.043h2.242c.086 0 .155-.07.155-.156v-.56a.156.156 0 0 0-.155-.157m.791-2.924a.156.156 0 0 0-.156.156v3.486c0 .086.07.155.156.155h.562c.086 0 .155-.07.155-.155V4.918a.156.156 0 0 0-.155-.156zm3.863 0a.156.156 0 0 0-.156.156v2.07L7.923 4.832l-.013-.015v-.001l-.01-.01-.003-.003-.011-.009h-.001L7.88 4.79l-.003-.002-.005-.003-.008-.005h-.002l-.003-.002-.01-.004-.004-.002-.01-.003h-.002l-.003-.001-.009-.002h-.006l-.003-.001h-.004l-.002-.001h-.574a.156.156 0 0 0-.156.155v3.486c0 .086.07.155.156.155h.56c.087 0 .157-.07.157-.155v-2.07l1.6 2.16a.2.2 0 0 0 .039.038l.001.001.01.006.004.002.008.004.007.003.005.002.01.003h.003a.2.2 0 0 0 .04.006h.56c.087 0 .157-.07.157-.155V4.918a.156.156 0 0 0-.156-.156zm3.815.717v-.56a.156.156 0 0 0-.155-.157h-2.242a.16.16 0 0 0-.108.044h-.001l-.001.002-.002.003a.16.16 0 0 0-.044.107v3.486c0 .041.017.08.044.107l.002.003.002.002a.16.16 0 0 0 .108.043h2.242c.086 0 .155-.07.155-.156v-.56a.156.156 0 0 0-.155-.157H11.81v-.589h1.525c.086 0 .155-.07.155-.156v-.56a.156.156 0 0 0-.155-.157H11.81v-.589h1.525c.086 0 .155-.07.155-.156Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/link-45deg.svg b/vendor/twbs/bootstrap-icons/icons/link-45deg.svg
new file mode 100644
index 000000000..abdc8cb88
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/link-45deg.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-link-45deg" viewBox="0 0 16 16">
+ <path d="M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1 1 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4 4 0 0 1-.128-1.287z"/>
+ <path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/link.svg b/vendor/twbs/bootstrap-icons/icons/link.svg
new file mode 100644
index 000000000..823e4cd69
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/link.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-link" viewBox="0 0 16 16">
+ <path d="M6.354 5.5H4a3 3 0 0 0 0 6h3a3 3 0 0 0 2.83-4H9q-.13 0-.25.031A2 2 0 0 1 7 10.5H4a2 2 0 1 1 0-4h1.535c.218-.376.495-.714.82-1z"/>
+ <path d="M9 5.5a3 3 0 0 0-2.83 4h1.098A2 2 0 0 1 9 6.5h3a2 2 0 1 1 0 4h-1.535a4 4 0 0 1-.82 1H12a3 3 0 1 0 0-6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/linkedin.svg b/vendor/twbs/bootstrap-icons/icons/linkedin.svg
new file mode 100644
index 000000000..30fc0e34c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/linkedin.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-linkedin" viewBox="0 0 16 16">
+ <path d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854zm4.943 12.248V6.169H2.542v7.225zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248S2.4 3.226 2.4 3.934c0 .694.521 1.248 1.327 1.248zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016l.016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/list-check.svg b/vendor/twbs/bootstrap-icons/icons/list-check.svg
new file mode 100644
index 000000000..e1db37747
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/list-check.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-check" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3.854 2.146a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 3.293l1.146-1.147a.5.5 0 0 1 .708 0m0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 7.293l1.146-1.147a.5.5 0 0 1 .708 0m0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 0 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/list-columns-reverse.svg b/vendor/twbs/bootstrap-icons/icons/list-columns-reverse.svg
new file mode 100644
index 000000000..f5e2876f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/list-columns-reverse.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-columns-reverse" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 .5A.5.5 0 0 1 .5 0h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 .5m4 0a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1h-10A.5.5 0 0 1 4 .5m-4 2A.5.5 0 0 1 .5 2h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-4 2A.5.5 0 0 1 .5 4h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m-4 2A.5.5 0 0 1 .5 6h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5m-4 2A.5.5 0 0 1 .5 8h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5m-4 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1h-10a.5.5 0 0 1-.5-.5m-4 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m-4 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/list-columns.svg b/vendor/twbs/bootstrap-icons/icons/list-columns.svg
new file mode 100644
index 000000000..07d0b1a15
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/list-columns.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-columns" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 .5A.5.5 0 0 1 .5 0h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 0 .5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 2h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 4h10a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 6h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 8h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/list-nested.svg b/vendor/twbs/bootstrap-icons/icons/list-nested.svg
new file mode 100644
index 000000000..26607c912
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/list-nested.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-nested" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5m-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5m-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/list-ol.svg b/vendor/twbs/bootstrap-icons/icons/list-ol.svg
new file mode 100644
index 000000000..d111f7301
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/list-ol.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-ol" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/>
+ <path d="M1.713 11.865v-.474H2c.217 0 .363-.137.363-.317 0-.185-.158-.31-.361-.31-.223 0-.367.152-.373.31h-.59c.016-.467.373-.787.986-.787.588-.002.954.291.957.703a.595.595 0 0 1-.492.594v.033a.615.615 0 0 1 .569.631c.003.533-.502.8-1.051.8-.656 0-1-.37-1.008-.794h.582c.008.178.186.306.422.309.254 0 .424-.145.422-.35-.002-.195-.155-.348-.414-.348h-.3zm-.004-4.699h-.604v-.035c0-.408.295-.844.958-.844.583 0 .96.326.96.756 0 .389-.257.617-.476.848l-.537.572v.03h1.054V9H1.143v-.395l.957-.99c.138-.142.293-.304.293-.508 0-.18-.147-.32-.342-.32a.33.33 0 0 0-.342.338zM2.564 5h-.635V2.924h-.031l-.598.42v-.567l.629-.443h.635z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/list-stars.svg b/vendor/twbs/bootstrap-icons/icons/list-stars.svg
new file mode 100644
index 000000000..c520bdf00
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/list-stars.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-stars" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5"/>
+ <path d="M2.242 2.194a.27.27 0 0 1 .516 0l.162.53c.035.115.14.194.258.194h.551c.259 0 .37.333.164.493l-.468.363a.28.28 0 0 0-.094.3l.173.569c.078.256-.213.462-.423.3l-.417-.324a.27.27 0 0 0-.328 0l-.417.323c-.21.163-.5-.043-.423-.299l.173-.57a.28.28 0 0 0-.094-.299l-.468-.363c-.206-.16-.095-.493.164-.493h.55a.27.27 0 0 0 .259-.194zm0 4a.27.27 0 0 1 .516 0l.162.53c.035.115.14.194.258.194h.551c.259 0 .37.333.164.493l-.468.363a.28.28 0 0 0-.094.3l.173.569c.078.255-.213.462-.423.3l-.417-.324a.27.27 0 0 0-.328 0l-.417.323c-.21.163-.5-.043-.423-.299l.173-.57a.28.28 0 0 0-.094-.299l-.468-.363c-.206-.16-.095-.493.164-.493h.55a.27.27 0 0 0 .259-.194zm0 4a.27.27 0 0 1 .516 0l.162.53c.035.115.14.194.258.194h.551c.259 0 .37.333.164.493l-.468.363a.28.28 0 0 0-.094.3l.173.569c.078.255-.213.462-.423.3l-.417-.324a.27.27 0 0 0-.328 0l-.417.323c-.21.163-.5-.043-.423-.299l.173-.57a.28.28 0 0 0-.094-.299l-.468-.363c-.206-.16-.095-.493.164-.493h.55a.27.27 0 0 0 .259-.194z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/list-task.svg b/vendor/twbs/bootstrap-icons/icons/list-task.svg
new file mode 100644
index 000000000..3905d7a66
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/list-task.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-task" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 2.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5zM3 3H2v1h1z"/>
+ <path d="M5 3.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M5.5 7a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1zm0 4a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1z"/>
+ <path fill-rule="evenodd" d="M1.5 7a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5zM2 7h1v1H2zm0 3.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm1 .5H2v1h1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/list-ul.svg b/vendor/twbs/bootstrap-icons/icons/list-ul.svg
new file mode 100644
index 000000000..f1cc202ca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/list-ul.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-ul" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2m0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2m0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/list.svg b/vendor/twbs/bootstrap-icons/icons/list.svg
new file mode 100644
index 000000000..de5885824
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/list.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lock-fill.svg b/vendor/twbs/bootstrap-icons/icons/lock-fill.svg
new file mode 100644
index 000000000..69646f6b6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lock-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lock-fill" viewBox="0 0 16 16">
+ <path d="M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2m3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lock.svg b/vendor/twbs/bootstrap-icons/icons/lock.svg
new file mode 100644
index 000000000..9c730b792
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lock.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lock" viewBox="0 0 16 16">
+ <path d="M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2m3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2M5 8h6a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/luggage-fill.svg b/vendor/twbs/bootstrap-icons/icons/luggage-fill.svg
new file mode 100644
index 000000000..eb7378fda
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/luggage-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-luggage-fill" viewBox="0 0 16 16">
+ <path d="M2 1.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5V5h.5A1.5 1.5 0 0 1 8 6.5V7H7v-.5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5H4v1H2.5v.25a.75.75 0 0 1-1.5 0v-.335A1.5 1.5 0 0 1 0 13.5v-7A1.5 1.5 0 0 1 1.5 5H2zM3 5h2V2H3z"/>
+ <path d="M2.5 7a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-1 0v-5a.5.5 0 0 1 .5-.5m10 1v-.5A1.5 1.5 0 0 0 11 6h-1a1.5 1.5 0 0 0-1.5 1.5V8H8v8h5V8zM10 7h1a.5.5 0 0 1 .5.5V8h-2v-.5A.5.5 0 0 1 10 7M5 9.5A1.5 1.5 0 0 1 6.5 8H7v8h-.5A1.5 1.5 0 0 1 5 14.5zm9 6.5V8h.5A1.5 1.5 0 0 1 16 9.5v5a1.5 1.5 0 0 1-1.5 1.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/luggage.svg b/vendor/twbs/bootstrap-icons/icons/luggage.svg
new file mode 100644
index 000000000..ad037babb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/luggage.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-luggage" viewBox="0 0 16 16">
+ <path d="M2.5 1a.5.5 0 0 0-.5.5V5h-.5A1.5 1.5 0 0 0 0 6.5v7a1.5 1.5 0 0 0 1 1.415v.335a.75.75 0 0 0 1.5 0V15H4v-1H1.5a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5V7h1v-.5A1.5 1.5 0 0 0 6.5 5H6V1.5a.5.5 0 0 0-.5-.5zM5 5H3V2h2z"/>
+ <path d="M3 7.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0zM11 6a1.5 1.5 0 0 1 1.5 1.5V8h2A1.5 1.5 0 0 1 16 9.5v5a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 5 14.5v-5A1.5 1.5 0 0 1 6.5 8h2v-.5A1.5 1.5 0 0 1 10 6zM9.5 7.5V8h2v-.5A.5.5 0 0 0 11 7h-1a.5.5 0 0 0-.5.5M6 9.5v5a.5.5 0 0 0 .5.5H7V9h-.5a.5.5 0 0 0-.5.5m7 5.5V9H8v6zm1.5 0a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5H14v6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lungs-fill.svg b/vendor/twbs/bootstrap-icons/icons/lungs-fill.svg
new file mode 100644
index 000000000..2880fa667
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lungs-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lungs-fill" viewBox="0 0 16 16">
+ <path d="M8 1a.5.5 0 0 1 .5.5v5.243L9 7.1V4.72C9 3.77 9.77 3 10.72 3c.524 0 1.023.27 1.443.592.431.332.847.773 1.216 1.229.736.908 1.347 1.946 1.58 2.48.176.405.393 1.16.556 2.011.165.857.283 1.857.24 2.759-.04.867-.232 1.79-.837 2.33-.67.6-1.622.556-2.741-.004l-1.795-.897A2.5 2.5 0 0 1 9 11.264V8.329l-1-.715-1 .715V7.214c-.1 0-.202.03-.29.093l-2.5 1.786a.5.5 0 1 0 .58.814L7 8.329v2.935A2.5 2.5 0 0 1 5.618 13.5l-1.795.897c-1.12.56-2.07.603-2.741.004-.605-.54-.798-1.463-.838-2.33-.042-.902.076-1.902.24-2.759.164-.852.38-1.606.558-2.012.232-.533.843-1.571 1.579-2.479.37-.456.785-.897 1.216-1.229C4.257 3.27 4.756 3 5.28 3 6.23 3 7 3.77 7 4.72V7.1l.5-.357V1.5A.5.5 0 0 1 8 1m3.21 8.907a.5.5 0 1 0 .58-.814l-2.5-1.786A.5.5 0 0 0 9 7.214V8.33z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/lungs.svg b/vendor/twbs/bootstrap-icons/icons/lungs.svg
new file mode 100644
index 000000000..082e7de56
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/lungs.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lungs" viewBox="0 0 16 16">
+ <path d="M8.5 1.5a.5.5 0 1 0-1 0v5.243L7 7.1V4.72C7 3.77 6.23 3 5.28 3c-.524 0-1.023.27-1.443.592-.431.332-.847.773-1.216 1.229-.736.908-1.347 1.946-1.58 2.48-.176.405-.393 1.16-.556 2.011-.165.857-.283 1.857-.241 2.759.04.867.233 1.79.838 2.33.67.6 1.622.556 2.741-.004l1.795-.897A2.5 2.5 0 0 0 7 11.264V10.5a.5.5 0 0 0-1 0v.764a1.5 1.5 0 0 1-.83 1.342l-1.794.897c-.978.489-1.415.343-1.628.152-.28-.25-.467-.801-.505-1.63-.037-.795.068-1.71.224-2.525.157-.82.357-1.491.491-1.8.19-.438.75-1.4 1.44-2.25.342-.422.703-.799 1.049-1.065.358-.276.639-.385.833-.385a.72.72 0 0 1 .72.72v3.094l-1.79 1.28a.5.5 0 0 0 .58.813L8 7.614l3.21 2.293a.5.5 0 1 0 .58-.814L10 7.814V4.72a.72.72 0 0 1 .72-.72c.194 0 .475.11.833.385.346.266.706.643 1.05 1.066.688.85 1.248 1.811 1.439 2.249.134.309.334.98.491 1.8.156.814.26 1.73.224 2.525-.038.829-.224 1.38-.505 1.63-.213.19-.65.337-1.628-.152l-1.795-.897A1.5 1.5 0 0 1 10 11.264V10.5a.5.5 0 0 0-1 0v.764a2.5 2.5 0 0 0 1.382 2.236l1.795.897c1.12.56 2.07.603 2.741.004.605-.54.798-1.463.838-2.33.042-.902-.076-1.902-.24-2.759-.164-.852-.38-1.606-.558-2.012-.232-.533-.843-1.571-1.579-2.479-.37-.456-.785-.897-1.216-1.229C11.743 3.27 11.244 3 10.72 3 9.77 3 9 3.77 9 4.72V7.1l-.5-.357z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/magic.svg b/vendor/twbs/bootstrap-icons/icons/magic.svg
new file mode 100644
index 000000000..0b2f1fdff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/magic.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-magic" viewBox="0 0 16 16">
+ <path d="M9.5 2.672a.5.5 0 1 0 1 0V.843a.5.5 0 0 0-1 0zm4.5.035A.5.5 0 0 0 13.293 2L12 3.293a.5.5 0 1 0 .707.707zM7.293 4A.5.5 0 1 0 8 3.293L6.707 2A.5.5 0 0 0 6 2.707zm-.621 2.5a.5.5 0 1 0 0-1H4.843a.5.5 0 1 0 0 1zm8.485 0a.5.5 0 1 0 0-1h-1.829a.5.5 0 0 0 0 1zM13.293 10A.5.5 0 1 0 14 9.293L12.707 8a.5.5 0 1 0-.707.707zM9.5 11.157a.5.5 0 0 0 1 0V9.328a.5.5 0 0 0-1 0zm1.854-5.097a.5.5 0 0 0 0-.706l-.708-.708a.5.5 0 0 0-.707 0L8.646 5.94a.5.5 0 0 0 0 .707l.708.708a.5.5 0 0 0 .707 0l1.293-1.293Zm-3 3a.5.5 0 0 0 0-.706l-.708-.708a.5.5 0 0 0-.707 0L.646 13.94a.5.5 0 0 0 0 .707l.708.708a.5.5 0 0 0 .707 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/magnet-fill.svg b/vendor/twbs/bootstrap-icons/icons/magnet-fill.svg
new file mode 100644
index 000000000..026d0decd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/magnet-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-magnet-fill" viewBox="0 0 16 16">
+ <path d="M15 12h-4v3h4zM5 12H1v3h4zM0 8a8 8 0 1 1 16 0v8h-6V8a2 2 0 1 0-4 0v8H0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/magnet.svg b/vendor/twbs/bootstrap-icons/icons/magnet.svg
new file mode 100644
index 000000000..36b238bfe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/magnet.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-magnet" viewBox="0 0 16 16">
+ <path d="M8 1a7 7 0 0 0-7 7v3h4V8a3 3 0 0 1 6 0v3h4V8a7 7 0 0 0-7-7m7 11h-4v3h4zM5 12H1v3h4zM0 8a8 8 0 1 1 16 0v8h-6V8a2 2 0 1 0-4 0v8H0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mailbox-flag.svg b/vendor/twbs/bootstrap-icons/icons/mailbox-flag.svg
new file mode 100644
index 000000000..8e24db05f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mailbox-flag.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mailbox-flag" viewBox="0 0 16 16">
+ <path d="M10.5 8.5V3.707l.854-.853A.5.5 0 0 0 11.5 2.5v-2A.5.5 0 0 0 11 0H9.5a.5.5 0 0 0-.5.5v8zM5 7c0 .334-.164.264-.415.157C4.42 7.087 4.218 7 4 7s-.42.086-.585.157C3.164 7.264 3 7.334 3 7a1 1 0 0 1 2 0"/>
+ <path d="M4 3h4v1H6.646A4 4 0 0 1 8 7v6h7V7a3 3 0 0 0-3-3V3a4 4 0 0 1 4 4v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a4 4 0 0 1 4-4m0 1a3 3 0 0 0-3 3v6h6V7a3 3 0 0 0-3-3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mailbox.svg b/vendor/twbs/bootstrap-icons/icons/mailbox.svg
new file mode 100644
index 000000000..1048e2a74
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mailbox.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mailbox" viewBox="0 0 16 16">
+ <path d="M4 4a3 3 0 0 0-3 3v6h6V7a3 3 0 0 0-3-3m0-1h8a4 4 0 0 1 4 4v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a4 4 0 0 1 4-4m2.646 1A4 4 0 0 1 8 7v6h7V7a3 3 0 0 0-3-3z"/>
+ <path d="M11.793 8.5H9v-1h5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.354-.146zM5 7c0 .552-.448 0-1 0s-1 .552-1 0a1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mailbox2-flag.svg b/vendor/twbs/bootstrap-icons/icons/mailbox2-flag.svg
new file mode 100644
index 000000000..a25370070
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mailbox2-flag.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mailbox2-flag" viewBox="0 0 16 16">
+ <path d="M10.5 8.5V3.707l.854-.853A.5.5 0 0 0 11.5 2.5v-2A.5.5 0 0 0 11 0H9.5a.5.5 0 0 0-.5.5v8z"/>
+ <path d="M4 3h4v1H6.646A4 4 0 0 1 8 7v6h7V7a3 3 0 0 0-3-3V3a4 4 0 0 1 4 4v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a4 4 0 0 1 4-4m.585 4.157C4.836 7.264 5 7.334 5 7a1 1 0 0 0-2 0c0 .334.164.264.415.157C3.58 7.087 3.782 7 4 7s.42.086.585.157"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mailbox2.svg b/vendor/twbs/bootstrap-icons/icons/mailbox2.svg
new file mode 100644
index 000000000..33e22a6c8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mailbox2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mailbox2" viewBox="0 0 16 16">
+ <path d="M9 8.5h2.793l.853.854A.5.5 0 0 0 13 9.5h1a.5.5 0 0 0 .5-.5V8a.5.5 0 0 0-.5-.5H9z"/>
+ <path d="M12 3H4a4 4 0 0 0-4 4v6a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V7a4 4 0 0 0-4-4M8 7a4 4 0 0 0-1.354-3H12a3 3 0 0 1 3 3v6H8zm-3.415.157C4.42 7.087 4.218 7 4 7s-.42.086-.585.157C3.164 7.264 3 7.334 3 7a1 1 0 0 1 2 0c0 .334-.164.264-.415.157"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/map-fill.svg b/vendor/twbs/bootstrap-icons/icons/map-fill.svg
new file mode 100644
index 000000000..7134540d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/map-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-map-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M16 .5a.5.5 0 0 0-.598-.49L10.5.99 5.598.01a.5.5 0 0 0-.196 0l-5 1A.5.5 0 0 0 0 1.5v14a.5.5 0 0 0 .598.49l4.902-.98 4.902.98a.5.5 0 0 0 .196 0l5-1A.5.5 0 0 0 16 14.5zM5 14.09V1.11l.5-.1.5.1v12.98l-.402-.08a.5.5 0 0 0-.196 0zm5 .8V1.91l.402.08a.5.5 0 0 0 .196 0L11 1.91v12.98l-.5.1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/map.svg b/vendor/twbs/bootstrap-icons/icons/map.svg
new file mode 100644
index 000000000..2b579ce3b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/map.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-map" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15.817.113A.5.5 0 0 1 16 .5v14a.5.5 0 0 1-.402.49l-5 1a.5.5 0 0 1-.196 0L5.5 15.01l-4.902.98A.5.5 0 0 1 0 15.5v-14a.5.5 0 0 1 .402-.49l5-1a.5.5 0 0 1 .196 0L10.5.99l4.902-.98a.5.5 0 0 1 .415.103M10 1.91l-4-.8v12.98l4 .8zm1 12.98 4-.8V1.11l-4 .8zm-6-.8V1.11l-4 .8v12.98z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/markdown-fill.svg b/vendor/twbs/bootstrap-icons/icons/markdown-fill.svg
new file mode 100644
index 000000000..a932fbb0e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/markdown-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-markdown-fill" viewBox="0 0 16 16">
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm11.5 1a.5.5 0 0 0-.5.5v3.793L9.854 8.146a.5.5 0 1 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L12 9.293V5.5a.5.5 0 0 0-.5-.5M3.56 7.01h.056l1.428 3.239h.774l1.42-3.24h.056V11h1.073V5.001h-1.2l-1.71 3.894h-.039l-1.71-3.894H2.5V11h1.06z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/markdown.svg b/vendor/twbs/bootstrap-icons/icons/markdown.svg
new file mode 100644
index 000000000..33962c697
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/markdown.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-markdown" viewBox="0 0 16 16">
+ <path d="M14 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+ <path fill-rule="evenodd" d="M9.146 8.146a.5.5 0 0 1 .708 0L11.5 9.793l1.646-1.647a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 0-.708"/>
+ <path fill-rule="evenodd" d="M11.5 5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 1 .5-.5"/>
+ <path d="M3.56 11V7.01h.056l1.428 3.239h.774l1.42-3.24h.056V11h1.073V5.001h-1.2l-1.71 3.894h-.039l-1.71-3.894H2.5V11z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/marker-tip.svg b/vendor/twbs/bootstrap-icons/icons/marker-tip.svg
new file mode 100644
index 000000000..e00f93151
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/marker-tip.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-marker-tip" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-4.5 6.064-1.281-4.696A.5.5 0 0 0 9.736 9H6.264a.5.5 0 0 0-.483.368l-1.28 4.696A6.97 6.97 0 0 0 8 15c1.275 0 2.47-.34 3.5-.936m.873-.598a7 7 0 1 0-8.746 0l1.19-4.36a1.5 1.5 0 0 1 1.31-1.1l1.155-3.851c.213-.713 1.223-.713 1.436 0l1.156 3.851a1.5 1.5 0 0 1 1.31 1.1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mask.svg b/vendor/twbs/bootstrap-icons/icons/mask.svg
new file mode 100644
index 000000000..b51158c12
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mask.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mask" viewBox="0 0 16 16">
+ <path d="M6.225 1.227A7.5 7.5 0 0 1 10.5 8a7.5 7.5 0 0 1-4.275 6.773 7 7 0 1 0 0-13.546M4.187.966a8 8 0 1 1 7.627 14.069A8 8 0 0 1 4.186.964z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mastodon.svg b/vendor/twbs/bootstrap-icons/icons/mastodon.svg
new file mode 100644
index 000000000..a8c2a26cc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mastodon.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mastodon" viewBox="0 0 16 16">
+ <path d="M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765c0 0-2.285 1.017-2.285 4.488l-.002.662c-.004.64-.007 1.35.011 2.091.083 3.394.626 6.74 3.78 7.57 1.454.383 2.703.463 3.709.408 1.823-.1 2.847-.647 2.847-.647l-.06-1.317s-1.303.41-2.767.36c-1.45-.05-2.98-.156-3.215-1.928a4 4 0 0 1-.033-.496s1.424.346 3.228.428c1.103.05 2.137-.064 3.188-.189zm1.613-2.47H11.13v-4.08c0-.859-.364-1.295-1.091-1.295-.804 0-1.207.517-1.207 1.541v2.233H7.168V5.89c0-1.024-.403-1.541-1.207-1.541-.727 0-1.091.436-1.091 1.296v4.079H3.197V5.522q0-1.288.66-2.046c.456-.505 1.052-.764 1.793-.764.856 0 1.504.328 1.933.983L8 4.39l.417-.695c.429-.655 1.077-.983 1.934-.983.74 0 1.336.259 1.791.764q.662.757.661 2.046z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/medium.svg b/vendor/twbs/bootstrap-icons/icons/medium.svg
new file mode 100644
index 000000000..065ace11f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/medium.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-medium" viewBox="0 0 16 16">
+ <path d="M9.025 8c0 2.485-2.02 4.5-4.513 4.5A4.506 4.506 0 0 1 0 8c0-2.486 2.02-4.5 4.512-4.5A4.506 4.506 0 0 1 9.025 8m4.95 0c0 2.34-1.01 4.236-2.256 4.236S9.463 10.339 9.463 8c0-2.34 1.01-4.236 2.256-4.236S13.975 5.661 13.975 8M16 8c0 2.096-.355 3.795-.794 3.795-.438 0-.793-1.7-.793-3.795 0-2.096.355-3.795.794-3.795.438 0 .793 1.699.793 3.795"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/megaphone-fill.svg b/vendor/twbs/bootstrap-icons/icons/megaphone-fill.svg
new file mode 100644
index 000000000..9f44f2e83
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/megaphone-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-megaphone-fill" viewBox="0 0 16 16">
+ <path d="M13 2.5a1.5 1.5 0 0 1 3 0v11a1.5 1.5 0 0 1-3 0zm-1 .724c-2.067.95-4.539 1.481-7 1.656v6.237a25 25 0 0 1 1.088.085c2.053.204 4.038.668 5.912 1.56zm-8 7.841V4.934c-.68.027-1.399.043-2.008.053A2.02 2.02 0 0 0 0 7v2c0 1.106.896 1.996 1.994 2.009l.496.008a64 64 0 0 1 1.51.048m1.39 1.081q.428.032.85.078l.253 1.69a1 1 0 0 1-.983 1.187h-.548a1 1 0 0 1-.916-.599l-1.314-2.48a66 66 0 0 1 1.692.064q.491.026.966.06"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/megaphone.svg b/vendor/twbs/bootstrap-icons/icons/megaphone.svg
new file mode 100644
index 000000000..1cedb30ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/megaphone.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-megaphone" viewBox="0 0 16 16">
+ <path d="M13 2.5a1.5 1.5 0 0 1 3 0v11a1.5 1.5 0 0 1-3 0v-.214c-2.162-1.241-4.49-1.843-6.912-2.083l.405 2.712A1 1 0 0 1 5.51 15.1h-.548a1 1 0 0 1-.916-.599l-1.85-3.49-.202-.003A2.014 2.014 0 0 1 0 9V7a2.02 2.02 0 0 1 1.992-2.013 75 75 0 0 0 2.483-.075c3.043-.154 6.148-.849 8.525-2.199zm1 0v11a.5.5 0 0 0 1 0v-11a.5.5 0 0 0-1 0m-1 1.35c-2.344 1.205-5.209 1.842-8 2.033v4.233q.27.015.537.036c2.568.189 5.093.744 7.463 1.993zm-9 6.215v-4.13a95 95 0 0 1-1.992.052A1.02 1.02 0 0 0 1 7v2c0 .55.448 1.002 1.006 1.009A61 61 0 0 1 4 10.065m-.657.975 1.609 3.037.01.024h.548l-.002-.014-.443-2.966a68 68 0 0 0-1.722-.082z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/memory.svg b/vendor/twbs/bootstrap-icons/icons/memory.svg
new file mode 100644
index 000000000..48764d2b5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/memory.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-memory" viewBox="0 0 16 16">
+ <path d="M1 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4.586a1 1 0 0 0 .707-.293l.353-.353a.5.5 0 0 1 .708 0l.353.353a1 1 0 0 0 .707.293H15a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm.5 1h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5m5 0h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5m4.5.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zM2 10v2H1v-2zm2 0v2H3v-2zm2 0v2H5v-2zm3 0v2H8v-2zm2 0v2h-1v-2zm2 0v2h-1v-2zm2 0v2h-1v-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/menu-app-fill.svg b/vendor/twbs/bootstrap-icons/icons/menu-app-fill.svg
new file mode 100644
index 000000000..65cfdcf55
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/menu-app-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-menu-app-fill" viewBox="0 0 16 16">
+ <path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h2A1.5 1.5 0 0 1 5 1.5v2A1.5 1.5 0 0 1 3.5 5h-2A1.5 1.5 0 0 1 0 3.5zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/menu-app.svg b/vendor/twbs/bootstrap-icons/icons/menu-app.svg
new file mode 100644
index 000000000..ecda144ee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/menu-app.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-menu-app" viewBox="0 0 16 16">
+ <path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h2A1.5 1.5 0 0 1 5 1.5v2A1.5 1.5 0 0 1 3.5 5h-2A1.5 1.5 0 0 1 0 3.5zM1.5 1a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/menu-button-fill.svg b/vendor/twbs/bootstrap-icons/icons/menu-button-fill.svg
new file mode 100644
index 000000000..09b280553
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/menu-button-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-menu-button-fill" viewBox="0 0 16 16">
+ <path d="M1.5 0A1.5 1.5 0 0 0 0 1.5v2A1.5 1.5 0 0 0 1.5 5h8A1.5 1.5 0 0 0 11 3.5v-2A1.5 1.5 0 0 0 9.5 0zm5.927 2.427A.25.25 0 0 1 7.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/menu-button-wide-fill.svg b/vendor/twbs/bootstrap-icons/icons/menu-button-wide-fill.svg
new file mode 100644
index 000000000..d97ce7f73
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/menu-button-wide-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-menu-button-wide-fill" viewBox="0 0 16 16">
+ <path d="M1.5 0A1.5 1.5 0 0 0 0 1.5v2A1.5 1.5 0 0 0 1.5 5h13A1.5 1.5 0 0 0 16 3.5v-2A1.5 1.5 0 0 0 14.5 0zm1 2h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1m9.927.427A.25.25 0 0 1 12.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/menu-button-wide.svg b/vendor/twbs/bootstrap-icons/icons/menu-button-wide.svg
new file mode 100644
index 000000000..5636c10a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/menu-button-wide.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-menu-button-wide" viewBox="0 0 16 16">
+ <path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v2A1.5 1.5 0 0 1 14.5 5h-13A1.5 1.5 0 0 1 0 3.5zM1.5 1a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5z"/>
+ <path d="M2 2.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m10.823.323-.396-.396A.25.25 0 0 1 12.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0M0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/menu-button.svg b/vendor/twbs/bootstrap-icons/icons/menu-button.svg
new file mode 100644
index 000000000..ec4c70a4b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/menu-button.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-menu-button" viewBox="0 0 16 16">
+ <path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h8A1.5 1.5 0 0 1 11 1.5v2A1.5 1.5 0 0 1 9.5 5h-8A1.5 1.5 0 0 1 0 3.5zM1.5 1a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5z"/>
+ <path d="m7.823 2.823-.396-.396A.25.25 0 0 1 7.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0M0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/menu-down.svg b/vendor/twbs/bootstrap-icons/icons/menu-down.svg
new file mode 100644
index 000000000..e53a5e9ce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/menu-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-menu-down" viewBox="0 0 16 16">
+ <path d="M7.646.146a.5.5 0 0 1 .708 0L10.207 2H14a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h3.793zM1 7v3h14V7zm14-1V4a1 1 0 0 0-1-1h-3.793a1 1 0 0 1-.707-.293L8 1.207l-1.5 1.5A1 1 0 0 1 5.793 3H2a1 1 0 0 0-1 1v2zm0 5H1v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM2 4.5a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/menu-up.svg b/vendor/twbs/bootstrap-icons/icons/menu-up.svg
new file mode 100644
index 000000000..96ff58b4e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/menu-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-menu-up" viewBox="0 0 16 16">
+ <path d="M7.646 15.854a.5.5 0 0 0 .708 0L10.207 14H14a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3.793zM1 9V6h14v3zm14 1v2a1 1 0 0 1-1 1h-3.793a1 1 0 0 0-.707.293l-1.5 1.5-1.5-1.5A1 1 0 0 0 5.793 13H2a1 1 0 0 1-1-1v-2zm0-5H1V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1zM2 11.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 0-1h-8a.5.5 0 0 0-.5.5m0-4a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 0-1h-11a.5.5 0 0 0-.5.5m0-4a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 0-1h-6a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/messenger.svg b/vendor/twbs/bootstrap-icons/icons/messenger.svg
new file mode 100644
index 000000000..e896a79c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/messenger.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-messenger" viewBox="0 0 16 16">
+ <path d="M0 7.76C0 3.301 3.493 0 8 0s8 3.301 8 7.76-3.493 7.76-8 7.76c-.81 0-1.586-.107-2.316-.307a.64.64 0 0 0-.427.03l-1.588.702a.64.64 0 0 1-.898-.566l-.044-1.423a.64.64 0 0 0-.215-.456C.956 12.108 0 10.092 0 7.76m5.546-1.459-2.35 3.728c-.225.358.214.761.551.506l2.525-1.916a.48.48 0 0 1 .578-.002l1.869 1.402a1.2 1.2 0 0 0 1.735-.32l2.35-3.728c.226-.358-.214-.761-.551-.506L9.728 7.381a.48.48 0 0 1-.578.002L7.281 5.98a1.2 1.2 0 0 0-1.735.32z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/meta.svg b/vendor/twbs/bootstrap-icons/icons/meta.svg
new file mode 100644
index 000000000..03155a1f3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/meta.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-meta" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8.217 5.243C9.145 3.988 10.171 3 11.483 3 13.96 3 16 6.153 16.001 9.907c0 2.29-.986 3.725-2.757 3.725-1.543 0-2.395-.866-3.924-3.424l-.667-1.123-.118-.197a55 55 0 0 0-.53-.877l-1.178 2.08c-1.673 2.925-2.615 3.541-3.923 3.541C1.086 13.632 0 12.217 0 9.973 0 6.388 1.995 3 4.598 3q.477-.001.924.122c.31.086.611.22.913.407.577.359 1.154.915 1.782 1.714m1.516 2.224q-.378-.614-.727-1.133L9 6.326c.845-1.305 1.543-1.954 2.372-1.954 1.723 0 3.102 2.537 3.102 5.653 0 1.188-.39 1.877-1.195 1.877-.773 0-1.142-.51-2.61-2.87zM4.846 4.756c.725.1 1.385.634 2.34 2.001A212 212 0 0 0 5.551 9.3c-1.357 2.126-1.826 2.603-2.581 2.603-.777 0-1.24-.682-1.24-1.9 0-2.602 1.298-5.264 2.846-5.264q.136 0 .27.018Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mic-fill.svg b/vendor/twbs/bootstrap-icons/icons/mic-fill.svg
new file mode 100644
index 000000000..c92ade73d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mic-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mic-fill" viewBox="0 0 16 16">
+ <path d="M5 3a3 3 0 0 1 6 0v5a3 3 0 0 1-6 0z"/>
+ <path d="M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mic-mute-fill.svg b/vendor/twbs/bootstrap-icons/icons/mic-mute-fill.svg
new file mode 100644
index 000000000..a10a1bcf1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mic-mute-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mic-mute-fill" viewBox="0 0 16 16">
+ <path d="M13 8c0 .564-.094 1.107-.266 1.613l-.814-.814A4 4 0 0 0 12 8V7a.5.5 0 0 1 1 0zm-5 4c.818 0 1.578-.245 2.212-.667l.718.719a5 5 0 0 1-2.43.923V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 1 0v1a4 4 0 0 0 4 4m3-9v4.879L5.158 2.037A3.001 3.001 0 0 1 11 3"/>
+ <path d="M9.486 10.607 5 6.12V8a3 3 0 0 0 4.486 2.607m-7.84-9.253 12 12 .708-.708-12-12z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mic-mute.svg b/vendor/twbs/bootstrap-icons/icons/mic-mute.svg
new file mode 100644
index 000000000..59b04beef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mic-mute.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mic-mute" viewBox="0 0 16 16">
+ <path d="M13 8c0 .564-.094 1.107-.266 1.613l-.814-.814A4 4 0 0 0 12 8V7a.5.5 0 0 1 1 0zm-5 4c.818 0 1.578-.245 2.212-.667l.718.719a5 5 0 0 1-2.43.923V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 1 0v1a4 4 0 0 0 4 4m3-9v4.879l-1-1V3a2 2 0 0 0-3.997-.118l-.845-.845A3.001 3.001 0 0 1 11 3"/>
+ <path d="m9.486 10.607-.748-.748A2 2 0 0 1 6 8v-.878l-1-1V8a3 3 0 0 0 4.486 2.607m-7.84-9.253 12 12 .708-.708-12-12z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mic.svg b/vendor/twbs/bootstrap-icons/icons/mic.svg
new file mode 100644
index 000000000..f07bf14d4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mic.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mic" viewBox="0 0 16 16">
+ <path d="M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5"/>
+ <path d="M10 8a2 2 0 1 1-4 0V3a2 2 0 1 1 4 0zM8 0a3 3 0 0 0-3 3v5a3 3 0 0 0 6 0V3a3 3 0 0 0-3-3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/microsoft-teams.svg b/vendor/twbs/bootstrap-icons/icons/microsoft-teams.svg
new file mode 100644
index 000000000..6bf3a0ca8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/microsoft-teams.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-microsoft-teams" viewBox="0 0 16 16">
+ <path d="M9.186 4.797a2.42 2.42 0 1 0-2.86-2.448h1.178c.929 0 1.682.753 1.682 1.682zm-4.295 7.738h2.613c.929 0 1.682-.753 1.682-1.682V5.58h2.783a.7.7 0 0 1 .682.716v4.294a4.197 4.197 0 0 1-4.093 4.293c-1.618-.04-3-.99-3.667-2.35Zm10.737-9.372a1.674 1.674 0 1 1-3.349 0 1.674 1.674 0 0 1 3.349 0m-2.238 9.488-.12-.002a5.2 5.2 0 0 0 .381-2.07V6.306a1.7 1.7 0 0 0-.15-.725h1.792c.39 0 .707.317.707.707v3.765a2.6 2.6 0 0 1-2.598 2.598z"/>
+ <path d="M.682 3.349h6.822c.377 0 .682.305.682.682v6.822a.68.68 0 0 1-.682.682H.682A.68.68 0 0 1 0 10.853V4.03c0-.377.305-.682.682-.682Zm5.206 2.596v-.72h-3.59v.72h1.357V9.66h.87V5.945z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/microsoft.svg b/vendor/twbs/bootstrap-icons/icons/microsoft.svg
new file mode 100644
index 000000000..8d2a03c31
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/microsoft.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-microsoft" viewBox="0 0 16 16">
+ <path d="M7.462 0H0v7.19h7.462zM16 0H8.538v7.19H16zM7.462 8.211H0V16h7.462zm8.538 0H8.538V16H16z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/minecart-loaded.svg b/vendor/twbs/bootstrap-icons/icons/minecart-loaded.svg
new file mode 100644
index 000000000..48e523f54
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/minecart-loaded.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-minecart-loaded" viewBox="0 0 16 16">
+ <path d="M4 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2m0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4m8-1a1 1 0 1 1 0-2 1 1 0 0 1 0 2m0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4M.115 3.18A.5.5 0 0 1 .5 3h15a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 14 12H2a.5.5 0 0 1-.491-.408l-1.5-8a.5.5 0 0 1 .106-.411zm.987.82 1.313 7h11.17l1.313-7z"/>
+ <path fill-rule="evenodd" d="M6 1a2.498 2.498 0 0 1 4 0c.818 0 1.545.394 2 1 .67 0 1.552.57 2 1h-2c-.314 0-.611-.15-.8-.4-.274-.365-.71-.6-1.2-.6-.314 0-.611-.15-.8-.4a1.497 1.497 0 0 0-2.4 0c-.189.25-.486.4-.8.4-.507 0-.955.251-1.228.638q-.136.194-.308.362H3c.13-.147.401-.432.562-.545a1.6 1.6 0 0 0 .393-.393A2.5 2.5 0 0 1 6 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/minecart.svg b/vendor/twbs/bootstrap-icons/icons/minecart.svg
new file mode 100644
index 000000000..c4869c25d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/minecart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-minecart" viewBox="0 0 16 16">
+ <path d="M4 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2m0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4m8-1a1 1 0 1 1 0-2 1 1 0 0 1 0 2m0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4M.115 3.18A.5.5 0 0 1 .5 3h15a.5.5 0 0 1 .491.592l-1.5 8A.5.5 0 0 1 14 12H2a.5.5 0 0 1-.491-.408l-1.5-8a.5.5 0 0 1 .106-.411zm.987.82 1.313 7h11.17l1.313-7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/modem-fill.svg b/vendor/twbs/bootstrap-icons/icons/modem-fill.svg
new file mode 100644
index 000000000..a5dd5e296
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/modem-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-modem-fill" viewBox="0 0 16 16">
+ <path d="M7 0a1.5 1.5 0 0 0-1.5 1.5v11a1.5 1.5 0 0 0 1.404 1.497c-.35.305-.872.678-1.628 1.056A.5.5 0 0 0 5.5 16h5a.5.5 0 0 0 .224-.947c-.756-.378-1.278-.75-1.628-1.056A1.5 1.5 0 0 0 10.5 12.5v-11A1.5 1.5 0 0 0 9 0zm1 3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m0 2a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m.5 1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0M8 9a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/modem.svg b/vendor/twbs/bootstrap-icons/icons/modem.svg
new file mode 100644
index 000000000..f90ad6b95
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/modem.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-modem" viewBox="0 0 16 16">
+ <path d="M5.5 1.5A1.5 1.5 0 0 1 7 0h2a1.5 1.5 0 0 1 1.5 1.5v11a1.5 1.5 0 0 1-1.404 1.497c.35.305.872.678 1.628 1.056A.5.5 0 0 1 10.5 16h-5a.5.5 0 0 1-.224-.947c.756-.378 1.277-.75 1.628-1.056A1.5 1.5 0 0 1 5.5 12.5zM7 1a.5.5 0 0 0-.5.5v11a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-11A.5.5 0 0 0 9 1z"/>
+ <path d="M8.5 2.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 2a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 2a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 2a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/moisture.svg b/vendor/twbs/bootstrap-icons/icons/moisture.svg
new file mode 100644
index 000000000..490fb4950
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/moisture.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-moisture" viewBox="0 0 16 16">
+ <path d="M13.5 0a.5.5 0 0 0 0 1H15v2.75h-.5a.5.5 0 0 0 0 1h.5V7.5h-1.5a.5.5 0 0 0 0 1H15v2.75h-.5a.5.5 0 0 0 0 1h.5V15h-1.5a.5.5 0 0 0 0 1h2a.5.5 0 0 0 .5-.5V.5a.5.5 0 0 0-.5-.5zM7 1.5l.364-.343a.5.5 0 0 0-.728 0l-.002.002-.006.007-.022.023-.08.088a29 29 0 0 0-1.274 1.517c-.769.983-1.714 2.325-2.385 3.727C2.368 7.564 2 8.682 2 9.733 2 12.614 4.212 15 7 15s5-2.386 5-5.267c0-1.05-.368-2.169-.867-3.212-.671-1.402-1.616-2.744-2.385-3.727a29 29 0 0 0-1.354-1.605l-.022-.023-.006-.007-.002-.001zm0 0-.364-.343zm-.016.766L7 2.247l.016.019c.24.274.572.667.944 1.144.611.781 1.32 1.776 1.901 2.827H4.14c.58-1.051 1.29-2.046 1.9-2.827.373-.477.706-.87.945-1.144zM3 9.733c0-.755.244-1.612.638-2.496h6.724c.395.884.638 1.741.638 2.496C11 12.117 9.182 14 7 14s-4-1.883-4-4.267"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/moon-fill.svg b/vendor/twbs/bootstrap-icons/icons/moon-fill.svg
new file mode 100644
index 000000000..67f67397f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/moon-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-moon-fill" viewBox="0 0 16 16">
+ <path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/moon-stars-fill.svg b/vendor/twbs/bootstrap-icons/icons/moon-stars-fill.svg
new file mode 100644
index 000000000..c50e070b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/moon-stars-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-moon-stars-fill" viewBox="0 0 16 16">
+ <path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278"/>
+ <path d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.73 1.73 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.73 1.73 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.73 1.73 0 0 0 1.097-1.097zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.16 1.16 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.16 1.16 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/moon-stars.svg b/vendor/twbs/bootstrap-icons/icons/moon-stars.svg
new file mode 100644
index 000000000..ae138c2df
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/moon-stars.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-moon-stars" viewBox="0 0 16 16">
+ <path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278M4.858 1.311A7.27 7.27 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.32 7.32 0 0 0 5.205-2.162q-.506.063-1.029.063c-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286"/>
+ <path d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.73 1.73 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.73 1.73 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.73 1.73 0 0 0 1.097-1.097zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.16 1.16 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.16 1.16 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/moon.svg b/vendor/twbs/bootstrap-icons/icons/moon.svg
new file mode 100644
index 000000000..46458ecfb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/moon.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-moon" viewBox="0 0 16 16">
+ <path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278M4.858 1.311A7.27 7.27 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.32 7.32 0 0 0 5.205-2.162q-.506.063-1.029.063c-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mortarboard-fill.svg b/vendor/twbs/bootstrap-icons/icons/mortarboard-fill.svg
new file mode 100644
index 000000000..02f6c8c5e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mortarboard-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mortarboard-fill" viewBox="0 0 16 16">
+ <path d="M8.211 2.047a.5.5 0 0 0-.422 0l-7.5 3.5a.5.5 0 0 0 .025.917l7.5 3a.5.5 0 0 0 .372 0L14 7.14V13a1 1 0 0 0-1 1v2h3v-2a1 1 0 0 0-1-1V6.739l.686-.275a.5.5 0 0 0 .025-.917z"/>
+ <path d="M4.176 9.032a.5.5 0 0 0-.656.327l-.5 1.7a.5.5 0 0 0 .294.605l4.5 1.8a.5.5 0 0 0 .372 0l4.5-1.8a.5.5 0 0 0 .294-.605l-.5-1.7a.5.5 0 0 0-.656-.327L8 10.466z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mortarboard.svg b/vendor/twbs/bootstrap-icons/icons/mortarboard.svg
new file mode 100644
index 000000000..94f9e97d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mortarboard.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mortarboard" viewBox="0 0 16 16">
+ <path d="M8.211 2.047a.5.5 0 0 0-.422 0l-7.5 3.5a.5.5 0 0 0 .025.917l7.5 3a.5.5 0 0 0 .372 0L14 7.14V13a1 1 0 0 0-1 1v2h3v-2a1 1 0 0 0-1-1V6.739l.686-.275a.5.5 0 0 0 .025-.917zM8 8.46 1.758 5.965 8 3.052l6.242 2.913z"/>
+ <path d="M4.176 9.032a.5.5 0 0 0-.656.327l-.5 1.7a.5.5 0 0 0 .294.605l4.5 1.8a.5.5 0 0 0 .372 0l4.5-1.8a.5.5 0 0 0 .294-.605l-.5-1.7a.5.5 0 0 0-.656-.327L8 10.466zm-.068 1.873.22-.748 3.496 1.311a.5.5 0 0 0 .352 0l3.496-1.311.22.748L8 12.46z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/motherboard-fill.svg b/vendor/twbs/bootstrap-icons/icons/motherboard-fill.svg
new file mode 100644
index 000000000..fabff9761
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/motherboard-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-motherboard-fill" viewBox="0 0 16 16">
+ <path d="M5 7h3V4H5z"/>
+ <path d="M1 2a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-2H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 9H1V8H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6H1V5H.5a.5.5 0 0 1-.5-.5v-2A.5.5 0 0 1 .5 2zm11 .5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zm2 0a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zM3.5 10a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zM4 4h-.5a.5.5 0 0 0 0 1H4v1h-.5a.5.5 0 0 0 0 1H4a1 1 0 0 0 1 1v.5a.5.5 0 0 0 1 0V8h1v.5a.5.5 0 0 0 1 0V8a1 1 0 0 0 1-1h.5a.5.5 0 0 0 0-1H9V5h.5a.5.5 0 0 0 0-1H9a1 1 0 0 0-1-1v-.5a.5.5 0 0 0-1 0V3H6v-.5a.5.5 0 0 0-1 0V3a1 1 0 0 0-1 1m7 7.5v1a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/motherboard.svg b/vendor/twbs/bootstrap-icons/icons/motherboard.svg
new file mode 100644
index 000000000..d29e25578
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/motherboard.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-motherboard" viewBox="0 0 16 16">
+ <path d="M11.5 2a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5m2 0a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5m-10 8a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h6a.5.5 0 0 0 0-1zM5 3a1 1 0 0 0-1 1h-.5a.5.5 0 0 0 0 1H4v1h-.5a.5.5 0 0 0 0 1H4a1 1 0 0 0 1 1v.5a.5.5 0 0 0 1 0V8h1v.5a.5.5 0 0 0 1 0V8a1 1 0 0 0 1-1h.5a.5.5 0 0 0 0-1H9V5h.5a.5.5 0 0 0 0-1H9a1 1 0 0 0-1-1v-.5a.5.5 0 0 0-1 0V3H6v-.5a.5.5 0 0 0-1 0zm0 1h3v3H5zm6.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M1 2a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-2H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 9H1V8H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6H1V5H.5a.5.5 0 0 1-.5-.5v-2A.5.5 0 0 1 .5 2zm1 11a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mouse-fill.svg b/vendor/twbs/bootstrap-icons/icons/mouse-fill.svg
new file mode 100644
index 000000000..24d275ea9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mouse-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mouse-fill" viewBox="0 0 16 16">
+ <path d="M3 5a5 5 0 0 1 10 0v6a5 5 0 0 1-10 0zm5.5-1.5a.5.5 0 0 0-1 0v2a.5.5 0 0 0 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mouse.svg b/vendor/twbs/bootstrap-icons/icons/mouse.svg
new file mode 100644
index 000000000..e01881101
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mouse.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mouse" viewBox="0 0 16 16">
+ <path d="M8 3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 3m4 8a4 4 0 0 1-8 0V5a4 4 0 1 1 8 0zM8 0a5 5 0 0 0-5 5v6a5 5 0 0 0 10 0V5a5 5 0 0 0-5-5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mouse2-fill.svg b/vendor/twbs/bootstrap-icons/icons/mouse2-fill.svg
new file mode 100644
index 000000000..6277b4463
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mouse2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mouse2-fill" viewBox="0 0 16 16">
+ <path d="M7.5.026C4.958.286 3 2.515 3 5.188V5.5h4.5zm1 0V5.5H13v-.312C13 2.515 11.042.286 8.5.026M13 6.5H3v4.313C3 13.658 5.22 16 8 16s5-2.342 5-5.188z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mouse2.svg b/vendor/twbs/bootstrap-icons/icons/mouse2.svg
new file mode 100644
index 000000000..fd15e7c8d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mouse2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mouse2" viewBox="0 0 16 16">
+ <path d="M3 5.188C3 2.341 5.22 0 8 0s5 2.342 5 5.188v5.625C13 13.658 10.78 16 8 16s-5-2.342-5-5.188V5.189zm4.5-4.155C5.541 1.289 4 3.035 4 5.188V5.5h3.5zm1 0V5.5H12v-.313c0-2.152-1.541-3.898-3.5-4.154M12 6.5H4v4.313C4 13.145 5.81 15 8 15s4-1.855 4-4.188z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mouse3-fill.svg b/vendor/twbs/bootstrap-icons/icons/mouse3-fill.svg
new file mode 100644
index 000000000..16c1705bc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mouse3-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mouse3-fill" viewBox="0 0 16 16">
+ <path d="M8.5.069A15 15 0 0 0 7 0q-.891.002-1.527.463c-.418.302-.717.726-.93 1.208-.386.873-.522 2.01-.54 3.206l4.497 1zM3.71 5.836 3.381 6A2.5 2.5 0 0 0 2 8.236v2.576C2 13.659 4.22 16 7 16h2c2.78 0 5-2.342 5-5.188V8.123l-9-2v.003l.008.353c.007.3.023.715.053 1.175.063.937.186 2.005.413 2.688a.5.5 0 1 1-.948.316c-.273-.817-.4-2-.462-2.937A30 30 0 0 1 4 6.003q0-.05.01-.1zM14 7.1V5.187c0-1.13-.272-2.044-.748-2.772-.474-.726-1.13-1.235-1.849-1.59A7.5 7.5 0 0 0 9.5.212v5.887l4.5 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/mouse3.svg b/vendor/twbs/bootstrap-icons/icons/mouse3.svg
new file mode 100644
index 000000000..548b244ae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/mouse3.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-mouse3" viewBox="0 0 16 16">
+ <path d="M7 0q-.891.002-1.527.463c-.418.302-.717.726-.93 1.208C4.123 2.619 4 3.879 4 5.187v.504L3.382 6A2.5 2.5 0 0 0 2 8.236v2.576C2 13.659 4.22 16 7 16h2c2.78 0 5-2.342 5-5.188V5.186c0-1.13-.272-2.044-.748-2.772-.474-.726-1.13-1.235-1.849-1.59C9.981.123 8.26 0 7 0m2.5 6.099V1.232c.51.11 1.008.267 1.46.49.596.293 1.099.694 1.455 1.24.355.543.585 1.262.585 2.225v1.69zm-1-5.025v4.803L5 5.099c.006-1.242.134-2.293.457-3.024.162-.366.363-.63.602-.801C6.292 1.105 6.593 1 7 1c.468 0 .98.018 1.5.074M5 6.124 13 7.9v2.912C13 13.145 11.19 15 9 15H7c-2.19 0-4-1.855-4-4.188V8.236a1.5 1.5 0 0 1 .83-1.342l.187-.093c.01.265.024.58.047.92.062.938.19 2.12.462 2.937a.5.5 0 1 0 .948-.316c-.227-.683-.35-1.75-.413-2.688a29 29 0 0 1-.06-1.528v-.002z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/music-note-beamed.svg b/vendor/twbs/bootstrap-icons/icons/music-note-beamed.svg
new file mode 100644
index 000000000..9eb1506ff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/music-note-beamed.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-music-note-beamed" viewBox="0 0 16 16">
+ <path d="M6 13c0 1.105-1.12 2-2.5 2S1 14.105 1 13s1.12-2 2.5-2 2.5.896 2.5 2m9-2c0 1.105-1.12 2-2.5 2s-2.5-.895-2.5-2 1.12-2 2.5-2 2.5.895 2.5 2"/>
+ <path fill-rule="evenodd" d="M14 11V2h1v9zM6 3v10H5V3z"/>
+ <path d="M5 2.905a1 1 0 0 1 .9-.995l8-.8a1 1 0 0 1 1.1.995V3L5 4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/music-note-list.svg b/vendor/twbs/bootstrap-icons/icons/music-note-list.svg
new file mode 100644
index 000000000..d33767dd1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/music-note-list.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-music-note-list" viewBox="0 0 16 16">
+ <path d="M12 13c0 1.105-1.12 2-2.5 2S7 14.105 7 13s1.12-2 2.5-2 2.5.895 2.5 2"/>
+ <path fill-rule="evenodd" d="M12 3v10h-1V3z"/>
+ <path d="M11 2.82a1 1 0 0 1 .804-.98l3-.6A1 1 0 0 1 16 2.22V4l-5 1z"/>
+ <path fill-rule="evenodd" d="M0 11.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m0-4A.5.5 0 0 1 .5 7H8a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m0-4A.5.5 0 0 1 .5 3H8a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/music-note.svg b/vendor/twbs/bootstrap-icons/icons/music-note.svg
new file mode 100644
index 000000000..d6fe21e45
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/music-note.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-music-note" viewBox="0 0 16 16">
+ <path d="M9 13c0 1.105-1.12 2-2.5 2S4 14.105 4 13s1.12-2 2.5-2 2.5.895 2.5 2"/>
+ <path fill-rule="evenodd" d="M9 3v10H8V3z"/>
+ <path d="M8 2.82a1 1 0 0 1 .804-.98l3-.6A1 1 0 0 1 13 2.22V4L8 5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/music-player-fill.svg b/vendor/twbs/bootstrap-icons/icons/music-player-fill.svg
new file mode 100644
index 000000000..68a65b507
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/music-player-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-music-player-fill" viewBox="0 0 16 16">
+ <path d="M8 12a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm1 2h6a1 1 0 0 1 1 1v2.5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1m3 12a3 3 0 1 1 0-6 3 3 0 0 1 0 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/music-player.svg b/vendor/twbs/bootstrap-icons/icons/music-player.svg
new file mode 100644
index 000000000..7eb9c92fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/music-player.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-music-player" viewBox="0 0 16 16">
+ <path d="M4 3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1zm1 0v3h6V3zm3 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+ <path d="M11 11a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-3 2a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/newspaper.svg b/vendor/twbs/bootstrap-icons/icons/newspaper.svg
new file mode 100644
index 000000000..9a1cf6de0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/newspaper.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-newspaper" viewBox="0 0 16 16">
+ <path d="M0 2.5A1.5 1.5 0 0 1 1.5 1h11A1.5 1.5 0 0 1 14 2.5v10.528c0 .3-.05.654-.238.972h.738a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 1 1 0v9a1.5 1.5 0 0 1-1.5 1.5H1.497A1.497 1.497 0 0 1 0 13.5zM12 14c.37 0 .654-.211.853-.441.092-.106.147-.279.147-.531V2.5a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0-.5.5v11c0 .278.223.5.497.5z"/>
+ <path d="M2 3h10v2H2zm0 3h4v3H2zm0 4h4v1H2zm0 2h4v1H2zm5-6h2v1H7zm3 0h2v1h-2zM7 8h2v1H7zm3 0h2v1h-2zm-3 2h2v1H7zm3 0h2v1h-2zm-3 2h2v1H7zm3 0h2v1h-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/nintendo-switch.svg b/vendor/twbs/bootstrap-icons/icons/nintendo-switch.svg
new file mode 100644
index 000000000..584949397
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/nintendo-switch.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-nintendo-switch" viewBox="0 0 16 16">
+ <path d="M9.34 8.005c0-4.38.01-7.972.023-7.982C9.373.01 10.036 0 10.831 0c1.153 0 1.51.01 1.743.05 1.73.298 3.045 1.6 3.373 3.326.046.242.053.809.053 4.61 0 4.06.005 4.537-.123 4.976-.022.076-.048.15-.08.242a4.14 4.14 0 0 1-3.426 2.767c-.317.033-2.889.046-2.978.013-.05-.02-.053-.752-.053-7.979m4.675.269a1.62 1.62 0 0 0-1.113-1.034 1.61 1.61 0 0 0-1.938 1.073 1.9 1.9 0 0 0-.014.935 1.63 1.63 0 0 0 1.952 1.107c.51-.136.908-.504 1.11-1.028.11-.285.113-.742.003-1.053M3.71 3.317c-.208.04-.526.199-.695.348-.348.301-.52.729-.494 1.232.013.262.03.332.136.544.155.321.39.556.712.715.222.11.278.123.567.133.261.01.354 0 .53-.06.719-.242 1.153-.94 1.03-1.656-.142-.852-.95-1.422-1.786-1.256"/>
+ <path d="M3.425.053a4.14 4.14 0 0 0-3.28 3.015C0 3.628-.01 3.956.005 8.3c.01 3.99.014 4.082.08 4.39.368 1.66 1.548 2.844 3.224 3.235.22.05.497.06 2.29.07 1.856.012 2.048.009 2.097-.04.05-.05.053-.69.053-7.94 0-5.374-.01-7.906-.033-7.952-.033-.06-.09-.063-2.03-.06-1.578.004-2.052.014-2.26.05Zm3 14.665-1.35-.016c-1.242-.013-1.375-.02-1.623-.083a2.81 2.81 0 0 1-2.08-2.167c-.074-.335-.074-8.579-.004-8.907a2.85 2.85 0 0 1 1.716-2.05c.438-.176.64-.196 2.058-.2l1.282-.003v13.426Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/node-minus-fill.svg b/vendor/twbs/bootstrap-icons/icons/node-minus-fill.svg
new file mode 100644
index 000000000..802d67874
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/node-minus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-node-minus-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M16 8a5 5 0 0 1-9.975.5H4A1.5 1.5 0 0 1 2.5 10h-1A1.5 1.5 0 0 1 0 8.5v-1A1.5 1.5 0 0 1 1.5 6h1A1.5 1.5 0 0 1 4 7.5h2.025A5 5 0 0 1 16 8m-2 0a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h5A.5.5 0 0 0 14 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/node-minus.svg b/vendor/twbs/bootstrap-icons/icons/node-minus.svg
new file mode 100644
index 000000000..8ffaa389b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/node-minus.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-node-minus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11 4a4 4 0 1 0 0 8 4 4 0 0 0 0-8M6.025 7.5a5 5 0 1 1 0 1H4A1.5 1.5 0 0 1 2.5 10h-1A1.5 1.5 0 0 1 0 8.5v-1A1.5 1.5 0 0 1 1.5 6h1A1.5 1.5 0 0 1 4 7.5zM1.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM8 8a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5A.5.5 0 0 1 8 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/node-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/node-plus-fill.svg
new file mode 100644
index 000000000..9559b26b8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/node-plus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-node-plus-fill" viewBox="0 0 16 16">
+ <path d="M11 13a5 5 0 1 0-4.975-5.5H4A1.5 1.5 0 0 0 2.5 6h-1A1.5 1.5 0 0 0 0 7.5v1A1.5 1.5 0 0 0 1.5 10h1A1.5 1.5 0 0 0 4 8.5h2.025A5 5 0 0 0 11 13m.5-7.5v2h2a.5.5 0 0 1 0 1h-2v2a.5.5 0 0 1-1 0v-2h-2a.5.5 0 0 1 0-1h2v-2a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/node-plus.svg b/vendor/twbs/bootstrap-icons/icons/node-plus.svg
new file mode 100644
index 000000000..028ef2817
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/node-plus.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-node-plus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11 4a4 4 0 1 0 0 8 4 4 0 0 0 0-8M6.025 7.5a5 5 0 1 1 0 1H4A1.5 1.5 0 0 1 2.5 10h-1A1.5 1.5 0 0 1 0 8.5v-1A1.5 1.5 0 0 1 1.5 6h1A1.5 1.5 0 0 1 4 7.5zM11 5a.5.5 0 0 1 .5.5v2h2a.5.5 0 0 1 0 1h-2v2a.5.5 0 0 1-1 0v-2h-2a.5.5 0 0 1 0-1h2v-2A.5.5 0 0 1 11 5M1.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/noise-reduction.svg b/vendor/twbs/bootstrap-icons/icons/noise-reduction.svg
new file mode 100644
index 000000000..cd5e28859
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/noise-reduction.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-noise-reduction" viewBox="0 0 16 16">
+ <path d="M13 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1 1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m.5-.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m-5 7a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1.5-1.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1-1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1-1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1-1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1-1a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m-3 5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m.5-.5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m1-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M1 8a7 7 0 0 1 12.83-3.875.5.5 0 1 0 .15.235q.197.322.359.667a.5.5 0 1 0 .359.932q.201.658.27 1.364a.5.5 0 1 0 .021.282 7 7 0 0 1-.091 1.592.5.5 0 1 0-.172.75 7 7 0 0 1-.418 1.091.5.5 0 0 0-.3.555 7 7 0 0 1-.296.454.5.5 0 0 0-.712.453c0 .111.036.214.098.297a7 7 0 0 1-.3.3.5.5 0 0 0-.75.614 7 7 0 0 1-.455.298.5.5 0 0 0-.555.3 7 7 0 0 1-1.092.417.5.5 0 1 0-.749.172 7 7 0 0 1-1.592.091.5.5 0 1 0-.282-.021 7 7 0 0 1-1.364-.27A.498.498 0 0 0 5.5 14a.5.5 0 0 0-.473.339 7 7 0 0 1-.668-.36A.5.5 0 0 0 5 13.5a.5.5 0 1 0-.875.33A7 7 0 0 1 1 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/nut-fill.svg b/vendor/twbs/bootstrap-icons/icons/nut-fill.svg
new file mode 100644
index 000000000..18dfeb172
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/nut-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-nut-fill" viewBox="0 0 16 16">
+ <path d="M4.58 1a1 1 0 0 0-.868.504l-3.428 6a1 1 0 0 0 0 .992l3.428 6A1 1 0 0 0 4.58 15h6.84a1 1 0 0 0 .868-.504l3.429-6a1 1 0 0 0 0-.992l-3.429-6A1 1 0 0 0 11.42 1zm5.018 9.696a3 3 0 1 1-3-5.196 3 3 0 0 1 3 5.196"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/nut.svg b/vendor/twbs/bootstrap-icons/icons/nut.svg
new file mode 100644
index 000000000..75a401d4d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/nut.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-nut" viewBox="0 0 16 16">
+ <path d="m11.42 2 3.428 6-3.428 6H4.58L1.152 8 4.58 2zM4.58 1a1 1 0 0 0-.868.504l-3.428 6a1 1 0 0 0 0 .992l3.428 6A1 1 0 0 0 4.58 15h6.84a1 1 0 0 0 .868-.504l3.429-6a1 1 0 0 0 0-.992l-3.429-6A1 1 0 0 0 11.42 1z"/>
+ <path d="M6.848 5.933a2.5 2.5 0 1 0 2.5 4.33 2.5 2.5 0 0 0-2.5-4.33m-1.78 3.915a3.5 3.5 0 1 1 6.061-3.5 3.5 3.5 0 0 1-6.062 3.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/nvidia.svg b/vendor/twbs/bootstrap-icons/icons/nvidia.svg
new file mode 100644
index 000000000..438a6fc29
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/nvidia.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-nvidia" viewBox="0 0 16 16">
+ <path d="M1.635 7.146S3.08 5.012 5.97 4.791v-.774C2.77 4.273 0 6.983 0 6.983s1.57 4.536 5.97 4.952v-.824c-3.23-.406-4.335-3.965-4.335-3.965M5.97 9.475v.753c-2.44-.435-3.118-2.972-3.118-2.972S4.023 5.958 5.97 5.747v.828h-.004c-1.021-.123-1.82.83-1.82.83s.448 1.607 1.824 2.07M6 2l-.03 2.017A7 7 0 0 1 6.252 4c3.637-.123 6.007 2.983 6.007 2.983s-2.722 3.31-5.557 3.31q-.39-.002-.732-.065v.883q.292.039.61.04c2.638 0 4.546-1.348 6.394-2.943.307.246 1.561.842 1.819 1.104-1.757 1.47-5.852 2.657-8.173 2.657a7 7 0 0 1-.65-.034V14H16l.03-12zm-.03 3.747v-.956a6 6 0 0 1 .282-.015c2.616-.082 4.332 2.248 4.332 2.248S8.73 9.598 6.743 9.598c-.286 0-.542-.046-.773-.123v-2.9c1.018.123 1.223.572 1.835 1.593L9.167 7.02s-.994-1.304-2.67-1.304a5 5 0 0 0-.527.031"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/nvme-fill.svg b/vendor/twbs/bootstrap-icons/icons/nvme-fill.svg
new file mode 100644
index 000000000..962c3c63a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/nvme-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-nvme-fill" viewBox="0 0 16 16">
+ <path d="M6 7H5v2h1zm6 0H9v2h3z"/>
+ <path d="M2 4a.5.5 0 0 0-.5.5h-1A.5.5 0 0 0 0 5v1a.5.5 0 0 0 .5.5h1a.25.25 0 0 1 0 .5h-1a.5.5 0 0 0-.5.5V11a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5.5h13.5a.5.5 0 0 0 .5-.5V9a.5.5 0 0 0-.5-.5.5.5 0 0 1 0-1A.5.5 0 0 0 16 7V4.5a.5.5 0 0 0-.5-.5zm2 2.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4 0a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/nvme.svg b/vendor/twbs/bootstrap-icons/icons/nvme.svg
new file mode 100644
index 000000000..31a2fb6bb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/nvme.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-nvme" viewBox="0 0 16 16">
+ <path d="M1.5 4.5A.5.5 0 0 1 2 4h13.5a.5.5 0 0 1 .5.5V7a.5.5 0 0 1-.5.5.5.5 0 0 0 0 1 .5.5 0 0 1 .5.5v2.5a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5h-1A.5.5 0 0 1 0 11V7.5A.5.5 0 0 1 .5 7h1a.25.25 0 0 0 0-.5h-1A.5.5 0 0 1 0 6V5a.5.5 0 0 1 .5-.5zm1 .5a.5.5 0 0 1-.5.5h-.5a1.25 1.25 0 1 1 0 2.5H1v2.5h1a.5.5 0 0 1 .5.5H15V9.415a1.5 1.5 0 0 1 0-2.83V5z"/>
+ <path d="M4 6.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zM5 7v2h1V7zm3-.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5zM9 7v2h3V7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/octagon-fill.svg b/vendor/twbs/bootstrap-icons/icons/octagon-fill.svg
new file mode 100644
index 000000000..73c80f0ca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/octagon-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-octagon-fill" viewBox="0 0 16 16">
+ <path d="M11.107 0a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353L4.54.146A.5.5 0 0 1 4.893 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/octagon-half.svg b/vendor/twbs/bootstrap-icons/icons/octagon-half.svg
new file mode 100644
index 000000000..fe6eb4154
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/octagon-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-octagon-half" viewBox="0 0 16 16">
+ <path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM8 15h2.9l4.1-4.1V5.1L10.9 1H8z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/octagon.svg b/vendor/twbs/bootstrap-icons/icons/octagon.svg
new file mode 100644
index 000000000..d2d9c5c33
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/octagon.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-octagon" viewBox="0 0 16 16">
+ <path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/opencollective.svg b/vendor/twbs/bootstrap-icons/icons/opencollective.svg
new file mode 100644
index 000000000..b9a0c9ff4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/opencollective.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-opencollective" viewBox="0 0 16 16">
+ <path fill-opacity=".4" d="M12.995 8.195c0 .937-.312 1.912-.78 2.693l1.99 1.99c.976-1.327 1.6-2.966 1.6-4.683 0-1.795-.624-3.434-1.561-4.76l-2.068 2.028c.468.781.78 1.679.78 2.732z"/>
+ <path d="M8 13.151a4.995 4.995 0 1 1 0-9.99c1.015 0 1.951.273 2.732.82l1.95-2.03a7.805 7.805 0 1 0 .04 12.449l-1.951-2.03a5.07 5.07 0 0 1-2.732.781z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/optical-audio-fill.svg b/vendor/twbs/bootstrap-icons/icons/optical-audio-fill.svg
new file mode 100644
index 000000000..9b7406074
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/optical-audio-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-optical-audio-fill" viewBox="0 0 16 16">
+ <path d="M8 6a3 3 0 1 1 0 6 3 3 0 0 1 0-6m1 3a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/>
+ <path d="M2.5 15a.5.5 0 0 1-.5-.5v-3.05a2.5 2.5 0 0 1 0-4.9V4.5a.5.5 0 0 1 .146-.354l2-2A.5.5 0 0 1 4.5 2h7a.5.5 0 0 1 .354.146l2 2A.5.5 0 0 1 14 4.5v2.05a2.5 2.5 0 0 1 0 4.9v3.05a.5.5 0 0 1-.5.5zM8 5a4 4 0 1 0 0 8 4 4 0 0 0 0-8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/optical-audio.svg b/vendor/twbs/bootstrap-icons/icons/optical-audio.svg
new file mode 100644
index 000000000..253d1d70a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/optical-audio.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-optical-audio" viewBox="0 0 16 16">
+ <path d="M8 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+ <path d="M4.5 9a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0M8 6.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5"/>
+ <path d="M2 14.5a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-3.05a2.5 2.5 0 0 0 0-4.9V4.5a.5.5 0 0 0-.146-.354l-2-2A.5.5 0 0 0 11.5 2h-7a.5.5 0 0 0-.354.146l-2 2A.5.5 0 0 0 2 4.5v2.05a2.5 2.5 0 0 0 0 4.9zm1-.5v-3a.5.5 0 0 0-.5-.5 1.5 1.5 0 1 1 0-3A.5.5 0 0 0 3 7V4.707L4.707 3h6.586L13 4.707V7a.5.5 0 0 0 .5.5 1.5 1.5 0 0 1 0 3 .5.5 0 0 0-.5.5v3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/option.svg b/vendor/twbs/bootstrap-icons/icons/option.svg
new file mode 100644
index 000000000..32cce4c61
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/option.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-option" viewBox="0 0 16 16">
+ <path d="M1 2.5a.5.5 0 0 1 .5-.5h3.797a.5.5 0 0 1 .439.26L11 13h3.5a.5.5 0 0 1 0 1h-3.797a.5.5 0 0 1-.439-.26L5 3H1.5a.5.5 0 0 1-.5-.5m10 0a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/outlet.svg b/vendor/twbs/bootstrap-icons/icons/outlet.svg
new file mode 100644
index 000000000..7787f35d6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/outlet.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-outlet" viewBox="0 0 16 16">
+ <path d="M3.34 2.994c.275-.338.68-.494 1.074-.494h7.172c.393 0 .798.156 1.074.494.578.708 1.84 2.534 1.84 5.006s-1.262 4.297-1.84 5.006c-.276.338-.68.494-1.074.494H4.414c-.394 0-.799-.156-1.074-.494C2.762 12.297 1.5 10.472 1.5 8s1.262-4.297 1.84-5.006m1.074.506a.38.38 0 0 0-.299.126C3.599 4.259 2.5 5.863 2.5 8s1.099 3.74 1.615 4.374c.06.073.163.126.3.126h7.17c.137 0 .24-.053.3-.126.516-.633 1.615-2.237 1.615-4.374s-1.099-3.74-1.615-4.374a.38.38 0 0 0-.3-.126h-7.17z"/>
+ <path d="M6 5.5a.5.5 0 0 1 .5.5v1.5a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m4 0a.5.5 0 0 1 .5.5v1.5a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5M7 10v1h2v-1a1 1 0 0 0-2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/p-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/p-circle-fill.svg
new file mode 100644
index 000000000..e57d158e8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/p-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-p-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.5 4.002V12h1.283V9.164h1.668C10.033 9.164 11 8.08 11 6.586c0-1.482-.955-2.584-2.538-2.584zm2.77 4.072c.893 0 1.419-.545 1.419-1.488s-.526-1.482-1.42-1.482H6.778v2.97z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/p-circle.svg b/vendor/twbs/bootstrap-icons/icons/p-circle.svg
new file mode 100644
index 000000000..bfe68d940
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/p-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-p-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.5 4.002h2.962C10.045 4.002 11 5.104 11 6.586c0 1.494-.967 2.578-2.55 2.578H6.784V12H5.5zm2.77 4.072c.893 0 1.419-.545 1.419-1.488s-.526-1.482-1.42-1.482H6.778v2.97z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/p-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/p-square-fill.svg
new file mode 100644
index 000000000..164f5ebee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/p-square-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-p-square-fill" viewBox="0 0 16 16">
+ <path d="M8.27 8.074c.893 0 1.419-.545 1.419-1.488s-.526-1.482-1.42-1.482H6.778v2.97z"/>
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.5 4.002h2.962C10.045 4.002 11 5.104 11 6.586c0 1.494-.967 2.578-2.55 2.578H6.784V12H5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/p-square.svg b/vendor/twbs/bootstrap-icons/icons/p-square.svg
new file mode 100644
index 000000000..1f6335d38
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/p-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-p-square" viewBox="0 0 16 16">
+ <path d="M5.5 4.002h2.962C10.045 4.002 11 5.104 11 6.586c0 1.494-.967 2.578-2.55 2.578H6.784V12H5.5zm2.77 4.072c.893 0 1.419-.545 1.419-1.488s-.526-1.482-1.42-1.482H6.778v2.97z"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/paint-bucket.svg b/vendor/twbs/bootstrap-icons/icons/paint-bucket.svg
new file mode 100644
index 000000000..9ac2df453
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/paint-bucket.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-paint-bucket" viewBox="0 0 16 16">
+ <path d="M6.192 2.78c-.458-.677-.927-1.248-1.35-1.643a3 3 0 0 0-.71-.515c-.217-.104-.56-.205-.882-.02-.367.213-.427.63-.43.896-.003.304.064.664.173 1.044.196.687.556 1.528 1.035 2.402L.752 8.22c-.277.277-.269.656-.218.918.055.283.187.593.36.903.348.627.92 1.361 1.626 2.068.707.707 1.441 1.278 2.068 1.626.31.173.62.305.903.36.262.05.64.059.918-.218l5.615-5.615c.118.257.092.512.05.939-.03.292-.068.665-.073 1.176v.123h.003a1 1 0 0 0 1.993 0H14v-.057a1 1 0 0 0-.004-.117c-.055-1.25-.7-2.738-1.86-3.494a4 4 0 0 0-.211-.434c-.349-.626-.92-1.36-1.627-2.067S8.857 3.052 8.23 2.704c-.31-.172-.62-.304-.903-.36-.262-.05-.64-.058-.918.219zM4.16 1.867c.381.356.844.922 1.311 1.632l-.704.705c-.382-.727-.66-1.402-.813-1.938a3.3 3.3 0 0 1-.131-.673q.137.09.337.274m.394 3.965c.54.852 1.107 1.567 1.607 2.033a.5.5 0 1 0 .682-.732c-.453-.422-1.017-1.136-1.564-2.027l1.088-1.088q.081.181.183.365c.349.627.92 1.361 1.627 2.068.706.707 1.44 1.278 2.068 1.626q.183.103.365.183l-4.861 4.862-.068-.01c-.137-.027-.342-.104-.608-.252-.524-.292-1.186-.8-1.846-1.46s-1.168-1.32-1.46-1.846c-.147-.265-.225-.47-.251-.607l-.01-.068zm2.87-1.935a2.4 2.4 0 0 1-.241-.561c.135.033.324.11.562.241.524.292 1.186.8 1.846 1.46.45.45.83.901 1.118 1.31a3.5 3.5 0 0 0-1.066.091 11 11 0 0 1-.76-.694c-.66-.66-1.167-1.322-1.458-1.847z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/palette-fill.svg b/vendor/twbs/bootstrap-icons/icons/palette-fill.svg
new file mode 100644
index 000000000..d7a6a3bc1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/palette-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-palette-fill" viewBox="0 0 16 16">
+ <path d="M12.433 10.07C14.133 10.585 16 11.15 16 8a8 8 0 1 0-8 8c1.996 0 1.826-1.504 1.649-3.08-.124-1.101-.252-2.237.351-2.92.465-.527 1.42-.237 2.433.07M8 5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m4.5 3a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3M5 6.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m.5 6.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/palette.svg b/vendor/twbs/bootstrap-icons/icons/palette.svg
new file mode 100644
index 000000000..1cd490fd3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/palette.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-palette" viewBox="0 0 16 16">
+ <path d="M8 5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m4 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3M5.5 7a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m.5 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/>
+ <path d="M16 8c0 3.15-1.866 2.585-3.567 2.07C11.42 9.763 10.465 9.473 10 10c-.603.683-.475 1.819-.351 2.92C9.826 14.495 9.996 16 8 16a8 8 0 1 1 8-8m-8 7c.611 0 .654-.171.655-.176.078-.146.124-.464.07-1.119-.014-.168-.037-.37-.061-.591-.052-.464-.112-1.005-.118-1.462-.01-.707.083-1.61.704-2.314.369-.417.845-.578 1.272-.618.404-.038.812.026 1.16.104.343.077.702.186 1.025.284l.028.008c.346.105.658.199.953.266.653.148.904.083.991.024C14.717 9.38 15 9.161 15 8a7 7 0 1 0-7 7"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/palette2.svg b/vendor/twbs/bootstrap-icons/icons/palette2.svg
new file mode 100644
index 000000000..ae65e88e8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/palette2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-palette2" viewBox="0 0 16 16">
+ <path d="M0 .5A.5.5 0 0 1 .5 0h5a.5.5 0 0 1 .5.5v5.277l4.147-4.131a.5.5 0 0 1 .707 0l3.535 3.536a.5.5 0 0 1 0 .708L10.261 10H15.5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H3a3 3 0 0 1-2.121-.879A3 3 0 0 1 0 13.044m6-.21 7.328-7.3-2.829-2.828L6 7.188zM4.5 13a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0M15 15v-4H9.258l-4.015 4zM0 .5v12.495zm0 12.495V13z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/paperclip.svg b/vendor/twbs/bootstrap-icons/icons/paperclip.svg
new file mode 100644
index 000000000..c02950b53
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/paperclip.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-paperclip" viewBox="0 0 16 16">
+ <path d="M4.5 3a2.5 2.5 0 0 1 5 0v9a1.5 1.5 0 0 1-3 0V5a.5.5 0 0 1 1 0v7a.5.5 0 0 0 1 0V3a1.5 1.5 0 1 0-3 0v9a2.5 2.5 0 0 0 5 0V5a.5.5 0 0 1 1 0v7a3.5 3.5 0 1 1-7 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/paragraph.svg b/vendor/twbs/bootstrap-icons/icons/paragraph.svg
new file mode 100644
index 000000000..38c65d442
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/paragraph.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-paragraph" viewBox="0 0 16 16">
+ <path d="M10.5 15a.5.5 0 0 1-.5-.5V2H9v12.5a.5.5 0 0 1-1 0V9H7a4 4 0 1 1 0-8h5.5a.5.5 0 0 1 0 1H11v12.5a.5.5 0 0 1-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pass-fill.svg b/vendor/twbs/bootstrap-icons/icons/pass-fill.svg
new file mode 100644
index 000000000..1e15dd9d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pass-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pass-fill" viewBox="0 0 16 16">
+ <path d="M10 0a2 2 0 1 1-4 0H3.5A1.5 1.5 0 0 0 2 1.5v13A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 12.5 0zM4.5 5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1m0 2h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pass.svg b/vendor/twbs/bootstrap-icons/icons/pass.svg
new file mode 100644
index 000000000..20a06bc64
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pass.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pass" viewBox="0 0 16 16">
+ <path d="M5.5 5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/>
+ <path d="M8 2a2 2 0 0 0 2-2h2.5A1.5 1.5 0 0 1 14 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5v-13A1.5 1.5 0 0 1 3.5 0H6a2 2 0 0 0 2 2m0 1a3 3 0 0 1-2.83-2H3.5a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-13a.5.5 0 0 0-.5-.5h-1.67A3 3 0 0 1 8 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/passport-fill.svg b/vendor/twbs/bootstrap-icons/icons/passport-fill.svg
new file mode 100644
index 000000000..d42c1b988
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/passport-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-passport-fill" viewBox="0 0 16 16">
+ <path d="M8 6a2 2 0 1 0 0 4 2 2 0 0 0 0-4"/>
+ <path d="M2 3.252a1.5 1.5 0 0 1 1.232-1.476l8-1.454A1.5 1.5 0 0 1 13 1.797v.47A2 2 0 0 1 14 4v10a2 2 0 0 1-2 2H4a2 2 0 0 1-1.51-.688 1.5 1.5 0 0 1-.49-1.11V3.253ZM5 8a3 3 0 1 0 6 0 3 3 0 0 0-6 0m0 4.5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/passport.svg b/vendor/twbs/bootstrap-icons/icons/passport.svg
new file mode 100644
index 000000000..2ecee5aa5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/passport.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-passport" viewBox="0 0 16 16">
+ <path d="M8 5a3 3 0 1 0 0 6 3 3 0 0 0 0-6M6 8a2 2 0 1 1 4 0 2 2 0 0 1-4 0m-.5 4a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1z"/>
+ <path d="M3.232 1.776A1.5 1.5 0 0 0 2 3.252v10.95c0 .445.191.838.49 1.11.367.422.908.688 1.51.688h8a2 2 0 0 0 2-2V4a2 2 0 0 0-1-1.732v-.47A1.5 1.5 0 0 0 11.232.321l-8 1.454ZM4 3h8a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/patch-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/patch-check-fill.svg
new file mode 100644
index 000000000..91283e229
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/patch-check-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-patch-check-fill" viewBox="0 0 16 16">
+ <path d="M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01zm.287 5.984-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/patch-check.svg b/vendor/twbs/bootstrap-icons/icons/patch-check.svg
new file mode 100644
index 000000000..1fd0a2e92
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/patch-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-patch-check" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.354 6.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7 8.793l2.646-2.647a.5.5 0 0 1 .708 0"/>
+ <path d="m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/patch-exclamation-fill.svg b/vendor/twbs/bootstrap-icons/icons/patch-exclamation-fill.svg
new file mode 100644
index 000000000..e745268c2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/patch-exclamation-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-patch-exclamation-fill" viewBox="0 0 16 16">
+ <path d="M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01zM8 4c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995A.905.905 0 0 1 8 4m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/patch-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/patch-exclamation.svg
new file mode 100644
index 000000000..2372cc6a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/patch-exclamation.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-patch-exclamation" viewBox="0 0 16 16">
+ <path d="M7.001 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.553.553 0 0 1-1.1 0z"/>
+ <path d="m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/patch-minus-fill.svg b/vendor/twbs/bootstrap-icons/icons/patch-minus-fill.svg
new file mode 100644
index 000000000..bfeb96eed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/patch-minus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-patch-minus-fill" viewBox="0 0 16 16">
+ <path d="M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01zM6 7.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/patch-minus.svg b/vendor/twbs/bootstrap-icons/icons/patch-minus.svg
new file mode 100644
index 000000000..35a380cf9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/patch-minus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-patch-minus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+ <path d="m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/patch-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/patch-plus-fill.svg
new file mode 100644
index 000000000..b47509800
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/patch-plus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-patch-plus-fill" viewBox="0 0 16 16">
+ <path d="M10.067.87a2.89 2.89 0 0 0-4.134 0l-.622.638-.89-.011a2.89 2.89 0 0 0-2.924 2.924l.01.89-.636.622a2.89 2.89 0 0 0 0 4.134l.637.622-.011.89a2.89 2.89 0 0 0 2.924 2.924l.89-.01.622.636a2.89 2.89 0 0 0 4.134 0l.622-.637.89.011a2.89 2.89 0 0 0 2.924-2.924l-.01-.89.636-.622a2.89 2.89 0 0 0 0-4.134l-.637-.622.011-.89a2.89 2.89 0 0 0-2.924-2.924l-.89.01zM8.5 6v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/patch-plus.svg b/vendor/twbs/bootstrap-icons/icons/patch-plus.svg
new file mode 100644
index 000000000..4f332daf7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/patch-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-patch-plus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 5.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V10a.5.5 0 0 1-1 0V8.5H6a.5.5 0 0 1 0-1h1.5V6a.5.5 0 0 1 .5-.5"/>
+ <path d="m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/patch-question-fill.svg b/vendor/twbs/bootstrap-icons/icons/patch-question-fill.svg
new file mode 100644
index 000000000..101c25524
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/patch-question-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-patch-question-fill" viewBox="0 0 16 16">
+ <path d="M5.933.87a2.89 2.89 0 0 1 4.134 0l.622.638.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01zM7.002 11a1 1 0 1 0 2 0 1 1 0 0 0-2 0m1.602-2.027c.04-.534.198-.815.846-1.26.674-.475 1.05-1.09 1.05-1.986 0-1.325-.92-2.227-2.262-2.227-1.02 0-1.792.492-2.1 1.29A1.7 1.7 0 0 0 6 5.48c0 .393.203.64.545.64.272 0 .455-.147.564-.51.158-.592.525-.915 1.074-.915.61 0 1.03.446 1.03 1.084 0 .563-.208.885-.822 1.325-.619.433-.926.914-.926 1.64v.111c0 .428.208.745.585.745.336 0 .504-.24.554-.627"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/patch-question.svg b/vendor/twbs/bootstrap-icons/icons/patch-question.svg
new file mode 100644
index 000000000..a777cef9f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/patch-question.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-patch-question" viewBox="0 0 16 16">
+ <path d="M8.05 9.6c.336 0 .504-.24.554-.627.04-.534.198-.815.847-1.26.673-.475 1.049-1.09 1.049-1.986 0-1.325-.92-2.227-2.262-2.227-1.02 0-1.792.492-2.1 1.29A1.7 1.7 0 0 0 6 5.48c0 .393.203.64.545.64.272 0 .455-.147.564-.51.158-.592.525-.915 1.074-.915.61 0 1.03.446 1.03 1.084 0 .563-.208.885-.822 1.325-.619.433-.926.914-.926 1.64v.111c0 .428.208.745.585.745"/>
+ <path d="m10.273 2.513-.921-.944.715-.698.622.637.89-.011a2.89 2.89 0 0 1 2.924 2.924l-.01.89.636.622a2.89 2.89 0 0 1 0 4.134l-.637.622.011.89a2.89 2.89 0 0 1-2.924 2.924l-.89-.01-.622.636a2.89 2.89 0 0 1-4.134 0l-.622-.637-.89.011a2.89 2.89 0 0 1-2.924-2.924l.01-.89-.636-.622a2.89 2.89 0 0 1 0-4.134l.637-.622-.011-.89a2.89 2.89 0 0 1 2.924-2.924l.89.01.622-.636a2.89 2.89 0 0 1 4.134 0l-.715.698a1.89 1.89 0 0 0-2.704 0l-.92.944-1.32-.016a1.89 1.89 0 0 0-1.911 1.912l.016 1.318-.944.921a1.89 1.89 0 0 0 0 2.704l.944.92-.016 1.32a1.89 1.89 0 0 0 1.912 1.911l1.318-.016.921.944a1.89 1.89 0 0 0 2.704 0l.92-.944 1.32.016a1.89 1.89 0 0 0 1.911-1.912l-.016-1.318.944-.921a1.89 1.89 0 0 0 0-2.704l-.944-.92.016-1.32a1.89 1.89 0 0 0-1.912-1.911z"/>
+ <path d="M7.001 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pause-btn-fill.svg b/vendor/twbs/bootstrap-icons/icons/pause-btn-fill.svg
new file mode 100644
index 000000000..81c0720d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pause-btn-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pause-btn-fill" viewBox="0 0 16 16">
+ <path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m6.25-7C5.56 5 5 5.56 5 6.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C7.5 5.56 6.94 5 6.25 5m3.5 0c-.69 0-1.25.56-1.25 1.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C11 5.56 10.44 5 9.75 5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pause-btn.svg b/vendor/twbs/bootstrap-icons/icons/pause-btn.svg
new file mode 100644
index 000000000..e2d68f9ab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pause-btn.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pause-btn" viewBox="0 0 16 16">
+ <path d="M6.25 5C5.56 5 5 5.56 5 6.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C7.5 5.56 6.94 5 6.25 5m3.5 0c-.69 0-1.25.56-1.25 1.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C11 5.56 10.44 5 9.75 5"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pause-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/pause-circle-fill.svg
new file mode 100644
index 000000000..90c4ca56c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pause-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pause-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.25 5C5.56 5 5 5.56 5 6.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C7.5 5.56 6.94 5 6.25 5m3.5 0c-.69 0-1.25.56-1.25 1.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C11 5.56 10.44 5 9.75 5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pause-circle.svg b/vendor/twbs/bootstrap-icons/icons/pause-circle.svg
new file mode 100644
index 000000000..6d3aeff01
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pause-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pause-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M5 6.25a1.25 1.25 0 1 1 2.5 0v3.5a1.25 1.25 0 1 1-2.5 0zm3.5 0a1.25 1.25 0 1 1 2.5 0v3.5a1.25 1.25 0 1 1-2.5 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pause-fill.svg b/vendor/twbs/bootstrap-icons/icons/pause-fill.svg
new file mode 100644
index 000000000..92e1588fa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pause-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pause-fill" viewBox="0 0 16 16">
+ <path d="M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pause.svg b/vendor/twbs/bootstrap-icons/icons/pause.svg
new file mode 100644
index 000000000..7bfde2ceb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pause.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pause" viewBox="0 0 16 16">
+ <path d="M6 3.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V4a.5.5 0 0 1 .5-.5m4 0a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V4a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/paypal.svg b/vendor/twbs/bootstrap-icons/icons/paypal.svg
new file mode 100644
index 000000000..b2cec8842
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/paypal.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-paypal" viewBox="0 0 16 16">
+ <path d="M14.06 3.713c.12-1.071-.093-1.832-.702-2.526C12.628.356 11.312 0 9.626 0H4.734a.7.7 0 0 0-.691.59L2.005 13.509a.42.42 0 0 0 .415.486h2.756l-.202 1.28a.628.628 0 0 0 .62.726H8.14c.429 0 .793-.31.862-.731l.025-.13.48-3.043.03-.164.001-.007a.35.35 0 0 1 .348-.297h.38c1.266 0 2.425-.256 3.345-.91q.57-.403.993-1.005a4.94 4.94 0 0 0 .88-2.195c.242-1.246.13-2.356-.57-3.154a2.7 2.7 0 0 0-.76-.59l-.094-.061ZM6.543 8.82a.7.7 0 0 1 .321-.079H8.3c2.82 0 5.027-1.144 5.672-4.456l.003-.016q.326.186.548.438c.546.623.679 1.535.45 2.71-.272 1.397-.866 2.307-1.663 2.874-.802.57-1.842.815-3.043.815h-.38a.87.87 0 0 0-.863.734l-.03.164-.48 3.043-.024.13-.001.004a.35.35 0 0 1-.348.296H5.595a.106.106 0 0 1-.105-.123l.208-1.32z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pc-display-horizontal.svg b/vendor/twbs/bootstrap-icons/icons/pc-display-horizontal.svg
new file mode 100644
index 000000000..724ba8658
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pc-display-horizontal.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pc-display-horizontal" viewBox="0 0 16 16">
+ <path d="M1.5 0A1.5 1.5 0 0 0 0 1.5v7A1.5 1.5 0 0 0 1.5 10H6v1H1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-5v-1h4.5A1.5 1.5 0 0 0 16 8.5v-7A1.5 1.5 0 0 0 14.5 0zm0 1h13a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5M12 12.5a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0m2 0a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0M1.5 12h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1M1 14.25a.25.25 0 0 1 .25-.25h5.5a.25.25 0 1 1 0 .5h-5.5a.25.25 0 0 1-.25-.25"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pc-display.svg b/vendor/twbs/bootstrap-icons/icons/pc-display.svg
new file mode 100644
index 000000000..c3cf9dde6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pc-display.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pc-display" viewBox="0 0 16 16">
+ <path d="M8 1a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1zm1 13.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m2 0a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0M9.5 1a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zM9 3.5a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5M1.5 2A1.5 1.5 0 0 0 0 3.5v7A1.5 1.5 0 0 0 1.5 12H6v2h-.5a.5.5 0 0 0 0 1H7v-4H1.5a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5H7V2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pc-horizontal.svg b/vendor/twbs/bootstrap-icons/icons/pc-horizontal.svg
new file mode 100644
index 000000000..a8ae72fcf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pc-horizontal.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pc-horizontal" viewBox="0 0 16 16">
+ <path d="M1 6a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1zm11.5 1a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1m2 0a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1M1 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5M1.25 9h5.5a.25.25 0 0 1 0 .5h-5.5a.25.25 0 0 1 0-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pc.svg b/vendor/twbs/bootstrap-icons/icons/pc.svg
new file mode 100644
index 000000000..a8c023a05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pc.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pc" viewBox="0 0 16 16">
+ <path d="M5 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm.5 14a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1m2 0a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1M5 1.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5M5.5 3h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pci-card-network.svg b/vendor/twbs/bootstrap-icons/icons/pci-card-network.svg
new file mode 100644
index 000000000..a2b4359b9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pci-card-network.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pci-card-network" viewBox="0 0 16 16">
+ <path d="M6.5 9.5v-2h.214a.5.5 0 0 0 .5-.5v-.5h2.572V7a.5.5 0 0 0 .5.5h.214v2z"/>
+ <path d="M0 1.5A.5.5 0 0 1 .5 1h1a.5.5 0 0 1 .5.5V4h13.5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5H2v2.5a.5.5 0 0 1-1 0V2H.5a.5.5 0 0 1-.5-.5m6.714 4a.5.5 0 0 0-.5.5v.5H6a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5V7a.5.5 0 0 0-.5-.5h-.214V6a.5.5 0 0 0-.5-.5z"/>
+ <path d="M3 12.5h3.5v1a.5.5 0 0 1-.5.5H3.5a.5.5 0 0 1-.5-.5zm8 0H7v1a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pci-card-sound.svg b/vendor/twbs/bootstrap-icons/icons/pci-card-sound.svg
new file mode 100644
index 000000000..2bb98f211
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pci-card-sound.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pci-card-sound" viewBox="0 0 16 16">
+ <path d="M7.562 7.39 8 7.04v1.92l-.438-.35a.5.5 0 0 0-.312-.11H6.5v-1h.75a.5.5 0 0 0 .312-.11"/>
+ <path d="M.5 1a.5.5 0 0 0 0 1H1v12.5a.5.5 0 0 0 1 0V12h13.5a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.5-.5H2V1.5a.5.5 0 0 0-.5-.5zm11.619 3.881q.15.173.28.367c.484.726.768 1.7.768 2.752s-.284 2.026-.768 2.752q-.13.195-.28.367l-.71-.71q.082-.096.158-.212c.36-.54.6-1.315.6-2.197s-.24-1.657-.6-2.198a3 3 0 0 0-.157-.212zm-1.375 4.863L10 9c.057 0 .17-.035.291-.217.12-.178.209-.454.209-.783 0-.33-.09-.605-.209-.783C10.17 7.035 10.057 7 10 7l.744-.744c.15.113.278.254.38.406.242.364.376.839.376 1.338s-.134.974-.377 1.338a1.7 1.7 0 0 1-.379.406M9 6v4a.5.5 0 0 1-.812.39L7.075 9.5H6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h1.075l1.113-.89A.5.5 0 0 1 9 6"/>
+ <path d="M6.5 12.5H3v1a.5.5 0 0 0 .5.5H6a.5.5 0 0 0 .5-.5zm.5 1v-1h4v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pci-card.svg b/vendor/twbs/bootstrap-icons/icons/pci-card.svg
new file mode 100644
index 000000000..66ff052f2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pci-card.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pci-card" viewBox="0 0 16 16">
+ <path d="M0 1.5A.5.5 0 0 1 .5 1h1a.5.5 0 0 1 .5.5V4h13.5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5H2v2.5a.5.5 0 0 1-1 0V2H.5a.5.5 0 0 1-.5-.5"/>
+ <path d="M3 12.5h3.5v1a.5.5 0 0 1-.5.5H3.5a.5.5 0 0 1-.5-.5zm4 0h4v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/peace-fill.svg b/vendor/twbs/bootstrap-icons/icons/peace-fill.svg
new file mode 100644
index 000000000..a93e64dce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/peace-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-peace-fill" viewBox="0 0 16 16">
+ <path d="M14 13.292A8 8 0 0 0 8.5.015v7.778zm-.708.708L8.5 9.206v6.778a7.97 7.97 0 0 0 4.792-1.986zM7.5 15.985V9.207L2.708 14A7.97 7.97 0 0 0 7.5 15.985M2 13.292A8 8 0 0 1 7.5.015v7.778z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/peace.svg b/vendor/twbs/bootstrap-icons/icons/peace.svg
new file mode 100644
index 000000000..22367e058
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/peace.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-peace" viewBox="0 0 16 16">
+ <path d="M7.5 1.018a7 7 0 0 0-4.79 11.566L7.5 7.793zm1 0v6.775l4.79 4.79A7 7 0 0 0 8.5 1.018m4.084 12.273L8.5 9.207v5.775a6.97 6.97 0 0 0 4.084-1.691M7.5 14.982V9.207l-4.084 4.084A6.97 6.97 0 0 0 7.5 14.982M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pen-fill.svg b/vendor/twbs/bootstrap-icons/icons/pen-fill.svg
new file mode 100644
index 000000000..59bbb2ebb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pen-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pen-fill" viewBox="0 0 16 16">
+ <path d="m13.498.795.149-.149a1.207 1.207 0 1 1 1.707 1.708l-.149.148a1.5 1.5 0 0 1-.059 2.059L4.854 14.854a.5.5 0 0 1-.233.131l-4 1a.5.5 0 0 1-.606-.606l1-4a.5.5 0 0 1 .131-.232l9.642-9.642a.5.5 0 0 0-.642.056L6.854 4.854a.5.5 0 1 1-.708-.708L9.44.854A1.5 1.5 0 0 1 11.5.796a1.5 1.5 0 0 1 1.998-.001"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pen.svg b/vendor/twbs/bootstrap-icons/icons/pen.svg
new file mode 100644
index 000000000..a63b25057
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pen.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pen" viewBox="0 0 16 16">
+ <path d="m13.498.795.149-.149a1.207 1.207 0 1 1 1.707 1.708l-.149.148a1.5 1.5 0 0 1-.059 2.059L4.854 14.854a.5.5 0 0 1-.233.131l-4 1a.5.5 0 0 1-.606-.606l1-4a.5.5 0 0 1 .131-.232l9.642-9.642a.5.5 0 0 0-.642.056L6.854 4.854a.5.5 0 1 1-.708-.708L9.44.854A1.5 1.5 0 0 1 11.5.796a1.5 1.5 0 0 1 1.998-.001m-.644.766a.5.5 0 0 0-.707 0L1.95 11.756l-.764 3.057 3.057-.764L14.44 3.854a.5.5 0 0 0 0-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pencil-fill.svg b/vendor/twbs/bootstrap-icons/icons/pencil-fill.svg
new file mode 100644
index 000000000..4b3bdd737
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pencil-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pencil-fill" viewBox="0 0 16 16">
+ <path d="M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708zm.646 6.061L9.793 2.5 3.293 9H3.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.207zm-7.468 7.468A.5.5 0 0 1 6 13.5V13h-.5a.5.5 0 0 1-.5-.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.5-.5V10h-.5a.5.5 0 0 1-.175-.032l-.179.178a.5.5 0 0 0-.11.168l-2 5a.5.5 0 0 0 .65.65l5-2a.5.5 0 0 0 .168-.11z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pencil-square.svg b/vendor/twbs/bootstrap-icons/icons/pencil-square.svg
new file mode 100644
index 000000000..95c052975
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pencil-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pencil-square" viewBox="0 0 16 16">
+ <path d="M15.502 1.94a.5.5 0 0 1 0 .706L14.459 3.69l-2-2L13.502.646a.5.5 0 0 1 .707 0l1.293 1.293zm-1.75 2.456-2-2L4.939 9.21a.5.5 0 0 0-.121.196l-.805 2.414a.25.25 0 0 0 .316.316l2.414-.805a.5.5 0 0 0 .196-.12l6.813-6.814z"/>
+ <path fill-rule="evenodd" d="M1 13.5A1.5 1.5 0 0 0 2.5 15h11a1.5 1.5 0 0 0 1.5-1.5v-6a.5.5 0 0 0-1 0v6a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .5-.5H9a.5.5 0 0 0 0-1H2.5A1.5 1.5 0 0 0 1 2.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pencil.svg b/vendor/twbs/bootstrap-icons/icons/pencil.svg
new file mode 100644
index 000000000..0b84e3681
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pencil.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pencil" viewBox="0 0 16 16">
+ <path d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168zM11.207 2.5 13.5 4.793 14.793 3.5 12.5 1.207zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293zm-9.761 5.175-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pentagon-fill.svg b/vendor/twbs/bootstrap-icons/icons/pentagon-fill.svg
new file mode 100644
index 000000000..9c8078906
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pentagon-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pentagon-fill" viewBox="0 0 16 16">
+ <path d="M7.685.256a.5.5 0 0 1 .63 0l7.421 6.03a.5.5 0 0 1 .162.538l-2.788 8.827a.5.5 0 0 1-.476.349H3.366a.5.5 0 0 1-.476-.35L.102 6.825a.5.5 0 0 1 .162-.538l7.42-6.03Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pentagon-half.svg b/vendor/twbs/bootstrap-icons/icons/pentagon-half.svg
new file mode 100644
index 000000000..6811a9359
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pentagon-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pentagon-half" viewBox="0 0 16 16">
+ <path d="m8 1.288 6.578 5.345a.5.5 0 0 1 .161.539l-2.362 7.479a.5.5 0 0 1-.476.349H8zm7.898 5.536a.5.5 0 0 0-.162-.538L8.316.256a.5.5 0 0 0-.631 0L.264 6.286a.5.5 0 0 0-.162.538l2.788 8.827a.5.5 0 0 0 .476.349h9.268a.5.5 0 0 0 .476-.35z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pentagon.svg b/vendor/twbs/bootstrap-icons/icons/pentagon.svg
new file mode 100644
index 000000000..b6f5fe300
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pentagon.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pentagon" viewBox="0 0 16 16">
+ <path d="M7.685 1.545a.5.5 0 0 1 .63 0l6.263 5.088a.5.5 0 0 1 .161.539l-2.362 7.479a.5.5 0 0 1-.476.349H4.099a.5.5 0 0 1-.476-.35L1.26 7.173a.5.5 0 0 1 .161-.54l6.263-5.087Zm8.213 5.28a.5.5 0 0 0-.162-.54L8.316.257a.5.5 0 0 0-.631 0L.264 6.286a.5.5 0 0 0-.162.538l2.788 8.827a.5.5 0 0 0 .476.349h9.268a.5.5 0 0 0 .476-.35l2.788-8.826Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/people-fill.svg b/vendor/twbs/bootstrap-icons/icons/people-fill.svg
new file mode 100644
index 000000000..2b9f76876
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/people-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-people-fill" viewBox="0 0 16 16">
+ <path d="M7 14s-1 0-1-1 1-4 5-4 5 3 5 4-1 1-1 1zm4-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6m-5.784 6A2.24 2.24 0 0 1 5 13c0-1.355.68-2.75 1.936-3.72A6.3 6.3 0 0 0 5 9c-4 0-5 3-5 4s1 1 1 1zM4.5 8a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/people.svg b/vendor/twbs/bootstrap-icons/icons/people.svg
new file mode 100644
index 000000000..341861a40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/people.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-people" viewBox="0 0 16 16">
+ <path d="M15 14s1 0 1-1-1-4-5-4-5 3-5 4 1 1 1 1zm-7.978-1L7 12.996c.001-.264.167-1.03.76-1.72C8.312 10.629 9.282 10 11 10c1.717 0 2.687.63 3.24 1.276.593.69.758 1.457.76 1.72l-.008.002-.014.002zM11 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m3-2a3 3 0 1 1-6 0 3 3 0 0 1 6 0M6.936 9.28a6 6 0 0 0-1.23-.247A7 7 0 0 0 5 9c-4 0-5 3-5 4q0 1 1 1h4.216A2.24 2.24 0 0 1 5 13c0-1.01.377-2.042 1.09-2.904.243-.294.526-.569.846-.816M4.92 10A5.5 5.5 0 0 0 4 13H1c0-.26.164-1.03.76-1.724.545-.636 1.492-1.256 3.16-1.275ZM1.5 5.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0m3-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/percent.svg b/vendor/twbs/bootstrap-icons/icons/percent.svg
new file mode 100644
index 000000000..c0fd22d65
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/percent.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-percent" viewBox="0 0 16 16">
+ <path d="M13.442 2.558a.625.625 0 0 1 0 .884l-10 10a.625.625 0 1 1-.884-.884l10-10a.625.625 0 0 1 .884 0M4.5 6a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5m7 6a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-add.svg b/vendor/twbs/bootstrap-icons/icons/person-add.svg
new file mode 100644
index 000000000..66e250869
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-add.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-add" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0m-2-6a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+ <path d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-arms-up.svg b/vendor/twbs/bootstrap-icons/icons/person-arms-up.svg
new file mode 100644
index 000000000..deb50e8f1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-arms-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-arms-up" viewBox="0 0 16 16">
+ <path d="M8 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/>
+ <path d="m5.93 6.704-.846 8.451a.768.768 0 0 0 1.523.203l.81-4.865a.59.59 0 0 1 1.165 0l.81 4.865a.768.768 0 0 0 1.523-.203l-.845-8.451A1.5 1.5 0 0 1 10.5 5.5L13 2.284a.796.796 0 0 0-1.239-.998L9.634 3.84a.7.7 0 0 1-.33.235c-.23.074-.665.176-1.304.176-.64 0-1.074-.102-1.305-.176a.7.7 0 0 1-.329-.235L4.239 1.286a.796.796 0 0 0-1.24.998l2.5 3.216c.317.316.475.758.43 1.204Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-badge-fill.svg b/vendor/twbs/bootstrap-icons/icons/person-badge-fill.svg
new file mode 100644
index 000000000..7110ed3ff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-badge-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-badge-fill" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm4.5 0a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zM8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6m5 2.755C12.146 12.825 10.623 12 8 12s-4.146.826-5 1.755V14a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-badge.svg b/vendor/twbs/bootstrap-icons/icons/person-badge.svg
new file mode 100644
index 000000000..680aee15f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-badge.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-badge" viewBox="0 0 16 16">
+ <path d="M6.5 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+ <path d="M4.5 0A2.5 2.5 0 0 0 2 2.5V14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2.5A2.5 2.5 0 0 0 11.5 0zM3 2.5A1.5 1.5 0 0 1 4.5 1h7A1.5 1.5 0 0 1 13 2.5v10.795a4.2 4.2 0 0 0-.776-.492C11.392 12.387 10.063 12 8 12s-3.392.387-4.224.803a4.2 4.2 0 0 0-.776.492z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-bounding-box.svg b/vendor/twbs/bootstrap-icons/icons/person-bounding-box.svg
new file mode 100644
index 000000000..d9be6757f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-bounding-box.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-bounding-box" viewBox="0 0 16 16">
+ <path d="M1.5 1a.5.5 0 0 0-.5.5v3a.5.5 0 0 1-1 0v-3A1.5 1.5 0 0 1 1.5 0h3a.5.5 0 0 1 0 1zM11 .5a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 1 16 1.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 1-.5-.5M.5 11a.5.5 0 0 1 .5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 1 0 1h-3A1.5 1.5 0 0 1 0 14.5v-3a.5.5 0 0 1 .5-.5m15 0a.5.5 0 0 1 .5.5v3a1.5 1.5 0 0 1-1.5 1.5h-3a.5.5 0 0 1 0-1h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 1 .5-.5"/>
+ <path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm8-9a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/person-check-fill.svg
new file mode 100644
index 000000000..04b95d340
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-check-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-check-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15.854 5.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L12.5 7.793l2.646-2.647a.5.5 0 0 1 .708 0"/>
+ <path d="M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-check.svg b/vendor/twbs/bootstrap-icons/icons/person-check.svg
new file mode 100644
index 000000000..39b42198f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-check" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+ <path d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-circle.svg b/vendor/twbs/bootstrap-icons/icons/person-circle.svg
new file mode 100644
index 000000000..a75f25fcc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-circle" viewBox="0 0 16 16">
+ <path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+ <path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-dash-fill.svg b/vendor/twbs/bootstrap-icons/icons/person-dash-fill.svg
new file mode 100644
index 000000000..9879e6e46
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-dash-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-dash-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11 7.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5"/>
+ <path d="M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-dash.svg b/vendor/twbs/bootstrap-icons/icons/person-dash.svg
new file mode 100644
index 000000000..b61190bf8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-dash" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1m0-7a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+ <path d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-down.svg b/vendor/twbs/bootstrap-icons/icons/person-down.svg
new file mode 100644
index 000000000..79cf29a50
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-down" viewBox="0 0 16 16">
+ <path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+ <path d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/person-exclamation.svg
new file mode 100644
index 000000000..46fb5065a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-exclamation.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-exclamation" viewBox="0 0 16 16">
+ <path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m.256 7a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-fill-add.svg b/vendor/twbs/bootstrap-icons/icons/person-fill-add.svg
new file mode 100644
index 000000000..d6d15f97e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-fill-add.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-fill-add" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0m-2-6a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+ <path d="M2 13c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-fill-check.svg b/vendor/twbs/bootstrap-icons/icons/person-fill-check.svg
new file mode 100644
index 000000000..19b88a435
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-fill-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-fill-check" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+ <path d="M2 13c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-fill-dash.svg b/vendor/twbs/bootstrap-icons/icons/person-fill-dash.svg
new file mode 100644
index 000000000..24c294456
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-fill-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-fill-dash" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7M11 12h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1m0-7a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+ <path d="M2 13c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-fill-down.svg b/vendor/twbs/bootstrap-icons/icons/person-fill-down.svg
new file mode 100644
index 000000000..714ae50ad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-fill-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-fill-down" viewBox="0 0 16 16">
+ <path d="M12.5 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7m.354 5.854 1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V10.5a.5.5 0 0 0-1 0v2.793l-.646-.647a.5.5 0 0 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+ <path d="M2 13c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-fill-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/person-fill-exclamation.svg
new file mode 100644
index 000000000..5c3b7f56d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-fill-exclamation.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-fill-exclamation" viewBox="0 0 16 16">
+ <path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1.5a.5.5 0 0 0 1 0V11a.5.5 0 0 0-.5-.5m0 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-fill-gear.svg b/vendor/twbs/bootstrap-icons/icons/person-fill-gear.svg
new file mode 100644
index 000000000..33b120a1b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-fill-gear.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-fill-gear" viewBox="0 0 16 16">
+ <path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4m9.886-3.54c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-fill-lock.svg b/vendor/twbs/bootstrap-icons/icons/person-fill-lock.svg
new file mode 100644
index 000000000..adbccff17
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-fill-lock.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-fill-lock" viewBox="0 0 16 16">
+ <path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h5v-1a2 2 0 0 1 .01-.2 4.49 4.49 0 0 1 1.534-3.693Q8.844 9.002 8 9c-5 0-6 3-6 4m7 0a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-fill-slash.svg b/vendor/twbs/bootstrap-icons/icons/person-fill-slash.svg
new file mode 100644
index 000000000..398d56331
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-fill-slash.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-fill-slash" viewBox="0 0 16 16">
+ <path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95ZM11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-fill-up.svg b/vendor/twbs/bootstrap-icons/icons/person-fill-up.svg
new file mode 100644
index 000000000..1edd97be5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-fill-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-fill-up" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+ <path d="M2 13c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-fill-x.svg b/vendor/twbs/bootstrap-icons/icons/person-fill-x.svg
new file mode 100644
index 000000000..e3a66ed2f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-fill-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-fill-x" viewBox="0 0 16 16">
+ <path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h5.256A4.5 4.5 0 0 1 8 12.5a4.5 4.5 0 0 1 1.544-3.393Q8.844 9.002 8 9c-5 0-6 3-6 4"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-fill.svg b/vendor/twbs/bootstrap-icons/icons/person-fill.svg
new file mode 100644
index 000000000..46d1a75f8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-fill" viewBox="0 0 16 16">
+ <path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-gear.svg b/vendor/twbs/bootstrap-icons/icons/person-gear.svg
new file mode 100644
index 000000000..93ec4dacc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-gear.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-gear" viewBox="0 0 16 16">
+ <path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m.256 7a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1zm3.63-4.54c.18-.613 1.048-.613 1.229 0l.043.148a.64.64 0 0 0 .921.382l.136-.074c.561-.306 1.175.308.87.869l-.075.136a.64.64 0 0 0 .382.92l.149.045c.612.18.612 1.048 0 1.229l-.15.043a.64.64 0 0 0-.38.921l.074.136c.305.561-.309 1.175-.87.87l-.136-.075a.64.64 0 0 0-.92.382l-.045.149c-.18.612-1.048.612-1.229 0l-.043-.15a.64.64 0 0 0-.921-.38l-.136.074c-.561.305-1.175-.309-.87-.87l.075-.136a.64.64 0 0 0-.382-.92l-.148-.045c-.613-.18-.613-1.048 0-1.229l.148-.043a.64.64 0 0 0 .382-.921l-.074-.136c-.306-.561.308-1.175.869-.87l.136.075a.64.64 0 0 0 .92-.382zM14 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-heart.svg b/vendor/twbs/bootstrap-icons/icons/person-heart.svg
new file mode 100644
index 000000000..51b236e4e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-heart" viewBox="0 0 16 16">
+ <path d="M9 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h10s1 0 1-1-1-4-6-4-6 3-6 4m13.5-8.09c1.387-1.425 4.855 1.07 0 4.277-4.854-3.207-1.387-5.702 0-4.276Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-hearts.svg b/vendor/twbs/bootstrap-icons/icons/person-hearts.svg
new file mode 100644
index 000000000..70bb2e056
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-hearts.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-hearts" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11.5 1.246c.832-.855 2.913.642 0 2.566-2.913-1.924-.832-3.421 0-2.566M9 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0m-9 8c0 1 1 1 1 1h10s1 0 1-1-1-4-6-4-6 3-6 4m13.5-8.09c1.387-1.425 4.855 1.07 0 4.277-4.854-3.207-1.387-5.702 0-4.276ZM15 2.165c.555-.57 1.942.428 0 1.711-1.942-1.283-.555-2.281 0-1.71Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-lines-fill.svg b/vendor/twbs/bootstrap-icons/icons/person-lines-fill.svg
new file mode 100644
index 000000000..cbe6c6842
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-lines-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-lines-fill" viewBox="0 0 16 16">
+ <path d="M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6m-5 6s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zM11 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5m.5 2.5a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1zm2 3a.5.5 0 0 0 0 1h2a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h2a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-lock.svg b/vendor/twbs/bootstrap-icons/icons/person-lock.svg
new file mode 100644
index 000000000..d3672cdbe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-lock.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-lock" viewBox="0 0 16 16">
+ <path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m0 5.996V14H3s-1 0-1-1 1-4 6-4q.845.002 1.544.107a4.5 4.5 0 0 0-.803.918A11 11 0 0 0 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664zM9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/person-plus-fill.svg
new file mode 100644
index 000000000..6c92aea54
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-plus-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-plus-fill" viewBox="0 0 16 16">
+ <path d="M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
+ <path fill-rule="evenodd" d="M13.5 5a.5.5 0 0 1 .5.5V7h1.5a.5.5 0 0 1 0 1H14v1.5a.5.5 0 0 1-1 0V8h-1.5a.5.5 0 0 1 0-1H13V5.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-plus.svg b/vendor/twbs/bootstrap-icons/icons/person-plus.svg
new file mode 100644
index 000000000..4b8842441
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-plus" viewBox="0 0 16 16">
+ <path d="M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H1s-1 0-1-1 1-4 6-4 6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C9.516 10.68 8.289 10 6 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"/>
+ <path fill-rule="evenodd" d="M13.5 5a.5.5 0 0 1 .5.5V7h1.5a.5.5 0 0 1 0 1H14v1.5a.5.5 0 0 1-1 0V8h-1.5a.5.5 0 0 1 0-1H13V5.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-raised-hand.svg b/vendor/twbs/bootstrap-icons/icons/person-raised-hand.svg
new file mode 100644
index 000000000..00ac3011d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-raised-hand.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-raised-hand" viewBox="0 0 16 16">
+ <path d="M6 6.207v9.043a.75.75 0 0 0 1.5 0V10.5a.5.5 0 0 1 1 0v4.75a.75.75 0 0 0 1.5 0v-8.5a.25.25 0 1 1 .5 0v2.5a.75.75 0 0 0 1.5 0V6.5a3 3 0 0 0-3-3H6.236a1 1 0 0 1-.447-.106l-.33-.165A.83.83 0 0 1 5 2.488V.75a.75.75 0 0 0-1.5 0v2.083c0 .715.404 1.37 1.044 1.689L5.5 5c.32.32.5.754.5 1.207"/>
+ <path d="M8 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-rolodex.svg b/vendor/twbs/bootstrap-icons/icons/person-rolodex.svg
new file mode 100644
index 000000000..203949426
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-rolodex.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-rolodex" viewBox="0 0 16 16">
+ <path d="M8 9.05a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/>
+ <path d="M1 1a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h.5a.5.5 0 0 0 .5-.5.5.5 0 0 1 1 0 .5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5.5.5 0 0 1 1 0 .5.5 0 0 0 .5.5h.5a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H6.707L6 1.293A1 1 0 0 0 5.293 1zm0 1h4.293L6 2.707A1 1 0 0 0 6.707 3H15v10h-.085a1.5 1.5 0 0 0-2.4-.63C11.885 11.223 10.554 10 8 10c-2.555 0-3.886 1.224-4.514 2.37a1.5 1.5 0 0 0-2.4.63H1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-slash.svg b/vendor/twbs/bootstrap-icons/icons/person-slash.svg
new file mode 100644
index 000000000..ab5364738
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-slash.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-slash" viewBox="0 0 16 16">
+ <path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465m-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95ZM11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m.256 7a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-square.svg b/vendor/twbs/bootstrap-icons/icons/person-square.svg
new file mode 100644
index 000000000..12a33c5e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-square" viewBox="0 0 16 16">
+ <path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1v-1c0-1-1-4-6-4s-6 3-6 4v1a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-standing-dress.svg b/vendor/twbs/bootstrap-icons/icons/person-standing-dress.svg
new file mode 100644
index 000000000..44486067a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-standing-dress.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-standing-dress" viewBox="0 0 16 16">
+ <path d="M8 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m-.5 12.25V12h1v3.25a.75.75 0 0 0 1.5 0V12h1l-1-5v-.215a.285.285 0 0 1 .56-.078l.793 2.777a.711.711 0 1 0 1.364-.405l-1.065-3.461A3 3 0 0 0 8.784 3.5H7.216a3 3 0 0 0-2.868 2.118L3.283 9.079a.711.711 0 1 0 1.365.405l.793-2.777a.285.285 0 0 1 .56.078V7l-1 5h1v3.25a.75.75 0 0 0 1.5 0Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-standing.svg b/vendor/twbs/bootstrap-icons/icons/person-standing.svg
new file mode 100644
index 000000000..ccd7b352a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-standing.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-standing" viewBox="0 0 16 16">
+ <path d="M8 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3M6 6.75v8.5a.75.75 0 0 0 1.5 0V10.5a.5.5 0 0 1 1 0v4.75a.75.75 0 0 0 1.5 0v-8.5a.25.25 0 1 1 .5 0v2.5a.75.75 0 0 0 1.5 0V6.5a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v2.75a.75.75 0 0 0 1.5 0v-2.5a.25.25 0 0 1 .5 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-up.svg b/vendor/twbs/bootstrap-icons/icons/person-up.svg
new file mode 100644
index 000000000..93a430a80
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-up" viewBox="0 0 16 16">
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.854 1.5 1.5a.5.5 0 0 1-.708.708L13 11.707V14.5a.5.5 0 0 1-1 0v-2.793l-.646.647a.5.5 0 0 1-.708-.708l1.5-1.5a.5.5 0 0 1 .708 0M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+ <path d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-vcard-fill.svg b/vendor/twbs/bootstrap-icons/icons/person-vcard-fill.svg
new file mode 100644
index 000000000..9efb1b8e7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-vcard-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-vcard-fill" viewBox="0 0 16 16">
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm9 1.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 0-1h-4a.5.5 0 0 0-.5.5M9 8a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 0-1h-4A.5.5 0 0 0 9 8m1 2.5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5m-1 2C9 10.567 7.21 9 5 9c-2.086 0-3.8 1.398-3.984 3.181A1 1 0 0 0 2 13h6.96q.04-.245.04-.5M7 6a2 2 0 1 0-4 0 2 2 0 0 0 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-vcard.svg b/vendor/twbs/bootstrap-icons/icons/person-vcard.svg
new file mode 100644
index 000000000..40ec41e3c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-vcard.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-vcard" viewBox="0 0 16 16">
+ <path d="M5 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4m4-2.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5M9 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4A.5.5 0 0 1 9 8m1 2.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5"/>
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zM1 4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H8.96q.04-.245.04-.5C9 10.567 7.21 9 5 9c-2.086 0-3.8 1.398-3.984 3.181A1 1 0 0 1 1 12z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-video.svg b/vendor/twbs/bootstrap-icons/icons/person-video.svg
new file mode 100644
index 000000000..a99175973
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-video.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-video" viewBox="0 0 16 16">
+ <path d="M8 9.05a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/>
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm10.798 11c-.453-1.27-1.76-3-4.798-3-3.037 0-4.345 1.73-4.798 3H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-video2.svg b/vendor/twbs/bootstrap-icons/icons/person-video2.svg
new file mode 100644
index 000000000..80b3b8a98
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-video2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-video2" viewBox="0 0 16 16">
+ <path d="M10 9.05a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/>
+ <path d="M2 1a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zM1 3a1 1 0 0 1 1-1h2v2H1zm4 10V2h9a1 1 0 0 1 1 1v9c0 .285-.12.543-.31.725C14.15 11.494 12.822 10 10 10c-3.037 0-4.345 1.73-4.798 3zm-4-2h3v2H2a1 1 0 0 1-1-1zm3-1H1V8h3zm0-3H1V5h3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-video3.svg b/vendor/twbs/bootstrap-icons/icons/person-video3.svg
new file mode 100644
index 000000000..472d998c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-video3.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-video3" viewBox="0 0 16 16">
+ <path d="M14 9.5a2 2 0 1 1-4 0 2 2 0 0 1 4 0m-6 5.7c0 .8.8.8.8.8h6.4s.8 0 .8-.8-.8-3.2-4-3.2-4 2.4-4 3.2"/>
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h5.243c.122-.326.295-.668.526-1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v7.81c.353.23.656.496.91.783Q16 12.312 16 12V4a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-walking.svg b/vendor/twbs/bootstrap-icons/icons/person-walking.svg
new file mode 100644
index 000000000..16cc0b46e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-walking.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-walking" viewBox="0 0 16 16">
+ <path d="M9.5 1.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M6.44 3.752A.75.75 0 0 1 7 3.5h1.445c.742 0 1.32.643 1.243 1.38l-.43 4.083a1.8 1.8 0 0 1-.088.395l-.318.906.213.242a.8.8 0 0 1 .114.175l2 4.25a.75.75 0 1 1-1.357.638l-1.956-4.154-1.68-1.921A.75.75 0 0 1 6 8.96l.138-2.613-.435.489-.464 2.786a.75.75 0 1 1-1.48-.246l.5-3a.75.75 0 0 1 .18-.375l2-2.25Z"/>
+ <path d="M6.25 11.745v-1.418l1.204 1.375.261.524a.8.8 0 0 1-.12.231l-2.5 3.25a.75.75 0 1 1-1.19-.914zm4.22-4.215-.494-.494.205-1.843.006-.067 1.124 1.124h1.44a.75.75 0 0 1 0 1.5H11a.75.75 0 0 1-.531-.22Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-wheelchair.svg b/vendor/twbs/bootstrap-icons/icons/person-wheelchair.svg
new file mode 100644
index 000000000..416cad205
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-wheelchair.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-wheelchair" viewBox="0 0 16 16">
+ <path d="M12 3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m-.663 2.146a1.5 1.5 0 0 0-.47-2.115l-2.5-1.508a1.5 1.5 0 0 0-1.676.086l-2.329 1.75a.866.866 0 0 0 1.051 1.375L7.361 3.37l.922.71-2.038 2.445A4.73 4.73 0 0 0 2.628 7.67l1.064 1.065a3.25 3.25 0 0 1 4.574 4.574l1.064 1.063a4.73 4.73 0 0 0 1.09-3.998l1.043-.292-.187 2.991a.872.872 0 1 0 1.741.098l.206-4.121A1 1 0 0 0 12.224 8h-2.79zM3.023 9.48a3.25 3.25 0 0 0 4.496 4.496l1.077 1.077a4.75 4.75 0 0 1-6.65-6.65z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-workspace.svg b/vendor/twbs/bootstrap-icons/icons/person-workspace.svg
new file mode 100644
index 000000000..0b3cdce83
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-workspace.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-workspace" viewBox="0 0 16 16">
+ <path d="M4 16s-1 0-1-1 1-4 5-4 5 3 5 4-1 1-1 1zm4-5.95a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5"/>
+ <path d="M2 1a2 2 0 0 0-2 2v9.5A1.5 1.5 0 0 0 1.5 14h.653a5.4 5.4 0 0 1 1.066-2H1V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v9h-2.219c.554.654.89 1.373 1.066 2h.653a1.5 1.5 0 0 0 1.5-1.5V3a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/person-x-fill.svg
new file mode 100644
index 000000000..9e3190394
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-x-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-x-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6m6.146-2.854a.5.5 0 0 1 .708 0L14 6.293l1.146-1.147a.5.5 0 0 1 .708.708L14.707 7l1.147 1.146a.5.5 0 0 1-.708.708L14 7.707l-1.146 1.147a.5.5 0 0 1-.708-.708L13.293 7l-1.147-1.146a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person-x.svg b/vendor/twbs/bootstrap-icons/icons/person-x.svg
new file mode 100644
index 000000000..7514c5989
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-x" viewBox="0 0 16 16">
+ <path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m.256 7a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-.646-4.854.646.647.646-.647a.5.5 0 0 1 .708.708l-.647.646.647.646a.5.5 0 0 1-.708.708l-.646-.647-.646.647a.5.5 0 0 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/person.svg b/vendor/twbs/bootstrap-icons/icons/person.svg
new file mode 100644
index 000000000..98ea060fe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/person.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person" viewBox="0 0 16 16">
+ <path d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/phone-fill.svg b/vendor/twbs/bootstrap-icons/icons/phone-fill.svg
new file mode 100644
index 000000000..f25bd51f2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/phone-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-phone-fill" viewBox="0 0 16 16">
+ <path d="M3 2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zm6 11a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/phone-flip.svg b/vendor/twbs/bootstrap-icons/icons/phone-flip.svg
new file mode 100644
index 000000000..3ae28d393
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/phone-flip.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-phone-flip" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11 1H5a1 1 0 0 0-1 1v6a.5.5 0 0 1-1 0V2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a.5.5 0 0 1-1 0V2a1 1 0 0 0-1-1m1 13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-2a.5.5 0 0 0-1 0v2a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-2a.5.5 0 0 0-1 0zM1.713 7.954a.5.5 0 1 0-.419-.908c-.347.16-.654.348-.882.57C.184 7.842 0 8.139 0 8.5c0 .546.408.94.823 1.201.44.278 1.043.51 1.745.696C3.978 10.773 5.898 11 8 11q.148 0 .294-.002l-1.148 1.148a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2a.5.5 0 1 0-.708.708l1.145 1.144L8 10c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575C1.012 8.639 1 8.506 1 8.5c0-.003 0-.059.112-.17.115-.112.31-.242.6-.376Zm12.993-.908a.5.5 0 0 0-.419.908c.292.134.486.264.6.377.113.11.113.166.113.169s0 .065-.13.187c-.132.122-.352.26-.677.4-.645.28-1.596.523-2.763.687a.5.5 0 0 0 .14.99c1.212-.17 2.26-.43 3.02-.758.38-.164.713-.357.96-.587.246-.229.45-.537.45-.919 0-.362-.184-.66-.412-.883s-.535-.411-.882-.571M7.5 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/phone-landscape-fill.svg b/vendor/twbs/bootstrap-icons/icons/phone-landscape-fill.svg
new file mode 100644
index 000000000..669bf6e8f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/phone-landscape-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-phone-landscape-fill" viewBox="0 0 16 16">
+ <path d="M2 12.5a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2zm11-6a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/phone-landscape.svg b/vendor/twbs/bootstrap-icons/icons/phone-landscape.svg
new file mode 100644
index 000000000..4c30ef2be
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/phone-landscape.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-phone-landscape" viewBox="0 0 16 16">
+ <path d="M1 4.5a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm-1 6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2z"/>
+ <path d="M14 7.5a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/phone-vibrate-fill.svg b/vendor/twbs/bootstrap-icons/icons/phone-vibrate-fill.svg
new file mode 100644
index 000000000..dc35ca05f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/phone-vibrate-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-phone-vibrate-fill" viewBox="0 0 16 16">
+ <path d="M4 4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm5 7a1 1 0 1 0-2 0 1 1 0 0 0 2 0M1.807 4.734a.5.5 0 1 0-.884-.468A8 8 0 0 0 0 8c0 1.347.334 2.618.923 3.734a.5.5 0 1 0 .884-.468A7 7 0 0 1 1 8c0-1.18.292-2.292.807-3.266m13.27-.468a.5.5 0 0 0-.884.468C14.708 5.708 15 6.819 15 8c0 1.18-.292 2.292-.807 3.266a.5.5 0 0 0 .884.468A8 8 0 0 0 16 8a8 8 0 0 0-.923-3.734M3.34 6.182a.5.5 0 1 0-.93-.364A6 6 0 0 0 2 8c0 .769.145 1.505.41 2.182a.5.5 0 1 0 .93-.364A5 5 0 0 1 3 8c0-.642.12-1.255.34-1.818m10.25-.364a.5.5 0 0 0-.93.364c.22.563.34 1.176.34 1.818s-.12 1.255-.34 1.818a.5.5 0 0 0 .93.364C13.856 9.505 14 8.769 14 8s-.145-1.505-.41-2.182"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/phone-vibrate.svg b/vendor/twbs/bootstrap-icons/icons/phone-vibrate.svg
new file mode 100644
index 000000000..58acbf6e1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/phone-vibrate.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-phone-vibrate" viewBox="0 0 16 16">
+ <path d="M10 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM6 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z"/>
+ <path d="M8 12a1 1 0 1 0 0-2 1 1 0 0 0 0 2M1.599 4.058a.5.5 0 0 1 .208.676A7 7 0 0 0 1 8c0 1.18.292 2.292.807 3.266a.5.5 0 0 1-.884.468A8 8 0 0 1 0 8c0-1.347.334-2.619.923-3.734a.5.5 0 0 1 .676-.208m12.802 0a.5.5 0 0 1 .676.208A8 8 0 0 1 16 8a8 8 0 0 1-.923 3.734.5.5 0 0 1-.884-.468A7 7 0 0 0 15 8c0-1.18-.292-2.292-.807-3.266a.5.5 0 0 1 .208-.676M3.057 5.534a.5.5 0 0 1 .284.648A5 5 0 0 0 3 8c0 .642.12 1.255.34 1.818a.5.5 0 1 1-.93.364A6 6 0 0 1 2 8c0-.769.145-1.505.41-2.182a.5.5 0 0 1 .647-.284m9.886 0a.5.5 0 0 1 .648.284C13.855 6.495 14 7.231 14 8s-.145 1.505-.41 2.182a.5.5 0 0 1-.93-.364C12.88 9.255 13 8.642 13 8s-.12-1.255-.34-1.818a.5.5 0 0 1 .283-.648"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/phone.svg b/vendor/twbs/bootstrap-icons/icons/phone.svg
new file mode 100644
index 000000000..483933101
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/phone.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-phone" viewBox="0 0 16 16">
+ <path d="M11 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM5 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M8 14a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pie-chart-fill.svg b/vendor/twbs/bootstrap-icons/icons/pie-chart-fill.svg
new file mode 100644
index 000000000..f667aea44
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pie-chart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pie-chart-fill" viewBox="0 0 16 16">
+ <path d="M15.985 8.5H8.207l-5.5 5.5a8 8 0 0 0 13.277-5.5zM2 13.292A8 8 0 0 1 7.5.015v7.778zM8.5.015V7.5h7.485A8 8 0 0 0 8.5.015"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pie-chart.svg b/vendor/twbs/bootstrap-icons/icons/pie-chart.svg
new file mode 100644
index 000000000..b49251b08
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pie-chart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pie-chart" viewBox="0 0 16 16">
+ <path d="M7.5 1.018a7 7 0 0 0-4.79 11.566L7.5 7.793zm1 0V7.5h6.482A7 7 0 0 0 8.5 1.018M14.982 8.5H8.207l-4.79 4.79A7 7 0 0 0 14.982 8.5M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/piggy-bank-fill.svg b/vendor/twbs/bootstrap-icons/icons/piggy-bank-fill.svg
new file mode 100644
index 000000000..592b31d1d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/piggy-bank-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-piggy-bank-fill" viewBox="0 0 16 16">
+ <path d="M7.964 1.527c-2.977 0-5.571 1.704-6.32 4.125h-.55A1 1 0 0 0 .11 6.824l.254 1.46a1.5 1.5 0 0 0 1.478 1.243h.263c.3.513.688.978 1.145 1.382l-.729 2.477a.5.5 0 0 0 .48.641h2a.5.5 0 0 0 .471-.332l.482-1.351c.635.173 1.31.267 2.011.267.707 0 1.388-.095 2.028-.272l.543 1.372a.5.5 0 0 0 .465.316h2a.5.5 0 0 0 .478-.645l-.761-2.506C13.81 9.895 14.5 8.559 14.5 7.069q0-.218-.02-.431c.261-.11.508-.266.705-.444.315.306.815.306.815-.417 0 .223-.5.223-.461-.026a1 1 0 0 0 .09-.255.7.7 0 0 0-.202-.645.58.58 0 0 0-.707-.098.74.74 0 0 0-.375.562c-.024.243.082.48.32.654a2 2 0 0 1-.259.153c-.534-2.664-3.284-4.595-6.442-4.595m7.173 3.876a.6.6 0 0 1-.098.21l-.044-.025c-.146-.09-.157-.175-.152-.223a.24.24 0 0 1 .117-.173c.049-.027.08-.021.113.012a.2.2 0 0 1 .064.199m-8.999-.65a.5.5 0 1 1-.276-.96A7.6 7.6 0 0 1 7.964 3.5c.763 0 1.497.11 2.18.315a.5.5 0 1 1-.287.958A6.6 6.6 0 0 0 7.964 4.5c-.64 0-1.255.09-1.826.254ZM5 6.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/piggy-bank.svg b/vendor/twbs/bootstrap-icons/icons/piggy-bank.svg
new file mode 100644
index 000000000..86e33ebb5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/piggy-bank.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-piggy-bank" viewBox="0 0 16 16">
+ <path d="M5 6.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.138-1.496A6.6 6.6 0 0 1 7.964 4.5c.666 0 1.303.097 1.893.273a.5.5 0 0 0 .286-.958A7.6 7.6 0 0 0 7.964 3.5c-.734 0-1.441.103-2.102.292a.5.5 0 1 0 .276.962"/>
+ <path fill-rule="evenodd" d="M7.964 1.527c-2.977 0-5.571 1.704-6.32 4.125h-.55A1 1 0 0 0 .11 6.824l.254 1.46a1.5 1.5 0 0 0 1.478 1.243h.263c.3.513.688.978 1.145 1.382l-.729 2.477a.5.5 0 0 0 .48.641h2a.5.5 0 0 0 .471-.332l.482-1.351c.635.173 1.31.267 2.011.267.707 0 1.388-.095 2.028-.272l.543 1.372a.5.5 0 0 0 .465.316h2a.5.5 0 0 0 .478-.645l-.761-2.506C13.81 9.895 14.5 8.559 14.5 7.069q0-.218-.02-.431c.261-.11.508-.266.705-.444.315.306.815.306.815-.417 0 .223-.5.223-.461-.026a1 1 0 0 0 .09-.255.7.7 0 0 0-.202-.645.58.58 0 0 0-.707-.098.74.74 0 0 0-.375.562c-.024.243.082.48.32.654a2 2 0 0 1-.259.153c-.534-2.664-3.284-4.595-6.442-4.595M2.516 6.26c.455-2.066 2.667-3.733 5.448-3.733 3.146 0 5.536 2.114 5.536 4.542 0 1.254-.624 2.41-1.67 3.248a.5.5 0 0 0-.165.535l.66 2.175h-.985l-.59-1.487a.5.5 0 0 0-.629-.288c-.661.23-1.39.359-2.157.359a6.6 6.6 0 0 1-2.157-.359.5.5 0 0 0-.635.304l-.525 1.471h-.979l.633-2.15a.5.5 0 0 0-.17-.534 4.65 4.65 0 0 1-1.284-1.541.5.5 0 0 0-.446-.275h-.56a.5.5 0 0 1-.492-.414l-.254-1.46h.933a.5.5 0 0 0 .488-.393m12.621-.857a.6.6 0 0 1-.098.21l-.044-.025c-.146-.09-.157-.175-.152-.223a.24.24 0 0 1 .117-.173c.049-.027.08-.021.113.012a.2.2 0 0 1 .064.199"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pin-angle-fill.svg b/vendor/twbs/bootstrap-icons/icons/pin-angle-fill.svg
new file mode 100644
index 000000000..bc3078c49
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pin-angle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pin-angle-fill" viewBox="0 0 16 16">
+ <path d="M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a6 6 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707s.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a6 6 0 0 1 1.013.16l3.134-3.133a3 3 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pin-angle.svg b/vendor/twbs/bootstrap-icons/icons/pin-angle.svg
new file mode 100644
index 000000000..ecc4d16e2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pin-angle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pin-angle" viewBox="0 0 16 16">
+ <path d="M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a6 6 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707s.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a6 6 0 0 1 1.013.16l3.134-3.133a3 3 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146m.122 2.112v-.002zm0-.002v.002a.5.5 0 0 1-.122.51L6.293 6.878a.5.5 0 0 1-.511.12H5.78l-.014-.004a5 5 0 0 0-.288-.076 5 5 0 0 0-.765-.116c-.422-.028-.836.008-1.175.15l5.51 5.509c.141-.34.177-.753.149-1.175a5 5 0 0 0-.192-1.054l-.004-.013v-.001a.5.5 0 0 1 .12-.512l3.536-3.535a.5.5 0 0 1 .532-.115l.096.022c.087.017.208.034.344.034q.172.002.343-.04L9.927 2.028q-.042.172-.04.343a1.8 1.8 0 0 0 .062.46z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pin-fill.svg b/vendor/twbs/bootstrap-icons/icons/pin-fill.svg
new file mode 100644
index 000000000..f34505963
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pin-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pin-fill" viewBox="0 0 16 16">
+ <path d="M4.146.146A.5.5 0 0 1 4.5 0h7a.5.5 0 0 1 .5.5c0 .68-.342 1.174-.646 1.479-.126.125-.25.224-.354.298v4.431l.078.048c.203.127.476.314.751.555C12.36 7.775 13 8.527 13 9.5a.5.5 0 0 1-.5.5h-4v4.5c0 .276-.224 1.5-.5 1.5s-.5-1.224-.5-1.5V10h-4a.5.5 0 0 1-.5-.5c0-.973.64-1.725 1.17-2.189A6 6 0 0 1 5 6.708V2.277a3 3 0 0 1-.354-.298C4.342 1.674 4 1.179 4 .5a.5.5 0 0 1 .146-.354"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pin-map-fill.svg b/vendor/twbs/bootstrap-icons/icons/pin-map-fill.svg
new file mode 100644
index 000000000..9db0d294b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pin-map-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pin-map-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.1 11.2a.5.5 0 0 1 .4-.2H6a.5.5 0 0 1 0 1H3.75L1.5 15h13l-2.25-3H10a.5.5 0 0 1 0-1h2.5a.5.5 0 0 1 .4.2l3 4a.5.5 0 0 1-.4.8H.5a.5.5 0 0 1-.4-.8z"/>
+ <path fill-rule="evenodd" d="M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pin-map.svg b/vendor/twbs/bootstrap-icons/icons/pin-map.svg
new file mode 100644
index 000000000..0462a5aad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pin-map.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pin-map" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.1 11.2a.5.5 0 0 1 .4-.2H6a.5.5 0 0 1 0 1H3.75L1.5 15h13l-2.25-3H10a.5.5 0 0 1 0-1h2.5a.5.5 0 0 1 .4.2l3 4a.5.5 0 0 1-.4.8H.5a.5.5 0 0 1-.4-.8z"/>
+ <path fill-rule="evenodd" d="M8 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pin.svg b/vendor/twbs/bootstrap-icons/icons/pin.svg
new file mode 100644
index 000000000..4655620bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pin.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pin" viewBox="0 0 16 16">
+ <path d="M4.146.146A.5.5 0 0 1 4.5 0h7a.5.5 0 0 1 .5.5c0 .68-.342 1.174-.646 1.479-.126.125-.25.224-.354.298v4.431l.078.048c.203.127.476.314.751.555C12.36 7.775 13 8.527 13 9.5a.5.5 0 0 1-.5.5h-4v4.5c0 .276-.224 1.5-.5 1.5s-.5-1.224-.5-1.5V10h-4a.5.5 0 0 1-.5-.5c0-.973.64-1.725 1.17-2.189A6 6 0 0 1 5 6.708V2.277a3 3 0 0 1-.354-.298C4.342 1.674 4 1.179 4 .5a.5.5 0 0 1 .146-.354m1.58 1.408-.002-.001zm-.002-.001.002.001A.5.5 0 0 1 6 2v5a.5.5 0 0 1-.276.447h-.002l-.012.007-.054.03a5 5 0 0 0-.827.58c-.318.278-.585.596-.725.936h7.792c-.14-.34-.407-.658-.725-.936a5 5 0 0 0-.881-.61l-.012-.006h-.002A.5.5 0 0 1 10 7V2a.5.5 0 0 1 .295-.458 1.8 1.8 0 0 0 .351-.271c.08-.08.155-.17.214-.271H5.14q.091.15.214.271a1.8 1.8 0 0 0 .37.282"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pinterest.svg b/vendor/twbs/bootstrap-icons/icons/pinterest.svg
new file mode 100644
index 000000000..5c850b61a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pinterest.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pinterest" viewBox="0 0 16 16">
+ <path d="M8 0a8 8 0 0 0-2.915 15.452c-.07-.633-.134-1.606.027-2.297.146-.625.938-3.977.938-3.977s-.239-.479-.239-1.187c0-1.113.645-1.943 1.448-1.943.682 0 1.012.512 1.012 1.127 0 .686-.437 1.712-.663 2.663-.188.796.4 1.446 1.185 1.446 1.422 0 2.515-1.5 2.515-3.664 0-1.915-1.377-3.254-3.342-3.254-2.276 0-3.612 1.707-3.612 3.471 0 .688.265 1.425.595 1.826a.24.24 0 0 1 .056.23c-.061.252-.196.796-.222.907-.035.146-.116.177-.268.107-1-.465-1.624-1.926-1.624-3.1 0-2.523 1.834-4.84 5.286-4.84 2.775 0 4.932 1.977 4.932 4.62 0 2.757-1.739 4.976-4.151 4.976-.811 0-1.573-.421-1.834-.919l-.498 1.902c-.181.695-.669 1.566-.995 2.097A8 8 0 1 0 8 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pip-fill.svg b/vendor/twbs/bootstrap-icons/icons/pip-fill.svg
new file mode 100644
index 000000000..4865244e7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pip-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pip-fill" viewBox="0 0 16 16">
+ <path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zm7 6h5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/pip.svg b/vendor/twbs/bootstrap-icons/icons/pip.svg
new file mode 100644
index 000000000..458c9c9a5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/pip.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pip" viewBox="0 0 16 16">
+ <path d="M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5zM1.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5z"/>
+ <path d="M8 8.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/play-btn-fill.svg b/vendor/twbs/bootstrap-icons/icons/play-btn-fill.svg
new file mode 100644
index 000000000..3d0d1c330
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/play-btn-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-play-btn-fill" viewBox="0 0 16 16">
+ <path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m6.79-6.907A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/play-btn.svg b/vendor/twbs/bootstrap-icons/icons/play-btn.svg
new file mode 100644
index 000000000..2fcbc5ea0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/play-btn.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-play-btn" viewBox="0 0 16 16">
+ <path d="M6.79 5.093A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814z"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/play-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/play-circle-fill.svg
new file mode 100644
index 000000000..93eeb93c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/play-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-play-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.79 5.093A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/play-circle.svg b/vendor/twbs/bootstrap-icons/icons/play-circle.svg
new file mode 100644
index 000000000..a1d742e00
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/play-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-play-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M6.271 5.055a.5.5 0 0 1 .52.038l3.5 2.5a.5.5 0 0 1 0 .814l-3.5 2.5A.5.5 0 0 1 6 10.5v-5a.5.5 0 0 1 .271-.445"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/play-fill.svg b/vendor/twbs/bootstrap-icons/icons/play-fill.svg
new file mode 100644
index 000000000..e538083af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/play-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-play-fill" viewBox="0 0 16 16">
+ <path d="m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/play.svg b/vendor/twbs/bootstrap-icons/icons/play.svg
new file mode 100644
index 000000000..98954e7e9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/play.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-play" viewBox="0 0 16 16">
+ <path d="M10.804 8 5 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C4.713 12.69 4 12.345 4 11.692V4.308c0-.653.713-.998 1.233-.696z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/playstation.svg b/vendor/twbs/bootstrap-icons/icons/playstation.svg
new file mode 100644
index 000000000..3275d599d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/playstation.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-playstation" viewBox="0 0 16 16">
+ <path d="M15.858 11.451c-.313.395-1.079.676-1.079.676l-5.696 2.046v-1.509l4.192-1.493c.476-.17.549-.412.162-.538-.386-.127-1.085-.09-1.56.08l-2.794.984v-1.566l.161-.054s.807-.286 1.942-.412c1.135-.125 2.525.017 3.616.43 1.23.39 1.368.962 1.056 1.356M9.625 8.883v-3.86c0-.453-.083-.87-.508-.988-.326-.105-.528.198-.528.65v9.664l-2.606-.827V2c1.108.206 2.722.692 3.59.985 2.207.757 2.955 1.7 2.955 3.825 0 2.071-1.278 2.856-2.903 2.072Zm-8.424 3.625C-.061 12.15-.271 11.41.304 10.984c.532-.394 1.436-.69 1.436-.69l3.737-1.33v1.515l-2.69.963c-.474.17-.547.411-.161.538.386.126 1.085.09 1.56-.08l1.29-.469v1.356l-.257.043a8.45 8.45 0 0 1-4.018-.323Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plug-fill.svg b/vendor/twbs/bootstrap-icons/icons/plug-fill.svg
new file mode 100644
index 000000000..99858eb84
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plug-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plug-fill" viewBox="0 0 16 16">
+ <path d="M6 0a.5.5 0 0 1 .5.5V3h3V.5a.5.5 0 0 1 1 0V3h1a.5.5 0 0 1 .5.5v3A3.5 3.5 0 0 1 8.5 10c-.002.434-.01.845-.04 1.22-.041.514-.126 1.003-.317 1.424a2.08 2.08 0 0 1-.97 1.028C6.725 13.9 6.169 14 5.5 14c-.998 0-1.61.33-1.974.718A1.92 1.92 0 0 0 3 16H2c0-.616.232-1.367.797-1.968C3.374 13.42 4.261 13 5.5 13c.581 0 .962-.088 1.218-.219.241-.123.4-.3.514-.55.121-.266.193-.621.23-1.09.027-.34.035-.718.037-1.141A3.5 3.5 0 0 1 4 6.5v-3a.5.5 0 0 1 .5-.5h1V.5A.5.5 0 0 1 6 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plug.svg b/vendor/twbs/bootstrap-icons/icons/plug.svg
new file mode 100644
index 000000000..9d6a85b5c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plug.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plug" viewBox="0 0 16 16">
+ <path d="M6 0a.5.5 0 0 1 .5.5V3h3V.5a.5.5 0 0 1 1 0V3h1a.5.5 0 0 1 .5.5v3A3.5 3.5 0 0 1 8.5 10c-.002.434-.01.845-.04 1.22-.041.514-.126 1.003-.317 1.424a2.08 2.08 0 0 1-.97 1.028C6.725 13.9 6.169 14 5.5 14c-.998 0-1.61.33-1.974.718A1.92 1.92 0 0 0 3 16H2c0-.616.232-1.367.797-1.968C3.374 13.42 4.261 13 5.5 13c.581 0 .962-.088 1.218-.219.241-.123.4-.3.514-.55.121-.266.193-.621.23-1.09.027-.34.035-.718.037-1.141A3.5 3.5 0 0 1 4 6.5v-3a.5.5 0 0 1 .5-.5h1V.5A.5.5 0 0 1 6 0M5 4v2.5A2.5 2.5 0 0 0 7.5 9h1A2.5 2.5 0 0 0 11 6.5V4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plugin.svg b/vendor/twbs/bootstrap-icons/icons/plugin.svg
new file mode 100644
index 000000000..92e99d4b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plugin.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plugin" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a7 7 0 1 1 2.898 5.673c-.167-.121-.216-.406-.002-.62l1.8-1.8a3.5 3.5 0 0 0 4.572-.328l1.414-1.415a.5.5 0 0 0 0-.707l-.707-.707 1.559-1.563a.5.5 0 1 0-.708-.706l-1.559 1.562-1.414-1.414 1.56-1.562a.5.5 0 1 0-.707-.706l-1.56 1.56-.707-.706a.5.5 0 0 0-.707 0L5.318 5.975a3.5 3.5 0 0 0-.328 4.571l-1.8 1.8c-.58.58-.62 1.6.121 2.137A8 8 0 1 0 0 8a.5.5 0 0 0 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plus-circle-dotted.svg b/vendor/twbs/bootstrap-icons/icons/plus-circle-dotted.svg
new file mode 100644
index 000000000..2a20e2d6f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plus-circle-dotted.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-circle-dotted" viewBox="0 0 16 16">
+ <path d="M8 0q-.264 0-.523.017l.064.998a7 7 0 0 1 .918 0l.064-.998A8 8 0 0 0 8 0M6.44.152q-.52.104-1.012.27l.321.948q.43-.147.884-.237L6.44.153zm4.132.271a8 8 0 0 0-1.011-.27l-.194.98q.453.09.884.237zm1.873.925a8 8 0 0 0-.906-.524l-.443.896q.413.205.793.459zM4.46.824q-.471.233-.905.524l.556.83a7 7 0 0 1 .793-.458zM2.725 1.985q-.394.346-.74.74l.752.66q.303-.345.648-.648zm11.29.74a8 8 0 0 0-.74-.74l-.66.752q.346.303.648.648zm1.161 1.735a8 8 0 0 0-.524-.905l-.83.556q.254.38.458.793l.896-.443zM1.348 3.555q-.292.433-.524.906l.896.443q.205-.413.459-.793zM.423 5.428a8 8 0 0 0-.27 1.011l.98.194q.09-.453.237-.884zM15.848 6.44a8 8 0 0 0-.27-1.012l-.948.321q.147.43.237.884zM.017 7.477a8 8 0 0 0 0 1.046l.998-.064a7 7 0 0 1 0-.918zM16 8a8 8 0 0 0-.017-.523l-.998.064a7 7 0 0 1 0 .918l.998.064A8 8 0 0 0 16 8M.152 9.56q.104.52.27 1.012l.948-.321a7 7 0 0 1-.237-.884l-.98.194zm15.425 1.012q.168-.493.27-1.011l-.98-.194q-.09.453-.237.884zM.824 11.54a8 8 0 0 0 .524.905l.83-.556a7 7 0 0 1-.458-.793zm13.828.905q.292-.434.524-.906l-.896-.443q-.205.413-.459.793zm-12.667.83q.346.394.74.74l.66-.752a7 7 0 0 1-.648-.648zm11.29.74q.394-.346.74-.74l-.752-.66q-.302.346-.648.648zm-1.735 1.161q.471-.233.905-.524l-.556-.83a7 7 0 0 1-.793.458zm-7.985-.524q.434.292.906.524l.443-.896a7 7 0 0 1-.793-.459zm1.873.925q.493.168 1.011.27l.194-.98a7 7 0 0 1-.884-.237zm4.132.271a8 8 0 0 0 1.012-.27l-.321-.948a7 7 0 0 1-.884.237l.194.98zm-2.083.135a8 8 0 0 0 1.046 0l-.064-.998a7 7 0 0 1-.918 0zM8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plus-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/plus-circle-fill.svg
new file mode 100644
index 000000000..d1ec2d03b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plus-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plus-circle.svg b/vendor/twbs/bootstrap-icons/icons/plus-circle.svg
new file mode 100644
index 000000000..283237356
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plus-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plus-lg.svg b/vendor/twbs/bootstrap-icons/icons/plus-lg.svg
new file mode 100644
index 000000000..531e86cd0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plus-lg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-lg" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 2a.5.5 0 0 1 .5.5v5h5a.5.5 0 0 1 0 1h-5v5a.5.5 0 0 1-1 0v-5h-5a.5.5 0 0 1 0-1h5v-5A.5.5 0 0 1 8 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plus-slash-minus.svg b/vendor/twbs/bootstrap-icons/icons/plus-slash-minus.svg
new file mode 100644
index 000000000..e0fee7dc9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plus-slash-minus.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-slash-minus" viewBox="0 0 16 16">
+ <path d="m1.854 14.854 13-13a.5.5 0 0 0-.708-.708l-13 13a.5.5 0 0 0 .708.708M4 1a.5.5 0 0 1 .5.5v2h2a.5.5 0 0 1 0 1h-2v2a.5.5 0 0 1-1 0v-2h-2a.5.5 0 0 1 0-1h2v-2A.5.5 0 0 1 4 1m5 11a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5A.5.5 0 0 1 9 12"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plus-square-dotted.svg b/vendor/twbs/bootstrap-icons/icons/plus-square-dotted.svg
new file mode 100644
index 000000000..e230a0890
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plus-square-dotted.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-square-dotted" viewBox="0 0 16 16">
+ <path d="M2.5 0q-.25 0-.487.048l.194.98A1.5 1.5 0 0 1 2.5 1h.458V0zm2.292 0h-.917v1h.917zm1.833 0h-.917v1h.917zm1.833 0h-.916v1h.916zm1.834 0h-.917v1h.917zm1.833 0h-.917v1h.917zM13.5 0h-.458v1h.458q.151 0 .293.029l.194-.981A2.5 2.5 0 0 0 13.5 0m2.079 1.11a2.5 2.5 0 0 0-.69-.689l-.556.831q.248.167.415.415l.83-.556zM1.11.421a2.5 2.5 0 0 0-.689.69l.831.556c.11-.164.251-.305.415-.415zM16 2.5q0-.25-.048-.487l-.98.194q.027.141.028.293v.458h1zM.048 2.013A2.5 2.5 0 0 0 0 2.5v.458h1V2.5q0-.151.029-.293zM0 3.875v.917h1v-.917zm16 .917v-.917h-1v.917zM0 5.708v.917h1v-.917zm16 .917v-.917h-1v.917zM0 7.542v.916h1v-.916zm15 .916h1v-.916h-1zM0 9.375v.917h1v-.917zm16 .917v-.917h-1v.917zm-16 .916v.917h1v-.917zm16 .917v-.917h-1v.917zm-16 .917v.458q0 .25.048.487l.98-.194A1.5 1.5 0 0 1 1 13.5v-.458zm16 .458v-.458h-1v.458q0 .151-.029.293l.981.194Q16 13.75 16 13.5M.421 14.89c.183.272.417.506.69.689l.556-.831a1.5 1.5 0 0 1-.415-.415zm14.469.689c.272-.183.506-.417.689-.69l-.831-.556c-.11.164-.251.305-.415.415l.556.83zm-12.877.373Q2.25 16 2.5 16h.458v-1H2.5q-.151 0-.293-.029zM13.5 16q.25 0 .487-.048l-.194-.98A1.5 1.5 0 0 1 13.5 15h-.458v1zm-9.625 0h.917v-1h-.917zm1.833 0h.917v-1h-.917zm1.834-1v1h.916v-1zm1.833 1h.917v-1h-.917zm1.833 0h.917v-1h-.917zM8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plus-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/plus-square-fill.svg
new file mode 100644
index 000000000..1dddd1354
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plus-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plus-square.svg b/vendor/twbs/bootstrap-icons/icons/plus-square.svg
new file mode 100644
index 000000000..ef11b48c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plus-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/plus.svg b/vendor/twbs/bootstrap-icons/icons/plus.svg
new file mode 100644
index 000000000..9012271f9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/plus.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16">
+ <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/postage-fill.svg b/vendor/twbs/bootstrap-icons/icons/postage-fill.svg
new file mode 100644
index 000000000..861a3a119
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/postage-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-postage-fill" viewBox="0 0 16 16">
+ <path d="M4.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5z"/>
+ <path d="M3.5 1a1 1 0 0 0 1-1h1a1 1 0 0 0 2 0h1a1 1 0 0 0 2 0h1a1 1 0 1 0 2 0H15v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1h-1.5a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0H1v-1a1 1 0 1 0 0-2v-1a1 1 0 1 0 0-2V9a1 1 0 1 0 0-2V6a1 1 0 0 0 0-2V3a1 1 0 0 0 0-2V0h1.5a1 1 0 0 0 1 1M3 3v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/postage-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/postage-heart-fill.svg
new file mode 100644
index 000000000..4737a4d5b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/postage-heart-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-postage-heart-fill" viewBox="0 0 16 16">
+ <path d="M4.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5zM8 11C2.175 7.236 6.336 4.31 8 5.982 9.664 4.309 13.825 7.236 8 11"/>
+ <path d="M4.5 0a1 1 0 0 1-2 0H1v1a1 1 0 0 1 0 2v1a1 1 0 0 1 0 2v1a1 1 0 0 1 0 2v1a1 1 0 1 1 0 2v1a1 1 0 1 1 0 2v1h1.5a1 1 0 1 1 2 0h1a1 1 0 1 1 2 0h1a1 1 0 1 1 2 0h1a1 1 0 1 1 2 0H15v-1a1 1 0 1 1 0-2v-1a1 1 0 1 1 0-2V9a1 1 0 1 1 0-2V6a1 1 0 1 1 0-2V3a1 1 0 1 1 0-2V0h-1.5a1 1 0 1 1-2 0h-1a1 1 0 1 1-2 0h-1a1 1 0 0 1-2 0zM4 14a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/postage-heart.svg b/vendor/twbs/bootstrap-icons/icons/postage-heart.svg
new file mode 100644
index 000000000..aa35a6cba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/postage-heart.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-postage-heart" viewBox="0 0 16 16">
+ <path d="M3.5 1a1 1 0 0 0 1-1h1a1 1 0 0 0 2 0h1a1 1 0 0 0 2 0h1a1 1 0 1 0 2 0H15v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1h-1.5a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0H1v-1a1 1 0 1 0 0-2v-1a1 1 0 1 0 0-2V9a1 1 0 1 0 0-2V6a1 1 0 0 0 0-2V3a1 1 0 0 0 0-2V0h1.5a1 1 0 0 0 1 1M3 3v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1"/>
+ <path d="M8 11C2.175 7.236 6.336 4.31 8 5.982 9.664 4.309 13.825 7.236 8 11"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/postage.svg b/vendor/twbs/bootstrap-icons/icons/postage.svg
new file mode 100644
index 000000000..54dcfa610
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/postage.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-postage" viewBox="0 0 16 16">
+ <path d="M4.75 3a.75.75 0 0 0-.75.75v8.5c0 .414.336.75.75.75h6.5a.75.75 0 0 0 .75-.75v-8.5a.75.75 0 0 0-.75-.75zM11 12H5V4h6z"/>
+ <path d="M3.5 1a1 1 0 0 0 1-1h1a1 1 0 0 0 2 0h1a1 1 0 0 0 2 0h1a1 1 0 1 0 2 0H15v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1h-1.5a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0H1v-1a1 1 0 1 0 0-2v-1a1 1 0 1 0 0-2V9a1 1 0 1 0 0-2V6a1 1 0 0 0 0-2V3a1 1 0 0 0 0-2V0h1.5a1 1 0 0 0 1 1M3 3v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/postcard-fill.svg b/vendor/twbs/bootstrap-icons/icons/postcard-fill.svg
new file mode 100644
index 000000000..aeba5185f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/postcard-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-postcard-fill" viewBox="0 0 16 16">
+ <path d="M11 8h2V6h-2z"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8.5.5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zM2 5.5a.5.5 0 0 0 .5.5H6a.5.5 0 0 0 0-1H2.5a.5.5 0 0 0-.5.5M2.5 7a.5.5 0 0 0 0 1H6a.5.5 0 0 0 0-1zM2 9.5a.5.5 0 0 0 .5.5H6a.5.5 0 0 0 0-1H2.5a.5.5 0 0 0-.5.5m8-4v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/postcard-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/postcard-heart-fill.svg
new file mode 100644
index 000000000..1e371b832
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/postcard-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-postcard-heart-fill" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm6 2.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0m3.5.878c1.482-1.42 4.795 1.392 0 4.622-4.795-3.23-1.482-6.043 0-4.622M2 5.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/postcard-heart.svg b/vendor/twbs/bootstrap-icons/icons/postcard-heart.svg
new file mode 100644
index 000000000..52c0053ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/postcard-heart.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-postcard-heart" viewBox="0 0 16 16">
+ <path d="M8 4.5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zm3.5.878c1.482-1.42 4.795 1.392 0 4.622-4.795-3.23-1.482-6.043 0-4.622M2.5 5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/>
+ <path fill-rule="evenodd" d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/postcard.svg b/vendor/twbs/bootstrap-icons/icons/postcard.svg
new file mode 100644
index 000000000..43ba40b2e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/postcard.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-postcard" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zM1 4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm7.5.5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zM2 5.5a.5.5 0 0 1 .5-.5H6a.5.5 0 0 1 0 1H2.5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5H6a.5.5 0 0 1 0 1H2.5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5H6a.5.5 0 0 1 0 1H2.5a.5.5 0 0 1-.5-.5M10.5 5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5zM13 8h-2V6h2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/power.svg b/vendor/twbs/bootstrap-icons/icons/power.svg
new file mode 100644
index 000000000..937b842dd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/power.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-power" viewBox="0 0 16 16">
+ <path d="M7.5 1v7h1V1z"/>
+ <path d="M3 8.812a5 5 0 0 1 2.578-4.375l-.485-.874A6 6 0 1 0 11 3.616l-.501.865A5 5 0 1 1 3 8.812"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/prescription.svg b/vendor/twbs/bootstrap-icons/icons/prescription.svg
new file mode 100644
index 000000000..b895b2b74
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/prescription.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-prescription" viewBox="0 0 16 16">
+ <path d="M5.5 6a.5.5 0 0 0-.5.5v4a.5.5 0 0 0 1 0V9h.293l2 2-1.147 1.146a.5.5 0 0 0 .708.708L9 11.707l1.146 1.147a.5.5 0 0 0 .708-.708L9.707 11l1.147-1.146a.5.5 0 0 0-.708-.708L9 10.293 7.695 8.987A1.5 1.5 0 0 0 7.5 6zM6 7h1.5a.5.5 0 0 1 0 1H6z"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v10.5a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 3 14.5V4a1 1 0 0 1-1-1zm2 3v10.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5V4zM3 3h10V1H3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/prescription2.svg b/vendor/twbs/bootstrap-icons/icons/prescription2.svg
new file mode 100644
index 000000000..cb278b06b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/prescription2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-prescription2" viewBox="0 0 16 16">
+ <path d="M7 6h2v2h2v2H9v2H7v-2H5V8h2z"/>
+ <path d="M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v10.5a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 3 14.5V4a1 1 0 0 1-1-1zm2 3v10.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5V4zM3 3h10V1H3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/printer-fill.svg b/vendor/twbs/bootstrap-icons/icons/printer-fill.svg
new file mode 100644
index 000000000..43cee3646
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/printer-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-printer-fill" viewBox="0 0 16 16">
+ <path d="M5 1a2 2 0 0 0-2 2v1h10V3a2 2 0 0 0-2-2zm6 8H5a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1"/>
+ <path d="M0 7a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-1v-2a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2H2a2 2 0 0 1-2-2zm2.5 1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/printer.svg b/vendor/twbs/bootstrap-icons/icons/printer.svg
new file mode 100644
index 000000000..0886a570a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/printer.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-printer" viewBox="0 0 16 16">
+ <path d="M2.5 8a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+ <path d="M5 1a2 2 0 0 0-2 2v2H2a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h1v1a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-1h1a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-1V3a2 2 0 0 0-2-2zM4 3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2H4zm1 5a2 2 0 0 0-2 2v1H2a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1v-1a2 2 0 0 0-2-2zm7 2v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/projector-fill.svg b/vendor/twbs/bootstrap-icons/icons/projector-fill.svg
new file mode 100644
index 000000000..046166cc3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/projector-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-projector-fill" viewBox="0 0 16 16">
+ <path d="M2 4a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2 1 1 0 0 0 1 1h1a1 1 0 0 0 1-1h6a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1 2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm.5 2h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1 0-1M14 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-12 1a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/projector.svg b/vendor/twbs/bootstrap-icons/icons/projector.svg
new file mode 100644
index 000000000..77e68b0bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/projector.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-projector" viewBox="0 0 16 16">
+ <path d="M14 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M2.5 6a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h4a.5.5 0 0 0 0-1z"/>
+ <path d="M0 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2 1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1H5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1 2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/puzzle-fill.svg b/vendor/twbs/bootstrap-icons/icons/puzzle-fill.svg
new file mode 100644
index 000000000..92c4ea06c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/puzzle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-puzzle-fill" viewBox="0 0 16 16">
+ <path d="M3.112 3.645A1.5 1.5 0 0 1 4.605 2H7a.5.5 0 0 1 .5.5v.382c0 .696-.497 1.182-.872 1.469a.5.5 0 0 0-.115.118l-.012.025L6.5 4.5v.003l.003.01q.005.015.036.053a.9.9 0 0 0 .27.194C7.09 4.9 7.51 5 8 5c.492 0 .912-.1 1.19-.24a.9.9 0 0 0 .271-.194.2.2 0 0 0 .036-.054l.003-.01v-.008l-.012-.025a.5.5 0 0 0-.115-.118c-.375-.287-.872-.773-.872-1.469V2.5A.5.5 0 0 1 9 2h2.395a1.5 1.5 0 0 1 1.493 1.645L12.645 6.5h.237c.195 0 .42-.147.675-.48.21-.274.528-.52.943-.52.568 0 .947.447 1.154.862C15.877 6.807 16 7.387 16 8s-.123 1.193-.346 1.638c-.207.415-.586.862-1.154.862-.415 0-.733-.246-.943-.52-.255-.333-.48-.48-.675-.48h-.237l.243 2.855A1.5 1.5 0 0 1 11.395 14H9a.5.5 0 0 1-.5-.5v-.382c0-.696.497-1.182.872-1.469a.5.5 0 0 0 .115-.118l.012-.025.001-.006v-.003l-.003-.01a.2.2 0 0 0-.036-.053.9.9 0 0 0-.27-.194C8.91 11.1 8.49 11 8 11s-.912.1-1.19.24a.9.9 0 0 0-.271.194.2.2 0 0 0-.036.054l-.003.01v.002l.001.006.012.025c.016.027.05.068.115.118.375.287.872.773.872 1.469v.382a.5.5 0 0 1-.5.5H4.605a1.5 1.5 0 0 1-1.493-1.645L3.356 9.5h-.238c-.195 0-.42.147-.675.48-.21.274-.528.52-.943.52-.568 0-.947-.447-1.154-.862C.123 9.193 0 8.613 0 8s.123-1.193.346-1.638C.553 5.947.932 5.5 1.5 5.5c.415 0 .733.246.943.52.255.333.48.48.675.48h.238z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/puzzle.svg b/vendor/twbs/bootstrap-icons/icons/puzzle.svg
new file mode 100644
index 000000000..44903f7cb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/puzzle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-puzzle" viewBox="0 0 16 16">
+ <path d="M3.112 3.645A1.5 1.5 0 0 1 4.605 2H7a.5.5 0 0 1 .5.5v.382c0 .696-.497 1.182-.872 1.469a.5.5 0 0 0-.115.118l-.012.025L6.5 4.5v.003l.003.01q.005.015.036.053a.9.9 0 0 0 .27.194C7.09 4.9 7.51 5 8 5c.492 0 .912-.1 1.19-.24a.9.9 0 0 0 .271-.194.2.2 0 0 0 .039-.063v-.009l-.012-.025a.5.5 0 0 0-.115-.118c-.375-.287-.872-.773-.872-1.469V2.5A.5.5 0 0 1 9 2h2.395a1.5 1.5 0 0 1 1.493 1.645L12.645 6.5h.237c.195 0 .42-.147.675-.48.21-.274.528-.52.943-.52.568 0 .947.447 1.154.862C15.877 6.807 16 7.387 16 8s-.123 1.193-.346 1.638c-.207.415-.586.862-1.154.862-.415 0-.733-.246-.943-.52-.255-.333-.48-.48-.675-.48h-.237l.243 2.855A1.5 1.5 0 0 1 11.395 14H9a.5.5 0 0 1-.5-.5v-.382c0-.696.497-1.182.872-1.469a.5.5 0 0 0 .115-.118l.012-.025.001-.006v-.003a.2.2 0 0 0-.039-.064.9.9 0 0 0-.27-.193C8.91 11.1 8.49 11 8 11s-.912.1-1.19.24a.9.9 0 0 0-.271.194.2.2 0 0 0-.039.063v.003l.001.006.012.025c.016.027.05.068.115.118.375.287.872.773.872 1.469v.382a.5.5 0 0 1-.5.5H4.605a1.5 1.5 0 0 1-1.493-1.645L3.356 9.5h-.238c-.195 0-.42.147-.675.48-.21.274-.528.52-.943.52-.568 0-.947-.447-1.154-.862C.123 9.193 0 8.613 0 8s.123-1.193.346-1.638C.553 5.947.932 5.5 1.5 5.5c.415 0 .733.246.943.52.255.333.48.48.675.48h.238zM4.605 3a.5.5 0 0 0-.498.55l.001.007.29 3.4A.5.5 0 0 1 3.9 7.5h-.782c-.696 0-1.182-.497-1.469-.872a.5.5 0 0 0-.118-.115l-.025-.012L1.5 6.5h-.003a.2.2 0 0 0-.064.039.9.9 0 0 0-.193.27C1.1 7.09 1 7.51 1 8s.1.912.24 1.19c.07.14.14.225.194.271a.2.2 0 0 0 .063.039H1.5l.006-.001.025-.012a.5.5 0 0 0 .118-.115c.287-.375.773-.872 1.469-.872H3.9a.5.5 0 0 1 .498.542l-.29 3.408a.5.5 0 0 0 .497.55h1.878c-.048-.166-.195-.352-.463-.557-.274-.21-.52-.528-.52-.943 0-.568.447-.947.862-1.154C6.807 10.123 7.387 10 8 10s1.193.123 1.638.346c.415.207.862.586.862 1.154 0 .415-.246.733-.52.943-.268.205-.415.39-.463.557h1.878a.5.5 0 0 0 .498-.55l-.001-.007-.29-3.4A.5.5 0 0 1 12.1 8.5h.782c.696 0 1.182.497 1.469.872.05.065.091.099.118.115l.025.012.006.001h.003a.2.2 0 0 0 .064-.039.9.9 0 0 0 .193-.27c.14-.28.24-.7.24-1.191s-.1-.912-.24-1.19a.9.9 0 0 0-.194-.271.2.2 0 0 0-.063-.039H14.5l-.006.001-.025.012a.5.5 0 0 0-.118.115c-.287.375-.773.872-1.469.872H12.1a.5.5 0 0 1-.498-.543l.29-3.407a.5.5 0 0 0-.497-.55H9.517c.048.166.195.352.463.557.274.21.52.528.52.943 0 .568-.447.947-.862 1.154C9.193 5.877 8.613 6 8 6s-1.193-.123-1.638-.346C5.947 5.447 5.5 5.068 5.5 4.5c0-.415.246-.733.52-.943.268-.205.415-.39.463-.557z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/qr-code-scan.svg b/vendor/twbs/bootstrap-icons/icons/qr-code-scan.svg
new file mode 100644
index 000000000..3c5338719
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/qr-code-scan.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-qr-code-scan" viewBox="0 0 16 16">
+ <path d="M0 .5A.5.5 0 0 1 .5 0h3a.5.5 0 0 1 0 1H1v2.5a.5.5 0 0 1-1 0zm12 0a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0V1h-2.5a.5.5 0 0 1-.5-.5M.5 12a.5.5 0 0 1 .5.5V15h2.5a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5m15 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1 0-1H15v-2.5a.5.5 0 0 1 .5-.5M4 4h1v1H4z"/>
+ <path d="M7 2H2v5h5zM3 3h3v3H3zm2 8H4v1h1z"/>
+ <path d="M7 9H2v5h5zm-4 1h3v3H3zm8-6h1v1h-1z"/>
+ <path d="M9 2h5v5H9zm1 1v3h3V3zM8 8v2h1v1H8v1h2v-2h1v2h1v-1h2v-1h-3V8zm2 2H9V9h1zm4 2h-1v1h-2v1h3zm-4 2v-1H8v1z"/>
+ <path d="M12 9h2V8h-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/qr-code.svg b/vendor/twbs/bootstrap-icons/icons/qr-code.svg
new file mode 100644
index 000000000..e09157af9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/qr-code.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-qr-code" viewBox="0 0 16 16">
+ <path d="M2 2h2v2H2z"/>
+ <path d="M6 0v6H0V0zM5 1H1v4h4zM4 12H2v2h2z"/>
+ <path d="M6 10v6H0v-6zm-5 1v4h4v-4zm11-9h2v2h-2z"/>
+ <path d="M10 0v6h6V0zm5 1v4h-4V1zM8 1V0h1v2H8v2H7V1zm0 5V4h1v2zM6 8V7h1V6h1v2h1V7h5v1h-4v1H7V8zm0 0v1H2V8H1v1H0V7h3v1zm10 1h-1V7h1zm-1 0h-1v2h2v-1h-1zm-4 0h2v1h-1v1h-1zm2 3v-1h-1v1h-1v1H9v1h3v-2zm0 0h3v1h-2v1h-1zm-4-1v1h1v-2H7v1z"/>
+ <path d="M7 12h1v3h4v1H7zm9 2v2h-3v-1h2v-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/question-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/question-circle-fill.svg
new file mode 100644
index 000000000..8b2a2c0c2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/question-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-question-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.496 6.033h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286a.237.237 0 0 0 .241.247m2.325 6.443c.61 0 1.029-.394 1.029-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94 0 .533.425.927 1.01.927z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/question-circle.svg b/vendor/twbs/bootstrap-icons/icons/question-circle.svg
new file mode 100644
index 000000000..283e6536e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/question-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-question-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286m1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/question-diamond-fill.svg b/vendor/twbs/bootstrap-icons/icons/question-diamond-fill.svg
new file mode 100644
index 000000000..6bf3512f2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/question-diamond-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-question-diamond-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM5.495 6.033a.237.237 0 0 1-.24-.247C5.35 4.091 6.737 3.5 8.005 3.5c1.396 0 2.672.73 2.672 2.24 0 1.08-.635 1.594-1.244 2.057-.737.559-1.01.768-1.01 1.486v.105a.25.25 0 0 1-.25.25h-.81a.25.25 0 0 1-.25-.246l-.004-.217c-.038-.927.495-1.498 1.168-1.987.59-.444.965-.736.965-1.371 0-.825-.628-1.168-1.314-1.168-.803 0-1.253.478-1.342 1.134-.018.137-.128.25-.266.25zm2.325 6.443c-.584 0-1.009-.394-1.009-.927 0-.552.425-.94 1.01-.94.609 0 1.028.388 1.028.94 0 .533-.42.927-1.029.927"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/question-diamond.svg b/vendor/twbs/bootstrap-icons/icons/question-diamond.svg
new file mode 100644
index 000000000..a777b470c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/question-diamond.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-question-diamond" viewBox="0 0 16 16">
+ <path d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134z"/>
+ <path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286m1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/question-lg.svg b/vendor/twbs/bootstrap-icons/icons/question-lg.svg
new file mode 100644
index 000000000..756ea0fd7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/question-lg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-question-lg" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215 0 1.344-.665 2.288-1.79 2.973-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712 1.03-.632 1.397-1.135 1.397-2.028 0-.979-.758-1.698-1.926-1.698-1.009 0-1.71.529-1.938 1.402-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09 0-.618-.473-1.092-1.095-1.092-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/question-octagon-fill.svg b/vendor/twbs/bootstrap-icons/icons/question-octagon-fill.svg
new file mode 100644
index 000000000..c0c43efc5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/question-octagon-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-question-octagon-fill" viewBox="0 0 16 16">
+ <path d="M11.46.146A.5.5 0 0 0 11.107 0H4.893a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353zM5.496 6.033a.237.237 0 0 1-.24-.247C5.35 4.091 6.737 3.5 8.005 3.5c1.396 0 2.672.73 2.672 2.24 0 1.08-.635 1.594-1.244 2.057-.737.559-1.01.768-1.01 1.486v.105a.25.25 0 0 1-.25.25h-.81a.25.25 0 0 1-.25-.246l-.004-.217c-.038-.927.495-1.498 1.168-1.987.59-.444.965-.736.965-1.371 0-.825-.628-1.168-1.314-1.168-.803 0-1.253.478-1.342 1.134-.018.137-.128.25-.266.25h-.825zm2.325 6.443c-.584 0-1.009-.394-1.009-.927 0-.552.425-.94 1.01-.94.609 0 1.028.388 1.028.94 0 .533-.42.927-1.029.927"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/question-octagon.svg b/vendor/twbs/bootstrap-icons/icons/question-octagon.svg
new file mode 100644
index 000000000..5116862f0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/question-octagon.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-question-octagon" viewBox="0 0 16 16">
+ <path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/>
+ <path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286m1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/question-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/question-square-fill.svg
new file mode 100644
index 000000000..a266f9fd5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/question-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-question-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.496 6.033a.237.237 0 0 1-.24-.247C5.35 4.091 6.737 3.5 8.005 3.5c1.396 0 2.672.73 2.672 2.24 0 1.08-.635 1.594-1.244 2.057-.737.559-1.01.768-1.01 1.486v.105a.25.25 0 0 1-.25.25h-.81a.25.25 0 0 1-.25-.246l-.004-.217c-.038-.927.495-1.498 1.168-1.987.59-.444.965-.736.965-1.371 0-.825-.628-1.168-1.314-1.168-.803 0-1.253.478-1.342 1.134-.018.137-.128.25-.266.25h-.825zm2.325 6.443c-.584 0-1.009-.394-1.009-.927 0-.552.425-.94 1.01-.94.609 0 1.028.388 1.028.94 0 .533-.42.927-1.029.927"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/question-square.svg b/vendor/twbs/bootstrap-icons/icons/question-square.svg
new file mode 100644
index 000000000..ad44a2077
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/question-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-question-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286m1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/question.svg b/vendor/twbs/bootstrap-icons/icons/question.svg
new file mode 100644
index 000000000..ba185ad07
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/question.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-question" viewBox="0 0 16 16">
+ <path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286m1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/quora.svg b/vendor/twbs/bootstrap-icons/icons/quora.svg
new file mode 100644
index 000000000..85ca1bd1b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/quora.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-quora" viewBox="0 0 16 16">
+ <path d="M8.73 12.476c-.554-1.091-1.204-2.193-2.473-2.193-.242 0-.484.04-.707.142l-.43-.863c.525-.45 1.373-.808 2.464-.808 1.697 0 2.568.818 3.26 1.86.41-.89.605-2.093.605-3.584 0-3.724-1.165-5.636-3.885-5.636-2.68 0-3.839 1.912-3.839 5.636 0 3.704 1.159 5.596 3.84 5.596.425 0 .811-.046 1.166-.15Zm.665 1.3a7 7 0 0 1-1.83.244C3.994 14.02.5 11.172.5 7.03.5 2.849 3.995 0 7.564 0c3.63 0 7.09 2.828 7.09 7.03 0 2.337-1.09 4.236-2.675 5.464.512.767 1.04 1.277 1.773 1.277.802 0 1.125-.62 1.179-1.105h1.043c.061.647-.262 3.334-3.178 3.334-1.767 0-2.7-1.024-3.4-2.224Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/quote.svg b/vendor/twbs/bootstrap-icons/icons/quote.svg
new file mode 100644
index 000000000..0aa0e175a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/quote.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-quote" viewBox="0 0 16 16">
+ <path d="M12 12a1 1 0 0 0 1-1V8.558a1 1 0 0 0-1-1h-1.388q0-.527.062-1.054.093-.558.31-.992t.559-.683q.34-.279.868-.279V3q-.868 0-1.52.372a3.3 3.3 0 0 0-1.085.992 4.9 4.9 0 0 0-.62 1.458A7.7 7.7 0 0 0 9 7.558V11a1 1 0 0 0 1 1zm-6 0a1 1 0 0 0 1-1V8.558a1 1 0 0 0-1-1H4.612q0-.527.062-1.054.094-.558.31-.992.217-.434.559-.683.34-.279.868-.279V3q-.868 0-1.52.372a3.3 3.3 0 0 0-1.085.992 4.9 4.9 0 0 0-.62 1.458A7.7 7.7 0 0 0 3 7.558V11a1 1 0 0 0 1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/r-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/r-circle-fill.svg
new file mode 100644
index 000000000..810423eeb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/r-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-r-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.5 4.002V12h1.335V8.924H8.52L9.98 12h1.52L9.856 8.701c.828-.299 1.495-1.101 1.495-2.238 0-1.488-1.03-2.461-2.74-2.461zm1.335 1.09v2.777h1.549c.995 0 1.573-.463 1.573-1.36 0-.913-.596-1.417-1.537-1.417z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/r-circle.svg b/vendor/twbs/bootstrap-icons/icons/r-circle.svg
new file mode 100644
index 000000000..bf2d8d653
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/r-circle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-r-circle" viewBox="0 0 16 16">
+ <path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.5 4.002h3.11c1.71 0 2.741.973 2.741 2.46 0 1.138-.667 1.94-1.495 2.24L11.5 12H9.98L8.52 8.924H6.836V12H5.5zm1.335 1.09v2.777h1.549c.995 0 1.573-.463 1.573-1.36 0-.913-.596-1.417-1.537-1.417z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/r-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/r-square-fill.svg
new file mode 100644
index 000000000..b1151f36e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/r-square-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-r-square-fill" viewBox="0 0 16 16">
+ <path d="M6.835 5.092v2.777h1.549c.995 0 1.573-.463 1.573-1.36 0-.913-.596-1.417-1.537-1.417z"/>
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.5 4.002h3.11c1.71 0 2.741.973 2.741 2.46 0 1.138-.667 1.94-1.495 2.24L11.5 12H9.98L8.52 8.924H6.836V12H5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/r-square.svg b/vendor/twbs/bootstrap-icons/icons/r-square.svg
new file mode 100644
index 000000000..e19e688a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/r-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-r-square" viewBox="0 0 16 16">
+ <path d="M5.5 4.002h3.11c1.71 0 2.741.973 2.741 2.46 0 1.138-.667 1.94-1.495 2.24L11.5 12H9.98L8.52 8.924H6.836V12H5.5zm1.335 1.09v2.777h1.549c.995 0 1.573-.463 1.573-1.36 0-.913-.596-1.417-1.537-1.417z"/>
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/radar.svg b/vendor/twbs/bootstrap-icons/icons/radar.svg
new file mode 100644
index 000000000..024f3fd58
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/radar.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-radar" viewBox="0 0 16 16">
+ <path d="M6.634 1.135A7 7 0 0 1 15 8a.5.5 0 0 1-1 0 6 6 0 1 0-6.5 5.98v-1.005A5 5 0 1 1 13 8a.5.5 0 0 1-1 0 4 4 0 1 0-4.5 3.969v-1.011A2.999 2.999 0 1 1 11 8a.5.5 0 0 1-1 0 2 2 0 1 0-2.5 1.936v-1.07a1 1 0 1 1 1 0V15.5a.5.5 0 0 1-1 0v-.518a7 7 0 0 1-.866-13.847"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/radioactive.svg b/vendor/twbs/bootstrap-icons/icons/radioactive.svg
new file mode 100644
index 000000000..3eaaa56bc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/radioactive.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-radioactive" viewBox="0 0 16 16">
+ <path d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8"/>
+ <path d="M9.653 5.496A3 3 0 0 0 8 5c-.61 0-1.179.183-1.653.496L4.694 2.992A5.97 5.97 0 0 1 8 2c1.222 0 2.358.365 3.306.992zm1.342 2.324a3 3 0 0 1-.884 2.312 3 3 0 0 1-.769.552l1.342 2.683c.57-.286 1.09-.66 1.538-1.103a6 6 0 0 0 1.767-4.624zm-5.679 5.548 1.342-2.684A3 3 0 0 1 5.005 7.82l-2.994-.18a6 6 0 0 0 3.306 5.728ZM10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rainbow.svg b/vendor/twbs/bootstrap-icons/icons/rainbow.svg
new file mode 100644
index 000000000..e864abf23
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rainbow.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rainbow" viewBox="0 0 16 16">
+ <path d="M8 4.5a7 7 0 0 0-7 7 .5.5 0 0 1-1 0 8 8 0 1 1 16 0 .5.5 0 0 1-1 0 7 7 0 0 0-7-7m0 2a5 5 0 0 0-5 5 .5.5 0 0 1-1 0 6 6 0 1 1 12 0 .5.5 0 0 1-1 0 5 5 0 0 0-5-5m0 2a3 3 0 0 0-3 3 .5.5 0 0 1-1 0 4 4 0 1 1 8 0 .5.5 0 0 1-1 0 3 3 0 0 0-3-3m0 2a1 1 0 0 0-1 1 .5.5 0 0 1-1 0 2 2 0 1 1 4 0 .5.5 0 0 1-1 0 1 1 0 0 0-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/receipt-cutoff.svg b/vendor/twbs/bootstrap-icons/icons/receipt-cutoff.svg
new file mode 100644
index 000000000..21c3bc80f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/receipt-cutoff.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-receipt-cutoff" viewBox="0 0 16 16">
+ <path d="M3 4.5a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5M11.5 4a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1zm0 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/>
+ <path d="M2.354.646a.5.5 0 0 0-.801.13l-.5 1A.5.5 0 0 0 1 2v13H.5a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1H15V2a.5.5 0 0 0-.053-.224l-.5-1a.5.5 0 0 0-.8-.13L13 1.293l-.646-.647a.5.5 0 0 0-.708 0L11 1.293l-.646-.647a.5.5 0 0 0-.708 0L9 1.293 8.354.646a.5.5 0 0 0-.708 0L7 1.293 6.354.646a.5.5 0 0 0-.708 0L5 1.293 4.354.646a.5.5 0 0 0-.708 0L3 1.293zm-.217 1.198.51.51a.5.5 0 0 0 .707 0L4 1.707l.646.647a.5.5 0 0 0 .708 0L6 1.707l.646.647a.5.5 0 0 0 .708 0L8 1.707l.646.647a.5.5 0 0 0 .708 0L10 1.707l.646.647a.5.5 0 0 0 .708 0L12 1.707l.646.647a.5.5 0 0 0 .708 0l.509-.51.137.274V15H2V2.118z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/receipt.svg b/vendor/twbs/bootstrap-icons/icons/receipt.svg
new file mode 100644
index 000000000..ab29fe63d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/receipt.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-receipt" viewBox="0 0 16 16">
+ <path d="M1.92.506a.5.5 0 0 1 .434.14L3 1.293l.646-.647a.5.5 0 0 1 .708 0L5 1.293l.646-.647a.5.5 0 0 1 .708 0L7 1.293l.646-.647a.5.5 0 0 1 .708 0L9 1.293l.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .801.13l.5 1A.5.5 0 0 1 15 2v12a.5.5 0 0 1-.053.224l-.5 1a.5.5 0 0 1-.8.13L13 14.707l-.646.647a.5.5 0 0 1-.708 0L11 14.707l-.646.647a.5.5 0 0 1-.708 0L9 14.707l-.646.647a.5.5 0 0 1-.708 0L7 14.707l-.646.647a.5.5 0 0 1-.708 0L5 14.707l-.646.647a.5.5 0 0 1-.708 0L3 14.707l-.646.647a.5.5 0 0 1-.801-.13l-.5-1A.5.5 0 0 1 1 14V2a.5.5 0 0 1 .053-.224l.5-1a.5.5 0 0 1 .367-.27m.217 1.338L2 2.118v11.764l.137.274.51-.51a.5.5 0 0 1 .707 0l.646.647.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.646.646.646-.646a.5.5 0 0 1 .708 0l.509.509.137-.274V2.118l-.137-.274-.51.51a.5.5 0 0 1-.707 0L12 1.707l-.646.647a.5.5 0 0 1-.708 0L10 1.707l-.646.647a.5.5 0 0 1-.708 0L8 1.707l-.646.647a.5.5 0 0 1-.708 0L6 1.707l-.646.647a.5.5 0 0 1-.708 0L4 1.707l-.646.647a.5.5 0 0 1-.708 0z"/>
+ <path d="M3 4.5a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 1 1 0 1h-6a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m8-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/reception-0.svg b/vendor/twbs/bootstrap-icons/icons/reception-0.svg
new file mode 100644
index 000000000..a7c78721a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/reception-0.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reception-0" viewBox="0 0 16 16">
+ <path d="M0 13.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/reception-1.svg b/vendor/twbs/bootstrap-icons/icons/reception-1.svg
new file mode 100644
index 000000000..4081ceb45
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/reception-1.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reception-1" viewBox="0 0 16 16">
+ <path d="M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/reception-2.svg b/vendor/twbs/bootstrap-icons/icons/reception-2.svg
new file mode 100644
index 000000000..7e1acc55b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/reception-2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reception-2" viewBox="0 0 16 16">
+ <path d="M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4 5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m4 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/reception-3.svg b/vendor/twbs/bootstrap-icons/icons/reception-3.svg
new file mode 100644
index 000000000..e9ea47695
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/reception-3.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reception-3" viewBox="0 0 16 16">
+ <path d="M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4 8a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/reception-4.svg b/vendor/twbs/bootstrap-icons/icons/reception-4.svg
new file mode 100644
index 000000000..7791e4b9a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/reception-4.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reception-4" viewBox="0 0 16 16">
+ <path d="M0 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/record-btn-fill.svg b/vendor/twbs/bootstrap-icons/icons/record-btn-fill.svg
new file mode 100644
index 000000000..83ee303a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/record-btn-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-record-btn-fill" viewBox="0 0 16 16">
+ <path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m8-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/record-btn.svg b/vendor/twbs/bootstrap-icons/icons/record-btn.svg
new file mode 100644
index 000000000..7ba84cea7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/record-btn.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-record-btn" viewBox="0 0 16 16">
+ <path d="M8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/record-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/record-circle-fill.svg
new file mode 100644
index 000000000..0db59d1b9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/record-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-record-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/record-circle.svg b/vendor/twbs/bootstrap-icons/icons/record-circle.svg
new file mode 100644
index 000000000..5dad17ba9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/record-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-record-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/record-fill.svg b/vendor/twbs/bootstrap-icons/icons/record-fill.svg
new file mode 100644
index 000000000..ef31df060
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/record-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-record-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 13A5 5 0 1 0 8 3a5 5 0 0 0 0 10"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/record.svg b/vendor/twbs/bootstrap-icons/icons/record.svg
new file mode 100644
index 000000000..5ec840cac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/record.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-record" viewBox="0 0 16 16">
+ <path d="M8 12a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0 1A5 5 0 1 0 8 3a5 5 0 0 0 0 10"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/record2-fill.svg b/vendor/twbs/bootstrap-icons/icons/record2-fill.svg
new file mode 100644
index 000000000..8ad4fe3ef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/record2-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-record2-fill" viewBox="0 0 16 16">
+ <path d="M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/>
+ <path d="M8 13A5 5 0 1 0 8 3a5 5 0 0 0 0 10m0-2a3 3 0 1 1 0-6 3 3 0 0 1 0 6"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/record2.svg b/vendor/twbs/bootstrap-icons/icons/record2.svg
new file mode 100644
index 000000000..3b5c5caf3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/record2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-record2" viewBox="0 0 16 16">
+ <path d="M8 12a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0 1A5 5 0 1 0 8 3a5 5 0 0 0 0 10"/>
+ <path d="M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/recycle.svg b/vendor/twbs/bootstrap-icons/icons/recycle.svg
new file mode 100644
index 000000000..21d1bd948
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/recycle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-recycle" viewBox="0 0 16 16">
+ <path d="M9.302 1.256a1.5 1.5 0 0 0-2.604 0l-1.704 2.98a.5.5 0 0 0 .869.497l1.703-2.981a.5.5 0 0 1 .868 0l2.54 4.444-1.256-.337a.5.5 0 1 0-.26.966l2.415.647a.5.5 0 0 0 .613-.353l.647-2.415a.5.5 0 1 0-.966-.259l-.333 1.242zM2.973 7.773l-1.255.337a.5.5 0 1 1-.26-.966l2.416-.647a.5.5 0 0 1 .612.353l.647 2.415a.5.5 0 0 1-.966.259l-.333-1.242-2.545 4.454a.5.5 0 0 0 .434.748H5a.5.5 0 0 1 0 1H1.723A1.5 1.5 0 0 1 .421 12.24zm10.89 1.463a.5.5 0 1 0-.868.496l1.716 3.004a.5.5 0 0 1-.434.748h-5.57l.647-.646a.5.5 0 1 0-.708-.707l-1.5 1.5a.5.5 0 0 0 0 .707l1.5 1.5a.5.5 0 1 0 .708-.707l-.647-.647h5.57a1.5 1.5 0 0 0 1.302-2.244z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/reddit.svg b/vendor/twbs/bootstrap-icons/icons/reddit.svg
new file mode 100644
index 000000000..777aeaddd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/reddit.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reddit" viewBox="0 0 16 16">
+ <path d="M6.167 8a.83.83 0 0 0-.83.83c0 .459.372.84.83.831a.831.831 0 0 0 0-1.661m1.843 3.647c.315 0 1.403-.038 1.976-.611a.23.23 0 0 0 0-.306.213.213 0 0 0-.306 0c-.353.363-1.126.487-1.67.487-.545 0-1.308-.124-1.671-.487a.213.213 0 0 0-.306 0 .213.213 0 0 0 0 .306c.564.563 1.652.61 1.977.61zm.992-2.807c0 .458.373.83.831.83s.83-.381.83-.83a.831.831 0 0 0-1.66 0z"/>
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.828-1.165c-.315 0-.602.124-.812.325-.801-.573-1.9-.945-3.121-.993l.534-2.501 1.738.372a.83.83 0 1 0 .83-.869.83.83 0 0 0-.744.468l-1.938-.41a.2.2 0 0 0-.153.028.2.2 0 0 0-.086.134l-.592 2.788c-1.24.038-2.358.41-3.17.992-.21-.2-.496-.324-.81-.324a1.163 1.163 0 0 0-.478 2.224q-.03.17-.029.353c0 1.795 2.091 3.256 4.669 3.256s4.668-1.451 4.668-3.256c0-.114-.01-.238-.029-.353.401-.181.688-.592.688-1.069 0-.65-.525-1.165-1.165-1.165"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/regex.svg b/vendor/twbs/bootstrap-icons/icons/regex.svg
new file mode 100644
index 000000000..ec8bf00ce
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/regex.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-regex" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M3.05 3.05a7 7 0 0 0 0 9.9.5.5 0 0 1-.707.707 8 8 0 0 1 0-11.314.5.5 0 1 1 .707.707m9.9-.707a.5.5 0 0 1 .707 0 8 8 0 0 1 0 11.314.5.5 0 0 1-.707-.707 7 7 0 0 0 0-9.9.5.5 0 0 1 0-.707M6 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0m5-6.5a.5.5 0 0 0-1 0v2.117L8.257 5.57a.5.5 0 0 0-.514.858L9.528 7.5 7.743 8.571a.5.5 0 1 0 .514.858L10 8.383V10.5a.5.5 0 1 0 1 0V8.383l1.743 1.046a.5.5 0 0 0 .514-.858L11.472 7.5l1.785-1.071a.5.5 0 1 0-.514-.858L11 6.617z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/repeat-1.svg b/vendor/twbs/bootstrap-icons/icons/repeat-1.svg
new file mode 100644
index 000000000..9357fcf0c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/repeat-1.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-repeat-1" viewBox="0 0 16 16">
+ <path d="M11 4v1.466a.25.25 0 0 0 .41.192l2.36-1.966a.25.25 0 0 0 0-.384l-2.36-1.966a.25.25 0 0 0-.41.192V3H5a5 5 0 0 0-4.48 7.223.5.5 0 0 0 .896-.446A4 4 0 0 1 5 4zm4.48 1.777a.5.5 0 0 0-.896.446A4 4 0 0 1 11 12H5.001v-1.466a.25.25 0 0 0-.41-.192l-2.36 1.966a.25.25 0 0 0 0 .384l2.36 1.966a.25.25 0 0 0 .41-.192V13h6a5 5 0 0 0 4.48-7.223Z"/>
+ <path d="M9 5.5a.5.5 0 0 0-.854-.354l-1.75 1.75a.5.5 0 1 0 .708.708L8 6.707V10.5a.5.5 0 0 0 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/repeat.svg b/vendor/twbs/bootstrap-icons/icons/repeat.svg
new file mode 100644
index 000000000..51765c9f4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/repeat.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-repeat" viewBox="0 0 16 16">
+ <path d="M11 5.466V4H5a4 4 0 0 0-3.584 5.777.5.5 0 1 1-.896.446A5 5 0 0 1 5 3h6V1.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384l-2.36 1.966a.25.25 0 0 1-.41-.192m3.81.086a.5.5 0 0 1 .67.225A5 5 0 0 1 11 13H5v1.466a.25.25 0 0 1-.41.192l-2.36-1.966a.25.25 0 0 1 0-.384l2.36-1.966a.25.25 0 0 1 .41.192V12h6a4 4 0 0 0 3.585-5.777.5.5 0 0 1 .225-.67Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/reply-all-fill.svg b/vendor/twbs/bootstrap-icons/icons/reply-all-fill.svg
new file mode 100644
index 000000000..95e18a248
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/reply-all-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reply-all-fill" viewBox="0 0 16 16">
+ <path d="M8.021 11.9 3.453 8.62a.72.72 0 0 1 0-1.238L8.021 4.1a.716.716 0 0 1 1.079.619V6c1.5 0 6 0 7 8-2.5-4.5-7-4-7-4v1.281c0 .56-.606.898-1.079.62z"/>
+ <path d="M5.232 4.293a.5.5 0 0 1-.106.7L1.114 7.945l-.042.028a.147.147 0 0 0 0 .252l.042.028 4.012 2.954a.5.5 0 1 1-.593.805L.539 9.073a1.147 1.147 0 0 1 0-1.946l3.994-2.94a.5.5 0 0 1 .699.106"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/reply-all.svg b/vendor/twbs/bootstrap-icons/icons/reply-all.svg
new file mode 100644
index 000000000..decad51d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/reply-all.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reply-all" viewBox="0 0 16 16">
+ <path d="M8.098 5.013a.144.144 0 0 1 .202.134V6.3a.5.5 0 0 0 .5.5c.667 0 2.013.005 3.3.822.984.624 1.99 1.76 2.595 3.876-1.02-.983-2.185-1.516-3.205-1.799a8.7 8.7 0 0 0-1.921-.306 7 7 0 0 0-.798.008h-.013l-.005.001h-.001L8.8 9.9l-.05-.498a.5.5 0 0 0-.45.498v1.153c0 .108-.11.176-.202.134L4.114 8.254l-.042-.028a.147.147 0 0 1 0-.252l.042-.028zM9.3 10.386q.102 0 .223.006c.434.02 1.034.086 1.7.271 1.326.368 2.896 1.202 3.94 3.08a.5.5 0 0 0 .933-.305c-.464-3.71-1.886-5.662-3.46-6.66-1.245-.79-2.527-.942-3.336-.971v-.66a1.144 1.144 0 0 0-1.767-.96l-3.994 2.94a1.147 1.147 0 0 0 0 1.946l3.994 2.94a1.144 1.144 0 0 0 1.767-.96z"/>
+ <path d="M5.232 4.293a.5.5 0 0 0-.7-.106L.54 7.127a1.147 1.147 0 0 0 0 1.946l3.994 2.94a.5.5 0 1 0 .593-.805L1.114 8.254l-.042-.028a.147.147 0 0 1 0-.252l.042-.028 4.012-2.954a.5.5 0 0 0 .106-.699"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/reply-fill.svg b/vendor/twbs/bootstrap-icons/icons/reply-fill.svg
new file mode 100644
index 000000000..82358b165
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/reply-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reply-fill" viewBox="0 0 16 16">
+ <path d="M5.921 11.9 1.353 8.62a.72.72 0 0 1 0-1.238L5.921 4.1A.716.716 0 0 1 7 4.719V6c1.5 0 6 0 7 8-2.5-4.5-7-4-7-4v1.281c0 .56-.606.898-1.079.62z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/reply.svg b/vendor/twbs/bootstrap-icons/icons/reply.svg
new file mode 100644
index 000000000..5bb432e7c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/reply.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reply" viewBox="0 0 16 16">
+ <path d="M6.598 5.013a.144.144 0 0 1 .202.134V6.3a.5.5 0 0 0 .5.5c.667 0 2.013.005 3.3.822.984.624 1.99 1.76 2.595 3.876-1.02-.983-2.185-1.516-3.205-1.799a8.7 8.7 0 0 0-1.921-.306 7 7 0 0 0-.798.008h-.013l-.005.001h-.001L7.3 9.9l-.05-.498a.5.5 0 0 0-.45.498v1.153c0 .108-.11.176-.202.134L2.614 8.254l-.042-.028a.147.147 0 0 1 0-.252l.042-.028zM7.8 10.386q.103 0 .223.006c.434.02 1.034.086 1.7.271 1.326.368 2.896 1.202 3.94 3.08a.5.5 0 0 0 .933-.305c-.464-3.71-1.886-5.662-3.46-6.66-1.245-.79-2.527-.942-3.336-.971v-.66a1.144 1.144 0 0 0-1.767-.96l-3.994 2.94a1.147 1.147 0 0 0 0 1.946l3.994 2.94a1.144 1.144 0 0 0 1.767-.96z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rewind-btn-fill.svg b/vendor/twbs/bootstrap-icons/icons/rewind-btn-fill.svg
new file mode 100644
index 000000000..8ea415568
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rewind-btn-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rewind-btn-fill" viewBox="0 0 16 16">
+ <path d="M0 4v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2m7.729 1.055A.5.5 0 0 1 8 5.5v1.886l3.21-2.293A.5.5 0 0 1 12 5.5v5a.5.5 0 0 1-.79.407L8 8.614V10.5a.5.5 0 0 1-.79.407l-3.5-2.5a.5.5 0 0 1 0-.814l3.5-2.5a.5.5 0 0 1 .519-.038"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rewind-btn.svg b/vendor/twbs/bootstrap-icons/icons/rewind-btn.svg
new file mode 100644
index 000000000..47bd7179f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rewind-btn.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rewind-btn" viewBox="0 0 16 16">
+ <path d="M7.21 5.093A.5.5 0 0 1 8 5.5v1.886l3.21-2.293A.5.5 0 0 1 12 5.5v5a.5.5 0 0 1-.79.407L8 8.614V10.5a.5.5 0 0 1-.79.407l-3.5-2.5a.5.5 0 0 1 0-.814z"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rewind-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/rewind-circle-fill.svg
new file mode 100644
index 000000000..b97204468
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rewind-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rewind-circle-fill" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M7.729 5.055A.5.5 0 0 1 8 5.5v1.886l3.21-2.293A.5.5 0 0 1 12 5.5v5a.5.5 0 0 1-.79.407L8 8.614V10.5a.5.5 0 0 1-.79.407l-3.5-2.5a.5.5 0 0 1 0-.814l3.5-2.5a.5.5 0 0 1 .519-.038"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rewind-circle.svg b/vendor/twbs/bootstrap-icons/icons/rewind-circle.svg
new file mode 100644
index 000000000..495214708
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rewind-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rewind-circle" viewBox="0 0 16 16">
+ <path d="M7.729 5.055a.5.5 0 0 0-.52.038l-3.5 2.5a.5.5 0 0 0 0 .814l3.5 2.5A.5.5 0 0 0 8 10.5V8.614l3.21 2.293A.5.5 0 0 0 12 10.5v-5a.5.5 0 0 0-.79-.407L8 7.386V5.5a.5.5 0 0 0-.271-.445"/>
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rewind-fill.svg b/vendor/twbs/bootstrap-icons/icons/rewind-fill.svg
new file mode 100644
index 000000000..5919f7eb7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rewind-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rewind-fill" viewBox="0 0 16 16">
+ <path d="M8.404 7.304a.802.802 0 0 0 0 1.392l6.363 3.692c.52.302 1.233-.043 1.233-.696V4.308c0-.653-.713-.998-1.233-.696z"/>
+ <path d="M.404 7.304a.802.802 0 0 0 0 1.392l6.363 3.692c.52.302 1.233-.043 1.233-.696V4.308c0-.653-.713-.998-1.233-.696z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rewind.svg b/vendor/twbs/bootstrap-icons/icons/rewind.svg
new file mode 100644
index 000000000..bc731e723
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rewind.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rewind" viewBox="0 0 16 16">
+ <path d="M9.196 8 15 4.633v6.734zm-.792-.696a.802.802 0 0 0 0 1.392l6.363 3.692c.52.302 1.233-.043 1.233-.696V4.308c0-.653-.713-.998-1.233-.696z"/>
+ <path d="M1.196 8 7 4.633v6.734zm-.792-.696a.802.802 0 0 0 0 1.392l6.363 3.692c.52.302 1.233-.043 1.233-.696V4.308c0-.653-.713-.998-1.233-.696z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/robot.svg b/vendor/twbs/bootstrap-icons/icons/robot.svg
new file mode 100644
index 000000000..a2242026d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/robot.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-robot" viewBox="0 0 16 16">
+ <path d="M6 12.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5M3 8.062C3 6.76 4.235 5.765 5.53 5.886a26.6 26.6 0 0 0 4.94 0C11.765 5.765 13 6.76 13 8.062v1.157a.93.93 0 0 1-.765.935c-.845.147-2.34.346-4.235.346s-3.39-.2-4.235-.346A.93.93 0 0 1 3 9.219zm4.542-.827a.25.25 0 0 0-.217.068l-.92.9a25 25 0 0 1-1.871-.183.25.25 0 0 0-.068.495c.55.076 1.232.149 2.02.193a.25.25 0 0 0 .189-.071l.754-.736.847 1.71a.25.25 0 0 0 .404.062l.932-.97a25 25 0 0 0 1.922-.188.25.25 0 0 0-.068-.495c-.538.074-1.207.145-1.98.189a.25.25 0 0 0-.166.076l-.754.785-.842-1.7a.25.25 0 0 0-.182-.135"/>
+ <path d="M8.5 1.866a1 1 0 1 0-1 0V3h-2A4.5 4.5 0 0 0 1 7.5V8a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1v1a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-1a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1v-.5A4.5 4.5 0 0 0 10.5 3h-2zM14 7.5V13a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7.5A3.5 3.5 0 0 1 5.5 4h5A3.5 3.5 0 0 1 14 7.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rocket-fill.svg b/vendor/twbs/bootstrap-icons/icons/rocket-fill.svg
new file mode 100644
index 000000000..f3190290a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rocket-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rocket-fill" viewBox="0 0 16 16">
+ <path d="M10.175 1.991c.81 1.312 1.583 3.43 1.778 6.819l1.5 1.83A2.5 2.5 0 0 1 14 12.202V15.5a.5.5 0 0 1-.9.3l-1.125-1.5c-.166-.222-.42-.4-.752-.57-.214-.108-.414-.192-.627-.282l-.196-.083C9.7 13.793 8.85 14 8 14s-1.7-.207-2.4-.635q-.101.044-.198.084c-.211.089-.411.173-.625.281-.332.17-.586.348-.752.57L2.9 15.8a.5.5 0 0 1-.9-.3v-3.298a2.5 2.5 0 0 1 .548-1.562l.004-.005L4.049 8.81c.197-3.323.969-5.434 1.774-6.756.466-.767.94-1.262 1.31-1.57a3.7 3.7 0 0 1 .601-.41A.55.55 0 0 1 8 0c.101 0 .17.027.25.064q.056.025.145.075c.118.066.277.167.463.315.373.297.85.779 1.317 1.537M9.5 6c0-1.105-.672-2-1.5-2s-1.5.895-1.5 2S7.172 8 8 8s1.5-.895 1.5-2"/>
+ <path d="M8 14.5c.5 0 .999-.046 1.479-.139L8.4 15.8a.5.5 0 0 1-.8 0l-1.079-1.439c.48.093.98.139 1.479.139"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rocket-takeoff-fill.svg b/vendor/twbs/bootstrap-icons/icons/rocket-takeoff-fill.svg
new file mode 100644
index 000000000..707d20522
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rocket-takeoff-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rocket-takeoff-fill" viewBox="0 0 16 16">
+ <path d="M12.17 9.53c2.307-2.592 3.278-4.684 3.641-6.218.21-.887.214-1.58.16-2.065a3.6 3.6 0 0 0-.108-.563 2 2 0 0 0-.078-.23V.453c-.073-.164-.168-.234-.352-.295a2 2 0 0 0-.16-.045 4 4 0 0 0-.57-.093c-.49-.044-1.19-.03-2.08.188-1.536.374-3.618 1.343-6.161 3.604l-2.4.238h-.006a2.55 2.55 0 0 0-1.524.734L.15 7.17a.512.512 0 0 0 .433.868l1.896-.271c.28-.04.592.013.955.132.232.076.437.16.655.248l.203.083c.196.816.66 1.58 1.275 2.195.613.614 1.376 1.08 2.191 1.277l.082.202c.089.218.173.424.249.657.118.363.172.676.132.956l-.271 1.9a.512.512 0 0 0 .867.433l2.382-2.386c.41-.41.668-.949.732-1.526zm.11-3.699c-.797.8-1.93.961-2.528.362-.598-.6-.436-1.733.361-2.532.798-.799 1.93-.96 2.528-.361s.437 1.732-.36 2.531Z"/>
+ <path d="M5.205 10.787a7.6 7.6 0 0 0 1.804 1.352c-1.118 1.007-4.929 2.028-5.054 1.903-.126-.127.737-4.189 1.839-5.18.346.69.837 1.35 1.411 1.925"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rocket-takeoff.svg b/vendor/twbs/bootstrap-icons/icons/rocket-takeoff.svg
new file mode 100644
index 000000000..2abc6d4f6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rocket-takeoff.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rocket-takeoff" viewBox="0 0 16 16">
+ <path d="M9.752 6.193c.599.6 1.73.437 2.528-.362s.96-1.932.362-2.531c-.599-.6-1.73-.438-2.528.361-.798.8-.96 1.933-.362 2.532"/>
+ <path d="M15.811 3.312c-.363 1.534-1.334 3.626-3.64 6.218l-.24 2.408a2.56 2.56 0 0 1-.732 1.526L8.817 15.85a.51.51 0 0 1-.867-.434l.27-1.899c.04-.28-.013-.593-.131-.956a9 9 0 0 0-.249-.657l-.082-.202c-.815-.197-1.578-.662-2.191-1.277-.614-.615-1.079-1.379-1.275-2.195l-.203-.083a10 10 0 0 0-.655-.248c-.363-.119-.675-.172-.955-.132l-1.896.27A.51.51 0 0 1 .15 7.17l2.382-2.386c.41-.41.947-.67 1.524-.734h.006l2.4-.238C9.005 1.55 11.087.582 12.623.208c.89-.217 1.59-.232 2.08-.188.244.023.435.06.57.093q.1.026.16.045c.184.06.279.13.351.295l.029.073a3.5 3.5 0 0 1 .157.721c.055.485.051 1.178-.159 2.065m-4.828 7.475.04-.04-.107 1.081a1.54 1.54 0 0 1-.44.913l-1.298 1.3.054-.38c.072-.506-.034-.993-.172-1.418a9 9 0 0 0-.164-.45c.738-.065 1.462-.38 2.087-1.006M5.205 5c-.625.626-.94 1.351-1.004 2.09a9 9 0 0 0-.45-.164c-.424-.138-.91-.244-1.416-.172l-.38.054 1.3-1.3c.245-.246.566-.401.91-.44l1.08-.107zm9.406-3.961c-.38-.034-.967-.027-1.746.163-1.558.38-3.917 1.496-6.937 4.521-.62.62-.799 1.34-.687 2.051.107.676.483 1.362 1.048 1.928.564.565 1.25.941 1.924 1.049.71.112 1.429-.067 2.048-.688 3.079-3.083 4.192-5.444 4.556-6.987.183-.771.18-1.345.138-1.713a3 3 0 0 0-.045-.283 3 3 0 0 0-.3-.041Z"/>
+ <path d="M7.009 12.139a7.6 7.6 0 0 1-1.804-1.352A7.6 7.6 0 0 1 3.794 8.86c-1.102.992-1.965 5.054-1.839 5.18.125.126 3.936-.896 5.054-1.902Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rocket.svg b/vendor/twbs/bootstrap-icons/icons/rocket.svg
new file mode 100644
index 000000000..b760e1f8e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rocket.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rocket" viewBox="0 0 16 16">
+ <path d="M8 8c.828 0 1.5-.895 1.5-2S8.828 4 8 4s-1.5.895-1.5 2S7.172 8 8 8"/>
+ <path d="M11.953 8.81c-.195-3.388-.968-5.507-1.777-6.819C9.707 1.233 9.23.751 8.857.454a3.5 3.5 0 0 0-.463-.315A2 2 0 0 0 8.25.064.55.55 0 0 0 8 0a.55.55 0 0 0-.266.073 2 2 0 0 0-.142.08 4 4 0 0 0-.459.33c-.37.308-.844.803-1.31 1.57-.805 1.322-1.577 3.433-1.774 6.756l-1.497 1.826-.004.005A2.5 2.5 0 0 0 2 12.202V15.5a.5.5 0 0 0 .9.3l1.125-1.5c.166-.222.42-.4.752-.57.214-.108.414-.192.625-.281l.198-.084c.7.428 1.55.635 2.4.635s1.7-.207 2.4-.635q.1.044.196.083c.213.09.413.174.627.282.332.17.586.348.752.57l1.125 1.5a.5.5 0 0 0 .9-.3v-3.298a2.5 2.5 0 0 0-.548-1.562zM12 10.445v.055c0 .866-.284 1.585-.75 2.14.146.064.292.13.425.199.39.197.8.46 1.1.86L13 14v-1.798a1.5 1.5 0 0 0-.327-.935zM4.75 12.64C4.284 12.085 4 11.366 4 10.5v-.054l-.673.82a1.5 1.5 0 0 0-.327.936V14l.225-.3c.3-.4.71-.664 1.1-.861.133-.068.279-.135.425-.199M8.009 1.073q.096.06.226.163c.284.226.683.621 1.09 1.28C10.137 3.836 11 6.237 11 10.5c0 .858-.374 1.48-.943 1.893C9.517 12.786 8.781 13 8 13s-1.517-.214-2.057-.607C5.373 11.979 5 11.358 5 10.5c0-4.182.86-6.586 1.677-7.928.409-.67.81-1.082 1.096-1.32q.136-.113.236-.18Z"/>
+ <path d="M9.479 14.361c-.48.093-.98.139-1.479.139s-.999-.046-1.479-.139L7.6 15.8a.5.5 0 0 0 .8 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/router-fill.svg b/vendor/twbs/bootstrap-icons/icons/router-fill.svg
new file mode 100644
index 000000000..74d14694a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/router-fill.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-router-fill" viewBox="0 0 16 16">
+ <path d="M5.525 3.025a3.5 3.5 0 0 1 4.95 0 .5.5 0 1 0 .707-.707 4.5 4.5 0 0 0-6.364 0 .5.5 0 0 0 .707.707"/>
+ <path d="M6.94 4.44a1.5 1.5 0 0 1 2.12 0 .5.5 0 0 0 .708-.708 2.5 2.5 0 0 0-3.536 0 .5.5 0 0 0 .707.707Z"/>
+ <path d="M2.974 2.342a.5.5 0 1 0-.948.316L3.806 8H1.5A1.5 1.5 0 0 0 0 9.5v2A1.5 1.5 0 0 0 1.5 13H2a.5.5 0 0 0 .5.5h2A.5.5 0 0 0 5 13h6a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5h.5a1.5 1.5 0 0 0 1.5-1.5v-2A1.5 1.5 0 0 0 14.5 8h-2.306l1.78-5.342a.5.5 0 1 0-.948-.316L11.14 8H4.86zM2.5 11a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m4.5-.5a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0m2.5.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m1.5-.5a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0m2 0a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0"/>
+ <path d="M8.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/router.svg b/vendor/twbs/bootstrap-icons/icons/router.svg
new file mode 100644
index 000000000..62fac7804
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/router.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-router" viewBox="0 0 16 16">
+ <path d="M5.525 3.025a3.5 3.5 0 0 1 4.95 0 .5.5 0 1 0 .707-.707 4.5 4.5 0 0 0-6.364 0 .5.5 0 0 0 .707.707"/>
+ <path d="M6.94 4.44a1.5 1.5 0 0 1 2.12 0 .5.5 0 0 0 .708-.708 2.5 2.5 0 0 0-3.536 0 .5.5 0 0 0 .707.707ZM2.5 11a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m4.5-.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m2.5.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m1.5-.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0m2 0a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0"/>
+ <path d="M2.974 2.342a.5.5 0 1 0-.948.316L3.806 8H1.5A1.5 1.5 0 0 0 0 9.5v2A1.5 1.5 0 0 0 1.5 13H2a.5.5 0 0 0 .5.5h2A.5.5 0 0 0 5 13h6a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5h.5a1.5 1.5 0 0 0 1.5-1.5v-2A1.5 1.5 0 0 0 14.5 8h-2.306l1.78-5.342a.5.5 0 1 0-.948-.316L11.14 8H4.86zM14.5 9a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5z"/>
+ <path d="M8.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rss-fill.svg b/vendor/twbs/bootstrap-icons/icons/rss-fill.svg
new file mode 100644
index 000000000..50d7cfdae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rss-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rss-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm1.5 2.5c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1 0-2m0 4a6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1 0-2m.5 7a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rss.svg b/vendor/twbs/bootstrap-icons/icons/rss.svg
new file mode 100644
index 000000000..18dc9f1be
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rss.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rss" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1m0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/rulers.svg b/vendor/twbs/bootstrap-icons/icons/rulers.svg
new file mode 100644
index 000000000..90fb01c7e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/rulers.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-rulers" viewBox="0 0 16 16">
+ <path d="M1 0a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5v-1H2v-1h4v-1H4v-1h2v-1H2v-1h4V9H4V8h2V7H2V6h4V2h1v4h1V4h1v2h1V2h1v4h1V4h1v2h1V2h1v4h1V1a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/safe-fill.svg b/vendor/twbs/bootstrap-icons/icons/safe-fill.svg
new file mode 100644
index 000000000..6da7a7dd8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/safe-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-safe-fill" viewBox="0 0 16 16">
+ <path d="M9.778 9.414A2 2 0 1 1 6.95 6.586a2 2 0 0 1 2.828 2.828"/>
+ <path d="M2.5 0A1.5 1.5 0 0 0 1 1.5V3H.5a.5.5 0 0 0 0 1H1v3.5H.5a.5.5 0 0 0 0 1H1V12H.5a.5.5 0 0 0 0 1H1v1.5A1.5 1.5 0 0 0 2.5 16h12a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 14.5 0zm3.036 4.464 1.09 1.09a3 3 0 0 1 3.476 0l1.09-1.09a.5.5 0 1 1 .707.708l-1.09 1.09c.74 1.037.74 2.44 0 3.476l1.09 1.09a.5.5 0 1 1-.707.708l-1.09-1.09a3 3 0 0 1-3.476 0l-1.09 1.09a.5.5 0 1 1-.708-.708l1.09-1.09a3 3 0 0 1 0-3.476l-1.09-1.09a.5.5 0 1 1 .708-.708M14 6.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/safe.svg b/vendor/twbs/bootstrap-icons/icons/safe.svg
new file mode 100644
index 000000000..d6d24c204
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/safe.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-safe" viewBox="0 0 16 16">
+ <path d="M1 1.5A1.5 1.5 0 0 1 2.5 0h12A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-12A1.5 1.5 0 0 1 1 14.5V13H.5a.5.5 0 0 1 0-1H1V8.5H.5a.5.5 0 0 1 0-1H1V4H.5a.5.5 0 0 1 0-1H1zM2.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h12a.5.5 0 0 0 .5-.5v-13a.5.5 0 0 0-.5-.5z"/>
+ <path d="M13.5 6a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 1 .5-.5M4.828 4.464a.5.5 0 0 1 .708 0l1.09 1.09a3 3 0 0 1 3.476 0l1.09-1.09a.5.5 0 1 1 .707.708l-1.09 1.09c.74 1.037.74 2.44 0 3.476l1.09 1.09a.5.5 0 1 1-.707.708l-1.09-1.09a3 3 0 0 1-3.476 0l-1.09 1.09a.5.5 0 1 1-.708-.708l1.09-1.09a3 3 0 0 1 0-3.476l-1.09-1.09a.5.5 0 0 1 0-.708M6.95 6.586a2 2 0 1 0 2.828 2.828A2 2 0 0 0 6.95 6.586"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/safe2-fill.svg b/vendor/twbs/bootstrap-icons/icons/safe2-fill.svg
new file mode 100644
index 000000000..064e0736c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/safe2-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-safe2-fill" viewBox="0 0 16 16">
+ <path d="M6.563 8H5.035a3.5 3.5 0 0 1 .662-1.596l1.08 1.08q-.142.24-.214.516m.921-1.223-1.08-1.08A3.5 3.5 0 0 1 8 5.035v1.528q-.277.072-.516.214M9 6.563V5.035a3.5 3.5 0 0 1 1.596.662l-1.08 1.08A2 2 0 0 0 9 6.563m1.223.921 1.08-1.08c.343.458.577 1.003.662 1.596h-1.528a2 2 0 0 0-.214-.516M10.437 9h1.528a3.5 3.5 0 0 1-.662 1.596l-1.08-1.08q.142-.24.214-.516m-.921 1.223 1.08 1.08A3.5 3.5 0 0 1 9 11.965v-1.528q.277-.072.516-.214M8 10.437v1.528a3.5 3.5 0 0 1-1.596-.662l1.08-1.08q.24.142.516.214m-1.223-.921-1.08 1.08A3.5 3.5 0 0 1 5.035 9h1.528q.072.277.214.516M7.5 8.5a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/>
+ <path d="M2.5 1A1.5 1.5 0 0 0 1 2.5V3H.5a.5.5 0 0 0 0 1H1v4H.5a.5.5 0 0 0 0 1H1v4H.5a.5.5 0 0 0 0 1H1v.5A1.5 1.5 0 0 0 2.5 16h12a1.5 1.5 0 0 0 1.5-1.5v-12A1.5 1.5 0 0 0 14.5 1zm6 3a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/safe2.svg b/vendor/twbs/bootstrap-icons/icons/safe2.svg
new file mode 100644
index 000000000..9c80f556e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/safe2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-safe2" viewBox="0 0 16 16">
+ <path d="M1 2.5A1.5 1.5 0 0 1 2.5 1h12A1.5 1.5 0 0 1 16 2.5v12a1.5 1.5 0 0 1-1.5 1.5h-12A1.5 1.5 0 0 1 1 14.5V14H.5a.5.5 0 0 1 0-1H1V9H.5a.5.5 0 0 1 0-1H1V4H.5a.5.5 0 0 1 0-1H1zM2.5 2a.5.5 0 0 0-.5.5v12a.5.5 0 0 0 .5.5h12a.5.5 0 0 0 .5-.5v-12a.5.5 0 0 0-.5-.5z"/>
+ <path d="M5.035 8h1.528q.072-.277.214-.516l-1.08-1.08A3.5 3.5 0 0 0 5.035 8m1.369-2.303 1.08 1.08q.24-.142.516-.214V5.035a3.5 3.5 0 0 0-1.596.662M9 5.035v1.528q.277.072.516.214l1.08-1.08A3.5 3.5 0 0 0 9 5.035m2.303 1.369-1.08 1.08q.142.24.214.516h1.528a3.5 3.5 0 0 0-.662-1.596M11.965 9h-1.528q-.072.277-.214.516l1.08 1.08A3.5 3.5 0 0 0 11.965 9m-1.369 2.303-1.08-1.08q-.24.142-.516.214v1.528a3.5 3.5 0 0 0 1.596-.662M8 11.965v-1.528a2 2 0 0 1-.516-.214l-1.08 1.08A3.5 3.5 0 0 0 8 11.965m-2.303-1.369 1.08-1.08A2 2 0 0 1 6.563 9H5.035c.085.593.319 1.138.662 1.596M4 8.5a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0m4.5-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/save-fill.svg b/vendor/twbs/bootstrap-icons/icons/save-fill.svg
new file mode 100644
index 000000000..1c42812ef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/save-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-save-fill" viewBox="0 0 16 16">
+ <path d="M8.5 1.5A1.5 1.5 0 0 1 10 0h4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h6c-.314.418-.5.937-.5 1.5v7.793L4.854 6.646a.5.5 0 1 0-.708.708l3.5 3.5a.5.5 0 0 0 .708 0l3.5-3.5a.5.5 0 0 0-.708-.708L8.5 9.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/save.svg b/vendor/twbs/bootstrap-icons/icons/save.svg
new file mode 100644
index 000000000..9dd7b2fcb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/save.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-save" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H9.5a1 1 0 0 0-1 1v7.293l2.646-2.647a.5.5 0 0 1 .708.708l-3.5 3.5a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L7.5 9.293V2a2 2 0 0 1 2-2H14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h2.5a.5.5 0 0 1 0 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/save2-fill.svg b/vendor/twbs/bootstrap-icons/icons/save2-fill.svg
new file mode 100644
index 000000000..207f91b88
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/save2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-save2-fill" viewBox="0 0 16 16">
+ <path d="M8.5 1.5A1.5 1.5 0 0 1 10 0h4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h6c-.314.418-.5.937-.5 1.5v6h-2a.5.5 0 0 0-.354.854l2.5 2.5a.5.5 0 0 0 .708 0l2.5-2.5A.5.5 0 0 0 10.5 7.5h-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/save2.svg b/vendor/twbs/bootstrap-icons/icons/save2.svg
new file mode 100644
index 000000000..988c4f1e2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/save2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-save2" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H9.5a1 1 0 0 0-1 1v4.5h2a.5.5 0 0 1 .354.854l-2.5 2.5a.5.5 0 0 1-.708 0l-2.5-2.5A.5.5 0 0 1 5.5 6.5h2V2a2 2 0 0 1 2-2H14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h2.5a.5.5 0 0 1 0 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/scissors.svg b/vendor/twbs/bootstrap-icons/icons/scissors.svg
new file mode 100644
index 000000000..2f566e4c7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/scissors.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-scissors" viewBox="0 0 16 16">
+ <path d="M3.5 3.5c-.614-.884-.074-1.962.858-2.5L8 7.226 11.642 1c.932.538 1.472 1.616.858 2.5L8.81 8.61l1.556 2.661a2.5 2.5 0 1 1-.794.637L8 9.73l-1.572 2.177a2.5 2.5 0 1 1-.794-.637L7.19 8.61zm2.5 10a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0m7 0a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/scooter.svg b/vendor/twbs/bootstrap-icons/icons/scooter.svg
new file mode 100644
index 000000000..8828452ca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/scooter.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-scooter" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M9 2.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-.39l1.4 7a2.5 2.5 0 1 1-.98.195l-.189-.938-2.43 3.527A.5.5 0 0 1 9.5 13H4.95a2.5 2.5 0 1 1 0-1h4.287l2.831-4.11L11.09 3H9.5a.5.5 0 0 1-.5-.5M3.915 12a1.5 1.5 0 1 0 0 1H2.5a.5.5 0 0 1 0-1zm8.817-.789A1.499 1.499 0 0 0 13.5 14a1.5 1.5 0 0 0 .213-2.985l.277 1.387a.5.5 0 0 1-.98.196z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/screwdriver.svg b/vendor/twbs/bootstrap-icons/icons/screwdriver.svg
new file mode 100644
index 000000000..54d5a2c81
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/screwdriver.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-screwdriver" viewBox="0 0 16 16">
+ <path d="M0 .995.995 0l3.064 2.19a1 1 0 0 1 .417.809v.07c0 .264.105.517.291.704l5.677 5.676.909-.303a1 1 0 0 1 1.018.24l3.338 3.339a.995.995 0 0 1 0 1.406L14.13 15.71a.995.995 0 0 1-1.406 0l-3.337-3.34a1 1 0 0 1-.24-1.018l.302-.909-5.676-5.677a1 1 0 0 0-.704-.291H3a1 1 0 0 1-.81-.417zm11.293 9.595a.497.497 0 1 0-.703.703l2.984 2.984a.497.497 0 0 0 .703-.703z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sd-card-fill.svg b/vendor/twbs/bootstrap-icons/icons/sd-card-fill.svg
new file mode 100644
index 000000000..655a96df3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sd-card-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sd-card-fill" viewBox="0 0 16 16">
+ <path d="M12.5 0H5.914a1.5 1.5 0 0 0-1.06.44L2.439 2.853A1.5 1.5 0 0 0 2 3.914V14.5A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 12.5 0m-7 2.75a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m2 0a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m2.75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 1.5 0m1.25-.75a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sd-card.svg b/vendor/twbs/bootstrap-icons/icons/sd-card.svg
new file mode 100644
index 000000000..564661aed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sd-card.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sd-card" viewBox="0 0 16 16">
+ <path d="M6.25 3.5a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0z"/>
+ <path fill-rule="evenodd" d="M5.914 0H12.5A1.5 1.5 0 0 1 14 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5V3.914c0-.398.158-.78.44-1.06L4.853.439A1.5 1.5 0 0 1 5.914 0M13 1.5a.5.5 0 0 0-.5-.5H5.914a.5.5 0 0 0-.353.146L3.146 3.561A.5.5 0 0 0 3 3.914V14.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/search-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/search-heart-fill.svg
new file mode 100644
index 000000000..c57bb4874
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/search-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-search-heart-fill" viewBox="0 0 16 16">
+ <path d="M6.5 13a6.47 6.47 0 0 0 3.845-1.258h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1A6.47 6.47 0 0 0 13 6.5 6.5 6.5 0 0 0 6.5 0a6.5 6.5 0 1 0 0 13m0-8.518c1.664-1.673 5.825 1.254 0 5.018-5.825-3.764-1.664-6.69 0-5.018"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/search-heart.svg b/vendor/twbs/bootstrap-icons/icons/search-heart.svg
new file mode 100644
index 000000000..d76bfe52a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/search-heart.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-search-heart" viewBox="0 0 16 16">
+ <path d="M6.5 4.482c1.664-1.673 5.825 1.254 0 5.018-5.825-3.764-1.664-6.69 0-5.018"/>
+ <path d="M13 6.5a6.47 6.47 0 0 1-1.258 3.844q.06.044.115.098l3.85 3.85a1 1 0 0 1-1.414 1.415l-3.85-3.85a1 1 0 0 1-.1-.115h.002A6.5 6.5 0 1 1 13 6.5M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/search.svg b/vendor/twbs/bootstrap-icons/icons/search.svg
new file mode 100644
index 000000000..331805416
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/search.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-search" viewBox="0 0 16 16">
+ <path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/segmented-nav.svg b/vendor/twbs/bootstrap-icons/icons/segmented-nav.svg
new file mode 100644
index 000000000..b274b68a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/segmented-nav.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-segmented-nav" viewBox="0 0 16 16">
+ <path d="M0 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm6 3h4V5H6zm9-1V6a1 1 0 0 0-1-1h-3v4h3a1 1 0 0 0 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-arrow-down-fill.svg b/vendor/twbs/bootstrap-icons/icons/send-arrow-down-fill.svg
new file mode 100644
index 000000000..6d43965ea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-arrow-down-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-arrow-down-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15.854.146a.5.5 0 0 1 .11.54L13.026 8.03A4.5 4.5 0 0 0 8 12.5c0 .5 0 1.5-.773.36l-1.59-2.498L.644 7.184l-.002-.001-.41-.261a.5.5 0 0 1 .083-.886l.452-.18.001-.001L15.314.035a.5.5 0 0 1 .54.111M6.637 10.07l7.494-7.494.471-1.178-1.178.471L5.93 9.363l.338.215a.5.5 0 0 1 .154.154z"/>
+ <path fill-rule="evenodd" d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-1.646a.5.5 0 0 1-.722-.016l-1.149-1.25a.5.5 0 1 1 .737-.676l.28.305V11a.5.5 0 0 1 1 0v1.793l.396-.397a.5.5 0 0 1 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-arrow-down.svg b/vendor/twbs/bootstrap-icons/icons/send-arrow-down.svg
new file mode 100644
index 000000000..dcbae5658
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-arrow-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-arrow-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15.854.146a.5.5 0 0 1 .11.54l-2.8 7a.5.5 0 1 1-.928-.372l1.895-4.738-7.494 7.494 1.376 2.162a.5.5 0 1 1-.844.537l-1.531-2.407L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM5.93 9.363l7.494-7.494L1.591 6.602z"/>
+ <path fill-rule="evenodd" d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-1.646a.5.5 0 0 1-.722-.016l-1.149-1.25a.5.5 0 1 1 .737-.676l.28.305V11a.5.5 0 0 1 1 0v1.793l.396-.397a.5.5 0 0 1 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-arrow-up-fill.svg b/vendor/twbs/bootstrap-icons/icons/send-arrow-up-fill.svg
new file mode 100644
index 000000000..19abab722
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-arrow-up-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-arrow-up-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15.854.146a.5.5 0 0 1 .11.54L13.026 8.03A4.5 4.5 0 0 0 8 12.5c0 .5 0 1.5-.773.36l-1.59-2.498L.644 7.184l-.002-.001-.41-.261a.5.5 0 0 1 .083-.886l.452-.18.001-.001L15.314.035a.5.5 0 0 1 .54.111M6.637 10.07l7.494-7.494.471-1.178-1.178.471L5.93 9.363l.338.215a.5.5 0 0 1 .154.154z"/>
+ <path fill-rule="evenodd" d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.354a.5.5 0 0 0-.722.016l-1.149 1.25a.5.5 0 1 0 .737.676l.28-.305V14a.5.5 0 0 0 1 0v-1.793l.396.397a.5.5 0 0 0 .708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-arrow-up.svg b/vendor/twbs/bootstrap-icons/icons/send-arrow-up.svg
new file mode 100644
index 000000000..a642dac46
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-arrow-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-arrow-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15.854.146a.5.5 0 0 1 .11.54l-2.8 7a.5.5 0 1 1-.928-.372l1.895-4.738-7.494 7.494 1.376 2.162a.5.5 0 1 1-.844.537l-1.531-2.407L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM5.93 9.363l7.494-7.494L1.591 6.602z"/>
+ <path fill-rule="evenodd" d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.354-5.354a.5.5 0 0 0-.722.016l-1.149 1.25a.5.5 0 1 0 .737.676l.28-.305V14a.5.5 0 0 0 1 0v-1.793l.396.397a.5.5 0 0 0 .708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-check-fill.svg b/vendor/twbs/bootstrap-icons/icons/send-check-fill.svg
new file mode 100644
index 000000000..c4259c8b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-check-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-check-fill" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-1.993-1.679a.5.5 0 0 0-.686.172l-1.17 1.95-.547-.547a.5.5 0 0 0-.708.708l.774.773a.75.75 0 0 0 1.174-.144l1.335-2.226a.5.5 0 0 0-.172-.686"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-check.svg b/vendor/twbs/bootstrap-icons/icons/send-check.svg
new file mode 100644
index 000000000..522186874
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-check" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-1.993-1.679a.5.5 0 0 0-.686.172l-1.17 1.95-.547-.547a.5.5 0 0 0-.708.708l.774.773a.75.75 0 0 0 1.174-.144l1.335-2.226a.5.5 0 0 0-.172-.686"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-dash-fill.svg b/vendor/twbs/bootstrap-icons/icons/send-dash-fill.svg
new file mode 100644
index 000000000..12a82df0d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-dash-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-dash-fill" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-dash.svg b/vendor/twbs/bootstrap-icons/icons/send-dash.svg
new file mode 100644
index 000000000..63fc38c7e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-dash" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-exclamation-fill.svg b/vendor/twbs/bootstrap-icons/icons/send-exclamation-fill.svg
new file mode 100644
index 000000000..fce810f55
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-exclamation-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-exclamation-fill" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1.5a.5.5 0 0 1-1 0V11a.5.5 0 0 1 1 0m0 3a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/send-exclamation.svg
new file mode 100644
index 000000000..8a72f31de
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-exclamation.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-exclamation" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/>
+ <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m.5-5v1.5a.5.5 0 0 1-1 0V11a.5.5 0 0 1 1 0m0 3a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-fill.svg b/vendor/twbs/bootstrap-icons/icons/send-fill.svg
new file mode 100644
index 000000000..6e95d2753
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-fill" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 3.178 4.995.002.002.26.41a.5.5 0 0 0 .886-.083zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/send-plus-fill.svg
new file mode 100644
index 000000000..63b04824d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-plus-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-plus-fill" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-plus.svg b/vendor/twbs/bootstrap-icons/icons/send-plus.svg
new file mode 100644
index 000000000..350b388dd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-plus" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-slash-fill.svg b/vendor/twbs/bootstrap-icons/icons/send-slash-fill.svg
new file mode 100644
index 000000000..e98aa9297
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-slash-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-slash-fill" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/>
+ <path d="M14.975 10.025a3.5 3.5 0 1 0-4.95 4.95 3.5 3.5 0 0 0 4.95-4.95m-4.243.707a2.5 2.5 0 0 1 3.147-.318l-3.465 3.465a2.5 2.5 0 0 1 .318-3.147m.39 3.854 3.464-3.465a2.501 2.501 0 0 1-3.465 3.465Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-slash.svg b/vendor/twbs/bootstrap-icons/icons/send-slash.svg
new file mode 100644
index 000000000..e434afec5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-slash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-slash" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/>
+ <path d="M14.975 10.025a3.5 3.5 0 1 0-4.95 4.95 3.5 3.5 0 0 0 4.95-4.95m-4.243.707a2.5 2.5 0 0 1 3.147-.318l-3.465 3.465a2.5 2.5 0 0 1 .318-3.147m.39 3.854 3.464-3.465a2.501 2.501 0 0 1-3.465 3.465Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/send-x-fill.svg
new file mode 100644
index 000000000..45a98a4d7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-x-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-x-fill" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.494-7.494 1.178-.471z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send-x.svg b/vendor/twbs/bootstrap-icons/icons/send-x.svg
new file mode 100644
index 000000000..5b854c2eb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send-x" viewBox="0 0 16 16">
+ <path d="M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855a.75.75 0 0 0-.124 1.329l4.995 3.178 1.531 2.406a.5.5 0 0 0 .844-.536L6.637 10.07l7.494-7.494-1.895 4.738a.5.5 0 1 0 .928.372zm-2.54 1.183L5.93 9.363 1.591 6.602z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/send.svg b/vendor/twbs/bootstrap-icons/icons/send.svg
new file mode 100644
index 000000000..8db355ea0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/send.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send" viewBox="0 0 16 16">
+ <path d="M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576zm6.787-8.201L1.591 6.602l4.339 2.76z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/server.svg b/vendor/twbs/bootstrap-icons/icons/server.svg
new file mode 100644
index 000000000..bb8ca8f3b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/server.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-server" viewBox="0 0 16 16">
+ <path d="M1.333 2.667C1.333 1.194 4.318 0 8 0s6.667 1.194 6.667 2.667V4c0 1.473-2.985 2.667-6.667 2.667S1.333 5.473 1.333 4z"/>
+ <path d="M1.333 6.334v3C1.333 10.805 4.318 12 8 12s6.667-1.194 6.667-2.667V6.334a6.5 6.5 0 0 1-1.458.79C11.81 7.684 9.967 8 8 8s-3.809-.317-5.208-.876a6.5 6.5 0 0 1-1.458-.79z"/>
+ <path d="M14.667 11.668a6.5 6.5 0 0 1-1.458.789c-1.4.56-3.242.876-5.21.876-1.966 0-3.809-.316-5.208-.876a6.5 6.5 0 0 1-1.458-.79v1.666C1.333 14.806 4.318 16 8 16s6.667-1.194 6.667-2.667z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shadows.svg b/vendor/twbs/bootstrap-icons/icons/shadows.svg
new file mode 100644
index 000000000..6b09f0f24
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shadows.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shadows" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8 7a.5.5 0 0 1 0-1h3.5q.048 0 .093.009A7 7 0 0 0 12.9 13H8a.5.5 0 0 1 0-1h5.745q.331-.474.581-1H8a.5.5 0 0 1 0-1h6.71a7 7 0 0 0 .22-1H8a.5.5 0 0 1 0-1h7q0-.51-.07-1H8a.5.5 0 0 1 0-1h6.71a7 7 0 0 0-.384-1H8a.5.5 0 0 1 0-1h5.745a7 7 0 0 0-.846-1H8a.5.5 0 0 1 0-1h3.608A7 7 0 1 0 8 15"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/share-fill.svg b/vendor/twbs/bootstrap-icons/icons/share-fill.svg
new file mode 100644
index 000000000..bdc07ca0b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/share-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-share-fill" viewBox="0 0 16 16">
+ <path d="M11 2.5a2.5 2.5 0 1 1 .603 1.628l-6.718 3.12a2.5 2.5 0 0 1 0 1.504l6.718 3.12a2.5 2.5 0 1 1-.488.876l-6.718-3.12a2.5 2.5 0 1 1 0-3.256l6.718-3.12A2.5 2.5 0 0 1 11 2.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/share.svg b/vendor/twbs/bootstrap-icons/icons/share.svg
new file mode 100644
index 000000000..bc62b9362
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/share.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-share" viewBox="0 0 16 16">
+ <path d="M13.5 1a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3M11 2.5a2.5 2.5 0 1 1 .603 1.628l-6.718 3.12a2.5 2.5 0 0 1 0 1.504l6.718 3.12a2.5 2.5 0 1 1-.488.876l-6.718-3.12a2.5 2.5 0 1 1 0-3.256l6.718-3.12A2.5 2.5 0 0 1 11 2.5m-8.5 4a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3m11 5.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-check.svg b/vendor/twbs/bootstrap-icons/icons/shield-check.svg
new file mode 100644
index 000000000..3908fca3d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-check.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-check" viewBox="0 0 16 16">
+ <path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/>
+ <path d="M10.854 5.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 7.793l2.646-2.647a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/shield-exclamation.svg
new file mode 100644
index 000000000..9826504aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-exclamation.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-exclamation" viewBox="0 0 16 16">
+ <path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/>
+ <path d="M7.001 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.553.553 0 0 1-1.1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-fill-check.svg b/vendor/twbs/bootstrap-icons/icons/shield-fill-check.svg
new file mode 100644
index 000000000..f914f1f48
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-fill-check.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-fill-check" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0m2.146 5.146a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 7.793z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-fill-exclamation.svg b/vendor/twbs/bootstrap-icons/icons/shield-fill-exclamation.svg
new file mode 100644
index 000000000..99a6bf916
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-fill-exclamation.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-fill-exclamation" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0m-.55 8.502L7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0M8.002 12a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-fill-minus.svg b/vendor/twbs/bootstrap-icons/icons/shield-fill-minus.svg
new file mode 100644
index 000000000..584f5ae15
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-fill-minus.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-fill-minus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0M6 7.5a.5.5 0 0 1 0-1h4a.5.5 0 0 1 0 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-fill-plus.svg b/vendor/twbs/bootstrap-icons/icons/shield-fill-plus.svg
new file mode 100644
index 000000000..43a31696b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-fill-plus.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-fill-plus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0m-.5 5a.5.5 0 0 1 1 0v1.5H10a.5.5 0 0 1 0 1H8.5V9a.5.5 0 0 1-1 0V7.5H6a.5.5 0 0 1 0-1h1.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-fill-x.svg b/vendor/twbs/bootstrap-icons/icons/shield-fill-x.svg
new file mode 100644
index 000000000..42267cff7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-fill-x.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-fill-x" viewBox="0 0 16 16">
+ <path d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0M6.854 5.146 8 6.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 7l1.147 1.146a.5.5 0 0 1-.708.708L8 7.707 6.854 8.854a.5.5 0 1 1-.708-.708L7.293 7 6.146 5.854a.5.5 0 1 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-fill.svg b/vendor/twbs/bootstrap-icons/icons/shield-fill.svg
new file mode 100644
index 000000000..12a61bc1c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-fill" viewBox="0 0 16 16">
+ <path d="M5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-lock-fill.svg b/vendor/twbs/bootstrap-icons/icons/shield-lock-fill.svg
new file mode 100644
index 000000000..0fccf6f28
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-lock-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-lock-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 0c-.69 0-1.843.265-2.928.56-1.11.3-2.229.655-2.887.87a1.54 1.54 0 0 0-1.044 1.262c-.596 4.477.787 7.795 2.465 9.99a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.8 11.8 0 0 0 2.517-2.453c1.678-2.195 3.061-5.513 2.465-9.99a1.54 1.54 0 0 0-1.044-1.263 63 63 0 0 0-2.887-.87C9.843.266 8.69 0 8 0m0 5a1.5 1.5 0 0 1 .5 2.915l.385 1.99a.5.5 0 0 1-.491.595h-.788a.5.5 0 0 1-.49-.595l.384-1.99A1.5 1.5 0 0 1 8 5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-lock.svg b/vendor/twbs/bootstrap-icons/icons/shield-lock.svg
new file mode 100644
index 000000000..316fb3c03
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-lock.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-lock" viewBox="0 0 16 16">
+ <path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/>
+ <path d="M9.5 6.5a1.5 1.5 0 0 1-1 1.415l.385 1.99a.5.5 0 0 1-.491.595h-.788a.5.5 0 0 1-.49-.595l.384-1.99a1.5 1.5 0 1 1 2-1.415"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-minus.svg b/vendor/twbs/bootstrap-icons/icons/shield-minus.svg
new file mode 100644
index 000000000..9fb8712c8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-minus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-minus" viewBox="0 0 16 16">
+ <path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/>
+ <path d="M5.5 7a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-plus.svg b/vendor/twbs/bootstrap-icons/icons/shield-plus.svg
new file mode 100644
index 000000000..3b19b28e9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-plus" viewBox="0 0 16 16">
+ <path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/>
+ <path d="M8 4.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V9a.5.5 0 0 1-1 0V7.5H6a.5.5 0 0 1 0-1h1.5V5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-shaded.svg b/vendor/twbs/bootstrap-icons/icons/shield-shaded.svg
new file mode 100644
index 000000000..4908f5d82
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-shaded.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-shaded" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 14.933a1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-slash-fill.svg b/vendor/twbs/bootstrap-icons/icons/shield-slash-fill.svg
new file mode 100644
index 000000000..d270d6d79
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-slash-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-slash-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.093 3.093c-.465 4.275.885 7.46 2.513 9.589a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.3 11.3 0 0 0 1.733-1.525zm12.215 8.215L3.128 1.128A61 61 0 0 1 5.073.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.483 3.626-.332 6.491-1.551 8.616m.338 3.046-13-13 .708-.708 13 13z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-slash.svg b/vendor/twbs/bootstrap-icons/icons/shield-slash.svg
new file mode 100644
index 000000000..abc01b189
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-slash.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-slash" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.093 3.093c-.465 4.275.885 7.46 2.513 9.589a11.8 11.8 0 0 0 2.517 2.453c.386.273.744.482 1.048.625.28.132.581.24.829.24s.548-.108.829-.24a7 7 0 0 0 1.048-.625 11.3 11.3 0 0 0 1.733-1.525l-.745-.745a10.3 10.3 0 0 1-1.578 1.392c-.346.244-.652.42-.893.533q-.18.085-.293.118a1 1 0 0 1-.101.025 1 1 0 0 1-.1-.025 2 2 0 0 1-.294-.118 6 6 0 0 1-.893-.533 10.7 10.7 0 0 1-2.287-2.233C3.053 10.228 1.879 7.594 2.06 4.06zM3.98 1.98l-.852-.852A59 59 0 0 1 5.072.559C6.157.266 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.483 3.626-.332 6.491-1.551 8.616l-.77-.77c1.042-1.915 1.72-4.469 1.29-7.702a.48.48 0 0 0-.33-.39c-.65-.213-1.75-.56-2.836-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524a50 50 0 0 0-1.357.39zm9.666 12.374-13-13 .708-.708 13 13z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield-x.svg b/vendor/twbs/bootstrap-icons/icons/shield-x.svg
new file mode 100644
index 000000000..cc9c59d05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield-x" viewBox="0 0 16 16">
+ <path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/>
+ <path d="M6.146 5.146a.5.5 0 0 1 .708 0L8 6.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 7l1.147 1.146a.5.5 0 0 1-.708.708L8 7.707 6.854 8.854a.5.5 0 1 1-.708-.708L7.293 7 6.146 5.854a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shield.svg b/vendor/twbs/bootstrap-icons/icons/shield.svg
new file mode 100644
index 000000000..7e18d1b1c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shield.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shield" viewBox="0 0 16 16">
+ <path d="M5.338 1.59a61 61 0 0 0-2.837.856.48.48 0 0 0-.328.39c-.554 4.157.726 7.19 2.253 9.188a10.7 10.7 0 0 0 2.287 2.233c.346.244.652.42.893.533q.18.085.293.118a1 1 0 0 0 .101.025 1 1 0 0 0 .1-.025q.114-.034.294-.118c.24-.113.547-.29.893-.533a10.7 10.7 0 0 0 2.287-2.233c1.527-1.997 2.807-5.031 2.253-9.188a.48.48 0 0 0-.328-.39c-.651-.213-1.75-.56-2.837-.855C9.552 1.29 8.531 1.067 8 1.067c-.53 0-1.552.223-2.662.524zM5.072.56C6.157.265 7.31 0 8 0s1.843.265 2.928.56c1.11.3 2.229.655 2.887.87a1.54 1.54 0 0 1 1.044 1.262c.596 4.477-.787 7.795-2.465 9.99a11.8 11.8 0 0 1-2.517 2.453 7 7 0 0 1-1.048.625c-.28.132-.581.24-.829.24s-.548-.108-.829-.24a7 7 0 0 1-1.048-.625 11.8 11.8 0 0 1-2.517-2.453C1.928 10.487.545 7.169 1.141 2.692A1.54 1.54 0 0 1 2.185 1.43 63 63 0 0 1 5.072.56"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shift-fill.svg b/vendor/twbs/bootstrap-icons/icons/shift-fill.svg
new file mode 100644
index 000000000..37583e1f9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shift-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shift-fill" viewBox="0 0 16 16">
+ <path d="M7.27 2.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v3a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-3H1.654C.78 10.5.326 9.455.924 8.816z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shift.svg b/vendor/twbs/bootstrap-icons/icons/shift.svg
new file mode 100644
index 000000000..5d8a6e320
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shift.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shift" viewBox="0 0 16 16">
+ <path d="M7.27 2.047a1 1 0 0 1 1.46 0l6.345 6.77c.6.638.146 1.683-.73 1.683H11.5v3a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-3H1.654C.78 10.5.326 9.455.924 8.816zM14.346 9.5 8 2.731 1.654 9.5H4.5a1 1 0 0 1 1 1v3h5v-3a1 1 0 0 1 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shop-window.svg b/vendor/twbs/bootstrap-icons/icons/shop-window.svg
new file mode 100644
index 000000000..14e0d422d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shop-window.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shop-window" viewBox="0 0 16 16">
+ <path d="M2.97 1.35A1 1 0 0 1 3.73 1h8.54a1 1 0 0 1 .76.35l2.609 3.044A1.5 1.5 0 0 1 16 5.37v.255a2.375 2.375 0 0 1-4.25 1.458A2.37 2.37 0 0 1 9.875 8 2.37 2.37 0 0 1 8 7.083 2.37 2.37 0 0 1 6.125 8a2.37 2.37 0 0 1-1.875-.917A2.375 2.375 0 0 1 0 5.625V5.37a1.5 1.5 0 0 1 .361-.976zm1.78 4.275a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 1 0 2.75 0V5.37a.5.5 0 0 0-.12-.325L12.27 2H3.73L1.12 5.045A.5.5 0 0 0 1 5.37v.255a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0M1.5 8.5A.5.5 0 0 1 2 9v6h12V9a.5.5 0 0 1 1 0v6h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1V9a.5.5 0 0 1 .5-.5m2 .5a.5.5 0 0 1 .5.5V13h8V9.5a.5.5 0 0 1 1 0V13a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shop.svg b/vendor/twbs/bootstrap-icons/icons/shop.svg
new file mode 100644
index 000000000..e6bb8c054
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shop.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shop" viewBox="0 0 16 16">
+ <path d="M2.97 1.35A1 1 0 0 1 3.73 1h8.54a1 1 0 0 1 .76.35l2.609 3.044A1.5 1.5 0 0 1 16 5.37v.255a2.375 2.375 0 0 1-4.25 1.458A2.37 2.37 0 0 1 9.875 8 2.37 2.37 0 0 1 8 7.083 2.37 2.37 0 0 1 6.125 8a2.37 2.37 0 0 1-1.875-.917A2.375 2.375 0 0 1 0 5.625V5.37a1.5 1.5 0 0 1 .361-.976zm1.78 4.275a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0 1.375 1.375 0 1 0 2.75 0V5.37a.5.5 0 0 0-.12-.325L12.27 2H3.73L1.12 5.045A.5.5 0 0 0 1 5.37v.255a1.375 1.375 0 0 0 2.75 0 .5.5 0 0 1 1 0M1.5 8.5A.5.5 0 0 1 2 9v6h1v-5a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v5h6V9a.5.5 0 0 1 1 0v6h.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1 0-1H1V9a.5.5 0 0 1 .5-.5M4 15h3v-5H4zm5-5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zm3 0h-2v3h2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/shuffle.svg b/vendor/twbs/bootstrap-icons/icons/shuffle.svg
new file mode 100644
index 000000000..2787bf273
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/shuffle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-shuffle" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 3.5A.5.5 0 0 1 .5 3H1c2.202 0 3.827 1.24 4.874 2.418.49.552.865 1.102 1.126 1.532.26-.43.636-.98 1.126-1.532C9.173 4.24 10.798 3 13 3v1c-1.798 0-3.173 1.01-4.126 2.082A9.6 9.6 0 0 0 7.556 8a9.6 9.6 0 0 0 1.317 1.918C9.828 10.99 11.204 12 13 12v1c-2.202 0-3.827-1.24-4.874-2.418A10.6 10.6 0 0 1 7 9.05c-.26.43-.636.98-1.126 1.532C4.827 11.76 3.202 13 1 13H.5a.5.5 0 0 1 0-1H1c1.798 0 3.173-1.01 4.126-2.082A9.6 9.6 0 0 0 6.444 8a9.6 9.6 0 0 0-1.317-1.918C4.172 5.01 2.796 4 1 4H.5a.5.5 0 0 1-.5-.5"/>
+ <path d="M13 5.466V1.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384l-2.36 1.966a.25.25 0 0 1-.41-.192m0 9v-3.932a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384l-2.36 1.966a.25.25 0 0 1-.41-.192"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-dead-end-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-dead-end-fill.svg
new file mode 100644
index 000000000..b362833f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-dead-end-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-dead-end-fill" viewBox="0 0 16 16">
+ <path d="M5.116 6.28h.32c.395 0 .582.24.582.722 0 .48-.186.718-.581.718h-.321zm3.636.066.268.845h-.552l.27-.845zm1.327-.066h.32c.394 0 .582.24.582.722 0 .48-.186.718-.582.718h-.32zm-.792 3h.32c.395 0 .582.24.582.722 0 .48-.186.718-.581.718h-.32z"/>
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM4.782 6h.69c.596 0 .886.355.886.998S6.066 8 5.473 8h-.69zM7.82 7.72V8H6.571V6H7.82v.28h-.917v.57h.863v.268h-.863v.602zm.397.28h-.34l.688-2h.371l.689 2h-.352l-.177-.554h-.702L8.216 8Zm1.53-2h.69c.596 0 .886.355.886.998S11.03 8 10.436 8h-.69zm-2.923 4.72V11H5.575V9h1.248v.28h-.917v.57h.863v.268h-.863v.602zm.572.28h-.32V9h.294l.933 1.436h.014V9h.32v2h-.292l-.936-1.44h-.013zm1.56-2h.69c.596 0 .886.355.886.998S10.238 11 9.645 11h-.69z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-dead-end.svg b/vendor/twbs/bootstrap-icons/icons/sign-dead-end.svg
new file mode 100644
index 000000000..b87d368e6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-dead-end.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-dead-end" viewBox="0 0 16 16">
+ <path d="M4.783 6v2h.69c.593 0 .886-.359.886-1.002S6.07 6 5.473 6zm.333.28h.32c.395 0 .582.24.582.722 0 .48-.186.718-.581.718h-.321zM7.82 7.72h-.918v-.602h.863V6.85h-.863v-.57h.917V6H6.571v2H7.82zm.573-.274L8.216 8h-.34l.688-2h.371l.689 2h-.352l-.177-.554zm.627-.255-.268-.845h-.015l-.27.845zM9.746 6v2h.69c.593 0 .886-.359.886-1.002S11.032 6 10.436 6zm.333.28h.32c.394 0 .582.24.582.722 0 .48-.186.718-.582.718h-.32zm-4.173 4.44h.917V11H5.575V9h1.248v.28h-.917v.57h.863v.268h-.863zm1.489.28V9.56h.013L8.344 11h.292V9h-.32v1.436h-.014L7.369 9h-.293v2zm1.56 0V9h.69c.596 0 .886.355.886.998S10.238 11 9.645 11zm.653-1.72h-.32v1.44h.32c.395 0 .581-.239.581-.718 0-.481-.187-.722-.581-.722"/>
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-do-not-enter-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-do-not-enter-fill.svg
new file mode 100644
index 000000000..f86ebfab1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-do-not-enter-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-do-not-enter-fill" viewBox="0 0 16 16">
+ <path d="M4.237 4.28h-.32v1.44h.32c.396 0 .582-.239.582-.718 0-.481-.188-.722-.582-.722m2.392.859v-.277c0-.413-.211-.617-.494-.617-.285 0-.495.204-.495.617v.277c0 .414.21.618.495.618.283 0 .494-.204.494-.618m4.163 0v-.277c0-.413-.211-.617-.494-.617-.285 0-.495.204-.495.617v.277c0 .414.21.618.495.618.283 0 .494-.204.494-.618m.006 5.828v-.694h.39c.231 0 .378.126.378.354 0 .225-.142.34-.387.34z"/>
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16M3.584 6V4h.69c.596 0 .886.355.886.998S4.867 6 4.274 6zm3.382-1.135v.272c0 .566-.318.903-.83.903-.513 0-.833-.337-.833-.903v-.272c0-.569.32-.904.832-.904.513 0 .83.337.83.904Zm1.021-.305V6h-.319V4h.293l.933 1.436h.015V4h.319v2h-.291L8 4.56zm3.142.305v.272c0 .566-.318.903-.83.903-.513 0-.833-.337-.833-.903v-.272c0-.569.32-.904.832-.904.513 0 .83.337.83.904Zm.899-.58V6h-.333V4.285h-.584V4h1.503v.285zM5.413 11.72V12H4.165v-2h1.248v.28h-.917v.57h.862v.268h-.862v.602zm.572.28h-.32v-2h.294l.933 1.436h.014v-1.435h.32V12h-.292l-.936-1.44h-.013zm2.279 0H7.93v-1.715h-.584V10H8.85v.284h-.586zm1.953-.28V12H8.97v-2h1.248v.28H9.3v.57h.863v.268H9.3v.602zM11.235 10c.42 0 .674.244.674.616a.575.575 0 0 1-.368.56l.404.824h-.373l-.36-.769h-.414V12h-.328v-2zM3.5 7h9a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-do-not-enter.svg b/vendor/twbs/bootstrap-icons/icons/sign-do-not-enter.svg
new file mode 100644
index 000000000..2e2c877b3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-do-not-enter.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-do-not-enter" viewBox="0 0 16 16">
+ <path d="M3.584 6V4h.69c.596 0 .886.355.886.998S4.867 6 4.274 6zm.653-1.72h-.32v1.44h.32c.396 0 .582-.239.582-.718 0-.481-.188-.722-.582-.722m2.729.585v.272c0 .566-.318.903-.83.903-.513 0-.833-.337-.833-.903v-.272c0-.569.32-.904.832-.904.513 0 .83.337.83.904Zm-.337.274v-.277c0-.413-.211-.617-.494-.617-.285 0-.495.204-.495.617v.277c0 .414.21.618.495.618.283 0 .494-.204.494-.618m1.358-.579V6h-.319V4h.293l.933 1.436h.015V4h.319v2h-.291L8 4.56zm3.142.305v.272c0 .566-.318.903-.83.903-.513 0-.833-.337-.833-.903v-.272c0-.569.32-.904.832-.904.513 0 .83.337.83.904Zm-.337.274v-.277c0-.413-.211-.617-.494-.617-.285 0-.495.204-.495.617v.277c0 .414.21.618.495.618.283 0 .494-.204.494-.618m1.236-.854V6h-.333V4.285h-.584V4h1.503v.285zM4.496 11.72h.917V12H4.165v-2h1.248v.28h-.917v.57h.862v.268h-.862zm1.489-1.16V12h-.32v-2h.294l.933 1.436h.014v-1.435h.32V12h-.292l-.936-1.44zm2.279-.275V12H7.93v-1.715h-.584V10H8.85v.284zM9.3 11.72h.917V12H8.97v-2h1.248v.28H9.3v.57h.863v.268H9.3zM10.47 10h.765c.42 0 .674.244.674.616a.575.575 0 0 1-.368.56l.404.824h-.373l-.36-.769h-.414V12h-.328zm.328.273v.694h.381c.245 0 .387-.115.387-.34 0-.228-.147-.354-.378-.354zM3.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m0-1A7 7 0 1 1 8 1a7 7 0 0 1 0 14"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-intersection-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-intersection-fill.svg
new file mode 100644
index 000000000..7fd8f3f3b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-intersection-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-intersection-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM7.25 4h1.5v3.25H12v1.5H8.75V12h-1.5V8.75H4v-1.5h3.25z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-intersection-side-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-intersection-side-fill.svg
new file mode 100644
index 000000000..38870b56a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-intersection-side-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-intersection-side-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM6.25 4h1.5v3.25H11v1.5H7.75V12h-1.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-intersection-side.svg b/vendor/twbs/bootstrap-icons/icons/sign-intersection-side.svg
new file mode 100644
index 000000000..df9015a3b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-intersection-side.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-intersection-side" viewBox="0 0 16 16">
+ <path d="M6.25 4v8h1.5V8.75H11v-1.5H7.75V4z"/>
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-intersection-t-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-intersection-t-fill.svg
new file mode 100644
index 000000000..15a007e01
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-intersection-t-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-intersection-t-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM5 5h6v1.5H8.75V12h-1.5V6.5H5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-intersection-t.svg b/vendor/twbs/bootstrap-icons/icons/sign-intersection-t.svg
new file mode 100644
index 000000000..4ba9f6f73
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-intersection-t.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-intersection-t" viewBox="0 0 16 16">
+ <path d="M5 5v1.5h2.25V12h1.5V6.5H11V5z"/>
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-intersection-y-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-intersection-y-fill.svg
new file mode 100644
index 000000000..01a03d0c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-intersection-y-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-intersection-y-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm1.443 4.762 1.014 1.106L8.75 8.83V12h-1.5V8.83L4.493 6.303l1.014-1.106L8 7.483z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-intersection-y.svg b/vendor/twbs/bootstrap-icons/icons/sign-intersection-y.svg
new file mode 100644
index 000000000..e0e387f80
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-intersection-y.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-intersection-y" viewBox="0 0 16 16">
+ <path d="M10.493 5.197 8 7.483 5.507 5.197 4.493 6.303 7.25 8.83V12h1.5V8.83l2.757-2.527z"/>
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-intersection.svg b/vendor/twbs/bootstrap-icons/icons/sign-intersection.svg
new file mode 100644
index 000000000..be2ffdc58
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-intersection.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-intersection" viewBox="0 0 16 16">
+ <path d="M7.25 4v3.25H4v1.5h3.25V12h1.5V8.75H12v-1.5H8.75V4z"/>
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-merge-left-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-merge-left-fill.svg
new file mode 100644
index 000000000..1408133ec
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-merge-left-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-merge-left-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM7.25 6H6.034a.25.25 0 0 1-.192-.41l1.966-2.36a.25.25 0 0 1 .384 0l1.966 2.36a.25.25 0 0 1-.192.41H8.75v6h-1.5V8.823c-.551.686-1.229 1.363-1.88 2.015l-.016.016-.708-.708c.757-.756 1.48-1.48 2.016-2.196q.377-.499.588-.95z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-merge-left.svg b/vendor/twbs/bootstrap-icons/icons/sign-merge-left.svg
new file mode 100644
index 000000000..3447bcfab
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-merge-left.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-merge-left" viewBox="0 0 16 16">
+ <path d="M7.25 6v1q-.211.451-.588.95c-.537.716-1.259 1.44-2.016 2.196l.708.708.015-.016c.652-.652 1.33-1.33 1.881-2.015V12h1.5V6h1.216a.25.25 0 0 0 .192-.41L8.192 3.23a.25.25 0 0 0-.384 0L5.842 5.59a.25.25 0 0 0 .192.41z"/>
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-merge-right-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-merge-right-fill.svg
new file mode 100644
index 000000000..a952bb56f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-merge-right-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-merge-right-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM8.75 6v1q.211.451.588.95c.537.716 1.259 1.44 2.016 2.196l-.708.708-.015-.016c-.652-.652-1.33-1.33-1.881-2.015V12h-1.5V6H6.034a.25.25 0 0 1-.192-.41l1.966-2.36a.25.25 0 0 1 .384 0l1.966 2.36a.25.25 0 0 1-.192.41z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-merge-right.svg b/vendor/twbs/bootstrap-icons/icons/sign-merge-right.svg
new file mode 100644
index 000000000..ab3e08aee
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-merge-right.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-merge-right" viewBox="0 0 16 16">
+ <path d="M8.75 6v1q.211.451.588.95c.537.716 1.259 1.44 2.016 2.196l-.708.708-.015-.016c-.652-.652-1.33-1.33-1.881-2.015V12h-1.5V6H6.034a.25.25 0 0 1-.192-.41l1.966-2.36a.25.25 0 0 1 .384 0l1.966 2.36a.25.25 0 0 1-.192.41z"/>
+ <path fill-rule="evenodd" d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-no-left-turn-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-no-left-turn-fill.svg
new file mode 100644
index 000000000..85f421a71
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-no-left-turn-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-no-left-turn-fill" viewBox="0 0 16 16">
+ <path d="M2 13.292A8 8 0 0 1 13.293 2L9.195 6.099A2.5 2.5 0 0 0 8.5 6H7V4.534a.25.25 0 0 0-.41-.192L4.23 6.308a.25.25 0 0 0 0 .384l2.36 1.966.026.02zm.708.708A8 8 0 0 0 14 2.707l-3.885 3.884C10.656 7.05 11 7.735 11 8.5V11h-1V8.5c0-.489-.234-.923-.596-1.197l-6.696 6.696Z"/>
+ <path d="M8.293 7 7 8.293V7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-no-left-turn.svg b/vendor/twbs/bootstrap-icons/icons/sign-no-left-turn.svg
new file mode 100644
index 000000000..d45f090aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-no-left-turn.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-no-left-turn" viewBox="0 0 16 16">
+ <path d="M0 8a8 8 0 1 0 16 0A8 8 0 0 0 0 8m3.416 5.29 5.988-5.987c.362.274.596.708.596 1.197V11h1V8.5c0-.765-.344-1.45-.885-1.908l3.176-3.176a7 7 0 0 1-9.874 9.874Zm-.707-.706a7 7 0 0 1 9.874-9.874L9.196 6.097A2.5 2.5 0 0 0 8.5 6H7V4.534a.25.25 0 0 0-.41-.192L4.23 6.308a.25.25 0 0 0 0 .384l2.36 1.966.026.02zM8.293 7 7 8.293V7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-no-parking-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-no-parking-fill.svg
new file mode 100644
index 000000000..c4100d988
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-no-parking-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-no-parking-fill" viewBox="0 0 16 16">
+ <path d="M13.292 14A8 8 0 0 1 2 2.707l3.5 3.5V12h1.283V9.164h1.674zm.708-.708-4.37-4.37C10.5 8.524 11 7.662 11 6.587c0-1.482-.955-2.584-2.538-2.584H5.5v.79L2.708 2.002A8 8 0 0 1 14 13.293Z"/>
+ <path d="M6.777 7.485v.59h.59zm1.949.535L6.777 6.07v-.966H8.27c.893 0 1.419.539 1.419 1.482 0 .769-.35 1.273-.963 1.433Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-no-parking.svg b/vendor/twbs/bootstrap-icons/icons/sign-no-parking.svg
new file mode 100644
index 000000000..1679603c1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-no-parking.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-no-parking" viewBox="0 0 16 16">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m5.29-3.416L9.63 8.923C10.5 8.523 11 7.66 11 6.586c0-1.482-.955-2.584-2.538-2.584H5.5v.79L3.416 2.71a7 7 0 0 1 9.874 9.874m-.706.707A7 7 0 0 1 2.71 3.417l2.79 2.79V12h1.283V9.164h1.674zM8.726 8.019 6.777 6.07v-.966H8.27c.893 0 1.419.539 1.419 1.482 0 .769-.35 1.273-.963 1.433m-1.949-.534.59.59h-.59z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-no-right-turn-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-no-right-turn-fill.svg
new file mode 100644
index 000000000..c3883da59
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-no-right-turn-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-no-right-turn-fill" viewBox="0 0 16 16">
+ <path d="M14 13.292A8 8 0 0 0 2.707 2l4.097 4.098Q7.137 6.001 7.5 6H9V4.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L9.41 8.658l-.026.02zm-.708.708A8 8 0 0 1 2 2.707l3.885 3.884A2.5 2.5 0 0 0 5 8.5V11h1V8.5c0-.489.234-.923.596-1.197l6.696 6.696Z"/>
+ <path d="M7.707 7 9 8.293V7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-no-right-turn.svg b/vendor/twbs/bootstrap-icons/icons/sign-no-right-turn.svg
new file mode 100644
index 000000000..209b918ae
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-no-right-turn.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-no-right-turn" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.416 5.29L6.596 7.304A1.5 1.5 0 0 0 6 8.5V11H5V8.5c0-.765.344-1.45.885-1.908L2.709 3.416a7 7 0 0 0 9.874 9.874Zm.707-.706A7 7 0 0 0 3.417 2.71l3.388 3.388Q7.137 6.001 7.5 6H9V4.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L9.41 8.658l-.026.02zM7.707 7 9 8.293V7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-railroad-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-railroad-fill.svg
new file mode 100644
index 000000000..61d88a979
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-railroad-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-railroad-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L4.224 3.162 8 6.94l3.777-3.777L9.049.435Zm3.274 7.425v-.862h.467c.28 0 .467.154.467.44 0 .28-.182.421-.475.421h-.459Z"/>
+ <path d="M12.838 4.223 9.06 8l3.777 3.777 2.727-2.728c.58-.58.58-1.519 0-2.098zm.03 2.361c.591 0 .935.334.935.844a.79.79 0 0 1-.485.748l.536 1.074h-.59l-.467-.994h-.473v.994h-.521V6.584h1.064Zm-1.091 6.254L8 9.06l-3.777 3.777 2.728 2.727c.58.58 1.519.58 2.098 0zm-8.953-5.84v.861h.46c.292 0 .474-.14.474-.421 0-.286-.188-.44-.467-.44z"/>
+ <path d="M3.162 11.777 6.94 8 3.162 4.223.435 6.951c-.58.58-.58 1.519 0 2.098zm-.86-5.193h1.065c.592 0 .936.334.936.844 0 .39-.242.654-.485.748l.536 1.074h-.59l-.467-.994h-.473v.994h-.521V6.584Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-railroad.svg b/vendor/twbs/bootstrap-icons/icons/sign-railroad.svg
new file mode 100644
index 000000000..b5d7339e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-railroad.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-railroad" viewBox="0 0 16 16">
+ <path d="M11.303 6.584h1.064c.592 0 .936.334.936.844a.79.79 0 0 1-.485.748l.536 1.074h-.59l-.467-.994h-.473v.994h-.521zm.521.414v.861h.46c.292 0 .474-.14.474-.421 0-.286-.188-.44-.467-.44zm-8.771-.414h1.064c.592 0 .936.334.936.844 0 .39-.242.654-.485.748l.536 1.074h-.59l-.467-.994h-.473v.994h-.521zm.521.414v.861h.46c.292 0 .474-.14.474-.421 0-.286-.188-.44-.467-.44z"/>
+ <path d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L4.923 3.861 8 6.939l3.078-3.077L8.35 1.134Zm3.788 3.788L9.061 8l3.077 3.078 2.728-2.728a.495.495 0 0 0 0-.7zm-1.06 7.215L8 9.061l-3.077 3.077 2.727 2.728a.495.495 0 0 0 .7 0zm-7.216-1.06L6.939 8 3.862 4.923 1.134 7.65a.495.495 0 0 0 0 .7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-stop-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-stop-fill.svg
new file mode 100644
index 000000000..08efb9a51
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-stop-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-stop-fill" viewBox="0 0 16 16">
+ <path d="M10.371 8.277v-.553c0-.827-.422-1.234-.987-1.234-.572 0-.99.407-.99 1.234v.553c0 .83.418 1.237.99 1.237.565 0 .987-.408.987-1.237m2.586-.24c.463 0 .735-.272.735-.744s-.272-.741-.735-.741h-.774v1.485z"/>
+ <path d="M4.893 0a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353L11.46.146A.5.5 0 0 0 11.107 0zM3.16 10.08c-.931 0-1.447-.493-1.494-1.132h.653c.065.346.396.583.891.583.524 0 .83-.246.83-.62 0-.303-.203-.467-.637-.572l-.656-.164c-.61-.147-.978-.51-.978-1.078 0-.706.597-1.184 1.444-1.184.853 0 1.386.475 1.436 1.087h-.645c-.064-.32-.352-.542-.797-.542-.472 0-.77.246-.77.6 0 .261.196.437.553.522l.654.161c.673.164 1.06.487 1.06 1.11 0 .736-.574 1.228-1.544 1.228Zm3.427-3.51V10h-.665V6.57H4.753V6h3.006v.568H6.587Zm4.458 1.16v.544c0 1.131-.636 1.805-1.661 1.805-1.026 0-1.664-.674-1.664-1.805V7.73c0-1.136.638-1.807 1.664-1.807s1.66.674 1.66 1.807ZM11.52 6h1.535c.82 0 1.316.55 1.316 1.292 0 .747-.501 1.289-1.321 1.289h-.865V10h-.665V6.001Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-stop-lights-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-stop-lights-fill.svg
new file mode 100644
index 000000000..9be8e0c23
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-stop-lights-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-stop-lights-fill" viewBox="0 0 16 16">
+ <path d="M8 6a1 1 0 1 0 0-2 1 1 0 0 0 0 2m0 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m1 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM6 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-stop-lights.svg b/vendor/twbs/bootstrap-icons/icons/sign-stop-lights.svg
new file mode 100644
index 000000000..85918cf2c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-stop-lights.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-stop-lights" viewBox="0 0 16 16">
+ <path d="M6 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm2 2a1 1 0 1 0 0-2 1 1 0 0 0 0 2m0 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2m1 2a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/>
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zm-1.4.7a.495.495 0 0 1 .7 0l6.516 6.515a.495.495 0 0 1 0 .7L8.35 14.866a.495.495 0 0 1-.7 0L1.134 8.35a.495.495 0 0 1 0-.7L7.65 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-stop.svg b/vendor/twbs/bootstrap-icons/icons/sign-stop.svg
new file mode 100644
index 000000000..49128dccc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-stop.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-stop" viewBox="0 0 16 16">
+ <path d="M3.16 10.08c-.931 0-1.447-.493-1.494-1.132h.653c.065.346.396.583.891.583.524 0 .83-.246.83-.62 0-.303-.203-.467-.637-.572l-.656-.164c-.61-.147-.978-.51-.978-1.078 0-.706.597-1.184 1.444-1.184.853 0 1.386.475 1.436 1.087h-.645c-.064-.32-.352-.542-.797-.542-.472 0-.77.246-.77.6 0 .261.196.437.553.522l.654.161c.673.164 1.06.487 1.06 1.11 0 .736-.574 1.228-1.544 1.228Zm3.427-3.51V10h-.665V6.57H4.753V6h3.006v.568H6.587Z"/>
+ <path fill-rule="evenodd" d="M11.045 7.73v.544c0 1.131-.636 1.805-1.661 1.805-1.026 0-1.664-.674-1.664-1.805V7.73c0-1.136.638-1.807 1.664-1.807s1.66.674 1.66 1.807Zm-.674.547v-.553c0-.827-.422-1.234-.987-1.234-.572 0-.99.407-.99 1.234v.553c0 .83.418 1.237.99 1.237.565 0 .987-.408.987-1.237m1.15-2.276h1.535c.82 0 1.316.55 1.316 1.292 0 .747-.501 1.289-1.321 1.289h-.865V10h-.665zm1.436 2.036c.463 0 .735-.272.735-.744s-.272-.741-.735-.741h-.774v1.485z"/>
+ <path fill-rule="evenodd" d="M4.893 0a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353L11.46.146A.5.5 0 0 0 11.107 0zM1 5.1 5.1 1h5.8L15 5.1v5.8L10.9 15H5.1L1 10.9z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-turn-left-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-turn-left-fill.svg
new file mode 100644
index 000000000..4b8358e38
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-turn-left-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-turn-left-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM7 8.466a.25.25 0 0 1-.41.192L4.23 6.692a.25.25 0 0 1 0-.384l2.36-1.966a.25.25 0 0 1 .41.192V6h1.5A2.5 2.5 0 0 1 11 8.5V11h-1V8.5A1.5 1.5 0 0 0 8.5 7H7z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-turn-left.svg b/vendor/twbs/bootstrap-icons/icons/sign-turn-left.svg
new file mode 100644
index 000000000..c1b34eda4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-turn-left.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-turn-left" viewBox="0 0 16 16">
+ <path d="M11 8.5A2.5 2.5 0 0 0 8.5 6H7V4.534a.25.25 0 0 0-.41-.192L4.23 6.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 7 8.466V7h1.5A1.5 1.5 0 0 1 10 8.5V11h1z"/>
+ <path fill-rule="evenodd" d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-turn-right-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-turn-right-fill.svg
new file mode 100644
index 000000000..29d8d2c22
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-turn-right-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-turn-right-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM9 8.466V7H7.5A1.5 1.5 0 0 0 6 8.5V11H5V8.5A2.5 2.5 0 0 1 7.5 6H9V4.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L9.41 8.658A.25.25 0 0 1 9 8.466"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-turn-right.svg b/vendor/twbs/bootstrap-icons/icons/sign-turn-right.svg
new file mode 100644
index 000000000..956614aed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-turn-right.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-turn-right" viewBox="0 0 16 16">
+ <path d="M5 8.5A2.5 2.5 0 0 1 7.5 6H9V4.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L9.41 8.658A.25.25 0 0 1 9 8.466V7H7.5A1.5 1.5 0 0 0 6 8.5V11H5z"/>
+ <path fill-rule="evenodd" d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-left-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-left-fill.svg
new file mode 100644
index 000000000..80b2977aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-left-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-turn-slight-left-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098zM6.864 8.368a.25.25 0 0 1-.451-.039l-1.06-2.882a.25.25 0 0 1 .192-.333l3.026-.523a.25.25 0 0 1 .26.371l-.667 1.154.621.373A2.5 2.5 0 0 1 10 8.632V11H9V8.632a1.5 1.5 0 0 0-.728-1.286l-.607-.364-.8 1.386Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-left.svg b/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-left.svg
new file mode 100644
index 000000000..98f0a0ab8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-left.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-turn-slight-left" viewBox="0 0 16 16">
+ <path d="m7.665 6.982-.8 1.386a.25.25 0 0 1-.451-.039l-1.06-2.882a.25.25 0 0 1 .192-.333l3.026-.523a.25.25 0 0 1 .26.371l-.667 1.154.621.373A2.5 2.5 0 0 1 10 8.632V11H9V8.632a1.5 1.5 0 0 0-.728-1.286z"/>
+ <path fill-rule="evenodd" d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-right-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-right-fill.svg
new file mode 100644
index 000000000..273495239
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-right-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-turn-slight-right-fill" viewBox="0 0 16 16">
+ <path d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.385 6.547.8 1.386a.25.25 0 0 0 .451-.039l1.06-2.882a.25.25 0 0 0-.192-.333l-3.026-.523a.25.25 0 0 0-.26.371l.667 1.154-.621.373A2.5 2.5 0 0 0 6 8.632V11h1V8.632a1.5 1.5 0 0 1 .728-1.286z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-right.svg b/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-right.svg
new file mode 100644
index 000000000..c462f1948
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-turn-slight-right.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-turn-slight-right" viewBox="0 0 16 16">
+ <path d="m8.335 6.982.8 1.386a.25.25 0 0 0 .451-.039l1.06-2.882a.25.25 0 0 0-.192-.333l-3.026-.523a.25.25 0 0 0-.26.371l.667 1.154-.621.373A2.5 2.5 0 0 0 6 8.632V11h1V8.632a1.5 1.5 0 0 1 .728-1.286z"/>
+ <path fill-rule="evenodd" d="M6.95.435c.58-.58 1.52-.58 2.1 0l6.515 6.516c.58.58.58 1.519 0 2.098L9.05 15.565c-.58.58-1.519.58-2.098 0L.435 9.05a1.48 1.48 0 0 1 0-2.098zm1.4.7a.495.495 0 0 0-.7 0L1.134 7.65a.495.495 0 0 0 0 .7l6.516 6.516a.495.495 0 0 0 .7 0l6.516-6.516a.495.495 0 0 0 0-.7L8.35 1.134Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-yield-fill.svg b/vendor/twbs/bootstrap-icons/icons/sign-yield-fill.svg
new file mode 100644
index 000000000..79fa190e8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-yield-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-yield-fill" viewBox="0 0 16 16">
+ <path d="M10.48 5.323h-.28v1.353h.28c.372 0 .54-.222.54-.674 0-.45-.169-.68-.54-.68Z"/>
+ <path d="M7.022 14.434a1.131 1.131 0 0 0 1.96 0l6.857-11.667c.457-.778-.092-1.767-.98-1.767H1.144c-.889 0-1.437.99-.98 1.767zM5.506 6.232V7H5.11v-.76L4.44 5h.44l.424.849h.016L5.748 5h.428zM6.628 5v2h-.396V5zm.684 1.676h.895V7H6.919V5h1.288v.324h-.895v.513h.842v.303h-.842zm1.521-.013h.848V7H8.437V5h.396zm.97.337V5h.73c.608 0 .895.364.895.995 0 .636-.291 1.005-.895 1.005z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sign-yield.svg b/vendor/twbs/bootstrap-icons/icons/sign-yield.svg
new file mode 100644
index 000000000..23bd623d6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sign-yield.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sign-yield" viewBox="0 0 16 16">
+ <path d="M5.506 6.232V7H5.11v-.76L4.44 5h.44l.424.849h.016L5.748 5h.428zM6.628 5v2h-.396V5zm.684 1.676h.895V7H6.919V5h1.288v.324h-.895v.513h.842v.303h-.842zm1.521-.013h.848V7H8.437V5h.396z"/>
+ <path fill-rule="evenodd" d="M9.804 7V5h.73c.607 0 .894.364.894.995 0 .636-.291 1.005-.895 1.005zm.676-1.677h-.28v1.353h.28c.372 0 .54-.222.54-.674 0-.45-.169-.68-.54-.68Z"/>
+ <path fill-rule="evenodd" d="M7.022 14.434a1.131 1.131 0 0 0 1.96 0l6.857-11.667c.457-.778-.092-1.767-.98-1.767H1.144c-.889 0-1.437.99-.98 1.767zm.98-.434a.13.13 0 0 1-.064-.016.15.15 0 0 1-.054-.057L1.027 2.26a.18.18 0 0 1-.002-.183.2.2 0 0 1 .054-.06A.1.1 0 0 1 1.145 2h13.713a.12.12 0 0 1 .066.017q.028.015.055.06a.18.18 0 0 1-.003.183L8.12 13.927a.15.15 0 0 1-.054.057.13.13 0 0 1-.063.016Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/signal.svg b/vendor/twbs/bootstrap-icons/icons/signal.svg
new file mode 100644
index 000000000..1583f9778
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/signal.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-signal" viewBox="0 0 16 16">
+ <path d="m6.08.234.179.727a7.3 7.3 0 0 0-2.01.832l-.383-.643A7.9 7.9 0 0 1 6.079.234zm3.84 0L9.742.96a7.3 7.3 0 0 1 2.01.832l.388-.643A8 8 0 0 0 9.92.234m-8.77 3.63a8 8 0 0 0-.916 2.215l.727.18a7.3 7.3 0 0 1 .832-2.01l-.643-.386zM.75 8a7 7 0 0 1 .081-1.086L.091 6.8a8 8 0 0 0 0 2.398l.74-.112A7 7 0 0 1 .75 8m11.384 6.848-.384-.64a7.2 7.2 0 0 1-2.007.831l.18.728a8 8 0 0 0 2.211-.919M15.251 8q0 .547-.082 1.086l.74.112a8 8 0 0 0 0-2.398l-.74.114q.082.54.082 1.086m.516 1.918-.728-.18a7.3 7.3 0 0 1-.832 2.012l.643.387a8 8 0 0 0 .917-2.219m-6.68 5.25c-.72.11-1.453.11-2.173 0l-.112.742a8 8 0 0 0 2.396 0l-.112-.741zm4.75-2.868a7.2 7.2 0 0 1-1.537 1.534l.446.605a8 8 0 0 0 1.695-1.689zM12.3 2.163c.587.432 1.105.95 1.537 1.537l.604-.45a8 8 0 0 0-1.69-1.691zM2.163 3.7A7.2 7.2 0 0 1 3.7 2.163l-.45-.604a8 8 0 0 0-1.691 1.69l.604.45zm12.688.163-.644.387c.377.623.658 1.3.832 2.007l.728-.18a8 8 0 0 0-.916-2.214M6.913.831a7.3 7.3 0 0 1 2.172 0l.112-.74a8 8 0 0 0-2.396 0zM2.547 14.64 1 15l.36-1.549-.729-.17-.361 1.548a.75.75 0 0 0 .9.902l1.548-.357zM.786 12.612l.732.168.25-1.073A7.2 7.2 0 0 1 .96 9.74l-.727.18a8 8 0 0 0 .736 1.902l-.184.79zm3.5 1.623-1.073.25.17.731.79-.184c.6.327 1.239.574 1.902.737l.18-.728a7.2 7.2 0 0 1-1.962-.811zM8 1.5a6.5 6.5 0 0 0-6.498 6.502 6.5 6.5 0 0 0 .998 3.455l-.625 2.668L4.54 13.5a6.502 6.502 0 0 0 6.93-11A6.5 6.5 0 0 0 8 1.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/signpost-2-fill.svg b/vendor/twbs/bootstrap-icons/icons/signpost-2-fill.svg
new file mode 100644
index 000000000..58c05a6fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/signpost-2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-signpost-2-fill" viewBox="0 0 16 16">
+ <path d="M7.293.707A1 1 0 0 0 7 1.414V2H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h5v1H2.5a1 1 0 0 0-.8.4L.725 8.7a.5.5 0 0 0 0 .6l.975 1.3a1 1 0 0 0 .8.4H7v5h2v-5h5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H9V6h4.5a1 1 0 0 0 .8-.4l.975-1.3a.5.5 0 0 0 0-.6L14.3 2.4a1 1 0 0 0-.8-.4H9v-.586A1 1 0 0 0 7.293.707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/signpost-2.svg b/vendor/twbs/bootstrap-icons/icons/signpost-2.svg
new file mode 100644
index 000000000..e3454bdc8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/signpost-2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-signpost-2" viewBox="0 0 16 16">
+ <path d="M7 1.414V2H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h5v1H2.5a1 1 0 0 0-.8.4L.725 8.7a.5.5 0 0 0 0 .6l.975 1.3a1 1 0 0 0 .8.4H7v5h2v-5h5a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H9V6h4.5a1 1 0 0 0 .8-.4l.975-1.3a.5.5 0 0 0 0-.6L14.3 2.4a1 1 0 0 0-.8-.4H9v-.586a1 1 0 0 0-2 0M13.5 3l.75 1-.75 1H2V3zm.5 5v2H2.5l-.75-1 .75-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/signpost-fill.svg b/vendor/twbs/bootstrap-icons/icons/signpost-fill.svg
new file mode 100644
index 000000000..00989a6aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/signpost-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-signpost-fill" viewBox="0 0 16 16">
+ <path d="M7.293.707A1 1 0 0 0 7 1.414V4H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h5v6h2v-6h3.532a1 1 0 0 0 .768-.36l1.933-2.32a.5.5 0 0 0 0-.64L13.3 4.36a1 1 0 0 0-.768-.36H9V1.414A1 1 0 0 0 7.293.707"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/signpost-split-fill.svg b/vendor/twbs/bootstrap-icons/icons/signpost-split-fill.svg
new file mode 100644
index 000000000..9b720f02a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/signpost-split-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-signpost-split-fill" viewBox="0 0 16 16">
+ <path d="M7 16h2V6h5a1 1 0 0 0 .8-.4l.975-1.3a.5.5 0 0 0 0-.6L14.8 2.4A1 1 0 0 0 14 2H9v-.586a1 1 0 0 0-2 0V7H2a1 1 0 0 0-.8.4L.225 8.7a.5.5 0 0 0 0 .6l.975 1.3a1 1 0 0 0 .8.4h5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/signpost-split.svg b/vendor/twbs/bootstrap-icons/icons/signpost-split.svg
new file mode 100644
index 000000000..7fb69b7f2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/signpost-split.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-signpost-split" viewBox="0 0 16 16">
+ <path d="M7 7V1.414a1 1 0 0 1 2 0V2h5a1 1 0 0 1 .8.4l.975 1.3a.5.5 0 0 1 0 .6L14.8 5.6a1 1 0 0 1-.8.4H9v10H7v-5H2a1 1 0 0 1-.8-.4L.225 9.3a.5.5 0 0 1 0-.6L1.2 7.4A1 1 0 0 1 2 7zm1 3V8H2l-.75 1L2 10zm0-5h6l.75-1L14 3H8z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/signpost.svg b/vendor/twbs/bootstrap-icons/icons/signpost.svg
new file mode 100644
index 000000000..940e66436
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/signpost.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-signpost" viewBox="0 0 16 16">
+ <path d="M7 1.414V4H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h5v6h2v-6h3.532a1 1 0 0 0 .768-.36l1.933-2.32a.5.5 0 0 0 0-.64L13.3 4.36a1 1 0 0 0-.768-.36H9V1.414a1 1 0 0 0-2 0M12.532 5l1.666 2-1.666 2H2V5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sim-fill.svg b/vendor/twbs/bootstrap-icons/icons/sim-fill.svg
new file mode 100644
index 000000000..c7922b67a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sim-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sim-fill" viewBox="0 0 16 16">
+ <path d="M5 4.5a.5.5 0 0 1 .5-.5h2v2H5zM8.5 6V4h2a.5.5 0 0 1 .5.5V6zM5 7h6v2H5zm3.5 3H11v1.5a.5.5 0 0 1-.5.5h-2zm-1 0v2h-2a.5.5 0 0 1-.5-.5V10z"/>
+ <path d="M3.5 0A1.5 1.5 0 0 0 2 1.5v13A1.5 1.5 0 0 0 3.5 16h9a1.5 1.5 0 0 0 1.5-1.5V3.414a1.5 1.5 0 0 0-.44-1.06L11.647.439A1.5 1.5 0 0 0 10.586 0zm2 3h5A1.5 1.5 0 0 1 12 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 11.5v-7A1.5 1.5 0 0 1 5.5 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sim-slash-fill.svg b/vendor/twbs/bootstrap-icons/icons/sim-slash-fill.svg
new file mode 100644
index 000000000..b608de7d6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sim-slash-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sim-slash-fill" viewBox="0 0 16 16">
+ <path d="m11.646.44.897.896-1.703 1.703A1.5 1.5 0 0 0 10.5 3h-5A1.5 1.5 0 0 0 4 4.5v5.379l-2 2V1.5A1.5 1.5 0 0 1 3.5 0h7.086a1.5 1.5 0 0 1 1.06.44M8.5 5.378 9.879 4H8.5zM5 8.879 6.879 7H5zm6-1.758L9.121 9H11zm-3.5 3.5L6.121 12H7.5zM5.5 13q-.175 0-.34-.039L2.502 15.62c.265.236.615.38.998.38h9a1.5 1.5 0 0 0 1.5-1.5V4.121l-2 2V11.5a1.5 1.5 0 0 1-1.5 1.5zM5 4.5a.5.5 0 0 1 .5-.5h2v2H5zM8.5 10H11v1.5a.5.5 0 0 1-.5.5h-2zm6.354-8.146a.5.5 0 0 0-.708-.708l-13 13a.5.5 0 0 0 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sim-slash.svg b/vendor/twbs/bootstrap-icons/icons/sim-slash.svg
new file mode 100644
index 000000000..c8e0dc4de
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sim-slash.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sim-slash" viewBox="0 0 16 16">
+ <path d="m11.646.44.897.896-.707.707-.897-.897A.5.5 0 0 0 10.586 1H3.5a.5.5 0 0 0-.5.5v9.379l-1 1V1.5A1.5 1.5 0 0 1 3.5 0h7.086a1.5 1.5 0 0 1 1.06.44M10.5 3q.175 0 .34.039L9.879 4H8.5v1.379L6.879 7H5v1.879l-1 1V4.5A1.5 1.5 0 0 1 5.5 3zM12 6.121l-1 1V9H9.121L7.5 10.621V12H6.121l-.961.961q.165.039.34.039h5a1.5 1.5 0 0 0 1.5-1.5zM3.5 15a.5.5 0 0 1-.288-.091l-.71.71c.265.237.615.381.998.381h9a1.5 1.5 0 0 0 1.5-1.5V4.121l-1 1V14.5a.5.5 0 0 1-.5.5zm2-11a.5.5 0 0 0-.5.5V6h2.5V4zm5.5 6v1.5a.5.5 0 0 1-.5.5h-2v-2zm3.854-8.146a.5.5 0 0 0-.708-.708l-13 13a.5.5 0 0 0 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sim.svg b/vendor/twbs/bootstrap-icons/icons/sim.svg
new file mode 100644
index 000000000..0d71a11c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sim.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sim" viewBox="0 0 16 16">
+ <path d="M2 1.5A1.5 1.5 0 0 1 3.5 0h7.086a1.5 1.5 0 0 1 1.06.44l1.915 1.914A1.5 1.5 0 0 1 14 3.414V14.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5zM3.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5V3.414a.5.5 0 0 0-.146-.353l-1.915-1.915A.5.5 0 0 0 10.586 1z"/>
+ <path d="M5.5 4a.5.5 0 0 0-.5.5V6h2.5V4zm3 0v2H11V4.5a.5.5 0 0 0-.5-.5zM11 7H5v2h6zm0 3H8.5v2h2a.5.5 0 0 0 .5-.5zm-3.5 2v-2H5v1.5a.5.5 0 0 0 .5.5zM4 4.5A1.5 1.5 0 0 1 5.5 3h5A1.5 1.5 0 0 1 12 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 11.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sina-weibo.svg b/vendor/twbs/bootstrap-icons/icons/sina-weibo.svg
new file mode 100644
index 000000000..6d484d2e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sina-weibo.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sina-weibo" viewBox="0 0 16 16">
+ <path d="M10.878 1.093a4.23 4.23 0 0 1 4.031 1.305 4.22 4.22 0 0 1 .886 4.14v.001a.612.612 0 0 1-1.166-.377 3.01 3.01 0 0 0-3.495-3.873.611.611 0 1 1-.256-1.196M3.753 9.465c.548-1.11 1.972-1.74 3.233-1.411 1.304.338 1.971 1.568 1.437 2.764-.541 1.221-2.095 1.875-3.416 1.449-1.271-.411-1.812-1.67-1.254-2.802m2.658.567c.16.066.365-.009.458-.168.088-.16.03-.34-.129-.397-.156-.062-.353.013-.446.168-.09.154-.041.333.117.397m-1.607 1.314c.413.188.963.009 1.219-.4.252-.413.12-.883-.296-1.062-.41-.172-.94.005-1.194.402-.256.4-.135.874.271 1.06"/>
+ <path d="m12.014 7.238.005.001c.919.285 1.941.974 1.939 2.188 0 2.007-2.895 4.535-7.246 4.535C3.393 13.962 0 12.352 0 9.708c0-1.385.876-2.985 2.384-4.493C4.4 3.199 6.751 2.28 7.634 3.165c.39.392.427 1.065.177 1.87-.132.405.38.182.38.182 1.63-.682 3.051-.722 3.57.02.278.397.252.951-.004 1.594-.116.293.035.34.257.407m-10.4 3.101c.172 1.738 2.46 2.936 5.109 2.674 2.647-.26 4.656-1.883 4.482-3.623-.17-1.738-2.458-2.937-5.107-2.674-2.647.263-4.656 1.883-4.484 3.623m11.681-6.484a2.06 2.06 0 0 0-1.962-.634.526.526 0 1 0 .219 1.031 1.008 1.008 0 0 1 1.17 1.296.528.528 0 0 0 1.005.325 2.06 2.06 0 0 0-.432-2.018"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-backward-btn-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-backward-btn-fill.svg
new file mode 100644
index 000000000..202948974
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-backward-btn-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-backward-btn-fill" viewBox="0 0 16 16">
+ <path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m11.21-6.907L8.5 7.028V5.5a.5.5 0 0 0-.79-.407L5 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407V8.972l2.71 1.935A.5.5 0 0 0 12 10.5v-5a.5.5 0 0 0-.79-.407"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-backward-btn.svg b/vendor/twbs/bootstrap-icons/icons/skip-backward-btn.svg
new file mode 100644
index 000000000..7cae681aa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-backward-btn.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-backward-btn" viewBox="0 0 16 16">
+ <path d="M11.21 5.093A.5.5 0 0 1 12 5.5v5a.5.5 0 0 1-.79.407L8.5 8.972V10.5a.5.5 0 0 1-.79.407L5 8.972V10.5a.5.5 0 0 1-1 0v-5a.5.5 0 0 1 1 0v1.528l2.71-1.935a.5.5 0 0 1 .79.407v1.528z"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-backward-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-backward-circle-fill.svg
new file mode 100644
index 000000000..75263569d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-backward-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-backward-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-4.79-2.907L8.5 7.028V5.5a.5.5 0 0 0-.79-.407L5 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407V8.972l2.71 1.935A.5.5 0 0 0 12 10.5v-5a.5.5 0 0 0-.79-.407"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-backward-circle.svg b/vendor/twbs/bootstrap-icons/icons/skip-backward-circle.svg
new file mode 100644
index 000000000..8739f31c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-backward-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-backward-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M11.729 5.055a.5.5 0 0 0-.52.038L8.5 7.028V5.5a.5.5 0 0 0-.79-.407L5 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407V8.972l2.71 1.935A.5.5 0 0 0 12 10.5v-5a.5.5 0 0 0-.271-.445"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-backward-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-backward-fill.svg
new file mode 100644
index 000000000..bf8f63eba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-backward-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-backward-fill" viewBox="0 0 16 16">
+ <path d="M.5 3.5A.5.5 0 0 0 0 4v8a.5.5 0 0 0 1 0V8.753l6.267 3.636c.54.313 1.233-.066 1.233-.697v-2.94l6.267 3.636c.54.314 1.233-.065 1.233-.696V4.308c0-.63-.693-1.01-1.233-.696L8.5 7.248v-2.94c0-.63-.692-1.01-1.233-.696L1 7.248V4a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-backward.svg b/vendor/twbs/bootstrap-icons/icons/skip-backward.svg
new file mode 100644
index 000000000..ff5b8210c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-backward.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-backward" viewBox="0 0 16 16">
+ <path d="M.5 3.5A.5.5 0 0 1 1 4v3.248l6.267-3.636c.52-.302 1.233.043 1.233.696v2.94l6.267-3.636c.52-.302 1.233.043 1.233.696v7.384c0 .653-.713.998-1.233.696L8.5 8.752v2.94c0 .653-.713.998-1.233.696L1 8.752V12a.5.5 0 0 1-1 0V4a.5.5 0 0 1 .5-.5m7 1.133L1.696 8 7.5 11.367zm7.5 0L9.196 8 15 11.367z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-end-btn-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-end-btn-fill.svg
new file mode 100644
index 000000000..e721821a2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-end-btn-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-end-btn-fill" viewBox="0 0 16 16">
+ <path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m6.79-6.907A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407L9.5 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-end-btn.svg b/vendor/twbs/bootstrap-icons/icons/skip-end-btn.svg
new file mode 100644
index 000000000..6815577b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-end-btn.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-end-btn" viewBox="0 0 16 16">
+ <path d="M6.79 5.093 9.5 7.028V5.5a.5.5 0 0 1 1 0v5a.5.5 0 0 1-1 0V8.972l-2.71 1.935A.5.5 0 0 1 6 10.5v-5a.5.5 0 0 1 .79-.407"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-end-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-end-circle-fill.svg
new file mode 100644
index 000000000..63c0f68af
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-end-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-end-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.79 5.093A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407L9.5 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-end-circle.svg b/vendor/twbs/bootstrap-icons/icons/skip-end-circle.svg
new file mode 100644
index 000000000..50f41d95e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-end-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-end-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M6.271 5.055a.5.5 0 0 1 .52.038L9.5 7.028V5.5a.5.5 0 0 1 1 0v5a.5.5 0 0 1-1 0V8.972l-2.71 1.935A.5.5 0 0 1 6 10.5v-5a.5.5 0 0 1 .271-.445"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-end-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-end-fill.svg
new file mode 100644
index 000000000..afa88e33e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-end-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-end-fill" viewBox="0 0 16 16">
+ <path d="M12.5 4a.5.5 0 0 0-1 0v3.248L5.233 3.612C4.693 3.3 4 3.678 4 4.308v7.384c0 .63.692 1.01 1.233.697L11.5 8.753V12a.5.5 0 0 0 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-end.svg b/vendor/twbs/bootstrap-icons/icons/skip-end.svg
new file mode 100644
index 000000000..b2dfde6df
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-end.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-end" viewBox="0 0 16 16">
+ <path d="M12.5 4a.5.5 0 0 0-1 0v3.248L5.233 3.612C4.713 3.31 4 3.655 4 4.308v7.384c0 .653.713.998 1.233.696L11.5 8.752V12a.5.5 0 0 0 1 0zM5 4.633 10.804 8 5 11.367z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-forward-btn-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-forward-btn-fill.svg
new file mode 100644
index 000000000..954795701
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-forward-btn-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-forward-btn-fill" viewBox="0 0 16 16">
+ <path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m4.79-6.907A.5.5 0 0 0 4 5.5v5a.5.5 0 0 0 .79.407L7.5 8.972V10.5a.5.5 0 0 0 .79.407L11 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528L8.29 5.093a.5.5 0 0 0-.79.407v1.528z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-forward-btn.svg b/vendor/twbs/bootstrap-icons/icons/skip-forward-btn.svg
new file mode 100644
index 000000000..46a61b0c4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-forward-btn.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-forward-btn" viewBox="0 0 16 16">
+ <path d="M4.79 5.093A.5.5 0 0 0 4 5.5v5a.5.5 0 0 0 .79.407L7.5 8.972V10.5a.5.5 0 0 0 .79.407L11 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528L8.29 5.093a.5.5 0 0 0-.79.407v1.528z"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-forward-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-forward-circle-fill.svg
new file mode 100644
index 000000000..aefb63381
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-forward-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-forward-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M4.79 5.093A.5.5 0 0 0 4 5.5v5a.5.5 0 0 0 .79.407L7.5 8.972V10.5a.5.5 0 0 0 .79.407L11 8.972V10.5a.5.5 0 0 0 1 0v-5a.5.5 0 0 0-1 0v1.528L8.29 5.093a.5.5 0 0 0-.79.407v1.528z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-forward-circle.svg b/vendor/twbs/bootstrap-icons/icons/skip-forward-circle.svg
new file mode 100644
index 000000000..7ebc92831
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-forward-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-forward-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M4.271 5.055a.5.5 0 0 1 .52.038L7.5 7.028V5.5a.5.5 0 0 1 .79-.407L11 7.028V5.5a.5.5 0 0 1 1 0v5a.5.5 0 0 1-1 0V8.972l-2.71 1.935a.5.5 0 0 1-.79-.407V8.972l-2.71 1.935A.5.5 0 0 1 4 10.5v-5a.5.5 0 0 1 .271-.445"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-forward-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-forward-fill.svg
new file mode 100644
index 000000000..6c54d7999
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-forward-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-forward-fill" viewBox="0 0 16 16">
+ <path d="M15.5 3.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V8.753l-6.267 3.636c-.54.313-1.233-.066-1.233-.697v-2.94l-6.267 3.636C.693 12.703 0 12.324 0 11.693V4.308c0-.63.693-1.01 1.233-.696L7.5 7.248v-2.94c0-.63.693-1.01 1.233-.696L15 7.248V4a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-forward.svg b/vendor/twbs/bootstrap-icons/icons/skip-forward.svg
new file mode 100644
index 000000000..c69cfc547
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-forward.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-forward" viewBox="0 0 16 16">
+ <path d="M15.5 3.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-1 0V8.752l-6.267 3.636c-.52.302-1.233-.043-1.233-.696v-2.94l-6.267 3.636C.713 12.69 0 12.345 0 11.692V4.308c0-.653.713-.998 1.233-.696L7.5 7.248v-2.94c0-.653.713-.998 1.233-.696L15 7.248V4a.5.5 0 0 1 .5-.5M1 4.633v6.734L6.804 8zm7.5 0v6.734L14.304 8z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-start-btn-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-start-btn-fill.svg
new file mode 100644
index 000000000..a0af7020a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-start-btn-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-start-btn-fill" viewBox="0 0 16 16">
+ <path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m9.71-6.907L7 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407v-5a.5.5 0 0 0-.79-.407"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-start-btn.svg b/vendor/twbs/bootstrap-icons/icons/skip-start-btn.svg
new file mode 100644
index 000000000..b829fdd96
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-start-btn.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-start-btn" viewBox="0 0 16 16">
+ <path d="M9.71 5.093a.5.5 0 0 1 .79.407v5a.5.5 0 0 1-.79.407L7 8.972V10.5a.5.5 0 0 1-1 0v-5a.5.5 0 0 1 1 0v1.528z"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-start-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-start-circle-fill.svg
new file mode 100644
index 000000000..bb33ab012
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-start-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-start-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.71 5.093 7 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407v-5a.5.5 0 0 0-.79-.407"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-start-circle.svg b/vendor/twbs/bootstrap-icons/icons/skip-start-circle.svg
new file mode 100644
index 000000000..d0e3323ba
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-start-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-start-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M10.229 5.055a.5.5 0 0 0-.52.038L7 7.028V5.5a.5.5 0 0 0-1 0v5a.5.5 0 0 0 1 0V8.972l2.71 1.935a.5.5 0 0 0 .79-.407v-5a.5.5 0 0 0-.271-.445"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-start-fill.svg b/vendor/twbs/bootstrap-icons/icons/skip-start-fill.svg
new file mode 100644
index 000000000..56cccc3d0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-start-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-start-fill" viewBox="0 0 16 16">
+ <path d="M4 4a.5.5 0 0 1 1 0v3.248l6.267-3.636c.54-.313 1.232.066 1.232.696v7.384c0 .63-.692 1.01-1.232.697L5 8.753V12a.5.5 0 0 1-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skip-start.svg b/vendor/twbs/bootstrap-icons/icons/skip-start.svg
new file mode 100644
index 000000000..76811a93c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skip-start.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skip-start" viewBox="0 0 16 16">
+ <path d="M4 4a.5.5 0 0 1 1 0v3.248l6.267-3.636c.52-.302 1.233.043 1.233.696v7.384c0 .653-.713.998-1.233.696L5 8.752V12a.5.5 0 0 1-1 0zm7.5.633L5.696 8l5.804 3.367z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/skype.svg b/vendor/twbs/bootstrap-icons/icons/skype.svg
new file mode 100644
index 000000000..ad4be4db3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/skype.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-skype" viewBox="0 0 16 16">
+ <path d="M4.671 0c.88 0 1.733.247 2.468.702a7.42 7.42 0 0 1 6.02 2.118 7.37 7.37 0 0 1 2.167 5.215q0 .517-.072 1.026a4.66 4.66 0 0 1 .6 2.281 4.64 4.64 0 0 1-1.37 3.294A4.67 4.67 0 0 1 11.18 16c-.84 0-1.658-.226-2.37-.644a7.42 7.42 0 0 1-6.114-2.107A7.37 7.37 0 0 1 .529 8.035q0-.545.08-1.081a4.644 4.644 0 0 1 .76-5.59A4.68 4.68 0 0 1 4.67 0zm.447 7.01c.18.309.43.572.729.769a7 7 0 0 0 1.257.653q.737.308 1.145.523c.229.112.437.264.615.448.135.142.21.331.21.528a.87.87 0 0 1-.335.723c-.291.196-.64.289-.99.264a2.6 2.6 0 0 1-1.048-.206 11 11 0 0 1-.532-.253 1.3 1.3 0 0 0-.587-.15.72.72 0 0 0-.501.176.63.63 0 0 0-.195.491.8.8 0 0 0 .148.482 1.2 1.2 0 0 0 .456.354 5.1 5.1 0 0 0 2.212.419 4.6 4.6 0 0 0 1.624-.265 2.3 2.3 0 0 0 1.08-.801c.267-.39.402-.855.386-1.327a2.1 2.1 0 0 0-.279-1.101 2.5 2.5 0 0 0-.772-.792A7 7 0 0 0 8.486 7.3a1 1 0 0 0-.145-.058 18 18 0 0 1-1.013-.447 1.8 1.8 0 0 1-.54-.387.73.73 0 0 1-.2-.508.8.8 0 0 1 .385-.723 1.76 1.76 0 0 1 .968-.247c.26-.003.52.03.772.096q.412.119.802.293c.105.049.22.075.336.076a.6.6 0 0 0 .453-.19.7.7 0 0 0 .18-.496.72.72 0 0 0-.17-.476 1.4 1.4 0 0 0-.556-.354 3.7 3.7 0 0 0-.708-.183 6 6 0 0 0-1.022-.078 4.5 4.5 0 0 0-1.536.258 2.7 2.7 0 0 0-1.174.784 1.9 1.9 0 0 0-.45 1.287c-.01.37.076.736.25 1.063"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/slack.svg b/vendor/twbs/bootstrap-icons/icons/slack.svg
new file mode 100644
index 000000000..d914abe40
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/slack.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-slack" viewBox="0 0 16 16">
+ <path d="M3.362 10.11c0 .926-.756 1.681-1.681 1.681S0 11.036 0 10.111.756 8.43 1.68 8.43h1.682zm.846 0c0-.924.756-1.68 1.681-1.68s1.681.756 1.681 1.68v4.21c0 .924-.756 1.68-1.68 1.68a1.685 1.685 0 0 1-1.682-1.68zM5.89 3.362c-.926 0-1.682-.756-1.682-1.681S4.964 0 5.89 0s1.68.756 1.68 1.68v1.682zm0 .846c.924 0 1.68.756 1.68 1.681S6.814 7.57 5.89 7.57H1.68C.757 7.57 0 6.814 0 5.89c0-.926.756-1.682 1.68-1.682zm6.749 1.682c0-.926.755-1.682 1.68-1.682S16 4.964 16 5.889s-.756 1.681-1.68 1.681h-1.681zm-.848 0c0 .924-.755 1.68-1.68 1.68A1.685 1.685 0 0 1 8.43 5.89V1.68C8.43.757 9.186 0 10.11 0c.926 0 1.681.756 1.681 1.68zm-1.681 6.748c.926 0 1.682.756 1.682 1.681S11.036 16 10.11 16s-1.681-.756-1.681-1.68v-1.682h1.68zm0-.847c-.924 0-1.68-.755-1.68-1.68s.756-1.681 1.68-1.681h4.21c.924 0 1.68.756 1.68 1.68 0 .926-.756 1.681-1.68 1.681z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/slash-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/slash-circle-fill.svg
new file mode 100644
index 000000000..5f71707bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/slash-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-slash-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-4.646-2.646a.5.5 0 0 0-.708-.708l-6 6a.5.5 0 0 0 .708.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/slash-circle.svg b/vendor/twbs/bootstrap-icons/icons/slash-circle.svg
new file mode 100644
index 000000000..eb26f19e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/slash-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-slash-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M11.354 4.646a.5.5 0 0 0-.708 0l-6 6a.5.5 0 0 0 .708.708l6-6a.5.5 0 0 0 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/slash-lg.svg b/vendor/twbs/bootstrap-icons/icons/slash-lg.svg
new file mode 100644
index 000000000..8b8b132e9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/slash-lg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-slash-lg" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M13.854 2.146a.5.5 0 0 1 0 .708l-11 11a.5.5 0 0 1-.708-.708l11-11a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/slash-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/slash-square-fill.svg
new file mode 100644
index 000000000..6fc915365
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/slash-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-slash-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm9.354 5.354-6 6a.5.5 0 0 1-.708-.708l6-6a.5.5 0 0 1 .708.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/slash-square.svg b/vendor/twbs/bootstrap-icons/icons/slash-square.svg
new file mode 100644
index 000000000..0757006a7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/slash-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-slash-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M11.354 4.646a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708l6-6a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/slash.svg b/vendor/twbs/bootstrap-icons/icons/slash.svg
new file mode 100644
index 000000000..6d18af4cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/slash.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-slash" viewBox="0 0 16 16">
+ <path d="M11.354 4.646a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708l6-6a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sliders.svg b/vendor/twbs/bootstrap-icons/icons/sliders.svg
new file mode 100644
index 000000000..c64a06cac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sliders.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sliders" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11.5 2a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3M9.05 3a2.5 2.5 0 0 1 4.9 0H16v1h-2.05a2.5 2.5 0 0 1-4.9 0H0V3zM4.5 7a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3M2.05 8a2.5 2.5 0 0 1 4.9 0H16v1H6.95a2.5 2.5 0 0 1-4.9 0H0V8zm9.45 4a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3m-2.45 1a2.5 2.5 0 0 1 4.9 0H16v1h-2.05a2.5 2.5 0 0 1-4.9 0H0v-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sliders2-vertical.svg b/vendor/twbs/bootstrap-icons/icons/sliders2-vertical.svg
new file mode 100644
index 000000000..4fcb8ba11
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sliders2-vertical.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sliders2-vertical" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M0 10.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 0-1H3V1.5a.5.5 0 0 0-1 0V10H.5a.5.5 0 0 0-.5.5M2.5 12a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 1 0v-2a.5.5 0 0 0-.5-.5m3-6.5A.5.5 0 0 0 6 6h1.5v8.5a.5.5 0 0 0 1 0V6H10a.5.5 0 0 0 0-1H6a.5.5 0 0 0-.5.5M8 1a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 1 0v-2A.5.5 0 0 0 8 1m3 9.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 0-1H14V1.5a.5.5 0 0 0-1 0V10h-1.5a.5.5 0 0 0-.5.5m2.5 1.5a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 1 0v-2a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sliders2.svg b/vendor/twbs/bootstrap-icons/icons/sliders2.svg
new file mode 100644
index 000000000..975861eca
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sliders2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sliders2" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.5 1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4H1.5a.5.5 0 0 1 0-1H10V1.5a.5.5 0 0 1 .5-.5M12 3.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-6.5 2A.5.5 0 0 1 6 6v1.5h8.5a.5.5 0 0 1 0 1H6V10a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5M1 8a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 1 8m9.5 2a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V13H1.5a.5.5 0 0 1 0-1H10v-1.5a.5.5 0 0 1 .5-.5m1.5 2.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/smartwatch.svg b/vendor/twbs/bootstrap-icons/icons/smartwatch.svg
new file mode 100644
index 000000000..0a11991b0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/smartwatch.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-smartwatch" viewBox="0 0 16 16">
+ <path d="M9 5a.5.5 0 0 0-1 0v3H6a.5.5 0 0 0 0 1h2.5a.5.5 0 0 0 .5-.5z"/>
+ <path d="M4 1.667v.383A2.5 2.5 0 0 0 2 4.5v7a2.5 2.5 0 0 0 2 2.45v.383C4 15.253 4.746 16 5.667 16h4.666c.92 0 1.667-.746 1.667-1.667v-.383a2.5 2.5 0 0 0 2-2.45V8h.5a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5H14v-.5a2.5 2.5 0 0 0-2-2.45v-.383C12 .747 11.254 0 10.333 0H5.667C4.747 0 4 .746 4 1.667M4.5 3h7A1.5 1.5 0 0 1 13 4.5v7a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 3 11.5v-7A1.5 1.5 0 0 1 4.5 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/snapchat.svg b/vendor/twbs/bootstrap-icons/icons/snapchat.svg
new file mode 100644
index 000000000..01d3684f3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/snapchat.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-snapchat" viewBox="0 0 16 16">
+ <path d="M15.943 11.526c-.111-.303-.323-.465-.564-.599a1 1 0 0 0-.123-.064l-.219-.111c-.752-.399-1.339-.902-1.746-1.498a3.4 3.4 0 0 1-.3-.531c-.034-.1-.032-.156-.008-.207a.3.3 0 0 1 .097-.1c.129-.086.262-.173.352-.231.162-.104.289-.187.371-.245.309-.216.525-.446.66-.702a1.4 1.4 0 0 0 .069-1.16c-.205-.538-.713-.872-1.329-.872a1.8 1.8 0 0 0-.487.065c.006-.368-.002-.757-.035-1.139-.116-1.344-.587-2.048-1.077-2.61a4.3 4.3 0 0 0-1.095-.881C9.764.216 8.92 0 7.999 0s-1.76.216-2.505.641c-.412.232-.782.53-1.097.883-.49.562-.96 1.267-1.077 2.61-.033.382-.04.772-.036 1.138a1.8 1.8 0 0 0-.487-.065c-.615 0-1.124.335-1.328.873a1.4 1.4 0 0 0 .067 1.161c.136.256.352.486.66.701.082.058.21.14.371.246l.339.221a.4.4 0 0 1 .109.11c.026.053.027.11-.012.217a3.4 3.4 0 0 1-.295.52c-.398.583-.968 1.077-1.696 1.472-.385.204-.786.34-.955.8-.128.348-.044.743.28 1.075q.18.189.409.31a4.4 4.4 0 0 0 1 .4.7.7 0 0 1 .202.09c.118.104.102.26.259.488q.12.178.296.3c.33.229.701.243 1.095.258.355.014.758.03 1.217.18.19.064.389.186.618.328.55.338 1.305.802 2.566.802 1.262 0 2.02-.466 2.576-.806.227-.14.424-.26.609-.321.46-.152.863-.168 1.218-.181.393-.015.764-.03 1.095-.258a1.14 1.14 0 0 0 .336-.368c.114-.192.11-.327.217-.42a.6.6 0 0 1 .19-.087 4.5 4.5 0 0 0 1.014-.404c.16-.087.306-.2.429-.336l.004-.005c.304-.325.38-.709.256-1.047m-1.121.602c-.684.378-1.139.337-1.493.565-.3.193-.122.61-.34.76-.269.186-1.061-.012-2.085.326-.845.279-1.384 1.082-2.903 1.082s-2.045-.801-2.904-1.084c-1.022-.338-1.816-.14-2.084-.325-.218-.15-.041-.568-.341-.761-.354-.228-.809-.187-1.492-.563-.436-.24-.189-.39-.044-.46 2.478-1.199 2.873-3.05 2.89-3.188.022-.166.045-.297-.138-.466-.177-.164-.962-.65-1.18-.802-.36-.252-.52-.503-.402-.812.082-.214.281-.295.49-.295a1 1 0 0 1 .197.022c.396.086.78.285 1.002.338q.04.01.082.011c.118 0 .16-.06.152-.195-.026-.433-.087-1.277-.019-2.066.094-1.084.444-1.622.859-2.097.2-.229 1.137-1.22 2.93-1.22 1.792 0 2.732.987 2.931 1.215.416.475.766 1.013.859 2.098.068.788.009 1.632-.019 2.065-.01.142.034.195.152.195a.4.4 0 0 0 .082-.01c.222-.054.607-.253 1.002-.338a1 1 0 0 1 .197-.023c.21 0 .409.082.49.295.117.309-.04.56-.401.812-.218.152-1.003.638-1.18.802-.184.169-.16.3-.139.466.018.14.413 1.991 2.89 3.189.147.073.394.222-.041.464"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/snow.svg b/vendor/twbs/bootstrap-icons/icons/snow.svg
new file mode 100644
index 000000000..9b648a5fe
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/snow.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-snow" viewBox="0 0 16 16">
+ <path d="M8 16a.5.5 0 0 1-.5-.5v-1.293l-.646.647a.5.5 0 0 1-.707-.708L7.5 12.793V8.866l-3.4 1.963-.496 1.85a.5.5 0 1 1-.966-.26l.237-.882-1.12.646a.5.5 0 0 1-.5-.866l1.12-.646-.884-.237a.5.5 0 1 1 .26-.966l1.848.495L7 8 3.6 6.037l-1.85.495a.5.5 0 0 1-.258-.966l.883-.237-1.12-.646a.5.5 0 1 1 .5-.866l1.12.646-.237-.883a.5.5 0 1 1 .966-.258l.495 1.849L7.5 7.134V3.207L6.147 1.854a.5.5 0 1 1 .707-.708l.646.647V.5a.5.5 0 1 1 1 0v1.293l.647-.647a.5.5 0 1 1 .707.708L8.5 3.207v3.927l3.4-1.963.496-1.85a.5.5 0 1 1 .966.26l-.236.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.883.237a.5.5 0 1 1-.26.966l-1.848-.495L9 8l3.4 1.963 1.849-.495a.5.5 0 0 1 .259.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.236.883a.5.5 0 1 1-.966.258l-.495-1.849-3.4-1.963v3.927l1.353 1.353a.5.5 0 0 1-.707.708l-.647-.647V15.5a.5.5 0 0 1-.5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/snow2.svg b/vendor/twbs/bootstrap-icons/icons/snow2.svg
new file mode 100644
index 000000000..6533d6320
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/snow2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-snow2" viewBox="0 0 16 16">
+ <path d="M8 16a.5.5 0 0 1-.5-.5v-1.293l-.646.647a.5.5 0 0 1-.707-.708L7.5 12.793v-1.086l-.646.647a.5.5 0 0 1-.707-.708L7.5 10.293V8.866l-1.236.713-.495 1.85a.5.5 0 1 1-.966-.26l.237-.882-.94.542-.496 1.85a.5.5 0 1 1-.966-.26l.237-.882-1.12.646a.5.5 0 0 1-.5-.866l1.12-.646-.884-.237a.5.5 0 1 1 .26-.966l1.848.495.94-.542-.882-.237a.5.5 0 1 1 .258-.966l1.85.495L7 8l-1.236-.713-1.849.495a.5.5 0 1 1-.258-.966l.883-.237-.94-.542-1.85.495a.5.5 0 0 1-.258-.966l.883-.237-1.12-.646a.5.5 0 1 1 .5-.866l1.12.646-.237-.883a.5.5 0 0 1 .966-.258l.495 1.849.94.542-.236-.883a.5.5 0 0 1 .966-.258l.495 1.849 1.236.713V5.707L6.147 4.354a.5.5 0 1 1 .707-.708l.646.647V3.207L6.147 1.854a.5.5 0 1 1 .707-.708l.646.647V.5a.5.5 0 0 1 1 0v1.293l.647-.647a.5.5 0 1 1 .707.708L8.5 3.207v1.086l.647-.647a.5.5 0 1 1 .707.708L8.5 5.707v1.427l1.236-.713.495-1.85a.5.5 0 1 1 .966.26l-.236.882.94-.542.495-1.85a.5.5 0 1 1 .966.26l-.236.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.883.237a.5.5 0 1 1-.26.966l-1.848-.495-.94.542.883.237a.5.5 0 1 1-.26.966l-1.848-.495L9 8l1.236.713 1.849-.495a.5.5 0 0 1 .259.966l-.883.237.94.542 1.849-.495a.5.5 0 0 1 .259.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.236.883a.5.5 0 1 1-.966.258l-.495-1.849-.94-.542.236.883a.5.5 0 0 1-.966.258L9.736 9.58 8.5 8.866v1.427l1.354 1.353a.5.5 0 0 1-.707.708l-.647-.647v1.086l1.354 1.353a.5.5 0 0 1-.707.708l-.647-.647V15.5a.5.5 0 0 1-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/snow3.svg b/vendor/twbs/bootstrap-icons/icons/snow3.svg
new file mode 100644
index 000000000..01c0d73f7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/snow3.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-snow3" viewBox="0 0 16 16">
+ <path d="M8 7.5a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1"/>
+ <path d="M8 16a.5.5 0 0 1-.5-.5v-1.293l-.646.647a.5.5 0 0 1-.707-.708L7.5 12.793v-1.51l-2.053-1.232-1.348.778-.495 1.85a.5.5 0 1 1-.966-.26l.237-.882-1.12.646a.5.5 0 0 1-.5-.866l1.12-.646-.883-.237a.5.5 0 1 1 .258-.966l1.85.495L5 9.155v-2.31l-1.4-.808-1.85.495a.5.5 0 1 1-.259-.966l.884-.237-1.12-.646a.5.5 0 0 1 .5-.866l1.12.646-.237-.883a.5.5 0 1 1 .966-.258l.495 1.849 1.348.778L7.5 4.717v-1.51L6.147 1.854a.5.5 0 1 1 .707-.708l.646.647V.5a.5.5 0 0 1 1 0v1.293l.647-.647a.5.5 0 1 1 .707.708L8.5 3.207v1.51l2.053 1.232 1.348-.778.495-1.85a.5.5 0 1 1 .966.26l-.236.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.883.237a.5.5 0 1 1-.26.966l-1.848-.495-1.4.808v2.31l1.4.808 1.849-.495a.5.5 0 1 1 .259.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.236.883a.5.5 0 1 1-.966.258l-.495-1.849-1.348-.778L8.5 11.283v1.51l1.354 1.353a.5.5 0 0 1-.707.708l-.647-.647V15.5a.5.5 0 0 1-.5.5m2-6.783V6.783l-2-1.2-2 1.2v2.434l2 1.2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-alpha-down-alt.svg b/vendor/twbs/bootstrap-icons/icons/sort-alpha-down-alt.svg
new file mode 100644
index 000000000..d03f1aaf4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-alpha-down-alt.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-alpha-down-alt" viewBox="0 0 16 16">
+ <path d="M12.96 7H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645z"/>
+ <path fill-rule="evenodd" d="M10.082 12.629 9.664 14H8.598l1.789-5.332h1.234L13.402 14h-1.12l-.419-1.371zm1.57-.785L11 9.688h-.047l-.652 2.156z"/>
+ <path d="M4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-alpha-down.svg b/vendor/twbs/bootstrap-icons/icons/sort-alpha-down.svg
new file mode 100644
index 000000000..6ac3e84f3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-alpha-down.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-alpha-down" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.082 5.629 9.664 7H8.598l1.789-5.332h1.234L13.402 7h-1.12l-.419-1.371zm1.57-.785L11 2.687h-.047l-.652 2.157z"/>
+ <path d="M12.96 14H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645zM4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-alpha-up-alt.svg b/vendor/twbs/bootstrap-icons/icons/sort-alpha-up-alt.svg
new file mode 100644
index 000000000..a7b332e6c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-alpha-up-alt.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-alpha-up-alt" viewBox="0 0 16 16">
+ <path d="M12.96 7H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645z"/>
+ <path fill-rule="evenodd" d="M10.082 12.629 9.664 14H8.598l1.789-5.332h1.234L13.402 14h-1.12l-.419-1.371zm1.57-.785L11 9.688h-.047l-.652 2.156z"/>
+ <path d="M4.5 13.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-alpha-up.svg b/vendor/twbs/bootstrap-icons/icons/sort-alpha-up.svg
new file mode 100644
index 000000000..c5f0e3abf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-alpha-up.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-alpha-up" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.082 5.629 9.664 7H8.598l1.789-5.332h1.234L13.402 7h-1.12l-.419-1.371zm1.57-.785L11 2.687h-.047l-.652 2.157z"/>
+ <path d="M12.96 14H9.028v-.691l2.579-3.72v-.054H9.098v-.867h3.785v.691l-2.567 3.72v.054h2.645zm-8.46-.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-down-alt.svg b/vendor/twbs/bootstrap-icons/icons/sort-down-alt.svg
new file mode 100644
index 000000000..86a1bf6f1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-down-alt.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-down-alt" viewBox="0 0 16 16">
+ <path d="M3.5 3.5a.5.5 0 0 0-1 0v8.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L3.5 12.293zm4 .5a.5.5 0 0 1 0-1h1a.5.5 0 0 1 0 1zm0 3a.5.5 0 0 1 0-1h3a.5.5 0 0 1 0 1zm0 3a.5.5 0 0 1 0-1h5a.5.5 0 0 1 0 1zM7 12.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-down.svg b/vendor/twbs/bootstrap-icons/icons/sort-down.svg
new file mode 100644
index 000000000..8cfdf23a6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-down" viewBox="0 0 16 16">
+ <path d="M3.5 2.5a.5.5 0 0 0-1 0v8.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L3.5 11.293zm3.5 1a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5M7.5 6a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-numeric-down-alt.svg b/vendor/twbs/bootstrap-icons/icons/sort-numeric-down-alt.svg
new file mode 100644
index 000000000..ce4e3c5dc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-numeric-down-alt.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-numeric-down-alt" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11.36 7.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.836 1.973-1.836 1.09 0 2.063.637 2.063 2.688 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98"/>
+ <path d="M12.438 8.668V14H11.39V9.684h-.051l-1.211.859v-.969l1.262-.906h1.046zM4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-numeric-down.svg b/vendor/twbs/bootstrap-icons/icons/sort-numeric-down.svg
new file mode 100644
index 000000000..afa87bea7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-numeric-down.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-numeric-down" viewBox="0 0 16 16">
+ <path d="M12.438 1.668V7H11.39V2.684h-.051l-1.211.859v-.969l1.262-.906h1.046z"/>
+ <path fill-rule="evenodd" d="M11.36 14.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.835 1.973-1.835 1.09 0 2.063.636 2.063 2.687 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98"/>
+ <path d="M4.5 2.5a.5.5 0 0 0-1 0v9.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L4.5 12.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-numeric-up-alt.svg b/vendor/twbs/bootstrap-icons/icons/sort-numeric-up-alt.svg
new file mode 100644
index 000000000..d83cbf967
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-numeric-up-alt.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-numeric-up-alt" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M11.36 7.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.836 1.973-1.836 1.09 0 2.063.637 2.063 2.688 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98"/>
+ <path d="M12.438 8.668V14H11.39V9.684h-.051l-1.211.859v-.969l1.262-.906h1.046zM4.5 13.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-numeric-up.svg b/vendor/twbs/bootstrap-icons/icons/sort-numeric-up.svg
new file mode 100644
index 000000000..25a1e548e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-numeric-up.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-numeric-up" viewBox="0 0 16 16">
+ <path d="M12.438 1.668V7H11.39V2.684h-.051l-1.211.859v-.969l1.262-.906h1.046z"/>
+ <path fill-rule="evenodd" d="M11.36 14.098c-1.137 0-1.708-.657-1.762-1.278h1.004c.058.223.343.45.773.45.824 0 1.164-.829 1.133-1.856h-.059c-.148.39-.57.742-1.261.742-.91 0-1.72-.613-1.72-1.758 0-1.148.848-1.835 1.973-1.835 1.09 0 2.063.636 2.063 2.687 0 1.867-.723 2.848-2.145 2.848zm.062-2.735c.504 0 .933-.336.933-.972 0-.633-.398-1.008-.94-1.008-.52 0-.927.375-.927 1 0 .64.418.98.934.98"/>
+ <path d="M4.5 13.5a.5.5 0 0 1-1 0V3.707L2.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L4.5 3.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-up-alt.svg b/vendor/twbs/bootstrap-icons/icons/sort-up-alt.svg
new file mode 100644
index 000000000..9f78a20e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-up-alt.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-up-alt" viewBox="0 0 16 16">
+ <path d="M3.5 13.5a.5.5 0 0 1-1 0V4.707L1.354 5.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L3.5 4.707zm4-9.5a.5.5 0 0 1 0-1h1a.5.5 0 0 1 0 1zm0 3a.5.5 0 0 1 0-1h3a.5.5 0 0 1 0 1zm0 3a.5.5 0 0 1 0-1h5a.5.5 0 0 1 0 1zM7 12.5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sort-up.svg b/vendor/twbs/bootstrap-icons/icons/sort-up.svg
new file mode 100644
index 000000000..cda9ac719
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sort-up.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sort-up" viewBox="0 0 16 16">
+ <path d="M3.5 12.5a.5.5 0 0 1-1 0V3.707L1.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.5.5 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L3.5 3.707zm3.5-9a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5M7.5 6a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm0 3a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/soundwave.svg b/vendor/twbs/bootstrap-icons/icons/soundwave.svg
new file mode 100644
index 000000000..1444777d5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/soundwave.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-soundwave" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8.5 2a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-1 0v-11a.5.5 0 0 1 .5-.5m-2 2a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5m4 0a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5m-6 1.5A.5.5 0 0 1 5 6v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m8 0a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m-10 1A.5.5 0 0 1 3 7v2a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5m12 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sourceforge.svg b/vendor/twbs/bootstrap-icons/icons/sourceforge.svg
new file mode 100644
index 000000000..13d0c5f81
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sourceforge.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sourceforge" viewBox="0 0 16 16">
+ <path d="M9.13 8.43c0-2.604-.929-3.79-1.42-4.24a.14.14 0 0 0-.232.123c.095 1.472-1.762 1.84-1.762 4.144v.013c0 1.404 1.065 2.55 2.376 2.55s2.377-1.146 2.377-2.55v-.013c0-.655-.246-1.282-.492-1.745-.055-.096-.191-.055-.178.027.451 1.99-.669 3.217-.669 1.69Z"/>
+ <path d="M6.303 13.923a.25.25 0 0 1-.164-.068L.061 7.789c-.081-.082-.081-.232 0-.327l6.42-6.407A.3.3 0 0 1 6.63 1h1.844c.109 0 .177.068.204.136a.22.22 0 0 1-.054.246L2.602 7.407a.304.304 0 0 0 0 .436l4.766 4.771c.082.082.082.232 0 .328l-.915.927a.3.3 0 0 1-.15.054m1.216 1.063a.22.22 0 0 1-.15-.382l6.036-6.025a.32.32 0 0 0 .096-.218.27.27 0 0 0-.096-.218l-4.78-4.771c-.082-.082-.082-.232 0-.327l.929-.927a.23.23 0 0 1 .163-.068c.069 0 .11.04.15.081l6.065 6.067c.04.04.068.095.068.163a.23.23 0 0 1-.068.164l-6.42 6.407A.23.23 0 0 1 9.35 15H7.52z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/speaker-fill.svg b/vendor/twbs/bootstrap-icons/icons/speaker-fill.svg
new file mode 100644
index 000000000..f6d9e3347
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/speaker-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-speaker-fill" viewBox="0 0 16 16">
+ <path d="M9 4a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-2.5 6.5a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0"/>
+ <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6 4a2 2 0 1 1-4 0 2 2 0 0 1 4 0M8 7a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/speaker.svg b/vendor/twbs/bootstrap-icons/icons/speaker.svg
new file mode 100644
index 000000000..1415b5d2a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/speaker.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-speaker" viewBox="0 0 16 16">
+ <path d="M12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M8 4.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5M8 6a2 2 0 1 0 0-4 2 2 0 0 0 0 4m0 3a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3m-3.5 1.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/speedometer.svg b/vendor/twbs/bootstrap-icons/icons/speedometer.svg
new file mode 100644
index 000000000..f6e3e616f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/speedometer.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-speedometer" viewBox="0 0 16 16">
+ <path d="M8 2a.5.5 0 0 1 .5.5V4a.5.5 0 0 1-1 0V2.5A.5.5 0 0 1 8 2M3.732 3.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707M2 8a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 8m9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5m.754-4.246a.39.39 0 0 0-.527-.02L7.547 7.31A.91.91 0 1 0 8.85 8.569l3.434-4.297a.39.39 0 0 0-.029-.518z"/>
+ <path fill-rule="evenodd" d="M6.664 15.889A8 8 0 1 1 9.336.11a8 8 0 0 1-2.672 15.78zm-4.665-4.283A11.95 11.95 0 0 1 8 10c2.186 0 4.236.585 6.001 1.606a7 7 0 1 0-12.002 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/speedometer2.svg b/vendor/twbs/bootstrap-icons/icons/speedometer2.svg
new file mode 100644
index 000000000..75e79c85e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/speedometer2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-speedometer2" viewBox="0 0 16 16">
+ <path d="M8 4a.5.5 0 0 1 .5.5V6a.5.5 0 0 1-1 0V4.5A.5.5 0 0 1 8 4M3.732 5.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707M2 10a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 10m9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5m.754-4.246a.39.39 0 0 0-.527-.02L7.547 9.31a.91.91 0 1 0 1.302 1.258l3.434-4.297a.39.39 0 0 0-.029-.518z"/>
+ <path fill-rule="evenodd" d="M0 10a8 8 0 1 1 15.547 2.661c-.442 1.253-1.845 1.602-2.932 1.25C11.309 13.488 9.475 13 8 13c-1.474 0-3.31.488-4.615.911-1.087.352-2.49.003-2.932-1.25A8 8 0 0 1 0 10m8-7a7 7 0 0 0-6.603 9.329c.203.575.923.876 1.68.63C4.397 12.533 6.358 12 8 12s3.604.532 4.923.96c.757.245 1.477-.056 1.68-.631A7 7 0 0 0 8 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/spellcheck.svg b/vendor/twbs/bootstrap-icons/icons/spellcheck.svg
new file mode 100644
index 000000000..69fec768d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/spellcheck.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-spellcheck" viewBox="0 0 16 16">
+ <path d="M8.217 11.068c1.216 0 1.948-.869 1.948-2.31v-.702c0-1.44-.727-2.305-1.929-2.305-.742 0-1.328.347-1.499.889h-.063V3.983h-1.29V11h1.27v-.791h.064c.21.532.776.86 1.499.86zm-.43-1.025c-.66 0-1.113-.518-1.113-1.28V8.12c0-.825.42-1.343 1.098-1.343.684 0 1.075.518 1.075 1.416v.45c0 .888-.386 1.401-1.06 1.401zm-5.583 1.035c.767 0 1.201-.356 1.406-.737h.059V11h1.216V7.519c0-1.314-.947-1.783-2.11-1.783C1.355 5.736.75 6.42.69 7.27h1.216c.064-.323.313-.552.84-.552s.864.249.864.771v.464H2.346C1.145 7.953.5 8.568.5 9.496c0 .977.693 1.582 1.704 1.582m.42-.947c-.44 0-.845-.235-.845-.718 0-.395.269-.684.84-.684h.991v.538c0 .503-.444.864-.986.864m8.897.567c-.577-.4-.9-1.088-.9-1.983v-.65c0-1.42.894-2.338 2.305-2.338 1.352 0 2.119.82 2.139 1.806h-1.187c-.04-.351-.283-.776-.918-.776-.674 0-1.045.517-1.045 1.328v.625c0 .468.121.834.343 1.067z"/>
+ <path d="M14.469 9.414a.75.75 0 0 1 .117 1.055l-4 5a.75.75 0 0 1-1.116.061l-2.5-2.5a.75.75 0 1 1 1.06-1.06l1.908 1.907 3.476-4.346a.75.75 0 0 1 1.055-.117"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/spotify.svg b/vendor/twbs/bootstrap-icons/icons/spotify.svg
new file mode 100644
index 000000000..09d0e9fd7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/spotify.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-spotify" viewBox="0 0 16 16">
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0m3.669 11.538a.5.5 0 0 1-.686.165c-1.879-1.147-4.243-1.407-7.028-.77a.499.499 0 0 1-.222-.973c3.048-.696 5.662-.397 7.77.892a.5.5 0 0 1 .166.686m.979-2.178a.624.624 0 0 1-.858.205c-2.15-1.321-5.428-1.704-7.972-.932a.625.625 0 0 1-.362-1.194c2.905-.881 6.517-.454 8.986 1.063a.624.624 0 0 1 .206.858m.084-2.268C10.154 5.56 5.9 5.419 3.438 6.166a.748.748 0 1 1-.434-1.432c2.825-.857 7.523-.692 10.492 1.07a.747.747 0 1 1-.764 1.288"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/square-fill.svg b/vendor/twbs/bootstrap-icons/icons/square-fill.svg
new file mode 100644
index 000000000..1e72d5ee9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-square-fill" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/square-half.svg b/vendor/twbs/bootstrap-icons/icons/square-half.svg
new file mode 100644
index 000000000..aa3e349a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/square-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-square-half" viewBox="0 0 16 16">
+ <path d="M8 15V1h6a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1zm6 1a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/square.svg b/vendor/twbs/bootstrap-icons/icons/square.svg
new file mode 100644
index 000000000..0f086dee9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/square.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stack-overflow.svg b/vendor/twbs/bootstrap-icons/icons/stack-overflow.svg
new file mode 100644
index 000000000..c5e5be6f9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stack-overflow.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stack-overflow" viewBox="0 0 16 16">
+ <path d="M12.412 14.572V10.29h1.428V16H1v-5.71h1.428v4.282z"/>
+ <path d="M3.857 13.145h7.137v-1.428H3.857zM10.254 0 9.108.852l4.26 5.727 1.146-.852zm-3.54 3.377 5.484 4.567.913-1.097L7.627 2.28l-.914 1.097zM4.922 6.55l6.47 3.013.603-1.294-6.47-3.013zm-.925 3.344 6.985 1.469.294-1.398-6.985-1.468z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stack.svg b/vendor/twbs/bootstrap-icons/icons/stack.svg
new file mode 100644
index 000000000..3cf0ecad6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stack.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stack" viewBox="0 0 16 16">
+ <path d="m14.12 10.163 1.715.858c.22.11.22.424 0 .534L8.267 15.34a.6.6 0 0 1-.534 0L.165 11.555a.299.299 0 0 1 0-.534l1.716-.858 5.317 2.659c.505.252 1.1.252 1.604 0l5.317-2.66zM7.733.063a.6.6 0 0 1 .534 0l7.568 3.784a.3.3 0 0 1 0 .535L8.267 8.165a.6.6 0 0 1-.534 0L.165 4.382a.299.299 0 0 1 0-.535z"/>
+ <path d="m14.12 6.576 1.715.858c.22.11.22.424 0 .534l-7.568 3.784a.6.6 0 0 1-.534 0L.165 7.968a.299.299 0 0 1 0-.534l1.716-.858 5.317 2.659c.505.252 1.1.252 1.604 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/star-fill.svg b/vendor/twbs/bootstrap-icons/icons/star-fill.svg
new file mode 100644
index 000000000..de09c4aa5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/star-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star-fill" viewBox="0 0 16 16">
+ <path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/star-half.svg b/vendor/twbs/bootstrap-icons/icons/star-half.svg
new file mode 100644
index 000000000..8a70f537c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/star-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star-half" viewBox="0 0 16 16">
+ <path d="M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/star.svg b/vendor/twbs/bootstrap-icons/icons/star.svg
new file mode 100644
index 000000000..fcdcb1cf3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/star.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16">
+ <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stars.svg b/vendor/twbs/bootstrap-icons/icons/stars.svg
new file mode 100644
index 000000000..b6fb4f25d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stars.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stars" viewBox="0 0 16 16">
+ <path d="M7.657 6.247c.11-.33.576-.33.686 0l.645 1.937a2.89 2.89 0 0 0 1.829 1.828l1.936.645c.33.11.33.576 0 .686l-1.937.645a2.89 2.89 0 0 0-1.828 1.829l-.645 1.936a.361.361 0 0 1-.686 0l-.645-1.937a2.89 2.89 0 0 0-1.828-1.828l-1.937-.645a.361.361 0 0 1 0-.686l1.937-.645a2.89 2.89 0 0 0 1.828-1.828zM3.794 1.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387A1.73 1.73 0 0 0 4.593 5.69l-.387 1.162a.217.217 0 0 1-.412 0L3.407 5.69A1.73 1.73 0 0 0 2.31 4.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387A1.73 1.73 0 0 0 3.407 2.31zM10.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.16 1.16 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.16 1.16 0 0 0-.732-.732L9.1 2.137a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/steam.svg b/vendor/twbs/bootstrap-icons/icons/steam.svg
new file mode 100644
index 000000000..9daa3d3ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/steam.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-steam" viewBox="0 0 16 16">
+ <path d="M.329 10.333A8.01 8.01 0 0 0 7.99 16C12.414 16 16 12.418 16 8s-3.586-8-8.009-8A8.006 8.006 0 0 0 0 7.468l.003.006 4.304 1.769A2.2 2.2 0 0 1 5.62 8.88l1.96-2.844-.001-.04a3.046 3.046 0 0 1 3.042-3.043 3.046 3.046 0 0 1 3.042 3.043 3.047 3.047 0 0 1-3.111 3.044l-2.804 2a2.223 2.223 0 0 1-3.075 2.11 2.22 2.22 0 0 1-1.312-1.568L.33 10.333Z"/>
+ <path d="M4.868 12.683a1.715 1.715 0 0 0 1.318-3.165 1.7 1.7 0 0 0-1.263-.02l1.023.424a1.261 1.261 0 1 1-.97 2.33l-.99-.41a1.7 1.7 0 0 0 .882.84Zm3.726-6.687a2.03 2.03 0 0 0 2.027 2.029 2.03 2.03 0 0 0 2.027-2.029 2.03 2.03 0 0 0-2.027-2.027 2.03 2.03 0 0 0-2.027 2.027m2.03-1.527a1.524 1.524 0 1 1-.002 3.048 1.524 1.524 0 0 1 .002-3.048"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stickies-fill.svg b/vendor/twbs/bootstrap-icons/icons/stickies-fill.svg
new file mode 100644
index 000000000..039c3b865
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stickies-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stickies-fill" viewBox="0 0 16 16">
+ <path d="M0 1.5V13a1 1 0 0 0 1 1V1.5a.5.5 0 0 1 .5-.5H14a1 1 0 0 0-1-1H1.5A1.5 1.5 0 0 0 0 1.5"/>
+ <path d="M3.5 2A1.5 1.5 0 0 0 2 3.5v11A1.5 1.5 0 0 0 3.5 16h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 16 9.586V3.5A1.5 1.5 0 0 0 14.5 2zm6 8.5a1 1 0 0 1 1-1h4.396a.25.25 0 0 1 .177.427l-5.146 5.146a.25.25 0 0 1-.427-.177z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stickies.svg b/vendor/twbs/bootstrap-icons/icons/stickies.svg
new file mode 100644
index 000000000..24e6492a3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stickies.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stickies" viewBox="0 0 16 16">
+ <path d="M1.5 0A1.5 1.5 0 0 0 0 1.5V13a1 1 0 0 0 1 1V1.5a.5.5 0 0 1 .5-.5H14a1 1 0 0 0-1-1z"/>
+ <path d="M3.5 2A1.5 1.5 0 0 0 2 3.5v11A1.5 1.5 0 0 0 3.5 16h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 16 9.586V3.5A1.5 1.5 0 0 0 14.5 2zM3 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .5.5V9h-4.5A1.5 1.5 0 0 0 9 10.5V15H3.5a.5.5 0 0 1-.5-.5zm7 11.293V10.5a.5.5 0 0 1 .5-.5h4.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sticky-fill.svg b/vendor/twbs/bootstrap-icons/icons/sticky-fill.svg
new file mode 100644
index 000000000..b36dcb125
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sticky-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sticky-fill" viewBox="0 0 16 16">
+ <path d="M2.5 1A1.5 1.5 0 0 0 1 2.5v11A1.5 1.5 0 0 0 2.5 15h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 15 8.586V2.5A1.5 1.5 0 0 0 13.5 1zm6 8.5a1 1 0 0 1 1-1h4.396a.25.25 0 0 1 .177.427l-5.146 5.146a.25.25 0 0 1-.427-.177z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sticky.svg b/vendor/twbs/bootstrap-icons/icons/sticky.svg
new file mode 100644
index 000000000..0d50e884f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sticky.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sticky" viewBox="0 0 16 16">
+ <path d="M2.5 1A1.5 1.5 0 0 0 1 2.5v11A1.5 1.5 0 0 0 2.5 15h6.086a1.5 1.5 0 0 0 1.06-.44l4.915-4.914A1.5 1.5 0 0 0 15 8.586V2.5A1.5 1.5 0 0 0 13.5 1zM2 2.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .5.5V8H9.5A1.5 1.5 0 0 0 8 9.5V14H2.5a.5.5 0 0 1-.5-.5zm7 11.293V9.5a.5.5 0 0 1 .5-.5h4.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stop-btn-fill.svg b/vendor/twbs/bootstrap-icons/icons/stop-btn-fill.svg
new file mode 100644
index 000000000..70e562e2e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stop-btn-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stop-btn-fill" viewBox="0 0 16 16">
+ <path d="M0 12V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2m6.5-7A1.5 1.5 0 0 0 5 6.5v3A1.5 1.5 0 0 0 6.5 11h3A1.5 1.5 0 0 0 11 9.5v-3A1.5 1.5 0 0 0 9.5 5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stop-btn.svg b/vendor/twbs/bootstrap-icons/icons/stop-btn.svg
new file mode 100644
index 000000000..26348d56d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stop-btn.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stop-btn" viewBox="0 0 16 16">
+ <path d="M6.5 5A1.5 1.5 0 0 0 5 6.5v3A1.5 1.5 0 0 0 6.5 11h3A1.5 1.5 0 0 0 11 9.5v-3A1.5 1.5 0 0 0 9.5 5z"/>
+ <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stop-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/stop-circle-fill.svg
new file mode 100644
index 000000000..141668efb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stop-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stop-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.5 5A1.5 1.5 0 0 0 5 6.5v3A1.5 1.5 0 0 0 6.5 11h3A1.5 1.5 0 0 0 11 9.5v-3A1.5 1.5 0 0 0 9.5 5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stop-circle.svg b/vendor/twbs/bootstrap-icons/icons/stop-circle.svg
new file mode 100644
index 000000000..3e1933a63
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stop-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stop-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M5 6.5A1.5 1.5 0 0 1 6.5 5h3A1.5 1.5 0 0 1 11 6.5v3A1.5 1.5 0 0 1 9.5 11h-3A1.5 1.5 0 0 1 5 9.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stop-fill.svg b/vendor/twbs/bootstrap-icons/icons/stop-fill.svg
new file mode 100644
index 000000000..ca1b9573d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stop-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stop-fill" viewBox="0 0 16 16">
+ <path d="M5 3.5h6A1.5 1.5 0 0 1 12.5 5v6a1.5 1.5 0 0 1-1.5 1.5H5A1.5 1.5 0 0 1 3.5 11V5A1.5 1.5 0 0 1 5 3.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stop.svg b/vendor/twbs/bootstrap-icons/icons/stop.svg
new file mode 100644
index 000000000..27f1fb6c6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stop.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stop" viewBox="0 0 16 16">
+ <path d="M3.5 5A1.5 1.5 0 0 1 5 3.5h6A1.5 1.5 0 0 1 12.5 5v6a1.5 1.5 0 0 1-1.5 1.5H5A1.5 1.5 0 0 1 3.5 11zM5 4.5a.5.5 0 0 0-.5.5v6a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 .5-.5V5a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stoplights-fill.svg b/vendor/twbs/bootstrap-icons/icons/stoplights-fill.svg
new file mode 100644
index 000000000..f0b2d767c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stoplights-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stoplights-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 0a2 2 0 0 0-2 2H2c.167.5.8 1.6 2 2v2H2c.167.5.8 1.6 2 2v2H2c.167.5.8 1.6 2 2v1a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-1c1.2-.4 1.833-1.5 2-2h-2V8c1.2-.4 1.833-1.5 2-2h-2V4c1.2-.4 1.833-1.5 2-2h-2a2 2 0 0 0-2-2zm3.5 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M8 13a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stoplights.svg b/vendor/twbs/bootstrap-icons/icons/stoplights.svg
new file mode 100644
index 000000000..6db3e122d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stoplights.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stoplights" viewBox="0 0 16 16">
+ <path d="M8 5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m0 4a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m1.5 2.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+ <path d="M4 2a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2h2c-.167.5-.8 1.6-2 2v2h2c-.167.5-.8 1.6-2 2v2h2c-.167.5-.8 1.6-2 2v1a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-1c-1.2-.4-1.833-1.5-2-2h2V8c-1.2-.4-1.833-1.5-2-2h2V4c-1.2-.4-1.833-1.5-2-2zm2-1a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stopwatch-fill.svg b/vendor/twbs/bootstrap-icons/icons/stopwatch-fill.svg
new file mode 100644
index 000000000..1228cf2b5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stopwatch-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stopwatch-fill" viewBox="0 0 16 16">
+ <path d="M6.5 0a.5.5 0 0 0 0 1H7v1.07A7.001 7.001 0 0 0 8 16a7 7 0 0 0 5.29-11.584l.013-.012.354-.354.353.354a.5.5 0 1 0 .707-.707l-1.414-1.415a.5.5 0 1 0-.707.707l.354.354-.354.354-.012.012A6.97 6.97 0 0 0 9 2.071V1h.5a.5.5 0 0 0 0-1zm2 5.6V9a.5.5 0 0 1-.5.5H4.5a.5.5 0 0 1 0-1h3V5.6a.5.5 0 1 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stopwatch.svg b/vendor/twbs/bootstrap-icons/icons/stopwatch.svg
new file mode 100644
index 000000000..aff8c338f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stopwatch.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stopwatch" viewBox="0 0 16 16">
+ <path d="M8.5 5.6a.5.5 0 1 0-1 0v2.9h-3a.5.5 0 0 0 0 1H8a.5.5 0 0 0 .5-.5z"/>
+ <path d="M6.5 1A.5.5 0 0 1 7 .5h2a.5.5 0 0 1 0 1v.57c1.36.196 2.594.78 3.584 1.64l.012-.013.354-.354-.354-.353a.5.5 0 0 1 .707-.708l1.414 1.415a.5.5 0 1 1-.707.707l-.353-.354-.354.354-.013.012A7 7 0 1 1 7 2.071V1.5a.5.5 0 0 1-.5-.5M8 3a6 6 0 1 0 .001 12A6 6 0 0 0 8 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/strava.svg b/vendor/twbs/bootstrap-icons/icons/strava.svg
new file mode 100644
index 000000000..0ed6bab82
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/strava.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-strava" viewBox="0 0 16 16">
+ <path d="M6.731 0 2 9.125h2.788L6.73 5.497l1.93 3.628h2.766zm4.694 9.125-1.372 2.756L8.66 9.125H6.547L10.053 16l3.484-6.875z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/stripe.svg b/vendor/twbs/bootstrap-icons/icons/stripe.svg
new file mode 100644
index 000000000..ba961a06b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/stripe.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stripe" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.226 5.385c-.584 0-.937.164-.937.593 0 .468.607.674 1.36.93 1.228.415 2.844.963 2.851 2.993C11.5 11.868 9.924 13 7.63 13a7.7 7.7 0 0 1-3.009-.626V9.758c.926.506 2.095.88 3.01.88.617 0 1.058-.165 1.058-.671 0-.518-.658-.755-1.453-1.041C6.026 8.49 4.5 7.94 4.5 6.11 4.5 4.165 5.988 3 8.226 3a7.3 7.3 0 0 1 2.734.505v2.583c-.838-.45-1.896-.703-2.734-.703"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/subscript.svg b/vendor/twbs/bootstrap-icons/icons/subscript.svg
new file mode 100644
index 000000000..51f5eea76
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/subscript.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-subscript" viewBox="0 0 16 16">
+ <path d="m3.266 12.496.96-2.853H7.76l.96 2.853H10L6.62 3H5.38L2 12.496zm2.748-8.063 1.419 4.23h-2.88l1.426-4.23zm6.132 7.203v-.075c0-.332.234-.618.619-.618.354 0 .618.256.618.58 0 .362-.271.649-.52.898l-1.788 1.832V15h3.59v-.958h-1.923v-.045l.973-1.04c.415-.438.867-.845.867-1.547 0-.8-.701-1.41-1.787-1.41-1.23 0-1.795.8-1.795 1.576v.06z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/substack.svg b/vendor/twbs/bootstrap-icons/icons/substack.svg
new file mode 100644
index 000000000..e54179ae2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/substack.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-substack" viewBox="0 0 16 16">
+ <path d="M15 3.604H1v1.891h14v-1.89ZM1 7.208V16l7-3.926L15 16V7.208zM15 0H1v1.89h14z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/subtract.svg b/vendor/twbs/bootstrap-icons/icons/subtract.svg
new file mode 100644
index 000000000..129c3d5fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/subtract.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-subtract" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suit-club-fill.svg b/vendor/twbs/bootstrap-icons/icons/suit-club-fill.svg
new file mode 100644
index 000000000..a787160d8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suit-club-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suit-club-fill" viewBox="0 0 16 16">
+ <path d="M11.5 12.5a3.5 3.5 0 0 1-2.684-1.254 20 20 0 0 0 1.582 2.907c.231.35-.02.847-.438.847H6.04c-.419 0-.67-.497-.438-.847a20 20 0 0 0 1.582-2.907 3.5 3.5 0 1 1-2.538-5.743 3.5 3.5 0 1 1 6.708 0A3.5 3.5 0 1 1 11.5 12.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suit-club.svg b/vendor/twbs/bootstrap-icons/icons/suit-club.svg
new file mode 100644
index 000000000..3fbf98b0a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suit-club.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suit-club" viewBox="0 0 16 16">
+ <path d="M8 1a3.25 3.25 0 0 0-3.25 3.25c0 .186 0 .29.016.41.014.12.045.27.12.527l.19.665-.692-.028a3.25 3.25 0 1 0 2.357 5.334.5.5 0 0 1 .844.518l-.003.005-.006.015-.024.055a22 22 0 0 1-.438.92 22 22 0 0 1-1.266 2.197c-.013.018-.02.05.001.09q.016.029.03.036A.04.04 0 0 0 5.9 15h4.2q.014 0 .022-.006a.1.1 0 0 0 .029-.035c.02-.04.014-.073.001-.091a23 23 0 0 1-1.704-3.117l-.024-.054-.006-.015-.002-.004a.5.5 0 0 1 .838-.524c.601.7 1.516 1.168 2.496 1.168a3.25 3.25 0 1 0-.139-6.498l-.699.03.199-.671c.14-.47.14-.745.139-.927V4.25A3.25 3.25 0 0 0 8 1m2.207 12.024c.225.405.487.848.78 1.294C11.437 15 10.975 16 10.1 16H5.9c-.876 0-1.338-1-.887-1.683.291-.442.552-.88.776-1.283a4.25 4.25 0 1 1-2.007-8.187l-.009-.064c-.023-.187-.023-.348-.023-.52V4.25a4.25 4.25 0 0 1 8.5 0c0 .14 0 .333-.04.596a4.25 4.25 0 0 1-.46 8.476 4.2 4.2 0 0 1-1.543-.298"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suit-diamond-fill.svg b/vendor/twbs/bootstrap-icons/icons/suit-diamond-fill.svg
new file mode 100644
index 000000000..67617d606
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suit-diamond-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suit-diamond-fill" viewBox="0 0 16 16">
+ <path d="M2.45 7.4 7.2 1.067a1 1 0 0 1 1.6 0L13.55 7.4a1 1 0 0 1 0 1.2L8.8 14.933a1 1 0 0 1-1.6 0L2.45 8.6a1 1 0 0 1 0-1.2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suit-diamond.svg b/vendor/twbs/bootstrap-icons/icons/suit-diamond.svg
new file mode 100644
index 000000000..79b54c1a3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suit-diamond.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suit-diamond" viewBox="0 0 16 16">
+ <path d="M8.384 1.226a.463.463 0 0 0-.768 0l-4.56 6.468a.54.54 0 0 0 0 .612l4.56 6.469a.463.463 0 0 0 .768 0l4.56-6.469a.54.54 0 0 0 0-.612zM6.848.613a1.39 1.39 0 0 1 2.304 0l4.56 6.468a1.61 1.61 0 0 1 0 1.838l-4.56 6.468a1.39 1.39 0 0 1-2.304 0L2.288 8.92a1.61 1.61 0 0 1 0-1.838z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suit-heart-fill.svg b/vendor/twbs/bootstrap-icons/icons/suit-heart-fill.svg
new file mode 100644
index 000000000..d09850c05
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suit-heart-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suit-heart-fill" viewBox="0 0 16 16">
+ <path d="M4 1c2.21 0 4 1.755 4 3.92C8 2.755 9.79 1 12 1s4 1.755 4 3.92c0 3.263-3.234 4.414-7.608 9.608a.513.513 0 0 1-.784 0C3.234 9.334 0 8.183 0 4.92 0 2.755 1.79 1 4 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suit-heart.svg b/vendor/twbs/bootstrap-icons/icons/suit-heart.svg
new file mode 100644
index 000000000..173b32ff0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suit-heart.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suit-heart" viewBox="0 0 16 16">
+ <path d="m8 6.236-.894-1.789c-.222-.443-.607-1.08-1.152-1.595C5.418 2.345 4.776 2 4 2 2.324 2 1 3.326 1 4.92c0 1.211.554 2.066 1.868 3.37.337.334.721.695 1.146 1.093C5.122 10.423 6.5 11.717 8 13.447c1.5-1.73 2.878-3.024 3.986-4.064.425-.398.81-.76 1.146-1.093C14.446 6.986 15 6.131 15 4.92 15 3.326 13.676 2 12 2c-.777 0-1.418.345-1.954.852-.545.515-.93 1.152-1.152 1.595zm.392 8.292a.513.513 0 0 1-.784 0c-1.601-1.902-3.05-3.262-4.243-4.381C1.3 8.208 0 6.989 0 4.92 0 2.755 1.79 1 4 1c1.6 0 2.719 1.05 3.404 2.008.26.365.458.716.596.992a7.6 7.6 0 0 1 .596-.992C9.281 2.049 10.4 1 12 1c2.21 0 4 1.755 4 3.92 0 2.069-1.3 3.288-3.365 5.227-1.193 1.12-2.642 2.48-4.243 4.38z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suit-spade-fill.svg b/vendor/twbs/bootstrap-icons/icons/suit-spade-fill.svg
new file mode 100644
index 000000000..cc465e5c5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suit-spade-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suit-spade-fill" viewBox="0 0 16 16">
+ <path d="M7.184 11.246A3.5 3.5 0 0 1 1 9c0-1.602 1.14-2.633 2.66-4.008C4.986 3.792 6.602 2.33 8 0c1.398 2.33 3.014 3.792 4.34 4.992C13.86 6.367 15 7.398 15 9a3.5 3.5 0 0 1-6.184 2.246 20 20 0 0 0 1.582 2.907c.231.35-.02.847-.438.847H6.04c-.419 0-.67-.497-.438-.847a20 20 0 0 0 1.582-2.907"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suit-spade.svg b/vendor/twbs/bootstrap-icons/icons/suit-spade.svg
new file mode 100644
index 000000000..7123c1013
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suit-spade.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suit-spade" viewBox="0 0 16 16">
+ <path d="M8 0a.5.5 0 0 1 .429.243c1.359 2.265 2.925 3.682 4.25 4.882q.144.128.282.255C14.308 6.604 15.5 7.747 15.5 9.5a4 4 0 0 1-5.406 3.746c.235.39.491.782.722 1.131.434.659-.01 1.623-.856 1.623H6.04c-.845 0-1.29-.964-.856-1.623.263-.397.51-.777.728-1.134A4 4 0 0 1 .5 9.5c0-1.753 1.192-2.896 2.539-4.12l.281-.255c1.326-1.2 2.892-2.617 4.251-4.882A.5.5 0 0 1 8 0M3.711 6.12C2.308 7.396 1.5 8.253 1.5 9.5a3 3 0 0 0 5.275 1.956.5.5 0 0 1 .868.43c-.094.438-.33.932-.611 1.428a29 29 0 0 1-1.013 1.614.03.03 0 0 0-.005.018.07.07 0 0 0 .024.054h3.924a.07.07 0 0 0 .024-.054.03.03 0 0 0-.005-.018c-.3-.455-.658-1.005-.96-1.535-.294-.514-.57-1.064-.664-1.507a.5.5 0 0 1 .868-.43A3 3 0 0 0 14.5 9.5c0-1.247-.808-2.104-2.211-3.38L12 5.86c-1.196-1.084-2.668-2.416-4-4.424-1.332 2.008-2.804 3.34-4 4.422l-.289.261z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suitcase-fill.svg b/vendor/twbs/bootstrap-icons/icons/suitcase-fill.svg
new file mode 100644
index 000000000..df6265139
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suitcase-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suitcase-fill" viewBox="0 0 16 16">
+ <path d="M6 .5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5V3h1.5A1.5 1.5 0 0 1 13 4.5v9a1.5 1.5 0 0 1-1.004 1.416A1 1 0 1 1 10 15H6a1 1 0 1 1-1.997-.084A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3H6zM9 1H7v2h2zM6 5.5a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0zm2.5 0a.5.5 0 0 0-1 0v7a.5.5 0 0 0 1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suitcase-lg-fill.svg b/vendor/twbs/bootstrap-icons/icons/suitcase-lg-fill.svg
new file mode 100644
index 000000000..cef1da9e5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suitcase-lg-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suitcase-lg-fill" viewBox="0 0 16 16">
+ <path d="M7 0a2 2 0 0 0-2 2H1.5A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14H2a.5.5 0 0 0 1 0h10a.5.5 0 0 0 1 0h.5a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2H11a2 2 0 0 0-2-2zM6 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1zM3 13V3h1v10zm9 0V3h1v10z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suitcase-lg.svg b/vendor/twbs/bootstrap-icons/icons/suitcase-lg.svg
new file mode 100644
index 000000000..ea447d2a9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suitcase-lg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suitcase-lg" viewBox="0 0 16 16">
+ <path d="M5 2a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2h3.5A1.5 1.5 0 0 1 16 3.5v9a1.5 1.5 0 0 1-1.5 1.5H14a.5.5 0 0 1-1 0H3a.5.5 0 0 1-1 0h-.5A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2zm1 0h4a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1M1.5 3a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5H3V3zM15 12.5v-9a.5.5 0 0 0-.5-.5H13v10h1.5a.5.5 0 0 0 .5-.5m-3 .5V3H4v10z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suitcase.svg b/vendor/twbs/bootstrap-icons/icons/suitcase.svg
new file mode 100644
index 000000000..65e619dad
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suitcase.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suitcase" viewBox="0 0 16 16">
+ <path d="M6 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 6 5m2 0a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5m2 0a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 10 5"/>
+ <path d="M6.5 0a.5.5 0 0 0-.5.5V3H5a2 2 0 0 0-2 2v8a2 2 0 0 0 1.031 1.75A1.003 1.003 0 0 0 5 16a1 1 0 0 0 1-1h4a1 1 0 1 0 1.969-.25A2 2 0 0 0 13 13V5a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-.5-.5zM9 3H7V1h2zm3 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suitcase2-fill.svg b/vendor/twbs/bootstrap-icons/icons/suitcase2-fill.svg
new file mode 100644
index 000000000..a2cb410e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suitcase2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suitcase2-fill" viewBox="0 0 16 16">
+ <path d="M6.5 0a.5.5 0 0 0-.5.5V3H4.5A1.5 1.5 0 0 0 3 4.5v9a1.5 1.5 0 0 0 1.003 1.416A1 1 0 1 0 6 15h4a1 1 0 1 0 1.996-.084A1.5 1.5 0 0 0 13 13.5v-9A1.5 1.5 0 0 0 11.5 3H10V.5a.5.5 0 0 0-.5-.5zM9 3H7V1h2zM4 7V6h8v1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/suitcase2.svg b/vendor/twbs/bootstrap-icons/icons/suitcase2.svg
new file mode 100644
index 000000000..e6ea53398
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/suitcase2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-suitcase2" viewBox="0 0 16 16">
+ <path d="M6.5 0a.5.5 0 0 0-.5.5V3H5a2 2 0 0 0-2 2v8a2 2 0 0 0 1.031 1.75A1.003 1.003 0 0 0 5 16a1 1 0 0 0 1-1h4a1 1 0 1 0 1.969-.25A2 2 0 0 0 13 13V5a2 2 0 0 0-2-2h-1V.5a.5.5 0 0 0-.5-.5zM9 3H7V1h2zm3 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7h8zM5 4h6a1 1 0 0 1 1 1v1H4V5a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sun-fill.svg b/vendor/twbs/bootstrap-icons/icons/sun-fill.svg
new file mode 100644
index 000000000..c83f69ab5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sun-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sun-fill" viewBox="0 0 16 16">
+ <path d="M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sun.svg b/vendor/twbs/bootstrap-icons/icons/sun.svg
new file mode 100644
index 000000000..3777f070f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sun.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sun" viewBox="0 0 16 16">
+ <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sunglasses.svg b/vendor/twbs/bootstrap-icons/icons/sunglasses.svg
new file mode 100644
index 000000000..1ff81f77d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sunglasses.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sunglasses" viewBox="0 0 16 16">
+ <path d="M3 5a2 2 0 0 0-2 2v.5H.5a.5.5 0 0 0 0 1H1V9a2 2 0 0 0 2 2h1a3 3 0 0 0 3-3 1 1 0 1 1 2 0 3 3 0 0 0 3 3h1a2 2 0 0 0 2-2v-.5h.5a.5.5 0 0 0 0-1H15V7a2 2 0 0 0-2-2h-2a2 2 0 0 0-1.888 1.338A2 2 0 0 0 8 6a2 2 0 0 0-1.112.338A2 2 0 0 0 5 5zm0 1h.941c.264 0 .348.356.112.474l-.457.228a2 2 0 0 0-.894.894l-.228.457C2.356 8.289 2 8.205 2 7.94V7a1 1 0 0 1 1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sunrise-fill.svg b/vendor/twbs/bootstrap-icons/icons/sunrise-fill.svg
new file mode 100644
index 000000000..c922d7c5d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sunrise-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sunrise-fill" viewBox="0 0 16 16">
+ <path d="M7.646 1.146a.5.5 0 0 1 .708 0l1.5 1.5a.5.5 0 0 1-.708.708L8.5 2.707V4.5a.5.5 0 0 1-1 0V2.707l-.646.647a.5.5 0 1 1-.708-.708zM2.343 4.343a.5.5 0 0 1 .707 0l1.414 1.414a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707m11.314 0a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0M11.709 11.5a4 4 0 1 0-7.418 0H.5a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sunrise.svg b/vendor/twbs/bootstrap-icons/icons/sunrise.svg
new file mode 100644
index 000000000..98adcfb43
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sunrise.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sunrise" viewBox="0 0 16 16">
+ <path d="M7.646 1.146a.5.5 0 0 1 .708 0l1.5 1.5a.5.5 0 0 1-.708.708L8.5 2.707V4.5a.5.5 0 0 1-1 0V2.707l-.646.647a.5.5 0 1 1-.708-.708zM2.343 4.343a.5.5 0 0 1 .707 0l1.414 1.414a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707m11.314 0a.5.5 0 0 1 0 .707l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0M8 7a3 3 0 0 1 2.599 4.5H5.4A3 3 0 0 1 8 7m3.71 4.5a4 4 0 1 0-7.418 0H.499a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sunset-fill.svg b/vendor/twbs/bootstrap-icons/icons/sunset-fill.svg
new file mode 100644
index 000000000..91a8d0ed6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sunset-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sunset-fill" viewBox="0 0 16 16">
+ <path d="M7.646 4.854a.5.5 0 0 0 .708 0l1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V1.5a.5.5 0 0 0-1 0v1.793l-.646-.647a.5.5 0 1 0-.708.708zm-5.303-.51a.5.5 0 0 1 .707 0l1.414 1.413a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707zm11.314 0a.5.5 0 0 1 0 .706l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zM11.709 11.5a4 4 0 1 0-7.418 0H.5a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/sunset.svg b/vendor/twbs/bootstrap-icons/icons/sunset.svg
new file mode 100644
index 000000000..e72d634fa
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/sunset.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sunset" viewBox="0 0 16 16">
+ <path d="M7.646 4.854a.5.5 0 0 0 .708 0l1.5-1.5a.5.5 0 0 0-.708-.708l-.646.647V1.5a.5.5 0 0 0-1 0v1.793l-.646-.647a.5.5 0 1 0-.708.708zm-5.303-.51a.5.5 0 0 1 .707 0l1.414 1.413a.5.5 0 0 1-.707.707L2.343 5.05a.5.5 0 0 1 0-.707zm11.314 0a.5.5 0 0 1 0 .706l-1.414 1.414a.5.5 0 1 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zM8 7a3 3 0 0 1 2.599 4.5H5.4A3 3 0 0 1 8 7m3.71 4.5a4 4 0 1 0-7.418 0H.499a.5.5 0 0 0 0 1h15a.5.5 0 0 0 0-1h-3.79zM0 10a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2A.5.5 0 0 1 0 10m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/superscript.svg b/vendor/twbs/bootstrap-icons/icons/superscript.svg
new file mode 100644
index 000000000..81543ae5b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/superscript.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-superscript" viewBox="0 0 16 16">
+ <path d="m4.266 12.496.96-2.853H8.76l.96 2.853H11L7.62 3H6.38L3 12.496zm2.748-8.063 1.419 4.23h-2.88l1.426-4.23zm5.132-1.797v-.075c0-.332.234-.618.619-.618.354 0 .618.256.618.58 0 .362-.271.649-.52.898l-1.788 1.832V6h3.59v-.958h-1.923v-.045l.973-1.04c.415-.438.867-.845.867-1.547 0-.8-.701-1.41-1.787-1.41C11.565 1 11 1.8 11 2.576v.06z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/symmetry-horizontal.svg b/vendor/twbs/bootstrap-icons/icons/symmetry-horizontal.svg
new file mode 100644
index 000000000..594735b06
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/symmetry-horizontal.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-symmetry-horizontal" viewBox="0 0 16 16">
+ <path d="M13.5 7a.5.5 0 0 0 .24-.939l-11-6A.5.5 0 0 0 2 .5v6a.5.5 0 0 0 .5.5zm.485 2.376a.5.5 0 0 1-.246.563l-11 6A.5.5 0 0 1 2 15.5v-6a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .485.376M11.539 10H3v4.658z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/symmetry-vertical.svg b/vendor/twbs/bootstrap-icons/icons/symmetry-vertical.svg
new file mode 100644
index 000000000..6907280da
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/symmetry-vertical.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-symmetry-vertical" viewBox="0 0 16 16">
+ <path d="M7 2.5a.5.5 0 0 0-.939-.24l-6 11A.5.5 0 0 0 .5 14h6a.5.5 0 0 0 .5-.5zm2.376-.484a.5.5 0 0 1 .563.245l6 11A.5.5 0 0 1 15.5 14h-6a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .376-.484M10 4.46V13h4.658z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/table.svg b/vendor/twbs/bootstrap-icons/icons/table.svg
new file mode 100644
index 000000000..8f705853c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/table.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-table" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 2h-4v3h4zm0 4h-4v3h4zm0 4h-4v3h3a1 1 0 0 0 1-1zm-5 3v-3H6v3zm-5 0v-3H1v2a1 1 0 0 0 1 1zm-4-4h4V8H1zm0-4h4V4H1zm5-3v3h4V4zm4 4H6v3h4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tablet-fill.svg b/vendor/twbs/bootstrap-icons/icons/tablet-fill.svg
new file mode 100644
index 000000000..0746ead93
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tablet-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tablet-fill" viewBox="0 0 16 16">
+ <path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm7 11a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tablet-landscape-fill.svg b/vendor/twbs/bootstrap-icons/icons/tablet-landscape-fill.svg
new file mode 100644
index 000000000..6290024c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tablet-landscape-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tablet-landscape-fill" viewBox="0 0 16 16">
+ <path d="M2 14a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2zm11-7a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tablet-landscape.svg b/vendor/twbs/bootstrap-icons/icons/tablet-landscape.svg
new file mode 100644
index 000000000..438d4d13c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tablet-landscape.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tablet-landscape" viewBox="0 0 16 16">
+ <path d="M1 4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm-1 8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2z"/>
+ <path d="M14 8a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tablet.svg b/vendor/twbs/bootstrap-icons/icons/tablet.svg
new file mode 100644
index 000000000..eebeee387
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tablet.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tablet" viewBox="0 0 16 16">
+ <path d="M12 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M8 14a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tag-fill.svg b/vendor/twbs/bootstrap-icons/icons/tag-fill.svg
new file mode 100644
index 000000000..6a95e2de9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tag-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tag-fill" viewBox="0 0 16 16">
+ <path d="M2 1a1 1 0 0 0-1 1v4.586a1 1 0 0 0 .293.707l7 7a1 1 0 0 0 1.414 0l4.586-4.586a1 1 0 0 0 0-1.414l-7-7A1 1 0 0 0 6.586 1zm4 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tag.svg b/vendor/twbs/bootstrap-icons/icons/tag.svg
new file mode 100644
index 000000000..01d19b53e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tag.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tag" viewBox="0 0 16 16">
+ <path d="M6 4.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m-1 0a.5.5 0 1 0-1 0 .5.5 0 0 0 1 0"/>
+ <path d="M2 1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 1 6.586V2a1 1 0 0 1 1-1m0 5.586 7 7L13.586 9l-7-7H2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tags-fill.svg b/vendor/twbs/bootstrap-icons/icons/tags-fill.svg
new file mode 100644
index 000000000..1673abbff
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tags-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tags-fill" viewBox="0 0 16 16">
+ <path d="M2 2a1 1 0 0 1 1-1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 2 6.586zm3.5 4a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/>
+ <path d="M1.293 7.793A1 1 0 0 1 1 7.086V2a1 1 0 0 0-1 1v4.586a1 1 0 0 0 .293.707l7 7a1 1 0 0 0 1.414 0l.043-.043z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tags.svg b/vendor/twbs/bootstrap-icons/icons/tags.svg
new file mode 100644
index 000000000..ade5519a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tags.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tags" viewBox="0 0 16 16">
+ <path d="M3 2v4.586l7 7L14.586 9l-7-7zM2 2a1 1 0 0 1 1-1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 2 6.586z"/>
+ <path d="M5.5 5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m0 1a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3M1 7.086a1 1 0 0 0 .293.707L8.75 15.25l-.043.043a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 0 7.586V3a1 1 0 0 1 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/taxi-front-fill.svg b/vendor/twbs/bootstrap-icons/icons/taxi-front-fill.svg
new file mode 100644
index 000000000..ef7f45b62
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/taxi-front-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-taxi-front-fill" viewBox="0 0 16 16">
+ <path d="M6 1a1 1 0 0 0-1 1v1h-.181A2.5 2.5 0 0 0 2.52 4.515l-.792 1.848a.8.8 0 0 1-.38.404c-.5.25-.855.715-.965 1.262L.05 9.708a2.5 2.5 0 0 0-.049.49v.413c0 .814.39 1.543 1 1.997V14.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.338c1.292.048 2.745.088 4 .088s2.708-.04 4-.088V14.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.892c.61-.454 1-1.183 1-1.997v-.413q0-.248-.049-.49l-.335-1.68a1.8 1.8 0 0 0-.964-1.261.8.8 0 0 1-.381-.404l-.792-1.848A2.5 2.5 0 0 0 11.181 3H11V2a1 1 0 0 0-1-1zM4.309 4h7.382a.5.5 0 0 1 .447.276l.956 1.913a.51.51 0 0 1-.497.731c-.91-.073-3.35-.17-4.597-.17s-3.688.097-4.597.17a.51.51 0 0 1-.497-.731l.956-1.913A.5.5 0 0 1 4.309 4M4 10a1 1 0 1 1-2 0 1 1 0 0 1 2 0m10 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-9 0a1 1 0 0 1 1-1h4a1 1 0 1 1 0 2H6a1 1 0 0 1-1-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/taxi-front.svg b/vendor/twbs/bootstrap-icons/icons/taxi-front.svg
new file mode 100644
index 000000000..1b4337ae7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/taxi-front.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-taxi-front" viewBox="0 0 16 16">
+ <path d="M4.862 5.276 3.906 7.19a.51.51 0 0 0 .497.731c.91-.073 2.35-.17 3.597-.17s2.688.097 3.597.17a.51.51 0 0 0 .497-.731l-.956-1.913A.5.5 0 0 0 10.691 5H5.309a.5.5 0 0 0-.447.276M4 10a1 1 0 1 1-2 0 1 1 0 0 1 2 0m10 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-9 0a1 1 0 0 1 1-1h4a1 1 0 1 1 0 2H6a1 1 0 0 1-1-1"/>
+ <path d="M6 1a1 1 0 0 0-1 1v1h-.181A2.5 2.5 0 0 0 2.52 4.515l-.792 1.848a.8.8 0 0 1-.38.404c-.5.25-.855.715-.965 1.262L.05 9.708a2.5 2.5 0 0 0-.049.49v.413c0 .814.39 1.543 1 1.997V14.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.338c1.292.048 2.745.088 4 .088s2.708-.04 4-.088V14.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-1.892c.61-.454 1-1.183 1-1.997v-.413q0-.248-.049-.49l-.335-1.68a1.8 1.8 0 0 0-.964-1.261.8.8 0 0 1-.381-.404l-.792-1.848A2.5 2.5 0 0 0 11.181 3H11V2a1 1 0 0 0-1-1zM4.819 4h6.362a1.5 1.5 0 0 1 1.379.91l.792 1.847a1.8 1.8 0 0 0 .853.904c.222.112.381.32.43.564l.336 1.679q.03.146.029.294v.413a1.48 1.48 0 0 1-1.408 1.484c-1.555.07-3.786.155-5.592.155s-4.037-.084-5.592-.155A1.48 1.48 0 0 1 1 10.611v-.413q0-.148.03-.294l.335-1.68a.8.8 0 0 1 .43-.563c.383-.19.685-.511.853-.904l.792-1.848A1.5 1.5 0 0 1 4.82 4Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telegram.svg b/vendor/twbs/bootstrap-icons/icons/telegram.svg
new file mode 100644
index 000000000..d26026677
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telegram.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telegram" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.287 5.906q-1.168.486-4.666 2.01-.567.225-.595.442c-.03.243.275.339.69.47l.175.055c.408.133.958.288 1.243.294q.39.01.868-.32 3.269-2.206 3.374-2.23c.05-.012.12-.026.166.016s.042.12.037.141c-.03.129-1.227 1.241-1.846 1.817-.193.18-.33.307-.358.336a8 8 0 0 1-.188.186c-.38.366-.664.64.015 1.088.327.216.589.393.85.571.284.194.568.387.936.629q.14.092.27.187c.331.236.63.448.997.414.214-.02.435-.22.547-.82.265-1.417.786-4.486.906-5.751a1.4 1.4 0 0 0-.013-.315.34.34 0 0 0-.114-.217.53.53 0 0 0-.31-.093c-.3.005-.763.166-2.984 1.09"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-fill.svg b/vendor/twbs/bootstrap-icons/icons/telephone-fill.svg
new file mode 100644
index 000000000..2e9de2e0e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-forward-fill.svg b/vendor/twbs/bootstrap-icons/icons/telephone-forward-fill.svg
new file mode 100644
index 000000000..26fc35f6d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-forward-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-forward-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zm10.761.135a.5.5 0 0 1 .708 0l2.5 2.5a.5.5 0 0 1 0 .708l-2.5 2.5a.5.5 0 0 1-.708-.708L14.293 4H9.5a.5.5 0 0 1 0-1h4.793l-1.647-1.646a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-forward.svg b/vendor/twbs/bootstrap-icons/icons/telephone-forward.svg
new file mode 100644
index 000000000..08c07bd8b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-forward.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-forward" viewBox="0 0 16 16">
+ <path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zm10.762.135a.5.5 0 0 1 .708 0l2.5 2.5a.5.5 0 0 1 0 .708l-2.5 2.5a.5.5 0 0 1-.708-.708L14.293 4H9.5a.5.5 0 0 1 0-1h4.793l-1.647-1.646a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-inbound-fill.svg b/vendor/twbs/bootstrap-icons/icons/telephone-inbound-fill.svg
new file mode 100644
index 000000000..85434d075
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-inbound-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-inbound-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zM15.854.146a.5.5 0 0 1 0 .708L11.707 5H14.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 1 0v2.793L15.146.146a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-inbound.svg b/vendor/twbs/bootstrap-icons/icons/telephone-inbound.svg
new file mode 100644
index 000000000..8ec20a64c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-inbound.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-inbound" viewBox="0 0 16 16">
+ <path d="M15.854.146a.5.5 0 0 1 0 .708L11.707 5H14.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 1 0v2.793L15.146.146a.5.5 0 0 1 .708 0m-12.2 1.182a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-minus-fill.svg b/vendor/twbs/bootstrap-icons/icons/telephone-minus-fill.svg
new file mode 100644
index 000000000..7b2fe9d3c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-minus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-minus-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zM10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-minus.svg b/vendor/twbs/bootstrap-icons/icons/telephone-minus.svg
new file mode 100644
index 000000000..6ebc50ed8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-minus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-minus" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5"/>
+ <path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-outbound-fill.svg b/vendor/twbs/bootstrap-icons/icons/telephone-outbound-fill.svg
new file mode 100644
index 000000000..0a18bda45
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-outbound-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-outbound-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zM11 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-4.146 4.147a.5.5 0 0 1-.708-.708L14.293 1H11.5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-outbound.svg b/vendor/twbs/bootstrap-icons/icons/telephone-outbound.svg
new file mode 100644
index 000000000..566eb4656
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-outbound.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-outbound" viewBox="0 0 16 16">
+ <path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zM11 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V1.707l-4.146 4.147a.5.5 0 0 1-.708-.708L14.293 1H11.5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-plus-fill.svg b/vendor/twbs/bootstrap-icons/icons/telephone-plus-fill.svg
new file mode 100644
index 000000000..b02874f85
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-plus-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-plus-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zM12.5 1a.5.5 0 0 1 .5.5V3h1.5a.5.5 0 0 1 0 1H13v1.5a.5.5 0 0 1-1 0V4h-1.5a.5.5 0 0 1 0-1H12V1.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-plus.svg b/vendor/twbs/bootstrap-icons/icons/telephone-plus.svg
new file mode 100644
index 000000000..787e0c697
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-plus" viewBox="0 0 16 16">
+ <path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/>
+ <path fill-rule="evenodd" d="M12.5 1a.5.5 0 0 1 .5.5V3h1.5a.5.5 0 0 1 0 1H13v1.5a.5.5 0 0 1-1 0V4h-1.5a.5.5 0 0 1 0-1H12V1.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-x-fill.svg b/vendor/twbs/bootstrap-icons/icons/telephone-x-fill.svg
new file mode 100644
index 000000000..5410e1644
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-x-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-x-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1.885.511a1.745 1.745 0 0 1 2.61.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877zm9.261 1.135a.5.5 0 0 1 .708 0L13 2.793l1.146-1.147a.5.5 0 0 1 .708.708L13.707 3.5l1.147 1.146a.5.5 0 0 1-.708.708L13 4.207l-1.146 1.147a.5.5 0 0 1-.708-.708L12.293 3.5l-1.147-1.146a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone-x.svg b/vendor/twbs/bootstrap-icons/icons/telephone-x.svg
new file mode 100644
index 000000000..3f483a169
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone-x" viewBox="0 0 16 16">
+ <path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/>
+ <path fill-rule="evenodd" d="M11.146 1.646a.5.5 0 0 1 .708 0L13 2.793l1.146-1.147a.5.5 0 0 1 .708.708L13.707 3.5l1.147 1.146a.5.5 0 0 1-.708.708L13 4.207l-1.146 1.147a.5.5 0 0 1-.708-.708L12.293 3.5l-1.147-1.146a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/telephone.svg b/vendor/twbs/bootstrap-icons/icons/telephone.svg
new file mode 100644
index 000000000..679e8a9e9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/telephone.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone" viewBox="0 0 16 16">
+ <path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.6 17.6 0 0 0 4.168 6.608 17.6 17.6 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.68.68 0 0 0-.58-.122l-2.19.547a1.75 1.75 0 0 1-1.657-.459L5.482 8.062a1.75 1.75 0 0 1-.46-1.657l.548-2.19a.68.68 0 0 0-.122-.58zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.68.68 0 0 0 .178.643l2.457 2.457a.68.68 0 0 0 .644.178l2.189-.547a1.75 1.75 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.6 18.6 0 0 1-7.01-4.42 18.6 18.6 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tencent-qq.svg b/vendor/twbs/bootstrap-icons/icons/tencent-qq.svg
new file mode 100644
index 000000000..0d5cd2333
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tencent-qq.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tencent-qq" viewBox="0 0 16 16">
+ <path d="M6.048 3.323c.022.277-.13.523-.338.55-.21.026-.397-.176-.419-.453s.13-.523.338-.55c.21-.026.397.176.42.453Zm2.265-.24c-.603-.146-.894.256-.936.333-.027.048-.008.117.037.15.045.035.092.025.119-.003.361-.39.751-.172.829-.129l.011.007c.053.024.147.028.193-.098.023-.063.017-.11-.006-.142-.016-.023-.089-.08-.247-.118"/>
+ <path d="M11.727 6.719c0-.022.01-.375.01-.557 0-3.07-1.45-6.156-5.015-6.156S1.708 3.092 1.708 6.162c0 .182.01.535.01.557l-.72 1.795a26 26 0 0 0-.534 1.508c-.68 2.187-.46 3.093-.292 3.113.36.044 1.401-1.647 1.401-1.647 0 .979.504 2.256 1.594 3.179-.408.126-.907.319-1.228.556-.29.213-.253.43-.201.518.228.386 3.92.246 4.985.126 1.065.12 4.756.26 4.984-.126.052-.088.088-.305-.2-.518-.322-.237-.822-.43-1.23-.557 1.09-.922 1.594-2.2 1.594-3.178 0 0 1.041 1.69 1.401 1.647.168-.02.388-.926-.292-3.113a26 26 0 0 0-.534-1.508l-.72-1.795ZM9.773 5.53a.1.1 0 0 1-.009.096c-.109.159-1.554.943-3.033.943h-.017c-1.48 0-2.925-.784-3.034-.943a.1.1 0 0 1-.018-.055q0-.022.01-.04c.13-.287 1.43-.606 3.042-.606h.017c1.611 0 2.912.319 3.042.605m-4.32-.989c-.483.022-.896-.529-.922-1.229s.344-1.286.828-1.308c.483-.022.896.529.922 1.23.027.7-.344 1.286-.827 1.307Zm2.538 0c-.484-.022-.854-.607-.828-1.308.027-.7.44-1.25.923-1.23.483.023.853.608.827 1.309-.026.7-.439 1.251-.922 1.23ZM2.928 8.99q.32.063.639.117v2.336s1.104.222 2.21.068V9.363q.49.027.937.023h.017c1.117.013 2.474-.136 3.786-.396.097.622.151 1.386.097 2.284-.146 2.45-1.6 3.99-3.846 4.012h-.091c-2.245-.023-3.7-1.562-3.846-4.011-.054-.9 0-1.663.097-2.285"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/terminal-dash.svg b/vendor/twbs/bootstrap-icons/icons/terminal-dash.svg
new file mode 100644
index 000000000..9f46e8ea8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/terminal-dash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-terminal-dash" viewBox="0 0 16 16">
+ <path d="M2 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V4a1 1 0 0 0-1-1z"/>
+ <path d="M3.146 5.146a.5.5 0 0 1 .708 0L5.177 6.47a.75.75 0 0 1 0 1.06L3.854 8.854a.5.5 0 1 1-.708-.708L4.293 7 3.146 5.854a.5.5 0 0 1 0-.708M5.5 9a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/terminal-fill.svg b/vendor/twbs/bootstrap-icons/icons/terminal-fill.svg
new file mode 100644
index 000000000..fabd07544
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/terminal-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-terminal-fill" viewBox="0 0 16 16">
+ <path d="M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm9.5 5.5h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1m-6.354-.354a.5.5 0 1 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2a.5.5 0 1 0-.708.708L4.793 6.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/terminal-plus.svg b/vendor/twbs/bootstrap-icons/icons/terminal-plus.svg
new file mode 100644
index 000000000..32c643263
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/terminal-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-terminal-plus" viewBox="0 0 16 16">
+ <path d="M2 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V4a1 1 0 0 0-1-1z"/>
+ <path d="M3.146 5.146a.5.5 0 0 1 .708 0L5.177 6.47a.75.75 0 0 1 0 1.06L3.854 8.854a.5.5 0 1 1-.708-.708L4.293 7 3.146 5.854a.5.5 0 0 1 0-.708M5.5 9a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/terminal-split.svg b/vendor/twbs/bootstrap-icons/icons/terminal-split.svg
new file mode 100644
index 000000000..a378c379e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/terminal-split.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-terminal-split" viewBox="0 0 16 16">
+ <path d="M2.146 3.146a.5.5 0 0 1 .708 0l.823.824a.75.75 0 0 1 0 1.06l-.823.824a.5.5 0 1 1-.708-.708l.647-.646-.647-.646a.5.5 0 0 1 0-.708M4 6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1A.5.5 0 0 1 4 6m6.354-2.854a.5.5 0 0 0-.708.708l.647.646-.647.646a.5.5 0 1 0 .708.708l.823-.824a.75.75 0 0 0 0-1.06zM12 5.5a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1z"/>
+ <path d="M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h5.5V2zm6.5 0v12H14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/terminal-x.svg b/vendor/twbs/bootstrap-icons/icons/terminal-x.svg
new file mode 100644
index 000000000..aa59e7f42
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/terminal-x.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-terminal-x" viewBox="0 0 16 16">
+ <path d="M2 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V4a1 1 0 0 0-1-1z"/>
+ <path d="M3.146 5.146a.5.5 0 0 1 .708 0L5.177 6.47a.75.75 0 0 1 0 1.06L3.854 8.854a.5.5 0 1 1-.708-.708L4.293 7 3.146 5.854a.5.5 0 0 1 0-.708M5.5 9a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/terminal.svg b/vendor/twbs/bootstrap-icons/icons/terminal.svg
new file mode 100644
index 000000000..44aef959f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/terminal.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-terminal" viewBox="0 0 16 16">
+ <path d="M6 9a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3A.5.5 0 0 1 6 9M3.854 4.146a.5.5 0 1 0-.708.708L4.793 6.5 3.146 8.146a.5.5 0 1 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
+ <path d="M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/text-center.svg b/vendor/twbs/bootstrap-icons/icons/text-center.svg
new file mode 100644
index 000000000..12d9e297c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/text-center.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-text-center" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/text-indent-left.svg b/vendor/twbs/bootstrap-icons/icons/text-indent-left.svg
new file mode 100644
index 000000000..5a607af0c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/text-indent-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-text-indent-left" viewBox="0 0 16 16">
+ <path d="M2 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m.646 2.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L4.293 8 2.646 6.354a.5.5 0 0 1 0-.708M7 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0 3a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m-5 3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/text-indent-right.svg b/vendor/twbs/bootstrap-icons/icons/text-indent-right.svg
new file mode 100644
index 000000000..de91d9e45
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/text-indent-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-text-indent-right" viewBox="0 0 16 16">
+ <path d="M2 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m10.646 2.146a.5.5 0 0 1 .708.708L11.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zM2 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0 3a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0 3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/text-left.svg b/vendor/twbs/bootstrap-icons/icons/text-left.svg
new file mode 100644
index 000000000..36ae0d376
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/text-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-text-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/text-paragraph.svg b/vendor/twbs/bootstrap-icons/icons/text-paragraph.svg
new file mode 100644
index 000000000..035a1c80d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/text-paragraph.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-text-paragraph" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m4-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/text-right.svg b/vendor/twbs/bootstrap-icons/icons/text-right.svg
new file mode 100644
index 000000000..98178e754
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/text-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-text-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m4-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/text-wrap.svg b/vendor/twbs/bootstrap-icons/icons/text-wrap.svg
new file mode 100644
index 000000000..4c732d6cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/text-wrap.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-text-wrap" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M2 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5h9a2.5 2.5 0 0 1 0 5h-1.293l.647.646a.5.5 0 0 1-.708.708l-1.5-1.5a.5.5 0 0 1 0-.708l1.5-1.5a.5.5 0 0 1 .708.708l-.647.646H11.5a1.5 1.5 0 0 0 0-3h-9a.5.5 0 0 1-.5-.5m0 4a.5.5 0 0 1 .5-.5H7a.5.5 0 0 1 0 1H2.5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/textarea-resize.svg b/vendor/twbs/bootstrap-icons/icons/textarea-resize.svg
new file mode 100644
index 000000000..64013203b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/textarea-resize.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-textarea-resize" viewBox="0 0 16 16">
+ <path d="M0 4.5A2.5 2.5 0 0 1 2.5 2h11A2.5 2.5 0 0 1 16 4.5v7a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 11.5zM2.5 3A1.5 1.5 0 0 0 1 4.5v7A1.5 1.5 0 0 0 2.5 13h11a1.5 1.5 0 0 0 1.5-1.5v-7A1.5 1.5 0 0 0 13.5 3zm10.854 4.646a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708l3-3a.5.5 0 0 1 .708 0m0 2.5a.5.5 0 0 1 0 .708l-.5.5a.5.5 0 0 1-.708-.708l.5-.5a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/textarea-t.svg b/vendor/twbs/bootstrap-icons/icons/textarea-t.svg
new file mode 100644
index 000000000..145cbb77a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/textarea-t.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-textarea-t" viewBox="0 0 16 16">
+ <path d="M1.5 2.5A1.5 1.5 0 0 1 3 1h10a1.5 1.5 0 0 1 1.5 1.5v3.563a2 2 0 0 1 0 3.874V13.5A1.5 1.5 0 0 1 13 15H3a1.5 1.5 0 0 1-1.5-1.5V9.937a2 2 0 0 1 0-3.874zm1 3.563a2 2 0 0 1 0 3.874V13.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V9.937a2 2 0 0 1 0-3.874V2.5A.5.5 0 0 0 13 2H3a.5.5 0 0 0-.5.5zM2 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2m12 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/>
+ <path d="M11.434 4H4.566L4.5 5.994h.386c.21-1.252.612-1.446 2.173-1.495l.343-.011v6.343c0 .537-.116.665-1.049.748V12h3.294v-.421c-.938-.083-1.054-.21-1.054-.748V4.488l.348.01c1.56.05 1.963.244 2.173 1.496h.386z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/textarea.svg b/vendor/twbs/bootstrap-icons/icons/textarea.svg
new file mode 100644
index 000000000..176ca258a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/textarea.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-textarea" viewBox="0 0 16 16">
+ <path d="M1.5 2.5A1.5 1.5 0 0 1 3 1h10a1.5 1.5 0 0 1 1.5 1.5v3.563a2 2 0 0 1 0 3.874V13.5A1.5 1.5 0 0 1 13 15H3a1.5 1.5 0 0 1-1.5-1.5V9.937a2 2 0 0 1 0-3.874zm1 3.563a2 2 0 0 1 0 3.874V13.5a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V9.937a2 2 0 0 1 0-3.874V2.5A.5.5 0 0 0 13 2H3a.5.5 0 0 0-.5.5zM2 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2m12 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/thermometer-half.svg b/vendor/twbs/bootstrap-icons/icons/thermometer-half.svg
new file mode 100644
index 000000000..018eab1fd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/thermometer-half.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-thermometer-half" viewBox="0 0 16 16">
+ <path d="M9.5 12.5a1.5 1.5 0 1 1-2-1.415V6.5a.5.5 0 0 1 1 0v4.585a1.5 1.5 0 0 1 1 1.415"/>
+ <path d="M5.5 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0zM8 1a1.5 1.5 0 0 0-1.5 1.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0l-.166-.15V2.5A1.5 1.5 0 0 0 8 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/thermometer-high.svg b/vendor/twbs/bootstrap-icons/icons/thermometer-high.svg
new file mode 100644
index 000000000..22e77d103
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/thermometer-high.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-thermometer-high" viewBox="0 0 16 16">
+ <path d="M9.5 12.5a1.5 1.5 0 1 1-2-1.415V2.5a.5.5 0 0 1 1 0v8.585a1.5 1.5 0 0 1 1 1.415"/>
+ <path d="M5.5 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0zM8 1a1.5 1.5 0 0 0-1.5 1.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0l-.166-.15V2.5A1.5 1.5 0 0 0 8 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/thermometer-low.svg b/vendor/twbs/bootstrap-icons/icons/thermometer-low.svg
new file mode 100644
index 000000000..1f0f5e18f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/thermometer-low.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-thermometer-low" viewBox="0 0 16 16">
+ <path d="M9.5 12.5a1.5 1.5 0 1 1-2-1.415V9.5a.5.5 0 0 1 1 0v1.585a1.5 1.5 0 0 1 1 1.415"/>
+ <path d="M5.5 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0zM8 1a1.5 1.5 0 0 0-1.5 1.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0l-.166-.15V2.5A1.5 1.5 0 0 0 8 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/thermometer-snow.svg b/vendor/twbs/bootstrap-icons/icons/thermometer-snow.svg
new file mode 100644
index 000000000..df7c1d19c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/thermometer-snow.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-thermometer-snow" viewBox="0 0 16 16">
+ <path d="M5 12.5a1.5 1.5 0 1 1-2-1.415V9.5a.5.5 0 0 1 1 0v1.585A1.5 1.5 0 0 1 5 12.5"/>
+ <path d="M1 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0zM3.5 1A1.5 1.5 0 0 0 2 2.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0L5 10.486V2.5A1.5 1.5 0 0 0 3.5 1m5 1a.5.5 0 0 1 .5.5v1.293l.646-.647a.5.5 0 0 1 .708.708L9 5.207v1.927l1.669-.963.495-1.85a.5.5 0 1 1 .966.26l-.237.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.884.237a.5.5 0 1 1-.26.966l-1.848-.495L9.5 8l1.669.963 1.849-.495a.5.5 0 1 1 .258.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.237.883a.5.5 0 1 1-.966.258L10.67 9.83 9 8.866v1.927l1.354 1.353a.5.5 0 0 1-.708.708L9 12.207V13.5a.5.5 0 0 1-1 0v-11a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/thermometer-sun.svg b/vendor/twbs/bootstrap-icons/icons/thermometer-sun.svg
new file mode 100644
index 000000000..c453dee77
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/thermometer-sun.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-thermometer-sun" viewBox="0 0 16 16">
+ <path d="M5 12.5a1.5 1.5 0 1 1-2-1.415V2.5a.5.5 0 0 1 1 0v8.585A1.5 1.5 0 0 1 5 12.5"/>
+ <path d="M1 2.5a2.5 2.5 0 0 1 5 0v7.55a3.5 3.5 0 1 1-5 0zM3.5 1A1.5 1.5 0 0 0 2 2.5v7.987l-.167.15a2.5 2.5 0 1 0 3.333 0L5 10.486V2.5A1.5 1.5 0 0 0 3.5 1m5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0v-1a.5.5 0 0 1 .5-.5m4.243 1.757a.5.5 0 0 1 0 .707l-.707.708a.5.5 0 1 1-.708-.708l.708-.707a.5.5 0 0 1 .707 0M8 5.5a.5.5 0 0 1 .5-.5 3 3 0 1 1 0 6 .5.5 0 0 1 0-1 2 2 0 0 0 0-4 .5.5 0 0 1-.5-.5M12.5 8a.5.5 0 0 1 .5-.5h1a.5.5 0 1 1 0 1h-1a.5.5 0 0 1-.5-.5m-1.172 2.828a.5.5 0 0 1 .708 0l.707.708a.5.5 0 0 1-.707.707l-.708-.707a.5.5 0 0 1 0-.708M8.5 12a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0v-1a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/thermometer.svg b/vendor/twbs/bootstrap-icons/icons/thermometer.svg
new file mode 100644
index 000000000..8a5529bc0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/thermometer.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-thermometer" viewBox="0 0 16 16">
+ <path d="M8 14a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/>
+ <path d="M8 0a2.5 2.5 0 0 0-2.5 2.5v7.55a3.5 3.5 0 1 0 5 0V2.5A2.5 2.5 0 0 0 8 0M6.5 2.5a1.5 1.5 0 1 1 3 0v7.987l.167.15a2.5 2.5 0 1 1-3.333 0l.166-.15z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/threads-fill.svg b/vendor/twbs/bootstrap-icons/icons/threads-fill.svg
new file mode 100644
index 000000000..b19666ddd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/threads-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-threads-fill" viewBox="0 0 16 16">
+ <path d="M6.81 9.204c0-.41.197-1.062 1.727-1.062.469 0 .758.034 1.146.121-.124 1.606-.91 1.818-1.674 1.818-.418 0-1.2-.218-1.2-.877Z"/>
+ <path d="M2.59 16h10.82A2.59 2.59 0 0 0 16 13.41V2.59A2.59 2.59 0 0 0 13.41 0H2.59A2.59 2.59 0 0 0 0 2.59v10.82A2.59 2.59 0 0 0 2.59 16M5.866 5.91c.567-.81 1.315-1.126 2.35-1.126.73 0 1.351.246 1.795.711.443.466.696 1.132.754 1.983q.368.154.678.363c.832.559 1.29 1.395 1.29 2.353 0 2.037-1.67 3.806-4.692 3.806-2.595 0-5.291-1.51-5.291-6.004C2.75 3.526 5.361 2 8.033 2c1.234 0 4.129.182 5.217 3.777l-1.02.264c-.842-2.56-2.607-2.968-4.224-2.968-2.675 0-4.187 1.628-4.187 5.093 0 3.107 1.69 4.757 4.222 4.757 2.083 0 3.636-1.082 3.636-2.667 0-1.079-.906-1.595-.953-1.595-.177.925-.651 2.482-2.733 2.482-1.213 0-2.26-.838-2.26-1.936 0-1.568 1.488-2.136 2.663-2.136.44 0 .97.03 1.247.086 0-.478-.404-1.296-1.426-1.296-.911 0-1.16.288-1.45.624l-.024.027c-.202-.135-.875-.601-.875-.601Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/threads.svg b/vendor/twbs/bootstrap-icons/icons/threads.svg
new file mode 100644
index 000000000..13c9e7a61
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/threads.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-threads" viewBox="0 0 16 16">
+ <path d="M6.321 6.016c-.27-.18-1.166-.802-1.166-.802.756-1.081 1.753-1.502 3.132-1.502.975 0 1.803.327 2.394.948s.928 1.509 1.005 2.644q.492.207.905.484c1.109.745 1.719 1.86 1.719 3.137 0 2.716-2.226 5.075-6.256 5.075C4.594 16 1 13.987 1 7.994 1 2.034 4.482 0 8.044 0 9.69 0 13.55.243 15 5.036l-1.36.353C12.516 1.974 10.163 1.43 8.006 1.43c-3.565 0-5.582 2.171-5.582 6.79 0 4.143 2.254 6.343 5.63 6.343 2.777 0 4.847-1.443 4.847-3.556 0-1.438-1.208-2.127-1.27-2.127-.236 1.234-.868 3.31-3.644 3.31-1.618 0-3.013-1.118-3.013-2.582 0-2.09 1.984-2.847 3.55-2.847.586 0 1.294.04 1.663.114 0-.637-.54-1.728-1.9-1.728-1.25 0-1.566.405-1.967.868ZM8.716 8.19c-2.04 0-2.304.87-2.304 1.416 0 .878 1.043 1.168 1.6 1.168 1.02 0 2.067-.282 2.232-2.423a6.2 6.2 0 0 0-1.528-.161"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/three-dots-vertical.svg b/vendor/twbs/bootstrap-icons/icons/three-dots-vertical.svg
new file mode 100644
index 000000000..f5ef7d475
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/three-dots-vertical.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-three-dots-vertical" viewBox="0 0 16 16">
+ <path d="M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/three-dots.svg b/vendor/twbs/bootstrap-icons/icons/three-dots.svg
new file mode 100644
index 000000000..4706f52a9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/three-dots.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-three-dots" viewBox="0 0 16 16">
+ <path d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/thunderbolt-fill.svg b/vendor/twbs/bootstrap-icons/icons/thunderbolt-fill.svg
new file mode 100644
index 000000000..1faea430b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/thunderbolt-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-thunderbolt-fill" viewBox="0 0 16 16">
+ <path d="M1 3a1 1 0 0 0-1 1v7.293A1 1 0 0 0 .293 12L2 13.707a1 1 0 0 0 .707.293h10.586a1 1 0 0 0 .707-.293L15.707 12a1 1 0 0 0 .293-.707V4a1 1 0 0 0-1-1zm2.5 3h9a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/thunderbolt.svg b/vendor/twbs/bootstrap-icons/icons/thunderbolt.svg
new file mode 100644
index 000000000..365565939
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/thunderbolt.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-thunderbolt" viewBox="0 0 16 16">
+ <path d="M3.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M1 3a1 1 0 0 0-1 1v7.293A1 1 0 0 0 .293 12L2 13.707a1 1 0 0 0 .707.293h10.586a1 1 0 0 0 .707-.293L15.707 12a1 1 0 0 0 .293-.707V4a1 1 0 0 0-1-1zm0 1h14v7.293L13.293 13H2.707L1 11.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ticket-detailed-fill.svg b/vendor/twbs/bootstrap-icons/icons/ticket-detailed-fill.svg
new file mode 100644
index 000000000..cd7a3a79d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ticket-detailed-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ticket-detailed-fill" viewBox="0 0 16 16">
+ <path d="M0 4.5A1.5 1.5 0 0 1 1.5 3h13A1.5 1.5 0 0 1 16 4.5V6a.5.5 0 0 1-.5.5 1.5 1.5 0 0 0 0 3 .5.5 0 0 1 .5.5v1.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5V10a.5.5 0 0 1 .5-.5 1.5 1.5 0 1 0 0-3A.5.5 0 0 1 0 6zm4 1a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5m0 5a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 0-1h-7a.5.5 0 0 0-.5.5M4 8a1 1 0 0 0 1 1h6a1 1 0 1 0 0-2H5a1 1 0 0 0-1 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ticket-detailed.svg b/vendor/twbs/bootstrap-icons/icons/ticket-detailed.svg
new file mode 100644
index 000000000..cf32e881f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ticket-detailed.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ticket-detailed" viewBox="0 0 16 16">
+ <path d="M4 5.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0 5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5M5 7a1 1 0 0 0 0 2h6a1 1 0 1 0 0-2z"/>
+ <path d="M0 4.5A1.5 1.5 0 0 1 1.5 3h13A1.5 1.5 0 0 1 16 4.5V6a.5.5 0 0 1-.5.5 1.5 1.5 0 0 0 0 3 .5.5 0 0 1 .5.5v1.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5V10a.5.5 0 0 1 .5-.5 1.5 1.5 0 1 0 0-3A.5.5 0 0 1 0 6zM1.5 4a.5.5 0 0 0-.5.5v1.05a2.5 2.5 0 0 1 0 4.9v1.05a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-1.05a2.5 2.5 0 0 1 0-4.9V4.5a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ticket-fill.svg b/vendor/twbs/bootstrap-icons/icons/ticket-fill.svg
new file mode 100644
index 000000000..01e910875
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ticket-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ticket-fill" viewBox="0 0 16 16">
+ <path d="M1.5 3A1.5 1.5 0 0 0 0 4.5V6a.5.5 0 0 0 .5.5 1.5 1.5 0 1 1 0 3 .5.5 0 0 0-.5.5v1.5A1.5 1.5 0 0 0 1.5 13h13a1.5 1.5 0 0 0 1.5-1.5V10a.5.5 0 0 0-.5-.5 1.5 1.5 0 0 1 0-3A.5.5 0 0 0 16 6V4.5A1.5 1.5 0 0 0 14.5 3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ticket-perforated-fill.svg b/vendor/twbs/bootstrap-icons/icons/ticket-perforated-fill.svg
new file mode 100644
index 000000000..38c18dcef
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ticket-perforated-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ticket-perforated-fill" viewBox="0 0 16 16">
+ <path d="M0 4.5A1.5 1.5 0 0 1 1.5 3h13A1.5 1.5 0 0 1 16 4.5V6a.5.5 0 0 1-.5.5 1.5 1.5 0 0 0 0 3 .5.5 0 0 1 .5.5v1.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5V10a.5.5 0 0 1 .5-.5 1.5 1.5 0 1 0 0-3A.5.5 0 0 1 0 6zm4-1v1h1v-1zm1 3v-1H4v1zm7 0v-1h-1v1zm-1-2h1v-1h-1zm-6 3H4v1h1zm7 1v-1h-1v1zm-7 1H4v1h1zm7 1v-1h-1v1zm-8 1v1h1v-1zm7 1h1v-1h-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ticket-perforated.svg b/vendor/twbs/bootstrap-icons/icons/ticket-perforated.svg
new file mode 100644
index 000000000..da4453776
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ticket-perforated.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ticket-perforated" viewBox="0 0 16 16">
+ <path d="M4 4.85v.9h1v-.9zm7 0v.9h1v-.9zm-7 1.8v.9h1v-.9zm7 0v.9h1v-.9zm-7 1.8v.9h1v-.9zm7 0v.9h1v-.9zm-7 1.8v.9h1v-.9zm7 0v.9h1v-.9z"/>
+ <path d="M1.5 3A1.5 1.5 0 0 0 0 4.5V6a.5.5 0 0 0 .5.5 1.5 1.5 0 1 1 0 3 .5.5 0 0 0-.5.5v1.5A1.5 1.5 0 0 0 1.5 13h13a1.5 1.5 0 0 0 1.5-1.5V10a.5.5 0 0 0-.5-.5 1.5 1.5 0 0 1 0-3A.5.5 0 0 0 16 6V4.5A1.5 1.5 0 0 0 14.5 3zM1 4.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v1.05a2.5 2.5 0 0 0 0 4.9v1.05a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-1.05a2.5 2.5 0 0 0 0-4.9z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ticket.svg b/vendor/twbs/bootstrap-icons/icons/ticket.svg
new file mode 100644
index 000000000..eb813a18c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ticket.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ticket" viewBox="0 0 16 16">
+ <path d="M0 4.5A1.5 1.5 0 0 1 1.5 3h13A1.5 1.5 0 0 1 16 4.5V6a.5.5 0 0 1-.5.5 1.5 1.5 0 0 0 0 3 .5.5 0 0 1 .5.5v1.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5V10a.5.5 0 0 1 .5-.5 1.5 1.5 0 1 0 0-3A.5.5 0 0 1 0 6zM1.5 4a.5.5 0 0 0-.5.5v1.05a2.5 2.5 0 0 1 0 4.9v1.05a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-1.05a2.5 2.5 0 0 1 0-4.9V4.5a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tiktok.svg b/vendor/twbs/bootstrap-icons/icons/tiktok.svg
new file mode 100644
index 000000000..04c6679ea
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tiktok.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tiktok" viewBox="0 0 16 16">
+ <path d="M9 0h1.98c.144.715.54 1.617 1.235 2.512C12.895 3.389 13.797 4 15 4v2c-1.753 0-3.07-.814-4-1.829V11a5 5 0 1 1-5-5v2a3 3 0 1 0 3 3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/toggle-off.svg b/vendor/twbs/bootstrap-icons/icons/toggle-off.svg
new file mode 100644
index 000000000..e1e89ad0b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/toggle-off.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-toggle-off" viewBox="0 0 16 16">
+ <path d="M11 4a4 4 0 0 1 0 8H8a5 5 0 0 0 2-4 5 5 0 0 0-2-4zm-6 8a4 4 0 1 1 0-8 4 4 0 0 1 0 8M0 8a5 5 0 0 0 5 5h6a5 5 0 0 0 0-10H5a5 5 0 0 0-5 5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/toggle-on.svg b/vendor/twbs/bootstrap-icons/icons/toggle-on.svg
new file mode 100644
index 000000000..7cd6eb3b5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/toggle-on.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-toggle-on" viewBox="0 0 16 16">
+ <path d="M5 3a5 5 0 0 0 0 10h6a5 5 0 0 0 0-10zm6 9a4 4 0 1 1 0-8 4 4 0 0 1 0 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/toggle2-off.svg b/vendor/twbs/bootstrap-icons/icons/toggle2-off.svg
new file mode 100644
index 000000000..61739ce1f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/toggle2-off.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-toggle2-off" viewBox="0 0 16 16">
+ <path d="M9 11c.628-.836 1-1.874 1-3a4.98 4.98 0 0 0-1-3h4a3 3 0 1 1 0 6z"/>
+ <path d="M5 12a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0 1A5 5 0 1 0 5 3a5 5 0 0 0 0 10"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/toggle2-on.svg b/vendor/twbs/bootstrap-icons/icons/toggle2-on.svg
new file mode 100644
index 000000000..d752ce821
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/toggle2-on.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-toggle2-on" viewBox="0 0 16 16">
+ <path d="M7 5H3a3 3 0 0 0 0 6h4a5 5 0 0 1-.584-1H3a2 2 0 1 1 0-4h3.416q.235-.537.584-1"/>
+ <path d="M16 8A5 5 0 1 1 6 8a5 5 0 0 1 10 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/toggles.svg b/vendor/twbs/bootstrap-icons/icons/toggles.svg
new file mode 100644
index 000000000..659c18552
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/toggles.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-toggles" viewBox="0 0 16 16">
+ <path d="M4.5 9a3.5 3.5 0 1 0 0 7h7a3.5 3.5 0 1 0 0-7zm7 6a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5m-7-14a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5m2.45 0A3.5 3.5 0 0 1 8 3.5 3.5 3.5 0 0 1 6.95 6h4.55a2.5 2.5 0 0 0 0-5zM4.5 0h7a3.5 3.5 0 1 1 0 7h-7a3.5 3.5 0 1 1 0-7"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/toggles2.svg b/vendor/twbs/bootstrap-icons/icons/toggles2.svg
new file mode 100644
index 000000000..2f9034425
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/toggles2.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-toggles2" viewBox="0 0 16 16">
+ <path d="M9.465 10H12a2 2 0 1 1 0 4H9.465c.34-.588.535-1.271.535-2s-.195-1.412-.535-2"/>
+ <path d="M6 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6m0 1a4 4 0 1 1 0-8 4 4 0 0 1 0 8m.535-10a4 4 0 0 1-.409-1H4a1 1 0 0 1 0-2h2.126q.138-.534.41-1H4a2 2 0 1 0 0 4z"/>
+ <path d="M14 4a4 4 0 1 1-8 0 4 4 0 0 1 8 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tools.svg b/vendor/twbs/bootstrap-icons/icons/tools.svg
new file mode 100644
index 000000000..f6efdcc6b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tools.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tools" viewBox="0 0 16 16">
+ <path d="M1 0 0 1l2.2 3.081a1 1 0 0 0 .815.419h.07a1 1 0 0 1 .708.293l2.675 2.675-2.617 2.654A3.003 3.003 0 0 0 0 13a3 3 0 1 0 5.878-.851l2.654-2.617.968.968-.305.914a1 1 0 0 0 .242 1.023l3.27 3.27a.997.997 0 0 0 1.414 0l1.586-1.586a.997.997 0 0 0 0-1.414l-3.27-3.27a1 1 0 0 0-1.023-.242L10.5 9.5l-.96-.96 2.68-2.643A3.005 3.005 0 0 0 16 3q0-.405-.102-.777l-2.14 2.141L12 4l-.364-1.757L13.777.102a3 3 0 0 0-3.675 3.68L7.462 6.46 4.793 3.793a1 1 0 0 1-.293-.707v-.071a1 1 0 0 0-.419-.814zm9.646 10.646a.5.5 0 0 1 .708 0l2.914 2.915a.5.5 0 0 1-.707.707l-2.915-2.914a.5.5 0 0 1 0-.708M3 11l.471.242.529.026.287.445.445.287.026.529L5 13l-.242.471-.026.529-.445.287-.287.445-.529.026L3 15l-.471-.242L2 14.732l-.287-.445L1.268 14l-.026-.529L1 13l.242-.471.026-.529.445-.287.287-.445.529-.026z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tornado.svg b/vendor/twbs/bootstrap-icons/icons/tornado.svg
new file mode 100644
index 000000000..2a6397cb0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tornado.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tornado" viewBox="0 0 16 16">
+ <path d="M1.125 2.45A.9.9 0 0 1 1 2c0-.26.116-.474.258-.634a1.9 1.9 0 0 1 .513-.389c.387-.21.913-.385 1.52-.525C4.514.17 6.18 0 8 0c1.821 0 3.486.17 4.709.452.607.14 1.133.314 1.52.525.193.106.374.233.513.389.141.16.258.374.258.634 0 1.011-.35 1.612-.634 2.102l-.116.203a2.6 2.6 0 0 0-.313.809 3 3 0 0 0-.011.891.5.5 0 0 1 .428.849q-.091.09-.215.195c.204 1.116.088 1.99-.3 2.711-.453.84-1.231 1.383-2.02 1.856q-.307.183-.62.364c-1.444.832-2.928 1.689-3.735 3.706a.5.5 0 0 1-.748.226l-.001-.001-.002-.001-.004-.003-.01-.008a2 2 0 0 1-.147-.115 4.1 4.1 0 0 1-1.179-1.656 3.8 3.8 0 0 1-.247-1.296A.5.5 0 0 1 5 12.5v-.018l.008-.079a.73.73 0 0 1 .188-.386c.09-.489.272-1.014.573-1.574a.5.5 0 0 1 .073-.918 3.3 3.3 0 0 1 .617-.144l.15-.193c.285-.356.404-.639.437-.861a.95.95 0 0 0-.122-.619c-.249-.455-.815-.903-1.613-1.43q-.291-.19-.609-.394l-.119-.076a12 12 0 0 1-1.241-.334.5.5 0 0 1-.285-.707l-.23-.18C2.117 4.01 1.463 3.32 1.125 2.45m1.973 1.051q.17.156.358.308c.472.381.99.722 1.515 1.06 1.54.317 3.632.5 5.43.14a.5.5 0 0 1 .197.981c-1.216.244-2.537.26-3.759.157.399.326.744.682.963 1.081.203.373.302.79.233 1.247q-.077.494-.39.985l.22.053.006.002c.481.12.863.213 1.47.01a.5.5 0 1 1 .317.95c-.888.295-1.505.141-2.023.012l-.006-.002a4 4 0 0 0-.644-.123c-.37.55-.598 1.05-.726 1.497q.212.068.465.194a.5.5 0 1 1-.448.894 3 3 0 0 0-.148-.07c.012.345.084.643.18.895.14.369.342.666.528.886.992-1.903 2.583-2.814 3.885-3.56q.305-.173.584-.34c.775-.464 1.34-.89 1.653-1.472.212-.393.33-.9.26-1.617A6.74 6.74 0 0 1 10 8.5a.5.5 0 0 1 0-1 5.76 5.76 0 0 0 3.017-.872l-.007-.03c-.135-.673-.14-1.207-.056-1.665.084-.46.253-.81.421-1.113l.131-.23q.098-.167.182-.327c-.29.107-.62.202-.98.285C11.487 3.83 9.822 4 8 4c-1.821 0-3.486-.17-4.709-.452q-.098-.022-.193-.047M13.964 2a1 1 0 0 0-.214-.145c-.272-.148-.697-.297-1.266-.428C11.354 1.166 9.769 1 8 1s-3.354.166-4.484.427c-.569.13-.994.28-1.266.428A1 1 0 0 0 2.036 2q.058.058.214.145c.272.148.697.297 1.266.428C4.646 2.834 6.231 3 8 3s3.354-.166 4.484-.427c.569-.13.994-.28 1.266-.428A1 1 0 0 0 13.964 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/train-freight-front-fill.svg b/vendor/twbs/bootstrap-icons/icons/train-freight-front-fill.svg
new file mode 100644
index 000000000..e2720516d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/train-freight-front-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-train-freight-front-fill" viewBox="0 0 16 16">
+ <path d="M5.736 0a1.5 1.5 0 0 0-.67.158L1.828 1.776A1.5 1.5 0 0 0 1 3.118v5.51l2-.6V5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v3.028l2 .6v-5.51a1.5 1.5 0 0 0-.83-1.342L10.936.158A1.5 1.5 0 0 0 10.264 0zM15 9.672l-5.503-1.65A.5.5 0 0 0 9.353 8H8.5v8h4a2.5 2.5 0 0 0 2.5-2.5zM7.5 16V8h-.853a.5.5 0 0 0-.144.021L1 9.672V13.5A2.5 2.5 0 0 0 3.5 16zm-1-14h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1M12 5v2.728l-2.216-.665A1.5 1.5 0 0 0 9.354 7H8.5V5zM7.5 5v2h-.853a1.5 1.5 0 0 0-.431.063L4 7.728V5zm-4 5a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1m9 0a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1M5 13a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 1a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/train-freight-front.svg b/vendor/twbs/bootstrap-icons/icons/train-freight-front.svg
new file mode 100644
index 000000000..097c9600b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/train-freight-front.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-train-freight-front" viewBox="0 0 16 16">
+ <path d="M5.065.158A1.5 1.5 0 0 1 5.736 0h4.528a1.5 1.5 0 0 1 .67.158l3.237 1.618a1.5 1.5 0 0 1 .83 1.342V13.5a2.5 2.5 0 0 1-2.5 2.5h-9A2.5 2.5 0 0 1 1 13.5V3.118a1.5 1.5 0 0 1 .828-1.342zM2 9.372V13.5A1.5 1.5 0 0 0 3.5 15h4V8h-.853a.5.5 0 0 0-.144.021zM8.5 15h4a1.5 1.5 0 0 0 1.5-1.5V9.372l-4.503-1.35A.5.5 0 0 0 9.353 8H8.5zM14 8.328v-5.21a.5.5 0 0 0-.276-.447l-3.236-1.618A.5.5 0 0 0 10.264 1H5.736a.5.5 0 0 0-.223.053L2.277 2.67A.5.5 0 0 0 2 3.118v5.21l1-.3V5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v3.028zm-2-.6V5H8.5v2h.853a1.5 1.5 0 0 1 .431.063zM7.5 7V5H4v2.728l2.216-.665A1.5 1.5 0 0 1 6.646 7zm-1-5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1zm-3 8a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1m9 0a.5.5 0 1 0 0 1 .5.5 0 0 0 0-1M5 13a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/train-front-fill.svg b/vendor/twbs/bootstrap-icons/icons/train-front-fill.svg
new file mode 100644
index 000000000..4acad08e0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/train-front-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-train-front-fill" viewBox="0 0 16 16">
+ <path d="M10.621.515C8.647.02 7.353.02 5.38.515c-.924.23-1.982.766-2.78 1.22C1.566 2.322 1 3.432 1 4.582V13.5A2.5 2.5 0 0 0 3.5 16h9a2.5 2.5 0 0 0 2.5-2.5V4.583c0-1.15-.565-2.26-1.6-2.849-.797-.453-1.855-.988-2.779-1.22ZM6.5 2h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1m-2 2h7A1.5 1.5 0 0 1 13 5.5v2A1.5 1.5 0 0 1 11.5 9h-7A1.5 1.5 0 0 1 3 7.5v-2A1.5 1.5 0 0 1 4.5 4m.5 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0m0 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0m8 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-3-1a1 1 0 1 1 0 2 1 1 0 0 1 0-2M4 5.5a.5.5 0 0 1 .5-.5h3v3h-3a.5.5 0 0 1-.5-.5zM8.5 8V5h3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/train-front.svg b/vendor/twbs/bootstrap-icons/icons/train-front.svg
new file mode 100644
index 000000000..81ce139fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/train-front.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-train-front" viewBox="0 0 16 16">
+ <path d="M5.621 1.485c1.815-.454 2.943-.454 4.758 0 .784.196 1.743.673 2.527 1.119.688.39 1.094 1.148 1.094 1.979V13.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 13.5V4.583c0-.831.406-1.588 1.094-1.98.784-.445 1.744-.922 2.527-1.118m5-.97C8.647.02 7.353.02 5.38.515c-.924.23-1.982.766-2.78 1.22C1.566 2.322 1 3.432 1 4.582V13.5A2.5 2.5 0 0 0 3.5 16h9a2.5 2.5 0 0 0 2.5-2.5V4.583c0-1.15-.565-2.26-1.6-2.849-.797-.453-1.855-.988-2.779-1.22ZM5 13a1 1 0 1 1-2 0 1 1 0 0 1 2 0m0 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0m7 1a1 1 0 1 0-1-1 1 1 0 1 0-2 0 1 1 0 0 0 2 0 1 1 0 0 0 1 1M4.5 5a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5h3V5zm4 0v3h3a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5zM3 5.5A1.5 1.5 0 0 1 4.5 4h7A1.5 1.5 0 0 1 13 5.5v2A1.5 1.5 0 0 1 11.5 9h-7A1.5 1.5 0 0 1 3 7.5zM6.5 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/train-lightrail-front-fill.svg b/vendor/twbs/bootstrap-icons/icons/train-lightrail-front-fill.svg
new file mode 100644
index 000000000..7bd87fb4e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/train-lightrail-front-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-train-lightrail-front-fill" viewBox="0 0 16 16">
+ <path d="M6.5 0a.5.5 0 0 0 0 1h1v1.011c-1.525.064-3.346.394-4.588.655C1.775 2.904 1 3.915 1 5.055V13.5A2.5 2.5 0 0 0 3.5 16h9a2.5 2.5 0 0 0 2.5-2.5V5.055c0-1.14-.775-2.15-1.912-2.39-1.242-.26-3.063-.59-4.588-.654V1h1a.5.5 0 0 0 0-1zM8 4c1.136 0 2.645.2 3.604.346.825.126 1.356.9 1.244 1.697q-.034.24-.07.522C12.643 7.596 12.5 8.949 12.5 10c0 .428.024.933.062 1.464.066.93.174 1.92.266 2.682.042.34.08.634.109.854h-1.01a63 63 0 0 1-.327-3H9.354c-.36 0-.704-.143-.958-.396a.35.35 0 0 0-.25-.104h-.292a.35.35 0 0 0-.25.104 1.35 1.35 0 0 1-.958.396H4.4a63 63 0 0 1-.328 3H3.064c.029-.22.067-.514.108-.854.092-.761.2-1.752.266-2.682.038-.531.062-1.036.062-1.464 0-1.051-.143-2.404-.278-3.435l-.07-.522c-.112-.798.42-1.571 1.244-1.697C5.356 4.199 6.864 4 8 4m-1.354 7H4.47c.019-.353.03-.692.03-1 0-.927-.104-2.051-.216-3h7.432c-.112.949-.216 2.073-.216 3 0 .308.011.647.03 1H9.354a.35.35 0 0 1-.25-.104 1.35 1.35 0 0 0-.958-.396h-.292c-.36 0-.704.143-.958.396a.35.35 0 0 1-.25.104m5.199-5h-7.69l-.013-.096a.497.497 0 0 1 .405-.57C5.505 5.188 6.947 5 8 5s2.495.188 3.453.334a.497.497 0 0 1 .405.57zM6 13.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 0a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0m4 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 0a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/train-lightrail-front.svg b/vendor/twbs/bootstrap-icons/icons/train-lightrail-front.svg
new file mode 100644
index 000000000..d7aa87fc3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/train-lightrail-front.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-train-lightrail-front" viewBox="0 0 16 16">
+ <path d="M6.5 0a.5.5 0 0 0 0 1h1v1.011c-1.525.064-3.346.394-4.588.655C1.775 2.904 1 3.915 1 5.055V13.5A2.5 2.5 0 0 0 3.5 16h9a2.5 2.5 0 0 0 2.5-2.5V5.055c0-1.14-.775-2.15-1.912-2.39-1.242-.26-3.063-.59-4.588-.654V1h1a.5.5 0 0 0 0-1zM8 3c1.497 0 3.505.356 4.883.644.653.137 1.117.722 1.117 1.411V13.5a1.5 1.5 0 0 1-1.072 1.438 76 76 0 0 1-.1-.792c-.092-.761-.2-1.752-.266-2.682A21 21 0 0 1 12.5 10c0-1.051.143-2.404.278-3.435l.07-.522c.112-.798-.42-1.571-1.244-1.697C10.644 4.199 9.136 4 8 4s-2.645.2-3.604.346c-.825.126-1.356.9-1.244 1.697q.034.24.07.522C3.357 7.596 3.5 8.949 3.5 10c0 .428-.024.933-.062 1.464a57 57 0 0 1-.266 2.682c-.038.31-.072.58-.1.792A1.5 1.5 0 0 1 2 13.5V5.055c0-.69.464-1.274 1.117-1.41C4.495 3.354 6.503 3 8 3m3.835 11.266c.034.28.066.53.093.734H4.072a63 63 0 0 0 .328-3h2.246c.36 0 .704-.143.958-.396a.35.35 0 0 1 .25-.104h.292a.35.35 0 0 1 .25.104c.254.253.599.396.958.396H11.6c.068.808.158 1.621.236 2.266ZM6 13.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 0a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0m3.5.5a.5.5 0 0 0 .5-.5.5.5 0 1 0 1 0 .5.5 0 0 0-1 0 .5.5 0 1 0-.5.5m-5.03-3c.019-.353.03-.692.03-1 0-.927-.104-2.051-.216-3h7.432c-.112.949-.216 2.073-.216 3 0 .308.011.647.03 1H9.354a.35.35 0 0 1-.25-.104 1.35 1.35 0 0 0-.958-.396h-.292c-.36 0-.704.143-.958.396a.35.35 0 0 1-.25.104zm-.315-5-.013-.096a.497.497 0 0 1 .405-.57C5.505 5.188 6.947 5 8 5s2.495.188 3.453.334a.497.497 0 0 1 .405.57L11.845 6z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/translate.svg b/vendor/twbs/bootstrap-icons/icons/translate.svg
new file mode 100644
index 000000000..2e0754e69
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/translate.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-translate" viewBox="0 0 16 16">
+ <path d="M4.545 6.714 4.11 8H3l1.862-5h1.284L8 8H6.833l-.435-1.286zm1.634-.736L5.5 3.956h-.049l-.679 2.022z"/>
+ <path d="M0 2a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v3h3a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-3H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm7.138 9.995q.289.451.63.846c-.748.575-1.673 1.001-2.768 1.292.178.217.451.635.555.867 1.125-.359 2.08-.844 2.886-1.494.777.665 1.739 1.165 2.93 1.472.133-.254.414-.673.629-.89-1.125-.253-2.057-.694-2.82-1.284.681-.747 1.222-1.651 1.621-2.757H14V8h-3v1.047h.765c-.318.844-.74 1.546-1.272 2.13a6 6 0 0 1-.415-.492 2 2 0 0 1-.94.31"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/transparency.svg b/vendor/twbs/bootstrap-icons/icons/transparency.svg
new file mode 100644
index 000000000..289a4b947
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/transparency.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-transparency" viewBox="0 0 16 16">
+ <path d="M0 6.5a6.5 6.5 0 0 1 12.346-2.846 6.5 6.5 0 1 1-8.691 8.691A6.5 6.5 0 0 1 0 6.5m5.144 6.358a5.5 5.5 0 1 0 7.714-7.714 6.5 6.5 0 0 1-7.714 7.714m-.733-1.269q.546.226 1.144.33l-1.474-1.474q.104.597.33 1.144m2.614.386a5.5 5.5 0 0 0 1.173-.242L4.374 7.91a6 6 0 0 0-.296 1.118zm2.157-.672q.446-.25.838-.576L5.418 6.126a6 6 0 0 0-.587.826zm1.545-1.284q.325-.39.576-.837L6.953 4.83a6 6 0 0 0-.827.587l4.6 4.602Zm1.006-1.822q.183-.562.242-1.172L9.028 4.078q-.58.096-1.118.296l3.823 3.824Zm.186-2.642a5.5 5.5 0 0 0-.33-1.144 5.5 5.5 0 0 0-1.144-.33z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/trash-fill.svg b/vendor/twbs/bootstrap-icons/icons/trash-fill.svg
new file mode 100644
index 000000000..b67453ac0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/trash-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash-fill" viewBox="0 0 16 16">
+ <path d="M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5M8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5m3 .5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/trash.svg b/vendor/twbs/bootstrap-icons/icons/trash.svg
new file mode 100644
index 000000000..3020264c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/trash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16">
+ <path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/>
+ <path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/trash2-fill.svg b/vendor/twbs/bootstrap-icons/icons/trash2-fill.svg
new file mode 100644
index 000000000..fb1d90dd0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/trash2-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash2-fill" viewBox="0 0 16 16">
+ <path d="M2.037 3.225A.7.7 0 0 1 2 3c0-1.105 2.686-2 6-2s6 .895 6 2a.7.7 0 0 1-.037.225l-1.684 10.104A2 2 0 0 1 10.305 15H5.694a2 2 0 0 1-1.973-1.671zm9.89-.69C10.966 2.214 9.578 2 8 2c-1.58 0-2.968.215-3.926.534-.477.16-.795.327-.975.466.18.14.498.307.975.466C5.032 3.786 6.42 4 8 4s2.967-.215 3.926-.534c.477-.16.795-.327.975-.466-.18-.14-.498-.307-.975-.466z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/trash2.svg b/vendor/twbs/bootstrap-icons/icons/trash2.svg
new file mode 100644
index 000000000..0cabe8d6b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/trash2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash2" viewBox="0 0 16 16">
+ <path d="M14 3a.7.7 0 0 1-.037.225l-1.684 10.104A2 2 0 0 1 10.305 15H5.694a2 2 0 0 1-1.973-1.671L2.037 3.225A.7.7 0 0 1 2 3c0-1.105 2.686-2 6-2s6 .895 6 2M3.215 4.207l1.493 8.957a1 1 0 0 0 .986.836h4.612a1 1 0 0 0 .986-.836l1.493-8.957C11.69 4.689 9.954 5 8 5s-3.69-.311-4.785-.793"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/trash3-fill.svg b/vendor/twbs/bootstrap-icons/icons/trash3-fill.svg
new file mode 100644
index 000000000..42fbfc509
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/trash3-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash3-fill" viewBox="0 0 16 16">
+ <path d="M11 1.5v1h3.5a.5.5 0 0 1 0 1h-.538l-.853 10.66A2 2 0 0 1 11.115 16h-6.23a2 2 0 0 1-1.994-1.84L2.038 3.5H1.5a.5.5 0 0 1 0-1H5v-1A1.5 1.5 0 0 1 6.5 0h3A1.5 1.5 0 0 1 11 1.5m-5 0v1h4v-1a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5M4.5 5.029l.5 8.5a.5.5 0 1 0 .998-.06l-.5-8.5a.5.5 0 1 0-.998.06m6.53-.528a.5.5 0 0 0-.528.47l-.5 8.5a.5.5 0 0 0 .998.058l.5-8.5a.5.5 0 0 0-.47-.528M8 4.5a.5.5 0 0 0-.5.5v8.5a.5.5 0 0 0 1 0V5a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/trash3.svg b/vendor/twbs/bootstrap-icons/icons/trash3.svg
new file mode 100644
index 000000000..5194bf087
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/trash3.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash3" viewBox="0 0 16 16">
+ <path d="M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5M11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47M8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tree-fill.svg b/vendor/twbs/bootstrap-icons/icons/tree-fill.svg
new file mode 100644
index 000000000..d00e7335e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tree-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tree-fill" viewBox="0 0 16 16">
+ <path d="M8.416.223a.5.5 0 0 0-.832 0l-3 4.5A.5.5 0 0 0 5 5.5h.098L3.076 8.735A.5.5 0 0 0 3.5 9.5h.191l-1.638 3.276a.5.5 0 0 0 .447.724H7V16h2v-2.5h4.5a.5.5 0 0 0 .447-.724L12.31 9.5h.191a.5.5 0 0 0 .424-.765L10.902 5.5H11a.5.5 0 0 0 .416-.777z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tree.svg b/vendor/twbs/bootstrap-icons/icons/tree.svg
new file mode 100644
index 000000000..17a5efe95
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tree.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tree" viewBox="0 0 16 16">
+ <path d="M8.416.223a.5.5 0 0 0-.832 0l-3 4.5A.5.5 0 0 0 5 5.5h.098L3.076 8.735A.5.5 0 0 0 3.5 9.5h.191l-1.638 3.276a.5.5 0 0 0 .447.724H7V16h2v-2.5h4.5a.5.5 0 0 0 .447-.724L12.31 9.5h.191a.5.5 0 0 0 .424-.765L10.902 5.5H11a.5.5 0 0 0 .416-.777zM6.437 4.758A.5.5 0 0 0 6 4.5h-.066L8 1.401 10.066 4.5H10a.5.5 0 0 0-.424.765L11.598 8.5H11.5a.5.5 0 0 0-.447.724L12.69 12.5H3.309l1.638-3.276A.5.5 0 0 0 4.5 8.5h-.098l2.022-3.235a.5.5 0 0 0 .013-.507"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/trello.svg b/vendor/twbs/bootstrap-icons/icons/trello.svg
new file mode 100644
index 000000000..bd88732fb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/trello.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trello" viewBox="0 0 16 16">
+ <path d="M14.1 0H1.903C.852 0 .002.85 0 1.9v12.19A1.9 1.9 0 0 0 1.902 16h12.199A1.9 1.9 0 0 0 16 14.09V1.9A1.9 1.9 0 0 0 14.1 0M7 11.367a.636.636 0 0 1-.64.633H3.593a.633.633 0 0 1-.63-.633V3.583c0-.348.281-.631.63-.633h2.765c.35.002.632.284.633.633zm6.052-3.5a.633.633 0 0 1-.64.633h-2.78A.636.636 0 0 1 9 7.867V3.583a.636.636 0 0 1 .633-.633h2.778c.35.002.631.285.631.633z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/triangle-fill.svg b/vendor/twbs/bootstrap-icons/icons/triangle-fill.svg
new file mode 100644
index 000000000..474c8bb47
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/triangle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-triangle-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M7.022 1.566a1.13 1.13 0 0 1 1.96 0l6.857 11.667c.457.778-.092 1.767-.98 1.767H1.144c-.889 0-1.437-.99-.98-1.767z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/triangle-half.svg b/vendor/twbs/bootstrap-icons/icons/triangle-half.svg
new file mode 100644
index 000000000..a495ca0c3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/triangle-half.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-triangle-half" viewBox="0 0 16 16">
+ <path d="M8.065 2.016A.13.13 0 0 0 8.002 2v11.983l6.856.017a.12.12 0 0 0 .066-.017.2.2 0 0 0 .054-.06.18.18 0 0 0-.002-.183L8.12 2.073a.15.15 0 0 0-.054-.057zm-1.043-.45a1.13 1.13 0 0 1 1.96 0l6.856 11.667c.458.778-.091 1.767-.98 1.767H1.146c-.889 0-1.437-.99-.98-1.767z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/triangle.svg b/vendor/twbs/bootstrap-icons/icons/triangle.svg
new file mode 100644
index 000000000..95a6a9b8d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/triangle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-triangle" viewBox="0 0 16 16">
+ <path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016.15.15 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.2.2 0 0 1-.054.06.1.1 0 0 1-.066.017H1.146a.1.1 0 0 1-.066-.017.2.2 0 0 1-.054-.06.18.18 0 0 1 .002-.183L7.884 2.073a.15.15 0 0 1 .054-.057m1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/trophy-fill.svg b/vendor/twbs/bootstrap-icons/icons/trophy-fill.svg
new file mode 100644
index 000000000..f4697377e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/trophy-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trophy-fill" viewBox="0 0 16 16">
+ <path d="M2.5.5A.5.5 0 0 1 3 0h10a.5.5 0 0 1 .5.5q0 .807-.034 1.536a3 3 0 1 1-1.133 5.89c-.79 1.865-1.878 2.777-2.833 3.011v2.173l1.425.356c.194.048.377.135.537.255L13.3 15.1a.5.5 0 0 1-.3.9H3a.5.5 0 0 1-.3-.9l1.838-1.379c.16-.12.343-.207.537-.255L6.5 13.11v-2.173c-.955-.234-2.043-1.146-2.833-3.012a3 3 0 1 1-1.132-5.89A33 33 0 0 1 2.5.5m.099 2.54a2 2 0 0 0 .72 3.935c-.333-1.05-.588-2.346-.72-3.935m10.083 3.935a2 2 0 0 0 .72-3.935c-.133 1.59-.388 2.885-.72 3.935"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/trophy.svg b/vendor/twbs/bootstrap-icons/icons/trophy.svg
new file mode 100644
index 000000000..ae1395782
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/trophy.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trophy" viewBox="0 0 16 16">
+ <path d="M2.5.5A.5.5 0 0 1 3 0h10a.5.5 0 0 1 .5.5q0 .807-.034 1.536a3 3 0 1 1-1.133 5.89c-.79 1.865-1.878 2.777-2.833 3.011v2.173l1.425.356c.194.048.377.135.537.255L13.3 15.1a.5.5 0 0 1-.3.9H3a.5.5 0 0 1-.3-.9l1.838-1.379c.16-.12.343-.207.537-.255L6.5 13.11v-2.173c-.955-.234-2.043-1.146-2.833-3.012a3 3 0 1 1-1.132-5.89A33 33 0 0 1 2.5.5m.099 2.54a2 2 0 0 0 .72 3.935c-.333-1.05-.588-2.346-.72-3.935m10.083 3.935a2 2 0 0 0 .72-3.935c-.133 1.59-.388 2.885-.72 3.935M3.504 1q.01.775.056 1.469c.13 2.028.457 3.546.87 4.667C5.294 9.48 6.484 10 7 10a.5.5 0 0 1 .5.5v2.61a1 1 0 0 1-.757.97l-1.426.356a.5.5 0 0 0-.179.085L4.5 15h7l-.638-.479a.5.5 0 0 0-.18-.085l-1.425-.356a1 1 0 0 1-.757-.97V10.5A.5.5 0 0 1 9 10c.516 0 1.706-.52 2.57-2.864.413-1.12.74-2.64.87-4.667q.045-.694.056-1.469z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tropical-storm.svg b/vendor/twbs/bootstrap-icons/icons/tropical-storm.svg
new file mode 100644
index 000000000..9eb335443
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tropical-storm.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tropical-storm" viewBox="0 0 16 16">
+ <path d="M8 9.5a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
+ <path d="M9.5 2c-.9 0-1.75.216-2.501.6A5 5 0 0 1 13 7.5a6.5 6.5 0 1 1-13 0 .5.5 0 0 1 1 0 5.5 5.5 0 0 0 8.001 4.9A5 5 0 0 1 3 7.5a6.5 6.5 0 0 1 13 0 .5.5 0 0 1-1 0A5.5 5.5 0 0 0 9.5 2M8 3.5a4 4 0 1 0 0 8 4 4 0 0 0 0-8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/truck-flatbed.svg b/vendor/twbs/bootstrap-icons/icons/truck-flatbed.svg
new file mode 100644
index 000000000..4b381557c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/truck-flatbed.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-truck-flatbed" viewBox="0 0 16 16">
+ <path d="M11.5 4a.5.5 0 0 1 .5.5V5h1.02a1.5 1.5 0 0 1 1.17.563l1.481 1.85a1.5 1.5 0 0 1 .329.938V10.5a1.5 1.5 0 0 1-1.5 1.5H14a2 2 0 1 1-4 0H5a2 2 0 1 1-4 0 1 1 0 0 1-1-1v-1h11V4.5a.5.5 0 0 1 .5-.5M3 11a1 1 0 1 0 0 2 1 1 0 0 0 0-2m9 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2m1.732 0h.768a.5.5 0 0 0 .5-.5V8.35a.5.5 0 0 0-.11-.312l-1.48-1.85A.5.5 0 0 0 13.02 6H12v4a2 2 0 0 1 1.732 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/truck-front-fill.svg b/vendor/twbs/bootstrap-icons/icons/truck-front-fill.svg
new file mode 100644
index 000000000..39f72d044
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/truck-front-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-truck-front-fill" viewBox="0 0 16 16">
+ <path d="M3.5 0A2.5 2.5 0 0 0 1 2.5v9c0 .818.393 1.544 1 2v2a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5V14h6v1.5a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5v-2c.607-.456 1-1.182 1-2v-9A2.5 2.5 0 0 0 12.5 0zM3 3a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v3.9c0 .625-.562 1.092-1.17.994C10.925 7.747 9.208 7.5 8 7.5s-2.925.247-3.83.394A1.008 1.008 0 0 1 3 6.9zm1 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2m8 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2m-5-2h2a1 1 0 1 1 0 2H7a1 1 0 1 1 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/truck-front.svg b/vendor/twbs/bootstrap-icons/icons/truck-front.svg
new file mode 100644
index 000000000..d805db5b7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/truck-front.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-truck-front" viewBox="0 0 16 16">
+ <path d="M5 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0m8 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-6-1a1 1 0 1 0 0 2h2a1 1 0 1 0 0-2zM4 2a1 1 0 0 0-1 1v3.9c0 .625.562 1.092 1.17.994C5.075 7.747 6.792 7.5 8 7.5s2.925.247 3.83.394A1.008 1.008 0 0 0 13 6.9V3a1 1 0 0 0-1-1zm0 1h8v3.9q0 .002 0 0l-.002.004-.005.002h-.004C11.088 6.761 9.299 6.5 8 6.5s-3.088.26-3.99.406h-.003l-.005-.002L4 6.9q0 .002 0 0z"/>
+ <path d="M1 2.5A2.5 2.5 0 0 1 3.5 0h9A2.5 2.5 0 0 1 15 2.5v9c0 .818-.393 1.544-1 2v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5V14H5v1.5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-2a2.5 2.5 0 0 1-1-2zM3.5 1A1.5 1.5 0 0 0 2 2.5v9A1.5 1.5 0 0 0 3.5 13h9a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 12.5 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/truck.svg b/vendor/twbs/bootstrap-icons/icons/truck.svg
new file mode 100644
index 000000000..72c54392f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/truck.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-truck" viewBox="0 0 16 16">
+ <path d="M0 3.5A1.5 1.5 0 0 1 1.5 2h9A1.5 1.5 0 0 1 12 3.5V5h1.02a1.5 1.5 0 0 1 1.17.563l1.481 1.85a1.5 1.5 0 0 1 .329.938V10.5a1.5 1.5 0 0 1-1.5 1.5H14a2 2 0 1 1-4 0H5a2 2 0 1 1-3.998-.085A1.5 1.5 0 0 1 0 10.5zm1.294 7.456A2 2 0 0 1 4.732 11h5.536a2 2 0 0 1 .732-.732V3.5a.5.5 0 0 0-.5-.5h-9a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .294.456M12 10a2 2 0 0 1 1.732 1h.768a.5.5 0 0 0 .5-.5V8.35a.5.5 0 0 0-.11-.312l-1.48-1.85A.5.5 0 0 0 13.02 6H12zm-9 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2m9 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tsunami.svg b/vendor/twbs/bootstrap-icons/icons/tsunami.svg
new file mode 100644
index 000000000..be5f9bea5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tsunami.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tsunami" viewBox="0 0 16 16">
+ <path d="M.036 12.314a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.757-.703a.5.5 0 0 1-.278-.65m0 2a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.757-.703a.5.5 0 0 1-.278-.65M2.662 8.08c-.456 1.063-.994 2.098-1.842 2.804a.5.5 0 0 1-.64-.768c.652-.544 1.114-1.384 1.564-2.43.14-.328.281-.68.427-1.044.302-.754.624-1.559 1.01-2.308C3.763 3.2 4.528 2.105 5.7 1.299 6.877.49 8.418 0 10.5 0c1.463 0 2.511.4 3.179 1.058.67.66.893 1.518.819 2.302-.074.771-.441 1.516-1.02 1.965a1.88 1.88 0 0 1-1.904.27c-.65.642-.907 1.679-.71 2.614C11.076 9.215 11.784 10 13 10h2.5a.5.5 0 0 1 0 1H13c-1.784 0-2.826-1.215-3.114-2.585-.232-1.1.005-2.373.758-3.284L10.5 5.06l-.777.388a.5.5 0 0 1-.447 0l-1-.5a.5.5 0 0 1 .447-.894l.777.388.776-.388a.5.5 0 0 1 .447 0l1 .5.034.018c.44.264.81.195 1.108-.036.328-.255.586-.729.637-1.27.05-.529-.1-1.076-.525-1.495s-1.19-.77-2.477-.77c-1.918 0-3.252.448-4.232 1.123C5.283 2.8 4.61 3.738 4.07 4.79c-.365.71-.655 1.433-.945 2.16-.15.376-.301.753-.463 1.13"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tv-fill.svg b/vendor/twbs/bootstrap-icons/icons/tv-fill.svg
new file mode 100644
index 000000000..483c9fda3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tv-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tv-fill" viewBox="0 0 16 16">
+ <path d="M2.5 13.5A.5.5 0 0 1 3 13h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5M2 2h12s2 0 2 2v6s0 2-2 2H2s-2 0-2-2V4s0-2 2-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/tv.svg b/vendor/twbs/bootstrap-icons/icons/tv.svg
new file mode 100644
index 000000000..fa8b3c19c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/tv.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tv" viewBox="0 0 16 16">
+ <path d="M2.5 13.5A.5.5 0 0 1 3 13h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5M13.991 3l.024.001a1.5 1.5 0 0 1 .538.143.76.76 0 0 1 .302.254c.067.1.145.277.145.602v5.991l-.001.024a1.5 1.5 0 0 1-.143.538.76.76 0 0 1-.254.302c-.1.067-.277.145-.602.145H2.009l-.024-.001a1.5 1.5 0 0 1-.538-.143.76.76 0 0 1-.302-.254C1.078 10.502 1 10.325 1 10V4.009l.001-.024a1.5 1.5 0 0 1 .143-.538.76.76 0 0 1 .254-.302C1.498 3.078 1.675 3 2 3zM14 2H2C0 2 0 4 0 4v6c0 2 2 2 2 2h12c2 0 2-2 2-2V4c0-2-2-2-2-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/twitch.svg b/vendor/twbs/bootstrap-icons/icons/twitch.svg
new file mode 100644
index 000000000..b2c8ff5a0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/twitch.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-twitch" viewBox="0 0 16 16">
+ <path d="M3.857 0 1 2.857v10.286h3.429V16l2.857-2.857H9.57L14.714 8V0zm9.714 7.429-2.285 2.285H9l-2 2v-2H4.429V1.143h9.142z"/>
+ <path d="M11.857 3.143h-1.143V6.57h1.143zm-3.143 0H7.571V6.57h1.143z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/twitter-x.svg b/vendor/twbs/bootstrap-icons/icons/twitter-x.svg
new file mode 100644
index 000000000..2fafcc2df
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/twitter-x.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-twitter-x" viewBox="0 0 16 16">
+ <path d="M12.6.75h2.454l-5.36 6.142L16 15.25h-4.937l-3.867-5.07-4.425 5.07H.316l5.733-6.57L0 .75h5.063l3.495 4.633L12.601.75Zm-.86 13.028h1.36L4.323 2.145H2.865z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/twitter.svg b/vendor/twbs/bootstrap-icons/icons/twitter.svg
new file mode 100644
index 000000000..30013529a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/twitter.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-twitter" viewBox="0 0 16 16">
+ <path d="M5.026 15c6.038 0 9.341-5.003 9.341-9.334q.002-.211-.006-.422A6.7 6.7 0 0 0 16 3.542a6.7 6.7 0 0 1-1.889.518 3.3 3.3 0 0 0 1.447-1.817 6.5 6.5 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.32 9.32 0 0 1-6.767-3.429 3.29 3.29 0 0 0 1.018 4.382A3.3 3.3 0 0 1 .64 6.575v.045a3.29 3.29 0 0 0 2.632 3.218 3.2 3.2 0 0 1-.865.115 3 3 0 0 1-.614-.057 3.28 3.28 0 0 0 3.067 2.277A6.6 6.6 0 0 1 .78 13.58a6 6 0 0 1-.78-.045A9.34 9.34 0 0 0 5.026 15"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/type-bold.svg b/vendor/twbs/bootstrap-icons/icons/type-bold.svg
new file mode 100644
index 000000000..0814a2e4a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/type-bold.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-type-bold" viewBox="0 0 16 16">
+ <path d="M8.21 13c2.106 0 3.412-1.087 3.412-2.823 0-1.306-.984-2.283-2.324-2.386v-.055a2.176 2.176 0 0 0 1.852-2.14c0-1.51-1.162-2.46-3.014-2.46H3.843V13zM5.908 4.674h1.696c.963 0 1.517.451 1.517 1.244 0 .834-.629 1.32-1.73 1.32H5.908V4.673zm0 6.788V8.598h1.73c1.217 0 1.88.492 1.88 1.415 0 .943-.643 1.449-1.832 1.449H5.907z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/type-h1.svg b/vendor/twbs/bootstrap-icons/icons/type-h1.svg
new file mode 100644
index 000000000..0df41f6cf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/type-h1.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-type-h1" viewBox="0 0 16 16">
+ <path d="M7.648 13V3H6.3v4.234H1.348V3H0v10h1.348V8.421H6.3V13zM14 13V3h-1.333l-2.381 1.766V6.12L12.6 4.443h.066V13z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/type-h2.svg b/vendor/twbs/bootstrap-icons/icons/type-h2.svg
new file mode 100644
index 000000000..03379edb3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/type-h2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-type-h2" viewBox="0 0 16 16">
+ <path d="M7.495 13V3.201H6.174v4.15H1.32V3.2H0V13h1.32V8.513h4.854V13zm3.174-7.071v-.05c0-.934.66-1.752 1.801-1.752 1.005 0 1.76.639 1.76 1.651 0 .898-.582 1.58-1.12 2.19l-3.69 4.2V13h6.331v-1.149h-4.458v-.079L13.9 8.786c.919-1.048 1.666-1.874 1.666-3.101C15.565 4.149 14.35 3 12.499 3 10.46 3 9.384 4.393 9.384 5.879v.05z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/type-h3.svg b/vendor/twbs/bootstrap-icons/icons/type-h3.svg
new file mode 100644
index 000000000..97de53125
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/type-h3.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-type-h3" viewBox="0 0 16 16">
+ <path d="M11.07 8.4h1.049c1.174 0 1.99.69 2.004 1.724s-.802 1.786-2.068 1.779c-1.11-.007-1.905-.605-1.99-1.357h-1.21C8.926 11.91 10.116 13 12.028 13c1.99 0 3.439-1.188 3.404-2.87-.028-1.553-1.287-2.221-2.096-2.313v-.07c.724-.127 1.814-.935 1.772-2.293-.035-1.392-1.21-2.468-3.038-2.454-1.927.007-2.94 1.196-2.981 2.426h1.23c.064-.71.732-1.336 1.744-1.336 1.027 0 1.744.64 1.744 1.568.007.95-.738 1.639-1.744 1.639h-.991V8.4ZM7.495 13V3.201H6.174v4.15H1.32V3.2H0V13h1.32V8.513h4.854V13z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/type-h4.svg b/vendor/twbs/bootstrap-icons/icons/type-h4.svg
new file mode 100644
index 000000000..a7ddc818f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/type-h4.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-type-h4" viewBox="0 0 16 16">
+ <path d="M13.007 3H15v10h-1.29v-2.051H8.854v-1.18C10.1 7.513 11.586 5.256 13.007 3m-2.82 6.777h3.524v-5.62h-.074a95 95 0 0 0-3.45 5.554zM7.495 13V3.201H6.174v4.15H1.32V3.2H0V13h1.32V8.513h4.854V13z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/type-h5.svg b/vendor/twbs/bootstrap-icons/icons/type-h5.svg
new file mode 100644
index 000000000..776bfa3be
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/type-h5.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-type-h5" viewBox="0 0 16 16">
+ <path d="M9 10.516h1.264c.193.976 1.112 1.364 2.01 1.364 1.005 0 2.067-.782 2.067-2.247 0-1.292-.983-2.082-2.089-2.082-1.012 0-1.658.596-1.924 1.077h-1.12L9.646 3h5.535v1.141h-4.415L10.5 7.28h.072c.201-.316.883-.84 1.967-.84 1.709 0 3.13 1.177 3.13 3.158 0 2.025-1.407 3.403-3.475 3.403-1.809 0-3.1-1.048-3.194-2.484ZM7.495 13V3.201H6.174v4.15H1.32V3.2H0V13h1.32V8.512h4.854V13z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/type-h6.svg b/vendor/twbs/bootstrap-icons/icons/type-h6.svg
new file mode 100644
index 000000000..926719294
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/type-h6.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-type-h6" viewBox="0 0 16 16">
+ <path d="M15.596 5.178H14.3c-.106-.444-.62-1.072-1.706-1.072-1.332 0-2.325 1.269-2.325 3.947h.07c.268-.67 1.043-1.445 2.445-1.445 1.494 0 3.017 1.064 3.017 3.073C15.8 11.795 14.37 13 12.48 13c-1.036 0-2.093-.36-2.77-1.452C9.276 10.836 9 9.808 9 8.37 9 4.656 10.494 3 12.636 3c1.812 0 2.883 1.113 2.96 2.178m-5.151 4.566c0 1.367.944 2.15 2.043 2.15 1.128 0 2.037-.684 2.037-2.136 0-1.41-1-2.065-2.03-2.065-1.19 0-2.05.853-2.05 2.051M7.495 13V3.201H6.174v4.15H1.32V3.2H0V13h1.32V8.513h4.854V13z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/type-italic.svg b/vendor/twbs/bootstrap-icons/icons/type-italic.svg
new file mode 100644
index 000000000..3ac6b09f0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/type-italic.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-type-italic" viewBox="0 0 16 16">
+ <path d="M7.991 11.674 9.53 4.455c.123-.595.246-.71 1.347-.807l.11-.52H7.211l-.11.52c1.06.096 1.128.212 1.005.807L6.57 11.674c-.123.595-.246.71-1.346.806l-.11.52h3.774l.11-.52c-1.06-.095-1.129-.211-1.006-.806z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/type-strikethrough.svg b/vendor/twbs/bootstrap-icons/icons/type-strikethrough.svg
new file mode 100644
index 000000000..c64eba34a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/type-strikethrough.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-type-strikethrough" viewBox="0 0 16 16">
+ <path d="M6.333 5.686c0 .31.083.581.27.814H5.166a2.8 2.8 0 0 1-.099-.76c0-1.627 1.436-2.768 3.48-2.768 1.969 0 3.39 1.175 3.445 2.85h-1.23c-.11-1.08-.964-1.743-2.25-1.743-1.23 0-2.18.602-2.18 1.607zm2.194 7.478c-2.153 0-3.589-1.107-3.705-2.81h1.23c.144 1.06 1.129 1.703 2.544 1.703 1.34 0 2.31-.705 2.31-1.675 0-.827-.547-1.374-1.914-1.675L8.046 8.5H1v-1h14v1h-3.504c.468.437.675.994.675 1.697 0 1.826-1.436 2.967-3.644 2.967"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/type-underline.svg b/vendor/twbs/bootstrap-icons/icons/type-underline.svg
new file mode 100644
index 000000000..1c0b6c474
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/type-underline.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-type-underline" viewBox="0 0 16 16">
+ <path d="M5.313 3.136h-1.23V9.54c0 2.105 1.47 3.623 3.917 3.623s3.917-1.518 3.917-3.623V3.136h-1.23v6.323c0 1.49-.978 2.57-2.687 2.57s-2.687-1.08-2.687-2.57zM12.5 15h-9v-1h9z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/type.svg b/vendor/twbs/bootstrap-icons/icons/type.svg
new file mode 100644
index 000000000..8c1fde12c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/type.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-type" viewBox="0 0 16 16">
+ <path d="m2.244 13.081.943-2.803H6.66l.944 2.803H8.86L5.54 3.75H4.322L1 13.081zm2.7-7.923L6.34 9.314H3.51l1.4-4.156zm9.146 7.027h.035v.896h1.128V8.125c0-1.51-1.114-2.345-2.646-2.345-1.736 0-2.59.916-2.666 2.174h1.108c.068-.718.595-1.19 1.517-1.19.971 0 1.518.52 1.518 1.464v.731H12.19c-1.647.007-2.522.8-2.522 2.058 0 1.319.957 2.18 2.345 2.18 1.06 0 1.716-.43 2.078-1.011zm-1.763.035c-.752 0-1.456-.397-1.456-1.244 0-.65.424-1.115 1.408-1.115h1.805v.834c0 .896-.752 1.525-1.757 1.525"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ubuntu.svg b/vendor/twbs/bootstrap-icons/icons/ubuntu.svg
new file mode 100644
index 000000000..89c88307c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ubuntu.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ubuntu" viewBox="0 0 16 16">
+ <path d="M2.273 9.53a2.273 2.273 0 1 0 0-4.546 2.273 2.273 0 0 0 0 4.547Zm9.467-4.984a2.273 2.273 0 1 0 0-4.546 2.273 2.273 0 0 0 0 4.546M7.4 13.108a5.54 5.54 0 0 1-3.775-2.88 3.27 3.27 0 0 1-1.944.24 7.4 7.4 0 0 0 5.328 4.465c.53.113 1.072.169 1.614.166a3.25 3.25 0 0 1-.666-1.9 6 6 0 0 1-.557-.091m3.828 2.285a2.273 2.273 0 1 0 0-4.546 2.273 2.273 0 0 0 0 4.546m3.163-3.108a7.44 7.44 0 0 0 .373-8.726 3.3 3.3 0 0 1-1.278 1.498 5.57 5.57 0 0 1-.183 5.535 3.26 3.26 0 0 1 1.088 1.693M2.098 3.998a3.3 3.3 0 0 1 1.897.486 5.54 5.54 0 0 1 4.464-2.388c.037-.67.277-1.313.69-1.843a7.47 7.47 0 0 0-7.051 3.745"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ui-checks-grid.svg b/vendor/twbs/bootstrap-icons/icons/ui-checks-grid.svg
new file mode 100644
index 000000000..e5d1ed9c0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ui-checks-grid.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ui-checks-grid" viewBox="0 0 16 16">
+ <path d="M2 10h3a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1m9-9h3a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1m0 9a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1zm0-10a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM2 9a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2zm7 2a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-3a2 2 0 0 1-2-2zM0 2a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.354.854a.5.5 0 1 0-.708-.708L3 3.793l-.646-.647a.5.5 0 1 0-.708.708l1 1a.5.5 0 0 0 .708 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ui-checks.svg b/vendor/twbs/bootstrap-icons/icons/ui-checks.svg
new file mode 100644
index 000000000..5d028698c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ui-checks.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ui-checks" viewBox="0 0 16 16">
+ <path d="M7 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zM2 1a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 8a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2a2 2 0 0 0-2-2zm.854-3.646a.5.5 0 0 1-.708 0l-1-1a.5.5 0 1 1 .708-.708l.646.647 1.646-1.647a.5.5 0 1 1 .708.708zm0 8a.5.5 0 0 1-.708 0l-1-1a.5.5 0 0 1 .708-.708l.646.647 1.646-1.647a.5.5 0 0 1 .708.708zM7 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 8a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ui-radios-grid.svg b/vendor/twbs/bootstrap-icons/icons/ui-radios-grid.svg
new file mode 100644
index 000000000..9f9aae0c2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ui-radios-grid.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ui-radios-grid" viewBox="0 0 16 16">
+ <path d="M3.5 15a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5m9-9a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5m0 9a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5M16 3.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-9 9a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m5.5 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m-9-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 2a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/ui-radios.svg b/vendor/twbs/bootstrap-icons/icons/ui-radios.svg
new file mode 100644
index 000000000..9165340d8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/ui-radios.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ui-radios" viewBox="0 0 16 16">
+ <path d="M7 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zM0 12a3 3 0 1 1 6 0 3 3 0 0 1-6 0m7-1.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 8a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5M3 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6m0 4.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/umbrella-fill.svg b/vendor/twbs/bootstrap-icons/icons/umbrella-fill.svg
new file mode 100644
index 000000000..3efaf13e2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/umbrella-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-umbrella-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 0a.5.5 0 0 1 .5.5v.514C12.625 1.238 16 4.22 16 8c0 0 0 .5-.5.5-.149 0-.352-.145-.352-.145l-.004-.004-.025-.023a3.5 3.5 0 0 0-.555-.394A3.17 3.17 0 0 0 13 7.5c-.638 0-1.178.213-1.564.434a3.5 3.5 0 0 0-.555.394l-.025.023-.003.003s-.204.146-.353.146-.352-.145-.352-.145l-.004-.004-.025-.023a3.5 3.5 0 0 0-.555-.394 3.3 3.3 0 0 0-1.064-.39V13.5H8h.5v.039l-.005.083a3 3 0 0 1-.298 1.102 2.26 2.26 0 0 1-.763.88C7.06 15.851 6.587 16 6 16s-1.061-.148-1.434-.396a2.26 2.26 0 0 1-.763-.88 3 3 0 0 1-.302-1.185v-.025l-.001-.009v-.003s0-.002.5-.002h-.5V13a.5.5 0 0 1 1 0v.506l.003.044a2 2 0 0 0 .195.726c.095.191.23.367.423.495.19.127.466.229.879.229s.689-.102.879-.229c.193-.128.328-.304.424-.495a2 2 0 0 0 .197-.77V7.544a3.3 3.3 0 0 0-1.064.39 3.5 3.5 0 0 0-.58.417l-.004.004S5.65 8.5 5.5 8.5s-.352-.145-.352-.145l-.004-.004a3.5 3.5 0 0 0-.58-.417A3.17 3.17 0 0 0 3 7.5c-.638 0-1.177.213-1.564.434a3.5 3.5 0 0 0-.58.417l-.004.004S.65 8.5.5 8.5C0 8.5 0 8 0 8c0-3.78 3.375-6.762 7.5-6.986V.5A.5.5 0 0 1 8 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/umbrella.svg b/vendor/twbs/bootstrap-icons/icons/umbrella.svg
new file mode 100644
index 000000000..f7b698cd6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/umbrella.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-umbrella" viewBox="0 0 16 16">
+ <path d="M8 0a.5.5 0 0 1 .5.5v.514C12.625 1.238 16 4.22 16 8c0 0 0 .5-.5.5-.149 0-.352-.145-.352-.145l-.004-.004-.025-.023a3.5 3.5 0 0 0-.555-.394A3.17 3.17 0 0 0 13 7.5c-.638 0-1.178.213-1.564.434a3.5 3.5 0 0 0-.555.394l-.025.023-.003.003s-.204.146-.353.146-.352-.145-.352-.145l-.004-.004-.025-.023a3.5 3.5 0 0 0-.555-.394 3.3 3.3 0 0 0-1.064-.39V13.5H8h.5v.039l-.005.083a3 3 0 0 1-.298 1.102 2.26 2.26 0 0 1-.763.88C7.06 15.851 6.587 16 6 16s-1.061-.148-1.434-.396a2.26 2.26 0 0 1-.763-.88 3 3 0 0 1-.302-1.185v-.025l-.001-.009v-.003s0-.002.5-.002h-.5V13a.5.5 0 0 1 1 0v.506l.003.044a2 2 0 0 0 .195.726c.095.191.23.367.423.495.19.127.466.229.879.229s.689-.102.879-.229c.193-.128.328-.304.424-.495a2 2 0 0 0 .197-.77V7.544a3.3 3.3 0 0 0-1.064.39 3.5 3.5 0 0 0-.58.417l-.004.004S5.65 8.5 5.5 8.5s-.352-.145-.352-.145l-.004-.004a3.5 3.5 0 0 0-.58-.417A3.17 3.17 0 0 0 3 7.5c-.638 0-1.177.213-1.564.434a3.5 3.5 0 0 0-.58.417l-.004.004S.65 8.5.5 8.5C0 8.5 0 8 0 8c0-3.78 3.375-6.762 7.5-6.986V.5A.5.5 0 0 1 8 0M6.577 2.123c-2.833.5-4.99 2.458-5.474 4.854A4.1 4.1 0 0 1 3 6.5c.806 0 1.48.25 1.962.511a9.7 9.7 0 0 1 .344-2.358c.242-.868.64-1.765 1.271-2.53m-.615 4.93A4.16 4.16 0 0 1 8 6.5a4.16 4.16 0 0 1 2.038.553 8.7 8.7 0 0 0-.307-2.13C9.434 3.858 8.898 2.83 8 2.117c-.898.712-1.434 1.74-1.731 2.804a8.7 8.7 0 0 0-.307 2.131zm3.46-4.93c.631.765 1.03 1.662 1.272 2.53.233.833.328 1.66.344 2.358A4.14 4.14 0 0 1 13 6.5c.77 0 1.42.23 1.897.477-.484-2.396-2.641-4.355-5.474-4.854z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/unindent.svg b/vendor/twbs/bootstrap-icons/icons/unindent.svg
new file mode 100644
index 000000000..9e6825586
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/unindent.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-unindent" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M13 8a.5.5 0 0 0-.5-.5H5.707l2.147-2.146a.5.5 0 1 0-.708-.708l-3 3a.5.5 0 0 0 0 .708l3 3a.5.5 0 0 0 .708-.708L5.707 8.5H12.5A.5.5 0 0 0 13 8"/>
+ <path fill-rule="evenodd" d="M3.5 4a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 1 0v-7a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/union.svg b/vendor/twbs/bootstrap-icons/icons/union.svg
new file mode 100644
index 000000000..ba23f543c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/union.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-union" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/unity.svg b/vendor/twbs/bootstrap-icons/icons/unity.svg
new file mode 100644
index 000000000..8b84508a1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/unity.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-unity" viewBox="0 0 16 16">
+ <path d="M15 11.2V3.733L8.61 0v2.867l2.503 1.466c.099.067.099.2 0 .234L8.148 6.3c-.099.067-.197.033-.263 0L4.92 4.567c-.099-.034-.099-.2 0-.234l2.504-1.466V0L1 3.733V11.2v-.033.033l2.438-1.433V6.833c0-.1.131-.166.197-.133L6.6 8.433c.099.067.132.134.132.234v3.466c0 .1-.132.167-.198.134L4.031 10.8l-2.438 1.433L7.983 16l6.391-3.733-2.438-1.434L9.434 12.3c-.099.067-.198 0-.198-.133V8.7c0-.1.066-.2.132-.233l2.965-1.734c.099-.066.197 0 .197.134V9.8z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/universal-access-circle.svg b/vendor/twbs/bootstrap-icons/icons/universal-access-circle.svg
new file mode 100644
index 000000000..e5ea9361c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/universal-access-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-universal-access-circle" viewBox="0 0 16 16">
+ <path d="M8 4.143A1.071 1.071 0 1 0 8 2a1.071 1.071 0 0 0 0 2.143m-4.668 1.47 3.24.316v2.5l-.323 4.585A.383.383 0 0 0 7 13.14l.826-4.017c.045-.18.301-.18.346 0L9 13.139a.383.383 0 0 0 .752-.125L9.43 8.43v-2.5l3.239-.316a.38.38 0 0 0-.047-.756H3.379a.38.38 0 0 0-.047.756Z"/>
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M1 8a7 7 0 1 1 14 0A7 7 0 0 1 1 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/universal-access.svg b/vendor/twbs/bootstrap-icons/icons/universal-access.svg
new file mode 100644
index 000000000..0d0d6efda
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/universal-access.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-universal-access" viewBox="0 0 16 16">
+ <path d="M9.5 1.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M6 5.5l-4.535-.442A.531.531 0 0 1 1.531 4H14.47a.531.531 0 0 1 .066 1.058L10 5.5V9l.452 6.42a.535.535 0 0 1-1.053.174L8.243 9.97c-.064-.252-.422-.252-.486 0l-1.156 5.624a.535.535 0 0 1-1.053-.174L6 9z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/unlock-fill.svg b/vendor/twbs/bootstrap-icons/icons/unlock-fill.svg
new file mode 100644
index 000000000..07156e7ed
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/unlock-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-unlock-fill" viewBox="0 0 16 16">
+ <path d="M11 1a2 2 0 0 0-2 2v4a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h5V3a3 3 0 0 1 6 0v4a.5.5 0 0 1-1 0V3a2 2 0 0 0-2-2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/unlock.svg b/vendor/twbs/bootstrap-icons/icons/unlock.svg
new file mode 100644
index 000000000..4dda5e963
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/unlock.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-unlock" viewBox="0 0 16 16">
+ <path d="M11 1a2 2 0 0 0-2 2v4a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h5V3a3 3 0 0 1 6 0v4a.5.5 0 0 1-1 0V3a2 2 0 0 0-2-2M3 8a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/upc-scan.svg b/vendor/twbs/bootstrap-icons/icons/upc-scan.svg
new file mode 100644
index 000000000..1a8955491
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/upc-scan.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-upc-scan" viewBox="0 0 16 16">
+ <path d="M1.5 1a.5.5 0 0 0-.5.5v3a.5.5 0 0 1-1 0v-3A1.5 1.5 0 0 1 1.5 0h3a.5.5 0 0 1 0 1zM11 .5a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 1 16 1.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 1-.5-.5M.5 11a.5.5 0 0 1 .5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 1 0 1h-3A1.5 1.5 0 0 1 0 14.5v-3a.5.5 0 0 1 .5-.5m15 0a.5.5 0 0 1 .5.5v3a1.5 1.5 0 0 1-1.5 1.5h-3a.5.5 0 0 1 0-1h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 1 .5-.5M3 4.5a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/upc.svg b/vendor/twbs/bootstrap-icons/icons/upc.svg
new file mode 100644
index 000000000..785297d35
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/upc.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-upc" viewBox="0 0 16 16">
+ <path d="M3 4.5a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0zm2 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 1 0v7a.5.5 0 0 1-1 0z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/upload.svg b/vendor/twbs/bootstrap-icons/icons/upload.svg
new file mode 100644
index 000000000..9a4a363c5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/upload.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-upload" viewBox="0 0 16 16">
+ <path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/>
+ <path d="M7.646 1.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 2.707V11.5a.5.5 0 0 1-1 0V2.707L5.354 4.854a.5.5 0 1 1-.708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-c-fill.svg b/vendor/twbs/bootstrap-icons/icons/usb-c-fill.svg
new file mode 100644
index 000000000..759eee2d1
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-c-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-c-fill" viewBox="0 0 16 16">
+ <path d="M3 5a3 3 0 0 0 0 6h10a3 3 0 1 0 0-6zm.5 2.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1 0-1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-c.svg b/vendor/twbs/bootstrap-icons/icons/usb-c.svg
new file mode 100644
index 000000000..11983325e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-c.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-c" viewBox="0 0 16 16">
+ <path d="M3.5 7.5a.5.5 0 0 0 0 1h9a.5.5 0 0 0 0-1z"/>
+ <path d="M0 8a3 3 0 0 1 3-3h10a3 3 0 1 1 0 6H3a3 3 0 0 1-3-3m3-2a2 2 0 1 0 0 4h10a2 2 0 1 0 0-4z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-drive-fill.svg b/vendor/twbs/bootstrap-icons/icons/usb-drive-fill.svg
new file mode 100644
index 000000000..2f656ee63
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-drive-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-drive-fill" viewBox="0 0 16 16">
+ <path d="M6 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4H6zM7 1v1h1V1zm2 0v1h1V1zM5.5 5a.5.5 0 0 0-.5.5V15a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V5.5a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-drive.svg b/vendor/twbs/bootstrap-icons/icons/usb-drive.svg
new file mode 100644
index 000000000..739051d93
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-drive.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-drive" viewBox="0 0 16 16">
+ <path d="M6 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4H6zM7 1v1h1V1zm2 0v1h1V1zM6 5a1 1 0 0 0-1 1v8.5A1.5 1.5 0 0 0 6.5 16h4a1.5 1.5 0 0 0 1.5-1.5V6a1 1 0 0 0-1-1zm0 1h5v8.5a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-fill.svg b/vendor/twbs/bootstrap-icons/icons/usb-fill.svg
new file mode 100644
index 000000000..a3b17faf2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-fill" viewBox="0 0 16 16">
+ <path d="M.5 5a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h15a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5zm1.75 1.5h11.5a.25.25 0 0 1 .25.25v1a.25.25 0 0 1-.25.25H2.25A.25.25 0 0 1 2 7.75v-1a.25.25 0 0 1 .25-.25"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-micro-fill.svg b/vendor/twbs/bootstrap-icons/icons/usb-micro-fill.svg
new file mode 100644
index 000000000..1469a9bc3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-micro-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-micro-fill" viewBox="0 0 16 16">
+ <path d="M2.707 4A1 1 0 0 0 2 4.293L.293 6A1 1 0 0 0 0 6.707V11a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V6.707A1 1 0 0 0 15.707 6L14 4.293A1 1 0 0 0 13.293 4zM4.5 7h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-micro.svg b/vendor/twbs/bootstrap-icons/icons/usb-micro.svg
new file mode 100644
index 000000000..ece7da74f
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-micro.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-micro" viewBox="0 0 16 16">
+ <path d="M4.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M2.707 4A1 1 0 0 0 2 4.293L.293 6A1 1 0 0 0 0 6.707V11a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V6.707A1 1 0 0 0 15.707 6L14 4.293A1 1 0 0 0 13.293 4zm0 1h10.586L15 6.707V11H1V6.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-mini-fill.svg b/vendor/twbs/bootstrap-icons/icons/usb-mini-fill.svg
new file mode 100644
index 000000000..3ab0747b4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-mini-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-mini-fill" viewBox="0 0 16 16">
+ <path d="M3 3a1 1 0 0 0-1 1v1.293L.293 7A1 1 0 0 0 0 7.707V12a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V7.707A1 1 0 0 0 15.707 7L14 5.293V4a1 1 0 0 0-1-1zm.5 5h9a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-mini.svg b/vendor/twbs/bootstrap-icons/icons/usb-mini.svg
new file mode 100644
index 000000000..f095b67c0
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-mini.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-mini" viewBox="0 0 16 16">
+ <path d="M3.5 8a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M3 3a1 1 0 0 0-1 1v1.293L.293 7A1 1 0 0 0 0 7.707V12a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V7.707A1 1 0 0 0 15.707 7L14 5.293V4a1 1 0 0 0-1-1zm0 1h10v1.293a1 1 0 0 0 .293.707L15 7.707V12H1V7.707L2.707 6A1 1 0 0 0 3 5.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-plug-fill.svg b/vendor/twbs/bootstrap-icons/icons/usb-plug-fill.svg
new file mode 100644
index 000000000..d1dc51800
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-plug-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-plug-fill" viewBox="0 0 16 16">
+ <path d="M6 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4H6zM7 1v1h1V1zm2 0v1h1V1zM5.5 5a.5.5 0 0 0-.5.5v4.894a2 2 0 0 0 .336 1.11l.83 1.245c.544.816.834 1.774.834 2.754 0 .275.222.497.497.497h2.006a.497.497 0 0 0 .497-.497c0-.98.29-1.938.834-2.754l.83-1.245a2 2 0 0 0 .336-1.11V5.5a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-plug.svg b/vendor/twbs/bootstrap-icons/icons/usb-plug.svg
new file mode 100644
index 000000000..f3d72209a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-plug.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-plug" viewBox="0 0 16 16">
+ <path d="M6 .5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4H6zM7 1v1h1V1zm2 0v1h1V1zM6 5a1 1 0 0 0-1 1v4.394c0 .494.146.976.42 1.387l1.038 1.558c.354.53.542 1.152.542 1.789 0 .481.39.872.872.872h1.256c.481 0 .872-.39.872-.872 0-.637.188-1.26.541-1.789l1.04-1.558A2.5 2.5 0 0 0 12 10.394V6a1 1 0 0 0-1-1zm0 1h5v4.394a1.5 1.5 0 0 1-.252.832L9.71 12.784A4.2 4.2 0 0 0 9.002 15H7.998a4.2 4.2 0 0 0-.707-2.216l-1.04-1.558A1.5 1.5 0 0 1 6 10.394z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb-symbol.svg b/vendor/twbs/bootstrap-icons/icons/usb-symbol.svg
new file mode 100644
index 000000000..457f93f10
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb-symbol.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb-symbol" viewBox="0 0 16 16">
+ <path d="m7.792.312-1.533 2.3A.25.25 0 0 0 6.467 3H7.5v7.319a2.5 2.5 0 0 0-.515-.298L5.909 9.56A1.5 1.5 0 0 1 5 8.18v-.266a1.5 1.5 0 1 0-1 0v.266a2.5 2.5 0 0 0 1.515 2.298l1.076.461a1.5 1.5 0 0 1 .888 1.129 2.001 2.001 0 1 0 1.021-.006v-.902a1.5 1.5 0 0 1 .756-1.303l1.484-.848A2.5 2.5 0 0 0 11.995 7h.755a.25.25 0 0 0 .25-.25v-2.5a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25v2.5c0 .138.112.25.25.25h.741a1.5 1.5 0 0 1-.747 1.142L8.76 8.99a3 3 0 0 0-.26.17V3h1.033a.25.25 0 0 0 .208-.389L8.208.312a.25.25 0 0 0-.416 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/usb.svg b/vendor/twbs/bootstrap-icons/icons/usb.svg
new file mode 100644
index 000000000..737bef528
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/usb.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-usb" viewBox="0 0 16 16">
+ <path d="M2.25 7a.25.25 0 0 0-.25.25v1c0 .138.112.25.25.25h11.5a.25.25 0 0 0 .25-.25v-1a.25.25 0 0 0-.25-.25z"/>
+ <path d="M0 5.5A.5.5 0 0 1 .5 5h15a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5zM1 10h14V6H1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/valentine.svg b/vendor/twbs/bootstrap-icons/icons/valentine.svg
new file mode 100644
index 000000000..7b8f0a3fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/valentine.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-valentine" viewBox="0 0 16 16">
+ <path d="M8 5.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132M2.25 4a.25.25 0 0 0-.25.25v1.5a.25.25 0 0 0 .5 0V4.5h1.25a.25.25 0 0 0 0-.5zm10 0a.25.25 0 1 0 0 .5h1.25v1.25a.25.25 0 1 0 .5 0v-1.5a.25.25 0 0 0-.25-.25zM2.5 10.25a.25.25 0 1 0-.5 0v1.5c0 .138.112.25.25.25h1.5a.25.25 0 1 0 0-.5H2.5zm11.5 0a.25.25 0 1 0-.5 0v1.25h-1.25a.25.25 0 1 0 0 .5h1.5a.25.25 0 0 0 .25-.25z"/>
+ <path fill-rule="evenodd" d="M0 2.994v-.06a1 1 0 0 1 .859-.99l13-1.857a1 1 0 0 1 1.141.99V2a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zM1 3v10h14V3z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/valentine2.svg b/vendor/twbs/bootstrap-icons/icons/valentine2.svg
new file mode 100644
index 000000000..6d95a2d16
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/valentine2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-valentine2" viewBox="0 0 16 16">
+ <path d="M8 6.493c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132M4.25 3a.25.25 0 0 0-.25.25v1.5a.25.25 0 0 0 .5 0V3.5h1.25a.25.25 0 0 0 0-.5zm6 0a.25.25 0 1 0 0 .5h1.25v1.25a.25.25 0 1 0 .5 0v-1.5a.25.25 0 0 0-.25-.25zM4.5 12.25a.25.25 0 1 0-.5 0v1.5c0 .138.112.25.25.25h1.5a.25.25 0 0 0 0-.5H4.5zm7.5 0a.25.25 0 1 0-.5 0v1.25h-1.25a.25.25 0 1 0 0 .5h1.5a.25.25 0 0 0 .25-.25z"/>
+ <path fill-rule="evenodd" d="M2 1.994v-.042a1 1 0 0 1 .9-.995l9-.9A1 1 0 0 1 13 1a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zM3 2v13h10V2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/vector-pen.svg b/vendor/twbs/bootstrap-icons/icons/vector-pen.svg
new file mode 100644
index 000000000..60115b772
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/vector-pen.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-vector-pen" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M10.646.646a.5.5 0 0 1 .708 0l4 4a.5.5 0 0 1 0 .708l-1.902 1.902-.829 3.313a1.5 1.5 0 0 1-1.024 1.073L1.254 14.746 4.358 4.4A1.5 1.5 0 0 1 5.43 3.377l3.313-.828zm-1.8 2.908-3.173.793a.5.5 0 0 0-.358.342l-2.57 8.565 8.567-2.57a.5.5 0 0 0 .34-.357l.794-3.174-3.6-3.6z"/>
+ <path fill-rule="evenodd" d="M2.832 13.228 8 9a1 1 0 1 0-1-1l-4.228 5.168-.026.086z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/view-list.svg b/vendor/twbs/bootstrap-icons/icons/view-list.svg
new file mode 100644
index 000000000..921154397
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/view-list.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-view-list" viewBox="0 0 16 16">
+ <path d="M3 4.5h10a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2m0 1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1zM1 2a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 2m0 12a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 14"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/view-stacked.svg b/vendor/twbs/bootstrap-icons/icons/view-stacked.svg
new file mode 100644
index 000000000..84b5ccf79
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/view-stacked.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-view-stacked" viewBox="0 0 16 16">
+ <path d="M3 0h10a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m0 1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm0 8h10a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2m0 1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/vignette.svg b/vendor/twbs/bootstrap-icons/icons/vignette.svg
new file mode 100644
index 000000000..d179290c9
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/vignette.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-vignette" viewBox="0 0 16 16">
+ <path d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8"/>
+ <path d="M8.5 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 7a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1.683-6.281a.5.5 0 1 1-.866-.5.5.5 0 0 1 .866.5m-3.5 6.062a.5.5 0 1 1-.866-.5.5.5 0 0 1 .866.5m4.598-4.598a.5.5 0 1 1-.5-.866.5.5 0 0 1 .5.866m-6.062 3.5a.5.5 0 1 1-.5-.866.5.5 0 0 1 .5.866M11.5 8.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m-7 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m6.281 1.683a.5.5 0 1 1 .5-.866.5.5 0 0 1-.5.866m-6.062-3.5a.5.5 0 1 1 .5-.866.5.5 0 0 1-.5.866m4.598 4.598a.5.5 0 1 1 .866-.5.5.5 0 0 1-.866.5m-3.5-6.062a.5.5 0 1 1 .866-.5.5.5 0 0 1-.866.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/vimeo.svg b/vendor/twbs/bootstrap-icons/icons/vimeo.svg
new file mode 100644
index 000000000..6b8e4b5bf
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/vimeo.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-vimeo" viewBox="0 0 16 16">
+ <path d="M15.992 4.204q-.106 2.334-3.262 6.393-3.263 4.243-5.522 4.243-1.4 0-2.367-2.583L3.55 7.523Q2.83 4.939 2.007 4.94q-.178.001-1.254.754L0 4.724a210 210 0 0 0 2.334-2.081q1.581-1.364 2.373-1.437 1.865-.185 2.298 2.553.466 2.952.646 3.666.54 2.447 1.186 2.445.5 0 1.508-1.587 1.006-1.587 1.077-2.415.144-1.37-1.077-1.37a3 3 0 0 0-1.185.261q1.183-3.86 4.508-3.756 2.466.075 2.324 3.2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/vinyl-fill.svg b/vendor/twbs/bootstrap-icons/icons/vinyl-fill.svg
new file mode 100644
index 000000000..546d7bb41
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/vinyl-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-vinyl-fill" viewBox="0 0 16 16">
+ <path d="M8 6a2 2 0 1 0 0 4 2 2 0 0 0 0-4m0 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/>
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M4 8a4 4 0 1 0 8 0 4 4 0 0 0-8 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/vinyl.svg b/vendor/twbs/bootstrap-icons/icons/vinyl.svg
new file mode 100644
index 000000000..63647e56c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/vinyl.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-vinyl" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M8 6a2 2 0 1 0 0 4 2 2 0 0 0 0-4M4 8a4 4 0 1 1 8 0 4 4 0 0 1-8 0"/>
+ <path d="M9 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/virus.svg b/vendor/twbs/bootstrap-icons/icons/virus.svg
new file mode 100644
index 000000000..fd291a572
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/virus.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-virus" viewBox="0 0 16 16">
+ <path d="M8 0a1 1 0 0 1 1 1v1.402c0 .511.677.693.933.25l.7-1.214a1 1 0 0 1 1.733 1l-.701 1.214c-.256.443.24.939.683.683l1.214-.701a1 1 0 0 1 1 1.732l-1.214.701c-.443.256-.262.933.25.933H15a1 1 0 1 1 0 2h-1.402c-.512 0-.693.677-.25.933l1.214.701a1 1 0 1 1-1 1.732l-1.214-.7c-.443-.257-.939.24-.683.682l.701 1.214a1 1 0 1 1-1.732 1l-.701-1.214c-.256-.443-.933-.262-.933.25V15a1 1 0 1 1-2 0v-1.402c0-.512-.677-.693-.933-.25l-.701 1.214a1 1 0 0 1-1.732-1l.7-1.214c.257-.443-.24-.939-.682-.683l-1.214.701a1 1 0 1 1-1-1.732l1.214-.701c.443-.256.261-.933-.25-.933H1a1 1 0 1 1 0-2h1.402c.511 0 .693-.677.25-.933l-1.214-.701a1 1 0 1 1 1-1.732l1.214.701c.443.256.939-.24.683-.683l-.701-1.214a1 1 0 0 1 1.732-1l.701 1.214c.256.443.933.261.933-.25V1a1 1 0 0 1 1-1m2 5a1 1 0 1 0-2 0 1 1 0 0 0 2 0M6 7a1 1 0 1 0-2 0 1 1 0 0 0 2 0m1 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2m5-3a1 1 0 1 0-2 0 1 1 0 0 0 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/virus2.svg b/vendor/twbs/bootstrap-icons/icons/virus2.svg
new file mode 100644
index 000000000..53f44e942
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/virus2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-virus2" viewBox="0 0 16 16">
+ <path d="M8 0a1 1 0 0 0-1 1v1.143c0 .557-.407 1.025-.921 1.24-.514.214-1.12.162-1.513-.231l-.809-.809a1 1 0 1 0-1.414 1.414l.809.809c.394.394.445.999.23 1.513C3.169 6.593 2.7 7 2.144 7H1a1 1 0 0 0 0 2h1.143c.557 0 1.025.407 1.24.921.214.514.163 1.12-.231 1.513l-.809.809a1 1 0 0 0 1.414 1.414l.809-.809c.394-.394.999-.445 1.513-.23.514.214.921.682.921 1.24V15a1 1 0 1 0 2 0v-1.143c0-.557.407-1.025.921-1.24.514-.214 1.12-.162 1.513.231l.809.809a1 1 0 0 0 1.414-1.414l-.809-.809c-.393-.394-.445-.999-.23-1.513.214-.514.682-.921 1.24-.921H15a1 1 0 1 0 0-2h-1.143c-.557 0-1.025-.407-1.24-.921-.214-.514-.162-1.12.231-1.513l.809-.809a1 1 0 0 0-1.414-1.414l-.809.809c-.394.393-.999.445-1.513.23-.514-.214-.92-.682-.92-1.24V1a1 1 0 0 0-1-1Zm2 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0m1 5a1 1 0 1 1 0-2 1 1 0 0 1 0 2m4-4a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/voicemail.svg b/vendor/twbs/bootstrap-icons/icons/voicemail.svg
new file mode 100644
index 000000000..ba22eb1fc
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/voicemail.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-voicemail" viewBox="0 0 16 16">
+ <path d="M7 8.5A3.5 3.5 0 0 1 5.95 11h4.1a3.5 3.5 0 1 1 2.45 1h-9A3.5 3.5 0 1 1 7 8.5m-6 0a2.5 2.5 0 1 0 5 0 2.5 2.5 0 0 0-5 0m14 0a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/volume-down-fill.svg b/vendor/twbs/bootstrap-icons/icons/volume-down-fill.svg
new file mode 100644
index 000000000..681d349e7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/volume-down-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-volume-down-fill" viewBox="0 0 16 16">
+ <path d="M9 4a.5.5 0 0 0-.812-.39L5.825 5.5H3.5A.5.5 0 0 0 3 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 9 12zm3.025 4a4.5 4.5 0 0 1-1.318 3.182L10 10.475A3.5 3.5 0 0 0 11.025 8 3.5 3.5 0 0 0 10 5.525l.707-.707A4.5 4.5 0 0 1 12.025 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/volume-down.svg b/vendor/twbs/bootstrap-icons/icons/volume-down.svg
new file mode 100644
index 000000000..3ca7e6a8d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/volume-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-volume-down" viewBox="0 0 16 16">
+ <path d="M9 4a.5.5 0 0 0-.812-.39L5.825 5.5H3.5A.5.5 0 0 0 3 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 9 12zM6.312 6.39 8 5.04v5.92L6.312 9.61A.5.5 0 0 0 6 9.5H4v-3h2a.5.5 0 0 0 .312-.11M12.025 8a4.5 4.5 0 0 1-1.318 3.182L10 10.475A3.5 3.5 0 0 0 11.025 8 3.5 3.5 0 0 0 10 5.525l.707-.707A4.5 4.5 0 0 1 12.025 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/volume-mute-fill.svg b/vendor/twbs/bootstrap-icons/icons/volume-mute-fill.svg
new file mode 100644
index 000000000..148628c2d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/volume-mute-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-volume-mute-fill" viewBox="0 0 16 16">
+ <path d="M6.717 3.55A.5.5 0 0 1 7 4v8a.5.5 0 0 1-.812.39L3.825 10.5H1.5A.5.5 0 0 1 1 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06m7.137 2.096a.5.5 0 0 1 0 .708L12.207 8l1.647 1.646a.5.5 0 0 1-.708.708L11.5 8.707l-1.646 1.647a.5.5 0 0 1-.708-.708L10.793 8 9.146 6.354a.5.5 0 1 1 .708-.708L11.5 7.293l1.646-1.647a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/volume-mute.svg b/vendor/twbs/bootstrap-icons/icons/volume-mute.svg
new file mode 100644
index 000000000..d06d3dc2d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/volume-mute.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-volume-mute" viewBox="0 0 16 16">
+ <path d="M6.717 3.55A.5.5 0 0 1 7 4v8a.5.5 0 0 1-.812.39L3.825 10.5H1.5A.5.5 0 0 1 1 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06M6 5.04 4.312 6.39A.5.5 0 0 1 4 6.5H2v3h2a.5.5 0 0 1 .312.11L6 10.96zm7.854.606a.5.5 0 0 1 0 .708L12.207 8l1.647 1.646a.5.5 0 0 1-.708.708L11.5 8.707l-1.646 1.647a.5.5 0 0 1-.708-.708L10.793 8 9.146 6.354a.5.5 0 1 1 .708-.708L11.5 7.293l1.646-1.647a.5.5 0 0 1 .708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/volume-off-fill.svg b/vendor/twbs/bootstrap-icons/icons/volume-off-fill.svg
new file mode 100644
index 000000000..315110afb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/volume-off-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-volume-off-fill" viewBox="0 0 16 16">
+ <path d="M10.717 3.55A.5.5 0 0 1 11 4v8a.5.5 0 0 1-.812.39L7.825 10.5H5.5A.5.5 0 0 1 5 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/volume-off.svg b/vendor/twbs/bootstrap-icons/icons/volume-off.svg
new file mode 100644
index 000000000..e5f82ccbd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/volume-off.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-volume-off" viewBox="0 0 16 16">
+ <path d="M10.717 3.55A.5.5 0 0 1 11 4v8a.5.5 0 0 1-.812.39L7.825 10.5H5.5A.5.5 0 0 1 5 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06M10 5.04 8.312 6.39A.5.5 0 0 1 8 6.5H6v3h2a.5.5 0 0 1 .312.11L10 10.96z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/volume-up-fill.svg b/vendor/twbs/bootstrap-icons/icons/volume-up-fill.svg
new file mode 100644
index 000000000..0f94073e2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/volume-up-fill.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-volume-up-fill" viewBox="0 0 16 16">
+ <path d="M11.536 14.01A8.47 8.47 0 0 0 14.026 8a8.47 8.47 0 0 0-2.49-6.01l-.708.707A7.48 7.48 0 0 1 13.025 8c0 2.071-.84 3.946-2.197 5.303z"/>
+ <path d="M10.121 12.596A6.48 6.48 0 0 0 12.025 8a6.48 6.48 0 0 0-1.904-4.596l-.707.707A5.48 5.48 0 0 1 11.025 8a5.48 5.48 0 0 1-1.61 3.89z"/>
+ <path d="M8.707 11.182A4.5 4.5 0 0 0 10.025 8a4.5 4.5 0 0 0-1.318-3.182L8 5.525A3.5 3.5 0 0 1 9.025 8 3.5 3.5 0 0 1 8 10.475zM6.717 3.55A.5.5 0 0 1 7 4v8a.5.5 0 0 1-.812.39L3.825 10.5H1.5A.5.5 0 0 1 1 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/volume-up.svg b/vendor/twbs/bootstrap-icons/icons/volume-up.svg
new file mode 100644
index 000000000..6347f4210
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/volume-up.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-volume-up" viewBox="0 0 16 16">
+ <path d="M11.536 14.01A8.47 8.47 0 0 0 14.026 8a8.47 8.47 0 0 0-2.49-6.01l-.708.707A7.48 7.48 0 0 1 13.025 8c0 2.071-.84 3.946-2.197 5.303z"/>
+ <path d="M10.121 12.596A6.48 6.48 0 0 0 12.025 8a6.48 6.48 0 0 0-1.904-4.596l-.707.707A5.48 5.48 0 0 1 11.025 8a5.48 5.48 0 0 1-1.61 3.89z"/>
+ <path d="M10.025 8a4.5 4.5 0 0 1-1.318 3.182L8 10.475A3.5 3.5 0 0 0 9.025 8c0-.966-.392-1.841-1.025-2.475l.707-.707A4.5 4.5 0 0 1 10.025 8M7 4a.5.5 0 0 0-.812-.39L3.825 5.5H1.5A.5.5 0 0 0 1 6v4a.5.5 0 0 0 .5.5h2.325l2.363 1.89A.5.5 0 0 0 7 12zM4.312 6.39 6 5.04v5.92L4.312 9.61A.5.5 0 0 0 4 9.5H2v-3h2a.5.5 0 0 0 .312-.11"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/vr.svg b/vendor/twbs/bootstrap-icons/icons/vr.svg
new file mode 100644
index 000000000..5ad5438cb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/vr.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-vr" viewBox="0 0 16 16">
+ <path d="M3 12V4a1 1 0 0 1 1-1h2.5V2H4a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5v-1H4a1 1 0 0 1-1-1m6.5 1v1H12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H9.5v1H12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1zM8 16a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 1 0v15a.5.5 0 0 1-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wallet-fill.svg b/vendor/twbs/bootstrap-icons/icons/wallet-fill.svg
new file mode 100644
index 000000000..ee1c27d0c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wallet-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wallet-fill" viewBox="0 0 16 16">
+ <path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v2h6a.5.5 0 0 1 .5.5c0 .253.08.644.306.958.207.288.557.542 1.194.542s.987-.254 1.194-.542C9.42 6.644 9.5 6.253 9.5 6a.5.5 0 0 1 .5-.5h6v-2A1.5 1.5 0 0 0 14.5 2z"/>
+ <path d="M16 6.5h-5.551a2.7 2.7 0 0 1-.443 1.042C9.613 8.088 8.963 8.5 8 8.5s-1.613-.412-2.006-.958A2.7 2.7 0 0 1 5.551 6.5H0v6A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wallet.svg b/vendor/twbs/bootstrap-icons/icons/wallet.svg
new file mode 100644
index 000000000..6c9d247db
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wallet.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wallet" viewBox="0 0 16 16">
+ <path d="M0 3a2 2 0 0 1 2-2h13.5a.5.5 0 0 1 0 1H15v2a1 1 0 0 1 1 1v8.5a1.5 1.5 0 0 1-1.5 1.5h-12A2.5 2.5 0 0 1 0 12.5zm1 1.732V12.5A1.5 1.5 0 0 0 2.5 14h12a.5.5 0 0 0 .5-.5V5H2a2 2 0 0 1-1-.268M1 3a1 1 0 0 0 1 1h12V2H2a1 1 0 0 0-1 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wallet2.svg b/vendor/twbs/bootstrap-icons/icons/wallet2.svg
new file mode 100644
index 000000000..b127b0e53
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wallet2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wallet2" viewBox="0 0 16 16">
+ <path d="M12.136.326A1.5 1.5 0 0 1 14 1.78V3h.5A1.5 1.5 0 0 1 16 4.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 13.5v-9a1.5 1.5 0 0 1 1.432-1.499zM5.562 3H13V1.78a.5.5 0 0 0-.621-.484zM1.5 4a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/watch.svg b/vendor/twbs/bootstrap-icons/icons/watch.svg
new file mode 100644
index 000000000..542d4d87a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/watch.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-watch" viewBox="0 0 16 16">
+ <path d="M8.5 5a.5.5 0 0 0-1 0v2.5H6a.5.5 0 0 0 0 1h2a.5.5 0 0 0 .5-.5z"/>
+ <path d="M5.667 16C4.747 16 4 15.254 4 14.333v-1.86A6 6 0 0 1 2 8c0-1.777.772-3.374 2-4.472V1.667C4 .747 4.746 0 5.667 0h4.666C11.253 0 12 .746 12 1.667v1.86a6 6 0 0 1 1.918 3.48.502.502 0 0 1 .582.493v1a.5.5 0 0 1-.582.493A6 6 0 0 1 12 12.473v1.86c0 .92-.746 1.667-1.667 1.667zM13 8A5 5 0 1 0 3 8a5 5 0 0 0 10 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/water.svg b/vendor/twbs/bootstrap-icons/icons/water.svg
new file mode 100644
index 000000000..666653bac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/water.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-water" viewBox="0 0 16 16">
+ <path d="M.036 3.314a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0L.314 3.964a.5.5 0 0 1-.278-.65m0 3a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0L.314 6.964a.5.5 0 0 1-.278-.65m0 3a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0L.314 9.964a.5.5 0 0 1-.278-.65m0 3a.5.5 0 0 1 .65-.278l1.757.703a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.014-.406a2.5 2.5 0 0 1 1.857 0l1.015.406a1.5 1.5 0 0 0 1.114 0l1.757-.703a.5.5 0 1 1 .372.928l-1.758.703a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.014-.406a1.5 1.5 0 0 0-1.114 0l-1.015.406a2.5 2.5 0 0 1-1.857 0l-1.757-.703a.5.5 0 0 1-.278-.65"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/webcam-fill.svg b/vendor/twbs/bootstrap-icons/icons/webcam-fill.svg
new file mode 100644
index 000000000..e8db7ba89
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/webcam-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-webcam-fill" viewBox="0 0 16 16">
+ <path d="M6.644 11.094a.5.5 0 0 1 .356-.15h2a.5.5 0 0 1 .356.15c.175.177.39.347.603.496a7 7 0 0 0 .752.456l.01.006h.003A.5.5 0 0 1 10.5 13h-5a.5.5 0 0 1-.224-.947l.002-.001.01-.006a4 4 0 0 0 .214-.116 8 8 0 0 0 .539-.34c.214-.15.428-.319.603-.496M7 6.5a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/>
+ <path d="M2 3a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm6 1.5a2 2 0 1 1 0 4 2 2 0 0 1 0-4M12.5 7a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/webcam.svg b/vendor/twbs/bootstrap-icons/icons/webcam.svg
new file mode 100644
index 000000000..0d23803da
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/webcam.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-webcam" viewBox="0 0 16 16">
+ <path d="M0 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H9.269c.144.162.33.324.531.475a7 7 0 0 0 .907.57l.014.006.003.002A.5.5 0 0 1 10.5 13h-5a.5.5 0 0 1-.224-.947l.003-.002.014-.007a5 5 0 0 0 .268-.148 7 7 0 0 0 .639-.421c.2-.15.387-.313.531-.475H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1z"/>
+ <path d="M8 6.5a1 1 0 1 0 0 2 1 1 0 0 0 0-2m-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0m7 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wechat.svg b/vendor/twbs/bootstrap-icons/icons/wechat.svg
new file mode 100644
index 000000000..3bc67dd97
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wechat.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wechat" viewBox="0 0 16 16">
+ <path d="M11.176 14.429c-2.665 0-4.826-1.8-4.826-4.018 0-2.22 2.159-4.02 4.824-4.02S16 8.191 16 10.411c0 1.21-.65 2.301-1.666 3.036a.32.32 0 0 0-.12.366l.218.81a.6.6 0 0 1 .029.117.166.166 0 0 1-.162.162.2.2 0 0 1-.092-.03l-1.057-.61a.5.5 0 0 0-.256-.074.5.5 0 0 0-.142.021 5.7 5.7 0 0 1-1.576.22M9.064 9.542a.647.647 0 1 0 .557-1 .645.645 0 0 0-.646.647.6.6 0 0 0 .09.353Zm3.232.001a.646.646 0 1 0 .546-1 .645.645 0 0 0-.644.644.63.63 0 0 0 .098.356"/>
+ <path d="M0 6.826c0 1.455.781 2.765 2.001 3.656a.385.385 0 0 1 .143.439l-.161.6-.1.373a.5.5 0 0 0-.032.14.19.19 0 0 0 .193.193q.06 0 .111-.029l1.268-.733a.6.6 0 0 1 .308-.088q.088 0 .171.025a6.8 6.8 0 0 0 1.625.26 4.5 4.5 0 0 1-.177-1.251c0-2.936 2.785-5.02 5.824-5.02l.15.002C10.587 3.429 8.392 2 5.796 2 2.596 2 0 4.16 0 6.826m4.632-1.555a.77.77 0 1 1-1.54 0 .77.77 0 0 1 1.54 0m3.875 0a.77.77 0 1 1-1.54 0 .77.77 0 0 1 1.54 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/whatsapp.svg b/vendor/twbs/bootstrap-icons/icons/whatsapp.svg
new file mode 100644
index 000000000..5cde6f781
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/whatsapp.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-whatsapp" viewBox="0 0 16 16">
+ <path d="M13.601 2.326A7.85 7.85 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.9 7.9 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.9 7.9 0 0 0 13.6 2.326zM7.994 14.521a6.6 6.6 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.56 6.56 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592m3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.114.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.114-.198-.011-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.323-.335-.445-.34-.114-.007-.247-.007-.38-.007a.73.73 0 0 0-.529.247c-.182.198-.691.677-.691 1.654s.71 1.916.81 2.049c.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058 1.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wifi-1.svg b/vendor/twbs/bootstrap-icons/icons/wifi-1.svg
new file mode 100644
index 000000000..5f3d3407b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wifi-1.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wifi-1" viewBox="0 0 16 16">
+ <path d="M11.046 10.454c.226-.226.185-.605-.1-.75A6.5 6.5 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.407.19.611.09A5.5 5.5 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.611-.091zM9.06 12.44c.196-.196.198-.52-.04-.66A2 2 0 0 0 8 11.5a2 2 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .707 0l.708-.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wifi-2.svg b/vendor/twbs/bootstrap-icons/icons/wifi-2.svg
new file mode 100644
index 000000000..09d26c236
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wifi-2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wifi-2" viewBox="0 0 16 16">
+ <path d="M13.229 8.271c.216-.216.194-.578-.063-.745A9.46 9.46 0 0 0 8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065A8.46 8.46 0 0 1 8 7a8.46 8.46 0 0 1 4.577 1.336c.205.132.48.108.652-.065m-2.183 2.183c.226-.226.185-.605-.1-.75A6.5 6.5 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.408.19.611.09A5.5 5.5 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.611-.091zM9.06 12.44c.196-.196.198-.52-.04-.66A2 2 0 0 0 8 11.5a2 2 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .708 0l.707-.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wifi-off.svg b/vendor/twbs/bootstrap-icons/icons/wifi-off.svg
new file mode 100644
index 000000000..2f5e61ffb
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wifi-off.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wifi-off" viewBox="0 0 16 16">
+ <path d="M10.706 3.294A12.6 12.6 0 0 0 8 3C5.259 3 2.723 3.882.663 5.379a.485.485 0 0 0-.048.736.52.52 0 0 0 .668.05A11.45 11.45 0 0 1 8 4q.946 0 1.852.148zM8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065 8.45 8.45 0 0 1 3.51-1.27zm2.596 1.404.785-.785q.947.362 1.785.907a.482.482 0 0 1 .063.745.525.525 0 0 1-.652.065 8.5 8.5 0 0 0-1.98-.932zM8 10l.933-.933a6.5 6.5 0 0 1 2.013.637c.285.145.326.524.1.75l-.015.015a.53.53 0 0 1-.611.09A5.5 5.5 0 0 0 8 10m4.905-4.905.747-.747q.886.451 1.685 1.03a.485.485 0 0 1 .047.737.52.52 0 0 1-.668.05 11.5 11.5 0 0 0-1.811-1.07M9.02 11.78c.238.14.236.464.04.66l-.707.706a.5.5 0 0 1-.707 0l-.707-.707c-.195-.195-.197-.518.04-.66A2 2 0 0 1 8 11.5c.374 0 .723.102 1.021.28zm4.355-9.905a.53.53 0 0 1 .75.75l-10.75 10.75a.53.53 0 0 1-.75-.75z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wifi.svg b/vendor/twbs/bootstrap-icons/icons/wifi.svg
new file mode 100644
index 000000000..773e027da
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wifi.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wifi" viewBox="0 0 16 16">
+ <path d="M15.384 6.115a.485.485 0 0 0-.047-.736A12.44 12.44 0 0 0 8 3C5.259 3 2.723 3.882.663 5.379a.485.485 0 0 0-.048.736.52.52 0 0 0 .668.05A11.45 11.45 0 0 1 8 4c2.507 0 4.827.802 6.716 2.164.205.148.49.13.668-.049"/>
+ <path d="M13.229 8.271a.482.482 0 0 0-.063-.745A9.46 9.46 0 0 0 8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065A8.46 8.46 0 0 1 8 7a8.46 8.46 0 0 1 4.576 1.336c.206.132.48.108.653-.065m-2.183 2.183c.226-.226.185-.605-.1-.75A6.5 6.5 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.407.19.611.09A5.5 5.5 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.61-.091zM9.06 12.44c.196-.196.198-.52-.04-.66A2 2 0 0 0 8 11.5a2 2 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .707 0l.707-.707z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wikipedia.svg b/vendor/twbs/bootstrap-icons/icons/wikipedia.svg
new file mode 100644
index 000000000..11f2fc6a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wikipedia.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wikipedia" viewBox="0 0 16 16">
+ <path d="M8.835 3.003c.828-.006 2.688 0 2.688 0l.033.03v.288q0 .12-.133.12c-.433.02-.522.063-.68.29-.087.126-.258.393-.435.694l-1.52 2.843-.043.089 1.858 3.801.113.031 2.926-6.946q.152-.42-.044-.595c-.132-.114-.224-.18-.563-.195l-.275-.014a.16.16 0 0 1-.096-.035.1.1 0 0 1-.046-.084v-.289l.042-.03h3.306l.034.03v.29q0 .117-.133.117-.65.03-.962.281a1.64 1.64 0 0 0-.488.704s-2.691 6.16-3.612 8.208c-.353.672-.7.61-1.004-.019A224 224 0 0 1 8.044 8.81c-.623 1.285-1.475 3.026-1.898 3.81-.411.715-.75.622-1.02.019-.45-1.065-1.131-2.519-1.817-3.982-.735-1.569-1.475-3.149-1.943-4.272-.167-.4-.293-.657-.412-.759q-.18-.15-.746-.18Q0 3.421 0 3.341v-.303l.034-.03c.615-.003 3.594 0 3.594 0l.034.03v.288q0 .119-.15.118l-.375.016q-.483.02-.483.288-.002.125.109.4c.72 1.753 3.207 6.998 3.207 6.998l.091.023 1.603-3.197-.32-.71L6.24 5.095s-.213-.433-.286-.577l-.098-.196c-.387-.77-.411-.82-.865-.88-.137-.017-.208-.035-.208-.102v-.304l.041-.03h2.853l.075.024v.303q0 .104-.15.104l-.206.03c-.523.04-.438.254-.09.946l1.057 2.163 1.17-2.332c.195-.427.155-.534.074-.633-.046-.055-.202-.144-.54-.158l-.133-.015a.16.16 0 0 1-.096-.034.1.1 0 0 1-.045-.085v-.288l.041-.03Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wind.svg b/vendor/twbs/bootstrap-icons/icons/wind.svg
new file mode 100644
index 000000000..2ac05cd8c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wind.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wind" viewBox="0 0 16 16">
+ <path d="M12.5 2A2.5 2.5 0 0 0 10 4.5a.5.5 0 0 1-1 0A3.5 3.5 0 1 1 12.5 8H.5a.5.5 0 0 1 0-1h12a2.5 2.5 0 0 0 0-5m-7 1a1 1 0 0 0-1 1 .5.5 0 0 1-1 0 2 2 0 1 1 2 2h-5a.5.5 0 0 1 0-1h5a1 1 0 0 0 0-2M0 9.5A.5.5 0 0 1 .5 9h10.042a3 3 0 1 1-3 3 .5.5 0 0 1 1 0 2 2 0 1 0 2-2H.5a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/window-dash.svg b/vendor/twbs/bootstrap-icons/icons/window-dash.svg
new file mode 100644
index 000000000..5e157af25
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/window-dash.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-window-dash" viewBox="0 0 16 16">
+ <path d="M2.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M4 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+ <path d="M0 4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V7H1v5a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2zm1 2h13V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-5.5 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/window-desktop.svg b/vendor/twbs/bootstrap-icons/icons/window-desktop.svg
new file mode 100644
index 000000000..fa1752337
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/window-desktop.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-window-desktop" viewBox="0 0 16 16">
+ <path d="M3.5 11a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M2.375 1A2.366 2.366 0 0 0 0 3.357v9.286A2.366 2.366 0 0 0 2.375 15h11.25A2.366 2.366 0 0 0 16 12.643V3.357A2.366 2.366 0 0 0 13.625 1zM1 3.357C1 2.612 1.611 2 2.375 2h11.25C14.389 2 15 2.612 15 3.357V4H1zM1 5h14v7.643c0 .745-.611 1.357-1.375 1.357H2.375A1.366 1.366 0 0 1 1 12.643z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/window-dock.svg b/vendor/twbs/bootstrap-icons/icons/window-dock.svg
new file mode 100644
index 000000000..41cdf699b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/window-dock.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-window-dock" viewBox="0 0 16 16">
+ <path d="M3.5 11a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm3.5.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm4.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"/>
+ <path d="M14 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM2 14h12a1 1 0 0 0 1-1V5H1v8a1 1 0 0 0 1 1M2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/window-fullscreen.svg b/vendor/twbs/bootstrap-icons/icons/window-fullscreen.svg
new file mode 100644
index 000000000..421c4c510
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/window-fullscreen.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-window-fullscreen" viewBox="0 0 16 16">
+ <path d="M3 3.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1.5 0a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1 .5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+ <path d="M.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h15a.5.5 0 0 0 .5-.5v-13a.5.5 0 0 0-.5-.5zM1 5V2h14v3zm0 1h14v8H1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/window-plus.svg b/vendor/twbs/bootstrap-icons/icons/window-plus.svg
new file mode 100644
index 000000000..e24ce0c28
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/window-plus.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-window-plus" viewBox="0 0 16 16">
+ <path d="M2.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M4 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+ <path d="M0 4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V7H1v5a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2zm1 2h13V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-3.5-2a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1a.5.5 0 0 0-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/window-sidebar.svg b/vendor/twbs/bootstrap-icons/icons/window-sidebar.svg
new file mode 100644
index 000000000..d020d135e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/window-sidebar.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-window-sidebar" viewBox="0 0 16 16">
+ <path d="M2.5 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1 .5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+ <path d="M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v2H1V3a1 1 0 0 1 1-1zM1 13V6h4v8H2a1 1 0 0 1-1-1m5 1V6h9v7a1 1 0 0 1-1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/window-split.svg b/vendor/twbs/bootstrap-icons/icons/window-split.svg
new file mode 100644
index 000000000..96bdd2415
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/window-split.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-window-split" viewBox="0 0 16 16">
+ <path d="M2.5 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1 .5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+ <path d="M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm12 1a1 1 0 0 1 1 1v2H1V3a1 1 0 0 1 1-1zM1 13V6h6.5v8H2a1 1 0 0 1-1-1m7.5 1V6H15v7a1 1 0 0 1-1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/window-stack.svg b/vendor/twbs/bootstrap-icons/icons/window-stack.svg
new file mode 100644
index 000000000..886297639
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/window-stack.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-window-stack" viewBox="0 0 16 16">
+ <path d="M4.5 6a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M6 6a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+ <path d="M12 1a2 2 0 0 1 2 2 2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2 2 2 0 0 1-2-2V3a2 2 0 0 1 2-2zM2 12V5a2 2 0 0 1 2-2h9a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1m1-4v5a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V8zm12-1V5a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v2z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/window-x.svg b/vendor/twbs/bootstrap-icons/icons/window-x.svg
new file mode 100644
index 000000000..c45e07888
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/window-x.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-window-x" viewBox="0 0 16 16">
+ <path d="M2.5 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M4 5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+ <path d="M0 4a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v4a.5.5 0 0 1-1 0V7H1v5a1 1 0 0 0 1 1h5.5a.5.5 0 0 1 0 1H2a2 2 0 0 1-2-2zm1 2h13V4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z"/>
+ <path d="M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-4.854-1.354a.5.5 0 0 0 0 .708l.647.646-.647.646a.5.5 0 0 0 .708.708l.646-.647.646.647a.5.5 0 0 0 .708-.708l-.647-.646.647-.646a.5.5 0 0 0-.708-.708l-.646.647-.646-.647a.5.5 0 0 0-.708 0"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/window.svg b/vendor/twbs/bootstrap-icons/icons/window.svg
new file mode 100644
index 000000000..9bd2a2af8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/window.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-window" viewBox="0 0 16 16">
+ <path d="M2.5 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m2-.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1 .5a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1"/>
+ <path d="M2 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm13 2v2H1V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1M2 14a1 1 0 0 1-1-1V6h14v7a1 1 0 0 1-1 1z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/windows.svg b/vendor/twbs/bootstrap-icons/icons/windows.svg
new file mode 100644
index 000000000..af3b18c5c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/windows.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-windows" viewBox="0 0 16 16">
+ <path d="M6.555 1.375 0 2.237v5.45h6.555zM0 13.795l6.555.933V8.313H0zm7.278-5.4.026 6.378L16 16V8.395zM16 0 7.33 1.244v6.414H16z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wordpress.svg b/vendor/twbs/bootstrap-icons/icons/wordpress.svg
new file mode 100644
index 000000000..7d5808ce6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wordpress.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wordpress" viewBox="0 0 16 16">
+ <path d="M12.633 7.653c0-.848-.305-1.435-.566-1.892l-.08-.13c-.317-.51-.594-.958-.594-1.48 0-.63.478-1.218 1.152-1.218q.03 0 .058.003l.031.003A6.84 6.84 0 0 0 8 1.137 6.86 6.86 0 0 0 2.266 4.23c.16.005.313.009.442.009.717 0 1.828-.087 1.828-.087.37-.022.414.521.044.565 0 0-.371.044-.785.065l2.5 7.434 1.5-4.506-1.07-2.929c-.369-.022-.719-.065-.719-.065-.37-.022-.326-.588.043-.566 0 0 1.134.087 1.808.087.718 0 1.83-.087 1.83-.087.37-.022.413.522.043.566 0 0-.372.043-.785.065l2.48 7.377.684-2.287.054-.173c.27-.86.469-1.495.469-2.046zM1.137 8a6.86 6.86 0 0 0 3.868 6.176L1.73 5.206A6.8 6.8 0 0 0 1.137 8"/>
+ <path d="M6.061 14.583 8.121 8.6l2.109 5.78q.02.05.049.094a6.85 6.85 0 0 1-4.218.109m7.96-9.876q.046.328.047.706c0 .696-.13 1.479-.522 2.458l-2.096 6.06a6.86 6.86 0 0 0 2.572-9.224z"/>
+ <path fill-rule="evenodd" d="M0 8c0-4.411 3.589-8 8-8s8 3.589 8 8-3.59 8-8 8-8-3.589-8-8m.367 0c0 4.209 3.424 7.633 7.633 7.633S15.632 12.209 15.632 8C15.632 3.79 12.208.367 8 .367 3.79.367.367 3.79.367 8"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wrench-adjustable-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/wrench-adjustable-circle-fill.svg
new file mode 100644
index 000000000..33156c7e6
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wrench-adjustable-circle-fill.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wrench-adjustable-circle-fill" viewBox="0 0 16 16">
+ <path d="M6.705 8.139a.25.25 0 0 0-.288-.376l-1.5.5.159.474.808-.27-.595.894a.25.25 0 0 0 .287.376l.808-.27-.595.894a.25.25 0 0 0 .287.376l1.5-.5-.159-.474-.808.27.596-.894a.25.25 0 0 0-.288-.376l-.808.27z"/>
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m-6.202-4.751 1.988-1.657a4.5 4.5 0 0 1 7.537-4.623L7.497 6.5l1 2.5 1.333 3.11c-.56.251-1.18.39-1.833.39a4.5 4.5 0 0 1-1.592-.29L4.747 14.2a7.03 7.03 0 0 1-2.949-2.951M12.496 8a4.5 4.5 0 0 1-1.703 3.526L9.497 8.5l2.959-1.11q.04.3.04.61"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wrench-adjustable-circle.svg b/vendor/twbs/bootstrap-icons/icons/wrench-adjustable-circle.svg
new file mode 100644
index 000000000..381fb304b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wrench-adjustable-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wrench-adjustable-circle" viewBox="0 0 16 16">
+ <path d="M12.496 8a4.5 4.5 0 0 1-1.703 3.526L9.497 8.5l2.959-1.11q.04.3.04.61"/>
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-1 0a7 7 0 1 0-13.202 3.249l1.988-1.657a4.5 4.5 0 0 1 7.537-4.623L7.497 6.5l1 2.5 1.333 3.11c-.56.251-1.18.39-1.833.39a4.5 4.5 0 0 1-1.592-.29L4.747 14.2A7 7 0 0 0 15 8m-8.295.139a.25.25 0 0 0-.288-.376l-1.5.5.159.474.808-.27-.595.894a.25.25 0 0 0 .287.376l.808-.27-.595.894a.25.25 0 0 0 .287.376l1.5-.5-.159-.474-.808.27.596-.894a.25.25 0 0 0-.288-.376l-.808.27z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wrench-adjustable.svg b/vendor/twbs/bootstrap-icons/icons/wrench-adjustable.svg
new file mode 100644
index 000000000..e7456d7f5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wrench-adjustable.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wrench-adjustable" viewBox="0 0 16 16">
+ <path d="M16 4.5a4.5 4.5 0 0 1-1.703 3.526L13 5l2.959-1.11q.04.3.041.61"/>
+ <path d="M11.5 9c.653 0 1.273-.139 1.833-.39L12 5.5 11 3l3.826-1.53A4.5 4.5 0 0 0 7.29 6.092l-6.116 5.096a2.583 2.583 0 1 0 3.638 3.638L9.908 8.71A4.5 4.5 0 0 0 11.5 9m-1.292-4.361-.596.893.809-.27a.25.25 0 0 1 .287.377l-.596.893.809-.27.158.475-1.5.5a.25.25 0 0 1-.287-.376l.596-.893-.809.27a.25.25 0 0 1-.287-.377l.596-.893-.809.27-.158-.475 1.5-.5a.25.25 0 0 1 .287.376M3 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/wrench.svg b/vendor/twbs/bootstrap-icons/icons/wrench.svg
new file mode 100644
index 000000000..806cca089
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/wrench.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wrench" viewBox="0 0 16 16">
+ <path d="M.102 2.223A3.004 3.004 0 0 0 3.78 5.897l6.341 6.252A3.003 3.003 0 0 0 13 16a3 3 0 1 0-.851-5.878L5.897 3.781A3.004 3.004 0 0 0 2.223.1l2.141 2.142L4 4l-1.757.364zm13.37 9.019.528.026.287.445.445.287.026.529L15 13l-.242.471-.026.529-.445.287-.287.445-.529.026L13 15l-.471-.242-.529-.026-.287-.445-.445-.287-.026-.529L11 13l.242-.471.026-.529.445-.287.287-.445.529-.026L13 11z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/x-circle-fill.svg b/vendor/twbs/bootstrap-icons/icons/x-circle-fill.svg
new file mode 100644
index 000000000..4070fb35a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/x-circle-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-circle-fill" viewBox="0 0 16 16">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/x-circle.svg b/vendor/twbs/bootstrap-icons/icons/x-circle.svg
new file mode 100644
index 000000000..0e8c641ac
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/x-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-circle" viewBox="0 0 16 16">
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
+ <path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/x-diamond-fill.svg b/vendor/twbs/bootstrap-icons/icons/x-diamond-fill.svg
new file mode 100644
index 000000000..6ec461a65
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/x-diamond-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-diamond-fill" viewBox="0 0 16 16">
+ <path d="M9.05.435c-.58-.58-1.52-.58-2.1 0L4.047 3.339 8 7.293l3.954-3.954L9.049.435zm3.61 3.611L8.708 8l3.954 3.954 2.904-2.905c.58-.58.58-1.519 0-2.098l-2.904-2.905zm-.706 8.614L8 8.708l-3.954 3.954 2.905 2.904c.58.58 1.519.58 2.098 0l2.905-2.904zm-8.614-.706L7.292 8 3.339 4.046.435 6.951c-.58.58-.58 1.519 0 2.098z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/x-diamond.svg b/vendor/twbs/bootstrap-icons/icons/x-diamond.svg
new file mode 100644
index 000000000..b93295e2a
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/x-diamond.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-diamond" viewBox="0 0 16 16">
+ <path d="M7.987 16a1.53 1.53 0 0 1-1.07-.448L.45 9.082a1.53 1.53 0 0 1 0-2.165L6.917.45a1.53 1.53 0 0 1 2.166 0l6.469 6.468A1.53 1.53 0 0 1 16 8.013a1.53 1.53 0 0 1-.448 1.07l-6.47 6.469A1.53 1.53 0 0 1 7.988 16zM7.639 1.17 4.766 4.044 8 7.278l3.234-3.234L8.361 1.17a.51.51 0 0 0-.722 0M8.722 8l3.234 3.234 2.873-2.873c.2-.2.2-.523 0-.722l-2.873-2.873zM8 8.722l-3.234 3.234 2.873 2.873c.2.2.523.2.722 0l2.873-2.873zM7.278 8 4.044 4.766 1.17 7.639a.51.51 0 0 0 0 .722l2.874 2.873z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/x-lg.svg b/vendor/twbs/bootstrap-icons/icons/x-lg.svg
new file mode 100644
index 000000000..b689cbb4d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/x-lg.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-lg" viewBox="0 0 16 16">
+ <path d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/x-octagon-fill.svg b/vendor/twbs/bootstrap-icons/icons/x-octagon-fill.svg
new file mode 100644
index 000000000..dd9fc6a7b
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/x-octagon-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-octagon-fill" viewBox="0 0 16 16">
+ <path d="M11.46.146A.5.5 0 0 0 11.107 0H4.893a.5.5 0 0 0-.353.146L.146 4.54A.5.5 0 0 0 0 4.893v6.214a.5.5 0 0 0 .146.353l4.394 4.394a.5.5 0 0 0 .353.146h6.214a.5.5 0 0 0 .353-.146l4.394-4.394a.5.5 0 0 0 .146-.353V4.893a.5.5 0 0 0-.146-.353zm-6.106 4.5L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 1 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/x-octagon.svg b/vendor/twbs/bootstrap-icons/icons/x-octagon.svg
new file mode 100644
index 000000000..181a39f5d
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/x-octagon.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-octagon" viewBox="0 0 16 16">
+ <path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1 1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/>
+ <path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/x-square-fill.svg b/vendor/twbs/bootstrap-icons/icons/x-square-fill.svg
new file mode 100644
index 000000000..5499578e4
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/x-square-fill.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-square-fill" viewBox="0 0 16 16">
+ <path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.354 4.646L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 1 1 .708-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/x-square.svg b/vendor/twbs/bootstrap-icons/icons/x-square.svg
new file mode 100644
index 000000000..eb62b6173
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/x-square.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-square" viewBox="0 0 16 16">
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
+ <path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/x.svg b/vendor/twbs/bootstrap-icons/icons/x.svg
new file mode 100644
index 000000000..fdcc4e824
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/x.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x" viewBox="0 0 16 16">
+ <path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/xbox.svg b/vendor/twbs/bootstrap-icons/icons/xbox.svg
new file mode 100644
index 000000000..c0672b26c
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/xbox.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-xbox" viewBox="0 0 16 16">
+ <path d="M7.202 15.967a8 8 0 0 1-3.552-1.26c-.898-.585-1.101-.826-1.101-1.306 0-.965 1.062-2.656 2.879-4.583C6.459 7.723 7.897 6.44 8.052 6.475c.302.068 2.718 2.423 3.622 3.531 1.43 1.753 2.088 3.189 1.754 3.829-.254.486-1.83 1.437-2.987 1.802-.954.301-2.207.429-3.239.33m-5.866-3.57C.589 11.253.212 10.127.03 8.497c-.06-.539-.038-.846.137-1.95.218-1.377 1.002-2.97 1.945-3.95.401-.417.437-.427.926-.263.595.2 1.23.638 2.213 1.528l.574.519-.313.385C4.056 6.553 2.52 9.086 1.94 10.653c-.315.852-.442 1.707-.306 2.063.091.24.007.15-.3-.319Zm13.101.195c.074-.36-.019-1.02-.238-1.687-.473-1.443-2.055-4.128-3.508-5.953l-.457-.575.494-.454c.646-.593 1.095-.948 1.58-1.25.381-.237.927-.448 1.161-.448.145 0 .654.528 1.065 1.104a8.4 8.4 0 0 1 1.343 3.102c.153.728.166 2.286.024 3.012a9.5 9.5 0 0 1-.6 1.893c-.179.393-.624 1.156-.82 1.404-.1.128-.1.127-.043-.148ZM7.335 1.952c-.67-.34-1.704-.705-2.276-.803a4 4 0 0 0-.759-.043c-.471.024-.45 0 .306-.358A7.8 7.8 0 0 1 6.47.128c.8-.169 2.306-.17 3.094-.005.85.18 1.853.552 2.418.9l.168.103-.385-.02c-.766-.038-1.88.27-3.078.853-.361.176-.676.316-.699.312a12 12 0 0 1-.654-.319Z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/yelp.svg b/vendor/twbs/bootstrap-icons/icons/yelp.svg
new file mode 100644
index 000000000..76e8884bd
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/yelp.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-yelp" viewBox="0 0 16 16">
+ <path d="m4.188 10.095.736-.17.073-.02A.813.813 0 0 0 5.45 8.65a1 1 0 0 0-.3-.258 3 3 0 0 0-.428-.198l-.808-.295a76 76 0 0 0-1.364-.493C2.253 7.3 2 7.208 1.783 7.14c-.041-.013-.087-.025-.124-.038a2.1 2.1 0 0 0-.606-.116.72.72 0 0 0-.572.245 2 2 0 0 0-.105.132 1.6 1.6 0 0 0-.155.309c-.15.443-.225.908-.22 1.376.002.423.013.966.246 1.334a.8.8 0 0 0 .22.24c.166.114.333.129.507.141.26.019.513-.045.764-.103l2.447-.566zm8.219-3.911a4.2 4.2 0 0 0-.8-1.14 1.6 1.6 0 0 0-.275-.21 2 2 0 0 0-.15-.073.72.72 0 0 0-.621.031c-.142.07-.294.182-.496.37-.028.028-.063.06-.094.089-.167.156-.353.35-.574.575q-.51.516-1.01 1.042l-.598.62a3 3 0 0 0-.298.365 1 1 0 0 0-.157.364.8.8 0 0 0 .007.301q0 .007.003.013a.81.81 0 0 0 .945.616l.074-.014 3.185-.736c.251-.058.506-.112.732-.242.151-.088.295-.175.394-.35a.8.8 0 0 0 .093-.313c.05-.434-.178-.927-.36-1.308M6.706 7.523c.23-.29.23-.722.25-1.075.07-1.181.143-2.362.201-3.543.022-.448.07-.89.044-1.34-.022-.372-.025-.799-.26-1.104C6.528-.077 5.644-.033 5.04.05q-.278.038-.553.104a8 8 0 0 0-.543.149c-.58.19-1.393.537-1.53 1.204-.078.377.106.763.249 1.107.173.417.41.792.625 1.185.57 1.036 1.15 2.066 1.728 3.097.172.308.36.697.695.857q.033.015.068.025c.15.057.313.068.469.032l.028-.007a.8.8 0 0 0 .377-.226zm-.276 3.161a.74.74 0 0 0-.923-.234 1 1 0 0 0-.145.09 2 2 0 0 0-.346.354c-.026.033-.05.077-.08.104l-.512.705q-.435.591-.861 1.193c-.185.26-.346.479-.472.673l-.072.11c-.152.235-.238.406-.282.559a.7.7 0 0 0-.03.314c.013.11.05.217.108.312q.046.07.1.138a1.6 1.6 0 0 0 .257.237 4.5 4.5 0 0 0 2.196.76 1.6 1.6 0 0 0 .349-.027 2 2 0 0 0 .163-.048.8.8 0 0 0 .278-.178.7.7 0 0 0 .17-.266c.059-.147.098-.335.123-.613l.012-.13c.02-.231.03-.502.045-.821q.037-.735.06-1.469l.033-.87a2.1 2.1 0 0 0-.055-.623 1 1 0 0 0-.117-.27Zm5.783 1.362a2.2 2.2 0 0 0-.498-.378l-.112-.067c-.199-.12-.438-.246-.719-.398q-.644-.353-1.295-.695l-.767-.407c-.04-.012-.08-.04-.118-.059a2 2 0 0 0-.466-.166 1 1 0 0 0-.17-.018.74.74 0 0 0-.725.616 1 1 0 0 0 .01.293c.038.204.13.406.224.583l.41.768q.341.65.696 1.294c.152.28.28.52.398.719q.036.057.068.112c.145.239.261.39.379.497a.73.73 0 0 0 .596.201 2 2 0 0 0 .168-.029 1.6 1.6 0 0 0 .325-.129 4 4 0 0 0 .855-.64c.306-.3.577-.63.788-1.006q.045-.08.076-.165a2 2 0 0 0 .051-.161q.019-.083.029-.168a.8.8 0 0 0-.038-.327.7.7 0 0 0-.165-.27"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/yin-yang.svg b/vendor/twbs/bootstrap-icons/icons/yin-yang.svg
new file mode 100644
index 000000000..1f502754e
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/yin-yang.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-yin-yang" viewBox="0 0 16 16">
+ <path d="M9.167 4.5a1.167 1.167 0 1 1-2.334 0 1.167 1.167 0 0 1 2.334 0"/>
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0M1 8a7 7 0 0 1 7-7 3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 0 0 7 7 7 0 0 1-7-7m7 4.667a1.167 1.167 0 1 1 0-2.334 1.167 1.167 0 0 1 0 2.334"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/youtube.svg b/vendor/twbs/bootstrap-icons/icons/youtube.svg
new file mode 100644
index 000000000..3c9c0be38
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/youtube.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-youtube" viewBox="0 0 16 16">
+ <path d="M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.01 2.01 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.01 2.01 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31 31 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.01 2.01 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A100 100 0 0 1 7.858 2zM6.4 5.209v4.818l4.157-2.408z"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/zoom-in.svg b/vendor/twbs/bootstrap-icons/icons/zoom-in.svg
new file mode 100644
index 000000000..438e9bca3
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/zoom-in.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-zoom-in" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0"/>
+ <path d="M10.344 11.742q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1 6.5 6.5 0 0 1-1.398 1.4z"/>
+ <path fill-rule="evenodd" d="M6.5 3a.5.5 0 0 1 .5.5V6h2.5a.5.5 0 0 1 0 1H7v2.5a.5.5 0 0 1-1 0V7H3.5a.5.5 0 0 1 0-1H6V3.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/icons/zoom-out.svg b/vendor/twbs/bootstrap-icons/icons/zoom-out.svg
new file mode 100644
index 000000000..8be9f29a8
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/icons/zoom-out.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-zoom-out" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0"/>
+ <path d="M10.344 11.742q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1 6.5 6.5 0 0 1-1.398 1.4z"/>
+ <path fill-rule="evenodd" d="M3 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5"/>
+</svg> \ No newline at end of file
diff --git a/vendor/twbs/bootstrap-icons/package-lock.json b/vendor/twbs/bootstrap-icons/package-lock.json
new file mode 100644
index 000000000..ee4bca2d2
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/package-lock.json
@@ -0,0 +1,7208 @@
+{
+ "name": "bootstrap-icons",
+ "version": "1.11.3",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "bootstrap-icons",
+ "version": "1.11.3",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/twbs"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/bootstrap"
+ }
+ ],
+ "license": "MIT",
+ "devDependencies": {
+ "@twbs/fantasticon": "^2.7.2",
+ "autoprefixer": "^10.4.16",
+ "bootstrap": "^5.3.2",
+ "clean-css-cli": "^5.6.3",
+ "clipboard": "^2.0.11",
+ "cross-env": "^7.0.3",
+ "eslint": "^8.56.0",
+ "find-unused-sass-variables": "^5.0.0",
+ "fuse.js": "^7.0.0",
+ "hugo-bin": "^0.118.0",
+ "lockfile-lint": "^4.12.1",
+ "npm-run-all2": "^6.1.1",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.32",
+ "postcss-cli": "^11.0.0",
+ "stylelint": "^16.1.0",
+ "stylelint-config-twbs-bootstrap": "^13.0.0",
+ "svg-sprite": "^3.0.0-beta3",
+ "svgo": "^3.2.0",
+ "vnu-jar": "23.4.11"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.23.4",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@colors/colors": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz",
+ "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.4.0.tgz",
+ "integrity": "sha512-/PPLr2g5PAUCKAPEbfyk6/baZA+WJHQtUhPkoCQMpyRE8I0lXrG1QFRN8e5s3ZYxM8d/g5BZc6lH3s8Op7/VEg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^2.2.2"
+ }
+ },
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.2.tgz",
+ "integrity": "sha512-wCDUe/MAw7npAHFLyW3QjSyLA66S5QFaV1jIXlNQvdJ8RzXDSgALa49eWcUO6P55ARQaz0TsDdAgdRgkXFYY8g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ }
+ },
+ "node_modules/@csstools/media-query-list-parser": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.6.tgz",
+ "integrity": "sha512-R6AKl9vaU0It7D7TR2lQn0pre5aQfdeqHRePlaRCY8rHL3l9eVlNRpsEVDKFi/zAjzv68CxH2M5kqbhPFPKjvw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^2.4.0",
+ "@csstools/css-tokenizer": "^2.2.2"
+ }
+ },
+ "node_modules/@csstools/selector-specificity": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz",
+ "integrity": "sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^6.0.13"
+ }
+ },
+ "node_modules/@dabh/diagnostics": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz",
+ "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==",
+ "dev": true,
+ "dependencies": {
+ "colorspace": "1.1.x",
+ "enabled": "2.0.x",
+ "kuler": "^2.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
+ "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@gar/promisify": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
+ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
+ "dev": true
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.13",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
+ "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
+ "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
+ "dev": true
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@npmcli/fs": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz",
+ "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==",
+ "dev": true,
+ "dependencies": {
+ "@gar/promisify": "^1.1.3",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@npmcli/move-file": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz",
+ "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==",
+ "deprecated": "This functionality has been moved to @npmcli/fs",
+ "dev": true,
+ "dependencies": {
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "dev": true,
+ "peer": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@resvg/resvg-js": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-2.6.0.tgz",
+ "integrity": "sha512-Tf3YpbBKcQn991KKcw/vg7vZf98v01seSv6CVxZBbRkL/xyjnoYB6KgrFL6zskT1A4dWC/vg77KyNOW+ePaNlA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@resvg/resvg-js-android-arm-eabi": "2.6.0",
+ "@resvg/resvg-js-android-arm64": "2.6.0",
+ "@resvg/resvg-js-darwin-arm64": "2.6.0",
+ "@resvg/resvg-js-darwin-x64": "2.6.0",
+ "@resvg/resvg-js-linux-arm-gnueabihf": "2.6.0",
+ "@resvg/resvg-js-linux-arm64-gnu": "2.6.0",
+ "@resvg/resvg-js-linux-arm64-musl": "2.6.0",
+ "@resvg/resvg-js-linux-x64-gnu": "2.6.0",
+ "@resvg/resvg-js-linux-x64-musl": "2.6.0",
+ "@resvg/resvg-js-win32-arm64-msvc": "2.6.0",
+ "@resvg/resvg-js-win32-ia32-msvc": "2.6.0",
+ "@resvg/resvg-js-win32-x64-msvc": "2.6.0"
+ }
+ },
+ "node_modules/@resvg/resvg-js-android-arm-eabi": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm-eabi/-/resvg-js-android-arm-eabi-2.6.0.tgz",
+ "integrity": "sha512-lJnZ/2P5aMocrFMW7HWhVne5gH82I8xH6zsfH75MYr4+/JOaVcGCTEQ06XFohGMdYRP3v05SSPLPvTM/RHjxfA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@resvg/resvg-js-android-arm64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm64/-/resvg-js-android-arm64-2.6.0.tgz",
+ "integrity": "sha512-N527f529bjMwYWShZYfBD60dXA4Fux+D695QsHQ93BDYZSHUoOh1CUGUyICevnTxs7VgEl98XpArmUWBZQVMfQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@resvg/resvg-js-darwin-arm64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-arm64/-/resvg-js-darwin-arm64-2.6.0.tgz",
+ "integrity": "sha512-MabUKLVayEwlPo0mIqAmMt+qESN8LltCvv5+GLgVga1avpUrkxj/fkU1TKm8kQegutUjbP/B0QuMuUr0uhF8ew==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@resvg/resvg-js-darwin-x64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-x64/-/resvg-js-darwin-x64-2.6.0.tgz",
+ "integrity": "sha512-zrFetdnSw/suXjmyxSjfDV7i61hahv6DDG6kM7BYN2yJ3Es5+BZtqYZTcIWogPJedYKmzN1YTMWGd/3f0ubFiA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@resvg/resvg-js-linux-arm-gnueabihf": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm-gnueabihf/-/resvg-js-linux-arm-gnueabihf-2.6.0.tgz",
+ "integrity": "sha512-sH4gxXt7v7dGwjGyzLwn7SFGvwZG6DQqLaZ11MmzbCwd9Zosy1TnmrMJfn6TJ7RHezmQMgBPi18bl55FZ1AT4A==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@resvg/resvg-js-linux-arm64-gnu": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-gnu/-/resvg-js-linux-arm64-gnu-2.6.0.tgz",
+ "integrity": "sha512-fCyMncqCJtrlANADIduYF4IfnWQ295UKib7DAxFXQhBsM9PLDTpizr0qemZcCNadcwSVHnAIzL4tliZhCM8P6A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@resvg/resvg-js-linux-arm64-musl": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-musl/-/resvg-js-linux-arm64-musl-2.6.0.tgz",
+ "integrity": "sha512-ouLjTgBQHQyxLht4FdMPTvuY8xzJigM9EM2Tlu0llWkN1mKyTQrvYWi6TA6XnKdzDJHy7ZLpWpjZi7F5+Pg+Vg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@resvg/resvg-js-linux-x64-gnu": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-2.6.0.tgz",
+ "integrity": "sha512-n3zC8DWsvxC1AwxpKFclIPapDFibs5XdIRoV/mcIlxlh0vseW1F49b97F33BtJQRmlntsqqN6GMMqx8byB7B+Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@resvg/resvg-js-linux-x64-musl": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-2.6.0.tgz",
+ "integrity": "sha512-n4tasK1HOlAxdTEROgYA1aCfsEKk0UOFDNd/AQTTZlTmCbHKXPq+O8npaaKlwXquxlVK8vrkcWbksbiGqbCAcw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@resvg/resvg-js-win32-arm64-msvc": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-arm64-msvc/-/resvg-js-win32-arm64-msvc-2.6.0.tgz",
+ "integrity": "sha512-X2+EoBJFwDI5LDVb51Sk7ldnVLitMGr9WwU/i21i3fAeAXZb3hM16k67DeTy16OYkT2dk/RfU1tP1wG+rWbz2Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@resvg/resvg-js-win32-ia32-msvc": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-ia32-msvc/-/resvg-js-win32-ia32-msvc-2.6.0.tgz",
+ "integrity": "sha512-L7oevWjQoUgK5W1fCKn0euSVemhDXVhrjtwqpc7MwBKKimYeiOshO1Li1pa8bBt5PESahenhWgdB6lav9O0fEg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@resvg/resvg-js-win32-x64-msvc": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-x64-msvc/-/resvg-js-win32-x64-msvc-2.6.0.tgz",
+ "integrity": "sha512-8lJlghb+Unki5AyKgsnFbRJwkEj9r1NpwyuBG8yEJiG1W9eEGl03R3I7bsVa3haof/3J1NlWf0rzSa1G++A2iw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz",
+ "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz",
+ "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stylistic/stylelint-config": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@stylistic/stylelint-config/-/stylelint-config-1.0.1.tgz",
+ "integrity": "sha512-JgFP88HZEyo34k9RpWVdcQJtLPrMxYE58IO3qypXhmvE/NmZohj+xjDtQ8UfaarnYsLecnldw57/GHum07Ctdw==",
+ "dev": true,
+ "dependencies": {
+ "@stylistic/stylelint-plugin": "^2.0.0"
+ },
+ "engines": {
+ "node": "^18.12 || >=20.9"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.0.2"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-2.0.0.tgz",
+ "integrity": "sha512-dHKuT6PGd1WGZLOTuozAM7GdQzdmlmnFXYzvV1jYJXXpcCpV/OJ3+n8TXpMkoOeKHpJydY43EOoZTO1W/FOA4Q==",
+ "dev": true,
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^2.3.2",
+ "@csstools/css-tokenizer": "^2.2.1",
+ "@csstools/media-query-list-parser": "^2.1.5",
+ "is-plain-object": "^5.0.0",
+ "postcss-selector-parser": "^6.0.13",
+ "postcss-value-parser": "^4.2.0",
+ "style-search": "^0.1.0",
+ "stylelint": "^16.0.2"
+ },
+ "engines": {
+ "node": "^18.12 || >=20.9"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.0.2"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
+ "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
+ "dev": true,
+ "dependencies": {
+ "defer-to-connect": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==",
+ "dev": true
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@trysound/sax": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
+ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/@twbs/fantasticon": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/@twbs/fantasticon/-/fantasticon-2.7.2.tgz",
+ "integrity": "sha512-6kFtwebmI7fjNtllVBBb0R2mq9KhO7q6nHEMlHqrdSshTh3a0LxArpWTs29dXu7Rvbr45ZkfVFNEarg9nZrh4Q==",
+ "dev": true,
+ "dependencies": {
+ "change-case": "^4.1.2",
+ "commander": "^10.0.1",
+ "figures": "^3.2.0",
+ "glob": "^7.2.3",
+ "handlebars": "^4.7.8",
+ "picocolors": "^1.0.0",
+ "slugify": "^1.6.6",
+ "svg2ttf": "^6.0.3",
+ "svgicons2svgfont": "^12.0.0",
+ "ttf2eot": "^3.1.0",
+ "ttf2woff": "^3.0.0",
+ "ttf2woff2": "^5.0.0"
+ },
+ "bin": {
+ "fantasticon": "bin/fantasticon"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
+ "dev": true
+ },
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
+ "dev": true
+ },
+ "node_modules/@types/triple-beam": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz",
+ "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==",
+ "dev": true
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
+ "node_modules/@xhmikosr/archive-type": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@xhmikosr/archive-type/-/archive-type-6.0.1.tgz",
+ "integrity": "sha512-PB3NeJL8xARZt52yDBupK0dNPn8uIVQDe15qNehUpoeeLWCZyAOam4vGXnoZGz2N9D1VXtjievJuCsXam2TmbQ==",
+ "dev": true,
+ "dependencies": {
+ "file-type": "^18.5.0"
+ },
+ "engines": {
+ "node": "^14.14.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@xhmikosr/bin-check": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@xhmikosr/bin-check/-/bin-check-6.0.0.tgz",
+ "integrity": "sha512-ZUICVP4EchT0Dmz4/Xo7l3wuNF4Zo3ua8l00I/gkgF/59+1c/0+dijfokkIxN+4HScsAnGN9ej53mhnPcsdDYg==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^5.1.1",
+ "isexe": "^2.0.0"
+ },
+ "engines": {
+ "node": "^14.14.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@xhmikosr/bin-wrapper": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/@xhmikosr/bin-wrapper/-/bin-wrapper-12.0.0.tgz",
+ "integrity": "sha512-QMsHQ+ZIzzp4bSfytxRN33XMVEIljmU0M4MuEQ0zgk7agmZLYSGX4/OEFYpg4Xq08VwlhCCJ+8p+dMKL8WTa8g==",
+ "dev": true,
+ "dependencies": {
+ "@xhmikosr/bin-check": "^6.0.0",
+ "@xhmikosr/downloader": "^14.0.0",
+ "bin-version-check": "^5.1.0",
+ "os-filter-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@xhmikosr/decompress": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/@xhmikosr/decompress/-/decompress-9.0.1.tgz",
+ "integrity": "sha512-9Lvlt6Qdpo9SaRQyRIXCo3lgU++eMZ68lzgjcTwtuKDrlwT635+5zsHZ1yrSx/Blc5IDuVLlPkBPj5CZkx+2+Q==",
+ "dev": true,
+ "dependencies": {
+ "@xhmikosr/decompress-tar": "^7.0.0",
+ "@xhmikosr/decompress-tarbz2": "^7.0.0",
+ "@xhmikosr/decompress-targz": "^7.0.0",
+ "@xhmikosr/decompress-unzip": "^6.0.0",
+ "graceful-fs": "^4.2.11",
+ "make-dir": "^4.0.0",
+ "strip-dirs": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.14.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@xhmikosr/decompress-tar": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tar/-/decompress-tar-7.0.0.tgz",
+ "integrity": "sha512-kyWf2hybtQVbWtB+FdRyOT+jyR5jxCNZPLqvQGB7djZj75lrpLUPEmRbyo86AtJ5OEtivpYaNWjCkqSJ8xtRWw==",
+ "dev": true,
+ "dependencies": {
+ "file-type": "^18.5.0",
+ "is-stream": "^3.0.0",
+ "tar-stream": "^3.1.4"
+ },
+ "engines": {
+ "node": "^14.14.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@xhmikosr/decompress-tarbz2": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tarbz2/-/decompress-tarbz2-7.0.0.tgz",
+ "integrity": "sha512-3QnjipYkRgh3Dee1MWDgKmANWxOQBVN4e1IwiGNe2fHYfMYTeSkVvWREt87UIoSucKUh3E95v8uGFttgTknZcA==",
+ "dev": true,
+ "dependencies": {
+ "@xhmikosr/decompress-tar": "^7.0.0",
+ "file-type": "^18.5.0",
+ "is-stream": "^3.0.0",
+ "seek-bzip": "^1.0.6",
+ "unbzip2-stream": "^1.4.3"
+ },
+ "engines": {
+ "node": "^14.14.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@xhmikosr/decompress-targz": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-targz/-/decompress-targz-7.0.0.tgz",
+ "integrity": "sha512-7BNHJl92g9OLhw89zqcFS67V1LAtm4Ex02j6OiQzuE8P7Yy9lQcyBuEL3x6v436grLdL+BcFjgbmhWxnem4GHw==",
+ "dev": true,
+ "dependencies": {
+ "@xhmikosr/decompress-tar": "^7.0.0",
+ "file-type": "^18.5.0",
+ "is-stream": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.14.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@xhmikosr/decompress-unzip": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-unzip/-/decompress-unzip-6.0.0.tgz",
+ "integrity": "sha512-R1HAkjXLS7RAL74YFLxYY9zYflCcYGssld9KKFDu87PnJ4h4btdhzXfSC8J5i5A2njH3oYIoCzx03RIGTH07Sg==",
+ "dev": true,
+ "dependencies": {
+ "file-type": "^18.5.0",
+ "get-stream": "^6.0.1",
+ "yauzl": "^2.10.0"
+ },
+ "engines": {
+ "node": "^14.14.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@xhmikosr/downloader": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-14.0.0.tgz",
+ "integrity": "sha512-qoKPKzGyoSZ7HxkKaMSFOA9dNnmow6nMNlOqoRvKkDvFhDVNjma6CBr/5o/oXtlQk+mEHxZWeHSNHHpWte4ApQ==",
+ "dev": true,
+ "dependencies": {
+ "@xhmikosr/archive-type": "^6.0.1",
+ "@xhmikosr/decompress": "^9.0.1",
+ "content-disposition": "^0.5.4",
+ "defaults": "^2.0.2",
+ "ext-name": "^5.0.0",
+ "file-type": "^18.7.0",
+ "filenamify": "^6.0.0",
+ "get-stream": "^6.0.1",
+ "got": "^13.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.8.tgz",
+ "integrity": "sha512-0LNz4EY8B/8xXY86wMrQ4tz6zEHZv9ehFMJPm8u2gq5lQ71cfRKdaKyxfJAx5aUoyzx0qzgURblTisPGgz3d+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/@yarnpkg/parsers": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0.tgz",
+ "integrity": "sha512-jVZa3njBv6tcOUw34nlUdUM/40wwtm/gnVF8rtk0tA6vNcokqYI8CFU1BZjlpFwUSZaXxYkrtuPE/f2MMFlTxQ==",
+ "dev": true,
+ "dependencies": {
+ "js-yaml": "^3.10.0",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ }
+ },
+ "node_modules/@yarnpkg/parsers/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/@yarnpkg/parsers/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
+ "node_modules/acorn": {
+ "version": "8.11.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
+ "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/agentkeepalive": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
+ "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
+ "dev": true,
+ "dependencies": {
+ "humanize-ms": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "dev": true,
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/aproba": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
+ "dev": true
+ },
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/are-we-there-yet": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
+ "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
+ "dev": true,
+ "dependencies": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/async": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
+ "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
+ "dev": true
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.16",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",
+ "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "browserslist": "^4.21.10",
+ "caniuse-lite": "^1.0.30001538",
+ "fraction.js": "^4.3.6",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/b4a": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
+ "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==",
+ "dev": true
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/bin-version": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz",
+ "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^5.0.0",
+ "find-versions": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bin-version-check": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz",
+ "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==",
+ "dev": true,
+ "dependencies": {
+ "bin-version": "^6.0.0",
+ "semver": "^7.5.3",
+ "semver-truncate": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "dev": true,
+ "dependencies": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/bootstrap": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz",
+ "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/twbs"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/bootstrap"
+ }
+ ],
+ "peerDependencies": {
+ "@popperjs/core": "^2.11.8"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.22.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
+ "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001565",
+ "electron-to-chromium": "^1.4.601",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/bufferstreams": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-3.0.0.tgz",
+ "integrity": "sha512-Qg0ggJUWJq90vtg4lDsGN9CDWvzBMQxhiEkSOD/sJfYt6BLect3eV1/S6K7SCSKJ34n60rf6U5eUPmQENVE4UA==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^3.4.0"
+ },
+ "engines": {
+ "node": ">=8.12.0"
+ }
+ },
+ "node_modules/cacache": {
+ "version": "16.1.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz",
+ "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==",
+ "dev": true,
+ "dependencies": {
+ "@npmcli/fs": "^2.1.0",
+ "@npmcli/move-file": "^2.0.0",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.1.0",
+ "glob": "^8.0.1",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "mkdirp": "^1.0.4",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^9.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/cacache/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/cacache/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cacache/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cacheable-lookup": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
+ "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "10.2.14",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz",
+ "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/http-cache-semantics": "^4.0.2",
+ "get-stream": "^6.0.1",
+ "http-cache-semantics": "^4.1.1",
+ "keyv": "^4.5.3",
+ "mimic-response": "^4.0.0",
+ "normalize-url": "^8.0.0",
+ "responselike": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camel-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
+ "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
+ "dev": true,
+ "dependencies": {
+ "pascal-case": "^3.1.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001571",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz",
+ "integrity": "sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/capital-case": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz",
+ "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/change-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz",
+ "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==",
+ "dev": true,
+ "dependencies": {
+ "camel-case": "^4.1.2",
+ "capital-case": "^1.0.4",
+ "constant-case": "^3.0.4",
+ "dot-case": "^3.0.4",
+ "header-case": "^2.0.4",
+ "no-case": "^3.0.4",
+ "param-case": "^3.0.4",
+ "pascal-case": "^3.1.2",
+ "path-case": "^3.0.4",
+ "sentence-case": "^3.0.4",
+ "snake-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/clean-css": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
+ "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
+ "dev": true,
+ "dependencies": {
+ "source-map": "~0.6.0"
+ },
+ "engines": {
+ "node": ">= 10.0"
+ }
+ },
+ "node_modules/clean-css-cli": {
+ "version": "5.6.3",
+ "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.6.3.tgz",
+ "integrity": "sha512-MUAta8pEqA/d2DKQwtZU5nm0Og8TCyAglOx3GlWwjhGdKBwY4kVF6E5M6LU/jmmuswv+HbYqG/dKKkq5p1dD0A==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": "^3.5.2",
+ "clean-css": "^5.3.3",
+ "commander": "7.x",
+ "glob": "^7.1.6"
+ },
+ "bin": {
+ "cleancss": "bin/cleancss"
+ },
+ "engines": {
+ "node": ">= 10.12.0"
+ }
+ },
+ "node_modules/clean-css-cli/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clipboard": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz",
+ "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
+ "dev": true,
+ "dependencies": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==",
+ "dev": true
+ },
+ "node_modules/color": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
+ "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.3",
+ "color-string": "^1.6.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "dev": true,
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
+ "node_modules/color/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+ "dev": true
+ },
+ "node_modules/colorspace": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz",
+ "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==",
+ "dev": true,
+ "dependencies": {
+ "color": "^3.1.3",
+ "text-hex": "1.0.x"
+ }
+ },
+ "node_modules/commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
+ "dev": true
+ },
+ "node_modules/constant-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz",
+ "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case": "^2.0.2"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "8.3.6",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
+ "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
+ "dev": true,
+ "dependencies": {
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cross-env": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.1"
+ },
+ "bin": {
+ "cross-env": "src/bin/cross-env.js",
+ "cross-env-shell": "src/bin/cross-env-shell.js"
+ },
+ "engines": {
+ "node": ">=10.14",
+ "npm": ">=6",
+ "yarn": ">=1"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-functions-list": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz",
+ "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12 || >=16"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-selector-parser": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz",
+ "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==",
+ "dev": true
+ },
+ "node_modules/css-tree": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
+ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.30",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csso": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
+ "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
+ "dev": true,
+ "dependencies": {
+ "css-tree": "~2.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/css-tree": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
+ "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.28",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/mdn-data": {
+ "version": "2.0.28",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
+ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
+ "dev": true
+ },
+ "node_modules/cssom": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
+ "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==",
+ "dev": true
+ },
+ "node_modules/cubic2quad": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.2.1.tgz",
+ "integrity": "sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==",
+ "dev": true
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/defaults": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-2.0.2.tgz",
+ "integrity": "sha512-cuIw0PImdp76AOfgkjbW4VhQODRmNNcKR73vdCH5cLd/ifj7aamfoXvYgfGkEAjNJZ3ozMIy9Gu2LutUkGEPbA==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
+ "dev": true
+ },
+ "node_modules/delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
+ "dev": true
+ },
+ "node_modules/dependency-graph": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
+ "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dot-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+ "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.616",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz",
+ "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==",
+ "dev": true
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/enabled": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
+ "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==",
+ "dev": true
+ },
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/err-code": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
+ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+ "dev": true
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
+ "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.56.0",
+ "@humanwhocodes/config-array": "^0.11.13",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/execa/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/exponential-backoff": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz",
+ "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==",
+ "dev": true
+ },
+ "node_modules/ext-list": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
+ "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "^1.28.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ext-name": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
+ "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
+ "dev": true,
+ "dependencies": {
+ "ext-list": "^2.0.0",
+ "sort-keys-length": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz",
+ "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/fecha": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
+ "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==",
+ "dev": true
+ },
+ "node_modules/figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/figures/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "18.7.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.7.0.tgz",
+ "integrity": "sha512-ihHtXRzXEziMrQ56VSgU7wkxh55iNchFkosu7Y9/S+tXHdKyrGjVK0ujbqNnsxzea+78MaLhN6PGmfYSAv1ACw==",
+ "dev": true,
+ "dependencies": {
+ "readable-web-to-node-stream": "^3.0.2",
+ "strtok3": "^7.0.0",
+ "token-types": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/file-type?sponsor=1"
+ }
+ },
+ "node_modules/file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "dev": true
+ },
+ "node_modules/filename-reserved-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz",
+ "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/filenamify": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-6.0.0.tgz",
+ "integrity": "sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==",
+ "dev": true,
+ "dependencies": {
+ "filename-reserved-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-unused-sass-variables": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-unused-sass-variables/-/find-unused-sass-variables-5.0.0.tgz",
+ "integrity": "sha512-hN4GJEiHRfJBuct5j/oG6coNHrmHY+qAuh2hScUhZvA+sSbgWETvYW6fZKEZW7vyT/QY5FTEyHn6vZhZoKzxmA==",
+ "dev": true,
+ "dependencies": {
+ "commander": "^10.0.1",
+ "escape-string-regexp": "^5.0.0",
+ "glob": "^7.2.3",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.23",
+ "postcss-scss": "^4.0.6",
+ "strip-bom": "^5.0.0"
+ },
+ "bin": {
+ "find-unused-sass-variables": "bin/cli.js",
+ "fusv": "bin/cli.js"
+ },
+ "engines": {
+ "node": "^14.14.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/XhmikosR"
+ }
+ },
+ "node_modules/find-unused-sass-variables/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-versions": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz",
+ "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==",
+ "dev": true,
+ "dependencies": {
+ "semver-regex": "^4.0.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "dev": true
+ },
+ "node_modules/fn.name": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
+ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==",
+ "dev": true
+ },
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/form-data-encoder": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
+ "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14.17"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
+ "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/fuse.js": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.0.0.tgz",
+ "integrity": "sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/gauge": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
+ "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
+ "dev": true,
+ "dependencies": {
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-stdin": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz",
+ "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "dev": true,
+ "dependencies": {
+ "global-prefix": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "dev": true,
+ "dependencies": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz",
+ "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==",
+ "dev": true,
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^1.0.0",
+ "fast-glob": "^3.3.2",
+ "ignore": "^5.2.4",
+ "path-type": "^5.0.0",
+ "slash": "^5.1.0",
+ "unicorn-magic": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby/node_modules/path-type": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
+ "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globjoin": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
+ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
+ "dev": true
+ },
+ "node_modules/good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
+ "dev": true,
+ "dependencies": {
+ "delegate": "^3.1.2"
+ }
+ },
+ "node_modules/got": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz",
+ "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==",
+ "dev": true,
+ "dependencies": {
+ "@sindresorhus/is": "^5.2.0",
+ "@szmarczak/http-timer": "^5.0.1",
+ "cacheable-lookup": "^7.0.0",
+ "cacheable-request": "^10.2.8",
+ "decompress-response": "^6.0.0",
+ "form-data-encoder": "^2.1.2",
+ "get-stream": "^6.0.1",
+ "http2-wrapper": "^2.1.10",
+ "lowercase-keys": "^3.0.0",
+ "p-cancelable": "^3.0.0",
+ "responselike": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/handlebars": {
+ "version": "4.7.8",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
+ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.2",
+ "source-map": "^0.6.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "handlebars": "bin/handlebars"
+ },
+ "engines": {
+ "node": ">=0.4.7"
+ },
+ "optionalDependencies": {
+ "uglify-js": "^3.1.4"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
+ "dev": true
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/header-case": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz",
+ "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==",
+ "dev": true,
+ "dependencies": {
+ "capital-case": "^1.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz",
+ "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "dev": true
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dev": true,
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/http2-wrapper": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz",
+ "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==",
+ "dev": true,
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/hugo-bin": {
+ "version": "0.118.0",
+ "resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.118.0.tgz",
+ "integrity": "sha512-YVmmJIhoN9wJtHOR+FfVP2OFDymJF1Nop2MKSFmIKqOSu9B7ZfAn+yVCwernWNelepacjSYSoAebt+vFSsF5+g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/XhmikosR"
+ }
+ ],
+ "hasInstallScript": true,
+ "dependencies": {
+ "@xhmikosr/bin-wrapper": "^12.0.0",
+ "pkg-conf": "^4.0.0"
+ },
+ "bin": {
+ "hugo": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/humanize-ms": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
+ "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.0.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/ignore": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
+ "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-lazy": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
+ "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "dev": true
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
+ "node_modules/inspect-with-kind": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/inspect-with-kind/-/inspect-with-kind-1.0.5.tgz",
+ "integrity": "sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.2"
+ }
+ },
+ "node_modules/ip": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
+ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
+ "dev": true
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-lambda": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
+ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
+ "dev": true
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/jackspeak": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/known-css-properties": {
+ "version": "0.29.0",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz",
+ "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==",
+ "dev": true
+ },
+ "node_modules/kuler": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
+ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==",
+ "dev": true
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",
+ "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/load-json-file": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz",
+ "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lockfile-lint": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/lockfile-lint/-/lockfile-lint-4.12.1.tgz",
+ "integrity": "sha512-FBP7OA7sa45kzPgRNLYIcGGgDS86rpZNW3ptALp1vlzv+oHZsqFZdmHXM4N4FwiGXHzUOpSVvDLT4v7IiQXFtA==",
+ "dev": true,
+ "dependencies": {
+ "cosmiconfig": "^8.2.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.1",
+ "lockfile-lint-api": "^5.8.0",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "lockfile-lint": "bin/lockfile-lint.js"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/lockfile-lint-api": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/lockfile-lint-api/-/lockfile-lint-api-5.8.0.tgz",
+ "integrity": "sha512-RHa+ofSGMGQvPFG1oD2qZmSWF2MfxWXhle/unpzmDjpi8F8Ou5sreNUcAscgGRfcX+BszBuVKddD0X5YKQ0TeA==",
+ "dev": true,
+ "dependencies": {
+ "@yarnpkg/parsers": "^3.0.0-rc.32",
+ "debug": "^4.3.4",
+ "object-hash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash.escape": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz",
+ "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==",
+ "dev": true
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+ "dev": true
+ },
+ "node_modules/logform": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz",
+ "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==",
+ "dev": true,
+ "dependencies": {
+ "@colors/colors": "1.6.0",
+ "@types/triple-beam": "^1.3.2",
+ "fecha": "^4.2.0",
+ "ms": "^2.1.1",
+ "safe-stable-stringify": "^2.3.1",
+ "triple-beam": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/lowercase-keys": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
+ "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
+ "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
+ "dev": true,
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-fetch-happen": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz",
+ "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==",
+ "dev": true,
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^16.1.0",
+ "http-cache-semantics": "^4.1.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-fetch": "^2.0.3",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^9.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/mathml-tag-names": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
+ "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.30",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
+ "dev": true
+ },
+ "node_modules/memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/meow": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-13.0.0.tgz",
+ "integrity": "sha512-4Hu+75Vo7EOR+8C9RmkabfLijuwd9SrzQ8f0SyC4qZZwU6BlxeOt5ulF3PGCpcMJX4hI+ktpJhea0P6PN1RiWw==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/microbuffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz",
+ "integrity": "sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==",
+ "dev": true
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
+ "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-fetch": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz",
+ "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.1.6",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-sized": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
+ "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/mustache": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
+ "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
+ "dev": true,
+ "bin": {
+ "mustache": "bin/mustache"
+ }
+ },
+ "node_modules/nan": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz",
+ "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==",
+ "dev": true
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true
+ },
+ "node_modules/no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+ "dev": true,
+ "dependencies": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/node-gyp": {
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz",
+ "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==",
+ "dev": true,
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^10.0.3",
+ "nopt": "^6.0.0",
+ "npmlog": "^6.0.0",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.5",
+ "tar": "^6.1.2",
+ "which": "^2.0.2"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^12.13 || ^14.13 || >=16"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+ "dev": true
+ },
+ "node_modules/nopt": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz",
+ "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==",
+ "dev": true,
+ "dependencies": {
+ "abbrev": "^1.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/normalize-package-data": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz",
+ "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^7.0.0",
+ "is-core-module": "^2.8.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz",
+ "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-all2": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz",
+ "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "cross-spawn": "^7.0.3",
+ "memorystream": "^0.3.1",
+ "minimatch": "^9.0.0",
+ "pidtree": "^0.6.0",
+ "read-pkg": "^8.0.0",
+ "shell-quote": "^1.7.3"
+ },
+ "bin": {
+ "npm-run-all": "bin/npm-run-all/index.js",
+ "npm-run-all2": "bin/npm-run-all/index.js",
+ "run-p": "bin/run-p/index.js",
+ "run-s": "bin/run-s/index.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0",
+ "npm": ">= 8"
+ }
+ },
+ "node_modules/npm-run-all2/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/npm-run-all2/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/npm-run-all2/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npmlog": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
+ "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
+ "dev": true,
+ "dependencies": {
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/one-time": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
+ "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
+ "dev": true,
+ "dependencies": {
+ "fn.name": "1.x.x"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/os-filter-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz",
+ "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==",
+ "dev": true,
+ "dependencies": {
+ "arch": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
+ "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "dev": true,
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
+ "node_modules/param-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
+ "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pascal-case": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/path-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz",
+ "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-scurry": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/peek-readable": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz",
+ "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pidtree": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
+ "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
+ "dev": true,
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pkg-conf": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-4.0.0.tgz",
+ "integrity": "sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^6.0.0",
+ "load-json-file": "^7.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
+ "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-cli": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.0.tgz",
+ "integrity": "sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": "^3.3.0",
+ "dependency-graph": "^0.11.0",
+ "fs-extra": "^11.0.0",
+ "get-stdin": "^9.0.0",
+ "globby": "^14.0.0",
+ "picocolors": "^1.0.0",
+ "postcss-load-config": "^5.0.0",
+ "postcss-reporter": "^7.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "read-cache": "^1.0.0",
+ "slash": "^5.0.0",
+ "yargs": "^17.0.0"
+ },
+ "bin": {
+ "postcss": "index.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.0.2.tgz",
+ "integrity": "sha512-Q8QR3FYbqOKa0bnC1UQ2bFq9/ulHX5Bi34muzitMr8aDtUelO5xKeJEYC/5smE0jNE9zdB/NBnOwXKexELbRlw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "jiti": ">=1.21.0",
+ "postcss": ">=8.0.9"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ },
+ "postcss": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-media-query-parser": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
+ "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
+ "dev": true
+ },
+ "node_modules/postcss-reporter": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz",
+ "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^1.0.0",
+ "thenby": "^1.3.4"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-resolve-nested-selector": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
+ "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
+ "dev": true
+ },
+ "node_modules/postcss-safe-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz",
+ "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/postcss-scss": {
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz",
+ "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss-scss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "engines": {
+ "node": ">=12.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.29"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
+ "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-sorting": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz",
+ "integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==",
+ "dev": true,
+ "peerDependencies": {
+ "postcss": "^8.4.20"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/pretty-hrtime": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+ "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/prettysize": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prettysize/-/prettysize-2.0.0.tgz",
+ "integrity": "sha512-VVtxR7sOh0VsG8o06Ttq5TrI1aiZKmC+ClSn4eBPaNf4SHr5lzbYW+kYGX3HocBL/MfpVrRfFZ9V3vCbLaiplg==",
+ "dev": true
+ },
+ "node_modules/promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
+ "dev": true
+ },
+ "node_modules/promise-retry": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
+ "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+ "dev": true,
+ "dependencies": {
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/queue-tick": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+ "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
+ "dev": true
+ },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz",
+ "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.1",
+ "normalize-package-data": "^6.0.0",
+ "parse-json": "^7.0.0",
+ "type-fest": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg/node_modules/json-parse-even-better-errors": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz",
+ "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/read-pkg/node_modules/lines-and-columns": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz",
+ "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/read-pkg/node_modules/parse-json": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz",
+ "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.21.4",
+ "error-ex": "^1.3.2",
+ "json-parse-even-better-errors": "^3.0.0",
+ "lines-and-columns": "^2.0.3",
+ "type-fest": "^3.8.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
+ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg/node_modules/type-fest": {
+ "version": "4.8.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz",
+ "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readable-web-to-node-stream": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz",
+ "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
+ "dev": true
+ },
+ "node_modules/replace-ext": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz",
+ "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "dev": true
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/responselike": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
+ "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
+ "dev": true,
+ "dependencies": {
+ "lowercase-keys": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safe-stable-stringify": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
+ "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/sax": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==",
+ "dev": true
+ },
+ "node_modules/seek-bzip": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
+ "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
+ "dev": true,
+ "dependencies": {
+ "commander": "^2.8.1"
+ },
+ "bin": {
+ "seek-bunzip": "bin/seek-bunzip",
+ "seek-table": "bin/seek-bzip-table"
+ }
+ },
+ "node_modules/seek-bzip/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
+ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==",
+ "dev": true
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver-regex": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz",
+ "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semver-truncate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-3.0.0.tgz",
+ "integrity": "sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/sentence-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz",
+ "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "dev": true
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/simple-swizzle/node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+ "dev": true
+ },
+ "node_modules/slash": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/slugify": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
+ "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/snake-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
+ "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
+ "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
+ "dev": true,
+ "dependencies": {
+ "ip": "^2.0.0",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sort-keys-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
+ "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==",
+ "dev": true,
+ "dependencies": {
+ "sort-keys": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.16",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
+ "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==",
+ "dev": true
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "node_modules/ssri": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
+ "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/streamx": {
+ "version": "2.15.6",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz",
+ "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==",
+ "dev": true,
+ "dependencies": {
+ "fast-fifo": "^1.1.0",
+ "queue-tick": "^1.0.1"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-5.0.0.tgz",
+ "integrity": "sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-dirs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-3.0.0.tgz",
+ "integrity": "sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==",
+ "dev": true,
+ "dependencies": {
+ "inspect-with-kind": "^1.0.5",
+ "is-plain-obj": "^1.1.0"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strtok3": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz",
+ "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==",
+ "dev": true,
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "peek-readable": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/style-search": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
+ "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
+ "dev": true
+ },
+ "node_modules/stylelint": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.1.0.tgz",
+ "integrity": "sha512-Sh1rRV0lN1qxz/QsuuooLWsIZ/ona7NKw/fRZd6y6PyXYdD2W0EAzJ8yJcwSx4Iw/muz0CF09VZ+z4EiTAcKmg==",
+ "dev": true,
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^2.4.0",
+ "@csstools/css-tokenizer": "^2.2.2",
+ "@csstools/media-query-list-parser": "^2.1.6",
+ "@csstools/selector-specificity": "^3.0.1",
+ "balanced-match": "^2.0.0",
+ "colord": "^2.9.3",
+ "cosmiconfig": "^9.0.0",
+ "css-functions-list": "^3.2.1",
+ "css-tree": "^2.3.1",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "fastest-levenshtein": "^1.0.16",
+ "file-entry-cache": "^8.0.0",
+ "global-modules": "^2.0.0",
+ "globby": "^11.1.0",
+ "globjoin": "^0.1.4",
+ "html-tags": "^3.3.1",
+ "ignore": "^5.3.0",
+ "imurmurhash": "^0.1.4",
+ "is-plain-object": "^5.0.0",
+ "known-css-properties": "^0.29.0",
+ "mathml-tag-names": "^2.1.3",
+ "meow": "^13.0.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.32",
+ "postcss-resolve-nested-selector": "^0.1.1",
+ "postcss-safe-parser": "^7.0.0",
+ "postcss-selector-parser": "^6.0.13",
+ "postcss-value-parser": "^4.2.0",
+ "resolve-from": "^5.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^7.1.0",
+ "supports-hyperlinks": "^3.0.0",
+ "svg-tags": "^1.0.0",
+ "table": "^6.8.1",
+ "write-file-atomic": "^5.0.1"
+ },
+ "bin": {
+ "stylelint": "bin/stylelint.mjs"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ }
+ },
+ "node_modules/stylelint-config-recess-order": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recess-order/-/stylelint-config-recess-order-4.4.0.tgz",
+ "integrity": "sha512-Q99kvZyIM/aoPEV4dRDkzD3fZLzH0LXi+pawCf1r700uUeF/PHQ5PZXjwFUuGrWhOzd1N+cuVm+OUGsY2fRN5A==",
+ "dev": true,
+ "dependencies": {
+ "stylelint-order": "6.x"
+ },
+ "peerDependencies": {
+ "stylelint": ">=15"
+ }
+ },
+ "node_modules/stylelint-config-recommended": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.0.tgz",
+ "integrity": "sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.0.0"
+ }
+ },
+ "node_modules/stylelint-config-recommended-scss": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz",
+ "integrity": "sha512-HDvpoOAQ1RpF+sPbDOT2Q2/YrBDEJDnUymmVmZ7mMCeNiFSdhRdyGEimBkz06wsN+HaFwUh249gDR+I9JR7Onw==",
+ "dev": true,
+ "dependencies": {
+ "postcss-scss": "^4.0.9",
+ "stylelint-config-recommended": "^14.0.0",
+ "stylelint-scss": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3.3",
+ "stylelint": "^16.0.2"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/stylelint-config-standard": {
+ "version": "35.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-35.0.0.tgz",
+ "integrity": "sha512-JyQrNZk2BZwVKFauGGxW2U6RuhIfQ4XoHHo+rBzMHcAkLnwI/knpszwXjzxiMgSfcxbZBckM7Vq4LHoANTR85g==",
+ "dev": true,
+ "dependencies": {
+ "stylelint-config-recommended": "^14.0.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.0.0"
+ }
+ },
+ "node_modules/stylelint-config-standard-scss": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-12.0.0.tgz",
+ "integrity": "sha512-ATh3EcEOLZq0iwlFaBdIsSavrla0lNtJ7mO7hdE7DgVT6imozRggFSqd4cFcjzVnOLKv/uJT63MmqA1acIflbw==",
+ "dev": true,
+ "dependencies": {
+ "stylelint-config-recommended-scss": "^14.0.0",
+ "stylelint-config-standard": "^35.0.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3.3",
+ "stylelint": "^16.0.2"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/stylelint-config-twbs-bootstrap": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-twbs-bootstrap/-/stylelint-config-twbs-bootstrap-13.0.0.tgz",
+ "integrity": "sha512-h+kjpCyZoF4o+xMu06sQNgcoNu4/z48yhXe388J/AKzcoUrxNvF+4MNmIPS2Mn+h3X/rXYNosI5TknlT8qjIqw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/twbs"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/bootstrap"
+ }
+ ],
+ "dependencies": {
+ "@stylistic/stylelint-config": "^1.0.1",
+ "@stylistic/stylelint-plugin": "^2.0.0",
+ "stylelint-config-recess-order": "^4.4.0",
+ "stylelint-config-standard": "^35.0.0",
+ "stylelint-config-standard-scss": "^12.0.0",
+ "stylelint-scss": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.0.2"
+ }
+ },
+ "node_modules/stylelint-order": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.4.tgz",
+ "integrity": "sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^8.4.32",
+ "postcss-sorting": "^8.0.2"
+ },
+ "peerDependencies": {
+ "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1"
+ }
+ },
+ "node_modules/stylelint-scss": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.0.0.tgz",
+ "integrity": "sha512-N1xV/Ef5PNRQQt9E45unzGvBUN1KZxCI8B4FgN/pMfmyRYbZGVN4y9qWlvOMdScU17c8VVCnjIHTVn38Bb6qSA==",
+ "dev": true,
+ "dependencies": {
+ "known-css-properties": "^0.29.0",
+ "postcss-media-query-parser": "^0.2.3",
+ "postcss-resolve-nested-selector": "^0.1.1",
+ "postcss-selector-parser": "^6.0.13",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.0.2"
+ }
+ },
+ "node_modules/stylelint/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/stylelint/node_modules/balanced-match": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
+ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
+ "dev": true
+ },
+ "node_modules/stylelint/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/stylelint/node_modules/brace-expansion/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/stylelint/node_modules/cosmiconfig": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
+ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
+ "dev": true,
+ "dependencies": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/stylelint/node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/stylelint/node_modules/flat-cache": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.0.tgz",
+ "integrity": "sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4",
+ "rimraf": "^5.0.5"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/stylelint/node_modules/glob": {
+ "version": "10.3.10",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/stylelint/node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/stylelint/node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/stylelint/node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/rimraf": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz",
+ "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^10.3.7"
+ },
+ "bin": {
+ "rimraf": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/stylelint/node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
+ "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/svg-pathdata": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
+ "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/svg-sprite": {
+ "version": "3.0.0-beta3",
+ "resolved": "https://registry.npmjs.org/svg-sprite/-/svg-sprite-3.0.0-beta3.tgz",
+ "integrity": "sha512-NMjAc61VLOr87Mufm3kECI/uY7MIxJ7u62RbAAkzmIerd1IPpEsA0//NWlmi3iKCo3rF0qGeHZA1MxjfdeAwLw==",
+ "dev": true,
+ "dependencies": {
+ "@resvg/resvg-js": "^2.6.0",
+ "@xmldom/xmldom": "0.8.8",
+ "async": "^3.2.5",
+ "css-selector-parser": "^1.4.1",
+ "csso": "^5.0.5",
+ "cssom": "^0.5.0",
+ "glob": "^7.2.3",
+ "import-lazy": "^4.0.0",
+ "js-yaml": "^4.1.0",
+ "lodash.escape": "^4.0.1",
+ "lodash.merge": "^4.6.2",
+ "mustache": "^4.2.0",
+ "prettysize": "^2.0.0",
+ "svgo": "^3.0.4",
+ "vinyl": "^3.0.0",
+ "winston": "^3.11.0",
+ "xpath": "^0.0.33",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "svg-sprite": "bin/svg-sprite.js"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "node_modules/svg2ttf": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/svg2ttf/-/svg2ttf-6.0.3.tgz",
+ "integrity": "sha512-CgqMyZrbOPpc+WqH7aga4JWkDPso23EgypLsbQ6gN3uoPWwwiLjXvzgrwGADBExvCRJrWFzAeK1bSoSpE7ixSQ==",
+ "dev": true,
+ "dependencies": {
+ "@xmldom/xmldom": "^0.7.2",
+ "argparse": "^2.0.1",
+ "cubic2quad": "^1.2.1",
+ "lodash": "^4.17.10",
+ "microbuffer": "^1.0.0",
+ "svgpath": "^2.1.5"
+ },
+ "bin": {
+ "svg2ttf": "svg2ttf.js"
+ }
+ },
+ "node_modules/svg2ttf/node_modules/@xmldom/xmldom": {
+ "version": "0.7.13",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz",
+ "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/svgicons2svgfont": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-12.0.0.tgz",
+ "integrity": "sha512-fjyDkhiG0M1TPBtZzD12QV3yDcG2fUgiqHPOCYzf7hHE40Hl3GhnE6P1njsJCCByhwM7MiufyDW3L7IOR5dg9w==",
+ "dev": true,
+ "dependencies": {
+ "commander": "^9.3.0",
+ "glob": "^8.0.3",
+ "sax": "^1.2.4",
+ "svg-pathdata": "^6.0.3"
+ },
+ "bin": {
+ "svgicons2svgfont": "bin/svgicons2svgfont.js"
+ },
+ "engines": {
+ "node": ">=16.15.0"
+ }
+ },
+ "node_modules/svgicons2svgfont/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/svgicons2svgfont/node_modules/commander": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || >=14"
+ }
+ },
+ "node_modules/svgicons2svgfont/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/svgicons2svgfont/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/svgo": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz",
+ "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==",
+ "dev": true,
+ "dependencies": {
+ "@trysound/sax": "0.2.0",
+ "commander": "^7.2.0",
+ "css-select": "^5.1.0",
+ "css-tree": "^2.3.1",
+ "css-what": "^6.1.0",
+ "csso": "^5.0.5",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "svgo": "bin/svgo"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/svgo"
+ }
+ },
+ "node_modules/svgo/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/svgpath": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.6.0.tgz",
+ "integrity": "sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fontello/svg2ttf?sponsor=1"
+ }
+ },
+ "node_modules/table": {
+ "version": "6.8.1",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
+ "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^8.0.1",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/table/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/table/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/tar": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
+ "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
+ "dev": true,
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
+ "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
+ "dev": true,
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/teex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz",
+ "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==",
+ "dev": true,
+ "dependencies": {
+ "streamx": "^2.12.5"
+ }
+ },
+ "node_modules/text-hex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
+ "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
+ "dev": true
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/thenby": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz",
+ "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==",
+ "dev": true
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true
+ },
+ "node_modules/tiny-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
+ "dev": true
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/token-types": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz",
+ "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==",
+ "dev": true,
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "ieee754": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/triple-beam": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz",
+ "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "node_modules/ttf2eot": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/ttf2eot/-/ttf2eot-3.1.0.tgz",
+ "integrity": "sha512-aHTbcYosNHVqb2Qtt9Xfta77ae/5y0VfdwNLUS6sGBeGr22cX2JDMo/i5h3uuOf+FAD3akYOr17+fYd5NK8aXw==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "ttf2eot": "ttf2eot.js"
+ }
+ },
+ "node_modules/ttf2woff": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ttf2woff/-/ttf2woff-3.0.0.tgz",
+ "integrity": "sha512-OvmFcj70PhmAsVQKfC15XoKH55cRWuaRzvr2fpTNhTNer6JBpG8n6vOhRrIgxMjcikyYt88xqYXMMVapJ4Rjvg==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "pako": "^1.0.0"
+ },
+ "bin": {
+ "ttf2woff": "ttf2woff.js"
+ }
+ },
+ "node_modules/ttf2woff2": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ttf2woff2/-/ttf2woff2-5.0.0.tgz",
+ "integrity": "sha512-FplhShJd3rT8JGa8N04YWQuP7xRvwr9AIq+9/z5O/5ubqNiCADshKl8v51zJDFkhDVcYpdUqUpm7T4M53Z2JoQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "bindings": "^1.5.0",
+ "bufferstreams": "^3.0.0",
+ "nan": "^2.14.2",
+ "node-gyp": "^9.0.0"
+ },
+ "bin": {
+ "ttf2woff2": "bin/ttf2woff2.js"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/uglify-js": {
+ "version": "3.17.4",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
+ "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
+ "dev": true,
+ "optional": true,
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/unbzip2-stream": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+ "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+ "dev": true,
+ "dependencies": {
+ "buffer": "^5.2.1",
+ "through": "^2.3.8"
+ }
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
+ "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unique-filename": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
+ "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==",
+ "dev": true,
+ "dependencies": {
+ "unique-slug": "^3.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/unique-slug": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz",
+ "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/upper-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz",
+ "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/upper-case-first": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz",
+ "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/vinyl": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz",
+ "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==",
+ "dev": true,
+ "dependencies": {
+ "clone": "^2.1.2",
+ "clone-stats": "^1.0.0",
+ "remove-trailing-separator": "^1.1.0",
+ "replace-ext": "^2.0.0",
+ "teex": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/vnu-jar": {
+ "version": "23.4.11",
+ "resolved": "https://registry.npmjs.org/vnu-jar/-/vnu-jar-23.4.11.tgz",
+ "integrity": "sha512-lI5dzBYXtxhilNI7EeQ5iUduYnNBq7YWx4UjfBVLXfBQHnXYZSf3y3bpM0bSyDU6jy/+OyKV7nw4tzpR5lXSZg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wide-align": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^1.0.2 || 2 || 3 || 4"
+ }
+ },
+ "node_modules/winston": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz",
+ "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==",
+ "dev": true,
+ "dependencies": {
+ "@colors/colors": "^1.6.0",
+ "@dabh/diagnostics": "^2.0.2",
+ "async": "^3.2.3",
+ "is-stream": "^2.0.0",
+ "logform": "^2.4.0",
+ "one-time": "^1.0.0",
+ "readable-stream": "^3.4.0",
+ "safe-stable-stringify": "^2.3.1",
+ "stack-trace": "0.0.x",
+ "triple-beam": "^1.3.0",
+ "winston-transport": "^4.5.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/winston-transport": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.6.0.tgz",
+ "integrity": "sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==",
+ "dev": true,
+ "dependencies": {
+ "logform": "^2.3.2",
+ "readable-stream": "^3.6.0",
+ "triple-beam": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/winston/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/write-file-atomic": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
+ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/write-file-atomic/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/xpath": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.33.tgz",
+ "integrity": "sha512-NNXnzrkDrAzalLhIUc01jO2mOzXGXh1JwPgkihcLLzw98c0WgYDmmjSh1Kl3wzaxSVWMuA+fe0WTWOBDWCBmNA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/yaml": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
+ "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dev": true,
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/vendor/twbs/bootstrap-icons/package.json b/vendor/twbs/bootstrap-icons/package.json
new file mode 100644
index 000000000..937df93b5
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/package.json
@@ -0,0 +1,91 @@
+{
+ "name": "bootstrap-icons",
+ "version": "1.11.3",
+ "description": "Official open source SVG icon library for Bootstrap",
+ "author": "mdo",
+ "license": "MIT",
+ "homepage": "https://icons.getbootstrap.com/",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/twbs/icons.git"
+ },
+ "bugs": {
+ "url": "https://github.com/twbs/icons/issues"
+ },
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/twbs"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/bootstrap"
+ }
+ ],
+ "keywords": [
+ "bootstrap",
+ "icons",
+ "svg",
+ "font",
+ "sprite",
+ "woff",
+ "woff2"
+ ],
+ "style": "font/bootstrap-icons.css",
+ "sass": "font/bootstrap-icons.scss",
+ "files": [
+ "icons/*.svg",
+ "bootstrap-icons.svg",
+ "font",
+ "!.DS_Store"
+ ],
+ "hugo-bin": {
+ "buildTags": "extended"
+ },
+ "scripts": {
+ "start": "npm run docs-serve",
+ "docs-serve": "hugo server --port 4000 --disableFastRender",
+ "docs-build": "hugo --cleanDestinationDir --printUnusedTemplates",
+ "docs-test": "npm-run-all docs-build docs-test:vnu",
+ "docs-test:vnu": "node build/vnu-jar.mjs",
+ "pages": "node build/build-pages.mjs",
+ "icons": "npm-run-all icons-main --aggregate-output --parallel icons-sprite icons-font",
+ "icons-main": "node build/build-svgs.mjs",
+ "icons-zip": "cross-env-shell \"rm -rf bootstrap-icons-$npm_package_version bootstrap-icons-$npm_package_version.zip && cp -r icons/ bootstrap-icons-$npm_package_version && cp bootstrap-icons.svg bootstrap-icons-$npm_package_version && cp -r font/ bootstrap-icons-$npm_package_version && zip -qr9 bootstrap-icons-$npm_package_version.zip bootstrap-icons-$npm_package_version && rm -rf bootstrap-icons-$npm_package_version\"",
+ "icons-sprite": "svg-sprite --config svg-sprite.json --log=info \"icons/*.svg\"",
+ "icons-font": "npm-run-all icons-font-*",
+ "icons-font-main": "fantasticon",
+ "icons-font-min": "cleancss -O1 --format breakWith=lf --with-rebase --output font/bootstrap-icons.min.css font/bootstrap-icons.css",
+ "release": "npm-run-all icons docs-build icons-zip",
+ "release-version": "node build/bump-version.mjs",
+ "netlify": "cross-env-shell HUGO_BASEURL=$DEPLOY_PRIME_URL npm-run-all icons docs-build",
+ "test:fusv": "fusv docs/assets/scss/",
+ "test:eslint": "eslint --cache --cache-location .cache/.eslintcache --report-unused-disable-directives --ext .js,.mjs .",
+ "test:stylelint": "stylelint docs/assets/scss/ --cache --cache-location .cache/.stylelintcache",
+ "test:lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json",
+ "test:check-icons": "node build/check-icons.mjs",
+ "test": "npm-run-all --parallel --aggregate-output --continue-on-error test:*"
+ },
+ "devDependencies": {
+ "@twbs/fantasticon": "^2.7.2",
+ "autoprefixer": "^10.4.16",
+ "bootstrap": "^5.3.2",
+ "clean-css-cli": "^5.6.3",
+ "clipboard": "^2.0.11",
+ "cross-env": "^7.0.3",
+ "eslint": "^8.56.0",
+ "find-unused-sass-variables": "^5.0.0",
+ "fuse.js": "^7.0.0",
+ "hugo-bin": "^0.118.0",
+ "lockfile-lint": "^4.12.1",
+ "npm-run-all2": "^6.1.1",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.32",
+ "postcss-cli": "^11.0.0",
+ "stylelint": "^16.1.0",
+ "stylelint-config-twbs-bootstrap": "^13.0.0",
+ "svg-sprite": "^3.0.0-beta3",
+ "svgo": "^3.2.0",
+ "vnu-jar": "23.4.11"
+ }
+}
diff --git a/vendor/twbs/bootstrap-icons/svg-sprite.json b/vendor/twbs/bootstrap-icons/svg-sprite.json
new file mode 100644
index 000000000..5fbad8ae7
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/svg-sprite.json
@@ -0,0 +1,46 @@
+{
+ "mode": {
+ "symbol": {
+ "dest": ".",
+ "sprite": "bootstrap-icons.svg"
+ }
+ },
+ "svg": {
+ "namespaceClassnames": false,
+ "xmlDeclaration": false
+ },
+ "shape": {
+ "transform": [
+ {
+ "svgo": {
+ "multipass": true,
+ "plugins": [
+ {
+ "name": "preset-default",
+ "params": {
+ "overrides": {
+ "removeUnknownsAndDefaults": {
+ "keepDataAttrs": false,
+ "keepRoleAttr": true
+ },
+ "removeViewBox": false
+ }
+ }
+ },
+ "cleanupListOfValues",
+ "removeXMLNS",
+ {
+ "name": "removeAttrs",
+ "params": {
+ "attrs": [
+ "clip-rule",
+ "fill"
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+}
diff --git a/vendor/twbs/bootstrap-icons/svgo.config.mjs b/vendor/twbs/bootstrap-icons/svgo.config.mjs
new file mode 100644
index 000000000..bcc32b001
--- /dev/null
+++ b/vendor/twbs/bootstrap-icons/svgo.config.mjs
@@ -0,0 +1,73 @@
+import path from 'node:path'
+
+export default {
+ multipass: true,
+ js2svg: {
+ pretty: true,
+ indent: 2,
+ eol: 'lf'
+ },
+ plugins: [
+ {
+ name: 'preset-default',
+ params: {
+ overrides: {
+ removeUnknownsAndDefaults: {
+ keepDataAttrs: false, // remove all `data` attributes
+ keepRoleAttr: true // keep the `role` attribute
+ },
+ removeViewBox: false // keep the `viewBox` attribute
+ }
+ }
+ },
+ // The next plugins are included in svgo but are not part of preset-default,
+ // so we need to explicitly enable them
+ 'cleanupListOfValues',
+ {
+ name: 'removeAttrs',
+ params: {
+ attrs: [
+ 'clip-rule',
+ 'fill'
+ ]
+ }
+ },
+ // Custom plugin which resets the SVG attributes to explicit values
+ {
+ name: 'explicitAttrs',
+ type: 'visitor',
+ params: {
+ attributes: {
+ xmlns: 'http://www.w3.org/2000/svg',
+ width: '16',
+ height: '16',
+ fill: 'currentColor',
+ class: '', // We replace the class with the correct one based on filename later
+ viewBox: '0 0 16 16'
+ }
+ },
+ fn(_root, params, info) {
+ if (!params.attributes) {
+ return null
+ }
+
+ const basename = path.basename(info.path, '.svg')
+
+ return {
+ element: {
+ enter(node, parentNode) {
+ if (node.name === 'svg' && parentNode.type === 'root') {
+ // We set the `svgAttributes` in the order we want to,
+ // hence why we remove the attributes and add them back
+ node.attributes = {}
+ for (const [key, value] of Object.entries(params.attributes)) {
+ node.attributes[key] = key === 'class' ? `bi bi-${basename}` : value
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+}
diff --git a/vendor/voku/portable-ascii/.deepsource.toml b/vendor/voku/portable-ascii/.deepsource.toml
new file mode 100644
index 000000000..3f8f43cef
--- /dev/null
+++ b/vendor/voku/portable-ascii/.deepsource.toml
@@ -0,0 +1,4 @@
+version = 1
+
+[[analyzers]]
+name = "php" \ No newline at end of file
diff --git a/vendor/voku/portable-ascii/CHANGELOG.md b/vendor/voku/portable-ascii/CHANGELOG.md
index 12fc393a7..52f4912e7 100644
--- a/vendor/voku/portable-ascii/CHANGELOG.md
+++ b/vendor/voku/portable-ascii/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+### 2.0.3 (2024-11-21)
+
+- use modern phpdocs e.g. list<int> or conditional-return annotations
+
+### 2.0.2 (2024-11-21)
+
+- small fix for PHP 8.4 (thanks to @gilbertoalbino)
+
### 2.0.1 (2022-03-08)
- "To people of Russia": There is a war in Ukraine right now. The forces of the Russian Federation are attacking civilians.
diff --git a/vendor/voku/portable-ascii/composer.json b/vendor/voku/portable-ascii/composer.json
index 99dee4f80..b3a22fa8c 100644
--- a/vendor/voku/portable-ascii/composer.json
+++ b/vendor/voku/portable-ascii/composer.json
@@ -12,7 +12,7 @@
"authors": [
{
"name": "Lars Moelleken",
- "homepage": "http://www.moelleken.org/"
+ "homepage": "https://www.moelleken.org/"
}
],
"require": {
diff --git a/vendor/voku/portable-ascii/src/voku/helper/ASCII.php b/vendor/voku/portable-ascii/src/voku/helper/ASCII.php
index 7d8b66de7..406407e19 100644
--- a/vendor/voku/portable-ascii/src/voku/helper/ASCII.php
+++ b/vendor/voku/portable-ascii/src/voku/helper/ASCII.php
@@ -214,9 +214,9 @@ final class ASCII
/**
* Get all languages from the constants "ASCII::.*LANGUAGE_CODE".
*
- * @return string[]
- *
- * @phpstan-return array<string, string>
+ * @return array<string, string>
+ * <p>An associative array where the key is the language code in lowercase
+ * and the value is the corresponding language string.</p>
*/
public static function getAllLanguages(): array
{
@@ -246,15 +246,13 @@ final class ASCII
* var_dump($array['ru']['б']); // 'b'
* </code>
*
- * @psalm-suppress InvalidNullableReturnType - we use the prepare* methods here, so we don't get NULL here
- *
* @param bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound ".</p>
*
* @psalm-pure
*
- * @return array
- *
- * @phpstan-return array<string, array<string , string>>
+ * @return array<string, array<string , string>>
+ * <p>An array where the key is the language code, and the value is
+ * an associative array mapping original characters to their replacements.</p>
*/
public static function charsArray(bool $replace_extra_symbols = false): array
{
@@ -281,14 +279,11 @@ final class ASCII
*
* @psalm-pure
*
- * @return array
- * <p>An array of replacements.</p>
- *
- * @phpstan-return array<string, array<int, string>>
+ * @return array<string, list<string>>
+ * <p>An array of replacements.</p>
*/
public static function charsArrayWithMultiLanguageValues(bool $replace_extra_symbols = false): array
{
- /** @var array<string, array<string, array<int, string>>> */
static $CHARS_ARRAY = [];
$cacheKey = '' . $replace_extra_symbols;
@@ -303,18 +298,13 @@ final class ASCII
false
);
- /** @noinspection PhpSillyAssignmentInspection - hack for phpstan */
- /** @var array<string, string> $language_all_chars */
- $language_all_chars = $language_all_chars;
-
- /** @noinspection AlterInForeachInspection */
+ /* @noinspection AlterInForeachInspection | ok here */
foreach ($language_all_chars as $key => &$value) {
$return[$value][] = $key;
}
$CHARS_ARRAY[$cacheKey] = $return;
- /** @var array<string, array<int, string>> $return - hack for phpstan */
return $return;
}
@@ -330,21 +320,17 @@ final class ASCII
* echo $array['orig'][$tmpKey]; // 'ё'
* </code>
*
- * @psalm-suppress InvalidNullableReturnType - we use the prepare* methods here, so we don't get NULL here
- *
* @param string $language [optional] <p>Language of the source string e.g.: en, de_at, or de-ch.
* (default is 'en') | ASCII::*_LANGUAGE_CODE</p>
* @param bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound ".</p>
- * @param bool $asOrigReplaceArray [optional] <p>TRUE === return {orig: string[], replace: string[]}
+ * @param bool $asOrigReplaceArray [optional] <p>TRUE === return {orig: list<string>, replace: list<string>}
* array</p>
*
* @psalm-pure
*
- * @return array
- * <p>An array of replacements.</p>
+ * @return ($asOrigReplaceArray is true ? array{orig: list<string>, replace: list<string>} : array<string, string>)
*
* @phpstan-param ASCII::*_LANGUAGE_CODE $language
- * @phpstan-return array{orig: string[], replace: string[]}|array<string, string>
*/
public static function charsArrayWithOneLanguage(
string $language = self::ENGLISH_LANGUAGE_CODE,
@@ -354,7 +340,6 @@ final class ASCII
$language = self::get_language($language);
// init
- /** @var array<string, array<string, array<string, string>|array{orig: string[], replace: string[]}>> */
static $CHARS_ARRAY = [];
$cacheKey = '' . $replace_extra_symbols . '-' . $asOrigReplaceArray;
@@ -366,7 +351,6 @@ final class ASCII
if ($replace_extra_symbols) {
self::prepareAsciiAndExtrasMaps();
- /** @noinspection DuplicatedCode */
if (isset(self::$ASCII_MAPS_AND_EXTRAS[$language])) {
$tmpArray = self::$ASCII_MAPS_AND_EXTRAS[$language];
@@ -379,7 +363,6 @@ final class ASCII
$CHARS_ARRAY[$cacheKey][$language] = $tmpArray;
}
} else {
- /** @noinspection NestedPositiveIfStatementsInspection */
if ($asOrigReplaceArray) {
$CHARS_ARRAY[$cacheKey][$language] = [
'orig' => [],
@@ -392,7 +375,6 @@ final class ASCII
} else {
self::prepareAsciiMaps();
- /** @noinspection DuplicatedCode */
if (isset(self::$ASCII_MAPS[$language])) {
$tmpArray = self::$ASCII_MAPS[$language];
@@ -405,7 +387,6 @@ final class ASCII
$CHARS_ARRAY[$cacheKey][$language] = $tmpArray;
}
} else {
- /** @noinspection NestedPositiveIfStatementsInspection */
if ($asOrigReplaceArray) {
$CHARS_ARRAY[$cacheKey][$language] = [
'orig' => [],
@@ -430,22 +411,18 @@ final class ASCII
* </code>
*
* @param bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound ".</p>
- * @param bool $asOrigReplaceArray [optional] <p>TRUE === return {orig: string[], replace: string[]}
+ * @param bool $asOrigReplaceArray [optional] <p>TRUE === return {orig: list<string>, replace: list<string>}
* array</p>
*
* @psalm-pure
*
- * @return array
- * <p>An array of replacements.</p>
- *
- * @phpstan-return array{orig: string[], replace: string[]}|array<string, string>
+ * @return ($asOrigReplaceArray is true ? array{orig: list<string>, replace: list<string>} : array<string, string>)
*/
public static function charsArrayWithSingleLanguageValues(
bool $replace_extra_symbols = false,
bool $asOrigReplaceArray = true
): array {
// init
- /** @var array<string, array<string, string>|array{orig: string[], replace: string[]}> */
static $CHARS_ARRAY = [];
$cacheKey = '' . $replace_extra_symbols . '-' . $asOrigReplaceArray;
@@ -456,22 +433,19 @@ final class ASCII
if ($replace_extra_symbols) {
self::prepareAsciiAndExtrasMaps();
- /** @noinspection AlterInForeachInspection */
- /** @psalm-suppress PossiblyNullIterator - we use the prepare* methods here, so we don't get NULL here */
+ /* @noinspection AlterInForeachInspection | ok here */
foreach (self::$ASCII_MAPS_AND_EXTRAS ?? [] as &$map) {
$CHARS_ARRAY[$cacheKey][] = $map;
}
} else {
self::prepareAsciiMaps();
- /** @noinspection AlterInForeachInspection */
- /** @psalm-suppress PossiblyNullIterator - we use the prepare* methods here, so we don't get NULL here */
+ /* @noinspection AlterInForeachInspection | ok here */
foreach (self::$ASCII_MAPS ?? [] as &$map) {
$CHARS_ARRAY[$cacheKey][] = $map;
}
}
- /** @phpstan-ignore-next-line - ... error? */
$CHARS_ARRAY[$cacheKey] = \array_merge([], ...$CHARS_ARRAY[$cacheKey]);
if ($asOrigReplaceArray) {
@@ -590,13 +564,11 @@ final class ASCII
return '';
}
- /** @var array{orig: string[], replace: string[]} */
static $MSWORD_CACHE = ['orig' => [], 'replace' => []];
if (empty($MSWORD_CACHE['orig'])) {
self::prepareAsciiMaps();
- /** @var array<string, string> */
$map = self::$ASCII_MAPS[self::EXTRA_MSWORD_CHARS_LANGUAGE_CODE] ?? [];
$MSWORD_CACHE = [
@@ -636,7 +608,6 @@ final class ASCII
return '';
}
- /** @var array<int,array<string,string>> */
static $WHITESPACE_CACHE = [];
$cacheKey = (int) $keepNonBreakingSpace;
@@ -673,7 +644,6 @@ final class ASCII
}
if (!$keepBidiUnicodeControls) {
- /** @var array<int,string>|null */
static $BIDI_UNICODE_CONTROLS_CACHE = null;
if ($BIDI_UNICODE_CONTROLS_CACHE === null) {
@@ -689,7 +659,7 @@ final class ASCII
/**
* Remove invisible characters from a string.
*
- * e.g.: This prevents sandwiching null characters between ascii characters, like Java\0script.
+ * This prevents malicious code injection through null bytes or other control characters.
*
* copy&past from https://github.com/bcit-ci/CodeIgniter/blob/develop/system/core/Common.php
*
@@ -735,21 +705,16 @@ final class ASCII
}
/**
- * WARNING: This method will return broken characters and is only for special cases.
+ * WARNING: This method will return broken characters and is only for special cases.
*
- * Convert two UTF-8 encoded string to a single-byte strings suitable for
+ * Convert two UTF-8 encoded strings to a single-byte strings suitable for
* functions that need the same string length after the conversion.
*
* The function simply uses (and updates) a tailored dynamic encoding
* (in/out map parameter) where non-ascii characters are remapped to
* the range [128-255] in order of appearance.
*
- * @param string $str1
- * @param string $str2
- *
- * @return string[]
- *
- * @phpstan-return array{0: string, 1: string}
+ * @return array{0: string, 1: string}
*/
public static function to_ascii_remap(string $str1, string $str2): array
{
@@ -775,14 +740,14 @@ final class ASCII
* @param string $str <p>The input string.</p>
* @param string $language [optional] <p>Language of the source string.
* (default is 'en') | ASCII::*_LANGUAGE_CODE</p>
- * @param bool $remove_unsupported_chars [optional] <p>Whether or not to remove the
+ * @param bool $remove_unsupported_chars [optional] <p>Whether to remove the
* unsupported characters.</p>
* @param bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound
* ".</p>
* @param bool $use_transliterate [optional] <p>Use ASCII::to_transliterate() for unknown chars.</p>
- * @param bool|null $replace_single_chars_only [optional] <p>Single char replacement is better for the
- * performance, but some languages need to replace more then one char
- * at the same time. | NULL === auto-setting, depended on the
+ * @param bool $replace_single_chars_only [optional] <p>Single char replacement is better for the
+ * performance, but some languages need to replace more than one char
+ * at the same time. If FALSE === auto-setting, depended on the
* language</p>
*
* @psalm-pure
@@ -798,18 +763,17 @@ final class ASCII
bool $remove_unsupported_chars = true,
bool $replace_extra_symbols = false,
bool $use_transliterate = false,
- bool $replace_single_chars_only = null
+ bool $replace_single_chars_only = false
): string {
if ($str === '') {
return '';
}
- /** @phpstan-var ASCII::*_LANGUAGE_CODE - hack for phpstan */
+ /** @phpstan-var ASCII::*_LANGUAGE_CODE $language - hack for phpstan */
$language = self::get_language($language);
static $EXTRA_SYMBOLS_CACHE = null;
- /** @var array<string,array<string,string>> */
static $REPLACE_HELPER_CACHE = [];
$cacheKey = $language . '-' . $replace_extra_symbols;
@@ -977,7 +941,6 @@ final class ASCII
}
}
- /** @psalm-suppress PossiblyNullOperand - we use the prepare* methods here, so we don't get NULL here */
if (!isset(self::$ASCII_MAPS[$language])) {
$use_transliterate = true;
}
@@ -1001,10 +964,10 @@ final class ASCII
* ASCII::to_filename('שדגשדג.png', true)); // 'shdgshdg.png'
* </code>
*
- * @param string $str
+ * @param string $str <p>The string input.</p>
* @param bool $use_transliterate <p>ASCII::to_transliterate() is used by default - unsafe characters are
* simply replaced with hyphen otherwise.</p>
- * @param string $fallback_char
+ * @param string $fallback_char <p>The fallback character. - "-" is the default</p>
*
* @psalm-pure
*
@@ -1040,27 +1003,27 @@ final class ASCII
}
/**
- * Converts the string into an URL slug. This includes replacing non-ASCII
- * characters with their closest ASCII equivalents, removing remaining
- * non-ASCII and non-alphanumeric characters, and replacing whitespace with
- * $separator. The separator defaults to a single dash, and the string
- * is also converted to lowercase. The language of the source string can
- * also be supplied for language-specific transliteration.
- *
- * @param string $str
+ * Converts a string into a URL-friendly slug.
+ *
+ * - This includes replacing non-ASCII characters with their closest ASCII equivalents, removing remaining
+ * non-ASCII and non-alphanumeric characters, and replacing whitespace with $separator.
+ * - The separator defaults to a single dash, and the string is also converted to lowercase.
+ * - The language of the source string can also be supplied for language-specific transliteration.
+ *
+ * @param string $str <p>The string input.</p>
* @param string $separator [optional] <p>The string used to replace whitespace.</p>
* @param string $language [optional] <p>Language of the source string.
* (default is 'en') | ASCII::*_LANGUAGE_CODE</p>
* @param array<string, string> $replacements [optional] <p>A map of replaceable strings.</p>
- * @param bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with "
+ * @param bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with "
* pound ".</p>
* @param bool $use_str_to_lower [optional] <p>Use "string to lower" for the input.</p>
- * @param bool $use_transliterate [optional] <p>Use ASCII::to_transliterate() for unknown
+ * @param bool $use_transliterate [optional] <p>Use ASCII::to_transliterate() for unknown
* chars.</p>
* @psalm-pure
*
* @return string
- * <p>A string that has been converted to an URL slug.</p>
+ * <p>The URL-friendly slug.</p>
*
* @phpstan-param ASCII::*_LANGUAGE_CODE $language
*/
@@ -1135,21 +1098,16 @@ final class ASCII
*
* @return string
* <p>A String that contains only ASCII characters.</p>
- *
- * @noinspection ParameterDefaultValueIsNotNullInspection
*/
public static function to_transliterate(
string $str,
$unknown = '?',
bool $strict = false
): string {
- /** @var array<int,string>|null */
static $UTF8_TO_TRANSLIT = null;
- /** null|\Transliterator */
static $TRANSLITERATOR = null;
- /** @var bool|null */
static $SUPPORT_INTL = null;
if ($str === '') {
@@ -1168,7 +1126,7 @@ final class ASCII
$str = self::clean($str);
- // check again, if we only have ASCII, now ...
+ // check again if we only have ASCII, now ...
if (
$str_tmp !== $str
&&
@@ -1184,7 +1142,6 @@ final class ASCII
) {
if (!isset($TRANSLITERATOR)) {
// INFO: see "*-Latin" rules via "transliterator_list_ids()"
- /** @var \Transliterator */
$TRANSLITERATOR = \transliterator_create('NFKC; [:Nonspacing Mark:] Remove; NFKC; Any-Latin; Latin-ASCII;');
}
@@ -1192,8 +1149,7 @@ final class ASCII
$str_tmp = \transliterator_transliterate($TRANSLITERATOR, $str);
if ($str_tmp !== false) {
-
- // check again, if we only have ASCII, now ...
+ // check again if we only have ASCII, now ...
if (
$str_tmp !== $str
&&
@@ -1285,7 +1241,6 @@ final class ASCII
$new_char = $ord & 255;
if (isset($UTF8_TO_TRANSLIT[$bank][$new_char])) {
-
// keep for debugging
/*
echo "file: " . sprintf('x%02x', $bank) . "\n";
@@ -1299,8 +1254,7 @@ final class ASCII
$new_char = $UTF8_TO_TRANSLIT[$bank][$new_char];
- /** @noinspection MissingOrEmptyGroupStatementInspection */
- /** @noinspection PhpStatementHasEmptyBodyInspection */
+ /* @noinspection PhpStatementHasEmptyBodyInspection */
if ($unknown === null && $new_char === '') {
// nothing
} elseif (
@@ -1313,7 +1267,6 @@ final class ASCII
$c = $new_char;
}
} else {
-
// keep for debugging missing chars
/*
echo "file: " . sprintf('x%02x', $bank) . "\n";
@@ -1352,7 +1305,7 @@ final class ASCII
* @param array $map <p>Internal-Map of code points to ASCII characters.</p>
*
* @return string
- * <p>Mapped borken string.</p>
+ * <p>Mapped broken string.</p>
*
* @phpstan-param array<string, string> $map
*/
@@ -1385,12 +1338,6 @@ final class ASCII
* DE_DE -> de
* de-de -> de
*
- * @noinspection ReturnTypeCanBeDeclaredInspection
- *
- * @param string $language
- *
- * @psalm-pure
- *
* @return string
*/
private static function get_language(string $language)
@@ -1417,39 +1364,22 @@ final class ASCII
/**
* Get data from "/data/*.php".
*
- * @noinspection ReturnTypeCanBeDeclaredInspection
- *
- * @param string $file
- *
- * @psalm-pure
- *
- * @return array<mixed>
+ * @return array<array-key,mixed>
*/
private static function getData(string $file)
{
- /** @noinspection PhpIncludeInspection */
- /** @noinspection UsingInclusionReturnValueInspection */
- /** @psalm-suppress UnresolvableInclude */
return include __DIR__ . '/data/' . $file . '.php';
}
/**
* Get data from "/data/*.php".
*
- * @param string $file
- *
- * @psalm-pure
- *
- * @return array<mixed>
+ * @return array<array-key,mixed>
*/
private static function getDataIfExists(string $file): array
{
$file = __DIR__ . '/data/' . $file . '.php';
- /** @psalm-suppress ImpureFunctionCall */
if (\is_file($file)) {
- /** @noinspection PhpIncludeInspection */
- /** @noinspection UsingInclusionReturnValueInspection */
- /** @psalm-suppress UnresolvableInclude */
return include $file;
}
@@ -1457,8 +1387,6 @@ final class ASCII
}
/**
- * @psalm-pure
- *
* @return void
*/
private static function prepareAsciiAndExtrasMaps()
@@ -1467,7 +1395,6 @@ final class ASCII
self::prepareAsciiMaps();
self::prepareAsciiExtras();
- /** @psalm-suppress PossiblyNullArgument - we use the prepare* methods here, so we don't get NULL here */
self::$ASCII_MAPS_AND_EXTRAS = \array_merge_recursive(
self::$ASCII_MAPS ?? [],
self::$ASCII_EXTRAS ?? []
@@ -1476,8 +1403,6 @@ final class ASCII
}
/**
- * @psalm-pure
- *
* @return void
*/
private static function prepareAsciiMaps()
@@ -1488,8 +1413,6 @@ final class ASCII
}
/**
- * @psalm-pure
- *
* @return void
*/
private static function prepareAsciiExtras()